<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>110513</bug_id>
          
          <creation_ts>2013-02-21 14:17:40 -0800</creation_ts>
          <short_desc>Roll ANGLE to r1833</short_desc>
          <delta_ts>2013-02-22 11:44:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>110629</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>buildbot</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>mvujovic</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>838836</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2013-02-21 14:17:40 -0800</bug_when>
    <thetext>This roll includes a few webkit side downstream angle fixes (64-32 fix, uninitialized error fix), and also the support for EXT_draw_buffers

After the roll, the ANGLE in webkit should be exactly the same as the one in upstream, except ShaderLang.h, where the &quot;KHR&quot; is removed from the include path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838850</commentid>
    <comment_count>1</comment_count>
      <attachid>189603</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2013-02-21 14:29:47 -0800</bug_when>
    <thetext>Created attachment 189603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838909</commentid>
    <comment_count>2</comment_count>
      <attachid>189616</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2013-02-21 15:23:48 -0800</bug_when>
    <thetext>Created attachment 189616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838912</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 15:27:00 -0800</bug_when>
    <thetext>Attachment 189616 did not pass style-queue:

Source/ThirdParty/ANGLE/src/compiler/glslang.h:11:  glslang_scan is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.h:16:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.h:16:  The parameter name &quot;clampingStrategy&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp:24:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp:287:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp:330:  max_len is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp:28:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp:31:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp:32:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp:47:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp:496:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp:515:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp:1510:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.cpp:10:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/ShHandle.h:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/common/debug.cpp:13:  Alphabetical sorting problem.  [build/include_order] [4]
Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h:326:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h:326:  Extra space after ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h:326:  Missing space before {  [whitespace/braces] [5]
Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h:328:  One space before end of line comments  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.h:31:  One space before end of line comments  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.h:32:  One space before end of line comments  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.h:26:  The parameter name &quot;visit&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.h:26:  The parameter name &quot;loop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp:2569:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h:20:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h:20:  The parameter name &quot;clampingStrategy&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/src/compiler/osinclude.h:47:  OS_TLSIndex is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/osinclude.h:47:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp:105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp:138:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h:11:  Alphabetical sorting problem.  [build/include_order] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp:43:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp:228:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp:230:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp:250:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp:252:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:824:  string_input is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:824:  max_size is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:1546:  More than one command on the same line  [whitespace/newline] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:1550:  More than one command on the same line  [whitespace/newline] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:1558:  More than one command on the same line  [whitespace/newline] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:2951:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:2951:  string_input is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:2951:  max_size is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:3020:  glslang_scan is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp:1129:  More than one command on the same line  [whitespace/newline] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputESSL.cpp:10:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/common/system.h:9:  #ifndef header guard has wrong style, please use: system_h  [build/header_guard] [5]
Source/ThirdParty/ANGLE/src/common/system.h:16:  Alphabetical sorting problem.  [build/include_order] [4]
Source/ThirdParty/ANGLE/src/common/system.h:17:  Alphabetical sorting problem.  [build/include_order] [4]
Source/ThirdParty/ANGLE/src/common/system.h:30:  One space before end of line comments  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/compiler/OutputESSL.h:16:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputESSL.h:16:  The parameter name &quot;clampingStrategy&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp:761:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp:3177:  Extra space after ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:157:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:158:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:158:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:159:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:159:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:160:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:160:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:161:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:161:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:162:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:162:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:163:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:164:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:165:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:166:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:166:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:167:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:167:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:168:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:258:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:261:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:346:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:346:  yyss_alloc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:347:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:347:  yyvs_alloc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:382:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:386:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:386:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:387:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:476:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:477:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:478:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:815:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:818:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:819:  Declaration has space between type name and * in yytype_int16 *yybottom  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:820:  Declaration has space between type name and * in yytype_int16 *yytop  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:824:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:825:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:826:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:827:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:827:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:863:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:863:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:867:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:867:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1217:  Declaration has space between type name and * in yytype_int16 *yyss  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1218:  Declaration has space between type name and * in yytype_int16 *yyssp  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1222:  Declaration has space between type name and * in YYSTYPE *yyvs  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1223:  Declaration has space between type name and * in YYSTYPE *yyvsp  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1228:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1230:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1237:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1238:  Declaration has space between type name and * in char *yymsg  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1238:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1239:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1239:  yymsg_alloc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1248:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1249:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1250:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1251:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1258:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1322:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1322:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1323:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1323:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1343:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1404:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1817:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:28:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:47:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:48:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:51:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:52:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:53:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:53:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:54:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:55:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:56:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:56:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:57:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:59:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:60:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:62:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:70:  One space before end of line comments  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:90:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:98:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:102:  This { should be at Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj&apos;, u&apos;Source/ThirdParty/ANGLE/ChangeLog&apos;, u&apos;Source/ThirdParty/ANGLE/Target.pri&apos;, u&apos;Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/common/debug.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/common/system.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/common/version.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ArrayBoundsClamper.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ArrayBoundsClamper.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/Initialize.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/Intermediate.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputESSL.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputESSL.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ParseHelper.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ShHandle.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/TranslatorESSL.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/VariablePacker.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/glslang.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/glslang.l&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/glslang.y&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/osinclude.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.y&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.l&apos;, u&apos;Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/third_party/compiler/LICENSE&apos;, u&apos;Source/ThirdParty/ANGLE/src/third_party/compiler/README.angle&apos;]&quot; exit_code: 1
the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.h:26:  #ifndef header guard has wrong style, please use: ArrayBoundsClamper_h  [build/header_guard] [5]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.h:40:  The parameter name &quot;clampingStrategy&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:159:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:160:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:161:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:167:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:168:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:170:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:171:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:211:  EXT_draw_buffers is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:316:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:359:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 167 in 49 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838928</commentid>
    <comment_count>4</comment_count>
      <attachid>189616</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-21 15:37:58 -0800</bug_when>
    <thetext>Comment on attachment 189616
Patch

Attachment 189616 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16698360</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838943</commentid>
    <comment_count>5</comment_count>
      <attachid>189616</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-02-21 15:46:13 -0800</bug_when>
    <thetext>Comment on attachment 189616
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=189616&amp;action=review

&gt; Source/ThirdParty/ANGLE/src/compiler/osinclude.h:48
&gt; +#define OS_INVALID_TLS_INDEX 0xFFFFFFFF

Sorry, I forgot to upstream this patch into ANGLE. Could you revert this change here and upstream it separately?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838944</commentid>
    <comment_count>6</comment_count>
      <attachid>189616</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-21 15:47:09 -0800</bug_when>
    <thetext>Comment on attachment 189616
Patch

Attachment 189616 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16699349</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838954</commentid>
    <comment_count>7</comment_count>
      <attachid>189616</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-21 15:53:59 -0800</bug_when>
    <thetext>Comment on attachment 189616
Patch

Attachment 189616 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16671023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838961</commentid>
    <comment_count>8</comment_count>
      <attachid>189616</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-02-21 15:57:32 -0800</bug_when>
    <thetext>Comment on attachment 189616
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=189616&amp;action=review

&gt;&gt; Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp:2569
&gt;&gt; +              case EbtFloat: out &lt;&lt; std::min(FLT_MAX, std::max(-FLT_MAX, constUnion-&gt;getFConst())); break;
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

It looks like the reference to FLT_MAX may need to be updated somehow...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839007</commentid>
    <comment_count>9</comment_count>
      <attachid>189616</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-21 16:42:12 -0800</bug_when>
    <thetext>Comment on attachment 189616
Patch

Attachment 189616 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16690439</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839041</commentid>
    <comment_count>10</comment_count>
      <attachid>189643</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2013-02-21 17:13:16 -0800</bug_when>
    <thetext>Created attachment 189643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839049</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 17:16:29 -0800</bug_when>
    <thetext>Attachment 189643 did not pass style-queue:

Source/ThirdParty/ANGLE/src/compiler/glslang.h:11:  glslang_scan is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.h:16:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.h:16:  The parameter name &quot;clampingStrategy&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp:24:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp:287:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp:330:  max_len is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp:28:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp:31:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp:32:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp:47:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp:496:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp:515:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp:1510:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.cpp:10:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/ShHandle.h:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/common/debug.cpp:13:  Alphabetical sorting problem.  [build/include_order] [4]
Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h:326:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h:326:  Extra space after ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h:326:  Missing space before {  [whitespace/braces] [5]
Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h:328:  One space before end of line comments  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.h:31:  One space before end of line comments  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.h:32:  One space before end of line comments  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:824:  string_input is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:824:  max_size is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:1546:  More than one command on the same line  [whitespace/newline] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:1550:  More than one command on the same line  [whitespace/newline] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:1558:  More than one command on the same line  [whitespace/newline] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:2951:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:2951:  string_input is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:2951:  max_size is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp:3020:  glslang_scan is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.h:26:  The parameter name &quot;visit&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.h:26:  The parameter name &quot;loop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp:11:  Alphabetical sorting problem.  [build/include_order] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp:2569:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h:20:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h:20:  The parameter name &quot;clampingStrategy&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h:11:  Alphabetical sorting problem.  [build/include_order] [4]
Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp:105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp:138:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp:43:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp:228:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp:230:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp:250:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp:252:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp:1129:  More than one command on the same line  [whitespace/newline] [4]
Source/ThirdParty/ANGLE/src/compiler/OutputESSL.cpp:10:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/common/system.h:9:  #ifndef header guard has wrong style, please use: system_h  [build/header_guard] [5]
Source/ThirdParty/ANGLE/src/common/system.h:16:  Alphabetical sorting problem.  [build/include_order] [4]
Source/ThirdParty/ANGLE/src/common/system.h:17:  Alphabetical sorting problem.  [build/include_order] [4]
Source/ThirdParty/ANGLE/src/common/system.h:30:  One space before end of line comments  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/compiler/OutputESSL.h:16:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/OutputESSL.h:16:  The parameter name &quot;clampingStrategy&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp:761:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp:3177:  Extra space after ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:157:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:158:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:158:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:159:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:159:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:160:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:160:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:161:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:161:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:162:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:162:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:163:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:164:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:165:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:166:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:166:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:167:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:167:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:168:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:258:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:261:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:346:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:346:  yyss_alloc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:347:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:347:  yyvs_alloc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:382:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:386:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:386:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:387:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:476:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:477:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:478:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:815:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:818:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:819:  Declaration has space between type name and * in yytype_int16 *yybottom  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:820:  Declaration has space between type name and * in yytype_int16 *yytop  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:824:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:825:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:826:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:827:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:827:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:863:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:863:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:867:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:867:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1217:  Declaration has space between type name and * in yytype_int16 *yyss  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1218:  Declaration has space between type name and * in yytype_int16 *yyssp  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1222:  Declaration has space between type name and * in YYSTYPE *yyvs  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1223:  Declaration has space between type name and * in YYSTYPE *yyvsp  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1228:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1230:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1237:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1238:  Declaration has space between type name and * in char *yymsg  [whitespace/declaration] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1238:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1239:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1239:  yymsg_alloc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1248:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1249:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1250:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1251:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1258:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1322:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1322:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1323:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1323:  Extra space before ( in function call  [whitespace/parens] [4]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1343:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1404:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp:1817:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:28:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:47:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:48:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:51:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:52:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:53:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:53:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:54:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:55:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:56:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:56:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:57:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:59:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:60:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:62:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:70:  One space before end of line comments  [whitespace/comments] [5]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:90:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:98:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp:102:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.h:26:  #ifndef header guard has wrong style, Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj&apos;, u&apos;Source/ThirdParty/ANGLE/ChangeLog&apos;, u&apos;Source/ThirdParty/ANGLE/Target.pri&apos;, u&apos;Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/common/debug.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/common/system.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/common/version.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ArrayBoundsClamper.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ArrayBoundsClamper.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/Compiler.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/DetectDiscontinuity.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/Initialize.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/Intermediate.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputESSL.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputESSL.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputGLSL.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputGLSLBase.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/OutputHLSL.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ParseHelper.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ParseHelper.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ShHandle.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ShaderLang.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/SymbolTable.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/TranslatorESSL.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/ValidateLimitations.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/VariablePacker.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/glslang.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/glslang.l&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/glslang.y&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/glslang_lex.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.y&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Input.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Preprocessor.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/compiler/preprocessor/Tokenizer.l&apos;, u&apos;Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.cpp&apos;, u&apos;Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.h&apos;, u&apos;Source/ThirdParty/ANGLE/src/third_party/compiler/LICENSE&apos;, u&apos;Source/ThirdParty/ANGLE/src/third_party/compiler/README.angle&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;]&quot; exit_code: 1
please use: ArrayBoundsClamper_h  [build/header_guard] [5]
Source/ThirdParty/ANGLE/src/third_party/compiler/ArrayBoundsClamper.h:40:  The parameter name &quot;clampingStrategy&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:159:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:160:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:161:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:167:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:168:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:170:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:171:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:211:  EXT_draw_buffers is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:316:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h:359:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 166 in 51 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839052</commentid>
    <comment_count>12</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2013-02-21 17:18:55 -0800</bug_when>
    <thetext>Ken: this one should work (finally!!!).  Please have a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839152</commentid>
    <comment_count>13</comment_count>
      <attachid>189643</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-02-21 19:42:13 -0800</bug_when>
    <thetext>Comment on attachment 189643
Patch

Very nice work. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839664</commentid>
    <comment_count>14</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2013-02-22 09:44:20 -0800</bug_when>
    <thetext>Committed r143742: &lt;http://trac.webkit.org/changeset/143742&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189603</attachid>
            <date>2013-02-21 14:29:47 -0800</date>
            <delta_ts>2013-02-21 15:23:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110513-20130221142607.patch</filename>
            <type>text/plain</type>
            <size>116134</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzY1MSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzOSBAQAorMjAxMy0wMi0yMSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFJvbGwgQU5HTEUgdG8gcjE4MTMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDUxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwc3RyZWFtIEFOR0xFIHIxODEzIGluY2x1ZGVzIHdlYmtpdCBzaWRl
IGxvY2FsIGZpeGVzCisgICAgICAgIDEpIHIxMzk3NTggYnVpbGQgZml4IGZvciAtV3Nob3J0ZW4t
NjQtdG8tMzIKKyAgICAgICAgMikgcjEzOTY2NSBidWlsZCBmaXggZm9yIHVuaW5pdGlhbGl6ZWQg
dmFyaWFibGVzCisKKyAgICAgICAgQWZ0ZXIgdGhpcyByb2xsLCBXZWJLaXQgc2lkZSBBTkdMRSBp
cyB0aGUgc2FtZSBhcyB1cHN0cmVhbSBBTkdMRSByMTgxMywgZXhjZXB0OgorICAgICAgICAxKSBp
bmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oLCB3aGVyZSAiS0hSIiBpcyByZW1vdmVkIGZyb20g
aW5jbHVkZSBwYXRoLgorCisgICAgICAgICogQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGluY2x1ZGUvR0xTTEFORy9TaGFk
ZXJMYW5nLmg6CisgICAgICAgICogc3JjL2NvbW1vbi9kZWJ1Zy5jcHA6CisgICAgICAgICogc3Jj
L2NvbW1vbi9zeXN0ZW0uaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbW1vbi92ZXJzaW9uLmg6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogc3JjL2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHNyYy9jb21waWxlci9Db21waWxlci5jcHA6CisgICAgICAgIChUQ29tcGlsZXI6
OlRDb21waWxlcik6CisgICAgICAgIChUQ29tcGlsZXI6OkluaXQpOgorICAgICAgICAoVENvbXBp
bGVyOjpjb21waWxlKToKKyAgICAgICAgKFRDb21waWxlcjo6Z2V0QXJyYXlCb3VuZHNDbGFtcGVy
KToKKyAgICAgICAgKFRDb21waWxlcjo6Z2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kpOgor
ICAgICAgICAoVENvbXBpbGVyOjpnZXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcik6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwOgorICAgICAgICAoc2g6OkRl
dGVjdExvb3BEaXNjb250aW51aXR5Ojp0cmF2ZXJzZSk6CisgICAgICAgIChzaDo6RGV0ZWN0TG9v
cERpc2NvbnRpbnVpdHk6OnZpc2l0TG9vcCk6CisgICAgICAgIChzaCk6CisgICAgICAgIChzaDo6
RGV0ZWN0TG9vcERpc2NvbnRpbnVpdHk6OnZpc2l0QnJhbmNoKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oOgorICAgICAgICAoRGV0ZWN0TG9vcERpc2NvbnRp
bnVpdHkpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcDoKKyAgICAgICAg
KEluaXRFeHRlbnNpb25CZWhhdmlvcik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0ludGVybWVk
aWF0ZS5jcHA6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZCk6CisgICAgICAg
IChUSW50ZXJtVHJhdmVyc2VyOjpoYXNoKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvTWFwTG9u
Z1ZhcmlhYmxlTmFtZXMuY3BwOgorICAgICAgICAoTG9uZ05hbWVNYXA6OlNpemUpOgorICAgICAg
ICAoTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6Om1hcEdsb2JhbExvbmdOYW1lKToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaDoKKyAgICAgICAgKExvbmdOYW1lTWFw
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0RVNTTC5jcHA6CisgICAgICAgIChUT3V0
cHV0RVNTTDo6VE91dHB1dEVTU0wpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRFU1NM
Lmg6CisgICAgICAgIChUT3V0cHV0RVNTTCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1
dEdMU0wuY3BwOgorICAgICAgICAoVE91dHB1dEdMU0w6OlRPdXRwdXRHTFNMKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oOgorICAgICAgICAoVE91dHB1dEdMU0wpOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHA6CisgICAgICAgIChUT3V0cHV0
R0xTTEJhc2U6OlRPdXRwdXRHTFNMQmFzZSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6Ondy
aXRlQ29uc3RhbnRVbmlvbik6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmluYXJ5
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaDoKKyAgICAgICAgKFRP
dXRwdXRHTFNMQmFzZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwOgor
ICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Om91dHB1dCk6CisgICAgICAgIChzaDo6T3V0cHV0SExT
TDo6dmlzaXRMb29wKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp3cml0ZUNvbnN0YW50VW5p
b24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHA6CisgICAgICAgIChU
UGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlY2spOgorICAgICAgICAoUGFQYXJzZVN0
cmluZ3MpOgorICAgICAgICAqIHNyYy9jb21waWxlci9QYXJzZUhlbHBlci5oOgorICAgICAgICAq
IHNyYy9jb21waWxlci9TaEhhbmRsZS5oOgorICAgICAgICAoVENvbXBpbGVyKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHA6CisgICAgICAgIChjaGVja0FjdGl2ZVVuaWZv
cm1BbmRBdHRyaWJNYXhMZW5ndGhzKToKKyAgICAgICAgKGNoZWNrTWFwcGVkTmFtZU1heExlbmd0
aCk6CisgICAgICAgIChnZXRWYXJpYWJsZUluZm8pOgorICAgICAgICAoU2hJbml0QnVpbHRJblJl
c291cmNlcyk6CisgICAgICAgIChTaENvbXBpbGUpOgorICAgICAgICAoU2hHZXRJbmZvKToKKyAg
ICAgICAgKFNoR2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFNoR2V0QWN0aXZlVW5pZm9ybSk6
CisgICAgICAgIChTaEdldE5hbWVIYXNoaW5nRW50cnkpOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9TeW1ib2xUYWJsZS5oOgorICAgICAgICAoVEZ1bmN0aW9uOjpnZXRQYXJhbUNvdW50KToKKyAg
ICAgICAgKFRGdW5jdGlvbjo6Z2V0UGFyYW0pOgorICAgICAgICAoVFN5bWJvbFRhYmxlOjpzZXRE
ZWZhdWx0UHJlY2lzaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVHJhbnNsYXRvckVTU0wu
Y3BwOgorICAgICAgICAoVHJhbnNsYXRvckVTU0w6OnRyYW5zbGF0ZSk6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1RyYW5zbGF0b3JHTFNMLmNwcDoKKyAgICAgICAgKFRyYW5zbGF0b3JHTFNMOjp0
cmFuc2xhdGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNw
cDoKKyAgICAgICAgKFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlRnVuY3Rpb25DYWxsKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvVmFyaWFibGVQYWNrZXIuY3BwOgorICAgICAgICAoVmFy
aWFibGVQYWNrZXI6OkdldE51bVJvd3MpOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5n
Lmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmcubDoKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvZ2xzbGFuZy55OgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHA6
CisgICAgICAgIChzdHJpbmdfaW5wdXQpOgorICAgICAgICAoZ2xzbGFuZ19zY2FuKToKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9vc2luY2x1ZGUuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvb3Nzb3VyY2VfbnNwci5jcHA6
IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBh
cnNlci5jcHA6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9u
UGFyc2VyLnk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5jcHA6
CisgICAgICAgIChwcDo6SW5wdXQ6OklucHV0KToKKyAgICAgICAgKHBwOjpJbnB1dDo6cmVhZCk6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5oOgorICAgICAgICAo
SW5wdXQpOgorICAgICAgICAocHA6OklucHV0Ojpjb3VudCk6CisgICAgICAgIChwcDo6SW5wdXQ6
OnN0cmluZyk6CisgICAgICAgIChwcDo6SW5wdXQ6Omxlbmd0aCk6CisgICAgICAgIChMb2NhdGlv
bik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3Bw
OgorICAgICAgICAocHA6OlByZXByb2Nlc3Nvcjo6aW5pdCk6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaDoKKyAgICAgICAgKFByZXByb2Nlc3Nvcik6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwOgorICAg
ICAgICAocHA6OlRva2VuaXplcjo6aW5pdCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9Ub2tlbml6ZXIuaDoKKyAgICAgICAgKFRva2VuaXplcik6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIubDoKKyAgICAgICAgKiBzcmMvdGhpcmRf
cGFydHk6IEFkZGVkLgorICAgICAgICAqIHNyYy90aGlyZF9wYXJ0eS9jb21waWxlcjogQWRkZWQu
CisgICAgICAgICogc3JjL3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5j
cHA6IEFkZGVkLgorICAgICAgICAoQXJyYXlCb3VuZHNDbGFtcGVyOjpBcnJheUJvdW5kc0NsYW1w
ZXIpOgorICAgICAgICAoQXJyYXlCb3VuZHNDbGFtcGVyOjpTZXRDbGFtcGluZ1N0cmF0ZWd5KToK
KyAgICAgICAgKEFycmF5Qm91bmRzQ2xhbXBlcjo6TWFya0luZGlyZWN0QXJyYXlCb3VuZHNGb3JD
bGFtcGluZyk6CisgICAgICAgIChBcnJheUJvdW5kc0NsYW1wZXI6Ok91dHB1dENsYW1waW5nRnVu
Y3Rpb25EZWZpbml0aW9uKToKKyAgICAgICAgKiBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJy
YXlCb3VuZHNDbGFtcGVyLmg6IEFkZGVkLgorICAgICAgICAoQXJyYXlCb3VuZHNDbGFtcGVyKToK
KyAgICAgICAgKEFycmF5Qm91bmRzQ2xhbXBlcjo6Q2xlYW51cCk6CisgICAgICAgIChBcnJheUJv
dW5kc0NsYW1wZXI6OkdldEFycmF5Qm91bmRzQ2xhbXBEZWZpbml0aW9uTmVlZGVkKToKKyAgICAg
ICAgKEFycmF5Qm91bmRzQ2xhbXBlcjo6U2V0QXJyYXlCb3VuZHNDbGFtcERlZmluaXRpb25OZWVk
ZWQpOgorICAgICAgICAqIHNyYy90aGlyZF9wYXJ0eS9jb21waWxlci9MSUNFTlNFOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvUkVBRE1FLmFuZ2xlOiBBZGRlZC4K
KwogMjAxMy0wMi0wNCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFNvcnQgQU5HTEUgWGNvZGUgcHJvamVjdCBmaWxlLgpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw3ICsxNyw2IEBAIElOQ0xVREVQQVRI
ICs9IFwKICAgICAkJFNPVVJDRV9ESVIvaW5jbHVkZQogCiBIRUFERVJTICs9IFwKLSAgICBzcmMv
Y29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmggXAogICAgIHNyYy9jb21waWxlci9CYXNlVHlw
ZXMuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggXAogICAg
IHNyYy9jb21waWxlci9Db21tb24uaCBcCkBAIC04MSwxMCArODAsMTAgQEAgSEVBREVSUyArPSBc
CiAgICAgc3JjL2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuaCBcCiAgICAgc3JjL2NvbXBp
bGVyL1ZhcmlhYmxlSW5mby5oIFwKICAgICBzcmMvY29tcGlsZXIvVmFyaWFibGVQYWNrZXIuaCBc
Ci0gICAgc3JjL2NvbXBpbGVyL1ZlcnNpb25HTFNMLmgKKyAgICBzcmMvY29tcGlsZXIvVmVyc2lv
bkdMU0wuaCBcCisgICAgc3JjL3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBl
ci5oCiAKIFNPVVJDRVMgKz0gXAotICAgIHNyYy9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIu
Y3BwIFwKICAgICBzcmMvY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIFwKICAg
ICBzcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvQ29tcGls
ZXIuY3BwIFwKQEAgLTEzOCw2ICsxMzcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBzcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5jcHAgXAogICAgIHNyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvVG9rZW4uY3BwIFwKKyAgICBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHND
bGFtcGVyLmNwcAogCiB3aW4zMjogU09VUkNFUyArPSBzcmMvY29tcGlsZXIvb3Nzb3VyY2Vfd2lu
LmNwcAogZWxzZTogU09VUkNFUyArPSBzcmMvY29tcGlsZXIvb3Nzb3VyY2VfcG9zaXguY3BwCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTksOCArOSw2IEBACiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCQkzMTJCREIw
QzE1RkVDQUM5MDA5N0VCQzcgLyogQU5HTEUucGxpc3QgaW4gQ29weUZpbGVzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkJEQjA5MTVGRUM5MUUwMDk3RUJDNyAvKiBBTkdM
RS5wbGlzdCAqLzsgfTsKIAkJMzEyQkRCMEUxNUZFQ0FFNTAwOTdFQkM3IC8qIEFOR0xFLnR4dCBp
biBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyQkRCMEEx
NUZFQ0EzQTAwOTdFQkM3IC8qIEFOR0xFLnR4dCAqLzsgfTsKLQkJMzE1OEVBMEUxNjMwOTY4RDAw
NkJFNUVFIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTU4RUEwQzE2MzA5NjhEMDA2QkU1RUUgLyogQXJyYXlC
b3VuZHNDbGFtcGVyLmNwcCAqLzsgfTsKLQkJMzE1OEVBMEYxNjMwOTY4RDAwNkJFNUVFIC8qIEFy
cmF5Qm91bmRzQ2xhbXBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzE1OEVBMEQxNjMwOTY4RDAwNkJFNUVFIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5o
ICovOyB9OwogCQk0OTk1MUMwMzE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDIxNEI3
QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLzsgfTsKIAkJNDk5NTFDMDkxNEI3QUFE
ODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgKi87IH07CiAJCTQ5OTUxQzBBMTRCN0FBRDgw
MDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggKi87IH07CkBAIC0zMiw2ICszMCw4IEBACiAJCTkwRDlC
MTE4MTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJsZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMTEwMTJFMTFERDYwMDJENDI1NSAvKiBW
YXJpYWJsZUluZm8uaCAqLzsgfTsKIAkJOTBEOUIxMTkxMkUxMURENjAwMkQ0MjU1IC8qIFZlcnNp
b25HTFNMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkwRDlCMTExMTJFMTFERDYwMDJENDI1NSAvKiBWZXJzaW9uR0xTTC5jcHAgKi87IH07CiAJCTkw
RDlCMTFBMTJFMTFERDYwMDJENDI1NSAvKiBWZXJzaW9uR0xTTC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIxMTIxMkUxMURENjAwMkQ0MjU1IC8q
IFZlcnNpb25HTFNMLmggKi87IH07CisJCUEwOEMzQ0RDMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJh
eUJvdW5kc0NsYW1wZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTA4QzNDREExNkQ2Q0I2MTAwM0YwQjgzIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5j
cHAgKi87IH07CisJCUEwOEMzQ0REMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJvdW5kc0NsYW1w
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwOEMz
Q0RCMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJvdW5kc0NsYW1wZXIuaCAqLzsgfTsKIAkJQTBB
QUJFMkMxM0FGRTgxMDAwRjJFQkQxIC8qIEZvckxvb3BVbnJvbGwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTBBQUJFMkExM0FGRTgxMDAwRjJFQkQx
IC8qIEZvckxvb3BVbnJvbGwuY3BwICovOyB9OwogCQlBMEFBQkUyRDEzQUZFODEwMDBGMkVCRDEg
LyogRm9yTG9vcFVucm9sbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTBBQUJFMkIxM0FGRTgxMDAwRjJFQkQxIC8qIEZvckxvb3BVbnJvbGwuaCAqLzsg
fTsKIAkJQTBBQUJFMzAxM0FGRTgzMDAwRjJFQkQxIC8qIE1hcExvbmdWYXJpYWJsZU5hbWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwQUFCRTJF
MTNBRkU4MzAwMEYyRUJEMSAvKiBNYXBMb25nVmFyaWFibGVOYW1lcy5jcHAgKi87IH07CkBAIC0x
MzYsOCArMTM2LDYgQEAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkz
MTJCREIwOTE1RkVDOTFFMDA5N0VCQzcgLyogQU5HTEUucGxpc3QgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBs
aXN0LnhtbDsgcGF0aCA9IEFOR0xFLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTJCREIwQTE1RkVDQTNBMDA5N0VCQzcgLyogQU5HTEUudHh0ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEFOR0xFLnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE1OEVBMEMx
NjMwOTY4RDAwNkJFNUVFIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJvdW5kc0NsYW1wZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkzMTU4RUEwRDE2MzA5NjhEMDA2QkU1RUUgLyogQXJyYXlCb3Vu
ZHNDbGFtcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5Qm91bmRz
Q2xhbXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDNBM0UxNTEyRUNGNkND
MDAwNEY5RDcgLyogaU9TLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IGlPUy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5NTFDMDIxNEI3
QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gbGVuZ3RoX2xpbWl0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OTk1MUMwNTE0QjdBQUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYzLDYgKzE2MSw4IEBACiAJ
CTkwRDlCMTEwMTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJsZUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVmFyaWFibGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkwRDlCMTExMTJFMTFERDYwMDJENDI1NSAvKiBWZXJzaW9uR0xTTC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWZXJzaW9uR0xTTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkwRDlCMTEyMTJFMTFERDYwMDJENDI1NSAvKiBWZXJz
aW9uR0xTTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZXJzaW9uR0xTTC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMDhDM0NEQTE2RDZDQjYxMDAzRjBCODMg
LyogQXJyYXlCb3VuZHNDbGFtcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFycmF5Qm91bmRzQ2xhbXBlci5jcHA7IHBhdGggPSBzcmMvdGhpcmRfcGFydHkvY29t
cGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTA4QzNDREIxNkQ2Q0I2MTAwM0YwQjgzIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBcnJheUJvdW5kc0NsYW1wZXIuaDsgcGF0aCA9
IHNyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTBBQUJFMkExM0FGRTgxMDAwRjJFQkQxIC8qIEZvckxvb3BV
bnJvbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9yTG9vcFVu
cm9sbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEwQUFCRTJCMTNBRkU4MTAw
MEYyRUJEMSAvKiBGb3JMb29wVW5yb2xsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvckxvb3BVbnJvbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTBBQUJF
MkUxM0FGRTgzMDAwRjJFQkQxIC8qIE1hcExvbmdWYXJpYWJsZU5hbWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcExvbmdWYXJpYWJsZU5hbWVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5Niw2ICsyOTYsMjMgQEAKIAkJCXBhdGggPSBD
b25maWd1cmF0aW9uczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUEwOEMz
Q0Q4MTZENkNCMzUwMDNGMEI4MyAvKiB0aGlyZF9wYXJ0eSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTA4QzNDRDkxNkQ2Q0I0MzAwM0YwQjgzIC8qIGNv
bXBpbGVyICovLAorCQkJKTsKKwkJCW5hbWUgPSB0aGlyZF9wYXJ0eTsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CisJCUEwOEMzQ0Q5MTZENkNCNDMwMDNGMEI4MyAvKiBjb21waWxl
ciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTA4QzND
REExNkQ2Q0I2MTAwM0YwQjgzIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgKi8sCisJCQkJQTA4
QzNDREIxNkQ2Q0I2MTAwM0YwQjgzIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oICovLAorCQkJKTsK
KwkJCW5hbWUgPSBjb21waWxlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJ
CUEyNjRGOENCMTY5NzYyQUEwMDZGQUE1QSAvKiBLSFIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzUzLDYgKzM3MCw3IEBACiAJCUZCMzlEMDg0MTIwMEVE
RUIwMDA4OEU2OSAvKiBzcmMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCUEwOEMzQ0Q4MTZENkNCMzUwMDNGMEI4MyAvKiB0aGlyZF9wYXJ0eSAqLywKIAkJ
CQlGQjM5RDIyMDEyMDBGMzVBMDAwODhFNjkgLyogY29tcGlsZXIgKi8sCiAJCQkpOwogCQkJbmFt
ZSA9IHNyYzsKQEAgLTM3Miw4ICszOTAsNiBAQAogCQkJCUEyNjU2ODJDMTU5QzIzRTEwMDM5ODUz
OSAvKiBkZXBncmFwaCAqLywKIAkJCQlGQjM5RDI0NDEyMDBGMzVBMDAwODhFNjkgLyogcHJlcHJv
Y2Vzc29yICovLAogCQkJCUEyNjU2ODM0MTU5QzIzRTEwMDM5ODUzOSAvKiB0aW1pbmcgKi8sCi0J
CQkJMzE1OEVBMEMxNjMwOTY4RDAwNkJFNUVFIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgKi8s
Ci0JCQkJMzE1OEVBMEQxNjMwOTY4RDAwNkJFNUVFIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oICov
LAogCQkJCUZCMzlEMjIxMTIwMEYzNUEwMDA4OEU2OSAvKiBCYXNlVHlwZXMuaCAqLywKIAkJCQk0
OTk1MUMwNTE0QjdBQUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICov
LAogCQkJCTQ5OTUxQzA2MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRv
ci5oICovLApAQCAtNTA5LDcgKzUyNSw2IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFz
ZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQkz
MTU4RUEwRjE2MzA5NjhEMDA2QkU1RUUgLyogQXJyYXlCb3VuZHNDbGFtcGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0OTk1MUMwQTE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjU2ODNBMTU5QzIzRTEwMDM5ODUzOSAvKiBE
ZXBlbmRlbmN5R3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjU2ODNDMTU5QzIzRTEwMDM5
ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTU1Myw2
ICs1NjgsNyBAQAogCQkJCTkwRDlCMTE4MTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJsZUluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOENBMTY5NzRFMkEwMDZGQUE1QSAvKiBWYXJpYWJs
ZVBhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBEOUIxMUExMkUxMURENjAwMkQ0MjU1IC8q
IFZlcnNpb25HTFNMLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMDhDM0NERDE2RDZDQjYxMDAzRjBC
ODMgLyogQXJyYXlCb3VuZHNDbGFtcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTYxMCw3ICs2MjYs
NiBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJMzE1OEVBMEUxNjMwOTY4RDAwNkJFNUVF
IC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTk1MUMwOTE0
QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkIzOUQyNzExMjAwRjM1QTAwMDg4RTY5IC8qIENvZGVHZW5HTFNMLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkwRDlCMTAyMTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTY2NSw2ICs2ODAsNyBAQAogCQkJCTkwRDlCMTE3MTJFMTFERDYw
MDJENDI1NSAvKiBWYXJpYWJsZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NEY4Qzkx
Njk3NEUyQTAwNkZBQTVBIC8qIFZhcmlhYmxlUGFja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkwRDlCMTE5MTJFMTFERDYwMDJENDI1NSAvKiBWZXJzaW9uR0xTTC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBMDhDM0NEQzE2RDZDQjYxMDAzRjBCODMgLyogQXJyYXlCb3VuZHNDbGFtcGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9H
TFNMQU5HL1NoYWRlckxhbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgImtocnBsYXRmb3Jt
LmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAKIC8vCiAvLyBUaGlzIGlzIHRoZSBwbGF0Zm9ybSBp
bmRlcGVuZGVudCBpbnRlcmZhY2UgYmV0d2VlbiBhbiBPR0wgZHJpdmVyCkBAIC0zNiw3ICszNyw3
IEBAIGV4dGVybiAiQyIgewogCiAvLyBWZXJzaW9uIG51bWJlciBmb3Igc2hhZGVyIHRyYW5zbGF0
aW9uIEFQSS4KIC8vIEl0IGlzIGluY3JlbWVudGVkIGV2ZXJ5dGltZSB0aGUgQVBJIGNoYW5nZXMu
Ci0jZGVmaW5lIFNIX1ZFUlNJT04gMTA3CisjZGVmaW5lIEFOR0xFX1NIX1ZFUlNJT04gMTA4CiAK
IC8vCiAvLyBUaGUgbmFtZXMgb2YgdGhlIGZvbGxvd2luZyBlbnVtcyBoYXZlIGJlZW4gZGVyaXZl
ZCBieSByZXBsYWNpbmcgR0wgcHJlZml4CkBAIC0xNTUsMTAgKzE1NiwyMSBAQCB0eXBlZGVmIGVu
dW0gewogICAvLyBUaGlzIGZsYWcgZW5zdXJlcyBhbGwgaW5kaXJlY3QgKGV4cHJlc3Npb24tYmFz
ZWQpIGFycmF5IGluZGV4aW5nCiAgIC8vIGlzIGNsYW1wZWQgdG8gdGhlIGJvdW5kcyBvZiB0aGUg
YXJyYXkuIFRoaXMgZW5zdXJlcywgZm9yIGV4YW1wbGUsCiAgIC8vIHRoYXQgeW91IGNhbm5vdCBy
ZWFkIG9mZiB0aGUgZW5kIG9mIGEgdW5pZm9ybSwgd2hldGhlciBhbiBhcnJheQotICAvLyB2ZWMy
MzQsIG9yIG1hdDIzNCB0eXBlLgorICAvLyB2ZWMyMzQsIG9yIG1hdDIzNCB0eXBlLiBUaGUgU2hB
cnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBlbnVtLAorICAvLyBzcGVjaWZpZWQgaW4gdGhlIFNo
QnVpbHRJblJlc291cmNlcyB3aGVuIGNvbnN0cnVjdGluZyB0aGUKKyAgLy8gY29tcGlsZXIsIHNl
bGVjdHMgdGhlIHN0cmF0ZWd5IGZvciB0aGUgY2xhbXBpbmcgaW1wbGVtZW50YXRpb24uCiAgIFNI
X0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUyA9IDB4MTAwMAogfSBTaENvbXBpbGVPcHRpb25z
OwogCisvLyBEZWZpbmVzIGFsdGVybmF0ZSBzdHJhdGVnaWVzIGZvciBpbXBsZW1lbnRpbmcgYXJy
YXkgaW5kZXggY2xhbXBpbmcuCit0eXBlZGVmIGVudW0geworICAvLyBVc2UgdGhlIGNsYW1wIGlu
dHJpbnNpYyBmb3IgYXJyYXkgaW5kZXggY2xhbXBpbmcuCisgIFNIX0NMQU1QX1dJVEhfQ0xBTVBf
SU5UUklOU0lDID0gMSwKKworICAvLyBVc2UgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gZm9yIGFy
cmF5IGluZGV4IGNsYW1waW5nLgorICBTSF9DTEFNUF9XSVRIX1VTRVJfREVGSU5FRF9JTlRfQ0xB
TVBfRlVOQ1RJT04KK30gU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneTsKKwogLy8KIC8vIERy
aXZlciBtdXN0IGNhbGwgdGhpcyBmaXJzdCwgb25jZSwgYmVmb3JlIGRvaW5nIGFueSBvdGhlcgog
Ly8gY29tcGlsZXIgb3BlcmF0aW9ucy4KQEAgLTE3Myw3ICsxODUsNyBAQCBDT01QSUxFUl9FWFBP
UlQgaW50IFNoRmluYWxpemUoKTsKIAogLy8gVGhlIDY0IGJpdHMgaGFzaCBmdW5jdGlvbi4gVGhl
IGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgaW5wdXQgc3RyaW5nOyB0aGUKIC8vIHNlY29uZCBwYXJh
bWV0ZXIgaXMgdGhlIHN0cmluZyBsZW5ndGguCi10eXBlZGVmIGtocm9ub3NfdWludDY0X3QgKCpT
aEhhc2hGdW5jdGlvbjY0KShjb25zdCBjaGFyKiwgdW5zaWduZWQgaW50KTsKK3R5cGVkZWYga2hy
b25vc191aW50NjRfdCAoKlNoSGFzaEZ1bmN0aW9uNjQpKGNvbnN0IGNoYXIqLCBzaXplX3QpOwog
CiAvLwogLy8gSW1wbGVtZW50YXRpb24gZGVwZW5kZW50IGJ1aWx0LWluIHJlc291cmNlcyAoY29u
c3RhbnRzIGFuZCBleHRlbnNpb25zKS4KQEAgLTE5NiwxMSArMjA4LDE2IEBAIHR5cGVkZWYgc3Ry
dWN0CiAgICAgaW50IE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlczsKICAgICBpbnQgT0VTX0VHTF9p
bWFnZV9leHRlcm5hbDsKICAgICBpbnQgQVJCX3RleHR1cmVfcmVjdGFuZ2xlOworICAgIGludCBF
WFRfZHJhd19idWZmZXJzOwogCiAgICAgLy8gTmFtZSBIYXNoaW5nLgogICAgIC8vIFNldCBhIDY0
IGJpdCBoYXNoIGZ1bmN0aW9uIHRvIGVuYWJsZSB1c2VyLWRlZmluZWQgbmFtZSBoYXNoaW5nLgog
ICAgIC8vIERlZmF1bHQgaXMgTlVMTC4KICAgICBTaEhhc2hGdW5jdGlvbjY0IEhhc2hGdW5jdGlv
bjsKKworICAgIC8vIFNlbGVjdHMgYSBzdHJhdGVneSB0byB1c2Ugd2hlbiBpbXBsZW1lbnRpbmcg
YXJyYXkgaW5kZXggY2xhbXBpbmcuCisgICAgLy8gRGVmYXVsdCBpcyBTSF9DTEFNUF9XSVRIX0NM
QU1QX0lOVFJJTlNJQy4KKyAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IEFycmF5SW5k
ZXhDbGFtcGluZ1N0cmF0ZWd5OwogfSBTaEJ1aWx0SW5SZXNvdXJjZXM7CiAKIC8vCkBAIC0yNjQs
NyArMjgxLDcgQEAgQ09NUElMRVJfRVhQT1JUIHZvaWQgU2hEZXN0cnVjdChTaEhhbmRsZQogQ09N
UElMRVJfRVhQT1JUIGludCBTaENvbXBpbGUoCiAgICAgY29uc3QgU2hIYW5kbGUgaGFuZGxlLAog
ICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNoYWRlclN0cmluZ3NbXSwKLSAgICBjb25zdCBpbnQgbnVt
U3RyaW5ncywKKyAgICBzaXplX3QgbnVtU3RyaW5ncywKICAgICBpbnQgY29tcGlsZU9wdGlvbnMK
ICAgICApOwogCkBAIC0yOTIsMTEgKzMwOSwxMSBAQCBDT01QSUxFUl9FWFBPUlQgaW50IFNoQ29t
cGlsZSgKIC8vIFNIX0hBU0hFRF9OQU1FX01BWF9MRU5HVEg6IHRoZSBtYXggbGVuZ3RoIG9mIGEg
aGFzaGVkIG5hbWUgaW5jbHVkaW5nIHRoZQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbCB0ZXJtaW5hdGlvbiBjaGFyYWN0ZXIuCiAvLyBTSF9IQVNIRURfTkFNRVNfQ09VTlQ6IHRo
ZSBudW1iZXIgb2YgaGFzaGVkIG5hbWVzIGZyb20gdGhlIGxhdGVzdCBjb21waWxlLgotLy8gCisv
LwogLy8gcGFyYW1zOiBSZXF1ZXN0ZWQgcGFyYW1ldGVyCiBDT01QSUxFUl9FWFBPUlQgdm9pZCBT
aEdldEluZm8oY29uc3QgU2hIYW5kbGUgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoU2hhZGVySW5mbyBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQqIHBhcmFtcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBw
YXJhbXMpOwogCiAvLyBSZXR1cm5zIG51bC10ZXJtaW5hdGVkIGluZm9ybWF0aW9uIGxvZyBmb3Ig
YSBjb21waWxlZCBzaGFkZXIuCiAvLyBQYXJhbWV0ZXJzOgpAQCAtMzM5LDcgKzM1Niw3IEBAIENP
TVBJTEVSX0VYUE9SVCB2b2lkIFNoR2V0T2JqZWN0Q29kZShjb24KIC8vICAgICAgICAgICAgIG1h
cHBlZE5hbWUgYXJlIHRoZSBzYW1lLgogQ09NUElMRVJfRVhQT1JUIHZvaWQgU2hHZXRBY3RpdmVB
dHRyaWIoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50KiBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QqIGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCogc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoRGF0
YVR5cGUqIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
KiBuYW1lLApAQCAtMzY2LDcgKzM4Myw3IEBAIENPTVBJTEVSX0VYUE9SVCB2b2lkIFNoR2V0QWN0
aXZlQXR0cmliKGMKIC8vICAgICAgICAgICAgIG1hcHBlZE5hbWUgYXJlIHRoZSBzYW1lLgogQ09N
UElMRVJfRVhQT1JUIHZvaWQgU2hHZXRBY3RpdmVVbmlmb3JtKGNvbnN0IFNoSGFuZGxlIGhhbmRs
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBzaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoRGF0YVR5cGUqIHR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogbmFtZSwKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuY3BwCShyZXZpc2lvbiAxNDMw
MTEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOSBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDxzdGRhcmcuaD4KKworI2luY2x1ZGUgImNvbW1vbi9zeXN0ZW0uaCIKICNpbmNsdWRlIDxk
M2Q5Lmg+Ci0jaW5jbHVkZSA8d2luZG93cy5oPgogCiBuYW1lc3BhY2UgZ2wKIHsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW0uaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIHN5c3RlbS5oOiBJ
bmNsdWRlcyBXaW5kb3dzIHN5c3RlbSBoZWFkZXJzIGFuZCB1bmRlZmluZXMgbWFjcm9zIHRoYXQg
Y29uZmxpY3QuCisKKyNpZm5kZWYgQ09NTU9OX1NZU1RFTV9ICisjZGVmaW5lIENPTU1PTl9TWVNU
RU1fSAorCisjaWYgIWRlZmluZWQoV0lOMzJfTEVBTl9BTkRfTUVBTikKKyNkZWZpbmUgV0lOMzJf
TEVBTl9BTkRfTUVBTgorI2VuZGlmCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8
ZDNkOS5oPgorI2luY2x1ZGUgPEQzRGNvbXBpbGVyLmg+CisjaW5jbHVkZSA8ZDNkOXR5cGVzLmg+
CisjaW5jbHVkZSA8bW1zeXN0ZW0uaD4KKworI2lmIGRlZmluZWQobWluKQorI3VuZGVmIG1pbgor
I2VuZGlmCisKKyNpZiBkZWZpbmVkKG1heCkKKyN1bmRlZiBtYXgKKyNlbmRpZgorCisjZW5kaWYg
ICAvLyBDT01NT05fU1lTVEVNX0gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1z
dHlsZQogICArIExGCgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92
ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi92ZXJzaW9uLmgJKHJldmlzaW9uIDE0MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vdmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogI2Rl
ZmluZSBNQUpPUl9WRVJTSU9OIDEKICNkZWZpbmUgTUlOT1JfVkVSU0lPTiAwCiAjZGVmaW5lIEJV
SUxEX1ZFUlNJT04gMAotI2RlZmluZSBCVUlMRF9SRVZJU0lPTiAxNjQxCisjZGVmaW5lIEJVSUxE
X1JFVklTSU9OIDE4MzEKIAogI2RlZmluZSBTVFJJTkdJRlkoeCkgI3gKICNkZWZpbmUgTUFDUk9f
U1RSSU5HSUZZKHgpIFNUUklOR0lGWSh4KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHAJKHJl
dmlzaW9uIDE0MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9B
cnJheUJvdW5kc0NsYW1wZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaCIKLQotY29uc3QgY2hhcioga0ludENsYW1wQmVn
aW4gPSAiLy8gQkVHSU46IEdlbmVyYXRlZCBjb2RlIGZvciBhcnJheSBib3VuZHMgY2xhbXBpbmdc
blxuIjsKLWNvbnN0IGNoYXIqIGtJbnRDbGFtcEVuZCA9ICIvLyBFTkQ6IEdlbmVyYXRlZCBjb2Rl
IGZvciBhcnJheSBib3VuZHMgY2xhbXBpbmdcblxuIjsKLWNvbnN0IGNoYXIqIGtJbnRDbGFtcERl
ZmluaXRpb24gPSAiaW50IHdlYmdsX2ludF9jbGFtcChpbnQgdmFsdWUsIGludCBtaW5WYWx1ZSwg
aW50IG1heFZhbHVlKSB7IHJldHVybiAoKHZhbHVlIDwgbWluVmFsdWUpID8gbWluVmFsdWUgOiAo
KHZhbHVlID4gbWF4VmFsdWUpID8gbWF4VmFsdWUgOiB2YWx1ZSkpOyB9XG5cbiI7Ci0KLW5hbWVz
cGFjZSB7Ci0KLWNsYXNzIEFycmF5Qm91bmRzQ2xhbXBlck1hcmtlciA6IHB1YmxpYyBUSW50ZXJt
VHJhdmVyc2VyIHsKLXB1YmxpYzoKLSAgICBBcnJheUJvdW5kc0NsYW1wZXJNYXJrZXIoKQotICAg
ICAgICA6IG1OZWVkc0NsYW1wKGZhbHNlKQotICAgewotICAgfQotCi0gICB2aXJ0dWFsIGJvb2wg
dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkqIG5vZGUpCi0gICB7Ci0gICAg
ICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wSW5kZXhJbmRpcmVjdCkKLSAgICAgICB7Ci0gICAg
ICAgICAgIFRJbnRlcm1UeXBlZCogbGVmdCA9IG5vZGUtPmdldExlZnQoKTsKLSAgICAgICAgICAg
aWYgKGxlZnQtPmlzQXJyYXkoKSB8fCBsZWZ0LT5pc1ZlY3RvcigpIHx8IGxlZnQtPmlzTWF0cml4
KCkpCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIG5vZGUtPnNldEFkZEluZGV4Q2xhbXAo
KTsKLSAgICAgICAgICAgICAgIG1OZWVkc0NsYW1wID0gdHJ1ZTsKLSAgICAgICAgICAgfQotICAg
ICAgIH0KLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLQotICAgIGJvb2wgR2V0TmVlZHNDbGFt
cCgpIHsgcmV0dXJuIG1OZWVkc0NsYW1wOyB9Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBtTmVlZHND
bGFtcDsKLX07Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotQXJyYXlCb3VuZHNDbGFt
cGVyOjpBcnJheUJvdW5kc0NsYW1wZXIoKQotICAgIDogbUFycmF5Qm91bmRzQ2xhbXBEZWZpbml0
aW9uTmVlZGVkKGZhbHNlKQotewotfQotCi12b2lkIEFycmF5Qm91bmRzQ2xhbXBlcjo6T3V0cHV0
Q2xhbXBpbmdGdW5jdGlvbkRlZmluaXRpb24oVEluZm9TaW5rQmFzZSYgb3V0KSBjb25zdAotewot
ICAgIGlmICghbUFycmF5Qm91bmRzQ2xhbXBEZWZpbml0aW9uTmVlZGVkKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBvdXQgPDwga0ludENsYW1wQmVnaW4gPDwga0ludENsYW1w
RGVmaW5pdGlvbiA8PCBrSW50Q2xhbXBFbmQ7Ci19Ci0KLXZvaWQgQXJyYXlCb3VuZHNDbGFtcGVy
OjpNYXJrSW5kaXJlY3RBcnJheUJvdW5kc0ZvckNsYW1waW5nKFRJbnRlcm1Ob2RlKiByb290KQot
ewotICAgIEFTU0VSVChyb290KTsKLQotICAgIEFycmF5Qm91bmRzQ2xhbXBlck1hcmtlciBjbGFt
cGVyOwotICAgIHJvb3QtPnRyYXZlcnNlKCZjbGFtcGVyKTsKLSAgICBpZiAoY2xhbXBlci5HZXRO
ZWVkc0NsYW1wKCkpCi0gICAgewotICAgICAgICBTZXRBcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlv
bk5lZWRlZCgpOwotICAgIH0KLX0KLQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaAkocmV2aXNpb24g
MTQzMDExKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0FycmF5Qm91
bmRzQ2xhbXBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ09NUElMRVJfQVJS
QVlfQk9VTkRTX0NMQU1QRVJfSF8KLSNkZWZpbmUgQ09NUElMRVJfQVJSQVlfQk9VTkRTX0NMQU1Q
RVJfSF8KLQotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotCi0jaW5jbHVkZSAiY29t
cGlsZXIvSW5mb1NpbmsuaCIKLSNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKLQot
Y2xhc3MgQXJyYXlCb3VuZHNDbGFtcGVyIHsKLXB1YmxpYzoKLSAgICBBcnJheUJvdW5kc0NsYW1w
ZXIoKTsKLQotICAgIC8vIE91dHB1dCBhcnJheSBjbGFtcCBmdW5jdGlvbiBzb3VyY2UgaW50byB0
aGUgc2hhZGVyIHNvdXJjZS4KLSAgICB2b2lkIE91dHB1dENsYW1waW5nRnVuY3Rpb25EZWZpbml0
aW9uKFRJbmZvU2lua0Jhc2UmIG91dCkgY29uc3Q7Ci0KLSAgICAvLyBNYXJrcyBub2RlcyBpbiB0
aGUgdHJlZSB0aGF0IGluZGV4IGFycmF5cyBpbmRpcmVjdGx5IGFzCi0gICAgLy8gcmVxdWlyaW5n
IGNsYW1waW5nLgotICAgIHZvaWQgTWFya0luZGlyZWN0QXJyYXlCb3VuZHNGb3JDbGFtcGluZyhU
SW50ZXJtTm9kZSogcm9vdCk7Ci0KLSAgICB2b2lkIENsZWFudXAoKQotICAgIHsKLSAgICAgICAg
bUFycmF5Qm91bmRzQ2xhbXBEZWZpbml0aW9uTmVlZGVkID0gZmFsc2U7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIGJvb2wgR2V0QXJyYXlCb3VuZHNDbGFtcERlZmluaXRpb25OZWVkZWQoKSBjb25z
dCB7IHJldHVybiBtQXJyYXlCb3VuZHNDbGFtcERlZmluaXRpb25OZWVkZWQ7IH0KLSAgICB2b2lk
IFNldEFycmF5Qm91bmRzQ2xhbXBEZWZpbml0aW9uTmVlZGVkKCkgeyBtQXJyYXlCb3VuZHNDbGFt
cERlZmluaXRpb25OZWVkZWQgPSB0cnVlOyB9Ci0gICAgCi0gICAgYm9vbCBtQXJyYXlCb3VuZHND
bGFtcERlZmluaXRpb25OZWVkZWQ7Ci19OwotCi0jZW5kaWYgLy8gQ09NUElMRVJfQVJSQVlfQk9V
TkRTX0NMQU1QRVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9Db21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkocmV2aXNpb24gMTQzMDExKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NCw3ICs0LDYgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0jaW5jbHVk
ZSAiY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IuaCIKICNpbmNsdWRlICJjb21waWxlci9EZXRlY3RSZWN1cnNp
b24uaCIKICNpbmNsdWRlICJjb21waWxlci9Gb3JMb29wVW5yb2xsLmgiCkBAIC0yMCw2ICsxOSw3
IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0Lmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcu
aCIKICNpbmNsdWRlICJjb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcu
aCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaCIK
IAogYm9vbCBpc1dlYkdMQmFzZWRTcGVjKFNoU2hhZGVyU3BlYyBzcGVjKQogewpAQCAtMTAyLDYg
KzEwMiw3IEBAIFRTaEhhbmRsZUJhc2U6On5UU2hIYW5kbGVCYXNlKCkgewogVENvbXBpbGVyOjpU
Q29tcGlsZXIoU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjKQogICAgIDogc2hh
ZGVyVHlwZSh0eXBlKSwKICAgICAgIHNoYWRlclNwZWMoc3BlYyksCisgICAgICBjbGFtcGluZ1N0
cmF0ZWd5KFNIX0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklOU0lDKSwKICAgICAgIGJ1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yKHR5cGUpCiB7CiAgICAgbG9uZ05hbWVNYXAgPSBMb25nTmFtZU1hcDo6R2V0
SW5zdGFuY2UoKTsKQEAgLTEyNSwxMyArMTI2LDE2IEBAIGJvb2wgVENvbXBpbGVyOjpJbml0KGNv
bnN0IFNoQnVpbHRJblJlc28KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEluaXRFeHRlbnNp
b25CZWhhdmlvcihyZXNvdXJjZXMsIGV4dGVuc2lvbkJlaGF2aW9yKTsKIAorICAgIGFycmF5Qm91
bmRzQ2xhbXBlci5TZXRDbGFtcGluZ1N0cmF0ZWd5KHJlc291cmNlcy5BcnJheUluZGV4Q2xhbXBp
bmdTdHJhdGVneSk7CisgICAgY2xhbXBpbmdTdHJhdGVneSA9IHJlc291cmNlcy5BcnJheUluZGV4
Q2xhbXBpbmdTdHJhdGVneTsKKwogICAgIGhhc2hGdW5jdGlvbiA9IHJlc291cmNlcy5IYXNoRnVu
Y3Rpb247CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBUQ29tcGlsZXI6OmNvbXBpbGUo
Y29uc3QgY2hhciogY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgaW50IG51bVN0cmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bnVtU3RyaW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb21waWxlT3B0aW9ucykK
IHsKICAgICBUU2NvcGVkUG9vbEFsbG9jYXRvciBzY29wZWRBbGxvYygmYWxsb2NhdG9yLCB0cnVl
KTsKQEAgLTE0Niw3ICsxNTAsNyBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFy
KiBjb25zCiAKICAgICAvLyBGaXJzdCBzdHJpbmcgaXMgcGF0aCBvZiBzb3VyY2UgZmlsZSBpZiBm
bGFnIGlzIHNldC4gVGhlIGFjdHVhbCBzb3VyY2UgZm9sbG93cy4KICAgICBjb25zdCBjaGFyKiBz
b3VyY2VQYXRoID0gTlVMTDsKLSAgICBpbnQgZmlyc3RTb3VyY2UgPSAwOworICAgIHNpemVfdCBm
aXJzdFNvdXJjZSA9IDA7CiAgICAgaWYgKGNvbXBpbGVPcHRpb25zICYgU0hfU09VUkNFX1BBVEgp
CiAgICAgewogICAgICAgICBzb3VyY2VQYXRoID0gc2hhZGVyU3RyaW5nc1swXTsKQEAgLTM1NSwx
MyArMzU5LDE3IEBAIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgVENvbXBpbGVyOjpnZXQKICAg
ICByZXR1cm4gZXh0ZW5zaW9uQmVoYXZpb3I7CiB9CiAKLWNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yJiBUQ29tcGlsZXI6OmdldEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCkgY29uc3QKK2Nv
bnN0IEFycmF5Qm91bmRzQ2xhbXBlciYgVENvbXBpbGVyOjpnZXRBcnJheUJvdW5kc0NsYW1wZXIo
KSBjb25zdAogewotICAgIHJldHVybiBidWlsdEluRnVuY3Rpb25FbXVsYXRvcjsKKyAgICByZXR1
cm4gYXJyYXlCb3VuZHNDbGFtcGVyOwogfQogCi1jb25zdCBBcnJheUJvdW5kc0NsYW1wZXImIFRD
b21waWxlcjo6Z2V0QXJyYXlCb3VuZHNDbGFtcGVyKCkgY29uc3QKK1NoQXJyYXlJbmRleENsYW1w
aW5nU3RyYXRlZ3kgVENvbXBpbGVyOjpnZXRBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGFycmF5Qm91bmRzQ2xhbXBlcjsKKyAgICByZXR1cm4gY2xhbXBp
bmdTdHJhdGVneTsKIH0KIAorY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3ImIFRDb21waWxl
cjo6Z2V0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKSBjb25zdAoreworICAgIHJldHVybiBidWls
dEluRnVuY3Rpb25FbXVsYXRvcjsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5jcHAJKHJl
dmlzaW9uIDE0MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9E
ZXRlY3REaXNjb250aW51aXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYsMTEgKzE2LDI2IEBA
IG5hbWVzcGFjZSBzaAogewogYm9vbCBEZXRlY3RMb29wRGlzY29udGludWl0eTo6dHJhdmVyc2Uo
VEludGVybU5vZGUgKm5vZGUpCiB7CisgICAgbUxvb3BEZXB0aCA9IDA7CiAgICAgbUxvb3BEaXNj
b250aW51aXR5ID0gZmFsc2U7CiAgICAgbm9kZS0+dHJhdmVyc2UodGhpcyk7CiAgICAgcmV0dXJu
IG1Mb29wRGlzY29udGludWl0eTsKIH0KIAorYm9vbCBEZXRlY3RMb29wRGlzY29udGludWl0eTo6
dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCAqbG9vcCkKK3sKKyAgICBpZiAodmlz
aXQgPT0gUHJlVmlzaXQpCisgICAgeworICAgICAgICArK21Mb29wRGVwdGg7CisgICAgfQorICAg
IGVsc2UgaWYgKHZpc2l0ID09IFBvc3RWaXNpdCkKKyAgICB7CisgICAgICAgIC0tbUxvb3BEZXB0
aDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBEZXRlY3RMb29wRGlzY29u
dGludWl0eTo6dmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2ggKm5vZGUpCiB7
CiAgICAgaWYgKG1Mb29wRGlzY29udGludWl0eSkKQEAgLTI4LDE0ICs0MywxOSBAQCBib29sIERl
dGVjdExvb3BEaXNjb250aW51aXR5Ojp2aXNpdEJyYW5jCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKKyAgICBpZiAoIW1Mb29wRGVwdGgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKICAgICBzd2l0Y2ggKG5vZGUtPmdldEZsb3dPcCgpKQogICAgIHsKICAgICAg
IGNhc2UgRU9wS2lsbDoKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEJyZWFrOgogICAg
ICAgY2FzZSBFT3BDb250aW51ZToKLSAgICAgICAgbUxvb3BEaXNjb250aW51aXR5ID0gdHJ1ZTsK
ICAgICAgIGNhc2UgRU9wUmV0dXJuOgorICAgICAgICBtTG9vcERpc2NvbnRpbnVpdHkgPSB0cnVl
OwogICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgfQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRp
bnVpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvRGV0ZWN0RGlzY29udGludWl0eS5oCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw4ICsyMywxMCBAQCBjbGFzcyBEZXRlY3RMb29wRGlzY29udGludWl0eSA6
IHB1YmxpYyBUCiAKICAgcHJvdGVjdGVkOgogICAgIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlz
aXQsIFRJbnRlcm1CcmFuY2ggKm5vZGUpOworICAgIGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0
LCBUSW50ZXJtTG9vcCAqbG9vcCk7CiAgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSk7CiAKKyAgICBpbnQgbUxvb3BEZXB0aDsKICAgICBi
b29sIG1Mb29wRGlzY29udGludWl0eTsKIH07CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAJKHJldmlzaW9uIDE0MzAx
MSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjU0LDQgKzY1NCw2IEBAIHZvaWQgSW5pdEV4dGVuc2lvbkJl
aGF2aW9yKGNvbnN0IFNoQnVpbHQKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX09FU19FR0xfaW1h
Z2VfZXh0ZXJuYWwiXSA9IEVCaFVuZGVmaW5lZDsKICAgICBpZiAocmVzb3VyY2VzLkFSQl90ZXh0
dXJlX3JlY3RhbmdsZSkKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0FSQl90ZXh0dXJlX3JlY3Rh
bmdsZSJdID0gRUJoVW5kZWZpbmVkOworICAgIGlmIChyZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVy
cykKKyAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0VYVF9kcmF3X2J1ZmZlcnMiXSA9IEVCaFVuZGVm
aW5lZDsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRl
cm1lZGlhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9JbnRlcm1lZGlhdGUuY3BwCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE2Miw3ICsxMTYyLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlv
bjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAo
cmlnaHRVbmlvbkFycmF5W2ldID09IDAuMGYpIHsKICAgICAgICAgICAgICAgICAgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhXYXJuaW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVy
aW5nIGNvbnN0YW50IGZvbGRpbmciLCBnZXRMaW5lKCkpOwotICAgICAgICAgICAgICAgICAgICB0
ZW1wQ29uc3RBcnJheVtpXS5zZXRGQ29uc3QoRkxUX01BWCk7CisgICAgICAgICAgICAgICAgICAg
IHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5W2ldLmdldEZDb25zdCgpIDwg
MCA/IC1GTFRfTUFYIDogRkxUX01BWCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5W2ldLmdl
dEZDb25zdCgpIC8gcmlnaHRVbmlvbkFycmF5W2ldLmdldEZDb25zdCgpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTE0NTEsMTQgKzE0NTEsNyBAQCBUU3RyaW5nIFRJbnRlcm1UcmF2ZXJz
ZXI6Omhhc2goY29uc3QgVFN0CiB7CiAgICAgaWYgKGhhc2hGdW5jdGlvbiA9PSBOVUxMIHx8IG5h
bWUuZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5hbWU7Ci0jaWYgZGVmaW5lZChfX2NsYW5nX18p
Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1Xc2hvcnRlbi02NC10by0zMiIKLSNlbmRpZgogICAgIGtocm9ub3NfdWludDY0
X3QgbnVtYmVyID0gKCpoYXNoRnVuY3Rpb24pKG5hbWUuY19zdHIoKSwgbmFtZS5sZW5ndGgoKSk7
Ci0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0j
ZW5kaWYKICAgICBUU3RyaW5nU3RyZWFtIHN0cmVhbTsKICAgICBzdHJlYW0gPDwgSEFTSEVEX05B
TUVfUFJFRklYIDw8IHN0ZDo6aGV4IDw8IG51bWJlcjsKICAgICBUU3RyaW5nIGhhc2hlZE5hbWUg
PSBzdHJlYW0uc3RyKCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHAJKHJldmlzaW9u
IDE0MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9NYXBMb25n
VmFyaWFibGVOYW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw3IEBACiAKIG5hbWVz
cGFjZSB7CiAKLVRTdHJpbmcgbWFwTG9uZ05hbWUoaW50IGlkLCBjb25zdCBUU3RyaW5nJiBuYW1l
LCBib29sIGlzR2xvYmFsKQorVFN0cmluZyBtYXBMb25nTmFtZShzaXplX3QgaWQsIGNvbnN0IFRT
dHJpbmcmIG5hbWUsIGJvb2wgaXNHbG9iYWwpCiB7CiAgICAgQVNTRVJUKG5hbWUuc2l6ZSgpID4g
TUFYX1NIT1JURU5FRF9JREVOVElGSUVSX1NJWkUpOwogICAgIFRTdHJpbmdTdHJlYW0gc3RyZWFt
OwpAQCAtNzAsMTYgKzcwLDkgQEAgdm9pZCBMb25nTmFtZU1hcDo6SW5zZXJ0KGNvbnN0IGNoYXIq
IG9yaQogICAgICAgICBvcmlnaW5hbE5hbWUsIG1hcHBlZE5hbWUpKTsKIH0KIAotaW50IExvbmdO
YW1lTWFwOjpTaXplKCkgY29uc3QKK3NpemVfdCBMb25nTmFtZU1hcDo6U2l6ZSgpIGNvbnN0CiB7
Ci0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2hvcnRlbi02NC10by0zMiIKLSNl
bmRpZgogICAgIHJldHVybiBtTG9uZ05hbWVNYXAuc2l6ZSgpOwotI2lmIGRlZmluZWQoX19jbGFu
Z19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCiB9CiAKIE1hcExvbmdW
YXJpYWJsZU5hbWVzOjpNYXBMb25nVmFyaWFibGVOYW1lcyhMb25nTmFtZU1hcCogZ2xvYmFsTWFw
KQpAQCAtMTIyLDcgKzExNSw3IEBAIFRTdHJpbmcgTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6Om1hcEds
b2JhbEwKICAgICBjb25zdCBjaGFyKiBtYXBwZWROYW1lID0gbUdsb2JhbE1hcC0+RmluZChuYW1l
LmNfc3RyKCkpOwogICAgIGlmIChtYXBwZWROYW1lICE9IE5VTEwpCiAgICAgICAgIHJldHVybiBt
YXBwZWROYW1lOwotICAgIGludCBpZCA9IG1HbG9iYWxNYXAtPlNpemUoKTsKKyAgICBzaXplX3Qg
aWQgPSBtR2xvYmFsTWFwLT5TaXplKCk7CiAgICAgVFN0cmluZyBydCA9IG1hcExvbmdOYW1lKGlk
LCBuYW1lLCB0cnVlKTsKICAgICBtR2xvYmFsTWFwLT5JbnNlcnQobmFtZS5jX3N0cigpLCBydC5j
X3N0cigpKTsKICAgICByZXR1cm4gcnQ7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaAkocmV2
aXNpb24gMTQzMDExKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL01h
cExvbmdWYXJpYWJsZU5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgSW5zZXJ0KGNvbnN0IGNoYXIqIG9yaWdpbmFsTmFtZSwgY29uc3QgY2hh
ciogbWFwcGVkTmFtZSk7CiAKICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGlu
IHRoZSBtYXAuCi0gICAgaW50IFNpemUoKSBjb25zdDsKKyAgICBzaXplX3QgU2l6ZSgpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIExvbmdOYW1lTWFwKCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0RVNTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEVTU0wuY3BwCShyZXZpc2lvbiAx
NDMwMTEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0RVNT
TC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsMTAgKzcsMTEgQEAKICNpbmNsdWRlICJjb21waWxl
ci9PdXRwdXRFU1NMLmgiCiAKIFRPdXRwdXRFU1NMOjpUT3V0cHV0RVNTTChUSW5mb1NpbmtCYXNl
JiBvYmpTaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNoQXJyYXlJbmRleENsYW1waW5n
U3RyYXRlZ3kgY2xhbXBpbmdTdHJhdGVneSwKICAgICAgICAgICAgICAgICAgICAgICAgICBTaEhh
c2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1l
TWFwJiBuYW1lTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSYgc3lt
Ym9sVGFibGUpCi0gICAgOiBUT3V0cHV0R0xTTEJhc2Uob2JqU2luaywgaGFzaEZ1bmN0aW9uLCBu
YW1lTWFwLCBzeW1ib2xUYWJsZSkKKyAgICA6IFRPdXRwdXRHTFNMQmFzZShvYmpTaW5rLCBjbGFt
cGluZ1N0cmF0ZWd5LCBoYXNoRnVuY3Rpb24sIG5hbWVNYXAsIHN5bWJvbFRhYmxlKQogewogfQog
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0RVNTTC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRw
dXRFU1NMLmgJKHJldmlzaW9uIDE0MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9PdXRwdXRFU1NMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzLDYgKzEzLDcgQEAg
Y2xhc3MgVE91dHB1dEVTU0wgOiBwdWJsaWMgVE91dHB1dEdMU0xCYQogewogcHVibGljOgogICAg
IFRPdXRwdXRFU1NMKFRJbmZvU2lua0Jhc2UmIG9ialNpbmssCisgICAgICAgICAgICAgICAgU2hB
cnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBjbGFtcGluZ1N0cmF0ZWd5LAogICAgICAgICAgICAg
ICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uLAogICAgICAgICAgICAgICAgIE5hbWVN
YXAmIG5hbWVNYXAsCiAgICAgICAgICAgICAgICAgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSk7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091
dHB1dEdMU0wuY3BwCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsMTAgKzcs
MTEgQEAKICNpbmNsdWRlICJjb21waWxlci9PdXRwdXRHTFNMLmgiCiAKIFRPdXRwdXRHTFNMOjpU
T3V0cHV0R0xTTChUSW5mb1NpbmtCYXNlJiBvYmpTaW5rLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgY2xhbXBpbmdTdHJhdGVneSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBOYW1lTWFwJiBuYW1lTWFwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCi0gICAgOiBUT3V0cHV0R0xTTEJhc2Uo
b2JqU2luaywgaGFzaEZ1bmN0aW9uLCBuYW1lTWFwLCBzeW1ib2xUYWJsZSkKKyAgICA6IFRPdXRw
dXRHTFNMQmFzZShvYmpTaW5rLCBjbGFtcGluZ1N0cmF0ZWd5LCBoYXNoRnVuY3Rpb24sIG5hbWVN
YXAsIHN5bWJvbFRhYmxlKQogewogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgJKHJldmlzaW9uIDE0MzAxMSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzLDYgKzEzLDcgQEAgY2xhc3MgVE91dHB1dEdMU0wgOiBwdWJsaWMgVE91dHB1
dEdMU0xCYQogewogcHVibGljOgogICAgIFRPdXRwdXRHTFNMKFRJbmZvU2lua0Jhc2UmIG9ialNp
bmssCisgICAgICAgICAgICAgICAgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBjbGFtcGlu
Z1N0cmF0ZWd5LAogICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9u
LAogICAgICAgICAgICAgICAgIE5hbWVNYXAmIG5hbWVNYXAsCiAgICAgICAgICAgICAgICAgVFN5
bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAJKHJldmlzaW9uIDE0
MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNM
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw4IEBACiAjaW5jbHVkZSAiY29tcGls
ZXIvT3V0cHV0R0xTTEJhc2UuaCIKICNpbmNsdWRlICJjb21waWxlci9kZWJ1Zy5oIgogCisjaW5j
bHVkZSA8Y2Zsb2F0PgorCiBuYW1lc3BhY2UKIHsKIFRTdHJpbmcgYXJyYXlCcmFja2V0cyhjb25z
dCBUVHlwZSYgdHlwZSkKQEAgLTM4LDEyICs0MCwxNCBAQCBib29sIGlzU2luZ2xlU3RhdGVtZW50
KFRJbnRlcm1Ob2RlKiBub2RlCiB9ICAvLyBuYW1lc3BhY2UKIAogVE91dHB1dEdMU0xCYXNlOjpU
T3V0cHV0R0xTTEJhc2UoVEluZm9TaW5rQmFzZSYgb2JqU2luaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgY2xhbXBpbmdTdHJh
dGVneSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQg
aGFzaEZ1bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZU1hcCYg
bmFtZU1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSYg
c3ltYm9sVGFibGUpCiAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIHRydWUsIHRydWUpLAog
ICAgICAgbU9ialNpbmsob2JqU2luayksCiAgICAgICBtRGVjbGFyaW5nVmFyaWFibGVzKGZhbHNl
KSwKKyAgICAgIG1DbGFtcGluZ1N0cmF0ZWd5KGNsYW1waW5nU3RyYXRlZ3kpLAogICAgICAgbUhh
c2hGdW5jdGlvbihoYXNoRnVuY3Rpb24pLAogICAgICAgbU5hbWVNYXAobmFtZU1hcCksCiAgICAg
ICBtU3ltYm9sVGFibGUoc3ltYm9sVGFibGUpCkBAIC0xNTUsNyArMTU5LDcgQEAgY29uc3QgQ29u
c3RhbnRVbmlvbiogVE91dHB1dEdMU0xCYXNlOjp3cgogICAgICAgICB7CiAgICAgICAgICAgICBz
d2l0Y2ggKHBDb25zdFVuaW9uLT5nZXRUeXBlKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBFYnRGbG9hdDogb3V0IDw8IHBDb25zdFVuaW9uLT5nZXRGQ29uc3QoKTsgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogb3V0IDw8IHN0ZDo6bWluKEZMVF9N
QVgsIHN0ZDo6bWF4KC1GTFRfTUFYLCBwQ29uc3RVbmlvbi0+Z2V0RkNvbnN0KCkpKTsgYnJlYWs7
CiAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6IG91dCA8PCBwQ29uc3RVbmlvbi0+Z2V0SUNv
bnN0KCk7IGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDogb3V0IDw8IHBDb25z
dFVuaW9uLT5nZXRCQ29uc3QoKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKQEAgLTIxOSw3ICsyMjMsMTEgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZp
c2l0QmluYXJ5KFZpc2l0IAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmICh2aXNp
dCA9PSBJblZpc2l0KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgb3V0
IDw8ICJbd2ViZ2xfaW50X2NsYW1wKCI7CisgICAgICAgICAgICAgICAgICAgIGlmIChtQ2xhbXBp
bmdTdHJhdGVneSA9PSBTSF9DTEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0IDw8ICJbaW50KGNsYW1wKGZsb2F0KCI7CisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIlt3ZWJnbF9p
bnRfY2xhbXAoIjsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpCiAgICAgICAgICAgICAg
ICAgewpAQCAtMjM2LDcgKzI0NCwxMiBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5h
cnkoVmlzaXQgCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IG1heFNpemUgPSBsZWZ0VHlwZS5nZXROb21pbmFsU2l6ZSgpIC0gMTsKICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgMCwgIiA8PCBtYXhTaXplIDw8
ICIpXSI7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1DbGFtcGluZ1N0cmF0ZWd5ID09IFNI
X0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklOU0lDKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgIiksIDAuMCwgZmxvYXQoIiA8PCBtYXhTaXplIDw8ICIpKSldIjsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCAwLCAi
IDw8IG1heFNpemUgPDwgIildIjsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKQEAgLTI0OSw3ICsyNjIsMTMg
QEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmluYXJ5KFZpc2l0IAogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIG91dCA8PCAiLiI7CiAgICAgICAgICAgICAgICAgLy8gVE9ETyhh
bG9rcCk6IEFTU0VSVAotICAgICAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZShub2RlLT5nZXRU
eXBlKCkuZ2V0RmllbGROYW1lKCkpOworICAgICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1l
ID0gbm9kZS0+Z2V0VHlwZSgpLmdldEZpZWxkTmFtZSgpOworCisgICAgICAgICAgICAgICAgY29u
c3QgVFR5cGUmIHN0cnVjdFR5cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3RUeXBlLmdldFR5
cGVOYW1lKCkpKQorICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgPSBoYXNoTmFtZShmaWVs
ZE5hbWUpOworCisgICAgICAgICAgICAgICAgb3V0IDw8IGZpZWxkTmFtZTsKICAgICAgICAgICAg
ICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRH
TFNMQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9PdXRwdXRHTFNMQmFzZS5oCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMTcsNiArMTcsNyBAQCBjbGFzcyBUT3V0cHV0R0xTTEJhc2UgOiBwdWJsaWMgVEludGVybVRy
CiB7CiBwdWJsaWM6CiAgICAgVE91dHB1dEdMU0xCYXNlKFRJbmZvU2lua0Jhc2UmIG9ialNpbmss
CisgICAgICAgICAgICAgICAgICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgY2xhbXBp
bmdTdHJhdGVneSwKICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVu
Y3Rpb24sCiAgICAgICAgICAgICAgICAgICAgIE5hbWVNYXAmIG5hbWVNYXAsCiAgICAgICAgICAg
ICAgICAgICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpOwpAQCAtNjIsOCArNjMsMTEgQEAg
cHJpdmF0ZToKIAogICAgIEZvckxvb3BVbnJvbGwgbUxvb3BVbnJvbGw7CiAKKyAgICBTaEFycmF5
SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IG1DbGFtcGluZ1N0cmF0ZWd5OworCiAgICAgLy8gbmFtZSBo
YXNoaW5nLgogICAgIFNoSGFzaEZ1bmN0aW9uNjQgbUhhc2hGdW5jdGlvbjsKKwogICAgIE5hbWVN
YXAmIG1OYW1lTWFwOwogCiAgICAgVFN5bWJvbFRhYmxlJiBtU3ltYm9sVGFibGU7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wu
Y3BwCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvT3V0cHV0SExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzLDYgKzEzLDcgQEAKICNp
bmNsdWRlICJjb21waWxlci9TZWFyY2hTeW1ib2wuaCIKICNpbmNsdWRlICJjb21waWxlci9EZXRl
Y3REaXNjb250aW51aXR5LmgiCiAKKyNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxzdGRp
by5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIApAQCAtOTgsNyArOTksNyBAQCBPdXRwdXRITFNM
Ojp+T3V0cHV0SExTTCgpCiAKIHZvaWQgT3V0cHV0SExTTDo6b3V0cHV0KCkKIHsKLSAgICBtQ29u
dGFpbnNMb29wRGlzY29udGludWl0eSA9IGNvbnRhaW5zTG9vcERpc2NvbnRpbnVpdHkobUNvbnRl
eHQudHJlZVJvb3QpOworICAgIG1Db250YWluc0xvb3BEaXNjb250aW51aXR5ID0gbUNvbnRleHQu
c2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIgJiYgY29udGFpbnNMb29wRGlzY29udGlu
dWl0eShtQ29udGV4dC50cmVlUm9vdCk7CiAKICAgICBtQ29udGV4dC50cmVlUm9vdC0+dHJhdmVy
c2UodGhpcyk7ICAgLy8gT3V0cHV0IHRoZSBib2R5IGZpcnN0IHRvIGRldGVybWluZSB3aGF0IGhh
cyB0byBnbyBpbiB0aGUgaGVhZGVyCiAgICAgaGVhZGVyKCk7CkBAIC0xNzc4LDcgKzE3NzksNyBA
QCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgCiB7CiAgICAgYm9vbCB3
YXNEaXNjb250aW51b3VzID0gbUluc2lkZURpc2NvbnRpbnVvdXNMb29wOwogCi0gICAgaWYgKCFt
SW5zaWRlRGlzY29udGludW91c0xvb3ApCisgICAgaWYgKG1Db250YWluc0xvb3BEaXNjb250aW51
aXR5ICYmICFtSW5zaWRlRGlzY29udGludW91c0xvb3ApCiAgICAgewogICAgICAgICBtSW5zaWRl
RGlzY29udGludW91c0xvb3AgPSBjb250YWluc0xvb3BEaXNjb250aW51aXR5KG5vZGUpOwogICAg
IH0KQEAgLTI1NjUsNyArMjU2Niw3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6
OndyaXRlQ28KICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChjb25zdFVuaW9uLT5nZXRU
eXBlKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6IG91dCA8
PCBjb25zdFVuaW9uLT5nZXRGQ29uc3QoKTsgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRWJ0
RmxvYXQ6IG91dCA8PCBzdGQ6Om1pbihGTFRfTUFYLCBzdGQ6Om1heCgtRkxUX01BWCwgY29uc3RV
bmlvbi0+Z2V0RkNvbnN0KCkpKTsgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiAg
IG91dCA8PCBjb25zdFVuaW9uLT5nZXRJQ29uc3QoKTsgYnJlYWs7CiAgICAgICAgICAgICAgIGNh
c2UgRWJ0Qm9vbDogIG91dCA8PCBjb25zdFVuaW9uLT5nZXRCQ29uc3QoKTsgYnJlYWs7CiAgICAg
ICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAJKHJldmlzaW9u
IDE0MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhl
bHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Myw3ICs0OTMsNyBAQCBib29sIFRQYXJzZUNv
bnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjCiAgICAgYm9vbCBvdmVyRnVsbCA9IGZhbHNlOwog
ICAgIGJvb2wgbWF0cml4SW5NYXRyaXggPSBmYWxzZTsKICAgICBib29sIGFycmF5QXJnID0gZmFs
c2U7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCk7ICsr
aSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgp
OyArK2kpIHsKICAgICAgICAgY29uc3QgVFBhcmFtZXRlciYgcGFyYW0gPSBmdW5jdGlvbi5nZXRQ
YXJhbShpKTsKICAgICAgICAgc2l6ZSArPSBwYXJhbS50eXBlLT5nZXRPYmplY3RTaXplKCk7CiAg
ICAgICAgIApAQCAtNTEyLDcgKzUxMiw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0
b3JFcnJvckNoZWMKICAgICBpZiAoY29uc3RUeXBlKQogICAgICAgICB0eXBlLT5zZXRRdWFsaWZp
ZXIoRXZxQ29uc3QpOwogCi0gICAgaWYgKHR5cGUtPmlzQXJyYXkoKSAmJiB0eXBlLT5nZXRBcnJh
eVNpemUoKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpIHsKKyAgICBpZiAodHlwZS0+aXNB
cnJheSgpICYmIHN0YXRpY19jYXN0PHNpemVfdD4odHlwZS0+Z2V0QXJyYXlTaXplKCkpICE9IGZ1
bmN0aW9uLmdldFBhcmFtQ291bnQoKSkgewogICAgICAgICBlcnJvcihsaW5lLCAiYXJyYXkgY29u
c3RydWN0b3IgbmVlZHMgb25lIGFyZ3VtZW50IHBlciBhcnJheSBlbGVtZW50IiwgImNvbnN0cnVj
dG9yIik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE1MDcsNyArMTUwNyw3IEBA
IGJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2gKIC8vCiAvLyBSZXR1cm5z
IDAgZm9yIHN1Y2Nlc3MuCiAvLwotaW50IFBhUGFyc2VTdHJpbmdzKGludCBjb3VudCwgY29uc3Qg
Y2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKK2ludCBQYVBhcnNlU3Ry
aW5ncyhzaXplX3QgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQg
bGVuZ3RoW10sCiAgICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dCkgewog
ICAgIGlmICgoY291bnQgPT0gMCkgfHwgKHN0cmluZyA9PSBOVUxMKSkKICAgICAgICAgcmV0dXJu
IDE7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxw
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
UGFyc2VIZWxwZXIuaAkocmV2aXNpb24gMTQzMDExKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsx
MzQsNyBAQCBzdHJ1Y3QgVFBhcnNlQ29udGV4dCB7CiAgICAgYm9vbCBzdHJ1Y3ROZXN0aW5nRXJy
b3JDaGVjayhUU291cmNlTG9jIGxpbmUsIGNvbnN0IFRUeXBlJiBmaWVsZFR5cGUpOwogfTsKIAot
aW50IFBhUGFyc2VTdHJpbmdzKGludCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10s
IGNvbnN0IGludCBsZW5ndGhbXSwKK2ludCBQYVBhcnNlU3RyaW5ncyhzaXplX3QgY291bnQsIGNv
bnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCiAgICAgICAgICAg
ICAgICAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dCk7CiAKICNlbmRpZiAvLyBfUEFSU0VSX0hF
TFBFUl9JTkNMVURFRF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9TaEhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9TaEhhbmRsZS5oCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTYsMTMg
KzE2LDEzIEBACiAKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAotI2luY2x1ZGUg
ImNvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0J1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvRXh0ZW5zaW9uQmVoYXZp
b3IuaCIKICNpbmNsdWRlICJjb21waWxlci9IYXNoTmFtZXMuaCIKICNpbmNsdWRlICJjb21waWxl
ci9JbmZvU2luay5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCiAjaW5jbHVk
ZSAiY29tcGlsZXIvVmFyaWFibGVJbmZvLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvY29tcGls
ZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmgiCiAKIGNsYXNzIExvbmdOYW1lTWFwOwogY2xhc3MgVENv
bXBpbGVyOwpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIEluaXQoY29uc3Qg
U2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpOwogICAgIGJvb2wgY29tcGlsZShjb25zdCBj
aGFyKiBjb25zdCBzaGFkZXJTdHJpbmdzW10sCi0gICAgICAgICAgICAgICAgIGNvbnN0IGludCBu
dW1TdHJpbmdzLAorICAgICAgICAgICAgICAgICBzaXplX3QgbnVtU3RyaW5ncywKICAgICAgICAg
ICAgICAgICAgaW50IGNvbXBpbGVPcHRpb25zKTsKIAogICAgIC8vIEdldCByZXN1bHRzIG9mIHRo
ZSBsYXN0IGNvbXBpbGF0aW9uLgpAQCAtMTA4LDYgKzEwOCw3IEBAIHByb3RlY3RlZDoKICAgICBj
b25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGdldEV4dGVuc2lvbkJlaGF2aW9yKCkgY29uc3Q7CiAK
ICAgICBjb25zdCBBcnJheUJvdW5kc0NsYW1wZXImIGdldEFycmF5Qm91bmRzQ2xhbXBlcigpIGNv
bnN0OworICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgZ2V0QXJyYXlJbmRleENsYW1w
aW5nU3RyYXRlZ3koKSBjb25zdDsKICAgICBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciYg
Z2V0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTEyMyw2
ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIFRFeHRlbnNpb25CZWhhdmlvciBleHRlbnNpb25CZWhh
dmlvcjsKIAogICAgIEFycmF5Qm91bmRzQ2xhbXBlciBhcnJheUJvdW5kc0NsYW1wZXI7CisgICAg
U2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBjbGFtcGluZ1N0cmF0ZWd5OwogICAgIEJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOwogCiAgICAgLy8gUmVz
dWx0cyBvZiBjb21waWxhdGlvbi4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9TaGFkZXJMYW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAJKHJldmlzaW9uIDE0MzAxMSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsMTggKzIxLDE4IEBACiAvLwogCiBzdGF0aWMgYm9vbCBjaGVja0FjdGl2
ZVVuaWZvcm1BbmRBdHRyaWJNYXhMZW5ndGhzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4cGVjdGVk
VmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBleHBlY3RlZFZhbHVlKQogewotICAgIGludCBhY3RpdmVVbmlmb3JtTGltaXQgPSAw
OworICAgIHNpemVfdCBhY3RpdmVVbmlmb3JtTGltaXQgPSAwOwogICAgIFNoR2V0SW5mbyhoYW5k
bGUsIFNIX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZhY3RpdmVVbmlmb3JtTGltaXQpOwot
ICAgIGludCBhY3RpdmVBdHRyaWJMaW1pdCA9IDA7CisgICAgc2l6ZV90IGFjdGl2ZUF0dHJpYkxp
bWl0ID0gMDsKICAgICBTaEdldEluZm8oaGFuZGxlLCBTSF9BQ1RJVkVfQVRUUklCVVRFX01BWF9M
RU5HVEgsICZhY3RpdmVBdHRyaWJMaW1pdCk7CiAgICAgcmV0dXJuIChleHBlY3RlZFZhbHVlID09
IGFjdGl2ZVVuaWZvcm1MaW1pdCAmJiBleHBlY3RlZFZhbHVlID09IGFjdGl2ZUF0dHJpYkxpbWl0
KTsKIH0KIAotc3RhdGljIGJvb2wgY2hlY2tNYXBwZWROYW1lTWF4TGVuZ3RoKGNvbnN0IFNoSGFu
ZGxlIGhhbmRsZSwgaW50IGV4cGVjdGVkVmFsdWUpCitzdGF0aWMgYm9vbCBjaGVja01hcHBlZE5h
bWVNYXhMZW5ndGgoY29uc3QgU2hIYW5kbGUgaGFuZGxlLCBzaXplX3QgZXhwZWN0ZWRWYWx1ZSkK
IHsKLSAgICBpbnQgbWFwcGVkTmFtZU1heExlbmd0aCA9IDA7CisgICAgc2l6ZV90IG1hcHBlZE5h
bWVNYXhMZW5ndGggPSAwOwogICAgIFNoR2V0SW5mbyhoYW5kbGUsIFNIX01BUFBFRF9OQU1FX01B
WF9MRU5HVEgsICZtYXBwZWROYW1lTWF4TGVuZ3RoKTsKICAgICByZXR1cm4gKGV4cGVjdGVkVmFs
dWUgPT0gbWFwcGVkTmFtZU1heExlbmd0aCk7CiB9CkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBi
b29sIGNoZWNrTWFwcGVkTmFtZU1heExlbmd0aChjb24KIHN0YXRpYyB2b2lkIGdldFZhcmlhYmxl
SW5mbyhTaFNoYWRlckluZm8gdmFyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTaEhhbmRsZSBoYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlu
ZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCogbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCogc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaERhdGFUeXBl
KiB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIG5hbWUsCkBAIC02Miwy
OCArNjIsMjEgQEAgc3RhdGljIHZvaWQgZ2V0VmFyaWFibGVJbmZvKFNoU2hhZGVySW5mbwogICAg
ICAgICByZXR1cm47CiAKICAgICBjb25zdCBUVmFyaWFibGVJbmZvJiB2YXJJbmZvID0gdmFyTGlz
dFtpbmRleF07Ci0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2hvcnRlbi02NC10
by0zMiIKLSNlbmRpZgogICAgIGlmIChsZW5ndGgpICpsZW5ndGggPSB2YXJJbmZvLm5hbWUuc2l6
ZSgpOwotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBv
cAotI2VuZGlmCiAgICAgKnNpemUgPSB2YXJJbmZvLnNpemU7CiAgICAgKnR5cGUgPSB2YXJJbmZv
LnR5cGU7CiAKICAgICAvLyBUaGlzIHNpemUgbXVzdCBtYXRjaCB0aGF0IHF1ZXJpZWQgYnkKICAg
ICAvLyBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGFuZCBTSF9BQ1RJVkVfQVRUUklCVVRF
X01BWF9MRU5HVEgKICAgICAvLyBpbiBTaEdldEluZm8sIGJlbG93LgotICAgIGludCBhY3RpdmVV
bmlmb3JtQW5kQXR0cmliTGVuZ3RoID0gMSArIE1BWF9TWU1CT0xfTkFNRV9MRU47CisgICAgc2l6
ZV90IGFjdGl2ZVVuaWZvcm1BbmRBdHRyaWJMZW5ndGggPSAxICsgTUFYX1NZTUJPTF9OQU1FX0xF
TjsKICAgICBBU1NFUlQoY2hlY2tBY3RpdmVVbmlmb3JtQW5kQXR0cmliTWF4TGVuZ3RocyhoYW5k
bGUsIGFjdGl2ZVVuaWZvcm1BbmRBdHRyaWJMZW5ndGgpKTsKICAgICBzdHJuY3B5KG5hbWUsIHZh
ckluZm8ubmFtZS5jX3N0cigpLCBhY3RpdmVVbmlmb3JtQW5kQXR0cmliTGVuZ3RoKTsKICAgICBu
YW1lW2FjdGl2ZVVuaWZvcm1BbmRBdHRyaWJMZW5ndGggLSAxXSA9IDA7CiAgICAgaWYgKG1hcHBl
ZE5hbWUpIHsKICAgICAgICAgLy8gVGhpcyBzaXplIG11c3QgbWF0Y2ggdGhhdCBxdWVyaWVkIGJ5
CiAgICAgICAgIC8vIFNIX01BUFBFRF9OQU1FX01BWF9MRU5HVEggaW4gU2hHZXRJbmZvLCBiZWxv
dy4KLSAgICAgICAgaW50IG1heE1hcHBlZE5hbWVMZW5ndGggPSAxICsgTUFYX1NZTUJPTF9OQU1F
X0xFTjsKKyAgICAgICAgc2l6ZV90IG1heE1hcHBlZE5hbWVMZW5ndGggPSAxICsgTUFYX1NZTUJP
TF9OQU1FX0xFTjsKICAgICAgICAgQVNTRVJUKGNoZWNrTWFwcGVkTmFtZU1heExlbmd0aChoYW5k
bGUsIG1heE1hcHBlZE5hbWVMZW5ndGgpKTsKICAgICAgICAgc3RybmNweShtYXBwZWROYW1lLCB2
YXJJbmZvLm1hcHBlZE5hbWUuY19zdHIoKSwgbWF4TWFwcGVkTmFtZUxlbmd0aCk7CiAgICAgICAg
IG1hcHBlZE5hbWVbbWF4TWFwcGVkTmFtZUxlbmd0aCAtIDFdID0gMDsKQEAgLTEzMiw5ICsxMjUs
MTIgQEAgdm9pZCBTaEluaXRCdWlsdEluUmVzb3VyY2VzKFNoQnVpbHRJblJlcwogICAgIHJlc291
cmNlcy0+T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzID0gMDsKICAgICByZXNvdXJjZXMtPk9FU19F
R0xfaW1hZ2VfZXh0ZXJuYWwgPSAwOwogICAgIHJlc291cmNlcy0+QVJCX3RleHR1cmVfcmVjdGFu
Z2xlID0gMDsKKyAgICByZXNvdXJjZXMtPkVYVF9kcmF3X2J1ZmZlcnMgPSAwOwogCiAgICAgLy8g
RGlzYWJsZSBuYW1lIGhhc2hpbmcgYnkgZGVmYXVsdC4KICAgICByZXNvdXJjZXMtPkhhc2hGdW5j
dGlvbiA9IE5VTEw7CisKKyAgICByZXNvdXJjZXMtPkFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5
ID0gU0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUM7CiB9CiAKIC8vCkBAIC0xODIsNyArMTc4
LDcgQEAgdm9pZCBTaERlc3RydWN0KFNoSGFuZGxlIGhhbmRsZSkKIGludCBTaENvbXBpbGUoCiAg
ICAgY29uc3QgU2hIYW5kbGUgaGFuZGxlLAogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNoYWRlclN0
cmluZ3NbXSwKLSAgICBjb25zdCBpbnQgbnVtU3RyaW5ncywKKyAgICBzaXplX3QgbnVtU3RyaW5n
cywKICAgICBpbnQgY29tcGlsZU9wdGlvbnMpCiB7CiAgICAgaWYgKCFJbml0VGhyZWFkKCkpCkBA
IC0yMDAsNyArMTk2LDcgQEAgaW50IFNoQ29tcGlsZSgKICAgICByZXR1cm4gc3VjY2VzcyA/IDEg
OiAwOwogfQogCi12b2lkIFNoR2V0SW5mbyhjb25zdCBTaEhhbmRsZSBoYW5kbGUsIFNoU2hhZGVy
SW5mbyBwbmFtZSwgaW50KiBwYXJhbXMpCit2b2lkIFNoR2V0SW5mbyhjb25zdCBTaEhhbmRsZSBo
YW5kbGUsIFNoU2hhZGVySW5mbyBwbmFtZSwgc2l6ZV90KiBwYXJhbXMpCiB7CiAgICAgaWYgKCFo
YW5kbGUgfHwgIXBhcmFtcykKICAgICAgICAgcmV0dXJuOwpAQCAtMjE4LDI3ICsyMTQsMTMgQEAg
dm9pZCBTaEdldEluZm8oY29uc3QgU2hIYW5kbGUgaGFuZGxlLCBTaAogICAgICAgICAqcGFyYW1z
ID0gY29tcGlsZXItPmdldEluZm9TaW5rKCkub2JqLnNpemUoKSArIDE7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU0hfQUNUSVZFX1VOSUZPUk1TOgotI2lmIGRlZmluZWQoX19jbGFuZ19fKQot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV3Nob3J0ZW4tNjQtdG8tMzIiCi0jZW5kaWYKICAgICAgICAgKnBhcmFtcyA9IGNv
bXBpbGVyLT5nZXRVbmlmb3JtcygpLnNpemUoKTsKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNlbmRpZgogICAgICAgICBicmVhazsKICAgICBj
YXNlIFNIX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEg6CiAgICAgICAgICpwYXJhbXMgPSAxICsg
IE1BWF9TWU1CT0xfTkFNRV9MRU47CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU0hfQUNUSVZF
X0FUVFJJQlVURVM6Ci0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2hvcnRlbi02
NC10by0zMiIKLSNlbmRpZgogICAgICAgICAqcGFyYW1zID0gY29tcGlsZXItPmdldEF0dHJpYnMo
KS5zaXplKCk7Ci0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcG9wCi0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTSF9BQ1RJVkVfQVRUUklC
VVRFX01BWF9MRU5HVEg6CiAgICAgICAgICpwYXJhbXMgPSAxICsgTUFYX1NZTUJPTF9OQU1FX0xF
TjsKQEAgLTI2MiwxNCArMjQ0LDcgQEAgdm9pZCBTaEdldEluZm8oY29uc3QgU2hIYW5kbGUgaGFu
ZGxlLCBTaAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU0hfSEFTSEVEX05B
TUVTX0NPVU5UOgotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Nob3J0ZW4tNjQt
dG8tMzIiCi0jZW5kaWYKICAgICAgICAgKnBhcmFtcyA9IGNvbXBpbGVyLT5nZXROYW1lTWFwKCku
c2l6ZSgpOwotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAotI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
CiAgICAgfQpAQCAtMzA5LDcgKzI4NCw3IEBAIHZvaWQgU2hHZXRPYmplY3RDb2RlKGNvbnN0IFNo
SGFuZGxlIGhhbmQKIAogdm9pZCBTaEdldEFjdGl2ZUF0dHJpYihjb25zdCBTaEhhbmRsZSBoYW5k
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgaW50KiBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgIFNoRGF0YVR5cGUqIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIG5hbWUs
CkBAIC0zMjEsNyArMjk2LDcgQEAgdm9pZCBTaEdldEFjdGl2ZUF0dHJpYihjb25zdCBTaEhhbmRs
ZSBoYQogCiB2b2lkIFNoR2V0QWN0aXZlVW5pZm9ybShjb25zdCBTaEhhbmRsZSBoYW5kbGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpbnQqIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogbGVuZ3RoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBzaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgU2hEYXRhVHlwZSogdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIG5hbWUs
CkBAIC0zNTIsMjQgKzMyNywyNCBAQCB2b2lkIFNoR2V0TmFtZUhhc2hpbmdFbnRyeShjb25zdCBT
aEhhbmRsCiAgICAgICAgICsraXQ7CiAKICAgICBzaXplX3QgbGVuID0gaXQtPmZpcnN0Lmxlbmd0
aCgpICsgMTsKLSAgICBpbnQgbWF4X2xlbiA9IDA7CisgICAgc2l6ZV90IG1heF9sZW4gPSAwOwog
ICAgIFNoR2V0SW5mbyhoYW5kbGUsIFNIX05BTUVfTUFYX0xFTkdUSCwgJm1heF9sZW4pOwotICAg
IGlmIChzdGF0aWNfY2FzdDxpbnQ+KGxlbikgPiBtYXhfbGVuKSB7CisgICAgaWYgKGxlbiA+IG1h
eF9sZW4pIHsKICAgICAgICAgQVNTRVJUKGZhbHNlKTsKICAgICAgICAgbGVuID0gbWF4X2xlbjsK
ICAgICB9CiAgICAgc3RybmNweShuYW1lLCBpdC0+Zmlyc3QuY19zdHIoKSwgbGVuKTsKICAgICAv
LyBUbyBiZSBvbiB0aGUgc2FmZSBzaWRlIGluIGNhc2UgdGhlIHNvdXJjZSBpcyBsb25nZXIgdGhh
biBleHBlY3RlZC4KLSAgICBuYW1lW2xlbl0gPSAnXDAnOworICAgIG5hbWVbbGVuIC0gMV0gPSAn
XDAnOwogCiAgICAgbGVuID0gaXQtPnNlY29uZC5sZW5ndGgoKSArIDE7CiAgICAgbWF4X2xlbiA9
IDA7CiAgICAgU2hHZXRJbmZvKGhhbmRsZSwgU0hfSEFTSEVEX05BTUVfTUFYX0xFTkdUSCwgJm1h
eF9sZW4pOwotICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGxlbikgPiBtYXhfbGVuKSB7CisgICAg
aWYgKGxlbiA+IG1heF9sZW4pIHsKICAgICAgICAgQVNTRVJUKGZhbHNlKTsKICAgICAgICAgbGVu
ID0gbWF4X2xlbjsKICAgICB9CiAgICAgc3RybmNweShoYXNoZWROYW1lLCBpdC0+c2Vjb25kLmNf
c3RyKCksIGxlbik7CiAgICAgLy8gVG8gYmUgb24gdGhlIHNhZmUgc2lkZSBpbiBjYXNlIHRoZSBz
b3VyY2UgaXMgbG9uZ2VyIHRoYW4gZXhwZWN0ZWQuCi0gICAgaGFzaGVkTmFtZVtsZW5dID0gJ1ww
JzsKKyAgICBoYXNoZWROYW1lW2xlbiAtIDFdID0gJ1wwJzsKIH0KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCShyZXZpc2lv
biAxNDMwMTEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9s
VGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDggKzE2OSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldERlZmluZWQoKSB7IGRlZmluZWQgPSB0cnVlOyB9CiAgICAgYm9vbCBpc0RlZmluZWQo
KSB7IHJldHVybiBkZWZpbmVkOyB9CiAKLSAgICBpbnQgZ2V0UGFyYW1Db3VudCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4ocGFyYW1ldGVycy5zaXplKCkpOyB9ICAKLSAgICBjb25z
dCBUUGFyYW1ldGVyJiBnZXRQYXJhbShpbnQgaSkgY29uc3QgeyByZXR1cm4gcGFyYW1ldGVyc1tp
XTsgfQorICAgIHNpemVfdCBnZXRQYXJhbUNvdW50KCkgY29uc3QgeyByZXR1cm4gcGFyYW1ldGVy
cy5zaXplKCk7IH0gIAorICAgIGNvbnN0IFRQYXJhbWV0ZXImIGdldFBhcmFtKHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBwYXJhbWV0ZXJzW2ldOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChU
SW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKICAgICBURnVuY3Rpb24oY29uc3QgVEZ1bmN0aW9u
JiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOwpAQCAtMzIzLDEwICszMjMsMTYgQEAgcHVibGlj
OgogICAgIHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKICAgICB2b2lkIGNv
cHlUYWJsZShjb25zdCBUU3ltYm9sVGFibGUmIGNvcHlPZik7CiAKLSAgICB2b2lkIHNldERlZmF1
bHRQcmVjaXNpb24oIFRCYXNpY1R5cGUgdHlwZSwgVFByZWNpc2lvbiBwcmVjICl7Ci0gICAgICAg
IGlmKCB0eXBlICE9IEVidEZsb2F0ICYmIHR5cGUgIT0gRWJ0SW50ICkgcmV0dXJuOyAvLyBPbmx5
IHNldCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgaW50L2Zsb2F0CisgICAgYm9vbCBzZXREZWZhdWx0
UHJlY2lzaW9uKCBjb25zdCBUUHVibGljVHlwZSYgdHlwZSwgVFByZWNpc2lvbiBwcmVjICl7Cisg
ICAgICAgIGlmIChJc1NhbXBsZXIodHlwZS50eXBlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OyAgLy8gU2tpcCBzYW1wbGVyIHR5cGVzIGZvciB0aGUgdGltZSBiZWluZworICAgICAgICBpZiAo
dHlwZS50eXBlICE9IEVidEZsb2F0ICYmIHR5cGUudHlwZSAhPSBFYnRJbnQpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7IC8vIE9ubHkgc2V0IGRlZmF1bHQgcHJlY2lzaW9uIGZvciBpbnQvZmxv
YXQKKyAgICAgICAgaWYgKHR5cGUuc2l6ZSAhPSAxIHx8IHR5cGUubWF0cml4IHx8IHR5cGUuYXJy
YXkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vdCBhbGxvd2VkIHRvIHNldCBmb3Ig
YWdncmVnYXRlIHR5cGVzCiAgICAgICAgIGludCBpbmRleE9mTGFzdEVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHByZWNpc2lvblN0YWNrLnNpemUoKSkgLSAxOwotICAgICAgICBwcmVjaXNpb25T
dGFja1tpbmRleE9mTGFzdEVsZW1lbnRdW3R5cGVdID0gcHJlYzsgLy8gVXNlcyBtYXAgb3BlcmF0
b3IgW10sIG92ZXJ3cml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgICAgcHJlY2lzaW9uU3Rh
Y2tbaW5kZXhPZkxhc3RFbGVtZW50XVt0eXBlLnR5cGVdID0gcHJlYzsgLy8gVXNlcyBtYXAgb3Bl
cmF0b3IgW10sIG92ZXJ3cml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCiAgICAgLy8gU2VhcmNoZXMgZG93biB0aGUgcHJlY2lzaW9uU3RhY2sgZm9y
IGEgcHJlY2lzaW9uIHF1YWxpZmllciBmb3IgdGhlIHNwZWNpZmllZCBUQmFzaWNUeXBlCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckVTU0wuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFu
c2xhdG9yRVNTTC5jcHAJKHJldmlzaW9uIDE0MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9yRVNTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAgdm9pZCBUcmFuc2xhdG9yRVNTTDo6dHJhbnNsYXRlKFRJbnRlcm1ObwogICAg
IGdldEFycmF5Qm91bmRzQ2xhbXBlcigpLk91dHB1dENsYW1waW5nRnVuY3Rpb25EZWZpbml0aW9u
KHNpbmspOwogCiAgICAgLy8gV3JpdGUgdHJhbnNsYXRlZCBzaGFkZXIuCi0gICAgVE91dHB1dEVT
U0wgb3V0cHV0RVNTTChzaW5rLCBnZXRIYXNoRnVuY3Rpb24oKSwgZ2V0TmFtZU1hcCgpLCBnZXRT
eW1ib2xUYWJsZSgpKTsKKyAgICBUT3V0cHV0RVNTTCBvdXRwdXRFU1NMKHNpbmssIGdldEFycmF5
SW5kZXhDbGFtcGluZ1N0cmF0ZWd5KCksIGdldEhhc2hGdW5jdGlvbigpLCBnZXROYW1lTWFwKCks
IGdldFN5bWJvbFRhYmxlKCkpOwogICAgIHJvb3QtPnRyYXZlcnNlKCZvdXRwdXRFU1NMKTsKIH0K
IApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JH
TFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvVHJhbnNsYXRvckdMU0wuY3BwCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckdMU0wuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw2ICszOSw2IEBAIHZvaWQgVHJhbnNsYXRvckdMU0w6OnRyYW5zbGF0ZShUSW50ZXJt
Tm8KICAgICBnZXRBcnJheUJvdW5kc0NsYW1wZXIoKS5PdXRwdXRDbGFtcGluZ0Z1bmN0aW9uRGVm
aW5pdGlvbihzaW5rKTsKIAogICAgIC8vIFdyaXRlIHRyYW5zbGF0ZWQgc2hhZGVyLgotICAgIFRP
dXRwdXRHTFNMIG91dHB1dEdMU0woc2luaywgZ2V0SGFzaEZ1bmN0aW9uKCksIGdldE5hbWVNYXAo
KSwgZ2V0U3ltYm9sVGFibGUoKSk7CisgICAgVE91dHB1dEdMU0wgb3V0cHV0R0xTTChzaW5rLCBn
ZXRBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSgpLCBnZXRIYXNoRnVuY3Rpb24oKSwgZ2V0TmFt
ZU1hcCgpLCBnZXRTeW1ib2xUYWJsZSgpKTsKICAgICByb290LT50cmF2ZXJzZSgmb3V0cHV0R0xT
TCk7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFsaWRh
dGVMaW1pdGF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuY3BwCShyZXZpc2lvbiAxNDMwMTEpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMSwyMCArNDIxLDEzIEBAIGJvb2wgVmFsaWRhdGVM
aW1pdGF0aW9uczo6dmFsaWRhdGVGdW5jdGkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAv
LyBMaXN0IG9mIHBhcmFtIGluZGljZXMgZm9yIHdoaWNoIGxvb3AgaW5kaWNlcyBhcmUgdXNlZCBh
cyBhcmd1bWVudC4KLSAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPGludD4gUGFyYW1JbmRleDsKKyAg
ICB0eXBlZGVmIHN0ZDo6dmVjdG9yPHNpemVfdD4gUGFyYW1JbmRleDsKICAgICBQYXJhbUluZGV4
IHBJbmRleDsKICAgICBUSW50ZXJtU2VxdWVuY2UmIHBhcmFtcyA9IG5vZGUtPmdldFNlcXVlbmNl
KCk7CiAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6OnNpemVfdHlwZSBpID0gMDsgaSA8IHBhcmFt
cy5zaXplKCk7ICsraSkgewogICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBwYXJhbXNb
aV0tPmdldEFzU3ltYm9sTm9kZSgpOwogICAgICAgICBpZiAoc3ltYm9sICYmIGlzTG9vcEluZGV4
KHN5bWJvbCkpCi0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2hvcnRlbi02NC10
by0zMiIKLSNlbmRpZgogICAgICAgICAgICAgcEluZGV4LnB1c2hfYmFjayhpKTsKLSNpZiBkZWZp
bmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNlbmRpZgogICAg
IH0KICAgICAvLyBJZiBub25lIG9mIHRoZSBsb29wIGluZGljZXMgYXJlIHVzZWQgYXMgYXJndW1l
bnRzLAogICAgIC8vIHRoZXJlIGlzIG5vdGhpbmcgdG8gY2hlY2suCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVQYWNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZVBhY2tlci5j
cHAJKHJldmlzaW9uIDE0MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9WYXJpYWJsZVBhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAg
aW50IFZhcmlhYmxlUGFja2VyOjpHZXROdW1Sb3dzKFNoRGF0YVR5cAogICAgICAgICBjYXNlIFNI
X0ZMT0FUX01BVDM6CiAgICAgICAgICAgICByZXR1cm4gMzsKICAgICAgICAgY2FzZSBTSF9GTE9B
VF9NQVQyOgotICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICByZXR1cm4gMjsKICAg
ICAgICAgY2FzZSBTSF9GTE9BVF9WRUM0OgogICAgICAgICBjYXNlIFNIX0lOVF9WRUM0OgogICAg
ICAgICBjYXNlIFNIX0JPT0xfVkVDNDoKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9nbHNsYW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcuaAkocmV2aXNpb24gMTQzMDExKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
OCw3ICs4LDcgQEAgc3RydWN0IFRQYXJzZUNvbnRleHQ7CiBleHRlcm4gaW50IGdsc2xhbmdfaW5p
dGlhbGl6ZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKIGV4dGVybiBpbnQgZ2xzbGFuZ19maW5h
bGl6ZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKIAotZXh0ZXJuIGludCBnbHNsYW5nX3NjYW4o
aW50IGNvdW50LAorZXh0ZXJuIGludCBnbHNsYW5nX3NjYW4oc2l6ZV90IGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbnQgbGVuZ3RoW10sCiAgICAgICAgICAgICAgICAgICAgICAg
ICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9nbHNsYW5nLmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubAkocmV2aXNpb24gMTQzMDExKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubAkod29ya2luZyBjb3B5KQpA
QCAtMjMsOSArMjMsNiBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgTEVYRVIgKGdsc2xh
CiAvLyBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfcGFyc2VyLnNoLiBE
TyBOT1QgRURJVCEKIAogLy8gSWdub3JlIGVycm9ycyBpbiBhdXRvLWdlbmVyYXRlZCBjb2RlLgot
I2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1Xc2hvcnRlbi02NC10by0zMiIKLSNlbmRpZgogI2lmIGRlZmluZWQoX19HTlVDX18pCiAjcHJh
Z21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgogI3ByYWdtYSBH
Q0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC12YXJpYWJsZSIKQEAgLTU0LDcgKzUxLDcg
QEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIExFWEVSIChnbHNsYQogI2RlZmluZSBZWV9J
TlBVVChidWYsIHJlc3VsdCwgbWF4X3NpemUpIFwKICAgICByZXN1bHQgPSBzdHJpbmdfaW5wdXQo
YnVmLCBtYXhfc2l6ZSwgeXlzY2FubmVyKTsKIAotc3RhdGljIGludCBzdHJpbmdfaW5wdXQoY2hh
ciogYnVmLCBpbnQgbWF4X3NpemUsIHl5c2Nhbl90IHl5c2Nhbm5lcik7CitzdGF0aWMgeXlfc2l6
ZV90IHN0cmluZ19pbnB1dChjaGFyKiBidWYsIHl5X3NpemVfdCBtYXhfc2l6ZSwgeXlzY2FuX3Qg
eXlzY2FubmVyKTsKIHN0YXRpYyBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIpOwog
c3RhdGljIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcik7CiAlfQpAQCAtMjA2
LDEwICsyMDMsMTAgQEAgTyAgICAgICAgICAgWzAtN10KICAgIHJldHVybiBjaGVja190eXBlKHl5
c2Nhbm5lcik7CiB9CiAKLTBbeFhde0h9KyAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0cnRv
bCh5eXRleHQsIDAsIDApOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Ci0we099KyAgICAgICAgICAg
ICB7IHl5bHZhbC0+bGV4LmkgPSBzdHJ0b2woeXl0ZXh0LCAwLCAwKTsgcmV0dXJuKElOVENPTlNU
QU5UKTsgfQorMFt4WF17SH0rICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8
aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KKzB7T30r
ICAgICAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5
dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9CiAwe0R9KyAgICAgICAgICAgICB7
IGNvbnRleHQtPmVycm9yKHl5bGluZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0
KTsgY29udGV4dC0+cmVjb3ZlcigpOyByZXR1cm4gMDt9Ci17RH0rICAgICAgICAgICAgICB7IHl5
bHZhbC0+bGV4LmkgPSBzdHJ0b2woeXl0ZXh0LCAwLCAwKTsgcmV0dXJuKElOVENPTlNUQU5UKTsg
fQore0R9KyAgICAgICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50Pihz
dHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KIAoge0R9K3tFfSAg
ICAgICAgICAgeyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5
dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KIHtEfSsiLiJ7RH0qKHtFfSk/IHsgeXls
dmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJu
KEZMT0FUQ09OU1RBTlQpOyB9CkBAIC0yNzUsMTEgKzI3MiwxMSBAQCBPICAgICAgICAgICBbMC03
XQogCiAlJQogCi1pbnQgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgaW50IG1heF9zaXplLCB5eXNj
YW5fdCB5eXNjYW5uZXIpIHsKK3l5X3NpemVfdCBzdHJpbmdfaW5wdXQoY2hhciogYnVmLCB5eV9z
aXplX3QgbWF4X3NpemUsIHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHBwOjpUb2tlbiB0b2tl
bjsKICAgICB5eWdldF9leHRyYSh5eXNjYW5uZXIpLT5wcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7
Ci0gICAgaW50IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2Vu
LnRleHQuc2l6ZSgpOwotICAgIGlmICgobGVuID4gMCkgJiYgKGxlbiA8IG1heF9zaXplKSkKKyAg
ICB5eV9zaXplX3QgbGVuID0gdG9rZW4udHlwZSA9PSBwcDo6VG9rZW46OkxBU1QgPyAwIDogdG9r
ZW4udGV4dC5zaXplKCk7CisgICAgaWYgKGxlbiA8IG1heF9zaXplKQogICAgICAgICBtZW1jcHko
YnVmLCB0b2tlbi50ZXh0LmNfc3RyKCksIGxlbik7CiAgICAgeXlzZXRfbGluZW5vKEVuY29kZVNv
dXJjZUxvYyh0b2tlbi5sb2NhdGlvbi5maWxlLCB0b2tlbi5sb2NhdGlvbi5saW5lKSwgeXlzY2Fu
bmVyKTsKIApAQCAtMzQ0LDcgKzM0MSw3IEBAIGludCBnbHNsYW5nX2ZpbmFsaXplKFRQYXJzZUNv
bnRleHQqIGNvbnQKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGdsc2xhbmdfc2NhbihpbnQgY291
bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCitpbnQg
Z2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNv
bnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4dCogY29udGV4
dCkgewogICAgIHl5cmVzdGFydChOVUxMLCBjb250ZXh0LT5zY2FubmVyKTsKICAgICB5eXNldF9s
aW5lbm8oRW5jb2RlU291cmNlTG9jKDAsIDEpLCBjb250ZXh0LT5zY2FubmVyKTsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcueQkocmV2aXNp
b24gMTQzMDExKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xh
bmcueQkod29ya2luZyBjb3B5KQpAQCAtNTI0LDcgKzUyNCw3IEBAIGZ1bmN0aW9uX2NhbGwKICAg
ICAgICAgICAgICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldE5hbWUoZm5DYW5kaWRh
dGUtPmdldE1hbmdsZWROYW1lKCkpOwogCiAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbDsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmbkNhbmRpZGF0
ZS0+Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmbkNhbmRpZGF0ZS0+Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHF1YWwgPSBmbkNhbmRpZGF0ZS0+Z2V0UGFyYW0oaSkudHlwZS0+
Z2V0UXVhbGlmaWVyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocXVhbCA9PSBFdnFP
dXQgfHwgcXVhbCA9PSBFdnFJbk91dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCQkLT5nZXRMaW5lKCksICJhc3NpZ24iLCAkJC0+
Z2V0QXNBZ2dyZWdhdGUoKS0+Z2V0U2VxdWVuY2UoKVtpXS0+Z2V0QXNUeXBlZCgpKSkgewpAQCAt
OTY1LDcgKzk2NSw3IEBAIGRlY2xhcmF0aW9uCiAgICAgICAgIHByb3RvdHlwZS0+c2V0VHlwZShm
dW5jdGlvbi5nZXRSZXR1cm5UeXBlKCkpOwogICAgICAgICBwcm90b3R5cGUtPnNldE5hbWUoZnVu
Y3Rpb24uZ2V0TmFtZSgpKTsKICAgICAgICAgCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
ZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpOyBpKyspCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGNvbnN0IFRQYXJhbWV0ZXIgJnBhcmFtID0gZnVuY3Rpb24uZ2V0UGFyYW0oaSk7CiAgICAg
ICAgICAgICBpZiAocGFyYW0ubmFtZSAhPSAwKQpAQCAtOTkxLDcgKzk5MSwxMCBAQCBkZWNsYXJh
dGlvbgogICAgICAgICAkJCA9ICQxLmludGVybUFnZ3JlZ2F0ZTsKICAgICB9CiAgICAgfCBQUkVD
SVNJT04gcHJlY2lzaW9uX3F1YWxpZmllciB0eXBlX3NwZWNpZmllcl9ub19wcmVjIFNFTUlDT0xP
TiB7Ci0gICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oICQz
LnR5cGUsICQyICk7CisgICAgICAgIGlmICghY29udGV4dC0+c3ltYm9sVGFibGUuc2V0RGVmYXVs
dFByZWNpc2lvbiggJDMsICQyICkpIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxp
bmUsICJpbGxlZ2FsIHR5cGUgYXJndW1lbnQgZm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmll
ciIsIGdldEJhc2ljU3RyaW5nKCQzLnR5cGUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKKyAgICAgICAgfQogICAgICAgICAkJCA9IDA7CiAgICAgfQogICAgIDsKQEAgLTEwMTIs
NyArMTAxNSw3IEBAIGZ1bmN0aW9uX3Byb3RvdHlwZQogICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCQyLmxpbmUsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUg
cmV0dXJuIHR5cGUiLCAkMS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsK
KyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3Vu
dCgpOyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0oaSkudHlw
ZS0+Z2V0UXVhbGlmaWVyKCkgIT0gJDEtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllcigp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJvdmVybG9h
ZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAk
MS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOwogICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CkBAIC0yMDgyLDcgKzIwODUsNyBAQCBmdW5jdGlv
bl9kZWZpbml0aW9uCiAgICAgICAgIC8vIGtub3dzIHdoZXJlIHRvIGZpbmQgcGFyYW1ldGVycy4K
ICAgICAgICAgLy8KICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSogcGFyYW1Ob2RlcyA9IG5ldyBU
SW50ZXJtQWdncmVnYXRlOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZ1bmN0aW9uLT5n
ZXRQYXJhbUNvdW50KCk7IGkrKykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1
bmN0aW9uLT5nZXRQYXJhbUNvdW50KCk7IGkrKykgewogICAgICAgICAgICAgY29uc3QgVFBhcmFt
ZXRlciYgcGFyYW0gPSBmdW5jdGlvbi0+Z2V0UGFyYW0oaSk7CiAgICAgICAgICAgICBpZiAocGFy
YW0ubmFtZSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5l
dyBUVmFyaWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCShyZXZp
c2lvbiAxNDMwMTEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xz
bGFuZ19sZXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDkgKzgsNiBAQAogLy8gVGhpcyBmaWxl
IGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCiAK
IC8vIElnbm9yZSBlcnJvcnMgaW4gYXV0by1nZW5lcmF0ZWQgY29kZS4KLSNpZiBkZWZpbmVkKF9f
Y2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Nob3J0ZW4tNjQt
dG8tMzIiCi0jZW5kaWYKICNpZiBkZWZpbmVkKF9fR05VQ19fKQogI3ByYWdtYSBHQ0MgZGlhZ25v
c3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKICNwcmFnbWEgR0NDIGRpYWdub3N0aWMg
aWdub3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCkBAIC04MjQsNyArODIxLDcgQEAgV0hJQ0ggR0VO
RVJBVEVTIFRIRSBHTFNMIEVTIExFWEVSIChnbHNsYQogI2RlZmluZSBZWV9JTlBVVChidWYsIHJl
c3VsdCwgbWF4X3NpemUpIFwKICAgICByZXN1bHQgPSBzdHJpbmdfaW5wdXQoYnVmLCBtYXhfc2l6
ZSwgeXlzY2FubmVyKTsKIAotc3RhdGljIGludCBzdHJpbmdfaW5wdXQoY2hhciogYnVmLCBpbnQg
bWF4X3NpemUsIHl5c2Nhbl90IHl5c2Nhbm5lcik7CitzdGF0aWMgeXlfc2l6ZV90IHN0cmluZ19p
bnB1dChjaGFyKiBidWYsIHl5X3NpemVfdCBtYXhfc2l6ZSwgeXlzY2FuX3QgeXlzY2FubmVyKTsK
IHN0YXRpYyBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIGludCBy
ZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcik7CiAKQEAgLTE1NDYsMTEgKzE1NDMsMTEg
QEAgWVlfUlVMRV9TRVRVUAogCVlZX0JSRUFLCiBjYXNlIDk5OgogWVlfUlVMRV9TRVRVUAoteyB5
eWx2YWwtPmxleC5pID0gc3RydG9sKHl5dGV4dCwgMCwgMCk7IHJldHVybihJTlRDT05TVEFOVCk7
IH0KK3sgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwg
MCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAwOgogWVlfUlVM
RV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RydG9sKHl5dGV4dCwgMCwgMCk7IHJldHVybihJ
TlRDT05TVEFOVCk7IH0KK3sgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9s
KHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
MTAxOgogWVlfUlVMRV9TRVRVUApAQCAtMTU1OCw3ICsxNTU1LDcgQEAgWVlfUlVMRV9TRVRVUAog
CVlZX0JSRUFLCiBjYXNlIDEwMjoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguaSA9IHN0
cnRvbCh5eXRleHQsIDAsIDApOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Cit7IHl5bHZhbC0+bGV4
LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENP
TlNUQU5UKTsgfQogCVlZX0JSRUFLCiBjYXNlIDEwMzoKIFlZX1JVTEVfU0VUVVAKQEAgLTI5NTEs
MTEgKzI5NDgsMTEgQEAgdm9pZCB5eWZyZWUgKHZvaWQgKiBwdHIgLCB5eXNjYW5fdCB5eXNjYQog
CiAjZGVmaW5lIFlZVEFCTEVTX05BTUUgInl5dGFibGVzIgogCi1pbnQgc3RyaW5nX2lucHV0KGNo
YXIqIGJ1ZiwgaW50IG1heF9zaXplLCB5eXNjYW5fdCB5eXNjYW5uZXIpIHsKK3l5X3NpemVfdCBz
dHJpbmdfaW5wdXQoY2hhciogYnVmLCB5eV9zaXplX3QgbWF4X3NpemUsIHl5c2Nhbl90IHl5c2Nh
bm5lcikgewogICAgIHBwOjpUb2tlbiB0b2tlbjsKICAgICB5eWdldF9leHRyYSh5eXNjYW5uZXIp
LT5wcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgaW50IGxlbiA9IHRva2VuLnR5cGUgPT0g
cHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2VuLnRleHQuc2l6ZSgpOwotICAgIGlmICgobGVuID4g
MCkgJiYgKGxlbiA8IG1heF9zaXplKSkKKyAgICB5eV9zaXplX3QgbGVuID0gdG9rZW4udHlwZSA9
PSBwcDo6VG9rZW46OkxBU1QgPyAwIDogdG9rZW4udGV4dC5zaXplKCk7CisgICAgaWYgKGxlbiA8
IG1heF9zaXplKQogICAgICAgICBtZW1jcHkoYnVmLCB0b2tlbi50ZXh0LmNfc3RyKCksIGxlbik7
CiAgICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxvYyh0b2tlbi5sb2NhdGlvbi5maWxlLCB0
b2tlbi5sb2NhdGlvbi5saW5lKSx5eXNjYW5uZXIpOwogCkBAIC0zMDIwLDcgKzMwMTcsNyBAQCBp
bnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VDb250ZXh0KiBjb250CiAgICAgcmV0dXJuIDA7CiB9
CiAKLWludCBnbHNsYW5nX3NjYW4oaW50IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdb
XSwgY29uc3QgaW50IGxlbmd0aFtdLAoraW50IGdsc2xhbmdfc2NhbihzaXplX3QgY291bnQsIGNv
bnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCiAgICAgICAgICAg
ICAgICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICB5eXJlc3RhcnQoTlVMTCxjb250
ZXh0LT5zY2FubmVyKTsKICAgICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9jKDAsIDEpLGNv
bnRleHQtPnNjYW5uZXIpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2dsc2xhbmdfdGFiLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MzQsNyArNDM0LDcgQEAgdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDE2
OwogI2RlZmluZSBZWVNJWkVfTUFYSU1VTSAoKFlZU0laRV9UKSAtMSkKIAogI2lmbmRlZiBZWV8K
LSMgaWYgWVlFTkFCTEVfTkxTCisjIGlmIGRlZmluZWQgWVlFTkFCTEVfTkxTICYmIFlZRU5BQkxF
X05MUwogIyAgaWYgRU5BQkxFX05MUwogIyAgIGluY2x1ZGUgPGxpYmludGwuaD4gLyogSU5GUklO
R0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwogIyAgIGRlZmluZSBZWV8obXNnaWQpIGRnZXR0ZXh0
ICgiYmlzb24tcnVudGltZSIsIG1zZ2lkKQpAQCAtNzU4LDIwICs3NTgsMjAgQEAgc3RhdGljIGNv
bnN0IHl5dHlwZV91aW50MTYgeXlybGluZVtdID0KICAgICAgNzYyLCAgIDc3MywgICA3NzcsICAg
Nzc4LCAgIDc4OCwgICA3OTgsICAgODA4LCAgIDgyMSwgICA4MjIsICAgODMyLAogICAgICA4NDUs
ICAgODQ5LCAgIDg1MywgICA4NTcsICAgODU4LCAgIDg3MSwgICA4NzIsICAgODg1LCAgIDg4Niwg
ICA4OTksCiAgICAgIDkwMCwgICA5MTcsICAgOTE4LCAgIDkzMSwgICA5MzIsICAgOTMzLCAgIDkz
NCwgICA5MzUsICAgOTM5LCAgIDk0MiwKLSAgICAgOTUzLCAgIDk2MSwgICA5ODgsICAgOTkzLCAg
MTAwMCwgIDEwMzgsICAxMDQxLCAgMTA0OCwgIDEwNTYsICAxMDc3LAotICAgIDEwOTgsICAxMTA5
LCAgMTEzOCwgIDExNDMsICAxMTUzLCAgMTE1OCwgIDExNjgsICAxMTcxLCAgMTE3NCwgIDExNzcs
Ci0gICAgMTE4MywgIDExOTAsICAxMTkzLCAgMTIxNSwgIDEyMzMsICAxMjU3LCAgMTI4MCwgIDEy
ODQsICAxMzAyLCAgMTMxMCwKLSAgICAxMzQyLCAgMTM2MiwgIDE0NTEsICAxNDYwLCAgMTQ4Mywg
IDE0ODYsICAxNDkyLCAgMTUwMCwgIDE1MDgsICAxNTE2LAotICAgIDE1MjYsICAxNTMzLCAgMTUz
NiwgIDE1MzksICAxNTQ1LCAgMTU0OCwgIDE1NjMsICAxNTY3LCAgMTU3MSwgIDE1NzUsCi0gICAg
MTU4NCwgIDE1ODksICAxNTk0LCAgMTU5OSwgIDE2MDQsICAxNjA5LCAgMTYxNCwgIDE2MTksICAx
NjI0LCAgMTYyOSwKLSAgICAxNjM1LCAgMTY0MSwgIDE2NDcsICAxNjUyLCAgMTY1NywgIDE2NjYs
ICAxNjc1LCAgMTY4MCwgIDE2OTMsICAxNjkzLAotICAgIDE3MDcsICAxNzA3LCAgMTcxNiwgIDE3
MTksICAxNzM0LCAgMTc3MCwgIDE3NzQsICAxNzgwLCAgMTc4OCwgIDE4MDQsCi0gICAgMTgwOCwg
IDE4MTIsICAxODEzLCAgMTgxOSwgIDE4MjAsICAxODIxLCAgMTgyMiwgIDE4MjMsICAxODI3LCAg
MTgyOCwKLSAgICAxODI4LCAgMTgyOCwgIDE4MzgsICAxODM5LCAgMTg0MywgIDE4NDMsICAxODQ0
LCAgMTg0NCwgIDE4NDksICAxODUyLAotICAgIDE4NjIsICAxODY1LCAgMTg3MSwgIDE4NzIsICAx
ODc2LCAgMTg4NCwgIDE4ODgsICAxODk4LCAgMTkwMywgIDE5MjAsCi0gICAgMTkyMCwgIDE5MjUs
ICAxOTI1LCAgMTkzMiwgIDE5MzIsICAxOTQwLCAgMTk0MywgIDE5NDksICAxOTUyLCAgMTk1OCwK
LSAgICAxOTYyLCAgMTk2OSwgIDE5NzYsICAxOTgzLCAgMTk5MCwgIDIwMDEsICAyMDEwLCAgMjAx
NCwgIDIwMjEsICAyMDI0LAotICAgIDIwMzAsICAyMDMwCisgICAgIDk1MywgICA5NjEsICAgOTg4
LCAgIDk5MywgIDEwMDMsICAxMDQxLCAgMTA0NCwgIDEwNTEsICAxMDU5LCAgMTA4MCwKKyAgICAx
MTAxLCAgMTExMiwgIDExNDEsICAxMTQ2LCAgMTE1NiwgIDExNjEsICAxMTcxLCAgMTE3NCwgIDEx
NzcsICAxMTgwLAorICAgIDExODYsICAxMTkzLCAgMTE5NiwgIDEyMTgsICAxMjM2LCAgMTI2MCwg
IDEyODMsICAxMjg3LCAgMTMwNSwgIDEzMTMsCisgICAgMTM0NSwgIDEzNjUsICAxNDU0LCAgMTQ2
MywgIDE0ODYsICAxNDg5LCAgMTQ5NSwgIDE1MDMsICAxNTExLCAgMTUxOSwKKyAgICAxNTI5LCAg
MTUzNiwgIDE1MzksICAxNTQyLCAgMTU0OCwgIDE1NTEsICAxNTY2LCAgMTU3MCwgIDE1NzQsICAx
NTc4LAorICAgIDE1ODcsICAxNTkyLCAgMTU5NywgIDE2MDIsICAxNjA3LCAgMTYxMiwgIDE2MTcs
ICAxNjIyLCAgMTYyNywgIDE2MzIsCisgICAgMTYzOCwgIDE2NDQsICAxNjUwLCAgMTY1NSwgIDE2
NjAsICAxNjY5LCAgMTY3OCwgIDE2ODMsICAxNjk2LCAgMTY5NiwKKyAgICAxNzEwLCAgMTcxMCwg
IDE3MTksICAxNzIyLCAgMTczNywgIDE3NzMsICAxNzc3LCAgMTc4MywgIDE3OTEsICAxODA3LAor
ICAgIDE4MTEsICAxODE1LCAgMTgxNiwgIDE4MjIsICAxODIzLCAgMTgyNCwgIDE4MjUsICAxODI2
LCAgMTgzMCwgIDE4MzEsCisgICAgMTgzMSwgIDE4MzEsICAxODQxLCAgMTg0MiwgIDE4NDYsICAx
ODQ2LCAgMTg0NywgIDE4NDcsICAxODUyLCAgMTg1NSwKKyAgICAxODY1LCAgMTg2OCwgIDE4NzQs
ICAxODc1LCAgMTg3OSwgIDE4ODcsICAxODkxLCAgMTkwMSwgIDE5MDYsICAxOTIzLAorICAgIDE5
MjMsICAxOTI4LCAgMTkyOCwgIDE5MzUsICAxOTM1LCAgMTk0MywgIDE5NDYsICAxOTUyLCAgMTk1
NSwgIDE5NjEsCisgICAgMTk2NSwgIDE5NzIsICAxOTc5LCAgMTk4NiwgIDE5OTMsICAyMDA0LCAg
MjAxMywgIDIwMTcsICAyMDI0LCAgMjAyNywKKyAgICAyMDMzLCAgMjAzMwogfTsKICNlbmRpZgog
CkBAIC0xNDA3LDcgKzE0MDcsNyBAQCB3aGlsZSAoWVlJRCAoMCkpCiAgICB3ZSB3b24ndCBicmVh
ayB1c2VyIGNvZGU6IHdoZW4gdGhlc2UgYXJlIHRoZSBsb2NhdGlvbnMgd2Uga25vdy4gICovCiAK
ICNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKLSMgaWYgWVlMVFlQRV9JU19UUklWSUFMCisjIGlm
IGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJVklBTAogIyAgZGVm
aW5lIFlZX0xPQ0FUSU9OX1BSSU5UKEZpbGUsIExvYykJCQlcCiAgICAgIGZwcmludGYgKEZpbGUs
ICIlZC4lZC0lZC4lZCIsCQkJXAogCSAgICAgIChMb2MpLmZpcnN0X2xpbmUsIChMb2MpLmZpcnN0
X2NvbHVtbiwJXApAQCAtMjU1NCw3ICsyNTU0LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+
c2V0TmFtZShmbkNhbmRpZGF0ZS0+Z2V0TWFuZ2xlZE5hbWUoKSk7CiAKICAgICAgICAgICAgICAg
ICAgICAgVFF1YWxpZmllciBxdWFsOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGZuQ2FuZGlkYXRlLT5nZXRQYXJhbUNvdW50KCk7ICsraSkgeworICAgICAgICAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZuQ2FuZGlkYXRlLT5nZXRQYXJhbUNvdW50
KCk7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcXVhbCA9IGZuQ2FuZGlkYXRlLT5n
ZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChxdWFsID09IEV2cU91dCB8fCBxdWFsID09IEV2cUluT3V0KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRMaW5lKCksICJhc3NpZ24iLCAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldEFzQWdncmVnYXRlKCktPmdldFNlcXVlbmNlKClbaV0tPmdldEFz
VHlwZWQoKSkpIHsKQEAgLTMxNDAsNyArMzE0MCw3IEBAIHl5cmVkdWNlOgogICAgICAgICBwcm90
b3R5cGUtPnNldFR5cGUoZnVuY3Rpb24uZ2V0UmV0dXJuVHlwZSgpKTsKICAgICAgICAgcHJvdG90
eXBlLT5zZXROYW1lKGZ1bmN0aW9uLmdldE5hbWUoKSk7CiAgICAgICAgIAotICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKTsgaSsrKQorICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKTsgaSsrKQogICAg
ICAgICB7CiAgICAgICAgICAgICBjb25zdCBUUGFyYW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9uLmdl
dFBhcmFtKGkpOwogICAgICAgICAgICAgaWYgKHBhcmFtLm5hbWUgIT0gMCkKQEAgLTMxNzQsNyAr
MzE3NCwxMCBAQCB5eXJlZHVjZToKICAgY2FzZSA3MzoKIAogICAgIHsKLSAgICAgICAgY29udGV4
dC0+c3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbiggKHl5dnNwWygzKSAtICg0KV0uaW50
ZXJtLnR5cGUpLnR5cGUsICh5eXZzcFsoMikgLSAoNCldLmludGVybS5wcmVjaXNpb24pICk7Cisg
ICAgICAgIGlmICghY29udGV4dC0+c3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbiggKHl5
dnNwWygzKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5pbnRlcm0ucHJl
Y2lzaW9uKSApKSB7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDQp
XS5sZXgpLmxpbmUsICJpbGxlZ2FsIHR5cGUgYXJndW1lbnQgZm9yIGRlZmF1bHQgcHJlY2lzaW9u
IHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMykgLSAoNCldLmludGVybS50eXBl
KS50eXBlKSk7CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIH0KICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7CiAgICAgO30KICAgICBicmVhazsK
QEAgLTMxOTYsNyArMzE5OSw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIm92ZXJsb2FkZWQgZnVuY3Rpb25z
IG11c3QgaGF2ZSB0aGUgc2FtZSByZXR1cm4gdHlwZSIsICh5eXZzcFsoMSkgLSAoMildLmludGVy
bS5mdW5jdGlvbiktPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IHByZXZEZWMtPmdldFBhcmFtQ291bnQoKTsgKytpKSB7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZXZEZWMtPmdldFBhcmFtQ291bnQoKTsg
KytpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFBhcmFtKGkpLnR5cGUtPmdl
dFF1YWxpZmllcigpICE9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbiktPmdldFBh
cmFtKGkpLnR5cGUtPmdldFF1YWxpZmllcigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIm92ZXJsb2FkZWQgZnVuY3Rp
b25zIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICh5eXZzcFsoMSkg
LSAoMildLmludGVybS5mdW5jdGlvbiktPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllclN0
cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwpAQCAtNDU2
Miw3ICs0NTY1LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vIGtub3dzIHdoZXJlIHRvIGZpbmQg
cGFyYW1ldGVycy4KICAgICAgICAgLy8KICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSogcGFyYW1O
b2RlcyA9IG5ldyBUSW50ZXJtQWdncmVnYXRlOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCk7IGkrKykgeworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCk7IGkrKykgewogICAgICAgICAgICAg
Y29uc3QgVFBhcmFtZXRlciYgcGFyYW0gPSBmdW5jdGlvbi0+Z2V0UGFyYW0oaSk7CiAgICAgICAg
ICAgICBpZiAocGFyYW0ubmFtZSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgVFZhcmlhYmxlICp2
YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL29zaW5jbHVkZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9vc2luY2x1ZGUuaAko
cmV2aXNpb24gMTQzMDExKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L29zaW5jbHVkZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBACiB0eXBlZGVmIERX
T1JEIE9TX1RMU0luZGV4OwogI2RlZmluZSBPU19JTlZBTElEX1RMU19JTkRFWCAoVExTX09VVF9P
Rl9JTkRFWEVTKQogI2VsaWYgZGVmaW5lZChBTkdMRV9PU19QT1NJWCkKLXR5cGVkZWYgcHRocmVh
ZF9rZXlfdCBPU19UTFNJbmRleDsKLSNkZWZpbmUgT1NfSU5WQUxJRF9UTFNfSU5ERVggKHN0YXRp
Y19jYXN0PE9TX1RMU0luZGV4PigtMSkpCit0eXBlZGVmIHVuc2lnbmVkIGludCBPU19UTFNJbmRl
eDsKKyNkZWZpbmUgT1NfSU5WQUxJRF9UTFNfSU5ERVggMHhGRkZGRkZGRgogI2VuZGlmICAvLyBB
TkdMRV9PU19XSU4KIAogT1NfVExTSW5kZXggT1NfQWxsb2NUTFNJbmRleCgpOwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL29zc291cmNlX25zcHIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9vc3NvdXJjZV9uc3ByLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxl
CiAgICsgTEYKCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5j
cHAJKHJldmlzaW9uIDE0MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsMjQgKzEsMjIgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjMu
ICAqLworLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuNC4yLiAgKi8KIAog
LyogU2tlbGV0b24gaW1wbGVtZW50YXRpb24gZm9yIEJpc29uJ3MgWWFjYy1saWtlIHBhcnNlcnMg
aW4gQwotCi0gICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIw
MDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKLSAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLgotCi0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgCisgICAgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5
ODktMTk5MCwgMjAwMC0yMDA2LCAyMDA5LTIwMTAgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlv
biwgSW5jLgorICAgCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlv
bikKLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotCisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIAogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQorICAg
CiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0gICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCisg
ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v
cmcvbGljZW5zZXMvPi4gICovCiAKIC8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkg
Y3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlucwogICAgcGFydCBvciBhbGwgb2YgdGhl
IEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKQEAgLTI5LDcg
KzI3LDcgQEAKICAgIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBza2Vs
ZXRvbiBhbmQgdGhlIHJlc3VsdGluZwogICAgQmlzb24gb3V0cHV0IGZpbGVzIHRvIGJlIGxpY2Vu
c2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2Ugd2l0aG91dCB0aGlz
IHNwZWNpYWwgZXhjZXB0aW9uLgotCisgICAKICAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2Fz
IGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KICAgIHZlcnNpb24gMi4y
IG9mIEJpc29uLiAgKi8KIApAQCAtNDcsNyArNDUsNyBAQAogI2RlZmluZSBZWUJJU09OIDEKIAog
LyogQmlzb24gdmVyc2lvbi4gICovCi0jZGVmaW5lIFlZQklTT05fVkVSU0lPTiAiMi4zIgorI2Rl
ZmluZSBZWUJJU09OX1ZFUlNJT04gIjIuNC4yIgogCiAvKiBTa2VsZXRvbiBuYW1lLiAgKi8KICNk
ZWZpbmUgWVlTS0VMRVRPTl9OQU1FICJ5YWNjLmMiCkBAIC01NSw1MCArNTMsMjMgQEAKIC8qIFB1
cmUgcGFyc2Vycy4gICovCiAjZGVmaW5lIFlZUFVSRSAxCiAKKy8qIFB1c2ggcGFyc2Vycy4gICov
CisjZGVmaW5lIFlZUFVTSCAwCisKKy8qIFB1bGwgcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVM
TCAxCisKIC8qIFVzaW5nIGxvY2F0aW9ucy4gICovCiAjZGVmaW5lIFlZTFNQX05FRURFRCAwCiAK
IC8qIFN1YnN0aXR1dGUgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcy4gICovCi0jZGVm
aW5lIHl5cGFyc2UgcHBwYXJzZQotI2RlZmluZSB5eWxleCAgIHBwbGV4Ci0jZGVmaW5lIHl5ZXJy
b3IgcHBlcnJvcgotI2RlZmluZSB5eWx2YWwgIHBwbHZhbAotI2RlZmluZSB5eWNoYXIgIHBwY2hh
cgotI2RlZmluZSB5eWRlYnVnIHBwZGVidWcKLSNkZWZpbmUgeXluZXJycyBwcG5lcnJzCi0KLQot
LyogVG9rZW5zLiAgKi8KLSNpZm5kZWYgWVlUT0tFTlRZUEUKLSMgZGVmaW5lIFlZVE9LRU5UWVBF
Ci0gICAvKiBQdXQgdGhlIHRva2VucyBpbnRvIHRoZSBzeW1ib2wgdGFibGUsIHNvIHRoYXQgR0RC
IGFuZCBvdGhlciBkZWJ1Z2dlcnMKLSAgICAgIGtub3cgYWJvdXQgdGhlbS4gICovCi0gICBlbnVt
IHl5dG9rZW50eXBlIHsKLSAgICAgVE9LX0NPTlNUX0lOVCA9IDI1OCwKLSAgICAgVE9LX09QX09S
ID0gMjU5LAotICAgICBUT0tfT1BfQU5EID0gMjYwLAotICAgICBUT0tfT1BfTkUgPSAyNjEsCi0g
ICAgIFRPS19PUF9FUSA9IDI2MiwKLSAgICAgVE9LX09QX0dFID0gMjYzLAotICAgICBUT0tfT1Bf
TEUgPSAyNjQsCi0gICAgIFRPS19PUF9SSUdIVCA9IDI2NSwKLSAgICAgVE9LX09QX0xFRlQgPSAy
NjYsCi0gICAgIFRPS19VTkFSWSA9IDI2NwotICAgfTsKLSNlbmRpZgotLyogVG9rZW5zLiAgKi8K
LSNkZWZpbmUgVE9LX0NPTlNUX0lOVCAyNTgKLSNkZWZpbmUgVE9LX09QX09SIDI1OQotI2RlZmlu
ZSBUT0tfT1BfQU5EIDI2MAotI2RlZmluZSBUT0tfT1BfTkUgMjYxCi0jZGVmaW5lIFRPS19PUF9F
USAyNjIKLSNkZWZpbmUgVE9LX09QX0dFIDI2MwotI2RlZmluZSBUT0tfT1BfTEUgMjY0Ci0jZGVm
aW5lIFRPS19PUF9SSUdIVCAyNjUKLSNkZWZpbmUgVE9LX09QX0xFRlQgMjY2Ci0jZGVmaW5lIFRP
S19VTkFSWSAyNjcKLQotCisjZGVmaW5lIHl5cGFyc2UgICAgICAgICBwcHBhcnNlCisjZGVmaW5l
IHl5bGV4ICAgICAgICAgICBwcGxleAorI2RlZmluZSB5eWVycm9yICAgICAgICAgcHBlcnJvcgor
I2RlZmluZSB5eWx2YWwgICAgICAgICAgcHBsdmFsCisjZGVmaW5lIHl5Y2hhciAgICAgICAgICBw
cGNoYXIKKyNkZWZpbmUgeXlkZWJ1ZyAgICAgICAgIHBwZGVidWcKKyNkZWZpbmUgeXluZXJycyAg
ICAgICAgIHBwbmVycnMKIAogCiAvKiBDb3B5IHRoZSBmaXJzdCBwYXJ0IG9mIHVzZXIgZGVjbGFy
YXRpb25zLiAgKi8KQEAgLTExMiwxOCArODMsMTMgQEAKIAogLy8gVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCiAKLS8vIElmIGNs
YW5nIG9yIGdjYy4KICNpZiBkZWZpbmVkKF9fR05VQ19fKQotCi0vLyBUdXJuIG9mZiB1bmluaXRp
YWxpemVkIHZhcmlhYmxlIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGUgYXV0by1nZW5lcmF0ZWQg
cHBsdmFsIHZhcmlhYmxlLgotLy8gT24gZ2NjIDQuNyssIFRoZSBmbGFnIGlzIGNhbGxlZCAiLVdt
YXliZS11bmluaXRpYWxpemVkIi4KLS8vIE9uIGNsYW5nIGFuZCBnY2MgPCA0LjcsIHRoZSBmbGFn
IGlzIGNhbGxlZCAiLVd1bmluaXRpYWxpemVkIi4KLSNpZiAhZGVmaW5lZChfX2NsYW5nX18pICYm
ICgoX19HTlVDX18gPT0gNCAmJiBfX0dOVV9DX01JTk9SX18gPj0gNykgfHwgX19HTlVDX18gPj0g
NSkKKy8vIFRyaWdnZXJlZCBieSB0aGUgYXV0by1nZW5lcmF0ZWQgcHBsdmFsIHZhcmlhYmxlLgor
I2lmICFkZWZpbmVkKF9fY2xhbmdfXykgJiYgKChfX0dOVUNfXyA+IDQpIHx8IChfX0dOVUNfXyA9
PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDcpKQogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25v
cmVkICItV21heWJlLXVuaW5pdGlhbGl6ZWQiCiAjZWxzZQogI3ByYWdtYSBHQ0MgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV3VuaW5pdGlhbGl6ZWQiCiAjZW5kaWYKLQogI2VsaWYgZGVmaW5lZChfTVND
X1ZFUikKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDY1IDQ3MDEpCiAjZW5kaWYKQEAgLTE2
Myw2ICsxMjksNyBAQCBzdGF0aWMgaW50IHl5bGV4KFlZU1RZUEUqIGx2YWxwLCBDb250ZXh0CiBz
dGF0aWMgdm9pZCB5eWVycm9yKENvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7
CiAKIAorCiAvKiBFbmFibGluZyB0cmFjZXMuICAqLwogI2lmbmRlZiBZWURFQlVHCiAjIGRlZmlu
ZSBZWURFQlVHIDAKQEAgLTE4MSwyMCArMTQ4LDM5IEBAIHN0YXRpYyB2b2lkIHl5ZXJyb3IoQ29u
dGV4dCogY29udGV4dCwgY28KICMgZGVmaW5lIFlZVE9LRU5fVEFCTEUgMAogI2VuZGlmCiAKKwor
LyogVG9rZW5zLiAgKi8KKyNpZm5kZWYgWVlUT0tFTlRZUEUKKyMgZGVmaW5lIFlZVE9LRU5UWVBF
CisgICAvKiBQdXQgdGhlIHRva2VucyBpbnRvIHRoZSBzeW1ib2wgdGFibGUsIHNvIHRoYXQgR0RC
IGFuZCBvdGhlciBkZWJ1Z2dlcnMKKyAgICAgIGtub3cgYWJvdXQgdGhlbS4gICovCisgICBlbnVt
IHl5dG9rZW50eXBlIHsKKyAgICAgVE9LX0NPTlNUX0lOVCA9IDI1OCwKKyAgICAgVE9LX09QX09S
ID0gMjU5LAorICAgICBUT0tfT1BfQU5EID0gMjYwLAorICAgICBUT0tfT1BfTkUgPSAyNjEsCisg
ICAgIFRPS19PUF9FUSA9IDI2MiwKKyAgICAgVE9LX09QX0dFID0gMjYzLAorICAgICBUT0tfT1Bf
TEUgPSAyNjQsCisgICAgIFRPS19PUF9SSUdIVCA9IDI2NSwKKyAgICAgVE9LX09QX0xFRlQgPSAy
NjYsCisgICAgIFRPS19VTkFSWSA9IDI2NworICAgfTsKKyNlbmRpZgorCisKKwogI2lmICEgZGVm
aW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBFX0lTX0RFQ0xBUkVECiB0eXBlZGVmIGlu
dCBZWVNUWVBFOworIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKICMgZGVmaW5lIHl5c3R5
cGUgWVlTVFlQRSAvKiBvYnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KICMgZGVmaW5l
IFlZU1RZUEVfSVNfREVDTEFSRUQgMQotIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKICNl
bmRpZgogCiAKLQogLyogQ29weSB0aGUgc2Vjb25kIHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMu
ICAqLwogCiAKLS8qIExpbmUgMjE2IG9mIHlhY2MuYy4gICovCi0KIAogI2lmZGVmIHNob3J0CiAj
IHVuZGVmIHNob3J0CkBAIC0yNDQsNyArMjMwLDcgQEAgdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBl
X2ludDE2OwogI2RlZmluZSBZWVNJWkVfTUFYSU1VTSAoKFlZU0laRV9UKSAtMSkKIAogI2lmbmRl
ZiBZWV8KLSMgaWYgWVlFTkFCTEVfTkxTCisjIGlmIGRlZmluZWQgWVlFTkFCTEVfTkxTICYmIFlZ
RU5BQkxFX05MUwogIyAgaWYgRU5BQkxFX05MUwogIyAgIGluY2x1ZGUgPGxpYmludGwuaD4gLyog
SU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwogIyAgIGRlZmluZSBZWV8obXNnaWQpIGRn
ZXR0ZXh0ICgiYmlzb24tcnVudGltZSIsIG1zZ2lkKQpAQCAtMjY5LDE0ICsyNTUsMTQgQEAgdHlw
ZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDE2OwogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRl
ZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVm
aW5lZCBfTVNDX1ZFUikKIHN0YXRpYyBpbnQKLVlZSUQgKGludCBpKQorWVlJRCAoaW50IHl5aSkK
ICNlbHNlCiBzdGF0aWMgaW50Ci1ZWUlEIChpKQotICAgIGludCBpOworWVlJRCAoeXlpKQorICAg
IGludCB5eWk7CiAjZW5kaWYKIHsKLSAgcmV0dXJuIGk7CisgIHJldHVybiB5eWk7CiB9CiAjZW5k
aWYKIApAQCAtMzU3LDkgKzM0Myw5IEBAIHZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklOR0VT
IE9OIFVTRVIKIC8qIEEgdHlwZSB0aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBzdGFj
ayBtZW1iZXIuICAqLwogdW5pb24geXlhbGxvYwogewotICB5eXR5cGVfaW50MTYgeXlzczsKLSAg
WVlTVFlQRSB5eXZzOwotICB9OworICB5eXR5cGVfaW50MTYgeXlzc19hbGxvYzsKKyAgWVlTVFlQ
RSB5eXZzX2FsbG9jOworfTsKIAogLyogVGhlIHNpemUgb2YgdGhlIG1heGltdW0gZ2FwIGJldHdl
ZW4gb25lIGFsaWduZWQgc3RhY2sgYW5kIHRoZSBuZXh0LiAgKi8KICMgZGVmaW5lIFlZU1RBQ0tf
R0FQX01BWElNVU0gKHNpemVvZiAodW5pb24geXlhbGxvYykgLSAxKQpAQCAtMzkzLDEyICszNzks
MTIgQEAgdW5pb24geXlhbGxvYwogICAgZWxlbWVudHMgaW4gdGhlIHN0YWNrLCBhbmQgWVlQVFIg
Z2l2ZXMgdGhlIG5ldyBsb2NhdGlvbiBvZiB0aGUKICAgIHN0YWNrLiAgQWR2YW5jZSBZWVBUUiB0
byBhIHByb3Blcmx5IGFsaWduZWQgbG9jYXRpb24gZm9yIHRoZSBuZXh0CiAgICBzdGFjay4gICov
Ci0jIGRlZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrKQkJCQkJXAorIyBkZWZpbmUgWVlTVEFD
S19SRUxPQ0FURShTdGFja19hbGxvYywgU3RhY2spCQkJCVwKICAgICBkbwkJCQkJCQkJCVwKICAg
ICAgIHsJCQkJCQkJCQlcCiAJWVlTSVpFX1QgeXluZXdieXRlczsJCQkJCQlcCi0JWVlDT1BZICgm
eXlwdHItPlN0YWNrLCBTdGFjaywgeXlzaXplKTsJCQkJXAotCVN0YWNrID0gJnl5cHRyLT5TdGFj
azsJCQkJCQlcCisJWVlDT1BZICgmeXlwdHItPlN0YWNrX2FsbG9jLCBTdGFjaywgeXlzaXplKTsJ
CQlcCisJU3RhY2sgPSAmeXlwdHItPlN0YWNrX2FsbG9jOwkJCQkJXAogCXl5bmV3Ynl0ZXMgPSB5
eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZU1RBQ0tfR0FQX01BWElNVU07IFwKIAl5
eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOwkJCQlcCiAgICAgICB9CQkJCQkJ
CQkJXApAQCAtNDg3LDkgKzQ3Myw5IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eXJoc1td
ID0KIC8qIFlZUkxJTkVbWVlOXSAtLSBzb3VyY2UgbGluZSB3aGVyZSBydWxlIG51bWJlciBZWU4g
d2FzIGRlZmluZWQuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXJsaW5lW10gPQog
ewotICAgICAgIDAsICAgIDk2LCAgICA5NiwgICAxMDMsICAgMTA0LCAgIDEwNywgICAxMTAsICAg
MTEzLCAgIDExNiwgICAxMTksCi0gICAgIDEyMiwgICAxMjUsICAgMTI4LCAgIDEzMSwgICAxMzQs
ICAgMTM3LCAgIDE0MCwgICAxNDMsICAgMTQ2LCAgIDE0OSwKLSAgICAgMTYyLCAgIDE3NSwgICAx
NzgsICAgMTgxLCAgIDE4NCwgICAxODcsICAgMTkwCisgICAgICAgMCwgICAgOTAsICAgIDkwLCAg
ICA5NywgICAgOTgsICAgMTAxLCAgIDEwNCwgICAxMDcsICAgMTEwLCAgIDExMywKKyAgICAgMTE2
LCAgIDExOSwgICAxMjIsICAgMTI1LCAgIDEyOCwgICAxMzEsICAgMTM0LCAgIDEzNywgICAxNDAs
ICAgMTQzLAorICAgICAxNTYsICAgMTY5LCAgIDE3MiwgICAxNzUsICAgMTc4LCAgIDE4MSwgICAx
ODQKIH07CiAjZW5kaWYKIApAQCAtNjQ0LDkgKzYzMCwxOCBAQCBzdGF0aWMgY29uc3QgeXl0eXBl
X3VpbnQ4IHl5c3Rvc1tdID0KIAogLyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBjYWxsIHl5ZXJy
b3IuICBUaGlzIHJlbWFpbnMgaGVyZSB0ZW1wb3JhcmlseQogICAgdG8gZWFzZSB0aGUgdHJhbnNp
dGlvbiB0byB0aGUgbmV3IG1lYW5pbmcgb2YgWVlFUlJPUiwgZm9yIEdDQy4KLSAgIE9uY2UgR0ND
IHZlcnNpb24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgKi8KKyAg
IE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdv
LiAgSG93ZXZlciwKKyAgIFlZRkFJTCBhcHBlYXJzIHRvIGJlIGluIHVzZS4gIE5ldmVydGhlbGVz
cywgaXQgaXMgZm9ybWFsbHkgZGVwcmVjYXRlZAorICAgaW4gQmlzb24gMi40LjIncyBORVdTIGVu
dHJ5LCB3aGVyZSBhIHBsYW4gdG8gcGhhc2UgaXQgb3V0IGlzCisgICBkaXNjdXNzZWQuICAqLwog
CiAjZGVmaW5lIFlZRkFJTAkJZ290byB5eWVycmxhYgorI2lmIGRlZmluZWQgWVlGQUlMCisgIC8q
IFRoaXMgaXMgaGVyZSB0byBzdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBHQ0MgY3BwJ3MKKyAg
ICAgLVd1bnVzZWQtbWFjcm9zLiAgTm9ybWFsbHkgd2UgZG9uJ3Qgd29ycnkgYWJvdXQgdGhhdCB3
YXJuaW5nLCBidXQKKyAgICAgc29tZSB1c2VycyBkbywgYW5kIHdlIHdhbnQgdG8gbWFrZSBpdCBl
YXN5IGZvciB1c2VycyB0byByZW1vdmUKKyAgICAgWVlGQUlMIHVzZXMsIHdoaWNoIHdpbGwgcHJv
ZHVjZSB3YXJuaW5ncyBmcm9tIEJpc29uIDIuNS4gICovCisjZW5kaWYKIAogI2RlZmluZSBZWVJF
Q09WRVJJTkcoKSAgKCEheXllcnJzdGF0dXMpCiAKQEAgLTcwMyw3ICs2OTgsNyBAQCB3aGlsZSAo
WVlJRCAoMCkpCiAgICB3ZSB3b24ndCBicmVhayB1c2VyIGNvZGU6IHdoZW4gdGhlc2UgYXJlIHRo
ZSBsb2NhdGlvbnMgd2Uga25vdy4gICovCiAKICNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKLSMg
aWYgWVlMVFlQRV9JU19UUklWSUFMCisjIGlmIGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYm
IFlZTFRZUEVfSVNfVFJJVklBTAogIyAgZGVmaW5lIFlZX0xPQ0FUSU9OX1BSSU5UKEZpbGUsIExv
YykJCQlcCiAgICAgIGZwcmludGYgKEZpbGUsICIlZC4lZC0lZC4lZCIsCQkJXAogCSAgICAgIChM
b2MpLmZpcnN0X2xpbmUsIChMb2MpLmZpcnN0X2NvbHVtbiwJXApAQCAtODE3LDE3ICs4MTIsMjAg
QEAgeXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbAogI2lmIChkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19j
cGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9zdGFja19wcmlu
dCAoeXl0eXBlX2ludDE2ICpib3R0b20sIHl5dHlwZV9pbnQxNiAqdG9wKQoreXlfc3RhY2tfcHJp
bnQgKHl5dHlwZV9pbnQxNiAqeXlib3R0b20sIHl5dHlwZV9pbnQxNiAqeXl0b3ApCiAjZWxzZQog
c3RhdGljIHZvaWQKLXl5X3N0YWNrX3ByaW50IChib3R0b20sIHRvcCkKLSAgICB5eXR5cGVfaW50
MTYgKmJvdHRvbTsKLSAgICB5eXR5cGVfaW50MTYgKnRvcDsKK3l5X3N0YWNrX3ByaW50ICh5eWJv
dHRvbSwgeXl0b3ApCisgICAgeXl0eXBlX2ludDE2ICp5eWJvdHRvbTsKKyAgICB5eXR5cGVfaW50
MTYgKnl5dG9wOwogI2VuZGlmCiB7CiAgIFlZRlBSSU5URiAoc3RkZXJyLCAiU3RhY2sgbm93Iik7
Ci0gIGZvciAoOyBib3R0b20gPD0gdG9wOyArK2JvdHRvbSkKLSAgICBZWUZQUklOVEYgKHN0ZGVy
ciwgIiAlZCIsICpib3R0b20pOworICBmb3IgKDsgeXlib3R0b20gPD0geXl0b3A7IHl5Ym90dG9t
KyspCisgICAgeworICAgICAgaW50IHl5Ym90ID0gKnl5Ym90dG9tOworICAgICAgWVlGUFJJTlRG
IChzdGRlcnIsICIgJWQiLCB5eWJvdCk7CisgICAgfQogICBZWUZQUklOVEYgKHN0ZGVyciwgIlxu
Iik7CiB9CiAKQEAgLTg2MiwxMSArODYwLDExIEBAIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5
cnVsZSwgY29udGV4dCkKICAgLyogVGhlIHN5bWJvbHMgYmVpbmcgcmVkdWNlZC4gICovCiAgIGZv
ciAoeXlpID0gMDsgeXlpIDwgeXlucmhzOyB5eWkrKykKICAgICB7Ci0gICAgICBmcHJpbnRmIChz
dGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAi
ICAgJCVkID0gIiwgeXlpICsgMSk7CiAgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwgeXly
aHNbeXlwcmhzW3l5cnVsZV0gKyB5eWldLAogCQkgICAgICAgJih5eXZzcFsoeXlpICsgMSkgLSAo
eXlucmhzKV0pCiAJCSAgICAgICAJCSAgICAgICAsIGNvbnRleHQpOwotICAgICAgZnByaW50ZiAo
c3RkZXJyLCAiXG4iKTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKICAgICB9CiB9
CiAKQEAgLTExNDgsMTAgKzExNDYsOCBAQCB5eWRlc3RydWN0ICh5eW1zZywgeXl0eXBlLCB5eXZh
bHVlcCwgY29uCiAJYnJlYWs7CiAgICAgfQogfQotDAogCiAvKiBQcmV2ZW50IHdhcm5pbmdzIGZy
b20gLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotCiAjaWZkZWYgWVlQQVJTRV9QQVJBTQogI2lm
IGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cwogaW50IHl5cGFyc2UgKHZv
aWQgKllZUEFSU0VfUEFSQU0pOwpAQCAtMTE3MCwxMCArMTE2Niw5IEBAIGludCB5eXBhcnNlICgp
OwogCiAKIAotCi0vKi0tLS0tLS0tLS0uCi18IHl5cGFyc2UuICB8Ci1gLS0tLS0tLS0tLSovCisv
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5cGFyc2Ugb3IgeXlwdXNoX3BhcnNlLiAg
fAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAjaWZkZWYgWVlQQVJTRV9QQVJBTQog
I2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCkBAIC0xMTk3
LDIyICsxMTkyLDQ2IEBAIHl5cGFyc2UgKGNvbnRleHQpCiAjZW5kaWYKICNlbmRpZgogewotICAv
KiBUaGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworLyogVGhlIGxvb2thaGVhZCBzeW1ib2wuICAq
LwogaW50IHl5Y2hhcjsKIAotLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rLWFoZWFk
IHN5bWJvbC4gICovCisvKiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2thaGVhZCBzeW1i
b2wuICAqLwogWVlTVFlQRSB5eWx2YWw7CiAKLS8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNv
IGZhci4gICovCi1pbnQgeXluZXJyczsKKyAgICAvKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBz
byBmYXIuICAqLworICAgIGludCB5eW5lcnJzOworCisgICAgaW50IHl5c3RhdGU7CisgICAgLyog
TnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4g
ICovCisgICAgaW50IHl5ZXJyc3RhdHVzOworCisgICAgLyogVGhlIHN0YWNrcyBhbmQgdGhlaXIg
dG9vbHM6CisgICAgICAgYHl5c3MnOiByZWxhdGVkIHRvIHN0YXRlcy4KKyAgICAgICBgeXl2cyc6
IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLgorCisgICAgICAgUmVmZXIgdG8gdGhlIHN0YWNr
cyB0aHJ1IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93CisgICAgICAgdG8g
cmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisKKyAgICAvKiBUaGUgc3RhdGUgc3RhY2su
ICAqLworICAgIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07CisgICAgeXl0eXBlX2lu
dDE2ICp5eXNzOworICAgIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAgICAvKiBUaGUgc2VtYW50
aWMgdmFsdWUgc3RhY2suICAqLworICAgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOworICAg
IFlZU1RZUEUgKnl5dnM7CisgICAgWVlTVFlQRSAqeXl2c3A7CisKKyAgICBZWVNJWkVfVCB5eXN0
YWNrc2l6ZTsKIAotICBpbnQgeXlzdGF0ZTsKICAgaW50IHl5bjsKICAgaW50IHl5cmVzdWx0Owot
ICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFi
bGVkLiAgKi8KLSAgaW50IHl5ZXJyc3RhdHVzOwotICAvKiBMb29rLWFoZWFkIHRva2VuIGFzIGFu
IGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLwotICBpbnQgeXl0b2tlbiA9
IDA7CisgIC8qIExvb2thaGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAodHJhbnNsYXRlZCkgdG9r
ZW4gbnVtYmVyLiAgKi8KKyAgaW50IHl5dG9rZW47CisgIC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0
byByZXR1cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0aW9uIGZyb20gdGhlCisgICAgIGFjdGlv
biByb3V0aW5lcy4gICovCisgIFlZU1RZUEUgeXl2YWw7CisKICNpZiBZWUVSUk9SX1ZFUkJPU0UK
ICAgLyogQnVmZmVyIGZvciBlcnJvciBtZXNzYWdlcywgYW5kIGl0cyBhbGxvY2F0ZWQgc2l6ZS4g
ICovCiAgIGNoYXIgeXltc2didWZbMTI4XTsKQEAgLTEyMjAsNTEgKzEyMzksMjggQEAgaW50IHl5
bmVycnM7CiAgIFlZU0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOwogI2VuZGlm
CiAKLSAgLyogVGhyZWUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKLSAgICAgYHl5c3MnOiByZWxh
dGVkIHRvIHN0YXRlcywKLSAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcywK
LSAgICAgYHl5bHMnOiByZWxhdGVkIHRvIGxvY2F0aW9ucy4KLQotICAgICBSZWZlciB0byB0aGUg
c3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKLSAgICAg
dG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCi0KLSAgLyogVGhlIHN0YXRlIHN0YWNr
LiAgKi8KLSAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKLSAgeXl0eXBlX2ludDE2
ICp5eXNzID0geXlzc2E7Ci0gIHl5dHlwZV9pbnQxNiAqeXlzc3A7Ci0KLSAgLyogVGhlIHNlbWFu
dGljIHZhbHVlIHN0YWNrLiAgKi8KLSAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07Ci0gIFlZ
U1RZUEUgKnl5dnMgPSB5eXZzYTsKLSAgWVlTVFlQRSAqeXl2c3A7Ci0KLQotCiAjZGVmaW5lIFlZ
UE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTikpCiAKLSAgWVlTSVpFX1Qg
eXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKLQotICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8g
cmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQotICAgICBhY3Rpb24g
cm91dGluZXMuICAqLwotICBZWVNUWVBFIHl5dmFsOwotCi0KICAgLyogVGhlIG51bWJlciBvZiBz
eW1ib2xzIG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVjZWQgcnVsZS4KICAgICAgS2VlcCB0byB6ZXJv
IHdoZW4gbm8gc3ltYm9sIHNob3VsZCBiZSBwb3BwZWQuICAqLwogICBpbnQgeXlsZW4gPSAwOwog
CisgIHl5dG9rZW4gPSAwOworICB5eXNzID0geXlzc2E7CisgIHl5dnMgPSB5eXZzYTsKKyAgeXlz
dGFja3NpemUgPSBZWUlOSVRERVBUSDsKKwogICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFydGlu
ZyBwYXJzZVxuIikpOwogCiAgIHl5c3RhdGUgPSAwOwogICB5eWVycnN0YXR1cyA9IDA7CiAgIHl5
bmVycnMgPSAwOwotICB5eWNoYXIgPSBZWUVNUFRZOwkJLyogQ2F1c2UgYSB0b2tlbiB0byBiZSBy
ZWFkLiAgKi8KKyAgeXljaGFyID0gWVlFTVBUWTsgLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFk
LiAgKi8KIAogICAvKiBJbml0aWFsaXplIHN0YWNrIHBvaW50ZXJzLgogICAgICBXYXN0ZSBvbmUg
ZWxlbWVudCBvZiB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2sKICAgICAgc28gdGhhdCB0aGV5IHN0
YXkgb24gdGhlIHNhbWUgbGV2ZWwgYXMgdGhlIHN0YXRlIHN0YWNrLgogICAgICBUaGUgd2FzdGVk
IGVsZW1lbnRzIGFyZSBuZXZlciBpbml0aWFsaXplZC4gICovCi0KICAgeXlzc3AgPSB5eXNzOwog
ICB5eXZzcCA9IHl5dnM7CiAKQEAgLTEyOTQsNyArMTI5MCw2IEBAIGludCB5eW5lcnJzOwogCVlZ
U1RZUEUgKnl5dnMxID0geXl2czsKIAl5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKIAotCiAJ
LyogRWFjaCBzdGFjayBwb2ludGVyIGFkZHJlc3MgaXMgZm9sbG93ZWQgYnkgdGhlIHNpemUgb2Yg
dGhlCiAJICAgZGF0YSBpbiB1c2UgaW4gdGhhdCBzdGFjaywgaW4gYnl0ZXMuICBUaGlzIHVzZWQg
dG8gYmUgYQogCSAgIGNvbmRpdGlvbmFsIGFyb3VuZCBqdXN0IHRoZSB0d28gZXh0cmEgYXJncywg
YnV0IHRoYXQgbWlnaHQKQEAgLTEzMDIsNyArMTI5Nyw2IEBAIGludCB5eW5lcnJzOwogCXl5b3Zl
cmZsb3cgKFlZXygibWVtb3J5IGV4aGF1c3RlZCIpLAogCQkgICAgJnl5c3MxLCB5eXNpemUgKiBz
aXplb2YgKCp5eXNzcCksCiAJCSAgICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwK
LQogCQkgICAgJnl5c3RhY2tzaXplKTsKIAogCXl5c3MgPSB5eXNzMTsKQEAgLTEzMjUsOSArMTMx
OSw4IEBAIGludCB5eW5lcnJzOwogCSAgKHVuaW9uIHl5YWxsb2MgKikgWVlTVEFDS19BTExPQyAo
WVlTVEFDS19CWVRFUyAoeXlzdGFja3NpemUpKTsKIAlpZiAoISB5eXB0cikKIAkgIGdvdG8geXll
eGhhdXN0ZWRsYWI7Ci0JWVlTVEFDS19SRUxPQ0FURSAoeXlzcyk7Ci0JWVlTVEFDS19SRUxPQ0FU
RSAoeXl2cyk7Ci0KKwlZWVNUQUNLX1JFTE9DQVRFICh5eXNzX2FsbG9jLCB5eXNzKTsKKwlZWVNU
QUNLX1JFTE9DQVRFICh5eXZzX2FsbG9jLCB5eXZzKTsKICMgIHVuZGVmIFlZU1RBQ0tfUkVMT0NB
VEUKIAlpZiAoeXlzczEgIT0geXlzc2EpCiAJICBZWVNUQUNLX0ZSRUUgKHl5c3MxKTsKQEAgLTEz
MzgsNyArMTMzMSw2IEBAIGludCB5eW5lcnJzOwogICAgICAgeXlzc3AgPSB5eXNzICsgeXlzaXpl
IC0gMTsKICAgICAgIHl5dnNwID0geXl2cyArIHl5c2l6ZSAtIDE7CiAKLQogICAgICAgWVlEUFJJ
TlRGICgoc3RkZXJyLCAiU3RhY2sgc2l6ZSBpbmNyZWFzZWQgdG8gJWx1XG4iLAogCQkgICh1bnNp
Z25lZCBsb25nIGludCkgeXlzdGFja3NpemUpKTsKIApAQCAtMTM0OCw2ICsxMzQwLDkgQEAgaW50
IHl5bmVycnM7CiAKICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiRW50ZXJpbmcgc3RhdGUgJWRcbiIs
IHl5c3RhdGUpKTsKIAorICBpZiAoeXlzdGF0ZSA9PSBZWUZJTkFMKQorICAgIFlZQUNDRVBUOwor
CiAgIGdvdG8geXliYWNrdXA7CiAKIC8qLS0tLS0tLS0tLS0uCkBAIC0xMzU2LDE2ICsxMzUxLDE2
IEBAIGludCB5eW5lcnJzOwogeXliYWNrdXA6CiAKICAgLyogRG8gYXBwcm9wcmlhdGUgcHJvY2Vz
c2luZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gIFJlYWQgYQotICAgICBsb29rLWFoZWFkIHRv
a2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKyAgICAg
bG9va2FoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25l
LiAgKi8KIAotICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZl
cmVuY2UgdG8gbG9vay1haGVhZCB0b2tlbi4gICovCisgIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUg
d2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAqLwogICB5
eW4gPSB5eXBhY3RbeXlzdGF0ZV07CiAgIGlmICh5eW4gPT0gWVlQQUNUX05JTkYpCiAgICAgZ290
byB5eWRlZmF1bHQ7CiAKLSAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2stYWhlYWQgdG9rZW4g
aWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisgIC8qIE5vdCBrbm93biA9PiBnZXQgYSBs
b29rYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCiAKLSAgLyogWVlD
SEFSIGlzIGVpdGhlciBZWUVNUFRZIG9yIFlZRU9GIG9yIGEgdmFsaWQgbG9vay1haGVhZCBzeW1i
b2wuICAqLworICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxp
ZCBsb29rYWhlYWQgc3ltYm9sLiAgKi8KICAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKQogICAgIHsK
ICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlJlYWRpbmcgYSB0b2tlbjogIikpOwpAQCAtMTM5
NywyMCArMTM5MiwxNiBAQCB5eWJhY2t1cDoKICAgICAgIGdvdG8geXlyZWR1Y2U7CiAgICAgfQog
Ci0gIGlmICh5eW4gPT0gWVlGSU5BTCkKLSAgICBZWUFDQ0VQVDsKLQogICAvKiBDb3VudCB0b2tl
bnMgc2hpZnRlZCBzaW5jZSBlcnJvcjsgYWZ0ZXIgdGhyZWUsIHR1cm4gb2ZmIGVycm9yCiAgICAg
IHN0YXR1cy4gICovCiAgIGlmICh5eWVycnN0YXR1cykKICAgICB5eWVycnN0YXR1cy0tOwogCi0g
IC8qIFNoaWZ0IHRoZSBsb29rLWFoZWFkIHRva2VuLiAgKi8KKyAgLyogU2hpZnQgdGhlIGxvb2th
aGVhZCB0b2tlbi4gICovCiAgIFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXl0b2tlbiwg
Jnl5bHZhbCwgJnl5bGxvYyk7CiAKLSAgLyogRGlzY2FyZCB0aGUgc2hpZnRlZCB0b2tlbiB1bmxl
c3MgaXQgaXMgZW9mLiAgKi8KLSAgaWYgKHl5Y2hhciAhPSBZWUVPRikKLSAgICB5eWNoYXIgPSBZ
WUVNUFRZOworICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuLiAgKi8KKyAgeXljaGFyID0g
WVlFTVBUWTsKIAogICB5eXN0YXRlID0geXluOwogICAqKyt5eXZzcCA9IHl5bHZhbDsKQEAgLTE0
NTQsMTEyICsxNDQ1LDExMiBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICooY29udGV4dC0+
cmVzdWx0KSA9IHN0YXRpY19jYXN0PGludD4oKHl5dnNwWygxKSAtICgxKV0pKTsKICAgICAgICAg
WVlBQ0NFUFQ7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIHx8ICh5eXZzcFsoMykgLSAo
MyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDU6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgJiYgKHl5dnNwWygzKSAtICgzKV0p
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSB8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDc6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgXiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4OgogCiAgICAgewogICAgICAgICAoeXl2YWwp
ID0gKHl5dnNwWygxKSAtICgzKV0pICYgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgOToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5
eXZzcFsoMSkgLSAoMyldKSAhPSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFsoMSkgLSAoMyldKSA9PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxMToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFso
MSkgLSAoMyldKSA+PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkg
LSAoMyldKSA8PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAo
MyldKSA+ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE0OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0p
IDwgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPj4g
KHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPDwgKHl5
dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgLSAoeXl2c3Bb
KDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSArICh5eXZzcFsoMykg
LSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5OgpAQCAtMTU3
Niw3ICsxNTY3LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAo
eXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pICUgKHl5dnNwWygzKSAtICgzKV0pOwogICAgICAg
ICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMDoKQEAgLTE1OTMsNTMg
KzE1ODQsNTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAoeXl2
YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIC8gKHl5dnNwWygzKSAtICgzKV0pOwogICAgICAgICB9
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMToKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAqICh5eXZzcFsoMykgLSAoMyldKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIyOgogCiAgICAgewogICAgICAgICAo
eXl2YWwpID0gISAoeXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAyMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9IH4gKHl5dnNwWygyKSAt
ICgyKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjQ6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbCkgPSAtICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDI1OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKyAo
eXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAy
NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMikgLSAoMyldKTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogCi0vKiBMaW5lIDEyNjcgb2YgeWFjYy5jLiAgKi8KIAog
ICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQpAQCAtMTY1MSw3ICsxNjQxLDYgQEAgeXlyZWR1
Y2U6CiAKICAgKisreXl2c3AgPSB5eXZhbDsKIAotCiAgIC8qIE5vdyBgc2hpZnQnIHRoZSByZXN1
bHQgb2YgdGhlIHJlZHVjdGlvbi4gIERldGVybWluZSB3aGF0IHN0YXRlCiAgICAgIHRoYXQgZ29l
cyB0bywgYmFzZWQgb24gdGhlIHN0YXRlIHdlIHBvcHBlZCBiYWNrIHRvIGFuZCB0aGUgcnVsZQog
ICAgICBudW1iZXIgcmVkdWNlZCBieS4gICovCkBAIC0xNzE2LDcgKzE3MDUsNyBAQCB5eWVycmxh
YjoKIAogICBpZiAoeXllcnJzdGF0dXMgPT0gMykKICAgICB7Ci0gICAgICAvKiBJZiBqdXN0IHRy
aWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBhbgorICAgICAg
LyogSWYganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRl
ciBhbgogCSBlcnJvciwgZGlzY2FyZCBpdC4gICovCiAKICAgICAgIGlmICh5eWNoYXIgPD0gWVlF
T0YpCkBAIC0xNzMzLDcgKzE3MjIsNyBAQCB5eWVycmxhYjoKIAl9CiAgICAgfQogCi0gIC8qIEVs
c2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUg
ZXJyb3IKKyAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIg
c2hpZnRpbmcgdGhlIGVycm9yCiAgICAgIHRva2VuLiAgKi8KICAgZ290byB5eWVycmxhYjE7CiAK
QEAgLTE3OTAsOSArMTc3OSw2IEBAIHl5ZXJybGFiMToKICAgICAgIFlZX1NUQUNLX1BSSU5UICh5
eXNzLCB5eXNzcCk7CiAgICAgfQogCi0gIGlmICh5eW4gPT0gWVlGSU5BTCkKLSAgICBZWUFDQ0VQ
VDsKLQogICAqKyt5eXZzcCA9IHl5bHZhbDsKIAogCkBAIC0xODE3LDcgKzE4MDMsNyBAQCB5eWFi
b3J0bGFiOgogICB5eXJlc3VsdCA9IDE7CiAgIGdvdG8geXlyZXR1cm47CiAKLSNpZm5kZWYgeXlv
dmVyZmxvdworI2lmICFkZWZpbmVkKHl5b3ZlcmZsb3cpIHx8IFlZRVJST1JfVkVSQk9TRQogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCB5eWV4
aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTgyOCw3ICsx
ODE0LDcgQEAgeXlleGhhdXN0ZWRsYWI6CiAjZW5kaWYKIAogeXlyZXR1cm46Ci0gIGlmICh5eWNo
YXIgIT0gWVlFT0YgJiYgeXljaGFyICE9IFlZRU1QVFkpCisgIGlmICh5eWNoYXIgIT0gWVlFTVBU
WSkKICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKIAkJ
IHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQpOwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3lt
Ym9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIu
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIueQkocmV2aXNpb24gMTQzMDExKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFy
c2VyLnkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDE4ICsyMCwxMyBAQCBXSElDSCBHRU5FUkFURVMg
VEhFIEdMU0wgRVMgcHJlcHJvY2Vzc29yCiAKIC8vIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBieSBnZW5lcmF0ZV9wYXJzZXIuc2guIERPIE5PVCBFRElUIQogCi0vLyBJZiBjbGFuZyBvciBn
Y2MuCiAjaWYgZGVmaW5lZChfX0dOVUNfXykKLQotLy8gVHVybiBvZmYgdW5pbml0aWFsaXplZCB2
YXJpYWJsZSB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIGF1dG8tZ2VuZXJhdGVkIHBwbHZhbCB2
YXJpYWJsZS4KLS8vIE9uIGdjYyA0LjcrLCBUaGUgZmxhZyBpcyBjYWxsZWQgIi1XbWF5YmUtdW5p
bml0aWFsaXplZCIuCi0vLyBPbiBjbGFuZyBhbmQgZ2NjIDwgNC43LCB0aGUgZmxhZyBpcyBjYWxs
ZWQgIi1XdW5pbml0aWFsaXplZCIuCi0jaWYgIWRlZmluZWQoX19jbGFuZ19fKSAmJiAoKF9fR05V
Q19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNykgfHwgX19HTlVDX18gPj0gNSkKKy8vIFRy
aWdnZXJlZCBieSB0aGUgYXV0by1nZW5lcmF0ZWQgcHBsdmFsIHZhcmlhYmxlLgorI2lmICFkZWZp
bmVkKF9fY2xhbmdfXykgJiYgKChfX0dOVUNfXyA+IDQpIHx8IChfX0dOVUNfXyA9PSA0ICYmIF9f
R05VQ19NSU5PUl9fID49IDcpKQogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV21h
eWJlLXVuaW5pdGlhbGl6ZWQiCiAjZWxzZQogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV3VuaW5pdGlhbGl6ZWQiCiAjZW5kaWYKLQogI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKICNw
cmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDY1IDQ3MDEpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvSW5wdXQuY3BwCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTcsMzIgKzE3LDI0IEBAIElucHV0OjpJbnB1dCgpIDogbUNvdW50KDApLCBtU3RyaW5nKDApCiB7
CiB9CiAKLUlucHV0OjpJbnB1dChpbnQgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1td
LCBjb25zdCBpbnQgbGVuZ3RoW10pIDoKK0lucHV0OjpJbnB1dChzaXplX3QgY291bnQsIGNvbnN0
IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pIDoKICAgICBtQ291bnQo
Y291bnQpLAogICAgIG1TdHJpbmcoc3RyaW5nKQogewotICAgIGFzc2VydChtQ291bnQgPj0gMCk7
CiAgICAgbUxlbmd0aC5yZXNlcnZlKG1Db3VudCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBt
Q291bnQ7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Db3VudDsgKytpKQogICAg
IHsKICAgICAgICAgaW50IGxlbiA9IGxlbmd0aCA/IGxlbmd0aFtpXSA6IC0xOwotI2lmIGRlZmlu
ZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Nob3J0ZW4tNjQtdG8tMzIiCi0jZW5kaWYKICAgICAg
ICAgbUxlbmd0aC5wdXNoX2JhY2sobGVuIDwgMCA/IHN0ZDo6c3RybGVuKG1TdHJpbmdbaV0pIDog
bGVuKTsKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKLSNlbmRpZgogICAgIH0KIH0KIAotaW50IElucHV0OjpyZWFkKGNoYXIqIGJ1ZiwgaW50IG1h
eFNpemUpCitzaXplX3QgSW5wdXQ6OnJlYWQoY2hhciogYnVmLCBzaXplX3QgbWF4U2l6ZSkKIHsK
LSAgICBpbnQgblJlYWQgPSAwOworICAgIHNpemVfdCBuUmVhZCA9IDA7CiAgICAgd2hpbGUgKChu
UmVhZCA8IG1heFNpemUpICYmIChtUmVhZExvYy5zSW5kZXggPCBtQ291bnQpKQogICAgIHsKLSAg
ICAgICAgaW50IHNpemUgPSBtTGVuZ3RoW21SZWFkTG9jLnNJbmRleF0gLSBtUmVhZExvYy5jSW5k
ZXg7CisgICAgICAgIHNpemVfdCBzaXplID0gbUxlbmd0aFttUmVhZExvYy5zSW5kZXhdIC0gbVJl
YWRMb2MuY0luZGV4OwogICAgICAgICBzaXplID0gc3RkOjptaW4oc2l6ZSwgbWF4U2l6ZSk7CiAg
ICAgICAgIHN0ZDo6bWVtY3B5KGJ1ZiArIG5SZWFkLCBtU3RyaW5nW21SZWFkTG9jLnNJbmRleF0g
KyBtUmVhZExvYy5jSW5kZXgsIHNpemUpOwogICAgICAgICBuUmVhZCArPSBzaXplOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvSW5wdXQuaAkocmV2aXNpb24gMTQzMDExKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03LDYgKzcsNyBAQAogI2lmbmRlZiBDT01QSUxFUl9QUkVQUk9DRVNTT1JfSU5QVVRfSF8KICNk
ZWZpbmUgQ09NUElMRVJfUFJFUFJPQ0VTU09SX0lOUFVUX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYu
aD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFjZSBwcApAQCAtMTcsMTggKzE4LDE4IEBA
IGNsYXNzIElucHV0CiB7CiAgIHB1YmxpYzoKICAgICBJbnB1dCgpOwotICAgIElucHV0KGludCBj
b3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSk7Cisg
ICAgSW5wdXQoc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3Qg
aW50IGxlbmd0aFtdKTsKIAotICAgIGludCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1Db3VudDsg
fQotICAgIGNvbnN0IGNoYXIqIHN0cmluZyhpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1TdHJp
bmdbaW5kZXhdOyB9Ci0gICAgaW50IGxlbmd0aChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1M
ZW5ndGhbaW5kZXhdOyB9CisgICAgc2l6ZV90IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbUNvdW50
OyB9CisgICAgY29uc3QgY2hhciogc3RyaW5nKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4g
bVN0cmluZ1tpbmRleF07IH0KKyAgICBzaXplX3QgbGVuZ3RoKHNpemVfdCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gbUxlbmd0aFtpbmRleF07IH0KIAotICAgIGludCByZWFkKGNoYXIqIGJ1ZiwgaW50
IG1heFNpemUpOworICAgIHNpemVfdCByZWFkKGNoYXIqIGJ1Ziwgc2l6ZV90IG1heFNpemUpOwog
CiAgICAgc3RydWN0IExvY2F0aW9uCiAgICAgewotICAgICAgICBpbnQgc0luZGV4OyAgLy8gU3Ry
aW5nIGluZGV4OwotICAgICAgICBpbnQgY0luZGV4OyAgLy8gQ2hhciBpbmRleC4KKyAgICAgICAg
c2l6ZV90IHNJbmRleDsgIC8vIFN0cmluZyBpbmRleDsKKyAgICAgICAgc2l6ZV90IGNJbmRleDsg
IC8vIENoYXIgaW5kZXguCiAKICAgICAgICAgTG9jYXRpb24oKSA6IHNJbmRleCgwKSwgY0luZGV4
KDApIHsgfQogICAgIH07CkBAIC0zNiw5ICszNyw5IEBAIGNsYXNzIElucHV0CiAKICAgcHJpdmF0
ZToKICAgICAvLyBJbnB1dC4KLSAgICBpbnQgbUNvdW50OworICAgIHNpemVfdCBtQ291bnQ7CiAg
ICAgY29uc3QgY2hhciogY29uc3QqIG1TdHJpbmc7Ci0gICAgc3RkOjp2ZWN0b3I8aW50PiBtTGVu
Z3RoOworICAgIHN0ZDo6dmVjdG9yPHNpemVfdD4gbUxlbmd0aDsKIAogICAgIExvY2F0aW9uIG1S
ZWFkTG9jOwogfTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5jcHAJKHJl
dmlzaW9uIDE0MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgs
NyBAQCBQcmVwcm9jZXNzb3I6On5QcmVwcm9jZXNzb3IoKQogICAgIGRlbGV0ZSBtSW1wbDsKIH0K
IAotYm9vbCBQcmVwcm9jZXNzb3I6OmluaXQoaW50IGNvdW50LAorYm9vbCBQcmVwcm9jZXNzb3I6
OmluaXQoc2l6ZV90IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
Y29uc3Qgc3RyaW5nW10sCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGVuZ3Ro
W10pCiB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL1ByZXByb2Nlc3Nvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmgJKHJldmlzaW9uIDE0
MzAxMSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvUHJlcHJvY2Vzc29yLmgJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw4IEBACiAjaWZuZGVm
IENPTVBJTEVSX1BSRVBST0NFU1NPUl9QUkVQUk9DRVNTT1JfSF8KICNkZWZpbmUgQ09NUElMRVJf
UFJFUFJPQ0VTU09SX1BSRVBST0NFU1NPUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNp
bmNsdWRlICJwcF91dGlscy5oIgogCiBuYW1lc3BhY2UgcHAKQEAgLTMyLDcgKzM0LDcgQEAgY2xh
c3MgUHJlcHJvY2Vzc29yCiAgICAgLy8gRWFjaCBlbGVtZW50IGluIHRoZSBsZW5ndGggYXJyYXkg
bWF5IGNvbnRhaW4gdGhlIGxlbmd0aCBvZiB0aGUKICAgICAvLyBjb3JyZXNwb25kaW5nIHN0cmlu
ZyBvciBhIHZhbHVlIGxlc3MgdGhhbiAwIHRvIGluZGljYXRlIHRoYXQgdGhlIHN0cmluZwogICAg
IC8vIGlzIG51bGwgdGVybWluYXRlZC4KLSAgICBib29sIGluaXQoaW50IGNvdW50LCBjb25zdCBj
aGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdKTsKKyAgICBib29sIGluaXQo
c2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0
aFtdKTsKICAgICAvLyBBZGRzIGEgcHJlLWRlZmluZWQgbWFjcm8uCiAgICAgdm9pZCBwcmVkZWZp
bmVNYWNybyhjb25zdCBjaGFyKiBuYW1lLCBpbnQgdmFsdWUpOwogCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9Ub2tlbml6ZXIuY3BwCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyMCw5ICs1MjAsNiBAQCBJRiBZT1UgTU9ESUZZIFRISVMgRklMRSBZT1UgQUxT
TyBORUVEIFRPCiAjaW5jbHVkZSAiRGlhZ25vc3RpY3NCYXNlLmgiCiAjaW5jbHVkZSAiVG9rZW4u
aCIKIAotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1Xc2hvcnRlbi02NC10by0zMiIKLSNlbmRpZgogI2lmIGRlZmluZWQoX19HTlVDX18p
CiAvLyBUcmlnZ2VyZWQgYnkgdGhlIGF1dG8tZ2VuZXJhdGVkIHl5X2ZhdGFsX2Vycm9yIGZ1bmN0
aW9uLgogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1cm4i
CkBAIC0xMTIyLDEzICsxMTE5LDE0IEBAIGNhc2UgWVlfU1RBVEVfRU9GKENPTU1FTlQpOgogICAg
IC8vIFNldCB0aGUgbG9jYXRpb24gZm9yIEVPRiB0b2tlbiBtYW51YWxseS4KICAgICBwcDo6SW5w
dXQqIGlucHV0ID0gJnl5ZXh0cmEtPmlucHV0OwogICAgIHBwOjpJbnB1dDo6TG9jYXRpb24qIHNj
YW5Mb2MgPSAmeXlleHRyYS0+c2NhbkxvYzsKLSAgICBpbnQgc0luZGV4TWF4ID0gc3RkOjptYXgo
MCwgaW5wdXQtPmNvdW50KCkgLSAxKTsKKyAgICB5eV9zaXplX3Qgc0luZGV4TWF4ID0gaW5wdXQt
PmNvdW50KCkgPyBpbnB1dC0+Y291bnQoKSAtIDEgOiAwOwogICAgIGlmIChzY2FuTG9jLT5zSW5k
ZXggIT0gc0luZGV4TWF4KQogICAgIHsKICAgICAgICAgLy8gV2UgY2FuIG9ubHkgcmVhY2ggaGVy
ZSBpZiB0aGVyZSBhcmUgZW1wdHkgc3RyaW5ncyBhdCB0aGUKICAgICAgICAgLy8gZW5kIG9mIHRo
ZSBpbnB1dC4KICAgICAgICAgc2NhbkxvYy0+c0luZGV4ID0gc0luZGV4TWF4OyBzY2FuTG9jLT5j
SW5kZXggPSAwOwotICAgICAgICB5eWZpbGVubyA9IHNJbmRleE1heDsgeXlsaW5lbm8gPSAxOwor
ICAgICAgICAvLyBGSVhNRTogdGhpcyBpcyBub3QgNjQtYml0IGNsZWFuLgorICAgICAgICB5eWZp
bGVubyA9IHN0YXRpY19jYXN0PGludD4oc0luZGV4TWF4KTsgeXlsaW5lbm8gPSAxOwogICAgIH0K
ICAgICB5eWxsb2MtPmZpbGUgPSB5eWZpbGVubzsKICAgICB5eWxsb2MtPmxpbmUgPSB5eWxpbmVu
bzsKQEAgLTIyOTcsOSArMjI5NSw4IEBAIFRva2VuaXplcjo6flRva2VuaXplcigpCiAgICAgZGVz
dHJveVNjYW5uZXIoKTsKIH0KIAotYm9vbCBUb2tlbml6ZXI6OmluaXQoaW50IGNvdW50LCBjb25z
dCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdKQorYm9vbCBUb2tlbml6
ZXI6OmluaXQoc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3Qg
aW50IGxlbmd0aFtdKQogewotICAgIGlmIChjb3VudCA8IDApIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoKGNvdW50ID4gMCkgJiYgKHN0cmluZyA9PSAwKSkgcmV0dXJuIGZhbHNlOwogCiAgICAgbUNv
bnRleHQuaW5wdXQgPSBJbnB1dChjb3VudCwgc3RyaW5nLCBsZW5ndGgpOwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL1Rva2VuaXplci5oCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIFRva2VuaXplciA6IHB1YmxpYyBMZXhlcgogICAg
IFRva2VuaXplcihEaWFnbm9zdGljcyogZGlhZ25vc3RpY3MpOwogICAgIH5Ub2tlbml6ZXIoKTsK
IAotICAgIGJvb2wgaW5pdChpbnQgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBj
b25zdCBpbnQgbGVuZ3RoW10pOworICAgIGJvb2wgaW5pdChzaXplX3QgY291bnQsIGNvbnN0IGNo
YXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pOwogCiAgICAgdm9pZCBzZXRG
aWxlTnVtYmVyKGludCBmaWxlKTsKICAgICB2b2lkIHNldExpbmVOdW1iZXIoaW50IGxpbmUpOwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9U
b2tlbml6ZXIubAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5sCShyZXZpc2lvbiAxNDMwMTEpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5s
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw2IEBAIElGIFlPVSBNT0RJRlkgVEhJUyBGSUxF
IFlPVSBBTFNPIE5FRUQgVE8KICNpbmNsdWRlICJEaWFnbm9zdGljc0Jhc2UuaCIKICNpbmNsdWRl
ICJUb2tlbi5oIgogCi0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdzaG9ydGVuLTY0LXRvLTMyIgotI2VuZGlmCiAjaWYgZGVmaW5lZChf
X0dOVUNfXykKIC8vIFRyaWdnZXJlZCBieSB0aGUgYXV0by1nZW5lcmF0ZWQgeXlfZmF0YWxfZXJy
b3IgZnVuY3Rpb24uCiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1u
b3JldHVybiIKQEAgLTI0MiwxMyArMjM5LDE0IEBAIEZSQUNUSU9OQUxfQ09OU1RBTlQgICh7RElH
SVR9KiIuIntESUdJVH0KICAgICAvLyBTZXQgdGhlIGxvY2F0aW9uIGZvciBFT0YgdG9rZW4gbWFu
dWFsbHkuCiAgICAgcHA6OklucHV0KiBpbnB1dCA9ICZ5eWV4dHJhLT5pbnB1dDsKICAgICBwcDo6
SW5wdXQ6OkxvY2F0aW9uKiBzY2FuTG9jID0gJnl5ZXh0cmEtPnNjYW5Mb2M7Ci0gICAgaW50IHNJ
bmRleE1heCA9IHN0ZDo6bWF4KDAsIGlucHV0LT5jb3VudCgpIC0gMSk7CisgICAgeXlfc2l6ZV90
IHNJbmRleE1heCA9IGlucHV0LT5jb3VudCgpID8gaW5wdXQtPmNvdW50KCkgLSAxIDogMDsKICAg
ICBpZiAoc2NhbkxvYy0+c0luZGV4ICE9IHNJbmRleE1heCkKICAgICB7CiAgICAgICAgIC8vIFdl
IGNhbiBvbmx5IHJlYWNoIGhlcmUgaWYgdGhlcmUgYXJlIGVtcHR5IHN0cmluZ3MgYXQgdGhlCiAg
ICAgICAgIC8vIGVuZCBvZiB0aGUgaW5wdXQuCiAgICAgICAgIHNjYW5Mb2MtPnNJbmRleCA9IHNJ
bmRleE1heDsgc2NhbkxvYy0+Y0luZGV4ID0gMDsKLSAgICAgICAgeXlmaWxlbm8gPSBzSW5kZXhN
YXg7IHl5bGluZW5vID0gMTsKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgaXMgbm90IDY0LWJpdCBj
bGVhbi4KKyAgICAgICAgeXlmaWxlbm8gPSBzdGF0aWNfY2FzdDxpbnQ+KHNJbmRleE1heCk7IHl5
bGluZW5vID0gMTsKICAgICB9CiAgICAgeXlsbG9jLT5maWxlID0geXlmaWxlbm87CiAgICAgeXls
bG9jLT5saW5lID0geXlsaW5lbm87CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlC
b3VuZHNDbGFtcGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgInRoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRz
Q2xhbXBlci5oIgorCisvLyBUaGUgYnVpbHQtaW4gJ2NsYW1wJyBpbnN0cnVjdGlvbiBvbmx5IGFj
Y2VwdHMgZmxvYXRzIGFuZCByZXR1cm5zIGEgZmxvYXQuICBJCisvLyBpdGVyYXRlZCBhIGZldyB0
aW1lcyB3aXRoIG91ciBkcml2ZXIgdGVhbSB3aG8gZXhhbWluZWQgdGhlIG91dHB1dCBmcm9tIG91
cgorLy8gY29tcGlsZXIgLSB0aGV5IHNhaWQgdGhlIG11bHRpcGxlIGNhc3RzIGdlbmVyYXRlcyBt
b3JlIGNvZGUgdGhhbiBhIHNpbmdsZQorLy8gZnVuY3Rpb24gY2FsbC4gIEFuIGlubGluZSB0ZXJu
YXJ5IG9wZXJhdG9yIG1pZ2h0IGhhdmUgYmVlbiBiZXR0ZXIsIGJ1dCBzaW5jZQorLy8gdGhlIGlu
ZGV4IHZhbHVlIG1pZ2h0IGJlIGFuIGV4cHJlc3Npb24gaXRzZWxmLCB3ZSdkIGhhdmUgdG8gbWFr
ZSB0ZW1wb3JhcnkKKy8vIHZhcmlhYmxlcyB0byBhdm9pZCBldmFsdWF0aW5nIHRoZSBleHByZXNz
aW9uIG11bHRpcGxlIHRpbWVzLiAgQW5kIG1ha2luZworLy8gdGVtcG9yYXJ5IHZhcmlhYmxlcyB3
YXMgZGlmZmljdWx0IGJlY2F1c2UgQU5HTEUgd291bGQgdGhlbiBuZWVkIHRvIG1ha2UgbW9yZQor
Ly8gYnJ1dGFsIGNoYW5nZXMgdG8gdGhlIGV4cHJlc3Npb24gdHJlZS4KKworY29uc3QgY2hhciog
a0ludENsYW1wQmVnaW4gPSAiLy8gQkVHSU46IEdlbmVyYXRlZCBjb2RlIGZvciBhcnJheSBib3Vu
ZHMgY2xhbXBpbmdcblxuIjsKK2NvbnN0IGNoYXIqIGtJbnRDbGFtcEVuZCA9ICIvLyBFTkQ6IEdl
bmVyYXRlZCBjb2RlIGZvciBhcnJheSBib3VuZHMgY2xhbXBpbmdcblxuIjsKK2NvbnN0IGNoYXIq
IGtJbnRDbGFtcERlZmluaXRpb24gPSAiaW50IHdlYmdsX2ludF9jbGFtcChpbnQgdmFsdWUsIGlu
dCBtaW5WYWx1ZSwgaW50IG1heFZhbHVlKSB7IHJldHVybiAoKHZhbHVlIDwgbWluVmFsdWUpID8g
bWluVmFsdWUgOiAoKHZhbHVlID4gbWF4VmFsdWUpID8gbWF4VmFsdWUgOiB2YWx1ZSkpOyB9XG5c
biI7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIEFycmF5Qm91bmRzQ2xhbXBlck1hcmtlciA6IHB1
YmxpYyBUSW50ZXJtVHJhdmVyc2VyIHsKK3B1YmxpYzoKKyAgICBBcnJheUJvdW5kc0NsYW1wZXJN
YXJrZXIoKQorICAgICAgICA6IG1OZWVkc0NsYW1wKGZhbHNlKQorICAgeworICAgfQorCisgICB2
aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkqIG5vZGUp
CisgICB7CisgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wSW5kZXhJbmRpcmVjdCkKKyAg
ICAgICB7CisgICAgICAgICAgIFRJbnRlcm1UeXBlZCogbGVmdCA9IG5vZGUtPmdldExlZnQoKTsK
KyAgICAgICAgICAgaWYgKGxlZnQtPmlzQXJyYXkoKSB8fCBsZWZ0LT5pc1ZlY3RvcigpIHx8IGxl
ZnQtPmlzTWF0cml4KCkpCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIG5vZGUtPnNldEFk
ZEluZGV4Q2xhbXAoKTsKKyAgICAgICAgICAgICAgIG1OZWVkc0NsYW1wID0gdHJ1ZTsKKyAgICAg
ICAgICAgfQorICAgICAgIH0KKyAgICAgICByZXR1cm4gdHJ1ZTsKKyAgIH0KKworICAgIGJvb2wg
R2V0TmVlZHNDbGFtcCgpIHsgcmV0dXJuIG1OZWVkc0NsYW1wOyB9CisKK3ByaXZhdGU6CisgICAg
Ym9vbCBtTmVlZHNDbGFtcDsKK307CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworQXJy
YXlCb3VuZHNDbGFtcGVyOjpBcnJheUJvdW5kc0NsYW1wZXIoKQorICAgIDogbUNsYW1waW5nU3Ry
YXRlZ3koU0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMpCisgICAgLCBtQXJyYXlCb3VuZHND
bGFtcERlZmluaXRpb25OZWVkZWQoZmFsc2UpCit7Cit9CisKK3ZvaWQgQXJyYXlCb3VuZHNDbGFt
cGVyOjpTZXRDbGFtcGluZ1N0cmF0ZWd5KFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgY2xh
bXBpbmdTdHJhdGVneSkKK3sKKyAgICBtQ2xhbXBpbmdTdHJhdGVneSA9IGNsYW1waW5nU3RyYXRl
Z3k7Cit9CisKK3ZvaWQgQXJyYXlCb3VuZHNDbGFtcGVyOjpNYXJrSW5kaXJlY3RBcnJheUJvdW5k
c0ZvckNsYW1waW5nKFRJbnRlcm1Ob2RlKiByb290KQoreworICAgIEFTU0VSVChyb290KTsKKwor
ICAgIEFycmF5Qm91bmRzQ2xhbXBlck1hcmtlciBjbGFtcGVyOworICAgIHJvb3QtPnRyYXZlcnNl
KCZjbGFtcGVyKTsKKyAgICBpZiAoY2xhbXBlci5HZXROZWVkc0NsYW1wKCkpCisgICAgeworICAg
ICAgICBTZXRBcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlvbk5lZWRlZCgpOworICAgIH0KK30KKwor
dm9pZCBBcnJheUJvdW5kc0NsYW1wZXI6Ok91dHB1dENsYW1waW5nRnVuY3Rpb25EZWZpbml0aW9u
KFRJbmZvU2lua0Jhc2UmIG91dCkgY29uc3QKK3sKKyAgICBpZiAoIW1BcnJheUJvdW5kc0NsYW1w
RGVmaW5pdGlvbk5lZWRlZCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KG1DbGFtcGluZ1N0cmF0ZWd5ICE9IFNIX0NMQU1QX1dJVEhfVVNFUl9ERUZJTkVEX0lOVF9DTEFN
UF9GVU5DVElPTikKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgb3V0IDw8IGtJ
bnRDbGFtcEJlZ2luIDw8IGtJbnRDbGFtcERlZmluaXRpb24gPDwga0ludENsYW1wRW5kOworfQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3Bh
cnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHAKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
OmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Ro
aXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5k
c0NsYW1wZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBUSElSRF9QQVJUWV9DT01QSUxFUl9BUlJBWV9CT1VORFNfQ0xBTVBFUl9I
XworI2RlZmluZSBUSElSRF9QQVJUWV9DT01QSUxFUl9BUlJBWV9CT1VORFNfQ0xBTVBFUl9IXwor
CisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisKKyNpbmNsdWRlICJjb21waWxlci9J
bmZvU2luay5oIgorI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgorCitjbGFzcyBB
cnJheUJvdW5kc0NsYW1wZXIgeworcHVibGljOgorICAgIEFycmF5Qm91bmRzQ2xhbXBlcigpOwor
CisgICAgLy8gTXVzdCBiZSBzZXQgYmVmb3JlIGNvbXBpbGluZyBhbnkgc2hhZGVycyB0byBlbnN1
cmUgY29uc2lzdGVuY3kKKyAgICAvLyBiZXR3ZWVuIHRoZSB0cmFuc2xhdGVkIHNoYWRlcnMgYW5k
IGFueSBuZWNlc3NhcnkgcHJlcXVlbC4KKyAgICB2b2lkIFNldENsYW1waW5nU3RyYXRlZ3koU2hB
cnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBjbGFtcGluZ1N0cmF0ZWd5KTsKKworICAgIC8vIE1h
cmtzIG5vZGVzIGluIHRoZSB0cmVlIHRoYXQgaW5kZXggYXJyYXlzIGluZGlyZWN0bHkgYXMKKyAg
ICAvLyByZXF1aXJpbmcgY2xhbXBpbmcuCisgICAgdm9pZCBNYXJrSW5kaXJlY3RBcnJheUJvdW5k
c0ZvckNsYW1waW5nKFRJbnRlcm1Ob2RlKiByb290KTsKKworICAgIC8vIElmIG5lY2Vzc2FyeSwg
b3V0cHV0IGFycmF5IGNsYW1wIGZ1bmN0aW9uIHNvdXJjZSBpbnRvIHRoZSBzaGFkZXIgc291cmNl
LgorICAgIHZvaWQgT3V0cHV0Q2xhbXBpbmdGdW5jdGlvbkRlZmluaXRpb24oVEluZm9TaW5rQmFz
ZSYgb3V0KSBjb25zdDsKKworICAgIHZvaWQgQ2xlYW51cCgpCisgICAgeworICAgICAgICBtQXJy
YXlCb3VuZHNDbGFtcERlZmluaXRpb25OZWVkZWQgPSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgYm9vbCBHZXRBcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlvbk5lZWRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1BcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlvbk5lZWRlZDsgfQorICAgIHZvaWQgU2V0
QXJyYXlCb3VuZHNDbGFtcERlZmluaXRpb25OZWVkZWQoKSB7IG1BcnJheUJvdW5kc0NsYW1wRGVm
aW5pdGlvbk5lZWRlZCA9IHRydWU7IH0KKworICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRl
Z3kgbUNsYW1waW5nU3RyYXRlZ3k7CisgICAgYm9vbCBtQXJyYXlCb3VuZHNDbGFtcERlZmluaXRp
b25OZWVkZWQ7Cit9OworCisjZW5kaWYgLy8gVEhJUkRfUEFSVFlfQ09NUElMRVJfQVJSQVlfQk9V
TkRTX0NMQU1QRVJfSF8KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvTElDRU5TRQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvTElDRU5TRQko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9j
b21waWxlci9MSUNFTlNFCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACitDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworYXJlIG1ldDoKKzEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKK0lNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFLCBJTkMuIE9SCitDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKK0VYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKK1BST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhp
cmRfcGFydHkvY29tcGlsZXIvUkVBRE1FLmFuZ2xlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9SRUFETUUuYW5nbGUJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGls
ZXIvUkVBRE1FLmFuZ2xlCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitOYW1lOiBBTkdM
RSBhcnJheSBib3VuZHMgY2xhbXBlciBmcm9tIFdlYktpdAorU2hvcnQgTmFtZTogV2ViS2l0CitV
Ukw6IGh0dHA6Ly93ZWJraXQub3JnCitWZXJzaW9uOiAwCitMaWNlbnNlOiBCU0QKK1NlY3VyaXR5
IENyaXRpY2FsOiB5ZXMKKworRGVzY3JpcHRpb246CitJbXBsZW1lbnRzIGNsYW1waW5nIG9mIGFy
cmF5IGluZGV4aW5nIGV4cHJlc3Npb25zIGR1cmluZyBzaGFkZXIgdHJhbnNsYXRpb24uCisKK0xv
Y2FsIE1vZGlmaWNhdGlvbnM6CitOb25lCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189616</attachid>
            <date>2013-02-21 15:23:48 -0800</date>
            <delta_ts>2013-02-21 17:13:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110513-20130221152008.patch</filename>
            <type>text/plain</type>
            <size>115830</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzOSBAQAorMjAxMy0wMi0yMSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFJvbGwgQU5HTEUgdG8gcjE4MTMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDUxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwc3RyZWFtIEFOR0xFIHIxODEzIGluY2x1ZGVzIHdlYmtpdCBzaWRl
IGxvY2FsIGZpeGVzCisgICAgICAgIDEpIHIxMzk3NTggYnVpbGQgZml4IGZvciAtV3Nob3J0ZW4t
NjQtdG8tMzIKKyAgICAgICAgMikgcjEzOTY2NSBidWlsZCBmaXggZm9yIHVuaW5pdGlhbGl6ZWQg
dmFyaWFibGVzCisKKyAgICAgICAgQWZ0ZXIgdGhpcyByb2xsLCBXZWJLaXQgc2lkZSBBTkdMRSBp
cyB0aGUgc2FtZSBhcyB1cHN0cmVhbSBBTkdMRSByMTgxMywgZXhjZXB0OgorICAgICAgICAxKSBp
bmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oLCB3aGVyZSAiS0hSIiBpcyByZW1vdmVkIGZyb20g
aW5jbHVkZSBwYXRoLgorICAgICAgICAyKSByZW1vdmUgYW4gZW1wdHkgZmlsZSBvc3NvdXJjZV9u
c3ByLmNwcAorCisgICAgICAgICogQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGluY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5n
Lmg6CisgICAgICAgICogc3JjL2NvbW1vbi9kZWJ1Zy5jcHA6CisgICAgICAgICogc3JjL2NvbW1v
bi9zeXN0ZW0uaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbW1vbi92ZXJzaW9uLmg6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogc3JjL2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHNyYy9jb21waWxlci9Db21waWxlci5jcHA6CisgICAgICAgIChUQ29tcGlsZXI6OlRDb21w
aWxlcik6CisgICAgICAgIChUQ29tcGlsZXI6OkluaXQpOgorICAgICAgICAoVENvbXBpbGVyOjpj
b21waWxlKToKKyAgICAgICAgKFRDb21waWxlcjo6Z2V0QXJyYXlCb3VuZHNDbGFtcGVyKToKKyAg
ICAgICAgKFRDb21waWxlcjo6Z2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kpOgorICAgICAg
ICAoVENvbXBpbGVyOjpnZXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcik6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwOgorICAgICAgICAoc2g6OkRldGVjdExv
b3BEaXNjb250aW51aXR5Ojp0cmF2ZXJzZSk6CisgICAgICAgIChzaDo6RGV0ZWN0TG9vcERpc2Nv
bnRpbnVpdHk6OnZpc2l0TG9vcCk6CisgICAgICAgIChzaCk6CisgICAgICAgIChzaDo6RGV0ZWN0
TG9vcERpc2NvbnRpbnVpdHk6OnZpc2l0QnJhbmNoKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
RGV0ZWN0RGlzY29udGludWl0eS5oOgorICAgICAgICAoRGV0ZWN0TG9vcERpc2NvbnRpbnVpdHkp
OgorICAgICAgICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcDoKKyAgICAgICAgKEluaXRF
eHRlbnNpb25CZWhhdmlvcik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5j
cHA6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZCk6CisgICAgICAgIChUSW50
ZXJtVHJhdmVyc2VyOjpoYXNoKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvTWFwTG9uZ1Zhcmlh
YmxlTmFtZXMuY3BwOgorICAgICAgICAoTG9uZ05hbWVNYXA6OlNpemUpOgorICAgICAgICAoTWFw
TG9uZ1ZhcmlhYmxlTmFtZXM6Om1hcEdsb2JhbExvbmdOYW1lKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaDoKKyAgICAgICAgKExvbmdOYW1lTWFwKToKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0RVNTTC5jcHA6CisgICAgICAgIChUT3V0cHV0RVNT
TDo6VE91dHB1dEVTU0wpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRFU1NMLmg6Cisg
ICAgICAgIChUT3V0cHV0RVNTTCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0wu
Y3BwOgorICAgICAgICAoVE91dHB1dEdMU0w6OlRPdXRwdXRHTFNMKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvT3V0cHV0R0xTTC5oOgorICAgICAgICAoVE91dHB1dEdMU0wpOgorICAgICAgICAq
IHNyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHA6CisgICAgICAgIChUT3V0cHV0R0xTTEJh
c2U6OlRPdXRwdXRHTFNMQmFzZSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OndyaXRlQ29u
c3RhbnRVbmlvbik6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmluYXJ5KToKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaDoKKyAgICAgICAgKFRPdXRwdXRH
TFNMQmFzZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwOgorICAgICAg
ICAoc2g6Ok91dHB1dEhMU0w6Om91dHB1dCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlz
aXRMb29wKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp3cml0ZUNvbnN0YW50VW5pb24pOgor
ICAgICAgICAqIHNyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHA6CisgICAgICAgIChUUGFyc2VD
b250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlY2spOgorICAgICAgICAoUGFQYXJzZVN0cmluZ3Mp
OgorICAgICAgICAqIHNyYy9jb21waWxlci9QYXJzZUhlbHBlci5oOgorICAgICAgICAqIHNyYy9j
b21waWxlci9TaEhhbmRsZS5oOgorICAgICAgICAoVENvbXBpbGVyKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvU2hhZGVyTGFuZy5jcHA6CisgICAgICAgIChjaGVja0FjdGl2ZVVuaWZvcm1BbmRB
dHRyaWJNYXhMZW5ndGhzKToKKyAgICAgICAgKGNoZWNrTWFwcGVkTmFtZU1heExlbmd0aCk6Cisg
ICAgICAgIChnZXRWYXJpYWJsZUluZm8pOgorICAgICAgICAoU2hJbml0QnVpbHRJblJlc291cmNl
cyk6CisgICAgICAgIChTaENvbXBpbGUpOgorICAgICAgICAoU2hHZXRJbmZvKToKKyAgICAgICAg
KFNoR2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFNoR2V0QWN0aXZlVW5pZm9ybSk6CisgICAg
ICAgIChTaEdldE5hbWVIYXNoaW5nRW50cnkpOgorICAgICAgICAqIHNyYy9jb21waWxlci9TeW1i
b2xUYWJsZS5oOgorICAgICAgICAoVEZ1bmN0aW9uOjpnZXRQYXJhbUNvdW50KToKKyAgICAgICAg
KFRGdW5jdGlvbjo6Z2V0UGFyYW0pOgorICAgICAgICAoVFN5bWJvbFRhYmxlOjpzZXREZWZhdWx0
UHJlY2lzaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVHJhbnNsYXRvckVTU0wuY3BwOgor
ICAgICAgICAoVHJhbnNsYXRvckVTU0w6OnRyYW5zbGF0ZSk6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL1RyYW5zbGF0b3JHTFNMLmNwcDoKKyAgICAgICAgKFRyYW5zbGF0b3JHTFNMOjp0cmFuc2xh
dGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcDoKKyAg
ICAgICAgKFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlRnVuY3Rpb25DYWxsKToKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvVmFyaWFibGVQYWNrZXIuY3BwOgorICAgICAgICAoVmFyaWFibGVQ
YWNrZXI6OkdldE51bVJvd3MpOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nLmg6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmcubDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
Z2xzbGFuZy55OgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHA6CisgICAg
ICAgIChzdHJpbmdfaW5wdXQpOgorICAgICAgICAoZ2xzbGFuZ19zY2FuKToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwOgorICAgICAgICAqIHNyYy9jb21waWxlci9vc2lu
Y2x1ZGUuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25Q
YXJzZXIuY3BwOgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lv
blBhcnNlci55OgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuY3Bw
OgorICAgICAgICAocHA6OklucHV0OjpJbnB1dCk6CisgICAgICAgIChwcDo6SW5wdXQ6OnJlYWQp
OgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuaDoKKyAgICAgICAg
KElucHV0KToKKyAgICAgICAgKHBwOjpJbnB1dDo6Y291bnQpOgorICAgICAgICAocHA6OklucHV0
OjpzdHJpbmcpOgorICAgICAgICAocHA6OklucHV0OjpsZW5ndGgpOgorICAgICAgICAoTG9jYXRp
b24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmNw
cDoKKyAgICAgICAgKHBwOjpQcmVwcm9jZXNzb3I6OmluaXQpOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmg6CisgICAgICAgIChQcmVwcm9jZXNzb3Ip
OgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcDoKKyAg
ICAgICAgKHBwOjpUb2tlbml6ZXI6OmluaXQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvVG9rZW5pemVyLmg6CisgICAgICAgIChUb2tlbml6ZXIpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmw6CisgICAgICAgICogc3JjL3RoaXJk
X3BhcnR5OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXI6IEFkZGVk
LgorICAgICAgICAqIHNyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEFycmF5Qm91bmRzQ2xhbXBlcjo6QXJyYXlCb3VuZHNDbGFt
cGVyKToKKyAgICAgICAgKEFycmF5Qm91bmRzQ2xhbXBlcjo6U2V0Q2xhbXBpbmdTdHJhdGVneSk6
CisgICAgICAgIChBcnJheUJvdW5kc0NsYW1wZXI6Ok1hcmtJbmRpcmVjdEFycmF5Qm91bmRzRm9y
Q2xhbXBpbmcpOgorICAgICAgICAoQXJyYXlCb3VuZHNDbGFtcGVyOjpPdXRwdXRDbGFtcGluZ0Z1
bmN0aW9uRGVmaW5pdGlvbik6CisgICAgICAgICogc3JjL3RoaXJkX3BhcnR5L2NvbXBpbGVyL0Fy
cmF5Qm91bmRzQ2xhbXBlci5oOiBBZGRlZC4KKyAgICAgICAgKEFycmF5Qm91bmRzQ2xhbXBlcik6
CisgICAgICAgIChBcnJheUJvdW5kc0NsYW1wZXI6OkNsZWFudXApOgorICAgICAgICAoQXJyYXlC
b3VuZHNDbGFtcGVyOjpHZXRBcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlvbk5lZWRlZCk6CisgICAg
ICAgIChBcnJheUJvdW5kc0NsYW1wZXI6OlNldEFycmF5Qm91bmRzQ2xhbXBEZWZpbml0aW9uTmVl
ZGVkKToKKyAgICAgICAgKiBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvTElDRU5TRTogQWRkZWQu
CisgICAgICAgICogc3JjL3RoaXJkX3BhcnR5L2NvbXBpbGVyL1JFQURNRS5hbmdsZTogQWRkZWQu
CisKIDIwMTMtMDItMDQgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTb3J0IEFOR0xFIFhjb2RlIHByb2plY3QgZmlsZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTcsNyArMTcsNiBAQCBJTkNMVURFUEFU
SCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL2luY2x1ZGUKIAogSEVBREVSUyArPSBcCi0gICAgc3Jj
L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oIFwKICAgICBzcmMvY29tcGlsZXIvQmFzZVR5
cGVzLmggXAogICAgIHNyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIFwKICAg
ICBzcmMvY29tcGlsZXIvQ29tbW9uLmggXApAQCAtODEsMTAgKzgwLDEwIEBAIEhFQURFUlMgKz0g
XAogICAgIHNyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmggXAogICAgIHNyYy9jb21w
aWxlci9WYXJpYWJsZUluZm8uaCBcCiAgICAgc3JjL2NvbXBpbGVyL1ZhcmlhYmxlUGFja2VyLmgg
XAotICAgIHNyYy9jb21waWxlci9WZXJzaW9uR0xTTC5oCisgICAgc3JjL2NvbXBpbGVyL1ZlcnNp
b25HTFNMLmggXAorICAgIHNyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1w
ZXIuaAogCiBTT1VSQ0VTICs9IFwKLSAgICBzcmMvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVy
LmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBcCiAg
ICAgc3JjL2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0NvbXBp
bGVyLmNwcCBcCkBAIC0xMzgsNiArMTM3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL1Rva2VuLmNwcCBcCisgICAgc3JjL3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRz
Q2xhbXBlci5jcHAKIAogd2luMzI6IFNPVVJDRVMgKz0gc3JjL2NvbXBpbGVyL29zc291cmNlX3dp
bi5jcHAKIGVsc2U6IFNPVVJDRVMgKz0gc3JjL2NvbXBpbGVyL29zc291cmNlX3Bvc2l4LmNwcApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC05LDggKzksNiBAQAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAkJMzEyQkRC
MEMxNUZFQ0FDOTAwOTdFQkM3IC8qIEFOR0xFLnBsaXN0IGluIENvcHlGaWxlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJCREIwOTE1RkVDOTFFMDA5N0VCQzcgLyogQU5H
TEUucGxpc3QgKi87IH07CiAJCTMxMkJEQjBFMTVGRUNBRTUwMDk3RUJDNyAvKiBBTkdMRS50eHQg
aW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkJEQjBB
MTVGRUNBM0EwMDk3RUJDNyAvKiBBTkdMRS50eHQgKi87IH07Ci0JCTMxNThFQTBFMTYzMDk2OEQw
MDZCRTVFRSAvKiBBcnJheUJvdW5kc0NsYW1wZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE1OEVBMEMxNjMwOTY4RDAwNkJFNUVFIC8qIEFycmF5
Qm91bmRzQ2xhbXBlci5jcHAgKi87IH07Ci0JCTMxNThFQTBGMTYzMDk2OEQwMDZCRTVFRSAvKiBB
cnJheUJvdW5kc0NsYW1wZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNThFQTBEMTYzMDk2OEQwMDZCRTVFRSAvKiBBcnJheUJvdW5kc0NsYW1wZXIu
aCAqLzsgfTsKIAkJNDk5NTFDMDMxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzAyMTRC
N0FBQjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggKi87IH07CiAJCTQ5OTUxQzA5MTRCN0FB
RDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNTE0QjdBQUQ3MDA2MEU5NkUg
LyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovOyB9OwogCQk0OTk1MUMwQTE0QjdBQUQ4
MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA2MTRCN0FBRDgwMDYwRTk2RSAvKiBC
dWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovOyB9OwpAQCAtMzIsNiArMzAsOCBAQAogCQk5MEQ5
QjExODEyRTExREQ2MDAyRDQyNTUgLyogVmFyaWFibGVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjExMDEyRTExREQ2MDAyRDQyNTUgLyog
VmFyaWFibGVJbmZvLmggKi87IH07CiAJCTkwRDlCMTE5MTJFMTFERDYwMDJENDI1NSAvKiBWZXJz
aW9uR0xTTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MEQ5QjExMTEyRTExREQ2MDAyRDQyNTUgLyogVmVyc2lvbkdMU0wuY3BwICovOyB9OwogCQk5
MEQ5QjExQTEyRTExREQ2MDAyRDQyNTUgLyogVmVyc2lvbkdMU0wuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMTEyMTJFMTFERDYwMDJENDI1NSAv
KiBWZXJzaW9uR0xTTC5oICovOyB9OworCQlBMDhDM0NEQzE2RDZDQjYxMDAzRjBCODMgLyogQXJy
YXlCb3VuZHNDbGFtcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEwOEMzQ0RBMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJvdW5kc0NsYW1wZXIu
Y3BwICovOyB9OworCQlBMDhDM0NERDE2RDZDQjYxMDAzRjBCODMgLyogQXJyYXlCb3VuZHNDbGFt
cGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMDhD
M0NEQjE2RDZDQjYxMDAzRjBCODMgLyogQXJyYXlCb3VuZHNDbGFtcGVyLmggKi87IH07CiAJCUEw
QUFCRTJDMTNBRkU4MTAwMEYyRUJEMSAvKiBGb3JMb29wVW5yb2xsLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwQUFCRTJBMTNBRkU4MTAwMEYyRUJE
MSAvKiBGb3JMb29wVW5yb2xsLmNwcCAqLzsgfTsKIAkJQTBBQUJFMkQxM0FGRTgxMDAwRjJFQkQx
IC8qIEZvckxvb3BVbnJvbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEwQUFCRTJCMTNBRkU4MTAwMEYyRUJEMSAvKiBGb3JMb29wVW5yb2xsLmggKi87
IH07CiAJCUEwQUFCRTMwMTNBRkU4MzAwMEYyRUJEMSAvKiBNYXBMb25nVmFyaWFibGVOYW1lcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMEFBQkUy
RTEzQUZFODMwMDBGMkVCRDEgLyogTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwICovOyB9OwpAQCAt
MTM2LDggKzEzNiw2IEBACiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJ
MzEyQkRCMDkxNUZFQzkxRTAwOTdFQkM3IC8qIEFOR0xFLnBsaXN0ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5w
bGlzdC54bWw7IHBhdGggPSBBTkdMRS5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzEyQkRCMEExNUZFQ0EzQTAwOTdFQkM3IC8qIEFOR0xFLnR4dCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBTkdMRS50eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNThFQTBD
MTYzMDk2OEQwMDZCRTVFRSAvKiBBcnJheUJvdW5kc0NsYW1wZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCb3VuZHNDbGFtcGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE1OEVBMEQxNjMwOTY4RDAwNkJFNUVFIC8qIEFycmF5Qm91
bmRzQ2xhbXBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJvdW5k
c0NsYW1wZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQzQTNFMTUxMkVDRjZD
QzAwMDRGOUQ3IC8qIGlPUy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBpT1MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OTUxQzAyMTRC
N0FBQjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IGxlbmd0aF9saW1pdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDk5NTFDMDUxNEI3QUFENzAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2Myw2ICsxNjEsOCBAQAog
CQk5MEQ5QjExMDEyRTExREQ2MDAyRDQyNTUgLyogVmFyaWFibGVJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhcmlhYmxlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MEQ5QjExMTEyRTExREQ2MDAyRDQyNTUgLyogVmVyc2lvbkdMU0wuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmVyc2lvbkdMU0wuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MEQ5QjExMjEyRTExREQ2MDAyRDQyNTUgLyogVmVy
c2lvbkdMU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVyc2lvbkdMU0wu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTA4QzNDREExNkQ2Q0I2MTAwM0YwQjgz
IC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBBcnJheUJvdW5kc0NsYW1wZXIuY3BwOyBwYXRoID0gc3JjL3RoaXJkX3BhcnR5L2Nv
bXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUEwOEMzQ0RCMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJvdW5kc0NsYW1wZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXJyYXlCb3VuZHNDbGFtcGVyLmg7IHBhdGgg
PSBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEwQUFCRTJBMTNBRkU4MTAwMEYyRUJEMSAvKiBGb3JMb29w
VW5yb2xsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvckxvb3BV
bnJvbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMEFBQkUyQjEzQUZFODEw
MDBGMkVCRDEgLyogRm9yTG9vcFVucm9sbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGb3JMb29wVW5yb2xsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEwQUFC
RTJFMTNBRkU4MzAwMEYyRUJEMSAvKiBNYXBMb25nVmFyaWFibGVOYW1lcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXBMb25nVmFyaWFibGVOYW1lcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTYsNiArMjk2LDIzIEBACiAJCQlwYXRoID0g
Q29uZmlndXJhdGlvbnM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBMDhD
M0NEODE2RDZDQjM1MDAzRjBCODMgLyogdGhpcmRfcGFydHkgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUEwOEMzQ0Q5MTZENkNCNDMwMDNGMEI4MyAvKiBj
b21waWxlciAqLywKKwkJCSk7CisJCQluYW1lID0gdGhpcmRfcGFydHk7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQlBMDhDM0NEOTE2RDZDQjQzMDAzRjBCODMgLyogY29tcGls
ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUEwOEMz
Q0RBMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJvdW5kc0NsYW1wZXIuY3BwICovLAorCQkJCUEw
OEMzQ0RCMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJvdW5kc0NsYW1wZXIuaCAqLywKKwkJCSk7
CisJCQluYW1lID0gY29tcGlsZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQlBMjY0RjhDQjE2OTc2MkFBMDA2RkFBNUEgLyogS0hSICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTM1Myw2ICszNzAsNyBAQAogCQlGQjM5RDA4NDEyMDBF
REVCMDAwODhFNjkgLyogc3JjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlBMDhDM0NEODE2RDZDQjM1MDAzRjBCODMgLyogdGhpcmRfcGFydHkgKi8sCiAJ
CQkJRkIzOUQyMjAxMjAwRjM1QTAwMDg4RTY5IC8qIGNvbXBpbGVyICovLAogCQkJKTsKIAkJCW5h
bWUgPSBzcmM7CkBAIC0zNzIsOCArMzkwLDYgQEAKIAkJCQlBMjY1NjgyQzE1OUMyM0UxMDAzOTg1
MzkgLyogZGVwZ3JhcGggKi8sCiAJCQkJRkIzOUQyNDQxMjAwRjM1QTAwMDg4RTY5IC8qIHByZXBy
b2Nlc3NvciAqLywKIAkJCQlBMjY1NjgzNDE1OUMyM0UxMDAzOTg1MzkgLyogdGltaW5nICovLAot
CQkJCTMxNThFQTBDMTYzMDk2OEQwMDZCRTVFRSAvKiBBcnJheUJvdW5kc0NsYW1wZXIuY3BwICov
LAotCQkJCTMxNThFQTBEMTYzMDk2OEQwMDZCRTVFRSAvKiBBcnJheUJvdW5kc0NsYW1wZXIuaCAq
LywKIAkJCQlGQjM5RDIyMTEyMDBGMzVBMDAwODhFNjkgLyogQmFzZVR5cGVzLmggKi8sCiAJCQkJ
NDk5NTFDMDUxNEI3QUFENzAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCAq
LywKIAkJCQk0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IuaCAqLywKQEAgLTUwOSw3ICs1MjUsNiBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhh
c2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJ
MzE1OEVBMEYxNjMwOTY4RDAwNkJFNUVFIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDk5NTFDMEExNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1NjgzQTE1OUMyM0UxMDAzOTg1MzkgLyog
RGVwZW5kZW5jeUdyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1NjgzQzE1OUMyM0UxMDAz
OTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC01NTMs
NiArNTY4LDcgQEAKIAkJCQk5MEQ5QjExODEyRTExREQ2MDAyRDQyNTUgLyogVmFyaWFibGVJbmZv
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhDQTE2OTc0RTJBMDA2RkFBNUEgLyogVmFyaWFi
bGVQYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkwRDlCMTFBMTJFMTFERDYwMDJENDI1NSAv
KiBWZXJzaW9uR0xTTC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTA4QzNDREQxNkQ2Q0I2MTAwM0Yw
QjgzIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC02MTAsNyArNjI2
LDYgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTMxNThFQTBFMTYzMDk2OEQwMDZCRTVF
RSAvKiBBcnJheUJvdW5kc0NsYW1wZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk5NTFDMDkx
NEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZCMzlEMjcxMTIwMEYzNUEwMDA4OEU2OSAvKiBDb2RlR2VuR0xTTC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5MEQ5QjEwMjEyRTExRENCMDAyRDQyNTUgLyogQ29tcGlsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC02NjUsNiArNjgwLDcgQEAKIAkJCQk5MEQ5QjExNzEyRTExREQ2
MDAyRDQyNTUgLyogVmFyaWFibGVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEM5
MTY5NzRFMkEwMDZGQUE1QSAvKiBWYXJpYWJsZVBhY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5MEQ5QjExOTEyRTExREQ2MDAyRDQyNTUgLyogVmVyc2lvbkdMU0wuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTA4QzNDREMxNkQ2Q0I2MTAwM0YwQjgzIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUv
R0xTTEFORy9TaGFkZXJMYW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkocmV2aXNpb24gMTQzNjU0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJraHJwbGF0Zm9y
bS5oIgorI2luY2x1ZGUgPHN0ZGRlZi5oPgogCiAvLwogLy8gVGhpcyBpcyB0aGUgcGxhdGZvcm0g
aW5kZXBlbmRlbnQgaW50ZXJmYWNlIGJldHdlZW4gYW4gT0dMIGRyaXZlcgpAQCAtMzYsNyArMzcs
NyBAQCBleHRlcm4gIkMiIHsKIAogLy8gVmVyc2lvbiBudW1iZXIgZm9yIHNoYWRlciB0cmFuc2xh
dGlvbiBBUEkuCiAvLyBJdCBpcyBpbmNyZW1lbnRlZCBldmVyeXRpbWUgdGhlIEFQSSBjaGFuZ2Vz
LgotI2RlZmluZSBTSF9WRVJTSU9OIDEwNworI2RlZmluZSBBTkdMRV9TSF9WRVJTSU9OIDEwOAog
CiAvLwogLy8gVGhlIG5hbWVzIG9mIHRoZSBmb2xsb3dpbmcgZW51bXMgaGF2ZSBiZWVuIGRlcml2
ZWQgYnkgcmVwbGFjaW5nIEdMIHByZWZpeApAQCAtMTU1LDEwICsxNTYsMjEgQEAgdHlwZWRlZiBl
bnVtIHsKICAgLy8gVGhpcyBmbGFnIGVuc3VyZXMgYWxsIGluZGlyZWN0IChleHByZXNzaW9uLWJh
c2VkKSBhcnJheSBpbmRleGluZwogICAvLyBpcyBjbGFtcGVkIHRvIHRoZSBib3VuZHMgb2YgdGhl
IGFycmF5LiBUaGlzIGVuc3VyZXMsIGZvciBleGFtcGxlLAogICAvLyB0aGF0IHlvdSBjYW5ub3Qg
cmVhZCBvZmYgdGhlIGVuZCBvZiBhIHVuaWZvcm0sIHdoZXRoZXIgYW4gYXJyYXkKLSAgLy8gdmVj
MjM0LCBvciBtYXQyMzQgdHlwZS4KKyAgLy8gdmVjMjM0LCBvciBtYXQyMzQgdHlwZS4gVGhlIFNo
QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgZW51bSwKKyAgLy8gc3BlY2lmaWVkIGluIHRoZSBT
aEJ1aWx0SW5SZXNvdXJjZXMgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlCisgIC8vIGNvbXBpbGVyLCBz
ZWxlY3RzIHRoZSBzdHJhdGVneSBmb3IgdGhlIGNsYW1waW5nIGltcGxlbWVudGF0aW9uLgogICBT
SF9DTEFNUF9JTkRJUkVDVF9BUlJBWV9CT1VORFMgPSAweDEwMDAKIH0gU2hDb21waWxlT3B0aW9u
czsKIAorLy8gRGVmaW5lcyBhbHRlcm5hdGUgc3RyYXRlZ2llcyBmb3IgaW1wbGVtZW50aW5nIGFy
cmF5IGluZGV4IGNsYW1waW5nLgordHlwZWRlZiBlbnVtIHsKKyAgLy8gVXNlIHRoZSBjbGFtcCBp
bnRyaW5zaWMgZm9yIGFycmF5IGluZGV4IGNsYW1waW5nLgorICBTSF9DTEFNUF9XSVRIX0NMQU1Q
X0lOVFJJTlNJQyA9IDEsCisKKyAgLy8gVXNlIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGZvciBh
cnJheSBpbmRleCBjbGFtcGluZy4KKyAgU0hfQ0xBTVBfV0lUSF9VU0VSX0RFRklORURfSU5UX0NM
QU1QX0ZVTkNUSU9OCit9IFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3k7CisKIC8vCiAvLyBE
cml2ZXIgbXVzdCBjYWxsIHRoaXMgZmlyc3QsIG9uY2UsIGJlZm9yZSBkb2luZyBhbnkgb3RoZXIK
IC8vIGNvbXBpbGVyIG9wZXJhdGlvbnMuCkBAIC0xNzMsNyArMTg1LDcgQEAgQ09NUElMRVJfRVhQ
T1JUIGludCBTaEZpbmFsaXplKCk7CiAKIC8vIFRoZSA2NCBiaXRzIGhhc2ggZnVuY3Rpb24uIFRo
ZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIGlucHV0IHN0cmluZzsgdGhlCiAvLyBzZWNvbmQgcGFy
YW1ldGVyIGlzIHRoZSBzdHJpbmcgbGVuZ3RoLgotdHlwZWRlZiBraHJvbm9zX3VpbnQ2NF90ICgq
U2hIYXNoRnVuY3Rpb242NCkoY29uc3QgY2hhciosIHVuc2lnbmVkIGludCk7Cit0eXBlZGVmIGto
cm9ub3NfdWludDY0X3QgKCpTaEhhc2hGdW5jdGlvbjY0KShjb25zdCBjaGFyKiwgc2l6ZV90KTsK
IAogLy8KIC8vIEltcGxlbWVudGF0aW9uIGRlcGVuZGVudCBidWlsdC1pbiByZXNvdXJjZXMgKGNv
bnN0YW50cyBhbmQgZXh0ZW5zaW9ucykuCkBAIC0xOTYsMTEgKzIwOCwxNiBAQCB0eXBlZGVmIHN0
cnVjdAogICAgIGludCBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXM7CiAgICAgaW50IE9FU19FR0xf
aW1hZ2VfZXh0ZXJuYWw7CiAgICAgaW50IEFSQl90ZXh0dXJlX3JlY3RhbmdsZTsKKyAgICBpbnQg
RVhUX2RyYXdfYnVmZmVyczsKIAogICAgIC8vIE5hbWUgSGFzaGluZy4KICAgICAvLyBTZXQgYSA2
NCBiaXQgaGFzaCBmdW5jdGlvbiB0byBlbmFibGUgdXNlci1kZWZpbmVkIG5hbWUgaGFzaGluZy4K
ICAgICAvLyBEZWZhdWx0IGlzIE5VTEwuCiAgICAgU2hIYXNoRnVuY3Rpb242NCBIYXNoRnVuY3Rp
b247CisKKyAgICAvLyBTZWxlY3RzIGEgc3RyYXRlZ3kgdG8gdXNlIHdoZW4gaW1wbGVtZW50aW5n
IGFycmF5IGluZGV4IGNsYW1waW5nLgorICAgIC8vIERlZmF1bHQgaXMgU0hfQ0xBTVBfV0lUSF9D
TEFNUF9JTlRSSU5TSUMuCisgICAgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBBcnJheUlu
ZGV4Q2xhbXBpbmdTdHJhdGVneTsKIH0gU2hCdWlsdEluUmVzb3VyY2VzOwogCiAvLwpAQCAtMjY0
LDcgKzI4MSw3IEBAIENPTVBJTEVSX0VYUE9SVCB2b2lkIFNoRGVzdHJ1Y3QoU2hIYW5kbGUKIENP
TVBJTEVSX0VYUE9SVCBpbnQgU2hDb21waWxlKAogICAgIGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwK
ICAgICBjb25zdCBjaGFyKiBjb25zdCBzaGFkZXJTdHJpbmdzW10sCi0gICAgY29uc3QgaW50IG51
bVN0cmluZ3MsCisgICAgc2l6ZV90IG51bVN0cmluZ3MsCiAgICAgaW50IGNvbXBpbGVPcHRpb25z
CiAgICAgKTsKIApAQCAtMjkyLDExICszMDksMTEgQEAgQ09NUElMRVJfRVhQT1JUIGludCBTaENv
bXBpbGUoCiAvLyBTSF9IQVNIRURfTkFNRV9NQVhfTEVOR1RIOiB0aGUgbWF4IGxlbmd0aCBvZiBh
IGhhc2hlZCBuYW1lIGluY2x1ZGluZyB0aGUKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGwgdGVybWluYXRpb24gY2hhcmFjdGVyLgogLy8gU0hfSEFTSEVEX05BTUVTX0NPVU5UOiB0
aGUgbnVtYmVyIG9mIGhhc2hlZCBuYW1lcyBmcm9tIHRoZSBsYXRlc3QgY29tcGlsZS4KLS8vIAor
Ly8KIC8vIHBhcmFtczogUmVxdWVzdGVkIHBhcmFtZXRlcgogQ09NUElMRVJfRVhQT1JUIHZvaWQg
U2hHZXRJbmZvKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaFNoYWRlckluZm8gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50KiBwYXJhbXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCog
cGFyYW1zKTsKIAogLy8gUmV0dXJucyBudWwtdGVybWluYXRlZCBpbmZvcm1hdGlvbiBsb2cgZm9y
IGEgY29tcGlsZWQgc2hhZGVyLgogLy8gUGFyYW1ldGVyczoKQEAgLTMzOSw3ICszNTYsNyBAQCBD
T01QSUxFUl9FWFBPUlQgdm9pZCBTaEdldE9iamVjdENvZGUoY29uCiAvLyAgICAgICAgICAgICBt
YXBwZWROYW1lIGFyZSB0aGUgc2FtZS4KIENPTVBJTEVSX0VYUE9SVCB2b2lkIFNoR2V0QWN0aXZl
QXR0cmliKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCogbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90KiBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQqIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaERh
dGFUeXBlKiB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciogbmFtZSwKQEAgLTM2Niw3ICszODMsNyBAQCBDT01QSUxFUl9FWFBPUlQgdm9pZCBTaEdldEFj
dGl2ZUF0dHJpYihjCiAvLyAgICAgICAgICAgICBtYXBwZWROYW1lIGFyZSB0aGUgc2FtZS4KIENP
TVBJTEVSX0VYUE9SVCB2b2lkIFNoR2V0QWN0aXZlVW5pZm9ybShjb25zdCBTaEhhbmRsZSBoYW5k
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogbGVuZ3RoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaERhdGFUeXBlKiB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIG5hbWUsCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAkocmV2aXNpb24gMTQz
NjU0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDkgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5j
bHVkZSA8c3RkYXJnLmg+CisKKyNpbmNsdWRlICJjb21tb24vc3lzdGVtLmgiCiAjaW5jbHVkZSA8
ZDNkOS5oPgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAogbmFtZXNwYWNlIGdsCiB7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDMwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBzeXN0ZW0uaDog
SW5jbHVkZXMgV2luZG93cyBzeXN0ZW0gaGVhZGVycyBhbmQgdW5kZWZpbmVzIG1hY3JvcyB0aGF0
IGNvbmZsaWN0LgorCisjaWZuZGVmIENPTU1PTl9TWVNURU1fSAorI2RlZmluZSBDT01NT05fU1lT
VEVNX0gKKworI2lmICFkZWZpbmVkKFdJTjMyX0xFQU5fQU5EX01FQU4pCisjZGVmaW5lIFdJTjMy
X0xFQU5fQU5EX01FQU4KKyNlbmRpZgorCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUg
PGQzZDkuaD4KKyNpbmNsdWRlIDxEM0Rjb21waWxlci5oPgorI2luY2x1ZGUgPGQzZDl0eXBlcy5o
PgorI2luY2x1ZGUgPG1tc3lzdGVtLmg+CisKKyNpZiBkZWZpbmVkKG1pbikKKyN1bmRlZiBtaW4K
KyNlbmRpZgorCisjaWYgZGVmaW5lZChtYXgpCisjdW5kZWYgbWF4CisjZW5kaWYKKworI2VuZGlm
ICAgLy8gQ09NTU9OX1NZU1RFTV9ICgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24v
dmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vdmVyc2lvbi5oCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbW9uL3ZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKICNk
ZWZpbmUgTUFKT1JfVkVSU0lPTiAxCiAjZGVmaW5lIE1JTk9SX1ZFUlNJT04gMAogI2RlZmluZSBC
VUlMRF9WRVJTSU9OIDAKLSNkZWZpbmUgQlVJTERfUkVWSVNJT04gMTY0MQorI2RlZmluZSBCVUlM
RF9SRVZJU0lPTiAxODMxCiAKICNkZWZpbmUgU1RSSU5HSUZZKHgpICN4CiAjZGVmaW5lIE1BQ1JP
X1NUUklOR0lGWSh4KSBTVFJJTkdJRlkoeCkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuY3BwCShy
ZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
QXJyYXlCb3VuZHNDbGFtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw4OCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmgiCi0KLWNvbnN0IGNoYXIqIGtJbnRDbGFtcEJl
Z2luID0gIi8vIEJFR0lOOiBHZW5lcmF0ZWQgY29kZSBmb3IgYXJyYXkgYm91bmRzIGNsYW1waW5n
XG5cbiI7Ci1jb25zdCBjaGFyKiBrSW50Q2xhbXBFbmQgPSAiLy8gRU5EOiBHZW5lcmF0ZWQgY29k
ZSBmb3IgYXJyYXkgYm91bmRzIGNsYW1waW5nXG5cbiI7Ci1jb25zdCBjaGFyKiBrSW50Q2xhbXBE
ZWZpbml0aW9uID0gImludCB3ZWJnbF9pbnRfY2xhbXAoaW50IHZhbHVlLCBpbnQgbWluVmFsdWUs
IGludCBtYXhWYWx1ZSkgeyByZXR1cm4gKCh2YWx1ZSA8IG1pblZhbHVlKSA/IG1pblZhbHVlIDog
KCh2YWx1ZSA+IG1heFZhbHVlKSA/IG1heFZhbHVlIDogdmFsdWUpKTsgfVxuXG4iOwotCi1uYW1l
c3BhY2UgewotCi1jbGFzcyBBcnJheUJvdW5kc0NsYW1wZXJNYXJrZXIgOiBwdWJsaWMgVEludGVy
bVRyYXZlcnNlciB7Ci1wdWJsaWM6Ci0gICAgQXJyYXlCb3VuZHNDbGFtcGVyTWFya2VyKCkKLSAg
ICAgICAgOiBtTmVlZHNDbGFtcChmYWxzZSkKLSAgIHsKLSAgIH0KLQotICAgdmlydHVhbCBib29s
IHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5KiBub2RlKQotICAgewotICAg
ICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcEluZGV4SW5kaXJlY3QpCi0gICAgICAgewotICAg
ICAgICAgICBUSW50ZXJtVHlwZWQqIGxlZnQgPSBub2RlLT5nZXRMZWZ0KCk7Ci0gICAgICAgICAg
IGlmIChsZWZ0LT5pc0FycmF5KCkgfHwgbGVmdC0+aXNWZWN0b3IoKSB8fCBsZWZ0LT5pc01hdHJp
eCgpKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBub2RlLT5zZXRBZGRJbmRleENsYW1w
KCk7Ci0gICAgICAgICAgICAgICBtTmVlZHNDbGFtcCA9IHRydWU7Ci0gICAgICAgICAgIH0KLSAg
ICAgICB9Ci0gICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0KLSAgICBib29sIEdldE5lZWRzQ2xh
bXAoKSB7IHJldHVybiBtTmVlZHNDbGFtcDsgfQotCi1wcml2YXRlOgotICAgIGJvb2wgbU5lZWRz
Q2xhbXA7Ci19OwotCi19ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLUFycmF5Qm91bmRzQ2xh
bXBlcjo6QXJyYXlCb3VuZHNDbGFtcGVyKCkKLSAgICA6IG1BcnJheUJvdW5kc0NsYW1wRGVmaW5p
dGlvbk5lZWRlZChmYWxzZSkKLXsKLX0KLQotdm9pZCBBcnJheUJvdW5kc0NsYW1wZXI6Ok91dHB1
dENsYW1waW5nRnVuY3Rpb25EZWZpbml0aW9uKFRJbmZvU2lua0Jhc2UmIG91dCkgY29uc3QKLXsK
LSAgICBpZiAoIW1BcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlvbk5lZWRlZCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgb3V0IDw8IGtJbnRDbGFtcEJlZ2luIDw8IGtJbnRDbGFt
cERlZmluaXRpb24gPDwga0ludENsYW1wRW5kOwotfQotCi12b2lkIEFycmF5Qm91bmRzQ2xhbXBl
cjo6TWFya0luZGlyZWN0QXJyYXlCb3VuZHNGb3JDbGFtcGluZyhUSW50ZXJtTm9kZSogcm9vdCkK
LXsKLSAgICBBU1NFUlQocm9vdCk7Ci0KLSAgICBBcnJheUJvdW5kc0NsYW1wZXJNYXJrZXIgY2xh
bXBlcjsKLSAgICByb290LT50cmF2ZXJzZSgmY2xhbXBlcik7Ci0gICAgaWYgKGNsYW1wZXIuR2V0
TmVlZHNDbGFtcCgpKQotICAgIHsKLSAgICAgICAgU2V0QXJyYXlCb3VuZHNDbGFtcERlZmluaXRp
b25OZWVkZWQoKTsKLSAgICB9Ci19Ci0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmgJKHJldmlzaW9u
IDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9BcnJheUJv
dW5kc0NsYW1wZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENPTVBJTEVSX0FS
UkFZX0JPVU5EU19DTEFNUEVSX0hfCi0jZGVmaW5lIENPTVBJTEVSX0FSUkFZX0JPVU5EU19DTEFN
UEVSX0hfCi0KLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKLQotI2luY2x1ZGUgImNv
bXBpbGVyL0luZm9TaW5rLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCi0K
LWNsYXNzIEFycmF5Qm91bmRzQ2xhbXBlciB7Ci1wdWJsaWM6Ci0gICAgQXJyYXlCb3VuZHNDbGFt
cGVyKCk7Ci0KLSAgICAvLyBPdXRwdXQgYXJyYXkgY2xhbXAgZnVuY3Rpb24gc291cmNlIGludG8g
dGhlIHNoYWRlciBzb3VyY2UuCi0gICAgdm9pZCBPdXRwdXRDbGFtcGluZ0Z1bmN0aW9uRGVmaW5p
dGlvbihUSW5mb1NpbmtCYXNlJiBvdXQpIGNvbnN0OwotCi0gICAgLy8gTWFya3Mgbm9kZXMgaW4g
dGhlIHRyZWUgdGhhdCBpbmRleCBhcnJheXMgaW5kaXJlY3RseSBhcwotICAgIC8vIHJlcXVpcmlu
ZyBjbGFtcGluZy4KLSAgICB2b2lkIE1hcmtJbmRpcmVjdEFycmF5Qm91bmRzRm9yQ2xhbXBpbmco
VEludGVybU5vZGUqIHJvb3QpOwotCi0gICAgdm9pZCBDbGVhbnVwKCkKLSAgICB7Ci0gICAgICAg
IG1BcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlvbk5lZWRlZCA9IGZhbHNlOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBib29sIEdldEFycmF5Qm91bmRzQ2xhbXBEZWZpbml0aW9uTmVlZGVkKCkgY29u
c3QgeyByZXR1cm4gbUFycmF5Qm91bmRzQ2xhbXBEZWZpbml0aW9uTmVlZGVkOyB9Ci0gICAgdm9p
ZCBTZXRBcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlvbk5lZWRlZCgpIHsgbUFycmF5Qm91bmRzQ2xh
bXBEZWZpbml0aW9uTmVlZGVkID0gdHJ1ZTsgfQotICAgIAotICAgIGJvb2wgbUFycmF5Qm91bmRz
Q2xhbXBEZWZpbml0aW9uTmVlZGVkOwotfTsKLQotI2VuZGlmIC8vIENPTVBJTEVSX0FSUkFZX0JP
VU5EU19DTEFNUEVSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Db21waWxlci5jcHAJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQsNyArNCw2IEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIAotI2luY2x1
ZGUgImNvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0J1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJz
aW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvRm9yTG9vcFVucm9sbC5oIgpAQCAtMjAsNiArMTks
NyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5o
IgogI2luY2x1ZGUgImNvbXBpbGVyL3RpbWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5n
LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5n
LmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmgi
CiAKIGJvb2wgaXNXZWJHTEJhc2VkU3BlYyhTaFNoYWRlclNwZWMgc3BlYykKIHsKQEAgLTEwMiw2
ICsxMDIsNyBAQCBUU2hIYW5kbGVCYXNlOjp+VFNoSGFuZGxlQmFzZSgpIHsKIFRDb21waWxlcjo6
VENvbXBpbGVyKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYykKICAgICA6IHNo
YWRlclR5cGUodHlwZSksCiAgICAgICBzaGFkZXJTcGVjKHNwZWMpLAorICAgICAgY2xhbXBpbmdT
dHJhdGVneShTSF9DTEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQyksCiAgICAgICBidWlsdEluRnVu
Y3Rpb25FbXVsYXRvcih0eXBlKQogewogICAgIGxvbmdOYW1lTWFwID0gTG9uZ05hbWVNYXA6Okdl
dEluc3RhbmNlKCk7CkBAIC0xMjUsMTMgKzEyNiwxNiBAQCBib29sIFRDb21waWxlcjo6SW5pdChj
b25zdCBTaEJ1aWx0SW5SZXNvCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBJbml0RXh0ZW5z
aW9uQmVoYXZpb3IocmVzb3VyY2VzLCBleHRlbnNpb25CZWhhdmlvcik7CiAKKyAgICBhcnJheUJv
dW5kc0NsYW1wZXIuU2V0Q2xhbXBpbmdTdHJhdGVneShyZXNvdXJjZXMuQXJyYXlJbmRleENsYW1w
aW5nU3RyYXRlZ3kpOworICAgIGNsYW1waW5nU3RyYXRlZ3kgPSByZXNvdXJjZXMuQXJyYXlJbmRl
eENsYW1waW5nU3RyYXRlZ3k7CisKICAgICBoYXNoRnVuY3Rpb24gPSByZXNvdXJjZXMuSGFzaEZ1
bmN0aW9uOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgVENvbXBpbGVyOjpjb21waWxl
KGNvbnN0IGNoYXIqIGNvbnN0IHNoYWRlclN0cmluZ3NbXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGludCBudW1TdHJpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG51bVN0cmluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29tcGlsZU9wdGlvbnMp
CiB7CiAgICAgVFNjb3BlZFBvb2xBbGxvY2F0b3Igc2NvcGVkQWxsb2MoJmFsbG9jYXRvciwgdHJ1
ZSk7CkBAIC0xNDYsNyArMTUwLDcgQEAgYm9vbCBUQ29tcGlsZXI6OmNvbXBpbGUoY29uc3QgY2hh
ciogY29ucwogCiAgICAgLy8gRmlyc3Qgc3RyaW5nIGlzIHBhdGggb2Ygc291cmNlIGZpbGUgaWYg
ZmxhZyBpcyBzZXQuIFRoZSBhY3R1YWwgc291cmNlIGZvbGxvd3MuCiAgICAgY29uc3QgY2hhciog
c291cmNlUGF0aCA9IE5VTEw7Ci0gICAgaW50IGZpcnN0U291cmNlID0gMDsKKyAgICBzaXplX3Qg
Zmlyc3RTb3VyY2UgPSAwOwogICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX1NPVVJDRV9QQVRI
KQogICAgIHsKICAgICAgICAgc291cmNlUGF0aCA9IHNoYWRlclN0cmluZ3NbMF07CkBAIC0zNTUs
MTMgKzM1OSwxNyBAQCBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIFRDb21waWxlcjo6Z2V0CiAg
ICAgcmV0dXJuIGV4dGVuc2lvbkJlaGF2aW9yOwogfQogCi1jb25zdCBCdWlsdEluRnVuY3Rpb25F
bXVsYXRvciYgVENvbXBpbGVyOjpnZXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcigpIGNvbnN0Citj
b25zdCBBcnJheUJvdW5kc0NsYW1wZXImIFRDb21waWxlcjo6Z2V0QXJyYXlCb3VuZHNDbGFtcGVy
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I7CisgICAgcmV0
dXJuIGFycmF5Qm91bmRzQ2xhbXBlcjsKIH0KIAotY29uc3QgQXJyYXlCb3VuZHNDbGFtcGVyJiBU
Q29tcGlsZXI6OmdldEFycmF5Qm91bmRzQ2xhbXBlcigpIGNvbnN0CitTaEFycmF5SW5kZXhDbGFt
cGluZ1N0cmF0ZWd5IFRDb21waWxlcjo6Z2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3koKSBj
b25zdAogewotICAgIHJldHVybiBhcnJheUJvdW5kc0NsYW1wZXI7CisgICAgcmV0dXJuIGNsYW1w
aW5nU3RyYXRlZ3k7CiB9CiAKK2NvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yJiBUQ29tcGls
ZXI6OmdldEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3I7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwCShy
ZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
RGV0ZWN0RGlzY29udGludWl0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2LDExICsxNiwyNiBA
QCBuYW1lc3BhY2Ugc2gKIHsKIGJvb2wgRGV0ZWN0TG9vcERpc2NvbnRpbnVpdHk6OnRyYXZlcnNl
KFRJbnRlcm1Ob2RlICpub2RlKQogeworICAgIG1Mb29wRGVwdGggPSAwOwogICAgIG1Mb29wRGlz
Y29udGludWl0eSA9IGZhbHNlOwogICAgIG5vZGUtPnRyYXZlcnNlKHRoaXMpOwogICAgIHJldHVy
biBtTG9vcERpc2NvbnRpbnVpdHk7CiB9CiAKK2Jvb2wgRGV0ZWN0TG9vcERpc2NvbnRpbnVpdHk6
OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKmxvb3ApCit7CisgICAgaWYgKHZp
c2l0ID09IFByZVZpc2l0KQorICAgIHsKKyAgICAgICAgKyttTG9vcERlcHRoOworICAgIH0KKyAg
ICBlbHNlIGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpCisgICAgeworICAgICAgICAtLW1Mb29wRGVw
dGg7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgRGV0ZWN0TG9vcERpc2Nv
bnRpbnVpdHk6OnZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKQog
ewogICAgIGlmIChtTG9vcERpc2NvbnRpbnVpdHkpCkBAIC0yOCwxNCArNDMsMTkgQEAgYm9vbCBE
ZXRlY3RMb29wRGlzY29udGludWl0eTo6dmlzaXRCcmFuYwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCisgICAgaWYgKCFtTG9vcERlcHRoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCiAgICAgc3dpdGNoIChub2RlLT5nZXRGbG93T3AoKSkKICAgICB7CiAgICAg
ICBjYXNlIEVPcEtpbGw6CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BCcmVhazoKICAg
ICAgIGNhc2UgRU9wQ29udGludWU6Ci0gICAgICAgIG1Mb29wRGlzY29udGludWl0eSA9IHRydWU7
CiAgICAgICBjYXNlIEVPcFJldHVybjoKKyAgICAgICAgbUxvb3BEaXNjb250aW51aXR5ID0gdHJ1
ZTsKICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250
aW51aXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0RldGVjdERpc2NvbnRpbnVpdHkuaAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOCArMjMsMTAgQEAgY2xhc3MgRGV0ZWN0TG9vcERpc2NvbnRpbnVpdHkg
OiBwdWJsaWMgVAogCiAgIHByb3RlY3RlZDoKICAgICBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZp
c2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKTsKKyAgICBib29sIHZpc2l0TG9vcChWaXNpdCB2aXNp
dCwgVEludGVybUxvb3AgKmxvb3ApOwogICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlz
aXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpOwogCisgICAgaW50IG1Mb29wRGVwdGg7CiAgICAg
Ym9vbCBtTG9vcERpc2NvbnRpbnVpdHk7CiB9OwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwCShyZXZpc2lvbiAxNDM2
NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1NCw0ICs2NTQsNiBAQCB2b2lkIEluaXRFeHRlbnNpb25C
ZWhhdmlvcihjb25zdCBTaEJ1aWx0CiAgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9PRVNfRUdMX2lt
YWdlX2V4dGVybmFsIl0gPSBFQmhVbmRlZmluZWQ7CiAgICAgaWYgKHJlc291cmNlcy5BUkJfdGV4
dHVyZV9yZWN0YW5nbGUpCiAgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9BUkJfdGV4dHVyZV9yZWN0
YW5nbGUiXSA9IEVCaFVuZGVmaW5lZDsKKyAgICBpZiAocmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZl
cnMpCisgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9FWFRfZHJhd19idWZmZXJzIl0gPSBFQmhVbmRl
ZmluZWQ7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50
ZXJtZWRpYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNjIsNyArMTE2Miw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5p
b246OmZvbGQKICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgaWYg
KHJpZ2h0VW5pb25BcnJheVtpXSA9PSAwLjBmKSB7CiAgICAgICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4V2FybmluZywgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1
cmluZyBjb25zdGFudCBmb2xkaW5nIiwgZ2V0TGluZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
dGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KEZMVF9NQVgpOworICAgICAgICAgICAgICAgICAg
ICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRGQ29uc3QodW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSA8
IDAgPyAtRkxUX01BWCA6IEZMVF9NQVgpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRGQ29uc3QodW5pb25BcnJheVtpXS5n
ZXRGQ29uc3QoKSAvIHJpZ2h0VW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xNDUxLDE0ICsxNDUxLDcgQEAgVFN0cmluZyBUSW50ZXJtVHJhdmVy
c2VyOjpoYXNoKGNvbnN0IFRTdAogewogICAgIGlmIChoYXNoRnVuY3Rpb24gPT0gTlVMTCB8fCBu
YW1lLmVtcHR5KCkpCiAgICAgICAgIHJldHVybiBuYW1lOwotI2lmIGRlZmluZWQoX19jbGFuZ19f
KQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV3Nob3J0ZW4tNjQtdG8tMzIiCi0jZW5kaWYKICAgICBraHJvbm9zX3VpbnQ2
NF90IG51bWJlciA9ICgqaGFzaEZ1bmN0aW9uKShuYW1lLmNfc3RyKCksIG5hbWUubGVuZ3RoKCkp
OwotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAot
I2VuZGlmCiAgICAgVFN0cmluZ1N0cmVhbSBzdHJlYW07CiAgICAgc3RyZWFtIDw8IEhBU0hFRF9O
QU1FX1BSRUZJWCA8PCBzdGQ6OmhleCA8PCBudW1iZXI7CiAgICAgVFN0cmluZyBoYXNoZWROYW1l
ID0gc3RyZWFtLnN0cigpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwCShyZXZpc2lv
biAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvTWFwTG9u
Z1ZhcmlhYmxlTmFtZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNyBAQAogCiBuYW1l
c3BhY2UgewogCi1UU3RyaW5nIG1hcExvbmdOYW1lKGludCBpZCwgY29uc3QgVFN0cmluZyYgbmFt
ZSwgYm9vbCBpc0dsb2JhbCkKK1RTdHJpbmcgbWFwTG9uZ05hbWUoc2l6ZV90IGlkLCBjb25zdCBU
U3RyaW5nJiBuYW1lLCBib29sIGlzR2xvYmFsKQogewogICAgIEFTU0VSVChuYW1lLnNpemUoKSA+
IE1BWF9TSE9SVEVORURfSURFTlRJRklFUl9TSVpFKTsKICAgICBUU3RyaW5nU3RyZWFtIHN0cmVh
bTsKQEAgLTcwLDE2ICs3MCw5IEBAIHZvaWQgTG9uZ05hbWVNYXA6Okluc2VydChjb25zdCBjaGFy
KiBvcmkKICAgICAgICAgb3JpZ2luYWxOYW1lLCBtYXBwZWROYW1lKSk7CiB9CiAKLWludCBMb25n
TmFtZU1hcDo6U2l6ZSgpIGNvbnN0CitzaXplX3QgTG9uZ05hbWVNYXA6OlNpemUoKSBjb25zdAog
ewotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Nob3J0ZW4tNjQtdG8tMzIiCi0j
ZW5kaWYKICAgICByZXR1cm4gbUxvbmdOYW1lTWFwLnNpemUoKTsKLSNpZiBkZWZpbmVkKF9fY2xh
bmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNlbmRpZgogfQogCiBNYXBMb25n
VmFyaWFibGVOYW1lczo6TWFwTG9uZ1ZhcmlhYmxlTmFtZXMoTG9uZ05hbWVNYXAqIGdsb2JhbE1h
cCkKQEAgLTEyMiw3ICsxMTUsNyBAQCBUU3RyaW5nIE1hcExvbmdWYXJpYWJsZU5hbWVzOjptYXBH
bG9iYWxMCiAgICAgY29uc3QgY2hhciogbWFwcGVkTmFtZSA9IG1HbG9iYWxNYXAtPkZpbmQobmFt
ZS5jX3N0cigpKTsKICAgICBpZiAobWFwcGVkTmFtZSAhPSBOVUxMKQogICAgICAgICByZXR1cm4g
bWFwcGVkTmFtZTsKLSAgICBpbnQgaWQgPSBtR2xvYmFsTWFwLT5TaXplKCk7CisgICAgc2l6ZV90
IGlkID0gbUdsb2JhbE1hcC0+U2l6ZSgpOwogICAgIFRTdHJpbmcgcnQgPSBtYXBMb25nTmFtZShp
ZCwgbmFtZSwgdHJ1ZSk7CiAgICAgbUdsb2JhbE1hcC0+SW5zZXJ0KG5hbWUuY19zdHIoKSwgcnQu
Y19zdHIoKSk7CiAgICAgcmV0dXJuIHJ0OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmgJKHJl
dmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9N
YXBMb25nVmFyaWFibGVOYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIEluc2VydChjb25zdCBjaGFyKiBvcmlnaW5hbE5hbWUsIGNvbnN0IGNo
YXIqIG1hcHBlZE5hbWUpOwogCiAgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBp
biB0aGUgbWFwLgotICAgIGludCBTaXplKCkgY29uc3Q7CisgICAgc2l6ZV90IFNpemUoKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBMb25nTmFtZU1hcCgpOwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEVTU0wuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRFU1NMLmNwcAkocmV2aXNpb24g
MTQzNjU0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEVT
U0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03LDEwICs3LDExIEBACiAjaW5jbHVkZSAiY29tcGls
ZXIvT3V0cHV0RVNTTC5oIgogCiBUT3V0cHV0RVNTTDo6VE91dHB1dEVTU0woVEluZm9TaW5rQmFz
ZSYgb2JqU2luaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBTaEFycmF5SW5kZXhDbGFtcGlu
Z1N0cmF0ZWd5IGNsYW1waW5nU3RyYXRlZ3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgU2hI
YXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgTmFt
ZU1hcCYgbmFtZU1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICBUU3ltYm9sVGFibGUmIHN5
bWJvbFRhYmxlKQotICAgIDogVE91dHB1dEdMU0xCYXNlKG9ialNpbmssIGhhc2hGdW5jdGlvbiwg
bmFtZU1hcCwgc3ltYm9sVGFibGUpCisgICAgOiBUT3V0cHV0R0xTTEJhc2Uob2JqU2luaywgY2xh
bXBpbmdTdHJhdGVneSwgaGFzaEZ1bmN0aW9uLCBuYW1lTWFwLCBzeW1ib2xUYWJsZSkKIHsKIH0K
IApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEVTU0wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0
cHV0RVNTTC5oCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvT3V0cHV0RVNTTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw3IEBA
IGNsYXNzIFRPdXRwdXRFU1NMIDogcHVibGljIFRPdXRwdXRHTFNMQmEKIHsKIHB1YmxpYzoKICAg
ICBUT3V0cHV0RVNTTChUSW5mb1NpbmtCYXNlJiBvYmpTaW5rLAorICAgICAgICAgICAgICAgIFNo
QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgY2xhbXBpbmdTdHJhdGVneSwKICAgICAgICAgICAg
ICAgICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbiwKICAgICAgICAgICAgICAgICBOYW1l
TWFwJiBuYW1lTWFwLAogICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUp
OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9P
dXRwdXRHTFNMLmNwcAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03LDEwICs3
LDExIEBACiAjaW5jbHVkZSAiY29tcGlsZXIvT3V0cHV0R0xTTC5oIgogCiBUT3V0cHV0R0xTTDo6
VE91dHB1dEdMU0woVEluZm9TaW5rQmFzZSYgb2JqU2luaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IGNsYW1waW5nU3RyYXRlZ3ksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmFtZU1hcCYgbmFtZU1hcCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQotICAgIDogVE91dHB1dEdMU0xCYXNl
KG9ialNpbmssIGhhc2hGdW5jdGlvbiwgbmFtZU1hcCwgc3ltYm9sVGFibGUpCisgICAgOiBUT3V0
cHV0R0xTTEJhc2Uob2JqU2luaywgY2xhbXBpbmdTdHJhdGVneSwgaGFzaEZ1bmN0aW9uLCBuYW1l
TWFwLCBzeW1ib2xUYWJsZSkKIHsKIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL091dHB1dEdMU0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oCShyZXZpc2lvbiAxNDM2NTQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMyw2ICsxMyw3IEBAIGNsYXNzIFRPdXRwdXRHTFNMIDogcHVibGljIFRPdXRw
dXRHTFNMQmEKIHsKIHB1YmxpYzoKICAgICBUT3V0cHV0R0xTTChUSW5mb1NpbmtCYXNlJiBvYmpT
aW5rLAorICAgICAgICAgICAgICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgY2xhbXBp
bmdTdHJhdGVneSwKICAgICAgICAgICAgICAgICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlv
biwKICAgICAgICAgICAgICAgICBOYW1lTWFwJiBuYW1lTWFwLAogICAgICAgICAgICAgICAgIFRT
eW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCShyZXZpc2lvbiAx
NDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xT
TEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsOCBAQAogI2luY2x1ZGUgImNvbXBp
bGVyL091dHB1dEdMU0xCYXNlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvZGVidWcuaCIKIAorI2lu
Y2x1ZGUgPGNmbG9hdD4KKwogbmFtZXNwYWNlCiB7CiBUU3RyaW5nIGFycmF5QnJhY2tldHMoY29u
c3QgVFR5cGUmIHR5cGUpCkBAIC0zOCwxMiArNDAsMTQgQEAgYm9vbCBpc1NpbmdsZVN0YXRlbWVu
dChUSW50ZXJtTm9kZSogbm9kZQogfSAgLy8gbmFtZXNwYWNlCiAKIFRPdXRwdXRHTFNMQmFzZTo6
VE91dHB1dEdMU0xCYXNlKFRJbmZvU2lua0Jhc2UmIG9ialNpbmssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IGNsYW1waW5nU3Ry
YXRlZ3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaEhhc2hGdW5jdGlvbjY0
IGhhc2hGdW5jdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVNYXAm
IG5hbWVNYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU3ltYm9sVGFibGUm
IHN5bWJvbFRhYmxlKQogICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCB0cnVlLCB0cnVlKSwK
ICAgICAgIG1PYmpTaW5rKG9ialNpbmspLAogICAgICAgbURlY2xhcmluZ1ZhcmlhYmxlcyhmYWxz
ZSksCisgICAgICBtQ2xhbXBpbmdTdHJhdGVneShjbGFtcGluZ1N0cmF0ZWd5KSwKICAgICAgIG1I
YXNoRnVuY3Rpb24oaGFzaEZ1bmN0aW9uKSwKICAgICAgIG1OYW1lTWFwKG5hbWVNYXApLAogICAg
ICAgbVN5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQpAQCAtMTU1LDcgKzE1OSw3IEBAIGNvbnN0IENv
bnN0YW50VW5pb24qIFRPdXRwdXRHTFNMQmFzZTo6d3IKICAgICAgICAgewogICAgICAgICAgICAg
c3dpdGNoIChwQ29uc3RVbmlvbi0+Z2V0VHlwZSgpKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0RmxvYXQ6IG91dCA8PCBwQ29uc3RVbmlvbi0+Z2V0RkNvbnN0KCk7IGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6IG91dCA8PCBzdGQ6Om1pbihGTFRf
TUFYLCBzdGQ6Om1heCgtRkxUX01BWCwgcENvbnN0VW5pb24tPmdldEZDb25zdCgpKSk7IGJyZWFr
OwogICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiBvdXQgPDwgcENvbnN0VW5pb24tPmdldElD
b25zdCgpOyBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6IG91dCA8PCBwQ29u
c3RVbmlvbi0+Z2V0QkNvbnN0KCk7IGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7CkBAIC0yMTksNyArMjIzLDExIEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2
aXNpdEJpbmFyeShWaXNpdCAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAodmlz
aXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG91
dCA8PCAiW3dlYmdsX2ludF9jbGFtcCgiOworICAgICAgICAgICAgICAgICAgICBpZiAobUNsYW1w
aW5nU3RyYXRlZ3kgPT0gU0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG91dCA8PCAiW2ludChjbGFtcChmbG9hdCgiOworICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJbd2ViZ2xf
aW50X2NsYW1wKCI7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KQogICAgICAgICAgICAg
ICAgIHsKQEAgLTIzNiw3ICsyNDQsMTIgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0Qmlu
YXJ5KFZpc2l0IAogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXhTaXplID0gbGVmdFR5cGUuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CiAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIsIDAsICIgPDwgbWF4U2l6ZSA8
PCAiKV0iOworCisgICAgICAgICAgICAgICAgICAgIGlmIChtQ2xhbXBpbmdTdHJhdGVneSA9PSBT
SF9DTEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQykgeworICAgICAgICAgICAgICAgICAgICAgICAg
b3V0IDw8ICIpLCAwLjAsIGZsb2F0KCIgPDwgbWF4U2l6ZSA8PCAiKSkpXSI7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgMCwg
IiA8PCBtYXhTaXplIDw8ICIpXSI7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCkBAIC0yNDksNyArMjYyLDEz
IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEJpbmFyeShWaXNpdCAKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBvdXQgPDwgIi4iOwogICAgICAgICAgICAgICAgIC8vIFRPRE8o
YWxva3ApOiBBU1NFUlQKLSAgICAgICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUobm9kZS0+Z2V0
VHlwZSgpLmdldEZpZWxkTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBUU3RyaW5nIGZpZWxkTmFt
ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRGaWVsZE5hbWUoKTsKKworICAgICAgICAgICAgICAgIGNv
bnN0IFRUeXBlJiBzdHJ1Y3RUeXBlID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFtU3ltYm9sVGFibGUuZmluZEJ1aWx0SW4oc3RydWN0VHlwZS5nZXRU
eXBlTmFtZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lID0gaGFzaE5hbWUoZmll
bGROYW1lKTsKKworICAgICAgICAgICAgICAgIG91dCA8PCBmaWVsZE5hbWU7CiAgICAgICAgICAg
ICAgICAgdmlzaXRDaGlsZHJlbiA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0
R0xTTEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvT3V0cHV0R0xTTEJhc2UuaAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3LDYgKzE3LDcgQEAgY2xhc3MgVE91dHB1dEdMU0xCYXNlIDogcHVibGljIFRJbnRlcm1U
cgogewogcHVibGljOgogICAgIFRPdXRwdXRHTFNMQmFzZShUSW5mb1NpbmtCYXNlJiBvYmpTaW5r
LAorICAgICAgICAgICAgICAgICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IGNsYW1w
aW5nU3RyYXRlZ3ksCiAgICAgICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1
bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICBOYW1lTWFwJiBuYW1lTWFwLAogICAgICAgICAg
ICAgICAgICAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKTsKQEAgLTYyLDggKzYzLDExIEBA
IHByaXZhdGU6CiAKICAgICBGb3JMb29wVW5yb2xsIG1Mb29wVW5yb2xsOwogCisgICAgU2hBcnJh
eUluZGV4Q2xhbXBpbmdTdHJhdGVneSBtQ2xhbXBpbmdTdHJhdGVneTsKKwogICAgIC8vIG5hbWUg
aGFzaGluZy4KICAgICBTaEhhc2hGdW5jdGlvbjY0IG1IYXNoRnVuY3Rpb247CisKICAgICBOYW1l
TWFwJiBtTmFtZU1hcDsKIAogICAgIFRTeW1ib2xUYWJsZSYgbVN5bWJvbFRhYmxlOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNM
LmNwcAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL091dHB1dEhMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw3IEBACiAj
aW5jbHVkZSAiY29tcGlsZXIvU2VhcmNoU3ltYm9sLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvRGV0
ZWN0RGlzY29udGludWl0eS5oIgogCisjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3Rk
aW8uaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKQEAgLTk4LDcgKzk5LDcgQEAgT3V0cHV0SExT
TDo6fk91dHB1dEhMU0woKQogCiB2b2lkIE91dHB1dEhMU0w6Om91dHB1dCgpCiB7Ci0gICAgbUNv
bnRhaW5zTG9vcERpc2NvbnRpbnVpdHkgPSBjb250YWluc0xvb3BEaXNjb250aW51aXR5KG1Db250
ZXh0LnRyZWVSb290KTsKKyAgICBtQ29udGFpbnNMb29wRGlzY29udGludWl0eSA9IG1Db250ZXh0
LnNoYWRlclR5cGUgPT0gU0hfRlJBR01FTlRfU0hBREVSICYmIGNvbnRhaW5zTG9vcERpc2NvbnRp
bnVpdHkobUNvbnRleHQudHJlZVJvb3QpOwogCiAgICAgbUNvbnRleHQudHJlZVJvb3QtPnRyYXZl
cnNlKHRoaXMpOyAgIC8vIE91dHB1dCB0aGUgYm9keSBmaXJzdCB0byBkZXRlcm1pbmUgd2hhdCBo
YXMgdG8gZ28gaW4gdGhlIGhlYWRlcgogICAgIGhlYWRlcigpOwpAQCAtMTc3OCw3ICsxNzc5LDcg
QEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIAogewogICAgIGJvb2wg
d2FzRGlzY29udGludW91cyA9IG1JbnNpZGVEaXNjb250aW51b3VzTG9vcDsKIAotICAgIGlmICgh
bUluc2lkZURpc2NvbnRpbnVvdXNMb29wKQorICAgIGlmIChtQ29udGFpbnNMb29wRGlzY29udGlu
dWl0eSAmJiAhbUluc2lkZURpc2NvbnRpbnVvdXNMb29wKQogICAgIHsKICAgICAgICAgbUluc2lk
ZURpc2NvbnRpbnVvdXNMb29wID0gY29udGFpbnNMb29wRGlzY29udGludWl0eShub2RlKTsKICAg
ICB9CkBAIC0yNTY1LDcgKzI1NjYsNyBAQCBjb25zdCBDb25zdGFudFVuaW9uICpPdXRwdXRITFNM
Ojp3cml0ZUNvCiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAoY29uc3RVbmlvbi0+Z2V0
VHlwZSgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OiBvdXQg
PDwgY29uc3RVbmlvbi0+Z2V0RkNvbnN0KCk7IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVi
dEZsb2F0OiBvdXQgPDwgc3RkOjptaW4oRkxUX01BWCwgc3RkOjptYXgoLUZMVF9NQVgsIGNvbnN0
VW5pb24tPmdldEZDb25zdCgpKSk7IGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIEVidEludDog
ICBvdXQgPDwgY29uc3RVbmlvbi0+Z2V0SUNvbnN0KCk7IGJyZWFrOwogICAgICAgICAgICAgICBj
YXNlIEVidEJvb2w6ICBvdXQgPDwgY29uc3RVbmlvbi0+Z2V0QkNvbnN0KCk7IGJyZWFrOwogICAg
ICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwCShyZXZpc2lv
biAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VI
ZWxwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTMsNyArNDkzLDcgQEAgYm9vbCBUUGFyc2VD
b250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlYwogICAgIGJvb2wgb3ZlckZ1bGwgPSBmYWxzZTsK
ICAgICBib29sIG1hdHJpeEluTWF0cml4ID0gZmFsc2U7CiAgICAgYm9vbCBhcnJheUFyZyA9IGZh
bHNlOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpOyAr
K2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQo
KTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFRQYXJhbWV0ZXImIHBhcmFtID0gZnVuY3Rpb24uZ2V0
UGFyYW0oaSk7CiAgICAgICAgIHNpemUgKz0gcGFyYW0udHlwZS0+Z2V0T2JqZWN0U2l6ZSgpOwog
ICAgICAgICAKQEAgLTUxMiw3ICs1MTIsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVj
dG9yRXJyb3JDaGVjCiAgICAgaWYgKGNvbnN0VHlwZSkKICAgICAgICAgdHlwZS0+c2V0UXVhbGlm
aWVyKEV2cUNvbnN0KTsKIAotICAgIGlmICh0eXBlLT5pc0FycmF5KCkgJiYgdHlwZS0+Z2V0QXJy
YXlTaXplKCkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7CisgICAgaWYgKHR5cGUtPmlz
QXJyYXkoKSAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHR5cGUtPmdldEFycmF5U2l6ZSgpKSAhPSBm
dW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgImFycmF5IGNv
bnN0cnVjdG9yIG5lZWRzIG9uZSBhcmd1bWVudCBwZXIgYXJyYXkgZWxlbWVudCIsICJjb25zdHJ1
Y3RvciIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNTA3LDcgKzE1MDcsNyBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoCiAvLwogLy8gUmV0dXJu
cyAwIGZvciBzdWNjZXNzLgogLy8KLWludCBQYVBhcnNlU3RyaW5ncyhpbnQgY291bnQsIGNvbnN0
IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCitpbnQgUGFQYXJzZVN0
cmluZ3Moc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50
IGxlbmd0aFtdLAogICAgICAgICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsK
ICAgICBpZiAoKGNvdW50ID09IDApIHx8IChzdHJpbmcgPT0gTlVMTCkpCiAgICAgICAgIHJldHVy
biAxOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVs
cGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1BhcnNlSGVscGVyLmgJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyAr
MTM0LDcgQEAgc3RydWN0IFRQYXJzZUNvbnRleHQgewogICAgIGJvb2wgc3RydWN0TmVzdGluZ0Vy
cm9yQ2hlY2soVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBUVHlwZSYgZmllbGRUeXBlKTsKIH07CiAK
LWludCBQYVBhcnNlU3RyaW5ncyhpbnQgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1td
LCBjb25zdCBpbnQgbGVuZ3RoW10sCitpbnQgUGFQYXJzZVN0cmluZ3Moc2l6ZV90IGNvdW50LCBj
b25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAogICAgICAgICAg
ICAgICAgICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOwogCiAjZW5kaWYgLy8gX1BBUlNFUl9I
RUxQRVJfSU5DTFVERURfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvU2hIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvU2hIYW5kbGUuaAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2LDEz
ICsxNiwxMyBAQAogCiAjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCiAKLSNpbmNsdWRl
ICJjb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaCIKICNpbmNsdWRlICJjb21waWxlci9CdWls
dEluRnVuY3Rpb25FbXVsYXRvci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0V4dGVuc2lvbkJlaGF2
aW9yLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSGFzaE5hbWVzLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvSW5mb1NpbmsuaCIKICNpbmNsdWRlICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL1ZhcmlhYmxlSW5mby5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L2NvbXBp
bGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oIgogCiBjbGFzcyBMb25nTmFtZU1hcDsKIGNsYXNzIFRD
b21waWxlcjsKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBJbml0KGNvbnN0
IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKTsKICAgICBib29sIGNvbXBpbGUoY29uc3Qg
Y2hhciogY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAotICAgICAgICAgICAgICAgICBjb25zdCBpbnQg
bnVtU3RyaW5ncywKKyAgICAgICAgICAgICAgICAgc2l6ZV90IG51bVN0cmluZ3MsCiAgICAgICAg
ICAgICAgICAgIGludCBjb21waWxlT3B0aW9ucyk7CiAKICAgICAvLyBHZXQgcmVzdWx0cyBvZiB0
aGUgbGFzdCBjb21waWxhdGlvbi4KQEAgLTEwOCw2ICsxMDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
Y29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBnZXRFeHRlbnNpb25CZWhhdmlvcigpIGNvbnN0Owog
CiAgICAgY29uc3QgQXJyYXlCb3VuZHNDbGFtcGVyJiBnZXRBcnJheUJvdW5kc0NsYW1wZXIoKSBj
b25zdDsKKyAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IGdldEFycmF5SW5kZXhDbGFt
cGluZ1N0cmF0ZWd5KCkgY29uc3Q7CiAgICAgY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3Im
IGdldEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC0xMjMs
NiArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBURXh0ZW5zaW9uQmVoYXZpb3IgZXh0ZW5zaW9uQmVo
YXZpb3I7CiAKICAgICBBcnJheUJvdW5kc0NsYW1wZXIgYXJyYXlCb3VuZHNDbGFtcGVyOworICAg
IFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgY2xhbXBpbmdTdHJhdGVneTsKICAgICBCdWls
dEluRnVuY3Rpb25FbXVsYXRvciBidWlsdEluRnVuY3Rpb25FbXVsYXRvcjsKIAogICAgIC8vIFJl
c3VsdHMgb2YgY29tcGlsYXRpb24uCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvU2hhZGVyTGFuZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwCShyZXZpc2lvbiAxNDM2NTQpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxLDE4ICsyMSwxOCBAQAogLy8KIAogc3RhdGljIGJvb2wgY2hlY2tBY3Rp
dmVVbmlmb3JtQW5kQXR0cmliTWF4TGVuZ3Rocyhjb25zdCBTaEhhbmRsZSBoYW5kbGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHBlY3Rl
ZFZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZXhwZWN0ZWRWYWx1ZSkKIHsKLSAgICBpbnQgYWN0aXZlVW5pZm9ybUxpbWl0ID0g
MDsKKyAgICBzaXplX3QgYWN0aXZlVW5pZm9ybUxpbWl0ID0gMDsKICAgICBTaEdldEluZm8oaGFu
ZGxlLCBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmYWN0aXZlVW5pZm9ybUxpbWl0KTsK
LSAgICBpbnQgYWN0aXZlQXR0cmliTGltaXQgPSAwOworICAgIHNpemVfdCBhY3RpdmVBdHRyaWJM
aW1pdCA9IDA7CiAgICAgU2hHZXRJbmZvKGhhbmRsZSwgU0hfQUNUSVZFX0FUVFJJQlVURV9NQVhf
TEVOR1RILCAmYWN0aXZlQXR0cmliTGltaXQpOwogICAgIHJldHVybiAoZXhwZWN0ZWRWYWx1ZSA9
PSBhY3RpdmVVbmlmb3JtTGltaXQgJiYgZXhwZWN0ZWRWYWx1ZSA9PSBhY3RpdmVBdHRyaWJMaW1p
dCk7CiB9CiAKLXN0YXRpYyBib29sIGNoZWNrTWFwcGVkTmFtZU1heExlbmd0aChjb25zdCBTaEhh
bmRsZSBoYW5kbGUsIGludCBleHBlY3RlZFZhbHVlKQorc3RhdGljIGJvb2wgY2hlY2tNYXBwZWRO
YW1lTWF4TGVuZ3RoKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwgc2l6ZV90IGV4cGVjdGVkVmFsdWUp
CiB7Ci0gICAgaW50IG1hcHBlZE5hbWVNYXhMZW5ndGggPSAwOworICAgIHNpemVfdCBtYXBwZWRO
YW1lTWF4TGVuZ3RoID0gMDsKICAgICBTaEdldEluZm8oaGFuZGxlLCBTSF9NQVBQRURfTkFNRV9N
QVhfTEVOR1RILCAmbWFwcGVkTmFtZU1heExlbmd0aCk7CiAgICAgcmV0dXJuIChleHBlY3RlZFZh
bHVlID09IG1hcHBlZE5hbWVNYXhMZW5ndGgpOwogfQpAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMg
Ym9vbCBjaGVja01hcHBlZE5hbWVNYXhMZW5ndGgoY29uCiBzdGF0aWMgdm9pZCBnZXRWYXJpYWJs
ZUluZm8oU2hTaGFkZXJJbmZvIHZhclR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU2hIYW5kbGUgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
bmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQqIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hEYXRhVHlw
ZSogdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1lLApAQCAtNjIs
MjggKzYyLDIxIEBAIHN0YXRpYyB2b2lkIGdldFZhcmlhYmxlSW5mbyhTaFNoYWRlckluZm8KICAg
ICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgVFZhcmlhYmxlSW5mbyYgdmFySW5mbyA9IHZhckxp
c3RbaW5kZXhdOwotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Nob3J0ZW4tNjQt
dG8tMzIiCi0jZW5kaWYKICAgICBpZiAobGVuZ3RoKSAqbGVuZ3RoID0gdmFySW5mby5uYW1lLnNp
emUoKTsKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKLSNlbmRpZgogICAgICpzaXplID0gdmFySW5mby5zaXplOwogICAgICp0eXBlID0gdmFySW5m
by50eXBlOwogCiAgICAgLy8gVGhpcyBzaXplIG11c3QgbWF0Y2ggdGhhdCBxdWVyaWVkIGJ5CiAg
ICAgLy8gU0hfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBhbmQgU0hfQUNUSVZFX0FUVFJJQlVU
RV9NQVhfTEVOR1RICiAgICAgLy8gaW4gU2hHZXRJbmZvLCBiZWxvdy4KLSAgICBpbnQgYWN0aXZl
VW5pZm9ybUFuZEF0dHJpYkxlbmd0aCA9IDEgKyBNQVhfU1lNQk9MX05BTUVfTEVOOworICAgIHNp
emVfdCBhY3RpdmVVbmlmb3JtQW5kQXR0cmliTGVuZ3RoID0gMSArIE1BWF9TWU1CT0xfTkFNRV9M
RU47CiAgICAgQVNTRVJUKGNoZWNrQWN0aXZlVW5pZm9ybUFuZEF0dHJpYk1heExlbmd0aHMoaGFu
ZGxlLCBhY3RpdmVVbmlmb3JtQW5kQXR0cmliTGVuZ3RoKSk7CiAgICAgc3RybmNweShuYW1lLCB2
YXJJbmZvLm5hbWUuY19zdHIoKSwgYWN0aXZlVW5pZm9ybUFuZEF0dHJpYkxlbmd0aCk7CiAgICAg
bmFtZVthY3RpdmVVbmlmb3JtQW5kQXR0cmliTGVuZ3RoIC0gMV0gPSAwOwogICAgIGlmIChtYXBw
ZWROYW1lKSB7CiAgICAgICAgIC8vIFRoaXMgc2l6ZSBtdXN0IG1hdGNoIHRoYXQgcXVlcmllZCBi
eQogICAgICAgICAvLyBTSF9NQVBQRURfTkFNRV9NQVhfTEVOR1RIIGluIFNoR2V0SW5mbywgYmVs
b3cuCi0gICAgICAgIGludCBtYXhNYXBwZWROYW1lTGVuZ3RoID0gMSArIE1BWF9TWU1CT0xfTkFN
RV9MRU47CisgICAgICAgIHNpemVfdCBtYXhNYXBwZWROYW1lTGVuZ3RoID0gMSArIE1BWF9TWU1C
T0xfTkFNRV9MRU47CiAgICAgICAgIEFTU0VSVChjaGVja01hcHBlZE5hbWVNYXhMZW5ndGgoaGFu
ZGxlLCBtYXhNYXBwZWROYW1lTGVuZ3RoKSk7CiAgICAgICAgIHN0cm5jcHkobWFwcGVkTmFtZSwg
dmFySW5mby5tYXBwZWROYW1lLmNfc3RyKCksIG1heE1hcHBlZE5hbWVMZW5ndGgpOwogICAgICAg
ICBtYXBwZWROYW1lW21heE1hcHBlZE5hbWVMZW5ndGggLSAxXSA9IDA7CkBAIC0xMzIsOSArMTI1
LDEyIEBAIHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXMKICAgICByZXNv
dXJjZXMtPk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA9IDA7CiAgICAgcmVzb3VyY2VzLT5PRVNf
RUdMX2ltYWdlX2V4dGVybmFsID0gMDsKICAgICByZXNvdXJjZXMtPkFSQl90ZXh0dXJlX3JlY3Rh
bmdsZSA9IDA7CisgICAgcmVzb3VyY2VzLT5FWFRfZHJhd19idWZmZXJzID0gMDsKIAogICAgIC8v
IERpc2FibGUgbmFtZSBoYXNoaW5nIGJ5IGRlZmF1bHQuCiAgICAgcmVzb3VyY2VzLT5IYXNoRnVu
Y3Rpb24gPSBOVUxMOworCisgICAgcmVzb3VyY2VzLT5BcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVn
eSA9IFNIX0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklOU0lDOwogfQogCiAvLwpAQCAtMTgyLDcgKzE3
OCw3IEBAIHZvaWQgU2hEZXN0cnVjdChTaEhhbmRsZSBoYW5kbGUpCiBpbnQgU2hDb21waWxlKAog
ICAgIGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaGFkZXJT
dHJpbmdzW10sCi0gICAgY29uc3QgaW50IG51bVN0cmluZ3MsCisgICAgc2l6ZV90IG51bVN0cmlu
Z3MsCiAgICAgaW50IGNvbXBpbGVPcHRpb25zKQogewogICAgIGlmICghSW5pdFRocmVhZCgpKQpA
QCAtMjAwLDcgKzE5Niw3IEBAIGludCBTaENvbXBpbGUoCiAgICAgcmV0dXJuIHN1Y2Nlc3MgPyAx
IDogMDsKIH0KIAotdm9pZCBTaEdldEluZm8oY29uc3QgU2hIYW5kbGUgaGFuZGxlLCBTaFNoYWRl
ckluZm8gcG5hbWUsIGludCogcGFyYW1zKQordm9pZCBTaEdldEluZm8oY29uc3QgU2hIYW5kbGUg
aGFuZGxlLCBTaFNoYWRlckluZm8gcG5hbWUsIHNpemVfdCogcGFyYW1zKQogewogICAgIGlmICgh
aGFuZGxlIHx8ICFwYXJhbXMpCiAgICAgICAgIHJldHVybjsKQEAgLTIxOCwyNyArMjE0LDEzIEBA
IHZvaWQgU2hHZXRJbmZvKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwgU2gKICAgICAgICAgKnBhcmFt
cyA9IGNvbXBpbGVyLT5nZXRJbmZvU2luaygpLm9iai5zaXplKCkgKyAxOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFNIX0FDVElWRV9VTklGT1JNUzoKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdzaG9ydGVuLTY0LXRvLTMyIgotI2VuZGlmCiAgICAgICAgICpwYXJhbXMgPSBj
b21waWxlci0+Z2V0VW5pZm9ybXMoKS5zaXplKCk7Ci0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0j
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIOgogICAgICAgICAqcGFyYW1zID0gMSAr
ICBNQVhfU1lNQk9MX05BTUVfTEVOOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNIX0FDVElW
RV9BVFRSSUJVVEVTOgotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Nob3J0ZW4t
NjQtdG8tMzIiCi0jZW5kaWYKICAgICAgICAgKnBhcmFtcyA9IGNvbXBpbGVyLT5nZXRBdHRyaWJz
KCkuc2l6ZSgpOwotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcAotI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU0hfQUNUSVZFX0FUVFJJ
QlVURV9NQVhfTEVOR1RIOgogICAgICAgICAqcGFyYW1zID0gMSArIE1BWF9TWU1CT0xfTkFNRV9M
RU47CkBAIC0yNjIsMTQgKzI0NCw3IEBAIHZvaWQgU2hHZXRJbmZvKGNvbnN0IFNoSGFuZGxlIGhh
bmRsZSwgU2gKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFNIX0hBU0hFRF9O
QU1FU19DT1VOVDoKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzaG9ydGVuLTY0
LXRvLTMyIgotI2VuZGlmCiAgICAgICAgICpwYXJhbXMgPSBjb21waWxlci0+Z2V0TmFtZU1hcCgp
LnNpemUoKTsKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwb3AKLSNlbmRpZgogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OwogICAgIH0KQEAgLTMwOSw3ICsyODQsNyBAQCB2b2lkIFNoR2V0T2JqZWN0Q29kZShjb25zdCBT
aEhhbmRsZSBoYW5kCiAKIHZvaWQgU2hHZXRBY3RpdmVBdHRyaWIoY29uc3QgU2hIYW5kbGUgaGFu
ZGxlLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAg
ICAgICAgIGludCogbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGxlbmd0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBzaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICBTaERhdGFUeXBlKiB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1l
LApAQCAtMzIxLDcgKzI5Niw3IEBAIHZvaWQgU2hHZXRBY3RpdmVBdHRyaWIoY29uc3QgU2hIYW5k
bGUgaGEKIAogdm9pZCBTaEdldEFjdGl2ZVVuaWZvcm0oY29uc3QgU2hIYW5kbGUgaGFuZGxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgaW50KiBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGxlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCogc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoRGF0YVR5cGUqIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1l
LApAQCAtMzUyLDI0ICszMjcsMjQgQEAgdm9pZCBTaEdldE5hbWVIYXNoaW5nRW50cnkoY29uc3Qg
U2hIYW5kbAogICAgICAgICArK2l0OwogCiAgICAgc2l6ZV90IGxlbiA9IGl0LT5maXJzdC5sZW5n
dGgoKSArIDE7Ci0gICAgaW50IG1heF9sZW4gPSAwOworICAgIHNpemVfdCBtYXhfbGVuID0gMDsK
ICAgICBTaEdldEluZm8oaGFuZGxlLCBTSF9OQU1FX01BWF9MRU5HVEgsICZtYXhfbGVuKTsKLSAg
ICBpZiAoc3RhdGljX2Nhc3Q8aW50PihsZW4pID4gbWF4X2xlbikgeworICAgIGlmIChsZW4gPiBt
YXhfbGVuKSB7CiAgICAgICAgIEFTU0VSVChmYWxzZSk7CiAgICAgICAgIGxlbiA9IG1heF9sZW47
CiAgICAgfQogICAgIHN0cm5jcHkobmFtZSwgaXQtPmZpcnN0LmNfc3RyKCksIGxlbik7CiAgICAg
Ly8gVG8gYmUgb24gdGhlIHNhZmUgc2lkZSBpbiBjYXNlIHRoZSBzb3VyY2UgaXMgbG9uZ2VyIHRo
YW4gZXhwZWN0ZWQuCi0gICAgbmFtZVtsZW5dID0gJ1wwJzsKKyAgICBuYW1lW2xlbiAtIDFdID0g
J1wwJzsKIAogICAgIGxlbiA9IGl0LT5zZWNvbmQubGVuZ3RoKCkgKyAxOwogICAgIG1heF9sZW4g
PSAwOwogICAgIFNoR2V0SW5mbyhoYW5kbGUsIFNIX0hBU0hFRF9OQU1FX01BWF9MRU5HVEgsICZt
YXhfbGVuKTsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihsZW4pID4gbWF4X2xlbikgeworICAg
IGlmIChsZW4gPiBtYXhfbGVuKSB7CiAgICAgICAgIEFTU0VSVChmYWxzZSk7CiAgICAgICAgIGxl
biA9IG1heF9sZW47CiAgICAgfQogICAgIHN0cm5jcHkoaGFzaGVkTmFtZSwgaXQtPnNlY29uZC5j
X3N0cigpLCBsZW4pOwogICAgIC8vIFRvIGJlIG9uIHRoZSBzYWZlIHNpZGUgaW4gY2FzZSB0aGUg
c291cmNlIGlzIGxvbmdlciB0aGFuIGV4cGVjdGVkLgotICAgIGhhc2hlZE5hbWVbbGVuXSA9ICdc
MCc7CisgICAgaGFzaGVkTmFtZVtsZW4gLSAxXSA9ICdcMCc7CiB9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkocmV2aXNp
b24gMTQzNjU0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJv
bFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw4ICsxNjksOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXREZWZpbmVkKCkgeyBkZWZpbmVkID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNEZWZpbmVk
KCkgeyByZXR1cm4gZGVmaW5lZDsgfQogCi0gICAgaW50IGdldFBhcmFtQ291bnQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBhcmFtZXRlcnMuc2l6ZSgpKTsgfSAgCi0gICAgY29u
c3QgVFBhcmFtZXRlciYgZ2V0UGFyYW0oaW50IGkpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRlcnNb
aV07IH0KKyAgICBzaXplX3QgZ2V0UGFyYW1Db3VudCgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRl
cnMuc2l6ZSgpOyB9ICAKKyAgICBjb25zdCBUUGFyYW1ldGVyJiBnZXRQYXJhbShzaXplX3QgaSkg
Y29uc3QgeyByZXR1cm4gcGFyYW1ldGVyc1tpXTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGR1bXAo
VEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7CiAgICAgVEZ1bmN0aW9uKGNvbnN0IFRGdW5jdGlv
biYsIFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKQEAgLTMyMywxMCArMzIzLDE2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7CiAgICAgdm9pZCBj
b3B5VGFibGUoY29uc3QgVFN5bWJvbFRhYmxlJiBjb3B5T2YpOwogCi0gICAgdm9pZCBzZXREZWZh
dWx0UHJlY2lzaW9uKCBUQmFzaWNUeXBlIHR5cGUsIFRQcmVjaXNpb24gcHJlYyApewotICAgICAg
ICBpZiggdHlwZSAhPSBFYnRGbG9hdCAmJiB0eXBlICE9IEVidEludCApIHJldHVybjsgLy8gT25s
eSBzZXQgZGVmYXVsdCBwcmVjaXNpb24gZm9yIGludC9mbG9hdAorICAgIGJvb2wgc2V0RGVmYXVs
dFByZWNpc2lvbiggY29uc3QgVFB1YmxpY1R5cGUmIHR5cGUsIFRQcmVjaXNpb24gcHJlYyApewor
ICAgICAgICBpZiAoSXNTYW1wbGVyKHR5cGUudHlwZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsgIC8vIFNraXAgc2FtcGxlciB0eXBlcyBmb3IgdGhlIHRpbWUgYmVpbmcKKyAgICAgICAgaWYg
KHR5cGUudHlwZSAhPSBFYnRGbG9hdCAmJiB0eXBlLnR5cGUgIT0gRWJ0SW50KQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOyAvLyBPbmx5IHNldCBkZWZhdWx0IHByZWNpc2lvbiBmb3IgaW50L2Zs
b2F0CisgICAgICAgIGlmICh0eXBlLnNpemUgIT0gMSB8fCB0eXBlLm1hdHJpeCB8fCB0eXBlLmFy
cmF5KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBOb3QgYWxsb3dlZCB0byBzZXQgZm9y
IGFnZ3JlZ2F0ZSB0eXBlcwogICAgICAgICBpbnQgaW5kZXhPZkxhc3RFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8aW50PihwcmVjaXNpb25TdGFjay5zaXplKCkpIC0gMTsKLSAgICAgICAgcHJlY2lzaW9u
U3RhY2tbaW5kZXhPZkxhc3RFbGVtZW50XVt0eXBlXSA9IHByZWM7IC8vIFVzZXMgbWFwIG9wZXJh
dG9yIFtdLCBvdmVyd3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlCisgICAgICAgIHByZWNpc2lvblN0
YWNrW2luZGV4T2ZMYXN0RWxlbWVudF1bdHlwZS50eXBlXSA9IHByZWM7IC8vIFVzZXMgbWFwIG9w
ZXJhdG9yIFtdLCBvdmVyd3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlCisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAogICAgIC8vIFNlYXJjaGVzIGRvd24gdGhlIHByZWNpc2lvblN0YWNrIGZv
ciBhIHByZWNpc2lvbiBxdWFsaWZpZXIgZm9yIHRoZSBzcGVjaWZpZWQgVEJhc2ljVHlwZQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JFU1NMLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHJh
bnNsYXRvckVTU0wuY3BwCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckVTU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBAIHZvaWQgVHJhbnNsYXRvckVTU0w6OnRyYW5zbGF0ZShUSW50ZXJtTm8KICAg
ICBnZXRBcnJheUJvdW5kc0NsYW1wZXIoKS5PdXRwdXRDbGFtcGluZ0Z1bmN0aW9uRGVmaW5pdGlv
bihzaW5rKTsKIAogICAgIC8vIFdyaXRlIHRyYW5zbGF0ZWQgc2hhZGVyLgotICAgIFRPdXRwdXRF
U1NMIG91dHB1dEVTU0woc2luaywgZ2V0SGFzaEZ1bmN0aW9uKCksIGdldE5hbWVNYXAoKSwgZ2V0
U3ltYm9sVGFibGUoKSk7CisgICAgVE91dHB1dEVTU0wgb3V0cHV0RVNTTChzaW5rLCBnZXRBcnJh
eUluZGV4Q2xhbXBpbmdTdHJhdGVneSgpLCBnZXRIYXNoRnVuY3Rpb24oKSwgZ2V0TmFtZU1hcCgp
LCBnZXRTeW1ib2xUYWJsZSgpKTsKICAgICByb290LT50cmF2ZXJzZSgmb3V0cHV0RVNTTCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9y
R0xTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1RyYW5zbGF0b3JHTFNMLmNwcAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JHTFNMLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksNiBAQCB2b2lkIFRyYW5zbGF0b3JHTFNMOjp0cmFuc2xhdGUoVEludGVy
bU5vCiAgICAgZ2V0QXJyYXlCb3VuZHNDbGFtcGVyKCkuT3V0cHV0Q2xhbXBpbmdGdW5jdGlvbkRl
ZmluaXRpb24oc2luayk7CiAKICAgICAvLyBXcml0ZSB0cmFuc2xhdGVkIHNoYWRlci4KLSAgICBU
T3V0cHV0R0xTTCBvdXRwdXRHTFNMKHNpbmssIGdldEhhc2hGdW5jdGlvbigpLCBnZXROYW1lTWFw
KCksIGdldFN5bWJvbFRhYmxlKCkpOworICAgIFRPdXRwdXRHTFNMIG91dHB1dEdMU0woc2luaywg
Z2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3koKSwgZ2V0SGFzaEZ1bmN0aW9uKCksIGdldE5h
bWVNYXAoKSwgZ2V0U3ltYm9sVGFibGUoKSk7CiAgICAgcm9vdC0+dHJhdmVyc2UoJm91dHB1dEdM
U0wpOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhbGlk
YXRlTGltaXRhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcAkocmV2aXNpb24gMTQzNjU0KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsMjAgKzQyMSwxMyBAQCBib29sIFZhbGlkYXRl
TGltaXRhdGlvbnM6OnZhbGlkYXRlRnVuY3RpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gTGlzdCBvZiBwYXJhbSBpbmRpY2VzIGZvciB3aGljaCBsb29wIGluZGljZXMgYXJlIHVzZWQg
YXMgYXJndW1lbnQuCi0gICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxpbnQ+IFBhcmFtSW5kZXg7Cisg
ICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxzaXplX3Q+IFBhcmFtSW5kZXg7CiAgICAgUGFyYW1JbmRl
eCBwSW5kZXg7CiAgICAgVEludGVybVNlcXVlbmNlJiBwYXJhbXMgPSBub2RlLT5nZXRTZXF1ZW5j
ZSgpOwogICAgIGZvciAoVEludGVybVNlcXVlbmNlOjpzaXplX3R5cGUgaSA9IDA7IGkgPCBwYXJh
bXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gcGFyYW1z
W2ldLT5nZXRBc1N5bWJvbE5vZGUoKTsKICAgICAgICAgaWYgKHN5bWJvbCAmJiBpc0xvb3BJbmRl
eChzeW1ib2wpKQotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Nob3J0ZW4tNjQt
dG8tMzIiCi0jZW5kaWYKICAgICAgICAgICAgIHBJbmRleC5wdXNoX2JhY2soaSk7Ci0jaWYgZGVm
aW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKICAg
ICB9CiAgICAgLy8gSWYgbm9uZSBvZiB0aGUgbG9vcCBpbmRpY2VzIGFyZSB1c2VkIGFzIGFyZ3Vt
ZW50cywKICAgICAvLyB0aGVyZSBpcyBub3RoaW5nIHRvIGNoZWNrLgpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlUGFja2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVQYWNrZXIu
Y3BwCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvVmFyaWFibGVQYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBA
IGludCBWYXJpYWJsZVBhY2tlcjo6R2V0TnVtUm93cyhTaERhdGFUeXAKICAgICAgICAgY2FzZSBT
SF9GTE9BVF9NQVQzOgogICAgICAgICAgICAgcmV0dXJuIDM7CiAgICAgICAgIGNhc2UgU0hfRkxP
QVRfTUFUMjoKLSAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgcmV0dXJuIDI7CiAg
ICAgICAgIGNhc2UgU0hfRkxPQVRfVkVDNDoKICAgICAgICAgY2FzZSBTSF9JTlRfVkVDNDoKICAg
ICAgICAgY2FzZSBTSF9CT09MX1ZFQzQ6CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvZ2xzbGFuZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmgJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgsNyArOCw3IEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0OwogZXh0ZXJuIGludCBnbHNsYW5nX2lu
aXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCk7CiBleHRlcm4gaW50IGdsc2xhbmdfZmlu
YWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCk7CiAKLWV4dGVybiBpbnQgZ2xzbGFuZ19zY2Fu
KGludCBjb3VudCwKK2V4dGVybiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgaW50IGxlbmd0aFtdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgVFBhcnNlQ29udGV4dCogY29udGV4dCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDkgKzIzLDYgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIExFWEVSIChnbHNs
YQogLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4g
RE8gTk9UIEVESVQhCiAKIC8vIElnbm9yZSBlcnJvcnMgaW4gYXV0by1nZW5lcmF0ZWQgY29kZS4K
LSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV3Nob3J0ZW4tNjQtdG8tMzIiCi0jZW5kaWYKICNpZiBkZWZpbmVkKF9fR05VQ19fKQogI3By
YWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKICNwcmFnbWEg
R0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCkBAIC01NCw3ICs1MSw3
IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNkZWZpbmUgWVlf
SU5QVVQoYnVmLCByZXN1bHQsIG1heF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0
KGJ1ZiwgbWF4X3NpemUsIHl5c2Nhbm5lcik7CiAKLXN0YXRpYyBpbnQgc3RyaW5nX2lucHV0KGNo
YXIqIGJ1ZiwgaW50IG1heF9zaXplLCB5eXNjYW5fdCB5eXNjYW5uZXIpOworc3RhdGljIHl5X3Np
emVfdCBzdHJpbmdfaW5wdXQoY2hhciogYnVmLCB5eV9zaXplX3QgbWF4X3NpemUsIHl5c2Nhbl90
IHl5c2Nhbm5lcik7CiBzdGF0aWMgaW50IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyKTsK
IHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5uZXIpOwogJX0KQEAgLTIw
NiwxMCArMjAzLDEwIEBAIE8gICAgICAgICAgIFswLTddCiAgICByZXR1cm4gY2hlY2tfdHlwZSh5
eXNjYW5uZXIpOwogfQogCi0wW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdHJ0
b2woeXl0ZXh0LCAwLCAwKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQotMHtPfSsgICAgICAgICAg
ICAgeyB5eWx2YWwtPmxleC5pID0gc3RydG9sKHl5dGV4dCwgMCwgMCk7IHJldHVybihJTlRDT05T
VEFOVCk7IH0KKzBbeFhde0h9KyAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0
PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Ciswe099
KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5
eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQogMHtEfSsgICAgICAgICAgICAg
eyBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgIkludmFsaWQgT2N0YWwgbnVtYmVyLiIsIHl5dGV4
dCk7IGNvbnRleHQtPnJlY292ZXIoKTsgcmV0dXJuIDA7fQote0R9KyAgICAgICAgICAgICAgeyB5
eWx2YWwtPmxleC5pID0gc3RydG9sKHl5dGV4dCwgMCwgMCk7IHJldHVybihJTlRDT05TVEFOVCk7
IH0KK3tEfSsgICAgICAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4o
c3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9CiAKIHtEfSt7RX0g
ICAgICAgICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5
eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9CiB7RH0rIi4ie0R9Kih7RX0pPyB7IHl5
bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVy
bihGTE9BVENPTlNUQU5UKTsgfQpAQCAtMjc1LDExICsyNzIsMTEgQEAgTyAgICAgICAgICAgWzAt
N10KIAogJSUKIAotaW50IHN0cmluZ19pbnB1dChjaGFyKiBidWYsIGludCBtYXhfc2l6ZSwgeXlz
Y2FuX3QgeXlzY2FubmVyKSB7Cit5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlf
c2l6ZV90IG1heF9zaXplLCB5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAgICBwcDo6VG9rZW4gdG9r
ZW47CiAgICAgeXlnZXRfZXh0cmEoeXlzY2FubmVyKS0+cHJlcHJvY2Vzc29yLmxleCgmdG9rZW4p
OwotICAgIGludCBsZW4gPSB0b2tlbi50eXBlID09IHBwOjpUb2tlbjo6TEFTVCA/IDAgOiB0b2tl
bi50ZXh0LnNpemUoKTsKLSAgICBpZiAoKGxlbiA+IDApICYmIChsZW4gPCBtYXhfc2l6ZSkpCisg
ICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8gMCA6IHRv
a2VuLnRleHQuc2l6ZSgpOworICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAgbWVtY3B5
KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwogICAgIHl5c2V0X2xpbmVubyhFbmNvZGVT
b3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSksIHl5c2Nh
bm5lcik7CiAKQEAgLTM0NCw3ICszNDEsNyBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VD
b250ZXh0KiBjb250CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBnbHNsYW5nX3NjYW4oaW50IGNv
dW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAoraW50
IGdsc2xhbmdfc2NhbihzaXplX3QgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBj
b25zdCBpbnQgbGVuZ3RoW10sCiAgICAgICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQqIGNvbnRl
eHQpIHsKICAgICB5eXJlc3RhcnQoTlVMTCwgY29udGV4dC0+c2Nhbm5lcik7CiAgICAgeXlzZXRf
bGluZW5vKEVuY29kZVNvdXJjZUxvYygwLCAxKSwgY29udGV4dC0+c2Nhbm5lcik7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHJldmlz
aW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNs
YW5nLnkJKHdvcmtpbmcgY29weSkKQEAgLTUyNCw3ICs1MjQsNyBAQCBmdW5jdGlvbl9jYWxsCiAg
ICAgICAgICAgICAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXROYW1lKGZuQ2FuZGlk
YXRlLT5nZXRNYW5nbGVkTmFtZSgpKTsKIAogICAgICAgICAgICAgICAgICAgICBUUXVhbGlmaWVy
IHF1YWw7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm5DYW5kaWRh
dGUtPmdldFBhcmFtQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZm5DYW5kaWRhdGUtPmdldFBhcmFtQ291bnQoKTsgKytpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBxdWFsID0gZm5DYW5kaWRhdGUtPmdldFBhcmFtKGkpLnR5cGUt
PmdldFF1YWxpZmllcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1YWwgPT0gRXZx
T3V0IHx8IHF1YWwgPT0gRXZxSW5PdXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygkJC0+Z2V0TGluZSgpLCAiYXNzaWduIiwgJCQt
PmdldEFzQWdncmVnYXRlKCktPmdldFNlcXVlbmNlKClbaV0tPmdldEFzVHlwZWQoKSkpIHsKQEAg
LTk2NSw3ICs5NjUsNyBAQCBkZWNsYXJhdGlvbgogICAgICAgICBwcm90b3R5cGUtPnNldFR5cGUo
ZnVuY3Rpb24uZ2V0UmV0dXJuVHlwZSgpKTsKICAgICAgICAgcHJvdG90eXBlLT5zZXROYW1lKGZ1
bmN0aW9uLmdldE5hbWUoKSk7CiAgICAgICAgIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKTsgaSsrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKTsgaSsrKQogICAgICAgICB7CiAgICAgICAg
ICAgICBjb25zdCBUUGFyYW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwogICAg
ICAgICAgICAgaWYgKHBhcmFtLm5hbWUgIT0gMCkKQEAgLTk5MSw3ICs5OTEsMTAgQEAgZGVjbGFy
YXRpb24KICAgICAgICAgJCQgPSAkMS5pbnRlcm1BZ2dyZWdhdGU7CiAgICAgfQogICAgIHwgUFJF
Q0lTSU9OIHByZWNpc2lvbl9xdWFsaWZpZXIgdHlwZV9zcGVjaWZpZXJfbm9fcHJlYyBTRU1JQ09M
T04gewotICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAk
My50eXBlLCAkMiApOworICAgICAgICBpZiAoIWNvbnRleHQtPnN5bWJvbFRhYmxlLnNldERlZmF1
bHRQcmVjaXNpb24oICQzLCAkMiApKSB7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5s
aW5lLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZp
ZXIiLCBnZXRCYXNpY1N0cmluZygkMy50eXBlKSk7CisgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CisgICAgICAgIH0KICAgICAgICAgJCQgPSAwOwogICAgIH0KICAgICA7CkBAIC0xMDEy
LDcgKzEwMTUsNyBAQCBmdW5jdGlvbl9wcm90b3R5cGUKICAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMi5saW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1l
IHJldHVybiB0eXBlIiwgJDEtPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHByZXZEZWMtPmdldFBhcmFtQ291bnQoKTsgKytpKSB7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZXZEZWMtPmdldFBhcmFtQ291
bnQoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFBhcmFtKGkpLnR5
cGUtPmdldFF1YWxpZmllcigpICE9ICQxLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXIo
KSkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAib3Zlcmxv
YWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwg
JDEtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllclN0cmluZygpKTsKICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwpAQCAtMjA4Miw3ICsyMDg1LDcgQEAgZnVuY3Rp
b25fZGVmaW5pdGlvbgogICAgICAgICAvLyBrbm93cyB3aGVyZSB0byBmaW5kIHBhcmFtZXRlcnMu
CiAgICAgICAgIC8vCiAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUqIHBhcmFtTm9kZXMgPSBuZXcg
VEludGVybUFnZ3JlZ2F0ZTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmdW5jdGlvbi0+
Z2V0UGFyYW1Db3VudCgpOyBpKyspIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
dW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpOyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IFRQYXJh
bWV0ZXImIHBhcmFtID0gZnVuY3Rpb24tPmdldFBhcmFtKGkpOwogICAgICAgICAgICAgaWYgKHBh
cmFtLm5hbWUgIT0gMCkgewogICAgICAgICAgICAgICAgIFRWYXJpYWJsZSAqdmFyaWFibGUgPSBu
ZXcgVFZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBlKTsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAkocmV2
aXNpb24gMTQzNjU0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ds
c2xhbmdfbGV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCw5ICs4LDYgQEAKIC8vIFRoaXMgZmls
ZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZV9wYXJzZXIuc2guIERPIE5PVCBFRElUIQog
CiAvLyBJZ25vcmUgZXJyb3JzIGluIGF1dG8tZ2VuZXJhdGVkIGNvZGUuCi0jaWYgZGVmaW5lZChf
X2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzaG9ydGVuLTY0
LXRvLTMyIgotI2VuZGlmCiAjaWYgZGVmaW5lZChfX0dOVUNfXykKICNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtZnVuY3Rpb24iCiAjcHJhZ21hIEdDQyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1XdW51c2VkLXZhcmlhYmxlIgpAQCAtODI0LDcgKzgyMSw3IEBAIFdISUNIIEdF
TkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCBy
ZXN1bHQsIG1heF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3Np
emUsIHl5c2Nhbm5lcik7CiAKLXN0YXRpYyBpbnQgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgaW50
IG1heF9zaXplLCB5eXNjYW5fdCB5eXNjYW5uZXIpOworc3RhdGljIHl5X3NpemVfdCBzdHJpbmdf
aW5wdXQoY2hhciogYnVmLCB5eV9zaXplX3QgbWF4X3NpemUsIHl5c2Nhbl90IHl5c2Nhbm5lcik7
CiBzdGF0aWMgaW50IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyBpbnQg
cmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5uZXIpOwogCkBAIC0xNTQ2LDExICsxNTQzLDEx
IEBAIFlZX1JVTEVfU0VUVVAKIAlZWV9CUkVBSwogY2FzZSA5OToKIFlZX1JVTEVfU0VUVVAKLXsg
eXlsdmFsLT5sZXguaSA9IHN0cnRvbCh5eXRleHQsIDAsIDApOyByZXR1cm4oSU5UQ09OU1RBTlQp
OyB9Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAs
IDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQogCVlZX0JSRUFLCiBjYXNlIDEwMDoKIFlZX1JV
TEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguaSA9IHN0cnRvbCh5eXRleHQsIDAsIDApOyByZXR1cm4o
SU5UQ09OU1RBTlQpOyB9Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRv
bCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQogCVlZX0JSRUFLCiBjYXNl
IDEwMToKIFlZX1JVTEVfU0VUVVAKQEAgLTE1NTgsNyArMTU1NSw3IEBAIFlZX1JVTEVfU0VUVVAK
IAlZWV9CUkVBSwogY2FzZSAxMDI6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmkgPSBz
dHJ0b2woeXl0ZXh0LCAwLCAwKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQoreyB5eWx2YWwtPmxl
eC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRD
T05TVEFOVCk7IH0KIAlZWV9CUkVBSwogY2FzZSAxMDM6CiBZWV9SVUxFX1NFVFVQCkBAIC0yOTUx
LDExICsyOTQ4LDExIEBAIHZvaWQgeXlmcmVlICh2b2lkICogcHRyICwgeXlzY2FuX3QgeXlzY2EK
IAogI2RlZmluZSBZWVRBQkxFU19OQU1FICJ5eXRhYmxlcyIKIAotaW50IHN0cmluZ19pbnB1dChj
aGFyKiBidWYsIGludCBtYXhfc2l6ZSwgeXlzY2FuX3QgeXlzY2FubmVyKSB7Cit5eV9zaXplX3Qg
c3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6ZV90IG1heF9zaXplLCB5eXNjYW5fdCB5eXNj
YW5uZXIpIHsKICAgICBwcDo6VG9rZW4gdG9rZW47CiAgICAgeXlnZXRfZXh0cmEoeXlzY2FubmVy
KS0+cHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAgIGludCBsZW4gPSB0b2tlbi50eXBlID09
IHBwOjpUb2tlbjo6TEFTVCA/IDAgOiB0b2tlbi50ZXh0LnNpemUoKTsKLSAgICBpZiAoKGxlbiA+
IDApICYmIChsZW4gPCBtYXhfc2l6ZSkpCisgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUg
PT0gcHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2VuLnRleHQuc2l6ZSgpOworICAgIGlmIChsZW4g
PCBtYXhfc2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4p
OwogICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwg
dG9rZW4ubG9jYXRpb24ubGluZSkseXlzY2FubmVyKTsKIApAQCAtMzAyMCw3ICszMDE3LDcgQEAg
aW50IGdsc2xhbmdfZmluYWxpemUoVFBhcnNlQ29udGV4dCogY29udAogICAgIHJldHVybiAwOwog
fQogCi1pbnQgZ2xzbGFuZ19zY2FuKGludCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5n
W10sIGNvbnN0IGludCBsZW5ndGhbXSwKK2ludCBnbHNsYW5nX3NjYW4oc2l6ZV90IGNvdW50LCBj
b25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAogICAgICAgICAg
ICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlyZXN0YXJ0KE5VTEwsY29u
dGV4dC0+c2Nhbm5lcik7CiAgICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxvYygwLCAxKSxj
b250ZXh0LT5zY2FubmVyKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9nbHNsYW5nX3RhYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcAkocmV2aXNpb24gMTQzNjU0KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDM0LDcgKzQzNCw3IEBAIHR5cGVkZWYgc2hvcnQgaW50IHl5dHlwZV9pbnQx
NjsKICNkZWZpbmUgWVlTSVpFX01BWElNVU0gKChZWVNJWkVfVCkgLTEpCiAKICNpZm5kZWYgWVlf
Ci0jIGlmIFlZRU5BQkxFX05MUworIyBpZiBkZWZpbmVkIFlZRU5BQkxFX05MUyAmJiBZWUVOQUJM
RV9OTFMKICMgIGlmIEVOQUJMRV9OTFMKICMgICBpbmNsdWRlIDxsaWJpbnRsLmg+IC8qIElORlJJ
TkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KICMgICBkZWZpbmUgWVlfKG1zZ2lkKSBkZ2V0dGV4
dCAoImJpc29uLXJ1bnRpbWUiLCBtc2dpZCkKQEAgLTc1OCwyMCArNzU4LDIwIEBAIHN0YXRpYyBj
b25zdCB5eXR5cGVfdWludDE2IHl5cmxpbmVbXSA9CiAgICAgIDc2MiwgICA3NzMsICAgNzc3LCAg
IDc3OCwgICA3ODgsICAgNzk4LCAgIDgwOCwgICA4MjEsICAgODIyLCAgIDgzMiwKICAgICAgODQ1
LCAgIDg0OSwgICA4NTMsICAgODU3LCAgIDg1OCwgICA4NzEsICAgODcyLCAgIDg4NSwgICA4ODYs
ICAgODk5LAogICAgICA5MDAsICAgOTE3LCAgIDkxOCwgICA5MzEsICAgOTMyLCAgIDkzMywgICA5
MzQsICAgOTM1LCAgIDkzOSwgICA5NDIsCi0gICAgIDk1MywgICA5NjEsICAgOTg4LCAgIDk5Mywg
IDEwMDAsICAxMDM4LCAgMTA0MSwgIDEwNDgsICAxMDU2LCAgMTA3NywKLSAgICAxMDk4LCAgMTEw
OSwgIDExMzgsICAxMTQzLCAgMTE1MywgIDExNTgsICAxMTY4LCAgMTE3MSwgIDExNzQsICAxMTc3
LAotICAgIDExODMsICAxMTkwLCAgMTE5MywgIDEyMTUsICAxMjMzLCAgMTI1NywgIDEyODAsICAx
Mjg0LCAgMTMwMiwgIDEzMTAsCi0gICAgMTM0MiwgIDEzNjIsICAxNDUxLCAgMTQ2MCwgIDE0ODMs
ICAxNDg2LCAgMTQ5MiwgIDE1MDAsICAxNTA4LCAgMTUxNiwKLSAgICAxNTI2LCAgMTUzMywgIDE1
MzYsICAxNTM5LCAgMTU0NSwgIDE1NDgsICAxNTYzLCAgMTU2NywgIDE1NzEsICAxNTc1LAotICAg
IDE1ODQsICAxNTg5LCAgMTU5NCwgIDE1OTksICAxNjA0LCAgMTYwOSwgIDE2MTQsICAxNjE5LCAg
MTYyNCwgIDE2MjksCi0gICAgMTYzNSwgIDE2NDEsICAxNjQ3LCAgMTY1MiwgIDE2NTcsICAxNjY2
LCAgMTY3NSwgIDE2ODAsICAxNjkzLCAgMTY5MywKLSAgICAxNzA3LCAgMTcwNywgIDE3MTYsICAx
NzE5LCAgMTczNCwgIDE3NzAsICAxNzc0LCAgMTc4MCwgIDE3ODgsICAxODA0LAotICAgIDE4MDgs
ICAxODEyLCAgMTgxMywgIDE4MTksICAxODIwLCAgMTgyMSwgIDE4MjIsICAxODIzLCAgMTgyNywg
IDE4MjgsCi0gICAgMTgyOCwgIDE4MjgsICAxODM4LCAgMTgzOSwgIDE4NDMsICAxODQzLCAgMTg0
NCwgIDE4NDQsICAxODQ5LCAgMTg1MiwKLSAgICAxODYyLCAgMTg2NSwgIDE4NzEsICAxODcyLCAg
MTg3NiwgIDE4ODQsICAxODg4LCAgMTg5OCwgIDE5MDMsICAxOTIwLAotICAgIDE5MjAsICAxOTI1
LCAgMTkyNSwgIDE5MzIsICAxOTMyLCAgMTk0MCwgIDE5NDMsICAxOTQ5LCAgMTk1MiwgIDE5NTgs
Ci0gICAgMTk2MiwgIDE5NjksICAxOTc2LCAgMTk4MywgIDE5OTAsICAyMDAxLCAgMjAxMCwgIDIw
MTQsICAyMDIxLCAgMjAyNCwKLSAgICAyMDMwLCAgMjAzMAorICAgICA5NTMsICAgOTYxLCAgIDk4
OCwgICA5OTMsICAxMDAzLCAgMTA0MSwgIDEwNDQsICAxMDUxLCAgMTA1OSwgIDEwODAsCisgICAg
MTEwMSwgIDExMTIsICAxMTQxLCAgMTE0NiwgIDExNTYsICAxMTYxLCAgMTE3MSwgIDExNzQsICAx
MTc3LCAgMTE4MCwKKyAgICAxMTg2LCAgMTE5MywgIDExOTYsICAxMjE4LCAgMTIzNiwgIDEyNjAs
ICAxMjgzLCAgMTI4NywgIDEzMDUsICAxMzEzLAorICAgIDEzNDUsICAxMzY1LCAgMTQ1NCwgIDE0
NjMsICAxNDg2LCAgMTQ4OSwgIDE0OTUsICAxNTAzLCAgMTUxMSwgIDE1MTksCisgICAgMTUyOSwg
IDE1MzYsICAxNTM5LCAgMTU0MiwgIDE1NDgsICAxNTUxLCAgMTU2NiwgIDE1NzAsICAxNTc0LCAg
MTU3OCwKKyAgICAxNTg3LCAgMTU5MiwgIDE1OTcsICAxNjAyLCAgMTYwNywgIDE2MTIsICAxNjE3
LCAgMTYyMiwgIDE2MjcsICAxNjMyLAorICAgIDE2MzgsICAxNjQ0LCAgMTY1MCwgIDE2NTUsICAx
NjYwLCAgMTY2OSwgIDE2NzgsICAxNjgzLCAgMTY5NiwgIDE2OTYsCisgICAgMTcxMCwgIDE3MTAs
ICAxNzE5LCAgMTcyMiwgIDE3MzcsICAxNzczLCAgMTc3NywgIDE3ODMsICAxNzkxLCAgMTgwNywK
KyAgICAxODExLCAgMTgxNSwgIDE4MTYsICAxODIyLCAgMTgyMywgIDE4MjQsICAxODI1LCAgMTgy
NiwgIDE4MzAsICAxODMxLAorICAgIDE4MzEsICAxODMxLCAgMTg0MSwgIDE4NDIsICAxODQ2LCAg
MTg0NiwgIDE4NDcsICAxODQ3LCAgMTg1MiwgIDE4NTUsCisgICAgMTg2NSwgIDE4NjgsICAxODc0
LCAgMTg3NSwgIDE4NzksICAxODg3LCAgMTg5MSwgIDE5MDEsICAxOTA2LCAgMTkyMywKKyAgICAx
OTIzLCAgMTkyOCwgIDE5MjgsICAxOTM1LCAgMTkzNSwgIDE5NDMsICAxOTQ2LCAgMTk1MiwgIDE5
NTUsICAxOTYxLAorICAgIDE5NjUsICAxOTcyLCAgMTk3OSwgIDE5ODYsICAxOTkzLCAgMjAwNCwg
IDIwMTMsICAyMDE3LCAgMjAyNCwgIDIwMjcsCisgICAgMjAzMywgIDIwMzMKIH07CiAjZW5kaWYK
IApAQCAtMTQwNyw3ICsxNDA3LDcgQEAgd2hpbGUgKFlZSUQgKDApKQogICAgd2Ugd29uJ3QgYnJl
YWsgdXNlciBjb2RlOiB3aGVuIHRoZXNlIGFyZSB0aGUgbG9jYXRpb25zIHdlIGtub3cuICAqLwog
CiAjaWZuZGVmIFlZX0xPQ0FUSU9OX1BSSU5UCi0jIGlmIFlZTFRZUEVfSVNfVFJJVklBTAorIyBp
ZiBkZWZpbmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwKICMgIGRl
ZmluZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpCQkJXAogICAgICBmcHJpbnRmIChGaWxl
LCAiJWQuJWQtJWQuJWQiLAkJCVwKIAkgICAgICAoTG9jKS5maXJzdF9saW5lLCAoTG9jKS5maXJz
dF9jb2x1bW4sCVwKQEAgLTI1NTQsNyArMjU1NCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQWdncmVnYXRlKCkt
PnNldE5hbWUoZm5DYW5kaWRhdGUtPmdldE1hbmdsZWROYW1lKCkpOwogCiAgICAgICAgICAgICAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbDsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBmbkNhbmRpZGF0ZS0+Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmbkNhbmRpZGF0ZS0+Z2V0UGFyYW1Db3Vu
dCgpOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHF1YWwgPSBmbkNhbmRpZGF0ZS0+
Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocXVhbCA9PSBFdnFPdXQgfHwgcXVhbCA9PSBFdnFJbk91dCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0TGluZSgpLCAiYXNzaWduIiwgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRTZXF1ZW5jZSgpW2ldLT5nZXRB
c1R5cGVkKCkpKSB7CkBAIC0zMTQwLDcgKzMxNDAsNyBAQCB5eXJlZHVjZToKICAgICAgICAgcHJv
dG90eXBlLT5zZXRUeXBlKGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKSk7CiAgICAgICAgIHByb3Rv
dHlwZS0+c2V0TmFtZShmdW5jdGlvbi5nZXROYW1lKCkpOwogICAgICAgICAKLSAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCk7IGkrKykKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCk7IGkrKykKICAg
ICAgICAgewogICAgICAgICAgICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5n
ZXRQYXJhbShpKTsKICAgICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCkBAIC0zMTc0LDcg
KzMxNzQsMTAgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgNzM6CiAKICAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oICh5eXZzcFsoMykgLSAoNCldLmlu
dGVybS50eXBlKS50eXBlLCAoeXl2c3BbKDIpIC0gKDQpXS5pbnRlcm0ucHJlY2lzaW9uKSApOwor
ICAgICAgICBpZiAoIWNvbnRleHQtPnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oICh5
eXZzcFsoMykgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWygyKSAtICg0KV0uaW50ZXJtLnBy
ZWNpc2lvbikgKSkgeworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICg0
KV0ubGV4KS5saW5lLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lv
biBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlw
ZSkudHlwZSkpOworICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICB9CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7
CkBAIC0zMTk2LDcgKzMxOTksNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJvdmVybG9hZGVkIGZ1bmN0aW9u
cyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0uZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50KCk7ICsraSkgeworICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50KCk7
ICsraSkgewogICAgICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5nZXRQYXJhbShpKS50eXBlLT5n
ZXRRdWFsaWZpZXIoKSAhPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRQ
YXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXIoKSkgewogICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJvdmVybG9hZGVkIGZ1bmN0
aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJT
dHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTQ1
NjIsNyArNDU2NSw3IEBAIHl5cmVkdWNlOgogICAgICAgICAvLyBrbm93cyB3aGVyZSB0byBmaW5k
IHBhcmFtZXRlcnMuCiAgICAgICAgIC8vCiAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUqIHBhcmFt
Tm9kZXMgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBmdW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpOyBpKyspIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmdW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpOyBpKyspIHsKICAgICAgICAgICAg
IGNvbnN0IFRQYXJhbWV0ZXImIHBhcmFtID0gZnVuY3Rpb24tPmdldFBhcmFtKGkpOwogICAgICAg
ICAgICAgaWYgKHBhcmFtLm5hbWUgIT0gMCkgewogICAgICAgICAgICAgICAgIFRWYXJpYWJsZSAq
dmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBlKTsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9vc2luY2x1ZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvb3NpbmNsdWRlLmgJ
KHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9vc2luY2x1ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsOCBAQAogdHlwZWRlZiBE
V09SRCBPU19UTFNJbmRleDsKICNkZWZpbmUgT1NfSU5WQUxJRF9UTFNfSU5ERVggKFRMU19PVVRf
T0ZfSU5ERVhFUykKICNlbGlmIGRlZmluZWQoQU5HTEVfT1NfUE9TSVgpCi10eXBlZGVmIHB0aHJl
YWRfa2V5X3QgT1NfVExTSW5kZXg7Ci0jZGVmaW5lIE9TX0lOVkFMSURfVExTX0lOREVYIChzdGF0
aWNfY2FzdDxPU19UTFNJbmRleD4oLTEpKQordHlwZWRlZiB1bnNpZ25lZCBpbnQgT1NfVExTSW5k
ZXg7CisjZGVmaW5lIE9TX0lOVkFMSURfVExTX0lOREVYIDB4RkZGRkZGRkYKICNlbmRpZiAgLy8g
QU5HTEVfT1NfV0lOCiAKIE9TX1RMU0luZGV4IE9TX0FsbG9jVExTSW5kZXgoKTsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lv
blBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcAkocmV2aXNpb24gMTQzNjU0
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9F
eHByZXNzaW9uUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNCArMSwyMiBAQAotLyog
QSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisvKiBBIEJpc29uIHBh
cnNlciwgbWFkZSBieSBHTlUgQmlzb24gMi40LjIuICAqLwogCiAvKiBTa2VsZXRvbiBpbXBsZW1l
bnRhdGlvbiBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCi0KLSAgIENvcHlyaWdo
dCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAw
NSwgMjAwNgotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0KLSAgIFRoaXMgcHJv
Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k
aWZ5CisgICAKKyAgICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0xOTkwLCAyMDAwLTIwMDYs
IDIwMDktMjAxMCBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuCisgICAKKyAgIFRo
aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgYW55IGxhdGVyIHZl
cnNpb24uCi0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9u
IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgICBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCisgICAKICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICBh
bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQotICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKyAgIGFsb25nIHdpdGggdGhpcyBw
cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K
IAogLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBjcmVhdGUgYSBsYXJnZXIgd29y
ayB0aGF0IGNvbnRhaW5zCiAgICBwYXJ0IG9yIGFsbCBvZiB0aGUgQmlzb24gcGFyc2VyIHNrZWxl
dG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawpAQCAtMjksNyArMjcsNyBAQAogICAgc3BlY2lh
bCBleGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNrZWxldG9uIGFuZCB0aGUgcmVzdWx0
aW5nCiAgICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUgbGljZW5zZWQgdW5kZXIgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYwogICAgTGljZW5zZSB3aXRob3V0IHRoaXMgc3BlY2lhbCBleGNlcHRpb24u
Ci0KKyAgIAogICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiBpbgogICAgdmVyc2lvbiAyLjIgb2YgQmlzb24uICAqLwogCkBA
IC00Nyw3ICs0NSw3IEBACiAjZGVmaW5lIFlZQklTT04gMQogCiAvKiBCaXNvbiB2ZXJzaW9uLiAg
Ki8KLSNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjMiCisjZGVmaW5lIFlZQklTT05fVkVSU0lP
TiAiMi40LjIiCiAKIC8qIFNrZWxldG9uIG5hbWUuICAqLwogI2RlZmluZSBZWVNLRUxFVE9OX05B
TUUgInlhY2MuYyIKQEAgLTU1LDUwICs1MywyMyBAQAogLyogUHVyZSBwYXJzZXJzLiAgKi8KICNk
ZWZpbmUgWVlQVVJFIDEKIAorLyogUHVzaCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVVNIIDAK
KworLyogUHVsbCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVUxMIDEKKwogLyogVXNpbmcgbG9j
YXRpb25zLiAgKi8KICNkZWZpbmUgWVlMU1BfTkVFREVEIDAKIAogLyogU3Vic3RpdHV0ZSB0aGUg
dmFyaWFibGUgYW5kIGZ1bmN0aW9uIG5hbWVzLiAgKi8KLSNkZWZpbmUgeXlwYXJzZSBwcHBhcnNl
Ci0jZGVmaW5lIHl5bGV4ICAgcHBsZXgKLSNkZWZpbmUgeXllcnJvciBwcGVycm9yCi0jZGVmaW5l
IHl5bHZhbCAgcHBsdmFsCi0jZGVmaW5lIHl5Y2hhciAgcHBjaGFyCi0jZGVmaW5lIHl5ZGVidWcg
cHBkZWJ1ZwotI2RlZmluZSB5eW5lcnJzIHBwbmVycnMKLQotCi0vKiBUb2tlbnMuICAqLwotI2lm
bmRlZiBZWVRPS0VOVFlQRQotIyBkZWZpbmUgWVlUT0tFTlRZUEUKLSAgIC8qIFB1dCB0aGUgdG9r
ZW5zIGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhhdCBHREIgYW5kIG90aGVyIGRlYnVnZ2Vy
cwotICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KLSAgIGVudW0geXl0b2tlbnR5cGUgewotICAg
ICBUT0tfQ09OU1RfSU5UID0gMjU4LAotICAgICBUT0tfT1BfT1IgPSAyNTksCi0gICAgIFRPS19P
UF9BTkQgPSAyNjAsCi0gICAgIFRPS19PUF9ORSA9IDI2MSwKLSAgICAgVE9LX09QX0VRID0gMjYy
LAotICAgICBUT0tfT1BfR0UgPSAyNjMsCi0gICAgIFRPS19PUF9MRSA9IDI2NCwKLSAgICAgVE9L
X09QX1JJR0hUID0gMjY1LAotICAgICBUT0tfT1BfTEVGVCA9IDI2NiwKLSAgICAgVE9LX1VOQVJZ
ID0gMjY3Ci0gICB9OwotI2VuZGlmCi0vKiBUb2tlbnMuICAqLwotI2RlZmluZSBUT0tfQ09OU1Rf
SU5UIDI1OAotI2RlZmluZSBUT0tfT1BfT1IgMjU5Ci0jZGVmaW5lIFRPS19PUF9BTkQgMjYwCi0j
ZGVmaW5lIFRPS19PUF9ORSAyNjEKLSNkZWZpbmUgVE9LX09QX0VRIDI2MgotI2RlZmluZSBUT0tf
T1BfR0UgMjYzCi0jZGVmaW5lIFRPS19PUF9MRSAyNjQKLSNkZWZpbmUgVE9LX09QX1JJR0hUIDI2
NQotI2RlZmluZSBUT0tfT1BfTEVGVCAyNjYKLSNkZWZpbmUgVE9LX1VOQVJZIDI2NwotCi0KKyNk
ZWZpbmUgeXlwYXJzZSAgICAgICAgIHBwcGFyc2UKKyNkZWZpbmUgeXlsZXggICAgICAgICAgIHBw
bGV4CisjZGVmaW5lIHl5ZXJyb3IgICAgICAgICBwcGVycm9yCisjZGVmaW5lIHl5bHZhbCAgICAg
ICAgICBwcGx2YWwKKyNkZWZpbmUgeXljaGFyICAgICAgICAgIHBwY2hhcgorI2RlZmluZSB5eWRl
YnVnICAgICAgICAgcHBkZWJ1ZworI2RlZmluZSB5eW5lcnJzICAgICAgICAgcHBuZXJycwogCiAK
IC8qIENvcHkgdGhlIGZpcnN0IHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwpAQCAtMTEy
LDE4ICs4MywxMyBAQAogCiAvLyBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJh
dGVfcGFyc2VyLnNoLiBETyBOT1QgRURJVCEKIAotLy8gSWYgY2xhbmcgb3IgZ2NjLgogI2lmIGRl
ZmluZWQoX19HTlVDX18pCi0KLS8vIFR1cm4gb2ZmIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2Fy
bmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZSBhdXRvLWdlbmVyYXRlZCBwcGx2YWwgdmFyaWFibGUuCi0v
LyBPbiBnY2MgNC43KywgVGhlIGZsYWcgaXMgY2FsbGVkICItV21heWJlLXVuaW5pdGlhbGl6ZWQi
LgotLy8gT24gY2xhbmcgYW5kIGdjYyA8IDQuNywgdGhlIGZsYWcgaXMgY2FsbGVkICItV3VuaW5p
dGlhbGl6ZWQiLgotI2lmICFkZWZpbmVkKF9fY2xhbmdfXykgJiYgKChfX0dOVUNfXyA9PSA0ICYm
IF9fR05VX0NfTUlOT1JfXyA+PSA3KSB8fCBfX0dOVUNfXyA+PSA1KQorLy8gVHJpZ2dlcmVkIGJ5
IHRoZSBhdXRvLWdlbmVyYXRlZCBwcGx2YWwgdmFyaWFibGUuCisjaWYgIWRlZmluZWQoX19jbGFu
Z19fKSAmJiAoKF9fR05VQ19fID4gNCkgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9S
X18gPj0gNykpCiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWF5YmUtdW5pbml0
aWFsaXplZCIKICNlbHNlCiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5pbml0
aWFsaXplZCIKICNlbmRpZgotCiAjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQogI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6IDQwNjUgNDcwMSkKICNlbmRpZgpAQCAtMTYzLDYgKzEyOSw3IEBAIHN0YXRp
YyBpbnQgeXlsZXgoWVlTVFlQRSogbHZhbHAsIENvbnRleHQKIHN0YXRpYyB2b2lkIHl5ZXJyb3Io
Q29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsKIAogCisKIC8qIEVuYWJsaW5n
IHRyYWNlcy4gICovCiAjaWZuZGVmIFlZREVCVUcKICMgZGVmaW5lIFlZREVCVUcgMApAQCAtMTgx
LDIwICsxNDgsMzkgQEAgc3RhdGljIHZvaWQgeXllcnJvcihDb250ZXh0KiBjb250ZXh0LCBjbwog
IyBkZWZpbmUgWVlUT0tFTl9UQUJMRSAwCiAjZW5kaWYKIAorCisvKiBUb2tlbnMuICAqLworI2lm
bmRlZiBZWVRPS0VOVFlQRQorIyBkZWZpbmUgWVlUT0tFTlRZUEUKKyAgIC8qIFB1dCB0aGUgdG9r
ZW5zIGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhhdCBHREIgYW5kIG90aGVyIGRlYnVnZ2Vy
cworICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KKyAgIGVudW0geXl0b2tlbnR5cGUgeworICAg
ICBUT0tfQ09OU1RfSU5UID0gMjU4LAorICAgICBUT0tfT1BfT1IgPSAyNTksCisgICAgIFRPS19P
UF9BTkQgPSAyNjAsCisgICAgIFRPS19PUF9ORSA9IDI2MSwKKyAgICAgVE9LX09QX0VRID0gMjYy
LAorICAgICBUT0tfT1BfR0UgPSAyNjMsCisgICAgIFRPS19PUF9MRSA9IDI2NCwKKyAgICAgVE9L
X09QX1JJR0hUID0gMjY1LAorICAgICBUT0tfT1BfTEVGVCA9IDI2NiwKKyAgICAgVE9LX1VOQVJZ
ID0gMjY3CisgICB9OworI2VuZGlmCisKKworCiAjaWYgISBkZWZpbmVkIFlZU1RZUEUgJiYgISBk
ZWZpbmVkIFlZU1RZUEVfSVNfREVDTEFSRUQKIHR5cGVkZWYgaW50IFlZU1RZUEU7CisjIGRlZmlu
ZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogIyBkZWZpbmUgeXlzdHlwZSBZWVNUWVBFIC8qIG9ic29s
ZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLwogIyBkZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJF
RCAxCi0jIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogI2VuZGlmCiAKIAotCiAvKiBDb3B5
IHRoZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCiAKIAotLyogTGluZSAy
MTYgb2YgeWFjYy5jLiAgKi8KLQogCiAjaWZkZWYgc2hvcnQKICMgdW5kZWYgc2hvcnQKQEAgLTI0
NCw3ICsyMzAsNyBAQCB0eXBlZGVmIHNob3J0IGludCB5eXR5cGVfaW50MTY7CiAjZGVmaW5lIFlZ
U0laRV9NQVhJTVVNICgoWVlTSVpFX1QpIC0xKQogCiAjaWZuZGVmIFlZXwotIyBpZiBZWUVOQUJM
RV9OTFMKKyMgaWYgZGVmaW5lZCBZWUVOQUJMRV9OTFMgJiYgWVlFTkFCTEVfTkxTCiAjICBpZiBF
TkFCTEVfTkxTCiAjICAgaW5jbHVkZSA8bGliaW50bC5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBO
QU1FIFNQQUNFICovCiAjICAgZGVmaW5lIFlZXyhtc2dpZCkgZGdldHRleHQgKCJiaXNvbi1ydW50
aW1lIiwgbXNnaWQpCkBAIC0yNjksMTQgKzI1NSwxNCBAQCB0eXBlZGVmIHNob3J0IGludCB5eXR5
cGVfaW50MTY7CiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19f
IFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3Rh
dGljIGludAotWVlJRCAoaW50IGkpCitZWUlEIChpbnQgeXlpKQogI2Vsc2UKIHN0YXRpYyBpbnQK
LVlZSUQgKGkpCi0gICAgaW50IGk7CitZWUlEICh5eWkpCisgICAgaW50IHl5aTsKICNlbmRpZgog
ewotICByZXR1cm4gaTsKKyAgcmV0dXJuIHl5aTsKIH0KICNlbmRpZgogCkBAIC0zNTcsOSArMzQz
LDkgQEAgdm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5HRVMgT04gVVNFUgogLyogQSB0eXBl
IHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3IgYW55IHN0YWNrIG1lbWJlci4gICovCiB1bmlv
biB5eWFsbG9jCiB7Ci0gIHl5dHlwZV9pbnQxNiB5eXNzOwotICBZWVNUWVBFIHl5dnM7Ci0gIH07
CisgIHl5dHlwZV9pbnQxNiB5eXNzX2FsbG9jOworICBZWVNUWVBFIHl5dnNfYWxsb2M7Cit9Owog
CiAvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBnYXAgYmV0d2VlbiBvbmUgYWxpZ25lZCBzdGFj
ayBhbmQgdGhlIG5leHQuICAqLwogIyBkZWZpbmUgWVlTVEFDS19HQVBfTUFYSU1VTSAoc2l6ZW9m
ICh1bmlvbiB5eWFsbG9jKSAtIDEpCkBAIC0zOTMsMTIgKzM3OSwxMiBAQCB1bmlvbiB5eWFsbG9j
CiAgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ssIGFuZCBZWVBUUiBnaXZlcyB0aGUgbmV3IGxvY2F0
aW9uIG9mIHRoZQogICAgc3RhY2suICBBZHZhbmNlIFlZUFRSIHRvIGEgcHJvcGVybHkgYWxpZ25l
ZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKICAgIHN0YWNrLiAgKi8KLSMgZGVmaW5lIFlZU1RBQ0tf
UkVMT0NBVEUoU3RhY2spCQkJCQlcCisjIGRlZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrX2Fs
bG9jLCBTdGFjaykJCQkJXAogICAgIGRvCQkJCQkJCQkJXAogICAgICAgewkJCQkJCQkJCVwKIAlZ
WVNJWkVfVCB5eW5ld2J5dGVzOwkJCQkJCVwKLQlZWUNPUFkgKCZ5eXB0ci0+U3RhY2ssIFN0YWNr
LCB5eXNpemUpOwkJCQlcCi0JU3RhY2sgPSAmeXlwdHItPlN0YWNrOwkJCQkJCVwKKwlZWUNPUFkg
KCZ5eXB0ci0+U3RhY2tfYWxsb2MsIFN0YWNrLCB5eXNpemUpOwkJCVwKKwlTdGFjayA9ICZ5eXB0
ci0+U3RhY2tfYWxsb2M7CQkJCQlcCiAJeXluZXdieXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9m
ICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYSU1VTTsgXAogCXl5cHRyICs9IHl5bmV3Ynl0ZXMg
LyBzaXplb2YgKCp5eXB0cik7CQkJCVwKICAgICAgIH0JCQkJCQkJCQlcCkBAIC00ODcsOSArNDcz
LDkgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5cmhzW10gPQogLyogWVlSTElORVtZWU5d
IC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3YXMgZGVmaW5lZC4gICovCiBz
dGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cmxpbmVbXSA9CiB7Ci0gICAgICAgMCwgICAgOTYs
ICAgIDk2LCAgIDEwMywgICAxMDQsICAgMTA3LCAgIDExMCwgICAxMTMsICAgMTE2LCAgIDExOSwK
LSAgICAgMTIyLCAgIDEyNSwgICAxMjgsICAgMTMxLCAgIDEzNCwgICAxMzcsICAgMTQwLCAgIDE0
MywgICAxNDYsICAgMTQ5LAotICAgICAxNjIsICAgMTc1LCAgIDE3OCwgICAxODEsICAgMTg0LCAg
IDE4NywgICAxOTAKKyAgICAgICAwLCAgICA5MCwgICAgOTAsICAgIDk3LCAgICA5OCwgICAxMDEs
ICAgMTA0LCAgIDEwNywgICAxMTAsICAgMTEzLAorICAgICAxMTYsICAgMTE5LCAgIDEyMiwgICAx
MjUsICAgMTI4LCAgIDEzMSwgICAxMzQsICAgMTM3LCAgIDE0MCwgICAxNDMsCisgICAgIDE1Niwg
ICAxNjksICAgMTcyLCAgIDE3NSwgICAxNzgsICAgMTgxLCAgIDE4NAogfTsKICNlbmRpZgogCkBA
IC02NDQsOSArNjMwLDE4IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlzdG9zW10gPQog
CiAvKiBMaWtlIFlZRVJST1IgZXhjZXB0IGRvIGNhbGwgeXllcnJvci4gIFRoaXMgcmVtYWlucyBo
ZXJlIHRlbXBvcmFyaWx5CiAgICB0byBlYXNlIHRoZSB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgbWVh
bmluZyBvZiBZWUVSUk9SLCBmb3IgR0NDLgotICAgT25jZSBHQ0MgdmVyc2lvbiAyIGhhcyBzdXBw
bGFudGVkIHZlcnNpb24gMSwgdGhpcyBjYW4gZ28uICAqLworICAgT25jZSBHQ0MgdmVyc2lvbiAy
IGhhcyBzdXBwbGFudGVkIHZlcnNpb24gMSwgdGhpcyBjYW4gZ28uICBIb3dldmVyLAorICAgWVlG
QUlMIGFwcGVhcnMgdG8gYmUgaW4gdXNlLiAgTmV2ZXJ0aGVsZXNzLCBpdCBpcyBmb3JtYWxseSBk
ZXByZWNhdGVkCisgICBpbiBCaXNvbiAyLjQuMidzIE5FV1MgZW50cnksIHdoZXJlIGEgcGxhbiB0
byBwaGFzZSBpdCBvdXQgaXMKKyAgIGRpc2N1c3NlZC4gICovCiAKICNkZWZpbmUgWVlGQUlMCQln
b3RvIHl5ZXJybGFiCisjaWYgZGVmaW5lZCBZWUZBSUwKKyAgLyogVGhpcyBpcyBoZXJlIHRvIHN1
cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIEdDQyBjcHAncworICAgICAtV3VudXNlZC1tYWNyb3Mu
ICBOb3JtYWxseSB3ZSBkb24ndCB3b3JyeSBhYm91dCB0aGF0IHdhcm5pbmcsIGJ1dAorICAgICBz
b21lIHVzZXJzIGRvLCBhbmQgd2Ugd2FudCB0byBtYWtlIGl0IGVhc3kgZm9yIHVzZXJzIHRvIHJl
bW92ZQorICAgICBZWUZBSUwgdXNlcywgd2hpY2ggd2lsbCBwcm9kdWNlIHdhcm5pbmdzIGZyb20g
Qmlzb24gMi41LiAgKi8KKyNlbmRpZgogCiAjZGVmaW5lIFlZUkVDT1ZFUklORygpICAoISF5eWVy
cnN0YXR1cykKIApAQCAtNzAzLDcgKzY5OCw3IEBAIHdoaWxlIChZWUlEICgwKSkKICAgIHdlIHdv
bid0IGJyZWFrIHVzZXIgY29kZTogd2hlbiB0aGVzZSBhcmUgdGhlIGxvY2F0aW9ucyB3ZSBrbm93
LiAgKi8KIAogI2lmbmRlZiBZWV9MT0NBVElPTl9QUklOVAotIyBpZiBZWUxUWVBFX0lTX1RSSVZJ
QUwKKyMgaWYgZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFM
CiAjICBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKQkJCVwKICAgICAgZnByaW50
ZiAoRmlsZSwgIiVkLiVkLSVkLiVkIiwJCQlcCiAJICAgICAgKExvYykuZmlyc3RfbGluZSwgKExv
YykuZmlyc3RfY29sdW1uLAlcCkBAIC04MTcsMTcgKzgxMiwyMCBAQCB5eV9zeW1ib2xfcHJpbnQg
KHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsCiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5l
ZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVk
IF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKmJv
dHRvbSwgeXl0eXBlX2ludDE2ICp0b3ApCit5eV9zdGFja19wcmludCAoeXl0eXBlX2ludDE2ICp5
eWJvdHRvbSwgeXl0eXBlX2ludDE2ICp5eXRvcCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfc3Rh
Y2tfcHJpbnQgKGJvdHRvbSwgdG9wKQotICAgIHl5dHlwZV9pbnQxNiAqYm90dG9tOwotICAgIHl5
dHlwZV9pbnQxNiAqdG9wOworeXlfc3RhY2tfcHJpbnQgKHl5Ym90dG9tLCB5eXRvcCkKKyAgICB5
eXR5cGVfaW50MTYgKnl5Ym90dG9tOworICAgIHl5dHlwZV9pbnQxNiAqeXl0b3A7CiAjZW5kaWYK
IHsKICAgWVlGUFJJTlRGIChzdGRlcnIsICJTdGFjayBub3ciKTsKLSAgZm9yICg7IGJvdHRvbSA8
PSB0b3A7ICsrYm90dG9tKQotICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgKmJvdHRvbSk7
CisgIGZvciAoOyB5eWJvdHRvbSA8PSB5eXRvcDsgeXlib3R0b20rKykKKyAgICB7CisgICAgICBp
bnQgeXlib3QgPSAqeXlib3R0b207CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAlZCIsIHl5
Ym90KTsKKyAgICB9CiAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKIH0KIApAQCAtODYyLDEx
ICs4NjAsMTEgQEAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlydWxlLCBjb250ZXh0KQogICAv
KiBUaGUgc3ltYm9scyBiZWluZyByZWR1Y2VkLiAgKi8KICAgZm9yICh5eWkgPSAwOyB5eWkgPCB5
eW5yaHM7IHl5aSsrKQogICAgIHsKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIs
IHl5aSArIDEpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAx
KTsKICAgICAgIHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLCB5eXJoc1t5eXByaHNbeXlydWxlXSAr
IHl5aV0sCiAJCSAgICAgICAmKHl5dnNwWyh5eWkgKyAxKSAtICh5eW5yaHMpXSkKIAkJICAgICAg
IAkJICAgICAgICwgY29udGV4dCk7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOworICAg
ICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwogICAgIH0KIH0KIApAQCAtMTE0OCwxMCArMTE0
Niw4IEBAIHl5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVwLCBjb24KIAlicmVhazsK
ICAgICB9CiB9Ci0MCiAKIC8qIFByZXZlbnQgd2FybmluZ3MgZnJvbSAtV21pc3NpbmctcHJvdG90
eXBlcy4gICovCi0KICNpZmRlZiBZWVBBUlNFX1BBUkFNCiAjaWYgZGVmaW5lZCBfX1NURENfXyB8
fCBkZWZpbmVkIF9fY3BsdXNwbHVzCiBpbnQgeXlwYXJzZSAodm9pZCAqWVlQQVJTRV9QQVJBTSk7
CkBAIC0xMTcwLDEwICsxMTY2LDkgQEAgaW50IHl5cGFyc2UgKCk7CiAKIAogCi0KLS8qLS0tLS0t
LS0tLS4KLXwgeXlwYXJzZS4gIHwKLWAtLS0tLS0tLS0tKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS4KK3wgeXlwYXJzZSBvciB5eXB1c2hfcGFyc2UuICB8CitgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovCiAKICNpZmRlZiBZWVBBUlNFX1BBUkFNCiAjaWYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKQEAgLTExOTcsMjIgKzExOTIsNDYgQEAgeXlw
YXJzZSAoY29udGV4dCkKICNlbmRpZgogI2VuZGlmCiB7Ci0gIC8qIFRoZSBsb29rLWFoZWFkIHN5
bWJvbC4gICovCisvKiBUaGUgbG9va2FoZWFkIHN5bWJvbC4gICovCiBpbnQgeXljaGFyOwogCi0v
KiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKy8qIFRo
ZSBzZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9va2FoZWFkIHN5bWJvbC4gICovCiBZWVNUWVBFIHl5
bHZhbDsKIAotLyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KLWludCB5eW5l
cnJzOworICAgIC8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCisgICAgaW50
IHl5bmVycnM7CisKKyAgICBpbnQgeXlzdGF0ZTsKKyAgICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRv
IHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8KKyAgICBpbnQgeXllcnJz
dGF0dXM7CisKKyAgICAvKiBUaGUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKKyAgICAgICBgeXlz
cyc6IHJlbGF0ZWQgdG8gc3RhdGVzLgorICAgICAgIGB5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRp
YyB2YWx1ZXMuCisKKyAgICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocnUgc2VwYXJhdGUgcG9p
bnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKKyAgICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxz
ZXdoZXJlLiAgKi8KKworICAgIC8qIFRoZSBzdGF0ZSBzdGFjay4gICovCisgICAgeXl0eXBlX2lu
dDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKKyAgICB5eXR5cGVfaW50MTYgKnl5c3M7CisgICAgeXl0
eXBlX2ludDE2ICp5eXNzcDsKKworICAgIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICov
CisgICAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07CisgICAgWVlTVFlQRSAqeXl2czsKKyAg
ICBZWVNUWVBFICp5eXZzcDsKKworICAgIFlZU0laRV9UIHl5c3RhY2tzaXplOwogCi0gIGludCB5
eXN0YXRlOwogICBpbnQgeXluOwogICBpbnQgeXlyZXN1bHQ7Ci0gIC8qIE51bWJlciBvZiB0b2tl
bnMgdG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLwotICBpbnQgeXll
cnJzdGF0dXM7Ci0gIC8qIExvb2stYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0
ZWQpIHRva2VuIG51bWJlci4gICovCi0gIGludCB5eXRva2VuID0gMDsKKyAgLyogTG9va2FoZWFk
IHRva2VuIGFzIGFuIGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLworICBp
bnQgeXl0b2tlbjsKKyAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2
YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKKyAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KKyAg
WVlTVFlQRSB5eXZhbDsKKwogI2lmIFlZRVJST1JfVkVSQk9TRQogICAvKiBCdWZmZXIgZm9yIGVy
cm9yIG1lc3NhZ2VzLCBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8KICAgY2hhciB5eW1zZ2J1
ZlsxMjhdOwpAQCAtMTIyMCw1MSArMTIzOSwyOCBAQCBpbnQgeXluZXJyczsKICAgWVlTSVpFX1Qg
eXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7CiAjZW5kaWYKIAotICAvKiBUaHJlZSBzdGFj
a3MgYW5kIHRoZWlyIHRvb2xzOgotICAgICBgeXlzcyc6IHJlbGF0ZWQgdG8gc3RhdGVzLAotICAg
ICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLAotICAgICBgeXlscyc6IHJlbGF0
ZWQgdG8gbG9jYXRpb25zLgotCi0gICAgIFJlZmVyIHRvIHRoZSBzdGFja3MgdGhydSBzZXBhcmF0
ZSBwb2ludGVycywgdG8gYWxsb3cgeXlvdmVyZmxvdwotICAgICB0byByZWFsbG9jYXRlIHRoZW0g
ZWxzZXdoZXJlLiAgKi8KLQotICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLwotICB5eXR5cGVfaW50
MTYgeXlzc2FbWVlJTklUREVQVEhdOwotICB5eXR5cGVfaW50MTYgKnl5c3MgPSB5eXNzYTsKLSAg
eXl0eXBlX2ludDE2ICp5eXNzcDsKLQotICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2suICAq
LwotICBZWVNUWVBFIHl5dnNhW1lZSU5JVERFUFRIXTsKLSAgWVlTVFlQRSAqeXl2cyA9IHl5dnNh
OwotICBZWVNUWVBFICp5eXZzcDsKLQotCi0KICNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZz
cCAtPSAoTiksIHl5c3NwIC09IChOKSkKIAotICBZWVNJWkVfVCB5eXN0YWNrc2l6ZSA9IFlZSU5J
VERFUFRIOwotCi0gIC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1cm4gc2VtYW50aWMgdmFs
dWUgYW5kIGxvY2F0aW9uIGZyb20gdGhlCi0gICAgIGFjdGlvbiByb3V0aW5lcy4gICovCi0gIFlZ
U1RZUEUgeXl2YWw7Ci0KLQogICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBv
ZiB0aGUgcmVkdWNlZCBydWxlLgogICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBzeW1ib2wgc2hv
dWxkIGJlIHBvcHBlZC4gICovCiAgIGludCB5eWxlbiA9IDA7CiAKKyAgeXl0b2tlbiA9IDA7Cisg
IHl5c3MgPSB5eXNzYTsKKyAgeXl2cyA9IHl5dnNhOworICB5eXN0YWNrc2l6ZSA9IFlZSU5JVERF
UFRIOworCiAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YXJ0aW5nIHBhcnNlXG4iKSk7CiAKICAg
eXlzdGF0ZSA9IDA7CiAgIHl5ZXJyc3RhdHVzID0gMDsKICAgeXluZXJycyA9IDA7Ci0gIHl5Y2hh
ciA9IFlZRU1QVFk7CQkvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLworICB5eWNoYXIg
PSBZWUVNUFRZOyAvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLwogCiAgIC8qIEluaXRp
YWxpemUgc3RhY2sgcG9pbnRlcnMuCiAgICAgIFdhc3RlIG9uZSBlbGVtZW50IG9mIHZhbHVlIGFu
ZCBsb2NhdGlvbiBzdGFjawogICAgICBzbyB0aGF0IHRoZXkgc3RheSBvbiB0aGUgc2FtZSBsZXZl
bCBhcyB0aGUgc3RhdGUgc3RhY2suCiAgICAgIFRoZSB3YXN0ZWQgZWxlbWVudHMgYXJlIG5ldmVy
IGluaXRpYWxpemVkLiAgKi8KLQogICB5eXNzcCA9IHl5c3M7CiAgIHl5dnNwID0geXl2czsKIApA
QCAtMTI5NCw3ICsxMjkwLDYgQEAgaW50IHl5bmVycnM7CiAJWVlTVFlQRSAqeXl2czEgPSB5eXZz
OwogCXl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOwogCi0KIAkvKiBFYWNoIHN0YWNrIHBvaW50
ZXIgYWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0aGUKIAkgICBkYXRhIGluIHVz
ZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4gIFRoaXMgdXNlZCB0byBiZSBhCiAJICAgY29uZGl0
aW9uYWwgYXJvdW5kIGp1c3QgdGhlIHR3byBleHRyYSBhcmdzLCBidXQgdGhhdCBtaWdodApAQCAt
MTMwMiw3ICsxMjk3LDYgQEAgaW50IHl5bmVycnM7CiAJeXlvdmVyZmxvdyAoWVlfKCJtZW1vcnkg
ZXhoYXVzdGVkIiksCiAJCSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKIAkJ
ICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAotCiAJCSAgICAmeXlzdGFja3Np
emUpOwogCiAJeXlzcyA9IHl5c3MxOwpAQCAtMTMyNSw5ICsxMzE5LDggQEAgaW50IHl5bmVycnM7
CiAJICAodW5pb24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNUQUNLX0JZVEVTICh5eXN0
YWNrc2l6ZSkpOwogCWlmICghIHl5cHRyKQogCSAgZ290byB5eWV4aGF1c3RlZGxhYjsKLQlZWVNU
QUNLX1JFTE9DQVRFICh5eXNzKTsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXZzKTsKLQorCVlZU1RB
Q0tfUkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3MpOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnNf
YWxsb2MsIHl5dnMpOwogIyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQogCWlmICh5eXNzMSAhPSB5
eXNzYSkKIAkgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOwpAQCAtMTMzOCw3ICsxMzMxLDYgQEAgaW50
IHl5bmVycnM7CiAgICAgICB5eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAxOwogICAgICAgeXl2c3Ag
PSB5eXZzICsgeXlzaXplIC0gMTsKIAotCiAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFj
ayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIsCiAJCSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0
YWNrc2l6ZSkpOwogCkBAIC0xMzQ4LDYgKzEzNDAsOSBAQCBpbnQgeXluZXJyczsKIAogICBZWURQ
UklOVEYgKChzdGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0ZSkpOwogCisgIGlm
ICh5eXN0YXRlID09IFlZRklOQUwpCisgICAgWVlBQ0NFUFQ7CisKICAgZ290byB5eWJhY2t1cDsK
IAogLyotLS0tLS0tLS0tLS4KQEAgLTEzNTYsMTYgKzEzNTEsMTYgQEAgaW50IHl5bmVycnM7CiB5
eWJhY2t1cDoKIAogICAvKiBEbyBhcHByb3ByaWF0ZSBwcm9jZXNzaW5nIGdpdmVuIHRoZSBjdXJy
ZW50IHN0YXRlLiAgUmVhZCBhCi0gICAgIGxvb2stYWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUg
YW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLworICAgICBsb29rYWhlYWQgdG9rZW4gaWYg
d2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLwogCi0gIC8qIEZpcnN0
IHRyeSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rLWFoZWFk
IHRva2VuLiAgKi8KKyAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQg
cmVmZXJlbmNlIHRvIGxvb2thaGVhZCB0b2tlbi4gICovCiAgIHl5biA9IHl5cGFjdFt5eXN0YXRl
XTsKICAgaWYgKHl5biA9PSBZWVBBQ1RfTklORikKICAgICBnb3RvIHl5ZGVmYXVsdDsKIAotICAv
KiBOb3Qga25vd24gPT4gZ2V0IGEgbG9vay1haGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhh
dmUgb25lLiAgKi8KKyAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2thaGVhZCB0b2tlbiBpZiBk
b24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KIAotICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1Q
VFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4gICovCisgIC8qIFlZQ0hB
UiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZhbGlkIGxvb2thaGVhZCBzeW1ib2wu
ICAqLwogICBpZiAoeXljaGFyID09IFlZRU1QVFkpCiAgICAgewogICAgICAgWVlEUFJJTlRGICgo
c3RkZXJyLCAiUmVhZGluZyBhIHRva2VuOiAiKSk7CkBAIC0xMzk3LDIwICsxMzkyLDE2IEBAIHl5
YmFja3VwOgogICAgICAgZ290byB5eXJlZHVjZTsKICAgICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJ
TkFMKQotICAgIFlZQUNDRVBUOwotCiAgIC8qIENvdW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVy
cm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKICAgICAgc3RhdHVzLiAgKi8KICAgaWYg
KHl5ZXJyc3RhdHVzKQogICAgIHl5ZXJyc3RhdHVzLS07CiAKLSAgLyogU2hpZnQgdGhlIGxvb2st
YWhlYWQgdG9rZW4uICAqLworICAvKiBTaGlmdCB0aGUgbG9va2FoZWFkIHRva2VuLiAgKi8KICAg
WVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jKTsK
IAotICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuIHVubGVzcyBpdCBpcyBlb2YuICAqLwot
ICBpZiAoeXljaGFyICE9IFlZRU9GKQotICAgIHl5Y2hhciA9IFlZRU1QVFk7CisgIC8qIERpc2Nh
cmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLworICB5eWNoYXIgPSBZWUVNUFRZOwogCiAgIHl5c3Rh
dGUgPSB5eW47CiAgICorK3l5dnNwID0geXlsdmFsOwpAQCAtMTQ1NCwxMTIgKzE0NDUsMTEyIEBA
IHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKihjb250ZXh0LT5yZXN1bHQpID0gc3RhdGljX2Nh
c3Q8aW50PigoeXl2c3BbKDEpIC0gKDEpXSkpOwogICAgICAgICBZWUFDQ0VQVDsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkg
PSAoeXl2c3BbKDEpIC0gKDMpXSkgfHwgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgNToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5
eXZzcFsoMSkgLSAoMyldKSAmJiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSA2OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNw
WygxKSAtICgzKV0pIHwgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgNzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkg
LSAoMyldKSBeICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAogICBjYXNlIDg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMp
XSkgJiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSA5OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pICE9
ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDEwOgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pID09ICh5
eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEx
OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pID49ICh5eXZz
cFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyOgog
CiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIDw9ICh5eXZzcFso
MykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzOgogCiAg
ICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pID4gKHl5dnNwWygzKSAt
ICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQ6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPCAoeXl2c3BbKDMpIC0gKDMp
XSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNToKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA+PiAoeXl2c3BbKDMpIC0gKDMpXSk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA8PCAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNzoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAtICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE4OgogCiAgICAgewogICAgICAgICAoeXl2
YWwpID0gKHl5dnNwWygxKSAtICgzKV0pICsgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTk6CkBAIC0xNTc2LDcgKzE1NjcsNyBAQCB5eXJl
ZHVjZToKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEp
IC0gKDMpXSkgJSAoeXl2c3BbKDMpIC0gKDMpXSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDIwOgpAQCAtMTU5Myw1MyArMTU4NCw1MiBAQCB5eXJlZHVj
ZToKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0g
KDMpXSkgLyAoeXl2c3BbKDMpIC0gKDMpXSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDIxOgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNw
WygxKSAtICgzKV0pICogKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMjI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAhICh5eXZzcFso
MikgLSAoMildKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIzOgogCiAg
ICAgewogICAgICAgICAoeXl2YWwpID0gfiAoeXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9
IC0gKHl5dnNwWygyKSAtICgyKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMjU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSArICh5eXZzcFsoMikgLSAoMildKTsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDI2OgogCiAgICAgewogICAgICAg
ICAoeXl2YWwpID0gKHl5dnNwWygyKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAKLS8qIExpbmUgMTI2NyBvZiB5YWNjLmMuICAqLwogCiAgICAgICBkZWZhdWx0OiBicmVh
azsKICAgICB9CkBAIC0xNjUxLDcgKzE2NDEsNiBAQCB5eXJlZHVjZToKIAogICAqKyt5eXZzcCA9
IHl5dmFsOwogCi0KICAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9u
LiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAgdGhhdCBnb2VzIHRvLCBiYXNlZCBvbiB0aGUg
c3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCiAgICAgIG51bWJlciByZWR1Y2Vk
IGJ5LiAgKi8KQEAgLTE3MTYsNyArMTcwNSw3IEBAIHl5ZXJybGFiOgogCiAgIGlmICh5eWVycnN0
YXR1cyA9PSAzKQogICAgIHsKLSAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byBy
ZXVzZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIGFuCisgICAgICAvKiBJZiBqdXN0IHRyaWVkIGFu
ZCBmYWlsZWQgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIGFuCiAJIGVycm9yLCBkaXNj
YXJkIGl0LiAgKi8KIAogICAgICAgaWYgKHl5Y2hhciA8PSBZWUVPRikKQEAgLTE3MzMsNyArMTcy
Miw3IEBAIHl5ZXJybGFiOgogCX0KICAgICB9CiAKLSAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVz
ZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgorICAvKiBFbHNlIHdp
bGwgdHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IK
ICAgICAgdG9rZW4uICAqLwogICBnb3RvIHl5ZXJybGFiMTsKIApAQCAtMTc5MCw5ICsxNzc5LDYg
QEAgeXllcnJsYWIxOgogICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKICAgICB9
CiAKLSAgaWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCiAgICorK3l5dnNwID0g
eXlsdmFsOwogCiAKQEAgLTE4MTcsNyArMTgwMyw3IEBAIHl5YWJvcnRsYWI6CiAgIHl5cmVzdWx0
ID0gMTsKICAgZ290byB5eXJldHVybjsKIAotI2lmbmRlZiB5eW92ZXJmbG93CisjaWYgIWRlZmlu
ZWQoeXlvdmVyZmxvdykgfHwgWVlFUlJPUl9WRVJCT1NFCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCiB8IHl5ZXhoYXVzdGVkbGFiIC0tIG1lbW9y
eSBleGhhdXN0aW9uIGNvbWVzIGhlcmUuICB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xODI4LDcgKzE4MTQsNyBAQCB5eWV4aGF1c3Rl
ZGxhYjoKICNlbmRpZgogCiB5eXJldHVybjoKLSAgaWYgKHl5Y2hhciAhPSBZWUVPRiAmJiB5eWNo
YXIgIT0gWVlFTVBUWSkKKyAgaWYgKHl5Y2hhciAhPSBZWUVNUFRZKQogICAgICB5eWRlc3RydWN0
ICgiQ2xlYW51cDogZGlzY2FyZGluZyBsb29rYWhlYWQiLAogCQkgeXl0b2tlbiwgJnl5bHZhbCwg
Y29udGV4dCk7CiAgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdo
aWNoIGFjdGlvbiB0cmlnZ2VyZWQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci55Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lv
blBhcnNlci55CShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIueQkod29ya2luZyBjb3B5
KQpAQCAtMjAsMTggKzIwLDEzIEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBwcmVwcm9j
ZXNzb3IKIAogLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNl
ci5zaC4gRE8gTk9UIEVESVQhCiAKLS8vIElmIGNsYW5nIG9yIGdjYy4KICNpZiBkZWZpbmVkKF9f
R05VQ19fKQotCi0vLyBUdXJuIG9mZiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmdzIHRy
aWdnZXJlZCBieSB0aGUgYXV0by1nZW5lcmF0ZWQgcHBsdmFsIHZhcmlhYmxlLgotLy8gT24gZ2Nj
IDQuNyssIFRoZSBmbGFnIGlzIGNhbGxlZCAiLVdtYXliZS11bmluaXRpYWxpemVkIi4KLS8vIE9u
IGNsYW5nIGFuZCBnY2MgPCA0LjcsIHRoZSBmbGFnIGlzIGNhbGxlZCAiLVd1bmluaXRpYWxpemVk
Ii4KLSNpZiAhZGVmaW5lZChfX2NsYW5nX18pICYmICgoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNf
TUlOT1JfXyA+PSA3KSB8fCBfX0dOVUNfXyA+PSA1KQorLy8gVHJpZ2dlcmVkIGJ5IHRoZSBhdXRv
LWdlbmVyYXRlZCBwcGx2YWwgdmFyaWFibGUuCisjaWYgIWRlZmluZWQoX19jbGFuZ19fKSAmJiAo
KF9fR05VQ19fID4gNCkgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNykp
CiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWF5YmUtdW5pbml0aWFsaXplZCIK
ICNlbHNlCiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5pbml0aWFsaXplZCIK
ICNlbmRpZgotCiAjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQogI3ByYWdtYSB3YXJuaW5nKGRpc2Fi
bGU6IDQwNjUgNDcwMSkKICNlbmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5jcHAJKHJldmlz
aW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvSW5wdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNywzMiArMTcsMjQgQEAgSW5w
dXQ6OklucHV0KCkgOiBtQ291bnQoMCksIG1TdHJpbmcoMCkKIHsKIH0KIAotSW5wdXQ6OklucHV0
KGludCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhb
XSkgOgorSW5wdXQ6OklucHV0KHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5n
W10sIGNvbnN0IGludCBsZW5ndGhbXSkgOgogICAgIG1Db3VudChjb3VudCksCiAgICAgbVN0cmlu
ZyhzdHJpbmcpCiB7Ci0gICAgYXNzZXJ0KG1Db3VudCA+PSAwKTsKICAgICBtTGVuZ3RoLnJlc2Vy
dmUobUNvdW50KTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1Db3VudDsgKytpKQorICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbUNvdW50OyArK2kpCiAgICAgewogICAgICAgICBpbnQgbGVu
ID0gbGVuZ3RoID8gbGVuZ3RoW2ldIDogLTE7Ci0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1Xc2hvcnRlbi02NC10by0zMiIKLSNlbmRpZgogICAgICAgICBtTGVuZ3RoLnB1c2hfYmFj
ayhsZW4gPCAwID8gc3RkOjpzdHJsZW4obVN0cmluZ1tpXSkgOiBsZW4pOwotI2lmIGRlZmluZWQo
X19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCiAgICAgfQog
fQogCi1pbnQgSW5wdXQ6OnJlYWQoY2hhciogYnVmLCBpbnQgbWF4U2l6ZSkKK3NpemVfdCBJbnB1
dDo6cmVhZChjaGFyKiBidWYsIHNpemVfdCBtYXhTaXplKQogewotICAgIGludCBuUmVhZCA9IDA7
CisgICAgc2l6ZV90IG5SZWFkID0gMDsKICAgICB3aGlsZSAoKG5SZWFkIDwgbWF4U2l6ZSkgJiYg
KG1SZWFkTG9jLnNJbmRleCA8IG1Db3VudCkpCiAgICAgewotICAgICAgICBpbnQgc2l6ZSA9IG1M
ZW5ndGhbbVJlYWRMb2Muc0luZGV4XSAtIG1SZWFkTG9jLmNJbmRleDsKKyAgICAgICAgc2l6ZV90
IHNpemUgPSBtTGVuZ3RoW21SZWFkTG9jLnNJbmRleF0gLSBtUmVhZExvYy5jSW5kZXg7CiAgICAg
ICAgIHNpemUgPSBzdGQ6Om1pbihzaXplLCBtYXhTaXplKTsKICAgICAgICAgc3RkOjptZW1jcHko
YnVmICsgblJlYWQsIG1TdHJpbmdbbVJlYWRMb2Muc0luZGV4XSArIG1SZWFkTG9jLmNJbmRleCwg
c2l6ZSk7CiAgICAgICAgIG5SZWFkICs9IHNpemU7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5oCShy
ZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL0lucHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw3IEBACiAjaWZu
ZGVmIENPTVBJTEVSX1BSRVBST0NFU1NPUl9JTlBVVF9IXwogI2RlZmluZSBDT01QSUxFUl9QUkVQ
Uk9DRVNTT1JfSU5QVVRfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHZlY3Rv
cj4KIAogbmFtZXNwYWNlIHBwCkBAIC0xNywxOCArMTgsMTggQEAgY2xhc3MgSW5wdXQKIHsKICAg
cHVibGljOgogICAgIElucHV0KCk7Ci0gICAgSW5wdXQoaW50IGNvdW50LCBjb25zdCBjaGFyKiBj
b25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdKTsKKyAgICBJbnB1dChzaXplX3QgY291
bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pOwogCi0g
ICAgaW50IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbUNvdW50OyB9Ci0gICAgY29uc3QgY2hhciog
c3RyaW5nKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbVN0cmluZ1tpbmRleF07IH0KLSAgICBp
bnQgbGVuZ3RoKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbUxlbmd0aFtpbmRleF07IH0KKyAg
ICBzaXplX3QgY291bnQoKSBjb25zdCB7IHJldHVybiBtQ291bnQ7IH0KKyAgICBjb25zdCBjaGFy
KiBzdHJpbmcoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtU3RyaW5nW2luZGV4XTsgfQor
ICAgIHNpemVfdCBsZW5ndGgoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtTGVuZ3RoW2lu
ZGV4XTsgfQogCi0gICAgaW50IHJlYWQoY2hhciogYnVmLCBpbnQgbWF4U2l6ZSk7CisgICAgc2l6
ZV90IHJlYWQoY2hhciogYnVmLCBzaXplX3QgbWF4U2l6ZSk7CiAKICAgICBzdHJ1Y3QgTG9jYXRp
b24KICAgICB7Ci0gICAgICAgIGludCBzSW5kZXg7ICAvLyBTdHJpbmcgaW5kZXg7Ci0gICAgICAg
IGludCBjSW5kZXg7ICAvLyBDaGFyIGluZGV4LgorICAgICAgICBzaXplX3Qgc0luZGV4OyAgLy8g
U3RyaW5nIGluZGV4OworICAgICAgICBzaXplX3QgY0luZGV4OyAgLy8gQ2hhciBpbmRleC4KIAog
ICAgICAgICBMb2NhdGlvbigpIDogc0luZGV4KDApLCBjSW5kZXgoMCkgeyB9CiAgICAgfTsKQEAg
LTM2LDkgKzM3LDkgQEAgY2xhc3MgSW5wdXQKIAogICBwcml2YXRlOgogICAgIC8vIElucHV0Lgot
ICAgIGludCBtQ291bnQ7CisgICAgc2l6ZV90IG1Db3VudDsKICAgICBjb25zdCBjaGFyKiBjb25z
dCogbVN0cmluZzsKLSAgICBzdGQ6OnZlY3RvcjxpbnQ+IG1MZW5ndGg7CisgICAgc3RkOjp2ZWN0
b3I8c2l6ZV90PiBtTGVuZ3RoOwogCiAgICAgTG9jYXRpb24gbVJlYWRMb2M7CiB9OwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9j
ZXNzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmNwcAkocmV2aXNpb24gMTQzNjU0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9j
ZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIFByZXByb2Nlc3Nvcjo6
flByZXByb2Nlc3NvcigpCiAgICAgZGVsZXRlIG1JbXBsOwogfQogCi1ib29sIFByZXByb2Nlc3Nv
cjo6aW5pdChpbnQgY291bnQsCitib29sIFByZXByb2Nlc3Nvcjo6aW5pdChzaXplX3QgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBsZW5ndGhbXSkKIHsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDggQEAKICNpZm5kZWYgQ09NUElMRVJfUFJFUFJPQ0VT
U09SX1BSRVBST0NFU1NPUl9IXwogI2RlZmluZSBDT01QSUxFUl9QUkVQUk9DRVNTT1JfUFJFUFJP
Q0VTU09SX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2luY2x1ZGUgInBwX3V0aWxzLmgi
CiAKIG5hbWVzcGFjZSBwcApAQCAtMzIsNyArMzQsNyBAQCBjbGFzcyBQcmVwcm9jZXNzb3IKICAg
ICAvLyBFYWNoIGVsZW1lbnQgaW4gdGhlIGxlbmd0aCBhcnJheSBtYXkgY29udGFpbiB0aGUgbGVu
Z3RoIG9mIHRoZQogICAgIC8vIGNvcnJlc3BvbmRpbmcgc3RyaW5nIG9yIGEgdmFsdWUgbGVzcyB0
aGFuIDAgdG8gaW5kaWNhdGUgdGhhdCB0aGUgc3RyaW5nCiAgICAgLy8gaXMgbnVsbCB0ZXJtaW5h
dGVkLgotICAgIGJvb2wgaW5pdChpbnQgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1td
LCBjb25zdCBpbnQgbGVuZ3RoW10pOworICAgIGJvb2wgaW5pdChzaXplX3QgY291bnQsIGNvbnN0
IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pOwogICAgIC8vIEFkZHMg
YSBwcmUtZGVmaW5lZCBtYWNyby4KICAgICB2b2lkIHByZWRlZmluZU1hY3JvKGNvbnN0IGNoYXIq
IG5hbWUsIGludCB2YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAJ
KHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIwLDkgKzUy
MCw2IEBAIElGIFlPVSBNT0RJRlkgVEhJUyBGSUxFIFlPVSBBTFNPIE5FRUQgVE8KICNpbmNsdWRl
ICJEaWFnbm9zdGljc0Jhc2UuaCIKICNpbmNsdWRlICJUb2tlbi5oIgogCi0jaWYgZGVmaW5lZChf
X2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzaG9ydGVuLTY0
LXRvLTMyIgotI2VuZGlmCiAjaWYgZGVmaW5lZChfX0dOVUNfXykKIC8vIFRyaWdnZXJlZCBieSB0
aGUgYXV0by1nZW5lcmF0ZWQgeXlfZmF0YWxfZXJyb3IgZnVuY3Rpb24uCiAjcHJhZ21hIEdDQyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1ub3JldHVybiIKQEAgLTExMjIsMTMgKzExMTks
MTQgQEAgY2FzZSBZWV9TVEFURV9FT0YoQ09NTUVOVCk6CiAgICAgLy8gU2V0IHRoZSBsb2NhdGlv
biBmb3IgRU9GIHRva2VuIG1hbnVhbGx5LgogICAgIHBwOjpJbnB1dCogaW5wdXQgPSAmeXlleHRy
YS0+aW5wdXQ7CiAgICAgcHA6OklucHV0OjpMb2NhdGlvbiogc2NhbkxvYyA9ICZ5eWV4dHJhLT5z
Y2FuTG9jOwotICAgIGludCBzSW5kZXhNYXggPSBzdGQ6Om1heCgwLCBpbnB1dC0+Y291bnQoKSAt
IDEpOworICAgIHl5X3NpemVfdCBzSW5kZXhNYXggPSBpbnB1dC0+Y291bnQoKSA/IGlucHV0LT5j
b3VudCgpIC0gMSA6IDA7CiAgICAgaWYgKHNjYW5Mb2MtPnNJbmRleCAhPSBzSW5kZXhNYXgpCiAg
ICAgewogICAgICAgICAvLyBXZSBjYW4gb25seSByZWFjaCBoZXJlIGlmIHRoZXJlIGFyZSBlbXB0
eSBzdHJpbmdzIGF0IHRoZQogICAgICAgICAvLyBlbmQgb2YgdGhlIGlucHV0LgogICAgICAgICBz
Y2FuTG9jLT5zSW5kZXggPSBzSW5kZXhNYXg7IHNjYW5Mb2MtPmNJbmRleCA9IDA7Ci0gICAgICAg
IHl5ZmlsZW5vID0gc0luZGV4TWF4OyB5eWxpbmVubyA9IDE7CisgICAgICAgIC8vIEZJWE1FOiB0
aGlzIGlzIG5vdCA2NC1iaXQgY2xlYW4uCisgICAgICAgIHl5ZmlsZW5vID0gc3RhdGljX2Nhc3Q8
aW50PihzSW5kZXhNYXgpOyB5eWxpbmVubyA9IDE7CiAgICAgfQogICAgIHl5bGxvYy0+ZmlsZSA9
IHl5ZmlsZW5vOwogICAgIHl5bGxvYy0+bGluZSA9IHl5bGluZW5vOwpAQCAtMjI5Nyw5ICsyMjk1
LDggQEAgVG9rZW5pemVyOjp+VG9rZW5pemVyKCkKICAgICBkZXN0cm95U2Nhbm5lcigpOwogfQog
Ci1ib29sIFRva2VuaXplcjo6aW5pdChpbnQgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmlu
Z1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pCitib29sIFRva2VuaXplcjo6aW5pdChzaXplX3QgY291
bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pCiB7Ci0g
ICAgaWYgKGNvdW50IDwgMCkgcmV0dXJuIGZhbHNlOwogICAgIGlmICgoY291bnQgPiAwKSAmJiAo
c3RyaW5nID09IDApKSByZXR1cm4gZmFsc2U7CiAKICAgICBtQ29udGV4dC5pbnB1dCA9IElucHV0
KGNvdW50LCBzdHJpbmcsIGxlbmd0aCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmgJ
KHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcg
QEAgY2xhc3MgVG9rZW5pemVyIDogcHVibGljIExleGVyCiAgICAgVG9rZW5pemVyKERpYWdub3N0
aWNzKiBkaWFnbm9zdGljcyk7CiAgICAgflRva2VuaXplcigpOwogCi0gICAgYm9vbCBpbml0KGlu
dCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSk7
CisgICAgYm9vbCBpbml0KHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10s
IGNvbnN0IGludCBsZW5ndGhbXSk7CiAKICAgICB2b2lkIHNldEZpbGVOdW1iZXIoaW50IGZpbGUp
OwogICAgIHZvaWQgc2V0TGluZU51bWJlcihpbnQgbGluZSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
VG9rZW5pemVyLmwJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmwJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDkgKzI4LDYgQEAgSUYgWU9VIE1PRElGWSBUSElTIEZJTEUgWU9VIEFMU08gTkVFRCBUTwog
I2luY2x1ZGUgIkRpYWdub3N0aWNzQmFzZS5oIgogI2luY2x1ZGUgIlRva2VuLmgiCiAKLSNpZiBk
ZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3No
b3J0ZW4tNjQtdG8tMzIiCi0jZW5kaWYKICNpZiBkZWZpbmVkKF9fR05VQ19fKQogLy8gVHJpZ2dl
cmVkIGJ5IHRoZSBhdXRvLWdlbmVyYXRlZCB5eV9mYXRhbF9lcnJvciBmdW5jdGlvbi4KICNwcmFn
bWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgpAQCAtMjQyLDEz
ICsyMzksMTQgQEAgRlJBQ1RJT05BTF9DT05TVEFOVCAgKHtESUdJVH0qIi4ie0RJR0lUfQogICAg
IC8vIFNldCB0aGUgbG9jYXRpb24gZm9yIEVPRiB0b2tlbiBtYW51YWxseS4KICAgICBwcDo6SW5w
dXQqIGlucHV0ID0gJnl5ZXh0cmEtPmlucHV0OwogICAgIHBwOjpJbnB1dDo6TG9jYXRpb24qIHNj
YW5Mb2MgPSAmeXlleHRyYS0+c2NhbkxvYzsKLSAgICBpbnQgc0luZGV4TWF4ID0gc3RkOjptYXgo
MCwgaW5wdXQtPmNvdW50KCkgLSAxKTsKKyAgICB5eV9zaXplX3Qgc0luZGV4TWF4ID0gaW5wdXQt
PmNvdW50KCkgPyBpbnB1dC0+Y291bnQoKSAtIDEgOiAwOwogICAgIGlmIChzY2FuTG9jLT5zSW5k
ZXggIT0gc0luZGV4TWF4KQogICAgIHsKICAgICAgICAgLy8gV2UgY2FuIG9ubHkgcmVhY2ggaGVy
ZSBpZiB0aGVyZSBhcmUgZW1wdHkgc3RyaW5ncyBhdCB0aGUKICAgICAgICAgLy8gZW5kIG9mIHRo
ZSBpbnB1dC4KICAgICAgICAgc2NhbkxvYy0+c0luZGV4ID0gc0luZGV4TWF4OyBzY2FuTG9jLT5j
SW5kZXggPSAwOwotICAgICAgICB5eWZpbGVubyA9IHNJbmRleE1heDsgeXlsaW5lbm8gPSAxOwor
ICAgICAgICAvLyBGSVhNRTogdGhpcyBpcyBub3QgNjQtYml0IGNsZWFuLgorICAgICAgICB5eWZp
bGVubyA9IHN0YXRpY19jYXN0PGludD4oc0luZGV4TWF4KTsgeXlsaW5lbm8gPSAxOwogICAgIH0K
ICAgICB5eWxsb2MtPmZpbGUgPSB5eWZpbGVubzsKICAgICB5eWxsb2MtPmxpbmUgPSB5eWxpbmVu
bzsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxl
ci9BcnJheUJvdW5kc0NsYW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2Nv
bXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAidGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmgiCisKKy8vIFRo
ZSBidWlsdC1pbiAnY2xhbXAnIGluc3RydWN0aW9uIG9ubHkgYWNjZXB0cyBmbG9hdHMgYW5kIHJl
dHVybnMgYSBmbG9hdC4gIEkKKy8vIGl0ZXJhdGVkIGEgZmV3IHRpbWVzIHdpdGggb3VyIGRyaXZl
ciB0ZWFtIHdobyBleGFtaW5lZCB0aGUgb3V0cHV0IGZyb20gb3VyCisvLyBjb21waWxlciAtIHRo
ZXkgc2FpZCB0aGUgbXVsdGlwbGUgY2FzdHMgZ2VuZXJhdGVzIG1vcmUgY29kZSB0aGFuIGEgc2lu
Z2xlCisvLyBmdW5jdGlvbiBjYWxsLiAgQW4gaW5saW5lIHRlcm5hcnkgb3BlcmF0b3IgbWlnaHQg
aGF2ZSBiZWVuIGJldHRlciwgYnV0IHNpbmNlCisvLyB0aGUgaW5kZXggdmFsdWUgbWlnaHQgYmUg
YW4gZXhwcmVzc2lvbiBpdHNlbGYsIHdlJ2QgaGF2ZSB0byBtYWtlIHRlbXBvcmFyeQorLy8gdmFy
aWFibGVzIHRvIGF2b2lkIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24gbXVsdGlwbGUgdGltZXMu
ICBBbmQgbWFraW5nCisvLyB0ZW1wb3JhcnkgdmFyaWFibGVzIHdhcyBkaWZmaWN1bHQgYmVjYXVz
ZSBBTkdMRSB3b3VsZCB0aGVuIG5lZWQgdG8gbWFrZSBtb3JlCisvLyBicnV0YWwgY2hhbmdlcyB0
byB0aGUgZXhwcmVzc2lvbiB0cmVlLgorCitjb25zdCBjaGFyKiBrSW50Q2xhbXBCZWdpbiA9ICIv
LyBCRUdJTjogR2VuZXJhdGVkIGNvZGUgZm9yIGFycmF5IGJvdW5kcyBjbGFtcGluZ1xuXG4iOwor
Y29uc3QgY2hhcioga0ludENsYW1wRW5kID0gIi8vIEVORDogR2VuZXJhdGVkIGNvZGUgZm9yIGFy
cmF5IGJvdW5kcyBjbGFtcGluZ1xuXG4iOworY29uc3QgY2hhcioga0ludENsYW1wRGVmaW5pdGlv
biA9ICJpbnQgd2ViZ2xfaW50X2NsYW1wKGludCB2YWx1ZSwgaW50IG1pblZhbHVlLCBpbnQgbWF4
VmFsdWUpIHsgcmV0dXJuICgodmFsdWUgPCBtaW5WYWx1ZSkgPyBtaW5WYWx1ZSA6ICgodmFsdWUg
PiBtYXhWYWx1ZSkgPyBtYXhWYWx1ZSA6IHZhbHVlKSk7IH1cblxuIjsKKworbmFtZXNwYWNlIHsK
KworY2xhc3MgQXJyYXlCb3VuZHNDbGFtcGVyTWFya2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJz
ZXIgeworcHVibGljOgorICAgIEFycmF5Qm91bmRzQ2xhbXBlck1hcmtlcigpCisgICAgICAgIDog
bU5lZWRzQ2xhbXAoZmFsc2UpCisgICB7CisgICB9CisKKyAgIHZpcnR1YWwgYm9vbCB2aXNpdEJp
bmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSogbm9kZSkKKyAgIHsKKyAgICAgICBpZiAo
bm9kZS0+Z2V0T3AoKSA9PSBFT3BJbmRleEluZGlyZWN0KQorICAgICAgIHsKKyAgICAgICAgICAg
VEludGVybVR5cGVkKiBsZWZ0ID0gbm9kZS0+Z2V0TGVmdCgpOworICAgICAgICAgICBpZiAobGVm
dC0+aXNBcnJheSgpIHx8IGxlZnQtPmlzVmVjdG9yKCkgfHwgbGVmdC0+aXNNYXRyaXgoKSkKKyAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgbm9kZS0+c2V0QWRkSW5kZXhDbGFtcCgpOworICAg
ICAgICAgICAgICAgbU5lZWRzQ2xhbXAgPSB0cnVlOworICAgICAgICAgICB9CisgICAgICAgfQor
ICAgICAgIHJldHVybiB0cnVlOworICAgfQorCisgICAgYm9vbCBHZXROZWVkc0NsYW1wKCkgeyBy
ZXR1cm4gbU5lZWRzQ2xhbXA7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1OZWVkc0NsYW1wOwor
fTsKKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitBcnJheUJvdW5kc0NsYW1wZXI6OkFy
cmF5Qm91bmRzQ2xhbXBlcigpCisgICAgOiBtQ2xhbXBpbmdTdHJhdGVneShTSF9DTEFNUF9XSVRI
X0NMQU1QX0lOVFJJTlNJQykKKyAgICAsIG1BcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlvbk5lZWRl
ZChmYWxzZSkKK3sKK30KKwordm9pZCBBcnJheUJvdW5kc0NsYW1wZXI6OlNldENsYW1waW5nU3Ry
YXRlZ3koU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBjbGFtcGluZ1N0cmF0ZWd5KQorewor
ICAgIG1DbGFtcGluZ1N0cmF0ZWd5ID0gY2xhbXBpbmdTdHJhdGVneTsKK30KKwordm9pZCBBcnJh
eUJvdW5kc0NsYW1wZXI6Ok1hcmtJbmRpcmVjdEFycmF5Qm91bmRzRm9yQ2xhbXBpbmcoVEludGVy
bU5vZGUqIHJvb3QpCit7CisgICAgQVNTRVJUKHJvb3QpOworCisgICAgQXJyYXlCb3VuZHNDbGFt
cGVyTWFya2VyIGNsYW1wZXI7CisgICAgcm9vdC0+dHJhdmVyc2UoJmNsYW1wZXIpOworICAgIGlm
IChjbGFtcGVyLkdldE5lZWRzQ2xhbXAoKSkKKyAgICB7CisgICAgICAgIFNldEFycmF5Qm91bmRz
Q2xhbXBEZWZpbml0aW9uTmVlZGVkKCk7CisgICAgfQorfQorCit2b2lkIEFycmF5Qm91bmRzQ2xh
bXBlcjo6T3V0cHV0Q2xhbXBpbmdGdW5jdGlvbkRlZmluaXRpb24oVEluZm9TaW5rQmFzZSYgb3V0
KSBjb25zdAoreworICAgIGlmICghbUFycmF5Qm91bmRzQ2xhbXBEZWZpbml0aW9uTmVlZGVkKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobUNsYW1waW5nU3RyYXRlZ3kg
IT0gU0hfQ0xBTVBfV0lUSF9VU0VSX0RFRklORURfSU5UX0NMQU1QX0ZVTkNUSU9OKQorICAgIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBvdXQgPDwga0ludENsYW1wQmVnaW4gPDwga0lu
dENsYW1wRGVmaW5pdGlvbiA8PCBrSW50Q2xhbXBFbmQ7Cit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlC
b3VuZHNDbGFtcGVyLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYK
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGlsZXIv
QXJyYXlCb3VuZHNDbGFtcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2NvbXBpbGVy
L0FycmF5Qm91bmRzQ2xhbXBlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRISVJE
X1BBUlRZX0NPTVBJTEVSX0FSUkFZX0JPVU5EU19DTEFNUEVSX0hfCisjZGVmaW5lIFRISVJEX1BB
UlRZX0NPTVBJTEVSX0FSUkFZX0JPVU5EU19DTEFNUEVSX0hfCisKKyNpbmNsdWRlICJHTFNMQU5H
L1NoYWRlckxhbmcuaCIKKworI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCisKK2NsYXNzIEFycmF5Qm91bmRzQ2xhbXBlciB7
CitwdWJsaWM6CisgICAgQXJyYXlCb3VuZHNDbGFtcGVyKCk7CisKKyAgICAvLyBNdXN0IGJlIHNl
dCBiZWZvcmUgY29tcGlsaW5nIGFueSBzaGFkZXJzIHRvIGVuc3VyZSBjb25zaXN0ZW5jeQorICAg
IC8vIGJldHdlZW4gdGhlIHRyYW5zbGF0ZWQgc2hhZGVycyBhbmQgYW55IG5lY2Vzc2FyeSBwcmVx
dWVsLgorICAgIHZvaWQgU2V0Q2xhbXBpbmdTdHJhdGVneShTaEFycmF5SW5kZXhDbGFtcGluZ1N0
cmF0ZWd5IGNsYW1waW5nU3RyYXRlZ3kpOworCisgICAgLy8gTWFya3Mgbm9kZXMgaW4gdGhlIHRy
ZWUgdGhhdCBpbmRleCBhcnJheXMgaW5kaXJlY3RseSBhcworICAgIC8vIHJlcXVpcmluZyBjbGFt
cGluZy4KKyAgICB2b2lkIE1hcmtJbmRpcmVjdEFycmF5Qm91bmRzRm9yQ2xhbXBpbmcoVEludGVy
bU5vZGUqIHJvb3QpOworCisgICAgLy8gSWYgbmVjZXNzYXJ5LCBvdXRwdXQgYXJyYXkgY2xhbXAg
ZnVuY3Rpb24gc291cmNlIGludG8gdGhlIHNoYWRlciBzb3VyY2UuCisgICAgdm9pZCBPdXRwdXRD
bGFtcGluZ0Z1bmN0aW9uRGVmaW5pdGlvbihUSW5mb1NpbmtCYXNlJiBvdXQpIGNvbnN0OworCisg
ICAgdm9pZCBDbGVhbnVwKCkKKyAgICB7CisgICAgICAgIG1BcnJheUJvdW5kc0NsYW1wRGVmaW5p
dGlvbk5lZWRlZCA9IGZhbHNlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIEdldEFycmF5
Qm91bmRzQ2xhbXBEZWZpbml0aW9uTmVlZGVkKCkgY29uc3QgeyByZXR1cm4gbUFycmF5Qm91bmRz
Q2xhbXBEZWZpbml0aW9uTmVlZGVkOyB9CisgICAgdm9pZCBTZXRBcnJheUJvdW5kc0NsYW1wRGVm
aW5pdGlvbk5lZWRlZCgpIHsgbUFycmF5Qm91bmRzQ2xhbXBEZWZpbml0aW9uTmVlZGVkID0gdHJ1
ZTsgfQorCisgICAgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBtQ2xhbXBpbmdTdHJhdGVn
eTsKKyAgICBib29sIG1BcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlvbk5lZWRlZDsKK307CisKKyNl
bmRpZiAvLyBUSElSRF9QQVJUWV9DT01QSUxFUl9BUlJBWV9CT1VORFNfQ0xBTVBFUl9IXwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5
L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9w
YXJ0eS9jb21waWxlci9MSUNFTlNFCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9MSUNFTlNFCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2NvbXBpbGVyL0xJQ0VOU0UJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK0NvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0Ogor
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKzIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCitFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCitQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUsIElOQy4gT1IKK0NPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCitQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCitPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9S
RUFETUUuYW5nbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Ro
aXJkX3BhcnR5L2NvbXBpbGVyL1JFQURNRS5hbmdsZQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9SRUFETUUuYW5nbGUJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK05hbWU6IEFOR0xFIGFycmF5IGJvdW5kcyBjbGFt
cGVyIGZyb20gV2ViS2l0CitTaG9ydCBOYW1lOiBXZWJLaXQKK1VSTDogaHR0cDovL3dlYmtpdC5v
cmcKK1ZlcnNpb246IDAKK0xpY2Vuc2U6IEJTRAorU2VjdXJpdHkgQ3JpdGljYWw6IHllcworCitE
ZXNjcmlwdGlvbjoKK0ltcGxlbWVudHMgY2xhbXBpbmcgb2YgYXJyYXkgaW5kZXhpbmcgZXhwcmVz
c2lvbnMgZHVyaW5nIHNoYWRlciB0cmFuc2xhdGlvbi4KKworTG9jYWwgTW9kaWZpY2F0aW9uczoK
K05vbmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189643</attachid>
            <date>2013-02-21 17:13:16 -0800</date>
            <delta_ts>2013-02-21 19:42:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110513-20130221170936.patch</filename>
            <type>text/plain</type>
            <size>118599</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzY2OCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzOSBAQAorMjAxMy0wMi0yMSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFJvbGwgQU5HTEUgdG8gcjE4MzMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDUxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwc3RyZWFtIEFOR0xFIHIxODMzIGluY2x1ZGVzIHdlYmtpdCBzaWRl
IGxvY2FsIGZpeGVzCisgICAgICAgIDEpIHIxMzk3NTggYnVpbGQgZml4IGZvciAtV3Nob3J0ZW4t
NjQtdG8tMzIKKyAgICAgICAgMikgcjEzOTY2NSBidWlsZCBmaXggZm9yIHVuaW5pdGlhbGl6ZWQg
dmFyaWFibGVzCisKKyAgICAgICAgQWZ0ZXIgdGhpcyByb2xsLCBXZWJLaXQgc2lkZSBBTkdMRSBp
cyB0aGUgc2FtZSBhcyB1cHN0cmVhbSBBTkdMRSByMTgzMywgZXhjZXB0OgorICAgICAgICAxKSBp
bmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oLCB3aGVyZSAiS0hSIiBpcyByZW1vdmVkIGZyb20g
aW5jbHVkZSBwYXRoLgorCisgICAgICAgIFdpdGggdGhpcyByb2xsLCB3ZSBoYXZlIEVYVF9kcmF3
X2J1ZmZlcnMgc3VwcG9ydC4KKyAgICAgICAgCisgICAgICAgICogQU5HTEUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGluY2x1ZGUv
R0xTTEFORy9TaGFkZXJMYW5nLmg6CisgICAgICAgICogc3JjL2NvbW1vbi9kZWJ1Zy5jcHA6Cisg
ICAgICAgICogc3JjL2NvbW1vbi9zeXN0ZW0uaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbW1v
bi92ZXJzaW9uLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9jb21waWxlci9Db21waWxlci5jcHA6CisgICAgICAg
IChUQ29tcGlsZXI6OlRDb21waWxlcik6CisgICAgICAgIChUQ29tcGlsZXI6OkluaXQpOgorICAg
ICAgICAoVENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKFRDb21waWxlcjo6Z2V0QXJyYXlC
b3VuZHNDbGFtcGVyKToKKyAgICAgICAgKFRDb21waWxlcjo6Z2V0QXJyYXlJbmRleENsYW1waW5n
U3RyYXRlZ3kpOgorICAgICAgICAoVENvbXBpbGVyOjpnZXRCdWlsdEluRnVuY3Rpb25FbXVsYXRv
cik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwOgorICAg
ICAgICAoc2g6OkRldGVjdExvb3BEaXNjb250aW51aXR5Ojp0cmF2ZXJzZSk6CisgICAgICAgIChz
aDo6RGV0ZWN0TG9vcERpc2NvbnRpbnVpdHk6OnZpc2l0TG9vcCk6CisgICAgICAgIChzaCk6Cisg
ICAgICAgIChzaDo6RGV0ZWN0TG9vcERpc2NvbnRpbnVpdHk6OnZpc2l0QnJhbmNoKToKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oOgorICAgICAgICAoRGV0ZWN0
TG9vcERpc2NvbnRpbnVpdHkpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplLmNw
cDoKKyAgICAgICAgKEluaXRFeHRlbnNpb25CZWhhdmlvcik6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL0ludGVybWVkaWF0ZS5jcHA6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9s
ZCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpoYXNoKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwOgorICAgICAgICAoTG9uZ05hbWVNYXA6OlNp
emUpOgorICAgICAgICAoTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6Om1hcEdsb2JhbExvbmdOYW1lKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaDoKKyAgICAgICAg
KExvbmdOYW1lTWFwKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0RVNTTC5jcHA6Cisg
ICAgICAgIChUT3V0cHV0RVNTTDo6VE91dHB1dEVTU0wpOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9PdXRwdXRFU1NMLmg6CisgICAgICAgIChUT3V0cHV0RVNTTCk6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0wuY3BwOgorICAgICAgICAoVE91dHB1dEdMU0w6OlRPdXRwdXRHTFNM
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oOgorICAgICAgICAoVE91dHB1
dEdMU0wpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHA6CisgICAg
ICAgIChUT3V0cHV0R0xTTEJhc2U6OlRPdXRwdXRHTFNMQmFzZSk6CisgICAgICAgIChUT3V0cHV0
R0xTTEJhc2U6OndyaXRlQ29uc3RhbnRVbmlvbik6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6
OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaDoK
KyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1
dEhMU0wuY3BwOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Om91dHB1dCk6CisgICAgICAgIChz
aDo6T3V0cHV0SExTTDo6dmlzaXRMb29wKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp3cml0
ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHA6
CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlY2spOgorICAgICAg
ICAoUGFQYXJzZVN0cmluZ3MpOgorICAgICAgICAqIHNyYy9jb21waWxlci9QYXJzZUhlbHBlci5o
OgorICAgICAgICAqIHNyYy9jb21waWxlci9TaEhhbmRsZS5oOgorICAgICAgICAoVENvbXBpbGVy
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHA6CisgICAgICAgIChjaGVj
a0FjdGl2ZVVuaWZvcm1BbmRBdHRyaWJNYXhMZW5ndGhzKToKKyAgICAgICAgKGNoZWNrTWFwcGVk
TmFtZU1heExlbmd0aCk6CisgICAgICAgIChnZXRWYXJpYWJsZUluZm8pOgorICAgICAgICAoU2hJ
bml0QnVpbHRJblJlc291cmNlcyk6CisgICAgICAgIChTaENvbXBpbGUpOgorICAgICAgICAoU2hH
ZXRJbmZvKToKKyAgICAgICAgKFNoR2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFNoR2V0QWN0
aXZlVW5pZm9ybSk6CisgICAgICAgIChTaEdldE5hbWVIYXNoaW5nRW50cnkpOgorICAgICAgICAq
IHNyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oOgorICAgICAgICAoVEZ1bmN0aW9uOjpnZXRQYXJh
bUNvdW50KToKKyAgICAgICAgKFRGdW5jdGlvbjo6Z2V0UGFyYW0pOgorICAgICAgICAoVFN5bWJv
bFRhYmxlOjpzZXREZWZhdWx0UHJlY2lzaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVHJh
bnNsYXRvckVTU0wuY3BwOgorICAgICAgICAoVHJhbnNsYXRvckVTU0w6OnRyYW5zbGF0ZSk6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JHTFNMLmNwcDoKKyAgICAgICAgKFRyYW5z
bGF0b3JHTFNMOjp0cmFuc2xhdGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9WYWxpZGF0ZUxp
bWl0YXRpb25zLmNwcDoKKyAgICAgICAgKFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlRnVu
Y3Rpb25DYWxsKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVmFyaWFibGVQYWNrZXIuY3BwOgor
ICAgICAgICAoVmFyaWFibGVQYWNrZXI6OkdldE51bVJvd3MpOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9nbHNsYW5nLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmcubDoKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy55OgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNs
YW5nX2xleC5jcHA6CisgICAgICAgIChzdHJpbmdfaW5wdXQpOgorICAgICAgICAoZ2xzbGFuZ19z
Y2FuKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwOgorICAgICAgICAq
IHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHA6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLnk6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5jcHA6CisgICAgICAgIChwcDo6SW5w
dXQ6OklucHV0KToKKyAgICAgICAgKHBwOjpJbnB1dDo6cmVhZCk6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5oOgorICAgICAgICAoSW5wdXQpOgorICAgICAgICAo
cHA6OklucHV0Ojpjb3VudCk6CisgICAgICAgIChwcDo6SW5wdXQ6OnN0cmluZyk6CisgICAgICAg
IChwcDo6SW5wdXQ6Omxlbmd0aCk6CisgICAgICAgIChMb2NhdGlvbik6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3BwOgorICAgICAgICAocHA6OlBy
ZXByb2Nlc3Nvcjo6aW5pdCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Q
cmVwcm9jZXNzb3IuaDoKKyAgICAgICAgKFByZXByb2Nlc3Nvcik6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwOgorICAgICAgICAocHA6OlRva2VuaXpl
cjo6aW5pdCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIu
aDoKKyAgICAgICAgKFRva2VuaXplcik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9Ub2tlbml6ZXIubDoKKyAgICAgICAgKiBzcmMvdGhpcmRfcGFydHk6IEFkZGVkLgorICAg
ICAgICAqIHNyYy90aGlyZF9wYXJ0eS9jb21waWxlcjogQWRkZWQuCisgICAgICAgICogc3JjL3Ro
aXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoQXJyYXlCb3VuZHNDbGFtcGVyOjpBcnJheUJvdW5kc0NsYW1wZXIpOgorICAgICAgICAoQXJy
YXlCb3VuZHNDbGFtcGVyOjpTZXRDbGFtcGluZ1N0cmF0ZWd5KToKKyAgICAgICAgKEFycmF5Qm91
bmRzQ2xhbXBlcjo6TWFya0luZGlyZWN0QXJyYXlCb3VuZHNGb3JDbGFtcGluZyk6CisgICAgICAg
IChBcnJheUJvdW5kc0NsYW1wZXI6Ok91dHB1dENsYW1waW5nRnVuY3Rpb25EZWZpbml0aW9uKToK
KyAgICAgICAgKiBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmg6
IEFkZGVkLgorICAgICAgICAoQXJyYXlCb3VuZHNDbGFtcGVyKToKKyAgICAgICAgKEFycmF5Qm91
bmRzQ2xhbXBlcjo6Q2xlYW51cCk6CisgICAgICAgIChBcnJheUJvdW5kc0NsYW1wZXI6OkdldEFy
cmF5Qm91bmRzQ2xhbXBEZWZpbml0aW9uTmVlZGVkKToKKyAgICAgICAgKEFycmF5Qm91bmRzQ2xh
bXBlcjo6U2V0QXJyYXlCb3VuZHNDbGFtcERlZmluaXRpb25OZWVkZWQpOgorICAgICAgICAqIHNy
Yy90aGlyZF9wYXJ0eS9jb21waWxlci9MSUNFTlNFOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvdGhp
cmRfcGFydHkvY29tcGlsZXIvUkVBRE1FLmFuZ2xlOiBBZGRlZC4KKwogMjAxMy0wMi0wNCAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNvcnQgQU5HTEUgWGNv
ZGUgcHJvamVjdCBmaWxlLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnBy
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9UYXJnZXQucHJpCShyZXZp
c2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9UYXJnZXQucHJpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNyw3ICsxNyw2IEBAIElOQ0xVREVQQVRIICs9IFwKICAgICAkJFNPVVJD
RV9ESVIvaW5jbHVkZQogCiBIRUFERVJTICs9IFwKLSAgICBzcmMvY29tcGlsZXIvQXJyYXlCb3Vu
ZHNDbGFtcGVyLmggXAogICAgIHNyYy9jb21waWxlci9CYXNlVHlwZXMuaCBcCiAgICAgc3JjL2Nv
bXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggXAogICAgIHNyYy9jb21waWxlci9Db21t
b24uaCBcCkBAIC04MSwxMCArODAsMTAgQEAgSEVBREVSUyArPSBcCiAgICAgc3JjL2NvbXBpbGVy
L1ZhbGlkYXRlTGltaXRhdGlvbnMuaCBcCiAgICAgc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5o
IFwKICAgICBzcmMvY29tcGlsZXIvVmFyaWFibGVQYWNrZXIuaCBcCi0gICAgc3JjL2NvbXBpbGVy
L1ZlcnNpb25HTFNMLmgKKyAgICBzcmMvY29tcGlsZXIvVmVyc2lvbkdMU0wuaCBcCisgICAgc3Jj
L3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oCiAKIFNPVVJDRVMgKz0g
XAotICAgIHNyYy9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuY3BwIFwKICAgICBzcmMvY29t
cGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvQ29k
ZUdlbkdMU0wuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwIFwKQEAgLTEzOCw2
ICsxMzcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01h
Y3JvRXhwYW5kZXIuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nl
c3Nvci5jcHAgXAogICAgIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uY3BwIFwKKyAg
ICBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmNwcAogCiB3aW4z
MjogU09VUkNFUyArPSBzcmMvY29tcGlsZXIvb3Nzb3VyY2Vfd2luLmNwcAogZWxzZTogU09VUkNF
UyArPSBzcmMvY29tcGlsZXIvb3Nzb3VyY2VfcG9zaXguY3BwCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw2IEBACiAvKiBC
ZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCQkzMTJCREIwQzE1RkVDQUM5MDA5N0VCQzcg
LyogQU5HTEUucGxpc3QgaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMkJEQjA5MTVGRUM5MUUwMDk3RUJDNyAvKiBBTkdMRS5wbGlzdCAqLzsgfTsKIAkJ
MzEyQkRCMEUxNUZFQ0FFNTAwOTdFQkM3IC8qIEFOR0xFLnR4dCBpbiBDb3B5RmlsZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyQkRCMEExNUZFQ0EzQTAwOTdFQkM3IC8q
IEFOR0xFLnR4dCAqLzsgfTsKLQkJMzE1OEVBMEUxNjMwOTY4RDAwNkJFNUVFIC8qIEFycmF5Qm91
bmRzQ2xhbXBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTU4RUEwQzE2MzA5NjhEMDA2QkU1RUUgLyogQXJyYXlCb3VuZHNDbGFtcGVyLmNwcCAq
LzsgfTsKLQkJMzE1OEVBMEYxNjMwOTY4RDAwNkJFNUVFIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE1OEVBMEQx
NjMwOTY4RDAwNkJFNUVFIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oICovOyB9OwogCQk0OTk1MUMw
MzE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDIxNEI3QUFCMzAwNjBFOTZFIC8qIGxl
bmd0aF9saW1pdHMuaCAqLzsgfTsKIAkJNDk5NTFDMDkxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25F
bXVsYXRvci5jcHAgKi87IH07CiAJCTQ5OTUxQzBBMTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdElu
RnVuY3Rpb25FbXVsYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yLmggKi87IH07CkBAIC0zMiw2ICszMCw4IEBACiAJCTkwRDlCMTE4MTJFMTFERDYwMDJENDI1
NSAvKiBWYXJpYWJsZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkwRDlCMTEwMTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJsZUluZm8uaCAqLzsg
fTsKIAkJOTBEOUIxMTkxMkUxMURENjAwMkQ0MjU1IC8qIFZlcnNpb25HTFNMLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMTExMTJFMTFERDYw
MDJENDI1NSAvKiBWZXJzaW9uR0xTTC5jcHAgKi87IH07CiAJCTkwRDlCMTFBMTJFMTFERDYwMDJE
NDI1NSAvKiBWZXJzaW9uR0xTTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTBEOUIxMTIxMkUxMURENjAwMkQ0MjU1IC8qIFZlcnNpb25HTFNMLmggKi87
IH07CisJCUEwOEMzQ0RDMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJvdW5kc0NsYW1wZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTA4QzNDREEx
NkQ2Q0I2MTAwM0YwQjgzIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgKi87IH07CisJCUEwOEMz
Q0REMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJvdW5kc0NsYW1wZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwOEMzQ0RCMTZENkNCNjEwMDNGMEI4
MyAvKiBBcnJheUJvdW5kc0NsYW1wZXIuaCAqLzsgfTsKIAkJQTBBQUJFMkMxM0FGRTgxMDAwRjJF
QkQxIC8qIEZvckxvb3BVbnJvbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTBBQUJFMkExM0FGRTgxMDAwRjJFQkQxIC8qIEZvckxvb3BVbnJvbGwu
Y3BwICovOyB9OwogCQlBMEFBQkUyRDEzQUZFODEwMDBGMkVCRDEgLyogRm9yTG9vcFVucm9sbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTBBQUJFMkIx
M0FGRTgxMDAwRjJFQkQxIC8qIEZvckxvb3BVbnJvbGwuaCAqLzsgfTsKIAkJQTBBQUJFMzAxM0FG
RTgzMDAwRjJFQkQxIC8qIE1hcExvbmdWYXJpYWJsZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEwQUFCRTJFMTNBRkU4MzAwMEYyRUJEMSAv
KiBNYXBMb25nVmFyaWFibGVOYW1lcy5jcHAgKi87IH07CkBAIC0xMzYsOCArMTM2LDYgQEAKIC8q
IEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkzMTJCREIwOTE1RkVDOTFFMDA5
N0VCQzcgLyogQU5HTEUucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9IEFO
R0xFLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTJCREIwQTE1RkVDQTNB
MDA5N0VCQzcgLyogQU5HTEUudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFOR0xFLnR4dDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE1OEVBMEMxNjMwOTY4RDAwNkJFNUVFIC8q
IEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBcnJheUJvdW5kc0NsYW1wZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTU4RUEwRDE2MzA5NjhEMDA2QkU1RUUgLyogQXJyYXlCb3VuZHNDbGFtcGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5Qm91bmRzQ2xhbXBlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NDNBM0UxNTEyRUNGNkNDMDAwNEY5RDcgLyogaU9TLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IGlPUy54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5NTFDMDIxNEI3QUFCMzAwNjBFOTZFIC8qIGxl
bmd0aF9saW1pdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbGVuZ3RoX2xp
bWl0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTk1MUMwNTE0QjdBQUQ3MDA2
MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTYzLDYgKzE2MSw4IEBACiAJCTkwRDlCMTEwMTJFMTFERDYw
MDJENDI1NSAvKiBWYXJpYWJsZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmFyaWFibGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkwRDlCMTEx
MTJFMTFERDYwMDJENDI1NSAvKiBWZXJzaW9uR0xTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWZXJzaW9uR0xTTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkwRDlCMTEyMTJFMTFERDYwMDJENDI1NSAvKiBWZXJzaW9uR0xTTC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZXJzaW9uR0xTTC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBMDhDM0NEQTE2RDZDQjYxMDAzRjBCODMgLyogQXJyYXlCb3VuZHNDbGFt
cGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFycmF5Qm91bmRz
Q2xhbXBlci5jcHA7IHBhdGggPSBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHND
bGFtcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTA4QzNDREIxNkQ2Q0I2
MTAwM0YwQjgzIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBBcnJheUJvdW5kc0NsYW1wZXIuaDsgcGF0aCA9IHNyYy90aGlyZF9wYXJ0eS9j
b21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTBBQUJFMkExM0FGRTgxMDAwRjJFQkQxIC8qIEZvckxvb3BVbnJvbGwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9yTG9vcFVucm9sbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEwQUFCRTJCMTNBRkU4MTAwMEYyRUJEMSAvKiBGb3JMb29w
VW5yb2xsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvckxvb3BVbnJvbGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTBBQUJFMkUxM0FGRTgzMDAwRjJFQkQx
IC8qIE1hcExvbmdWYXJpYWJsZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hcExvbmdWYXJpYWJsZU5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI5Niw2ICsyOTYsMjMgQEAKIAkJCXBhdGggPSBDb25maWd1cmF0aW9uczsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUEwOEMzQ0Q4MTZENkNCMzUwMDNGMEI4
MyAvKiB0aGlyZF9wYXJ0eSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQTA4QzNDRDkxNkQ2Q0I0MzAwM0YwQjgzIC8qIGNvbXBpbGVyICovLAorCQkJKTsK
KwkJCW5hbWUgPSB0aGlyZF9wYXJ0eTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CisJCUEwOEMzQ0Q5MTZENkNCNDMwMDNGMEI4MyAvKiBjb21waWxlciAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTA4QzNDREExNkQ2Q0I2MTAwM0YwQjgz
IC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgKi8sCisJCQkJQTA4QzNDREIxNkQ2Q0I2MTAwM0Yw
QjgzIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb21waWxl
cjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUEyNjRGOENCMTY5NzYyQUEw
MDZGQUE1QSAvKiBLSFIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMzUzLDYgKzM3MCw3IEBACiAJCUZCMzlEMDg0MTIwMEVERUIwMDA4OEU2OSAvKiBzcmMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUEwOEMzQ0Q4
MTZENkNCMzUwMDNGMEI4MyAvKiB0aGlyZF9wYXJ0eSAqLywKIAkJCQlGQjM5RDIyMDEyMDBGMzVB
MDAwODhFNjkgLyogY29tcGlsZXIgKi8sCiAJCQkpOwogCQkJbmFtZSA9IHNyYzsKQEAgLTM3Miw4
ICszOTAsNiBAQAogCQkJCUEyNjU2ODJDMTU5QzIzRTEwMDM5ODUzOSAvKiBkZXBncmFwaCAqLywK
IAkJCQlGQjM5RDI0NDEyMDBGMzVBMDAwODhFNjkgLyogcHJlcHJvY2Vzc29yICovLAogCQkJCUEy
NjU2ODM0MTU5QzIzRTEwMDM5ODUzOSAvKiB0aW1pbmcgKi8sCi0JCQkJMzE1OEVBMEMxNjMwOTY4
RDAwNkJFNUVFIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgKi8sCi0JCQkJMzE1OEVBMEQxNjMw
OTY4RDAwNkJFNUVFIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oICovLAogCQkJCUZCMzlEMjIxMTIw
MEYzNUEwMDA4OEU2OSAvKiBCYXNlVHlwZXMuaCAqLywKIAkJCQk0OTk1MUMwNTE0QjdBQUQ3MDA2
MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovLAogCQkJCTQ5OTUxQzA2MTRC
N0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovLApAQCAtNTA5LDcg
KzUyNSw2IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQkzMTU4RUEwRjE2MzA5NjhEMDA2
QkU1RUUgLyogQXJyYXlCb3VuZHNDbGFtcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTk1MUMw
QTE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUEyNjU2ODNBMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGguaCBp
biBIZWFkZXJzICovLAogCQkJCUEyNjU2ODNDMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5
R3JhcGhCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTU1Myw2ICs1NjgsNyBAQAogCQkJCTkw
RDlCMTE4MTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJsZUluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCUEyNjRGOENBMTY5NzRFMkEwMDZGQUE1QSAvKiBWYXJpYWJsZVBhY2tlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTBEOUIxMUExMkUxMURENjAwMkQ0MjU1IC8qIFZlcnNpb25HTFNMLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBMDhDM0NERDE2RDZDQjYxMDAzRjBCODMgLyogQXJyYXlCb3VuZHND
bGFtcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTYxMCw3ICs2MjYsNiBAQAogCQkJaXNhID0gUEJY
U291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJ
ZmlsZXMgPSAoCi0JCQkJMzE1OEVBMEUxNjMwOTY4RDAwNkJFNUVFIC8qIEFycmF5Qm91bmRzQ2xh
bXBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTk1MUMwOTE0QjdBQUQ4MDA2MEU5NkUgLyog
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyNzEx
MjAwRjM1QTAwMDg4RTY5IC8qIENvZGVHZW5HTFNMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkw
RDlCMTAyMTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTY2NSw2ICs2ODAsNyBAQAogCQkJCTkwRDlCMTE3MTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJs
ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NEY4QzkxNjk3NEUyQTAwNkZBQTVBIC8q
IFZhcmlhYmxlUGFja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwRDlCMTE5MTJFMTFERDYw
MDJENDI1NSAvKiBWZXJzaW9uR0xTTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMDhDM0NEQzE2
RDZDQjYxMDAzRjBCODMgLyogQXJyYXlCb3VuZHNDbGFtcGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcv
U2hhZGVyTGFuZy5oCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsy
NCw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgImtocnBsYXRmb3JtLmgiCisjaW5jbHVkZSA8c3Rk
ZGVmLmg+CiAKIC8vCiAvLyBUaGlzIGlzIHRoZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBpbnRlcmZh
Y2UgYmV0d2VlbiBhbiBPR0wgZHJpdmVyCkBAIC0zNiw3ICszNyw3IEBAIGV4dGVybiAiQyIgewog
CiAvLyBWZXJzaW9uIG51bWJlciBmb3Igc2hhZGVyIHRyYW5zbGF0aW9uIEFQSS4KIC8vIEl0IGlz
IGluY3JlbWVudGVkIGV2ZXJ5dGltZSB0aGUgQVBJIGNoYW5nZXMuCi0jZGVmaW5lIFNIX1ZFUlNJ
T04gMTA3CisjZGVmaW5lIEFOR0xFX1NIX1ZFUlNJT04gMTA4CiAKIC8vCiAvLyBUaGUgbmFtZXMg
b2YgdGhlIGZvbGxvd2luZyBlbnVtcyBoYXZlIGJlZW4gZGVyaXZlZCBieSByZXBsYWNpbmcgR0wg
cHJlZml4CkBAIC0xNTUsMTAgKzE1NiwyMSBAQCB0eXBlZGVmIGVudW0gewogICAvLyBUaGlzIGZs
YWcgZW5zdXJlcyBhbGwgaW5kaXJlY3QgKGV4cHJlc3Npb24tYmFzZWQpIGFycmF5IGluZGV4aW5n
CiAgIC8vIGlzIGNsYW1wZWQgdG8gdGhlIGJvdW5kcyBvZiB0aGUgYXJyYXkuIFRoaXMgZW5zdXJl
cywgZm9yIGV4YW1wbGUsCiAgIC8vIHRoYXQgeW91IGNhbm5vdCByZWFkIG9mZiB0aGUgZW5kIG9m
IGEgdW5pZm9ybSwgd2hldGhlciBhbiBhcnJheQotICAvLyB2ZWMyMzQsIG9yIG1hdDIzNCB0eXBl
LgorICAvLyB2ZWMyMzQsIG9yIG1hdDIzNCB0eXBlLiBUaGUgU2hBcnJheUluZGV4Q2xhbXBpbmdT
dHJhdGVneSBlbnVtLAorICAvLyBzcGVjaWZpZWQgaW4gdGhlIFNoQnVpbHRJblJlc291cmNlcyB3
aGVuIGNvbnN0cnVjdGluZyB0aGUKKyAgLy8gY29tcGlsZXIsIHNlbGVjdHMgdGhlIHN0cmF0ZWd5
IGZvciB0aGUgY2xhbXBpbmcgaW1wbGVtZW50YXRpb24uCiAgIFNIX0NMQU1QX0lORElSRUNUX0FS
UkFZX0JPVU5EUyA9IDB4MTAwMAogfSBTaENvbXBpbGVPcHRpb25zOwogCisvLyBEZWZpbmVzIGFs
dGVybmF0ZSBzdHJhdGVnaWVzIGZvciBpbXBsZW1lbnRpbmcgYXJyYXkgaW5kZXggY2xhbXBpbmcu
Cit0eXBlZGVmIGVudW0geworICAvLyBVc2UgdGhlIGNsYW1wIGludHJpbnNpYyBmb3IgYXJyYXkg
aW5kZXggY2xhbXBpbmcuCisgIFNIX0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklOU0lDID0gMSwKKwor
ICAvLyBVc2UgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gZm9yIGFycmF5IGluZGV4IGNsYW1waW5n
LgorICBTSF9DTEFNUF9XSVRIX1VTRVJfREVGSU5FRF9JTlRfQ0xBTVBfRlVOQ1RJT04KK30gU2hB
cnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneTsKKwogLy8KIC8vIERyaXZlciBtdXN0IGNhbGwgdGhp
cyBmaXJzdCwgb25jZSwgYmVmb3JlIGRvaW5nIGFueSBvdGhlcgogLy8gY29tcGlsZXIgb3BlcmF0
aW9ucy4KQEAgLTE3Myw3ICsxODUsNyBAQCBDT01QSUxFUl9FWFBPUlQgaW50IFNoRmluYWxpemUo
KTsKIAogLy8gVGhlIDY0IGJpdHMgaGFzaCBmdW5jdGlvbi4gVGhlIGZpcnN0IHBhcmFtZXRlciBp
cyB0aGUgaW5wdXQgc3RyaW5nOyB0aGUKIC8vIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIHN0cmlu
ZyBsZW5ndGguCi10eXBlZGVmIGtocm9ub3NfdWludDY0X3QgKCpTaEhhc2hGdW5jdGlvbjY0KShj
b25zdCBjaGFyKiwgdW5zaWduZWQgaW50KTsKK3R5cGVkZWYga2hyb25vc191aW50NjRfdCAoKlNo
SGFzaEZ1bmN0aW9uNjQpKGNvbnN0IGNoYXIqLCBzaXplX3QpOwogCiAvLwogLy8gSW1wbGVtZW50
YXRpb24gZGVwZW5kZW50IGJ1aWx0LWluIHJlc291cmNlcyAoY29uc3RhbnRzIGFuZCBleHRlbnNp
b25zKS4KQEAgLTE5NiwxMSArMjA4LDE2IEBAIHR5cGVkZWYgc3RydWN0CiAgICAgaW50IE9FU19z
dGFuZGFyZF9kZXJpdmF0aXZlczsKICAgICBpbnQgT0VTX0VHTF9pbWFnZV9leHRlcm5hbDsKICAg
ICBpbnQgQVJCX3RleHR1cmVfcmVjdGFuZ2xlOworICAgIGludCBFWFRfZHJhd19idWZmZXJzOwog
CiAgICAgLy8gTmFtZSBIYXNoaW5nLgogICAgIC8vIFNldCBhIDY0IGJpdCBoYXNoIGZ1bmN0aW9u
IHRvIGVuYWJsZSB1c2VyLWRlZmluZWQgbmFtZSBoYXNoaW5nLgogICAgIC8vIERlZmF1bHQgaXMg
TlVMTC4KICAgICBTaEhhc2hGdW5jdGlvbjY0IEhhc2hGdW5jdGlvbjsKKworICAgIC8vIFNlbGVj
dHMgYSBzdHJhdGVneSB0byB1c2Ugd2hlbiBpbXBsZW1lbnRpbmcgYXJyYXkgaW5kZXggY2xhbXBp
bmcuCisgICAgLy8gRGVmYXVsdCBpcyBTSF9DTEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQy4KKyAg
ICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5
OwogfSBTaEJ1aWx0SW5SZXNvdXJjZXM7CiAKIC8vCkBAIC0yNjQsNyArMjgxLDcgQEAgQ09NUElM
RVJfRVhQT1JUIHZvaWQgU2hEZXN0cnVjdChTaEhhbmRsZQogQ09NUElMRVJfRVhQT1JUIGludCBT
aENvbXBpbGUoCiAgICAgY29uc3QgU2hIYW5kbGUgaGFuZGxlLAogICAgIGNvbnN0IGNoYXIqIGNv
bnN0IHNoYWRlclN0cmluZ3NbXSwKLSAgICBjb25zdCBpbnQgbnVtU3RyaW5ncywKKyAgICBzaXpl
X3QgbnVtU3RyaW5ncywKICAgICBpbnQgY29tcGlsZU9wdGlvbnMKICAgICApOwogCkBAIC0yOTIs
MTEgKzMwOSwxMSBAQCBDT01QSUxFUl9FWFBPUlQgaW50IFNoQ29tcGlsZSgKIC8vIFNIX0hBU0hF
RF9OQU1FX01BWF9MRU5HVEg6IHRoZSBtYXggbGVuZ3RoIG9mIGEgaGFzaGVkIG5hbWUgaW5jbHVk
aW5nIHRoZQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCB0ZXJtaW5hdGlvbiBj
aGFyYWN0ZXIuCiAvLyBTSF9IQVNIRURfTkFNRVNfQ09VTlQ6IHRoZSBudW1iZXIgb2YgaGFzaGVk
IG5hbWVzIGZyb20gdGhlIGxhdGVzdCBjb21waWxlLgotLy8gCisvLwogLy8gcGFyYW1zOiBSZXF1
ZXN0ZWQgcGFyYW1ldGVyCiBDT01QSUxFUl9FWFBPUlQgdm9pZCBTaEdldEluZm8oY29uc3QgU2hI
YW5kbGUgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVySW5m
byBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHBhcmFtcyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBwYXJhbXMpOwogCiAvLyBSZXR1
cm5zIG51bC10ZXJtaW5hdGVkIGluZm9ybWF0aW9uIGxvZyBmb3IgYSBjb21waWxlZCBzaGFkZXIu
CiAvLyBQYXJhbWV0ZXJzOgpAQCAtMzM5LDcgKzM1Niw3IEBAIENPTVBJTEVSX0VYUE9SVCB2b2lk
IFNoR2V0T2JqZWN0Q29kZShjb24KIC8vICAgICAgICAgICAgIG1hcHBlZE5hbWUgYXJlIHRoZSBz
YW1lLgogQ09NUElMRVJfRVhQT1JUIHZvaWQgU2hHZXRBY3RpdmVBdHRyaWIoY29uc3QgU2hIYW5k
bGUgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlu
ZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqIGxlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoRGF0YVR5cGUqIHR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1lLApAQCAtMzY2LDcg
KzM4Myw3IEBAIENPTVBJTEVSX0VYUE9SVCB2b2lkIFNoR2V0QWN0aXZlQXR0cmliKGMKIC8vICAg
ICAgICAgICAgIG1hcHBlZE5hbWUgYXJlIHRoZSBzYW1lLgogQ09NUElMRVJfRVhQT1JUIHZvaWQg
U2hHZXRBY3RpdmVVbmlmb3JtKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50KiBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50KiBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoRGF0YVR5cGUqIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciogbmFtZSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vZGVidWcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vZGVidWcuY3BwCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAs
OCArMTAsOSBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRhcmcuaD4KKwor
I2luY2x1ZGUgImNvbW1vbi9zeXN0ZW0uaCIKICNpbmNsdWRlIDxkM2Q5Lmg+Ci0jaW5jbHVkZSA8
d2luZG93cy5oPgogCiBuYW1lc3BhY2UgZ2wKIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vc3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIHN5c3RlbS5oOiBJbmNsdWRlcyBXaW5kb3dzIHN5
c3RlbSBoZWFkZXJzIGFuZCB1bmRlZmluZXMgbWFjcm9zIHRoYXQgY29uZmxpY3QuCisKKyNpZm5k
ZWYgQ09NTU9OX1NZU1RFTV9ICisjZGVmaW5lIENPTU1PTl9TWVNURU1fSAorCisjaWYgIWRlZmlu
ZWQoV0lOMzJfTEVBTl9BTkRfTUVBTikKKyNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorI2Vu
ZGlmCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8ZDNkOS5oPgorI2luY2x1ZGUg
PEQzRGNvbXBpbGVyLmg+CisjaW5jbHVkZSA8ZDNkOXR5cGVzLmg+CisjaW5jbHVkZSA8bW1zeXN0
ZW0uaD4KKworI2lmIGRlZmluZWQobWluKQorI3VuZGVmIG1pbgorI2VuZGlmCisKKyNpZiBkZWZp
bmVkKG1heCkKKyN1bmRlZiBtYXgKKyNlbmRpZgorCisjZW5kaWYgICAvLyBDT01NT05fU1lTVEVN
X0gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vc3lzdGVtLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgJKHJldmlz
aW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVyc2lv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogI2RlZmluZSBNQUpPUl9WRVJTSU9O
IDEKICNkZWZpbmUgTUlOT1JfVkVSU0lPTiAwCiAjZGVmaW5lIEJVSUxEX1ZFUlNJT04gMAotI2Rl
ZmluZSBCVUlMRF9SRVZJU0lPTiAxNjQxCisjZGVmaW5lIEJVSUxEX1JFVklTSU9OIDE4MzMKIAog
I2RlZmluZSBTVFJJTkdJRlkoeCkgI3gKICNkZWZpbmUgTUFDUk9fU1RSSU5HSUZZKHgpIFNUUklO
R0lGWSh4KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0FycmF5
Qm91bmRzQ2xhbXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHAJKHJldmlzaW9uIDE0MzY1NCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb21waWxlci9BcnJheUJvdW5k
c0NsYW1wZXIuaCIKLQotY29uc3QgY2hhcioga0ludENsYW1wQmVnaW4gPSAiLy8gQkVHSU46IEdl
bmVyYXRlZCBjb2RlIGZvciBhcnJheSBib3VuZHMgY2xhbXBpbmdcblxuIjsKLWNvbnN0IGNoYXIq
IGtJbnRDbGFtcEVuZCA9ICIvLyBFTkQ6IEdlbmVyYXRlZCBjb2RlIGZvciBhcnJheSBib3VuZHMg
Y2xhbXBpbmdcblxuIjsKLWNvbnN0IGNoYXIqIGtJbnRDbGFtcERlZmluaXRpb24gPSAiaW50IHdl
YmdsX2ludF9jbGFtcChpbnQgdmFsdWUsIGludCBtaW5WYWx1ZSwgaW50IG1heFZhbHVlKSB7IHJl
dHVybiAoKHZhbHVlIDwgbWluVmFsdWUpID8gbWluVmFsdWUgOiAoKHZhbHVlID4gbWF4VmFsdWUp
ID8gbWF4VmFsdWUgOiB2YWx1ZSkpOyB9XG5cbiI7Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIEFy
cmF5Qm91bmRzQ2xhbXBlck1hcmtlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyIHsKLXB1Ymxp
YzoKLSAgICBBcnJheUJvdW5kc0NsYW1wZXJNYXJrZXIoKQotICAgICAgICA6IG1OZWVkc0NsYW1w
KGZhbHNlKQotICAgewotICAgfQotCi0gICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQg
dmlzaXQsIFRJbnRlcm1CaW5hcnkqIG5vZGUpCi0gICB7Ci0gICAgICAgaWYgKG5vZGUtPmdldE9w
KCkgPT0gRU9wSW5kZXhJbmRpcmVjdCkKLSAgICAgICB7Ci0gICAgICAgICAgIFRJbnRlcm1UeXBl
ZCogbGVmdCA9IG5vZGUtPmdldExlZnQoKTsKLSAgICAgICAgICAgaWYgKGxlZnQtPmlzQXJyYXko
KSB8fCBsZWZ0LT5pc1ZlY3RvcigpIHx8IGxlZnQtPmlzTWF0cml4KCkpCi0gICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgIG5vZGUtPnNldEFkZEluZGV4Q2xhbXAoKTsKLSAgICAgICAgICAgICAg
IG1OZWVkc0NsYW1wID0gdHJ1ZTsKLSAgICAgICAgICAgfQotICAgICAgIH0KLSAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgIH0KLQotICAgIGJvb2wgR2V0TmVlZHNDbGFtcCgpIHsgcmV0dXJuIG1OZWVk
c0NsYW1wOyB9Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBtTmVlZHNDbGFtcDsKLX07Ci0KLX0gIC8v
IGFub255bW91cyBuYW1lc3BhY2UKLQotQXJyYXlCb3VuZHNDbGFtcGVyOjpBcnJheUJvdW5kc0Ns
YW1wZXIoKQotICAgIDogbUFycmF5Qm91bmRzQ2xhbXBEZWZpbml0aW9uTmVlZGVkKGZhbHNlKQot
ewotfQotCi12b2lkIEFycmF5Qm91bmRzQ2xhbXBlcjo6T3V0cHV0Q2xhbXBpbmdGdW5jdGlvbkRl
ZmluaXRpb24oVEluZm9TaW5rQmFzZSYgb3V0KSBjb25zdAotewotICAgIGlmICghbUFycmF5Qm91
bmRzQ2xhbXBEZWZpbml0aW9uTmVlZGVkKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBvdXQgPDwga0ludENsYW1wQmVnaW4gPDwga0ludENsYW1wRGVmaW5pdGlvbiA8PCBrSW50
Q2xhbXBFbmQ7Ci19Ci0KLXZvaWQgQXJyYXlCb3VuZHNDbGFtcGVyOjpNYXJrSW5kaXJlY3RBcnJh
eUJvdW5kc0ZvckNsYW1waW5nKFRJbnRlcm1Ob2RlKiByb290KQotewotICAgIEFTU0VSVChyb290
KTsKLQotICAgIEFycmF5Qm91bmRzQ2xhbXBlck1hcmtlciBjbGFtcGVyOwotICAgIHJvb3QtPnRy
YXZlcnNlKCZjbGFtcGVyKTsKLSAgICBpZiAoY2xhbXBlci5HZXROZWVkc0NsYW1wKCkpCi0gICAg
ewotICAgICAgICBTZXRBcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlvbk5lZWRlZCgpOwotICAgIH0K
LX0KLQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0FycmF5Qm91
bmRzQ2xhbXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ09NUElMRVJfQVJSQVlfQk9VTkRTX0NMQU1QRVJf
SF8KLSNkZWZpbmUgQ09NUElMRVJfQVJSQVlfQk9VTkRTX0NMQU1QRVJfSF8KLQotI2luY2x1ZGUg
IkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotCi0jaW5jbHVkZSAiY29tcGlsZXIvSW5mb1NpbmsuaCIK
LSNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKLQotY2xhc3MgQXJyYXlCb3VuZHND
bGFtcGVyIHsKLXB1YmxpYzoKLSAgICBBcnJheUJvdW5kc0NsYW1wZXIoKTsKLQotICAgIC8vIE91
dHB1dCBhcnJheSBjbGFtcCBmdW5jdGlvbiBzb3VyY2UgaW50byB0aGUgc2hhZGVyIHNvdXJjZS4K
LSAgICB2b2lkIE91dHB1dENsYW1waW5nRnVuY3Rpb25EZWZpbml0aW9uKFRJbmZvU2lua0Jhc2Um
IG91dCkgY29uc3Q7Ci0KLSAgICAvLyBNYXJrcyBub2RlcyBpbiB0aGUgdHJlZSB0aGF0IGluZGV4
IGFycmF5cyBpbmRpcmVjdGx5IGFzCi0gICAgLy8gcmVxdWlyaW5nIGNsYW1waW5nLgotICAgIHZv
aWQgTWFya0luZGlyZWN0QXJyYXlCb3VuZHNGb3JDbGFtcGluZyhUSW50ZXJtTm9kZSogcm9vdCk7
Ci0KLSAgICB2b2lkIENsZWFudXAoKQotICAgIHsKLSAgICAgICAgbUFycmF5Qm91bmRzQ2xhbXBE
ZWZpbml0aW9uTmVlZGVkID0gZmFsc2U7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGJvb2wgR2V0
QXJyYXlCb3VuZHNDbGFtcERlZmluaXRpb25OZWVkZWQoKSBjb25zdCB7IHJldHVybiBtQXJyYXlC
b3VuZHNDbGFtcERlZmluaXRpb25OZWVkZWQ7IH0KLSAgICB2b2lkIFNldEFycmF5Qm91bmRzQ2xh
bXBEZWZpbml0aW9uTmVlZGVkKCkgeyBtQXJyYXlCb3VuZHNDbGFtcERlZmluaXRpb25OZWVkZWQg
PSB0cnVlOyB9Ci0gICAgCi0gICAgYm9vbCBtQXJyYXlCb3VuZHNDbGFtcERlZmluaXRpb25OZWVk
ZWQ7Ci19OwotCi0jZW5kaWYgLy8gQ09NUElMRVJfQVJSQVlfQk9VTkRTX0NMQU1QRVJfSF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVy
LmNwcAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0NvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDYgQEAKIC8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0jaW5jbHVkZSAiY29tcGlsZXIvQXJyYXlC
b3VuZHNDbGFtcGVyLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IuaCIKICNpbmNsdWRlICJjb21waWxlci9EZXRlY3RSZWN1cnNpb24uaCIKICNpbmNsdWRlICJj
b21waWxlci9Gb3JMb29wVW5yb2xsLmgiCkBAIC0yMCw2ICsxOSw3IEBACiAjaW5jbHVkZSAiY29t
cGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaCIKICNpbmNsdWRlICJjb21w
aWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCIKKyNpbmNsdWRlICJ0aGly
ZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaCIKIAogYm9vbCBpc1dlYkdMQmFz
ZWRTcGVjKFNoU2hhZGVyU3BlYyBzcGVjKQogewpAQCAtMTAyLDYgKzEwMiw3IEBAIFRTaEhhbmRs
ZUJhc2U6On5UU2hIYW5kbGVCYXNlKCkgewogVENvbXBpbGVyOjpUQ29tcGlsZXIoU2hTaGFkZXJU
eXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjKQogICAgIDogc2hhZGVyVHlwZSh0eXBlKSwKICAg
ICAgIHNoYWRlclNwZWMoc3BlYyksCisgICAgICBjbGFtcGluZ1N0cmF0ZWd5KFNIX0NMQU1QX1dJ
VEhfQ0xBTVBfSU5UUklOU0lDKSwKICAgICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKHR5cGUp
CiB7CiAgICAgbG9uZ05hbWVNYXAgPSBMb25nTmFtZU1hcDo6R2V0SW5zdGFuY2UoKTsKQEAgLTEy
NSwxMyArMTI2LDE2IEBAIGJvb2wgVENvbXBpbGVyOjpJbml0KGNvbnN0IFNoQnVpbHRJblJlc28K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEluaXRFeHRlbnNpb25CZWhhdmlvcihyZXNvdXJj
ZXMsIGV4dGVuc2lvbkJlaGF2aW9yKTsKIAorICAgIGFycmF5Qm91bmRzQ2xhbXBlci5TZXRDbGFt
cGluZ1N0cmF0ZWd5KHJlc291cmNlcy5BcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSk7CisgICAg
Y2xhbXBpbmdTdHJhdGVneSA9IHJlc291cmNlcy5BcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneTsK
KwogICAgIGhhc2hGdW5jdGlvbiA9IHJlc291cmNlcy5IYXNoRnVuY3Rpb247CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogYm9vbCBUQ29tcGlsZXI6OmNvbXBpbGUoY29uc3QgY2hhciogY29uc3Qg
c2hhZGVyU3RyaW5nc1tdLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IG51bVN0
cmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtU3RyaW5ncywKICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBjb21waWxlT3B0aW9ucykKIHsKICAgICBUU2NvcGVkUG9v
bEFsbG9jYXRvciBzY29wZWRBbGxvYygmYWxsb2NhdG9yLCB0cnVlKTsKQEAgLTE0Niw3ICsxNTAs
NyBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAKICAgICAvLyBG
aXJzdCBzdHJpbmcgaXMgcGF0aCBvZiBzb3VyY2UgZmlsZSBpZiBmbGFnIGlzIHNldC4gVGhlIGFj
dHVhbCBzb3VyY2UgZm9sbG93cy4KICAgICBjb25zdCBjaGFyKiBzb3VyY2VQYXRoID0gTlVMTDsK
LSAgICBpbnQgZmlyc3RTb3VyY2UgPSAwOworICAgIHNpemVfdCBmaXJzdFNvdXJjZSA9IDA7CiAg
ICAgaWYgKGNvbXBpbGVPcHRpb25zICYgU0hfU09VUkNFX1BBVEgpCiAgICAgewogICAgICAgICBz
b3VyY2VQYXRoID0gc2hhZGVyU3RyaW5nc1swXTsKQEAgLTM1NSwxMyArMzU5LDE3IEBAIGNvbnN0
IFRFeHRlbnNpb25CZWhhdmlvciYgVENvbXBpbGVyOjpnZXQKICAgICByZXR1cm4gZXh0ZW5zaW9u
QmVoYXZpb3I7CiB9CiAKLWNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yJiBUQ29tcGlsZXI6
OmdldEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCkgY29uc3QKK2NvbnN0IEFycmF5Qm91bmRzQ2xh
bXBlciYgVENvbXBpbGVyOjpnZXRBcnJheUJvdW5kc0NsYW1wZXIoKSBjb25zdAogewotICAgIHJl
dHVybiBidWlsdEluRnVuY3Rpb25FbXVsYXRvcjsKKyAgICByZXR1cm4gYXJyYXlCb3VuZHNDbGFt
cGVyOwogfQogCi1jb25zdCBBcnJheUJvdW5kc0NsYW1wZXImIFRDb21waWxlcjo6Z2V0QXJyYXlC
b3VuZHNDbGFtcGVyKCkgY29uc3QKK1NoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgVENvbXBp
bGVyOjpnZXRBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGFycmF5Qm91bmRzQ2xhbXBlcjsKKyAgICByZXR1cm4gY2xhbXBpbmdTdHJhdGVneTsKIH0KIAor
Y29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3ImIFRDb21waWxlcjo6Z2V0QnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IoKSBjb25zdAoreworICAgIHJldHVybiBidWlsdEluRnVuY3Rpb25FbXVsYXRv
cjsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RE
aXNjb250aW51aXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5jcHAJKHJldmlzaW9uIDE0MzY1NCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYsMTEgKzE2LDI2IEBAIG5hbWVzcGFjZSBzaAogewog
Ym9vbCBEZXRlY3RMb29wRGlzY29udGludWl0eTo6dHJhdmVyc2UoVEludGVybU5vZGUgKm5vZGUp
CiB7CisgICAgbUxvb3BEZXB0aCA9IDA7CiAgICAgbUxvb3BEaXNjb250aW51aXR5ID0gZmFsc2U7
CiAgICAgbm9kZS0+dHJhdmVyc2UodGhpcyk7CiAgICAgcmV0dXJuIG1Mb29wRGlzY29udGludWl0
eTsKIH0KIAorYm9vbCBEZXRlY3RMb29wRGlzY29udGludWl0eTo6dmlzaXRMb29wKFZpc2l0IHZp
c2l0LCBUSW50ZXJtTG9vcCAqbG9vcCkKK3sKKyAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCisg
ICAgeworICAgICAgICArK21Mb29wRGVwdGg7CisgICAgfQorICAgIGVsc2UgaWYgKHZpc2l0ID09
IFBvc3RWaXNpdCkKKyAgICB7CisgICAgICAgIC0tbUxvb3BEZXB0aDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBEZXRlY3RMb29wRGlzY29udGludWl0eTo6dmlzaXRCcmFu
Y2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2ggKm5vZGUpCiB7CiAgICAgaWYgKG1Mb29wRGlz
Y29udGludWl0eSkKQEAgLTI4LDE0ICs0MywxOSBAQCBib29sIERldGVjdExvb3BEaXNjb250aW51
aXR5Ojp2aXNpdEJyYW5jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAo
IW1Mb29wRGVwdGgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBz
d2l0Y2ggKG5vZGUtPmdldEZsb3dPcCgpKQogICAgIHsKICAgICAgIGNhc2UgRU9wS2lsbDoKICAg
ICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEJyZWFrOgogICAgICAgY2FzZSBFT3BDb250aW51
ZToKLSAgICAgICAgbUxvb3BEaXNjb250aW51aXR5ID0gdHJ1ZTsKICAgICAgIGNhc2UgRU9wUmV0
dXJuOgorICAgICAgICBtTG9vcERpc2NvbnRpbnVpdHkgPSB0cnVlOwogICAgICAgICBicmVhazsK
ICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgfQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGlu
dWl0eS5oCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsy
MywxMCBAQCBjbGFzcyBEZXRlY3RMb29wRGlzY29udGludWl0eSA6IHB1YmxpYyBUCiAKICAgcHJv
dGVjdGVkOgogICAgIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gg
Km5vZGUpOworICAgIGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCAqbG9v
cCk7CiAgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0
ZSAqbm9kZSk7CiAKKyAgICBpbnQgbUxvb3BEZXB0aDsKICAgICBib29sIG1Mb29wRGlzY29udGlu
dWl0eTsKIH07CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9J
bml0aWFsaXplLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjU0LDQgKzY1NCw2IEBAIHZvaWQgSW5pdEV4dGVuc2lvbkJlaGF2aW9yKGNvbnN0IFNoQnVp
bHQKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiXSA9IEVC
aFVuZGVmaW5lZDsKICAgICBpZiAocmVzb3VyY2VzLkFSQl90ZXh0dXJlX3JlY3RhbmdsZSkKICAg
ICAgICAgZXh0QmVoYXZpb3JbIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSJdID0gRUJoVW5kZWZp
bmVkOworICAgIGlmIChyZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykKKyAgICAgICAgZXh0QmVo
YXZpb3JbIkdMX0VYVF9kcmF3X2J1ZmZlcnMiXSA9IEVCaFVuZGVmaW5lZDsKIH0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlh
dGUuY3BwCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2Miw3ICsxMTYy
LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAg
ICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAocmlnaHRVbmlvbkFycmF5W2ld
ID09IDAuMGYpIHsKICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhXYXJuaW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRp
bmciLCBnZXRMaW5lKCkpOwotICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5z
ZXRGQ29uc3QoRkxUX01BWCk7CisgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ld
LnNldEZDb25zdCh1bmlvbkFycmF5W2ldLmdldEZDb25zdCgpIDwgMCA/IC1GTFRfTUFYIDogRkxU
X01BWCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHRlbXBD
b25zdEFycmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5W2ldLmdldEZDb25zdCgpIC8gcmlnaHRV
bmlvbkFycmF5W2ldLmdldEZDb25zdCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0
NTEsMTQgKzE0NTEsNyBAQCBUU3RyaW5nIFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2goY29uc3QgVFN0
CiB7CiAgICAgaWYgKGhhc2hGdW5jdGlvbiA9PSBOVUxMIHx8IG5hbWUuZW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG5hbWU7Ci0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2hvcnRl
bi02NC10by0zMiIKLSNlbmRpZgogICAgIGtocm9ub3NfdWludDY0X3QgbnVtYmVyID0gKCpoYXNo
RnVuY3Rpb24pKG5hbWUuY19zdHIoKSwgbmFtZS5sZW5ndGgoKSk7Ci0jaWYgZGVmaW5lZChfX2Ns
YW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKICAgICBUU3RyaW5n
U3RyZWFtIHN0cmVhbTsKICAgICBzdHJlYW0gPDwgSEFTSEVEX05BTUVfUFJFRklYIDw8IHN0ZDo6
aGV4IDw8IG51bWJlcjsKICAgICBUU3RyaW5nIGhhc2hlZE5hbWUgPSBzdHJlYW0uc3RyKCk7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxl
TmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHAJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw3IEBACiAKIG5hbWVzcGFjZSB7CiAKLVRTdHJpbmcg
bWFwTG9uZ05hbWUoaW50IGlkLCBjb25zdCBUU3RyaW5nJiBuYW1lLCBib29sIGlzR2xvYmFsKQor
VFN0cmluZyBtYXBMb25nTmFtZShzaXplX3QgaWQsIGNvbnN0IFRTdHJpbmcmIG5hbWUsIGJvb2wg
aXNHbG9iYWwpCiB7CiAgICAgQVNTRVJUKG5hbWUuc2l6ZSgpID4gTUFYX1NIT1JURU5FRF9JREVO
VElGSUVSX1NJWkUpOwogICAgIFRTdHJpbmdTdHJlYW0gc3RyZWFtOwpAQCAtNzAsMTYgKzcwLDkg
QEAgdm9pZCBMb25nTmFtZU1hcDo6SW5zZXJ0KGNvbnN0IGNoYXIqIG9yaQogICAgICAgICBvcmln
aW5hbE5hbWUsIG1hcHBlZE5hbWUpKTsKIH0KIAotaW50IExvbmdOYW1lTWFwOjpTaXplKCkgY29u
c3QKK3NpemVfdCBMb25nTmFtZU1hcDo6U2l6ZSgpIGNvbnN0CiB7Ci0jaWYgZGVmaW5lZChfX2Ns
YW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1Xc2hvcnRlbi02NC10by0zMiIKLSNlbmRpZgogICAgIHJldHVybiBt
TG9uZ05hbWVNYXAuc2l6ZSgpOwotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCiB9CiAKIE1hcExvbmdWYXJpYWJsZU5hbWVzOjpNYXBM
b25nVmFyaWFibGVOYW1lcyhMb25nTmFtZU1hcCogZ2xvYmFsTWFwKQpAQCAtMTIyLDcgKzExNSw3
IEBAIFRTdHJpbmcgTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6Om1hcEdsb2JhbEwKICAgICBjb25zdCBj
aGFyKiBtYXBwZWROYW1lID0gbUdsb2JhbE1hcC0+RmluZChuYW1lLmNfc3RyKCkpOwogICAgIGlm
IChtYXBwZWROYW1lICE9IE5VTEwpCiAgICAgICAgIHJldHVybiBtYXBwZWROYW1lOwotICAgIGlu
dCBpZCA9IG1HbG9iYWxNYXAtPlNpemUoKTsKKyAgICBzaXplX3QgaWQgPSBtR2xvYmFsTWFwLT5T
aXplKCk7CiAgICAgVFN0cmluZyBydCA9IG1hcExvbmdOYW1lKGlkLCBuYW1lLCB0cnVlKTsKICAg
ICBtR2xvYmFsTWFwLT5JbnNlcnQobmFtZS5jX3N0cigpLCBydC5jX3N0cigpKTsKICAgICByZXR1
cm4gcnQ7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvTWFwTG9u
Z1ZhcmlhYmxlTmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaAkocmV2aXNpb24gMTQzNjU0KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHZvaWQgSW5z
ZXJ0KGNvbnN0IGNoYXIqIG9yaWdpbmFsTmFtZSwgY29uc3QgY2hhciogbWFwcGVkTmFtZSk7CiAK
ICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBtYXAuCi0gICAgaW50
IFNpemUoKSBjb25zdDsKKyAgICBzaXplX3QgU2l6ZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IExvbmdOYW1lTWFwKCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvT3V0cHV0RVNTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL091dHB1dEVTU0wuY3BwCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0RVNTTC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcsMTAgKzcsMTEgQEAKICNpbmNsdWRlICJjb21waWxlci9PdXRwdXRFU1NMLmgiCiAK
IFRPdXRwdXRFU1NMOjpUT3V0cHV0RVNTTChUSW5mb1NpbmtCYXNlJiBvYmpTaW5rLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgY2xhbXBpbmdT
dHJhdGVneSwKICAgICAgICAgICAgICAgICAgICAgICAgICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hG
dW5jdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lTWFwJiBuYW1lTWFwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCi0gICAgOiBU
T3V0cHV0R0xTTEJhc2Uob2JqU2luaywgaGFzaEZ1bmN0aW9uLCBuYW1lTWFwLCBzeW1ib2xUYWJs
ZSkKKyAgICA6IFRPdXRwdXRHTFNMQmFzZShvYmpTaW5rLCBjbGFtcGluZ1N0cmF0ZWd5LCBoYXNo
RnVuY3Rpb24sIG5hbWVNYXAsIHN5bWJvbFRhYmxlKQogewogfQogCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0RVNTTC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRFU1NMLmgJKHJldmlzaW9u
IDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRF
U1NMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzLDYgKzEzLDcgQEAgY2xhc3MgVE91dHB1dEVTU0wg
OiBwdWJsaWMgVE91dHB1dEdMU0xCYQogewogcHVibGljOgogICAgIFRPdXRwdXRFU1NMKFRJbmZv
U2lua0Jhc2UmIG9ialNpbmssCisgICAgICAgICAgICAgICAgU2hBcnJheUluZGV4Q2xhbXBpbmdT
dHJhdGVneSBjbGFtcGluZ1N0cmF0ZWd5LAogICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0aW9u
NjQgaGFzaEZ1bmN0aW9uLAogICAgICAgICAgICAgICAgIE5hbWVNYXAmIG5hbWVNYXAsCiAgICAg
ICAgICAgICAgICAgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSk7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCShyZXZp
c2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0
cHV0R0xTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsMTAgKzcsMTEgQEAKICNpbmNsdWRlICJj
b21waWxlci9PdXRwdXRHTFNMLmgiCiAKIFRPdXRwdXRHTFNMOjpUT3V0cHV0R0xTTChUSW5mb1Np
bmtCYXNlJiBvYmpTaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNoQXJyYXlJbmRleENs
YW1waW5nU3RyYXRlZ3kgY2xhbXBpbmdTdHJhdGVneSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBOYW1lTWFwJiBuYW1lTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJs
ZSYgc3ltYm9sVGFibGUpCi0gICAgOiBUT3V0cHV0R0xTTEJhc2Uob2JqU2luaywgaGFzaEZ1bmN0
aW9uLCBuYW1lTWFwLCBzeW1ib2xUYWJsZSkKKyAgICA6IFRPdXRwdXRHTFNMQmFzZShvYmpTaW5r
LCBjbGFtcGluZ1N0cmF0ZWd5LCBoYXNoRnVuY3Rpb24sIG5hbWVNYXAsIHN5bWJvbFRhYmxlKQog
ewogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0
R0xTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9PdXRwdXRHTFNMLmgJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzLDYgKzEz
LDcgQEAgY2xhc3MgVE91dHB1dEdMU0wgOiBwdWJsaWMgVE91dHB1dEdMU0xCYQogewogcHVibGlj
OgogICAgIFRPdXRwdXRHTFNMKFRJbmZvU2lua0Jhc2UmIG9ialNpbmssCisgICAgICAgICAgICAg
ICAgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBjbGFtcGluZ1N0cmF0ZWd5LAogICAgICAg
ICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uLAogICAgICAgICAgICAgICAg
IE5hbWVNYXAmIG5hbWVNYXAsCiAgICAgICAgICAgICAgICAgVFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0
R0xTTEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcsNiArNyw4IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvT3V0cHV0R0xTTEJhc2Uu
aCIKICNpbmNsdWRlICJjb21waWxlci9kZWJ1Zy5oIgogCisjaW5jbHVkZSA8Y2Zsb2F0PgorCiBu
YW1lc3BhY2UKIHsKIFRTdHJpbmcgYXJyYXlCcmFja2V0cyhjb25zdCBUVHlwZSYgdHlwZSkKQEAg
LTM4LDEyICs0MCwxNCBAQCBib29sIGlzU2luZ2xlU3RhdGVtZW50KFRJbnRlcm1Ob2RlKiBub2Rl
CiB9ICAvLyBuYW1lc3BhY2UKIAogVE91dHB1dEdMU0xCYXNlOjpUT3V0cHV0R0xTTEJhc2UoVElu
Zm9TaW5rQmFzZSYgb2JqU2luaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgY2xhbXBpbmdTdHJhdGVneSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZU1hcCYgbmFtZU1hcCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCiAgICAg
OiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIHRydWUsIHRydWUpLAogICAgICAgbU9ialNpbmsob2Jq
U2luayksCiAgICAgICBtRGVjbGFyaW5nVmFyaWFibGVzKGZhbHNlKSwKKyAgICAgIG1DbGFtcGlu
Z1N0cmF0ZWd5KGNsYW1waW5nU3RyYXRlZ3kpLAogICAgICAgbUhhc2hGdW5jdGlvbihoYXNoRnVu
Y3Rpb24pLAogICAgICAgbU5hbWVNYXAobmFtZU1hcCksCiAgICAgICBtU3ltYm9sVGFibGUoc3lt
Ym9sVGFibGUpCkBAIC0xNTUsNyArMTU5LDcgQEAgY29uc3QgQ29uc3RhbnRVbmlvbiogVE91dHB1
dEdMU0xCYXNlOjp3cgogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKHBDb25zdFVuaW9u
LT5nZXRUeXBlKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9h
dDogb3V0IDw8IHBDb25zdFVuaW9uLT5nZXRGQ29uc3QoKTsgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBFYnRGbG9hdDogb3V0IDw8IHN0ZDo6bWluKEZMVF9NQVgsIHN0ZDo6bWF4KC1GTFRf
TUFYLCBwQ29uc3RVbmlvbi0+Z2V0RkNvbnN0KCkpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAg
Y2FzZSBFYnRJbnQ6IG91dCA8PCBwQ29uc3RVbmlvbi0+Z2V0SUNvbnN0KCk7IGJyZWFrOwogICAg
ICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDogb3V0IDw8IHBDb25zdFVuaW9uLT5nZXRCQ29uc3Qo
KTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKQEAgLTIx
OSw3ICsyMjMsMTEgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmluYXJ5KFZpc2l0IAog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmICh2aXNpdCA9PSBJblZpc2l0KQogICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJbd2ViZ2xfaW50X2Ns
YW1wKCI7CisgICAgICAgICAgICAgICAgICAgIGlmIChtQ2xhbXBpbmdTdHJhdGVneSA9PSBTSF9D
TEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQykgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0
IDw8ICJbaW50KGNsYW1wKGZsb2F0KCI7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIlt3ZWJnbF9pbnRfY2xhbXAoIjsKKyAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNl
IGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpCiAgICAgICAgICAgICAgICAgewpAQCAtMjM2LDcgKzI0
NCwxMiBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5hcnkoVmlzaXQgCiAgICAgICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1heFNpemUgPSBsZWZ0VHlw
ZS5nZXROb21pbmFsU2l6ZSgpIC0gMTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBvdXQgPDwgIiwgMCwgIiA8PCBtYXhTaXplIDw8ICIpXSI7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG1DbGFtcGluZ1N0cmF0ZWd5ID09IFNIX0NMQU1QX1dJVEhfQ0xBTVBf
SU5UUklOU0lDKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiksIDAuMCwgZmxv
YXQoIiA8PCBtYXhTaXplIDw8ICIpKSldIjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCAwLCAiIDw8IG1heFNpemUgPDwgIild
IjsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGVsc2UKQEAgLTI0OSw3ICsyNjIsMTMgQEAgYm9vbCBUT3V0cHV0R0xT
TEJhc2U6OnZpc2l0QmluYXJ5KFZpc2l0IAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IG91dCA8PCAiLiI7CiAgICAgICAgICAgICAgICAgLy8gVE9ETyhhbG9rcCk6IEFTU0VSVAotICAg
ICAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZShub2RlLT5nZXRUeXBlKCkuZ2V0RmllbGROYW1l
KCkpOworICAgICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gbm9kZS0+Z2V0VHlwZSgp
LmdldEZpZWxkTmFtZSgpOworCisgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUmIHN0cnVjdFR5
cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1T
eW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3RUeXBlLmdldFR5cGVOYW1lKCkpKQorICAgICAg
ICAgICAgICAgICAgICBmaWVsZE5hbWUgPSBoYXNoTmFtZShmaWVsZE5hbWUpOworCisgICAgICAg
ICAgICAgICAgb3V0IDw8IGZpZWxkTmFtZTsKICAgICAgICAgICAgICAgICB2aXNpdENoaWxkcmVu
ID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFz
ZS5oCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvT3V0cHV0R0xTTEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTcsNiArMTcsNyBAQCBj
bGFzcyBUT3V0cHV0R0xTTEJhc2UgOiBwdWJsaWMgVEludGVybVRyCiB7CiBwdWJsaWM6CiAgICAg
VE91dHB1dEdMU0xCYXNlKFRJbmZvU2lua0Jhc2UmIG9ialNpbmssCisgICAgICAgICAgICAgICAg
ICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgY2xhbXBpbmdTdHJhdGVneSwKICAgICAg
ICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24sCiAgICAgICAgICAg
ICAgICAgICAgIE5hbWVNYXAmIG5hbWVNYXAsCiAgICAgICAgICAgICAgICAgICAgIFRTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUpOwpAQCAtNjIsOCArNjMsMTEgQEAgcHJpdmF0ZToKIAogICAgIEZv
ckxvb3BVbnJvbGwgbUxvb3BVbnJvbGw7CiAKKyAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0
ZWd5IG1DbGFtcGluZ1N0cmF0ZWd5OworCiAgICAgLy8gbmFtZSBoYXNoaW5nLgogICAgIFNoSGFz
aEZ1bmN0aW9uNjQgbUhhc2hGdW5jdGlvbjsKKwogICAgIE5hbWVNYXAmIG1OYW1lTWFwOwogCiAg
ICAgVFN5bWJvbFRhYmxlJiBtU3ltYm9sVGFibGU7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwCShyZXZpc2lvbiAxNDM2
NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgsMTMgKzgsMTQgQEAKIAogI2luY2x1ZGUgImNvbW1vbi9h
bmdsZXV0aWxzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvZGVidWcuaCIKKyNpbmNsdWRlICJjb21w
aWxlci9EZXRlY3REaXNjb250aW51aXR5LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5mb1Npbmsu
aCIKLSNpbmNsdWRlICJjb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXQuaCIKICNpbmNsdWRlICJj
b21waWxlci9TZWFyY2hTeW1ib2wuaCIKLSNpbmNsdWRlICJjb21waWxlci9EZXRlY3REaXNjb250
aW51aXR5LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmgiCiAKLSNp
bmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjZmxvYXQ+
CisjaW5jbHVkZSA8c3RkaW8uaD4KIAogbmFtZXNwYWNlIHNoCiB7CkBAIC05OCw3ICs5OSw3IEBA
IE91dHB1dEhMU0w6On5PdXRwdXRITFNMKCkKIAogdm9pZCBPdXRwdXRITFNMOjpvdXRwdXQoKQog
ewotICAgIG1Db250YWluc0xvb3BEaXNjb250aW51aXR5ID0gY29udGFpbnNMb29wRGlzY29udGlu
dWl0eShtQ29udGV4dC50cmVlUm9vdCk7CisgICAgbUNvbnRhaW5zTG9vcERpc2NvbnRpbnVpdHkg
PSBtQ29udGV4dC5zaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURFUiAmJiBjb250YWluc0xv
b3BEaXNjb250aW51aXR5KG1Db250ZXh0LnRyZWVSb290KTsKIAogICAgIG1Db250ZXh0LnRyZWVS
b290LT50cmF2ZXJzZSh0aGlzKTsgICAvLyBPdXRwdXQgdGhlIGJvZHkgZmlyc3QgdG8gZGV0ZXJt
aW5lIHdoYXQgaGFzIHRvIGdvIGluIHRoZSBoZWFkZXIKICAgICBoZWFkZXIoKTsKQEAgLTE3Nzgs
NyArMTc3OSw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCAKIHsK
ICAgICBib29sIHdhc0Rpc2NvbnRpbnVvdXMgPSBtSW5zaWRlRGlzY29udGludW91c0xvb3A7CiAK
LSAgICBpZiAoIW1JbnNpZGVEaXNjb250aW51b3VzTG9vcCkKKyAgICBpZiAobUNvbnRhaW5zTG9v
cERpc2NvbnRpbnVpdHkgJiYgIW1JbnNpZGVEaXNjb250aW51b3VzTG9vcCkKICAgICB7CiAgICAg
ICAgIG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCA9IGNvbnRhaW5zTG9vcERpc2NvbnRpbnVpdHko
bm9kZSk7CiAgICAgfQpAQCAtMjU2NSw3ICsyNTY2LDcgQEAgY29uc3QgQ29uc3RhbnRVbmlvbiAq
T3V0cHV0SExTTDo6d3JpdGVDbwogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0
VW5pb24tPmdldFR5cGUoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRG
bG9hdDogb3V0IDw8IGNvbnN0VW5pb24tPmdldEZDb25zdCgpOyBicmVhazsKKyAgICAgICAgICAg
ICAgY2FzZSBFYnRGbG9hdDogb3V0IDw8IHN0ZDo6bWluKEZMVF9NQVgsIHN0ZDo6bWF4KC1GTFRf
TUFYLCBjb25zdFVuaW9uLT5nZXRGQ29uc3QoKSkpOyBicmVhazsKICAgICAgICAgICAgICAgY2Fz
ZSBFYnRJbnQ6ICAgb3V0IDw8IGNvbnN0VW5pb24tPmdldElDb25zdCgpOyBicmVhazsKICAgICAg
ICAgICAgICAgY2FzZSBFYnRCb29sOiAgb3V0IDw8IGNvbnN0VW5pb24tPmdldEJDb25zdCgpOyBi
cmVhazsKICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNw
cAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1BhcnNlSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkzLDcgKzQ5Myw3IEBAIGJv
b2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWMKICAgICBib29sIG92ZXJGdWxs
ID0gZmFsc2U7CiAgICAgYm9vbCBtYXRyaXhJbk1hdHJpeCA9IGZhbHNlOwogICAgIGJvb2wgYXJy
YXlBcmcgPSBmYWxzZTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGZ1bmN0aW9uLmdldFBhcmFt
Q291bnQoKTsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi5nZXRQ
YXJhbUNvdW50KCk7ICsraSkgewogICAgICAgICBjb25zdCBUUGFyYW1ldGVyJiBwYXJhbSA9IGZ1
bmN0aW9uLmdldFBhcmFtKGkpOwogICAgICAgICBzaXplICs9IHBhcmFtLnR5cGUtPmdldE9iamVj
dFNpemUoKTsKICAgICAgICAgCkBAIC01MTIsNyArNTEyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0
Ojpjb25zdHJ1Y3RvckVycm9yQ2hlYwogICAgIGlmIChjb25zdFR5cGUpCiAgICAgICAgIHR5cGUt
PnNldFF1YWxpZmllcihFdnFDb25zdCk7CiAKLSAgICBpZiAodHlwZS0+aXNBcnJheSgpICYmIHR5
cGUtPmdldEFycmF5U2l6ZSgpICE9IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSkgeworICAgIGlm
ICh0eXBlLT5pc0FycmF5KCkgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0eXBlLT5nZXRBcnJheVNp
emUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7CiAgICAgICAgIGVycm9yKGxpbmUs
ICJhcnJheSBjb25zdHJ1Y3RvciBuZWVkcyBvbmUgYXJndW1lbnQgcGVyIGFycmF5IGVsZW1lbnQi
LCAiY29uc3RydWN0b3IiKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTUwNyw3
ICsxNTA3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1Y3ROZXN0aW5nRXJyb3JDaAogLy8K
IC8vIFJldHVybnMgMCBmb3Igc3VjY2Vzcy4KIC8vCi1pbnQgUGFQYXJzZVN0cmluZ3MoaW50IGNv
dW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAoraW50
IFBhUGFyc2VTdHJpbmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10s
IGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBj
b250ZXh0KSB7CiAgICAgaWYgKChjb3VudCA9PSAwKSB8fCAoc3RyaW5nID09IE5VTEwpKQogICAg
ICAgICByZXR1cm4gMTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9QYXJzZUhlbHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9QYXJzZUhlbHBlci5oCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTM0LDcgKzEzNCw3IEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKICAgICBib29sIHN0cnVj
dE5lc3RpbmdFcnJvckNoZWNrKFRTb3VyY2VMb2MgbGluZSwgY29uc3QgVFR5cGUmIGZpZWxkVHlw
ZSk7CiB9OwogCi1pbnQgUGFQYXJzZVN0cmluZ3MoaW50IGNvdW50LCBjb25zdCBjaGFyKiBjb25z
dCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAoraW50IFBhUGFyc2VTdHJpbmdzKHNpemVf
dCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwK
ICAgICAgICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKIAogI2VuZGlmIC8v
IF9QQVJTRVJfSEVMUEVSX0lOQ0xVREVEXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1NoSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmgJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNiwxMyArMTYsMTMgQEAKIAogI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgog
Ci0jaW5jbHVkZSAiY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCIKICNpbmNsdWRlICJjb21waWxlci9FeHRl
bnNpb25CZWhhdmlvci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0hhc2hOYW1lcy5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvU3ltYm9sVGFibGUu
aCIKICNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZUluZm8uaCIKKyNpbmNsdWRlICJ0aGlyZF9w
YXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaCIKIAogY2xhc3MgTG9uZ05hbWVNYXA7
CiBjbGFzcyBUQ29tcGlsZXI7CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
SW5pdChjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcyk7CiAgICAgYm9vbCBjb21w
aWxlKGNvbnN0IGNoYXIqIGNvbnN0IHNoYWRlclN0cmluZ3NbXSwKLSAgICAgICAgICAgICAgICAg
Y29uc3QgaW50IG51bVN0cmluZ3MsCisgICAgICAgICAgICAgICAgIHNpemVfdCBudW1TdHJpbmdz
LAogICAgICAgICAgICAgICAgICBpbnQgY29tcGlsZU9wdGlvbnMpOwogCiAgICAgLy8gR2V0IHJl
c3VsdHMgb2YgdGhlIGxhc3QgY29tcGlsYXRpb24uCkBAIC0xMDgsNiArMTA4LDcgQEAgcHJvdGVj
dGVkOgogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3Io
KSBjb25zdDsKIAogICAgIGNvbnN0IEFycmF5Qm91bmRzQ2xhbXBlciYgZ2V0QXJyYXlCb3VuZHND
bGFtcGVyKCkgY29uc3Q7CisgICAgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBnZXRBcnJh
eUluZGV4Q2xhbXBpbmdTdHJhdGVneSgpIGNvbnN0OwogICAgIGNvbnN0IEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yJiBnZXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcigpIGNvbnN0OwogCiBwcml2YXRl
OgpAQCAtMTIzLDYgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgVEV4dGVuc2lvbkJlaGF2aW9yIGV4
dGVuc2lvbkJlaGF2aW9yOwogCiAgICAgQXJyYXlCb3VuZHNDbGFtcGVyIGFycmF5Qm91bmRzQ2xh
bXBlcjsKKyAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IGNsYW1waW5nU3RyYXRlZ3k7
CiAgICAgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I7CiAK
ICAgICAvLyBSZXN1bHRzIG9mIGNvbXBpbGF0aW9uLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcAkocmV2aXNpb24gMTQz
NjU0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxOCArMjEsMTggQEAKIC8vCiAKIHN0YXRpYyBib29s
IGNoZWNrQWN0aXZlVW5pZm9ybUFuZEF0dHJpYk1heExlbmd0aHMoY29uc3QgU2hIYW5kbGUgaGFu
ZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgZXhwZWN0ZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGV4cGVjdGVkVmFsdWUpCiB7Ci0gICAgaW50IGFjdGl2ZVVuaWZv
cm1MaW1pdCA9IDA7CisgICAgc2l6ZV90IGFjdGl2ZVVuaWZvcm1MaW1pdCA9IDA7CiAgICAgU2hH
ZXRJbmZvKGhhbmRsZSwgU0hfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJmFjdGl2ZVVuaWZv
cm1MaW1pdCk7Ci0gICAgaW50IGFjdGl2ZUF0dHJpYkxpbWl0ID0gMDsKKyAgICBzaXplX3QgYWN0
aXZlQXR0cmliTGltaXQgPSAwOwogICAgIFNoR2V0SW5mbyhoYW5kbGUsIFNIX0FDVElWRV9BVFRS
SUJVVEVfTUFYX0xFTkdUSCwgJmFjdGl2ZUF0dHJpYkxpbWl0KTsKICAgICByZXR1cm4gKGV4cGVj
dGVkVmFsdWUgPT0gYWN0aXZlVW5pZm9ybUxpbWl0ICYmIGV4cGVjdGVkVmFsdWUgPT0gYWN0aXZl
QXR0cmliTGltaXQpOwogfQogCi1zdGF0aWMgYm9vbCBjaGVja01hcHBlZE5hbWVNYXhMZW5ndGgo
Y29uc3QgU2hIYW5kbGUgaGFuZGxlLCBpbnQgZXhwZWN0ZWRWYWx1ZSkKK3N0YXRpYyBib29sIGNo
ZWNrTWFwcGVkTmFtZU1heExlbmd0aChjb25zdCBTaEhhbmRsZSBoYW5kbGUsIHNpemVfdCBleHBl
Y3RlZFZhbHVlKQogewotICAgIGludCBtYXBwZWROYW1lTWF4TGVuZ3RoID0gMDsKKyAgICBzaXpl
X3QgbWFwcGVkTmFtZU1heExlbmd0aCA9IDA7CiAgICAgU2hHZXRJbmZvKGhhbmRsZSwgU0hfTUFQ
UEVEX05BTUVfTUFYX0xFTkdUSCwgJm1hcHBlZE5hbWVNYXhMZW5ndGgpOwogICAgIHJldHVybiAo
ZXhwZWN0ZWRWYWx1ZSA9PSBtYXBwZWROYW1lTWF4TGVuZ3RoKTsKIH0KQEAgLTQwLDcgKzQwLDcg
QEAgc3RhdGljIGJvb2wgY2hlY2tNYXBwZWROYW1lTWF4TGVuZ3RoKGNvbgogc3RhdGljIHZvaWQg
Z2V0VmFyaWFibGVJbmZvKFNoU2hhZGVySW5mbyB2YXJUeXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50KiBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoRGF0YVR5cGUqIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogbmFt
ZSwKQEAgLTYyLDI4ICs2MiwyMSBAQCBzdGF0aWMgdm9pZCBnZXRWYXJpYWJsZUluZm8oU2hTaGFk
ZXJJbmZvCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFRWYXJpYWJsZUluZm8mIHZhcklu
Zm8gPSB2YXJMaXN0W2luZGV4XTsKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdz
aG9ydGVuLTY0LXRvLTMyIgotI2VuZGlmCiAgICAgaWYgKGxlbmd0aCkgKmxlbmd0aCA9IHZhcklu
Zm8ubmFtZS5zaXplKCk7Ci0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcG9wCi0jZW5kaWYKICAgICAqc2l6ZSA9IHZhckluZm8uc2l6ZTsKICAgICAqdHlw
ZSA9IHZhckluZm8udHlwZTsKIAogICAgIC8vIFRoaXMgc2l6ZSBtdXN0IG1hdGNoIHRoYXQgcXVl
cmllZCBieQogICAgIC8vIFNIX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggYW5kIFNIX0FDVElW
RV9BVFRSSUJVVEVfTUFYX0xFTkdUSAogICAgIC8vIGluIFNoR2V0SW5mbywgYmVsb3cuCi0gICAg
aW50IGFjdGl2ZVVuaWZvcm1BbmRBdHRyaWJMZW5ndGggPSAxICsgTUFYX1NZTUJPTF9OQU1FX0xF
TjsKKyAgICBzaXplX3QgYWN0aXZlVW5pZm9ybUFuZEF0dHJpYkxlbmd0aCA9IDEgKyBNQVhfU1lN
Qk9MX05BTUVfTEVOOwogICAgIEFTU0VSVChjaGVja0FjdGl2ZVVuaWZvcm1BbmRBdHRyaWJNYXhM
ZW5ndGhzKGhhbmRsZSwgYWN0aXZlVW5pZm9ybUFuZEF0dHJpYkxlbmd0aCkpOwogICAgIHN0cm5j
cHkobmFtZSwgdmFySW5mby5uYW1lLmNfc3RyKCksIGFjdGl2ZVVuaWZvcm1BbmRBdHRyaWJMZW5n
dGgpOwogICAgIG5hbWVbYWN0aXZlVW5pZm9ybUFuZEF0dHJpYkxlbmd0aCAtIDFdID0gMDsKICAg
ICBpZiAobWFwcGVkTmFtZSkgewogICAgICAgICAvLyBUaGlzIHNpemUgbXVzdCBtYXRjaCB0aGF0
IHF1ZXJpZWQgYnkKICAgICAgICAgLy8gU0hfTUFQUEVEX05BTUVfTUFYX0xFTkdUSCBpbiBTaEdl
dEluZm8sIGJlbG93LgotICAgICAgICBpbnQgbWF4TWFwcGVkTmFtZUxlbmd0aCA9IDEgKyBNQVhf
U1lNQk9MX05BTUVfTEVOOworICAgICAgICBzaXplX3QgbWF4TWFwcGVkTmFtZUxlbmd0aCA9IDEg
KyBNQVhfU1lNQk9MX05BTUVfTEVOOwogICAgICAgICBBU1NFUlQoY2hlY2tNYXBwZWROYW1lTWF4
TGVuZ3RoKGhhbmRsZSwgbWF4TWFwcGVkTmFtZUxlbmd0aCkpOwogICAgICAgICBzdHJuY3B5KG1h
cHBlZE5hbWUsIHZhckluZm8ubWFwcGVkTmFtZS5jX3N0cigpLCBtYXhNYXBwZWROYW1lTGVuZ3Ro
KTsKICAgICAgICAgbWFwcGVkTmFtZVttYXhNYXBwZWROYW1lTGVuZ3RoIC0gMV0gPSAwOwpAQCAt
MTMyLDkgKzEyNSwxMiBAQCB2b2lkIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoU2hCdWlsdEluUmVz
CiAgICAgcmVzb3VyY2VzLT5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSAwOwogICAgIHJlc291
cmNlcy0+T0VTX0VHTF9pbWFnZV9leHRlcm5hbCA9IDA7CiAgICAgcmVzb3VyY2VzLT5BUkJfdGV4
dHVyZV9yZWN0YW5nbGUgPSAwOworICAgIHJlc291cmNlcy0+RVhUX2RyYXdfYnVmZmVycyA9IDA7
CiAKICAgICAvLyBEaXNhYmxlIG5hbWUgaGFzaGluZyBieSBkZWZhdWx0LgogICAgIHJlc291cmNl
cy0+SGFzaEZ1bmN0aW9uID0gTlVMTDsKKworICAgIHJlc291cmNlcy0+QXJyYXlJbmRleENsYW1w
aW5nU3RyYXRlZ3kgPSBTSF9DTEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQzsKIH0KIAogLy8KQEAg
LTE4Miw3ICsxNzgsNyBAQCB2b2lkIFNoRGVzdHJ1Y3QoU2hIYW5kbGUgaGFuZGxlKQogaW50IFNo
Q29tcGlsZSgKICAgICBjb25zdCBTaEhhbmRsZSBoYW5kbGUsCiAgICAgY29uc3QgY2hhciogY29u
c3Qgc2hhZGVyU3RyaW5nc1tdLAotICAgIGNvbnN0IGludCBudW1TdHJpbmdzLAorICAgIHNpemVf
dCBudW1TdHJpbmdzLAogICAgIGludCBjb21waWxlT3B0aW9ucykKIHsKICAgICBpZiAoIUluaXRU
aHJlYWQoKSkKQEAgLTIwMCw3ICsxOTYsNyBAQCBpbnQgU2hDb21waWxlKAogICAgIHJldHVybiBz
dWNjZXNzID8gMSA6IDA7CiB9CiAKLXZvaWQgU2hHZXRJbmZvKGNvbnN0IFNoSGFuZGxlIGhhbmRs
ZSwgU2hTaGFkZXJJbmZvIHBuYW1lLCBpbnQqIHBhcmFtcykKK3ZvaWQgU2hHZXRJbmZvKGNvbnN0
IFNoSGFuZGxlIGhhbmRsZSwgU2hTaGFkZXJJbmZvIHBuYW1lLCBzaXplX3QqIHBhcmFtcykKIHsK
ICAgICBpZiAoIWhhbmRsZSB8fCAhcGFyYW1zKQogICAgICAgICByZXR1cm47CkBAIC0yMTgsMjcg
KzIxNCwxMyBAQCB2b2lkIFNoR2V0SW5mbyhjb25zdCBTaEhhbmRsZSBoYW5kbGUsIFNoCiAgICAg
ICAgICpwYXJhbXMgPSBjb21waWxlci0+Z2V0SW5mb1NpbmsoKS5vYmouc2l6ZSgpICsgMTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTSF9BQ1RJVkVfVU5JRk9STVM6Ci0jaWYgZGVmaW5lZChf
X2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1Xc2hvcnRlbi02NC10by0zMiIKLSNlbmRpZgogICAgICAgICAq
cGFyYW1zID0gY29tcGlsZXItPmdldFVuaWZvcm1zKCkuc2l6ZSgpOwotI2lmIGRlZmluZWQoX19j
bGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU0hfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSDoKICAgICAgICAgKnBh
cmFtcyA9IDEgKyAgTUFYX1NZTUJPTF9OQU1FX0xFTjsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTSF9BQ1RJVkVfQVRUUklCVVRFUzoKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdzaG9ydGVuLTY0LXRvLTMyIgotI2VuZGlmCiAgICAgICAgICpwYXJhbXMgPSBjb21waWxlci0+
Z2V0QXR0cmlicygpLnNpemUoKTsKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKLSNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIFNIX0FD
VElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSDoKICAgICAgICAgKnBhcmFtcyA9IDEgKyBNQVhfU1lN
Qk9MX05BTUVfTEVOOwpAQCAtMjYyLDE0ICsyNDQsNyBAQCB2b2lkIFNoR2V0SW5mbyhjb25zdCBT
aEhhbmRsZSBoYW5kbGUsIFNoCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
SF9IQVNIRURfTkFNRVNfQ09VTlQ6Ci0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
c2hvcnRlbi02NC10by0zMiIKLSNlbmRpZgogICAgICAgICAqcGFyYW1zID0gY29tcGlsZXItPmdl
dE5hbWVNYXAoKS5zaXplKCk7Ci0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKICAgICB9CkBAIC0zMDksNyArMjg0LDcgQEAgdm9pZCBTaEdldE9iamVjdENv
ZGUoY29uc3QgU2hIYW5kbGUgaGFuZAogCiB2b2lkIFNoR2V0QWN0aXZlQXR0cmliKGNvbnN0IFNo
SGFuZGxlIGhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4LAotICAgICAg
ICAgICAgICAgICAgICAgICBpbnQqIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90KiBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCogc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgU2hEYXRhVHlwZSogdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciogbmFtZSwKQEAgLTMyMSw3ICsyOTYsNyBAQCB2b2lkIFNoR2V0QWN0aXZlQXR0cmliKGNv
bnN0IFNoSGFuZGxlIGhhCiAKIHZvaWQgU2hHZXRBY3RpdmVVbmlmb3JtKGNvbnN0IFNoSGFuZGxl
IGhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGludCogbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
KiBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBTaERhdGFUeXBlKiB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciogbmFtZSwKQEAgLTM1MiwyNCArMzI3LDI0IEBAIHZvaWQgU2hHZXROYW1lSGFzaGluZ0Vu
dHJ5KGNvbnN0IFNoSGFuZGwKICAgICAgICAgKytpdDsKIAogICAgIHNpemVfdCBsZW4gPSBpdC0+
Zmlyc3QubGVuZ3RoKCkgKyAxOwotICAgIGludCBtYXhfbGVuID0gMDsKKyAgICBzaXplX3QgbWF4
X2xlbiA9IDA7CiAgICAgU2hHZXRJbmZvKGhhbmRsZSwgU0hfTkFNRV9NQVhfTEVOR1RILCAmbWF4
X2xlbik7Ci0gICAgaWYgKHN0YXRpY19jYXN0PGludD4obGVuKSA+IG1heF9sZW4pIHsKKyAgICBp
ZiAobGVuID4gbWF4X2xlbikgewogICAgICAgICBBU1NFUlQoZmFsc2UpOwogICAgICAgICBsZW4g
PSBtYXhfbGVuOwogICAgIH0KICAgICBzdHJuY3B5KG5hbWUsIGl0LT5maXJzdC5jX3N0cigpLCBs
ZW4pOwogICAgIC8vIFRvIGJlIG9uIHRoZSBzYWZlIHNpZGUgaW4gY2FzZSB0aGUgc291cmNlIGlz
IGxvbmdlciB0aGFuIGV4cGVjdGVkLgotICAgIG5hbWVbbGVuXSA9ICdcMCc7CisgICAgbmFtZVts
ZW4gLSAxXSA9ICdcMCc7CiAKICAgICBsZW4gPSBpdC0+c2Vjb25kLmxlbmd0aCgpICsgMTsKICAg
ICBtYXhfbGVuID0gMDsKICAgICBTaEdldEluZm8oaGFuZGxlLCBTSF9IQVNIRURfTkFNRV9NQVhf
TEVOR1RILCAmbWF4X2xlbik7Ci0gICAgaWYgKHN0YXRpY19jYXN0PGludD4obGVuKSA+IG1heF9s
ZW4pIHsKKyAgICBpZiAobGVuID4gbWF4X2xlbikgewogICAgICAgICBBU1NFUlQoZmFsc2UpOwog
ICAgICAgICBsZW4gPSBtYXhfbGVuOwogICAgIH0KICAgICBzdHJuY3B5KGhhc2hlZE5hbWUsIGl0
LT5zZWNvbmQuY19zdHIoKSwgbGVuKTsKICAgICAvLyBUbyBiZSBvbiB0aGUgc2FmZSBzaWRlIGlu
IGNhc2UgdGhlIHNvdXJjZSBpcyBsb25nZXIgdGhhbiBleHBlY3RlZC4KLSAgICBoYXNoZWROYW1l
W2xlbl0gPSAnXDAnOworICAgIGhhc2hlZE5hbWVbbGVuIC0gMV0gPSAnXDAnOwogfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxl
LmgJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksOCArMTY5LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0RGVmaW5lZCgpIHsgZGVmaW5lZCA9IHRydWU7IH0KICAgICBib29s
IGlzRGVmaW5lZCgpIHsgcmV0dXJuIGRlZmluZWQ7IH0KIAotICAgIGludCBnZXRQYXJhbUNvdW50
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwYXJhbWV0ZXJzLnNpemUoKSk7IH0g
IAotICAgIGNvbnN0IFRQYXJhbWV0ZXImIGdldFBhcmFtKGludCBpKSBjb25zdCB7IHJldHVybiBw
YXJhbWV0ZXJzW2ldOyB9CisgICAgc2l6ZV90IGdldFBhcmFtQ291bnQoKSBjb25zdCB7IHJldHVy
biBwYXJhbWV0ZXJzLnNpemUoKTsgfSAgCisgICAgY29uc3QgVFBhcmFtZXRlciYgZ2V0UGFyYW0o
c2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRlcnNbaV07IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0OwogICAgIFRGdW5jdGlvbihjb25z
dCBURnVuY3Rpb24mLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CkBAIC0zMjMsMTAgKzMyMywx
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0Owog
ICAgIHZvaWQgY29weVRhYmxlKGNvbnN0IFRTeW1ib2xUYWJsZSYgY29weU9mKTsKIAotICAgIHZv
aWQgc2V0RGVmYXVsdFByZWNpc2lvbiggVEJhc2ljVHlwZSB0eXBlLCBUUHJlY2lzaW9uIHByZWMg
KXsKLSAgICAgICAgaWYoIHR5cGUgIT0gRWJ0RmxvYXQgJiYgdHlwZSAhPSBFYnRJbnQgKSByZXR1
cm47IC8vIE9ubHkgc2V0IGRlZmF1bHQgcHJlY2lzaW9uIGZvciBpbnQvZmxvYXQKKyAgICBib29s
IHNldERlZmF1bHRQcmVjaXNpb24oIGNvbnN0IFRQdWJsaWNUeXBlJiB0eXBlLCBUUHJlY2lzaW9u
IHByZWMgKXsKKyAgICAgICAgaWYgKElzU2FtcGxlcih0eXBlLnR5cGUpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7ICAvLyBTa2lwIHNhbXBsZXIgdHlwZXMgZm9yIHRoZSB0aW1lIGJlaW5nCisg
ICAgICAgIGlmICh0eXBlLnR5cGUgIT0gRWJ0RmxvYXQgJiYgdHlwZS50eXBlICE9IEVidEludCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gT25seSBzZXQgZGVmYXVsdCBwcmVjaXNpb24g
Zm9yIGludC9mbG9hdAorICAgICAgICBpZiAodHlwZS5zaXplICE9IDEgfHwgdHlwZS5tYXRyaXgg
fHwgdHlwZS5hcnJheSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gTm90IGFsbG93ZWQg
dG8gc2V0IGZvciBhZ2dyZWdhdGUgdHlwZXMKICAgICAgICAgaW50IGluZGV4T2ZMYXN0RWxlbWVu
dCA9IHN0YXRpY19jYXN0PGludD4ocHJlY2lzaW9uU3RhY2suc2l6ZSgpKSAtIDE7Ci0gICAgICAg
IHByZWNpc2lvblN0YWNrW2luZGV4T2ZMYXN0RWxlbWVudF1bdHlwZV0gPSBwcmVjOyAvLyBVc2Vz
IG1hcCBvcGVyYXRvciBbXSwgb3ZlcndyaXRlcyB0aGUgY3VycmVudCB2YWx1ZQorICAgICAgICBw
cmVjaXNpb25TdGFja1tpbmRleE9mTGFzdEVsZW1lbnRdW3R5cGUudHlwZV0gPSBwcmVjOyAvLyBV
c2VzIG1hcCBvcGVyYXRvciBbXSwgb3ZlcndyaXRlcyB0aGUgY3VycmVudCB2YWx1ZQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBTZWFyY2hlcyBkb3duIHRoZSBwcmVjaXNp
b25TdGFjayBmb3IgYSBwcmVjaXNpb24gcXVhbGlmaWVyIGZvciB0aGUgc3BlY2lmaWVkIFRCYXNp
Y1R5cGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xh
dG9yRVNTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1RyYW5zbGF0b3JFU1NMLmNwcAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JFU1NMLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQCB2b2lkIFRyYW5zbGF0b3JFU1NMOjp0cmFuc2xhdGUoVElu
dGVybU5vCiAgICAgZ2V0QXJyYXlCb3VuZHNDbGFtcGVyKCkuT3V0cHV0Q2xhbXBpbmdGdW5jdGlv
bkRlZmluaXRpb24oc2luayk7CiAKICAgICAvLyBXcml0ZSB0cmFuc2xhdGVkIHNoYWRlci4KLSAg
ICBUT3V0cHV0RVNTTCBvdXRwdXRFU1NMKHNpbmssIGdldEhhc2hGdW5jdGlvbigpLCBnZXROYW1l
TWFwKCksIGdldFN5bWJvbFRhYmxlKCkpOworICAgIFRPdXRwdXRFU1NMIG91dHB1dEVTU0woc2lu
aywgZ2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3koKSwgZ2V0SGFzaEZ1bmN0aW9uKCksIGdl
dE5hbWVNYXAoKSwgZ2V0U3ltYm9sVGFibGUoKSk7CiAgICAgcm9vdC0+dHJhdmVyc2UoJm91dHB1
dEVTU0wpOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
VHJhbnNsYXRvckdMU0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9UcmFuc2xhdG9yR0xTTC5jcHAJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9yR0xTTC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDYgQEAgdm9pZCBUcmFuc2xhdG9yR0xTTDo6dHJhbnNs
YXRlKFRJbnRlcm1ObwogICAgIGdldEFycmF5Qm91bmRzQ2xhbXBlcigpLk91dHB1dENsYW1waW5n
RnVuY3Rpb25EZWZpbml0aW9uKHNpbmspOwogCiAgICAgLy8gV3JpdGUgdHJhbnNsYXRlZCBzaGFk
ZXIuCi0gICAgVE91dHB1dEdMU0wgb3V0cHV0R0xTTChzaW5rLCBnZXRIYXNoRnVuY3Rpb24oKSwg
Z2V0TmFtZU1hcCgpLCBnZXRTeW1ib2xUYWJsZSgpKTsKKyAgICBUT3V0cHV0R0xTTCBvdXRwdXRH
TFNMKHNpbmssIGdldEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5KCksIGdldEhhc2hGdW5jdGlv
bigpLCBnZXROYW1lTWFwKCksIGdldFN5bWJvbFRhYmxlKCkpOwogICAgIHJvb3QtPnRyYXZlcnNl
KCZvdXRwdXRHTFNMKTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAJKHJldmlzaW9u
IDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYWxpZGF0
ZUxpbWl0YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIxLDIwICs0MjEsMTMgQEAgYm9v
bCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2YWxpZGF0ZUZ1bmN0aQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIExpc3Qgb2YgcGFyYW0gaW5kaWNlcyBmb3Igd2hpY2ggbG9vcCBpbmRpY2Vz
IGFyZSB1c2VkIGFzIGFyZ3VtZW50LgotICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8aW50PiBQYXJh
bUluZGV4OworICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8c2l6ZV90PiBQYXJhbUluZGV4OwogICAg
IFBhcmFtSW5kZXggcEluZGV4OwogICAgIFRJbnRlcm1TZXF1ZW5jZSYgcGFyYW1zID0gbm9kZS0+
Z2V0U2VxdWVuY2UoKTsKICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90eXBlIGkgPSAw
OyBpIDwgcGFyYW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJv
bCA9IHBhcmFtc1tpXS0+Z2V0QXNTeW1ib2xOb2RlKCk7CiAgICAgICAgIGlmIChzeW1ib2wgJiYg
aXNMb29wSW5kZXgoc3ltYm9sKSkKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdz
aG9ydGVuLTY0LXRvLTMyIgotI2VuZGlmCiAgICAgICAgICAgICBwSW5kZXgucHVzaF9iYWNrKGkp
OwotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAot
I2VuZGlmCiAgICAgfQogICAgIC8vIElmIG5vbmUgb2YgdGhlIGxvb3AgaW5kaWNlcyBhcmUgdXNl
ZCBhcyBhcmd1bWVudHMsCiAgICAgLy8gdGhlcmUgaXMgbm90aGluZyB0byBjaGVjay4KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZVBhY2tlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Zhcmlh
YmxlUGFja2VyLmNwcAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlUGFja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUs
NyArODUsNyBAQCBpbnQgVmFyaWFibGVQYWNrZXI6OkdldE51bVJvd3MoU2hEYXRhVHlwCiAgICAg
ICAgIGNhc2UgU0hfRkxPQVRfTUFUMzoKICAgICAgICAgICAgIHJldHVybiAzOwogICAgICAgICBj
YXNlIFNIX0ZMT0FUX01BVDI6Ci0gICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIHJl
dHVybiAyOwogICAgICAgICBjYXNlIFNIX0ZMT0FUX1ZFQzQ6CiAgICAgICAgIGNhc2UgU0hfSU5U
X1ZFQzQ6CiAgICAgICAgIGNhc2UgU0hfQk9PTF9WRUM0OgpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5oCShyZXZpc2lvbiAxNDM2NTQpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04LDcgKzgsNyBAQCBzdHJ1Y3QgVFBhcnNlQ29udGV4dDsKIGV4dGVybiBpbnQg
Z2xzbGFuZ19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOwogZXh0ZXJuIGludCBn
bHNsYW5nX2ZpbmFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOwogCi1leHRlcm4gaW50IGds
c2xhbmdfc2NhbihpbnQgY291bnQsCitleHRlcm4gaW50IGdsc2xhbmdfc2NhbihzaXplX3QgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCShyZXZpc2lvbiAxNDM2NTQp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw5ICsyMyw2IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBM
RVhFUiAoZ2xzbGEKIC8vIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZV9w
YXJzZXIuc2guIERPIE5PVCBFRElUIQogCiAvLyBJZ25vcmUgZXJyb3JzIGluIGF1dG8tZ2VuZXJh
dGVkIGNvZGUuCi0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdzaG9ydGVuLTY0LXRvLTMyIgotI2VuZGlmCiAjaWYgZGVmaW5lZChfX0dO
VUNfXykKICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtZnVuY3Rpb24i
CiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXZhcmlhYmxlIgpAQCAt
NTQsNyArNTEsNyBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgTEVYRVIgKGdsc2xhCiAj
ZGVmaW5lIFlZX0lOUFVUKGJ1ZiwgcmVzdWx0LCBtYXhfc2l6ZSkgXAogICAgIHJlc3VsdCA9IHN0
cmluZ19pbnB1dChidWYsIG1heF9zaXplLCB5eXNjYW5uZXIpOwogCi1zdGF0aWMgaW50IHN0cmlu
Z19pbnB1dChjaGFyKiBidWYsIGludCBtYXhfc2l6ZSwgeXlzY2FuX3QgeXlzY2FubmVyKTsKK3N0
YXRpYyB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6ZV90IG1heF9zaXpl
LCB5eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5
c2Nhbm5lcik7CiBzdGF0aWMgaW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVyKTsK
ICV9CkBAIC0yMDYsMTAgKzIwMywxMCBAQCBPICAgICAgICAgICBbMC03XQogICAgcmV0dXJuIGNo
ZWNrX3R5cGUoeXlzY2FubmVyKTsKIH0KIAotMFt4WF17SH0rICAgICAgICAgeyB5eWx2YWwtPmxl
eC5pID0gc3RydG9sKHl5dGV4dCwgMCwgMCk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KLTB7T30r
ICAgICAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0cnRvbCh5eXRleHQsIDAsIDApOyByZXR1
cm4oSU5UQ09OU1RBTlQpOyB9CiswW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBz
dGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5U
KTsgfQorMHtPfSsgICAgICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50
PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KIDB7RH0rICAg
ICAgICAgICAgIHsgY29udGV4dC0+ZXJyb3IoeXlsaW5lbm8sICJJbnZhbGlkIE9jdGFsIG51bWJl
ci4iLCB5eXRleHQpOyBjb250ZXh0LT5yZWNvdmVyKCk7IHJldHVybiAwO30KLXtEfSsgICAgICAg
ICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0cnRvbCh5eXRleHQsIDAsIDApOyByZXR1cm4oSU5U
Q09OU1RBTlQpOyB9Cit7RH0rICAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQog
CiB7RH0re0V9ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
YXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQoge0R9KyIuIntEfSoo
e0V9KT8geyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4
dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KQEAgLTI3NSwxMSArMjcyLDExIEBAIE8gICAg
ICAgICAgIFswLTddCiAKICUlCiAKLWludCBzdHJpbmdfaW5wdXQoY2hhciogYnVmLCBpbnQgbWF4
X3NpemUsIHl5c2Nhbl90IHl5c2Nhbm5lcikgeworeXlfc2l6ZV90IHN0cmluZ19pbnB1dChjaGFy
KiBidWYsIHl5X3NpemVfdCBtYXhfc2l6ZSwgeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgcHA6
OlRva2VuIHRva2VuOwogICAgIHl5Z2V0X2V4dHJhKHl5c2Nhbm5lciktPnByZXByb2Nlc3Nvci5s
ZXgoJnRva2VuKTsKLSAgICBpbnQgbGVuID0gdG9rZW4udHlwZSA9PSBwcDo6VG9rZW46OkxBU1Qg
PyAwIDogdG9rZW4udGV4dC5zaXplKCk7Ci0gICAgaWYgKChsZW4gPiAwKSAmJiAobGVuIDwgbWF4
X3NpemUpKQorICAgIHl5X3NpemVfdCBsZW4gPSB0b2tlbi50eXBlID09IHBwOjpUb2tlbjo6TEFT
VCA/IDAgOiB0b2tlbi50ZXh0LnNpemUoKTsKKyAgICBpZiAobGVuIDwgbWF4X3NpemUpCiAgICAg
ICAgIG1lbWNweShidWYsIHRva2VuLnRleHQuY19zdHIoKSwgbGVuKTsKICAgICB5eXNldF9saW5l
bm8oRW5jb2RlU291cmNlTG9jKHRva2VuLmxvY2F0aW9uLmZpbGUsIHRva2VuLmxvY2F0aW9uLmxp
bmUpLCB5eXNjYW5uZXIpOwogCkBAIC0zNDQsNyArMzQxLDcgQEAgaW50IGdsc2xhbmdfZmluYWxp
emUoVFBhcnNlQ29udGV4dCogY29udAogICAgIHJldHVybiAwOwogfQogCi1pbnQgZ2xzbGFuZ19z
Y2FuKGludCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5n
dGhbXSwKK2ludCBnbHNsYW5nX3NjYW4oc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBz
dHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAogICAgICAgICAgICAgICAgICBUUGFyc2VDb250
ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlyZXN0YXJ0KE5VTEwsIGNvbnRleHQtPnNjYW5uZXIpOwog
ICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2MoMCwgMSksIGNvbnRleHQtPnNjYW5uZXIp
OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcueQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFu
Zy55CShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2xzbGFuZy55CSh3b3JraW5nIGNvcHkpCkBAIC01MjQsNyArNTI0LDcgQEAgZnVuY3Rp
b25fY2FsbAogICAgICAgICAgICAgICAgICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0TmFt
ZShmbkNhbmRpZGF0ZS0+Z2V0TWFuZ2xlZE5hbWUoKSk7CiAKICAgICAgICAgICAgICAgICAgICAg
VFF1YWxpZmllciBxdWFsOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGZuQ2FuZGlkYXRlLT5nZXRQYXJhbUNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZuQ2FuZGlkYXRlLT5nZXRQYXJhbUNvdW50KCk7ICsr
aSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcXVhbCA9IGZuQ2FuZGlkYXRlLT5nZXRQYXJh
bShpKS50eXBlLT5nZXRRdWFsaWZpZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChx
dWFsID09IEV2cU91dCB8fCBxdWFsID09IEV2cUluT3V0KSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soJCQtPmdldExpbmUoKSwgImFz
c2lnbiIsICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRTZXF1ZW5jZSgpW2ldLT5nZXRBc1R5cGVk
KCkpKSB7CkBAIC05NjUsNyArOTY1LDcgQEAgZGVjbGFyYXRpb24KICAgICAgICAgcHJvdG90eXBl
LT5zZXRUeXBlKGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKSk7CiAgICAgICAgIHByb3RvdHlwZS0+
c2V0TmFtZShmdW5jdGlvbi5nZXROYW1lKCkpOwogICAgICAgICAKLSAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCk7IGkrKykKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCk7IGkrKykKICAgICAgICAg
ewogICAgICAgICAgICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJh
bShpKTsKICAgICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCkBAIC05OTEsNyArOTkxLDEw
IEBAIGRlY2xhcmF0aW9uCiAgICAgICAgICQkID0gJDEuaW50ZXJtQWdncmVnYXRlOwogICAgIH0K
ICAgICB8IFBSRUNJU0lPTiBwcmVjaXNpb25fcXVhbGlmaWVyIHR5cGVfc3BlY2lmaWVyX25vX3By
ZWMgU0VNSUNPTE9OIHsKLSAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUuc2V0RGVmYXVsdFBy
ZWNpc2lvbiggJDMudHlwZSwgJDIgKTsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5zeW1ib2xUYWJs
ZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAkMywgJDIgKSkgeworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoJDEubGluZSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVmYXVsdCBwcmVjaXNp
b24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlwZSkpOworICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOworICAgICAgICB9CiAgICAgICAgICQkID0gMDsKICAgICB9CiAgICAg
OwpAQCAtMTAxMiw3ICsxMDE1LDcgQEAgZnVuY3Rpb25fcHJvdG90eXBlCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2
ZSB0aGUgc2FtZSByZXR1cm4gdHlwZSIsICQxLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJp
bmcoKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50
KCk7ICsraSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2RGVjLT5n
ZXRQYXJhbUNvdW50KCk7ICsraSkgewogICAgICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5nZXRQ
YXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXIoKSAhPSAkMS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0
UXVhbGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGlu
ZSwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXIgcXVh
bGlmaWVycyIsICQxLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTIwODIsNyArMjA4NSw3
IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgLy8ga25vd3Mgd2hlcmUgdG8gZmluZCBw
YXJhbWV0ZXJzLgogICAgICAgICAvLwogICAgICAgICBUSW50ZXJtQWdncmVnYXRlKiBwYXJhbU5v
ZGVzID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
ZnVuY3Rpb24tPmdldFBhcmFtQ291bnQoKTsgaSsrKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZnVuY3Rpb24tPmdldFBhcmFtQ291bnQoKTsgaSsrKSB7CiAgICAgICAgICAgICBj
b25zdCBUUGFyYW1ldGVyJiBwYXJhbSA9IGZ1bmN0aW9uLT5nZXRQYXJhbShpKTsKICAgICAgICAg
ICAgIGlmIChwYXJhbS5uYW1lICE9IDApIHsKICAgICAgICAgICAgICAgICBUVmFyaWFibGUgKnZh
cmlhYmxlID0gbmV3IFRWYXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xl
eC5jcHAJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9nbHNsYW5nX2xleC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgsOSArOCw2IEBACiAv
LyBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfcGFyc2VyLnNoLiBETyBO
T1QgRURJVCEKIAogLy8gSWdub3JlIGVycm9ycyBpbiBhdXRvLWdlbmVyYXRlZCBjb2RlLgotI2lm
IGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
c2hvcnRlbi02NC10by0zMiIKLSNlbmRpZgogI2lmIGRlZmluZWQoX19HTlVDX18pCiAjcHJhZ21h
IEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgogI3ByYWdtYSBHQ0Mg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC12YXJpYWJsZSIKQEAgLTgyNCw3ICs4MjEsNyBA
QCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgTEVYRVIgKGdsc2xhCiAjZGVmaW5lIFlZX0lO
UFVUKGJ1ZiwgcmVzdWx0LCBtYXhfc2l6ZSkgXAogICAgIHJlc3VsdCA9IHN0cmluZ19pbnB1dChi
dWYsIG1heF9zaXplLCB5eXNjYW5uZXIpOwogCi1zdGF0aWMgaW50IHN0cmluZ19pbnB1dChjaGFy
KiBidWYsIGludCBtYXhfc2l6ZSwgeXlzY2FuX3QgeXlzY2FubmVyKTsKK3N0YXRpYyB5eV9zaXpl
X3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6ZV90IG1heF9zaXplLCB5eXNjYW5fdCB5
eXNjYW5uZXIpOwogc3RhdGljIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcik7CiBz
dGF0aWMgaW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVyKTsKIApAQCAtMTU0Niwx
MSArMTU0MywxMSBAQCBZWV9SVUxFX1NFVFVQCiAJWVlfQlJFQUsKIGNhc2UgOTk6CiBZWV9SVUxF
X1NFVFVQCi17IHl5bHZhbC0+bGV4LmkgPSBzdHJ0b2woeXl0ZXh0LCAwLCAwKTsgcmV0dXJuKElO
VENPTlNUQU5UKTsgfQoreyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2wo
eXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KIAlZWV9CUkVBSwogY2FzZSAx
MDA6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmkgPSBzdHJ0b2woeXl0ZXh0LCAwLCAw
KTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQoreyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8
aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KIAlZWV9C
UkVBSwogY2FzZSAxMDE6CiBZWV9SVUxFX1NFVFVQCkBAIC0xNTU4LDcgKzE1NTUsNyBAQCBZWV9S
VUxFX1NFVFVQCiAJWVlfQlJFQUsKIGNhc2UgMTAyOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwt
PmxleC5pID0gc3RydG9sKHl5dGV4dCwgMCwgMCk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sg
eXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyBy
ZXR1cm4oSU5UQ09OU1RBTlQpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAzOgogWVlfUlVMRV9TRVRV
UApAQCAtMjk1MSwxMSArMjk0OCwxMSBAQCB2b2lkIHl5ZnJlZSAodm9pZCAqIHB0ciAsIHl5c2Nh
bl90IHl5c2NhCiAKICNkZWZpbmUgWVlUQUJMRVNfTkFNRSAieXl0YWJsZXMiCiAKLWludCBzdHJp
bmdfaW5wdXQoY2hhciogYnVmLCBpbnQgbWF4X3NpemUsIHl5c2Nhbl90IHl5c2Nhbm5lcikgewor
eXlfc2l6ZV90IHN0cmluZ19pbnB1dChjaGFyKiBidWYsIHl5X3NpemVfdCBtYXhfc2l6ZSwgeXlz
Y2FuX3QgeXlzY2FubmVyKSB7CiAgICAgcHA6OlRva2VuIHRva2VuOwogICAgIHl5Z2V0X2V4dHJh
KHl5c2Nhbm5lciktPnByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLSAgICBpbnQgbGVuID0gdG9r
ZW4udHlwZSA9PSBwcDo6VG9rZW46OkxBU1QgPyAwIDogdG9rZW4udGV4dC5zaXplKCk7Ci0gICAg
aWYgKChsZW4gPiAwKSAmJiAobGVuIDwgbWF4X3NpemUpKQorICAgIHl5X3NpemVfdCBsZW4gPSB0
b2tlbi50eXBlID09IHBwOjpUb2tlbjo6TEFTVCA/IDAgOiB0b2tlbi50ZXh0LnNpemUoKTsKKyAg
ICBpZiAobGVuIDwgbWF4X3NpemUpCiAgICAgICAgIG1lbWNweShidWYsIHRva2VuLnRleHQuY19z
dHIoKSwgbGVuKTsKICAgICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9jKHRva2VuLmxvY2F0
aW9uLmZpbGUsIHRva2VuLmxvY2F0aW9uLmxpbmUpLHl5c2Nhbm5lcik7CiAKQEAgLTMwMjAsNyAr
MzAxNyw3IEBAIGludCBnbHNsYW5nX2ZpbmFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnQKICAgICBy
ZXR1cm4gMDsKIH0KIAotaW50IGdsc2xhbmdfc2NhbihpbnQgY291bnQsIGNvbnN0IGNoYXIqIGNv
bnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCitpbnQgZ2xzbGFuZ19zY2FuKHNpemVf
dCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwK
ICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5cmVzdGFy
dChOVUxMLGNvbnRleHQtPnNjYW5uZXIpOwogICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VM
b2MoMCwgMSksY29udGV4dC0+c2Nhbm5lcik7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAJKHJldmlzaW9uIDE0MzY1
NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNCw3ICs0MzQsNyBAQCB0eXBlZGVmIHNob3J0IGludCB5
eXR5cGVfaW50MTY7CiAjZGVmaW5lIFlZU0laRV9NQVhJTVVNICgoWVlTSVpFX1QpIC0xKQogCiAj
aWZuZGVmIFlZXwotIyBpZiBZWUVOQUJMRV9OTFMKKyMgaWYgZGVmaW5lZCBZWUVOQUJMRV9OTFMg
JiYgWVlFTkFCTEVfTkxTCiAjICBpZiBFTkFCTEVfTkxTCiAjICAgaW5jbHVkZSA8bGliaW50bC5o
PiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCiAjICAgZGVmaW5lIFlZXyhtc2dp
ZCkgZGdldHRleHQgKCJiaXNvbi1ydW50aW1lIiwgbXNnaWQpCkBAIC03NTgsMjAgKzc1OCwyMCBA
QCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXJsaW5lW10gPQogICAgICA3NjIsICAgNzcz
LCAgIDc3NywgICA3NzgsICAgNzg4LCAgIDc5OCwgICA4MDgsICAgODIxLCAgIDgyMiwgICA4MzIs
CiAgICAgIDg0NSwgICA4NDksICAgODUzLCAgIDg1NywgICA4NTgsICAgODcxLCAgIDg3MiwgICA4
ODUsICAgODg2LCAgIDg5OSwKICAgICAgOTAwLCAgIDkxNywgICA5MTgsICAgOTMxLCAgIDkzMiwg
ICA5MzMsICAgOTM0LCAgIDkzNSwgICA5MzksICAgOTQyLAotICAgICA5NTMsICAgOTYxLCAgIDk4
OCwgICA5OTMsICAxMDAwLCAgMTAzOCwgIDEwNDEsICAxMDQ4LCAgMTA1NiwgIDEwNzcsCi0gICAg
MTA5OCwgIDExMDksICAxMTM4LCAgMTE0MywgIDExNTMsICAxMTU4LCAgMTE2OCwgIDExNzEsICAx
MTc0LCAgMTE3NywKLSAgICAxMTgzLCAgMTE5MCwgIDExOTMsICAxMjE1LCAgMTIzMywgIDEyNTcs
ICAxMjgwLCAgMTI4NCwgIDEzMDIsICAxMzEwLAotICAgIDEzNDIsICAxMzYyLCAgMTQ1MSwgIDE0
NjAsICAxNDgzLCAgMTQ4NiwgIDE0OTIsICAxNTAwLCAgMTUwOCwgIDE1MTYsCi0gICAgMTUyNiwg
IDE1MzMsICAxNTM2LCAgMTUzOSwgIDE1NDUsICAxNTQ4LCAgMTU2MywgIDE1NjcsICAxNTcxLCAg
MTU3NSwKLSAgICAxNTg0LCAgMTU4OSwgIDE1OTQsICAxNTk5LCAgMTYwNCwgIDE2MDksICAxNjE0
LCAgMTYxOSwgIDE2MjQsICAxNjI5LAotICAgIDE2MzUsICAxNjQxLCAgMTY0NywgIDE2NTIsICAx
NjU3LCAgMTY2NiwgIDE2NzUsICAxNjgwLCAgMTY5MywgIDE2OTMsCi0gICAgMTcwNywgIDE3MDcs
ICAxNzE2LCAgMTcxOSwgIDE3MzQsICAxNzcwLCAgMTc3NCwgIDE3ODAsICAxNzg4LCAgMTgwNCwK
LSAgICAxODA4LCAgMTgxMiwgIDE4MTMsICAxODE5LCAgMTgyMCwgIDE4MjEsICAxODIyLCAgMTgy
MywgIDE4MjcsICAxODI4LAotICAgIDE4MjgsICAxODI4LCAgMTgzOCwgIDE4MzksICAxODQzLCAg
MTg0MywgIDE4NDQsICAxODQ0LCAgMTg0OSwgIDE4NTIsCi0gICAgMTg2MiwgIDE4NjUsICAxODcx
LCAgMTg3MiwgIDE4NzYsICAxODg0LCAgMTg4OCwgIDE4OTgsICAxOTAzLCAgMTkyMCwKLSAgICAx
OTIwLCAgMTkyNSwgIDE5MjUsICAxOTMyLCAgMTkzMiwgIDE5NDAsICAxOTQzLCAgMTk0OSwgIDE5
NTIsICAxOTU4LAotICAgIDE5NjIsICAxOTY5LCAgMTk3NiwgIDE5ODMsICAxOTkwLCAgMjAwMSwg
IDIwMTAsICAyMDE0LCAgMjAyMSwgIDIwMjQsCi0gICAgMjAzMCwgIDIwMzAKKyAgICAgOTUzLCAg
IDk2MSwgICA5ODgsICAgOTkzLCAgMTAwMywgIDEwNDEsICAxMDQ0LCAgMTA1MSwgIDEwNTksICAx
MDgwLAorICAgIDExMDEsICAxMTEyLCAgMTE0MSwgIDExNDYsICAxMTU2LCAgMTE2MSwgIDExNzEs
ICAxMTc0LCAgMTE3NywgIDExODAsCisgICAgMTE4NiwgIDExOTMsICAxMTk2LCAgMTIxOCwgIDEy
MzYsICAxMjYwLCAgMTI4MywgIDEyODcsICAxMzA1LCAgMTMxMywKKyAgICAxMzQ1LCAgMTM2NSwg
IDE0NTQsICAxNDYzLCAgMTQ4NiwgIDE0ODksICAxNDk1LCAgMTUwMywgIDE1MTEsICAxNTE5LAor
ICAgIDE1MjksICAxNTM2LCAgMTUzOSwgIDE1NDIsICAxNTQ4LCAgMTU1MSwgIDE1NjYsICAxNTcw
LCAgMTU3NCwgIDE1NzgsCisgICAgMTU4NywgIDE1OTIsICAxNTk3LCAgMTYwMiwgIDE2MDcsICAx
NjEyLCAgMTYxNywgIDE2MjIsICAxNjI3LCAgMTYzMiwKKyAgICAxNjM4LCAgMTY0NCwgIDE2NTAs
ICAxNjU1LCAgMTY2MCwgIDE2NjksICAxNjc4LCAgMTY4MywgIDE2OTYsICAxNjk2LAorICAgIDE3
MTAsICAxNzEwLCAgMTcxOSwgIDE3MjIsICAxNzM3LCAgMTc3MywgIDE3NzcsICAxNzgzLCAgMTc5
MSwgIDE4MDcsCisgICAgMTgxMSwgIDE4MTUsICAxODE2LCAgMTgyMiwgIDE4MjMsICAxODI0LCAg
MTgyNSwgIDE4MjYsICAxODMwLCAgMTgzMSwKKyAgICAxODMxLCAgMTgzMSwgIDE4NDEsICAxODQy
LCAgMTg0NiwgIDE4NDYsICAxODQ3LCAgMTg0NywgIDE4NTIsICAxODU1LAorICAgIDE4NjUsICAx
ODY4LCAgMTg3NCwgIDE4NzUsICAxODc5LCAgMTg4NywgIDE4OTEsICAxOTAxLCAgMTkwNiwgIDE5
MjMsCisgICAgMTkyMywgIDE5MjgsICAxOTI4LCAgMTkzNSwgIDE5MzUsICAxOTQzLCAgMTk0Niwg
IDE5NTIsICAxOTU1LCAgMTk2MSwKKyAgICAxOTY1LCAgMTk3MiwgIDE5NzksICAxOTg2LCAgMTk5
MywgIDIwMDQsICAyMDEzLCAgMjAxNywgIDIwMjQsICAyMDI3LAorICAgIDIwMzMsICAyMDMzCiB9
OwogI2VuZGlmCiAKQEAgLTE0MDcsNyArMTQwNyw3IEBAIHdoaWxlIChZWUlEICgwKSkKICAgIHdl
IHdvbid0IGJyZWFrIHVzZXIgY29kZTogd2hlbiB0aGVzZSBhcmUgdGhlIGxvY2F0aW9ucyB3ZSBr
bm93LiAgKi8KIAogI2lmbmRlZiBZWV9MT0NBVElPTl9QUklOVAotIyBpZiBZWUxUWVBFX0lTX1RS
SVZJQUwKKyMgaWYgZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklW
SUFMCiAjICBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKQkJCVwKICAgICAgZnBy
aW50ZiAoRmlsZSwgIiVkLiVkLSVkLiVkIiwJCQlcCiAJICAgICAgKExvYykuZmlyc3RfbGluZSwg
KExvYykuZmlyc3RfY29sdW1uLAlcCkBAIC0yNTU0LDcgKzI1NTQsNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0Fn
Z3JlZ2F0ZSgpLT5zZXROYW1lKGZuQ2FuZGlkYXRlLT5nZXRNYW5nbGVkTmFtZSgpKTsKIAogICAg
ICAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWw7Ci0gICAgICAgICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgZm5DYW5kaWRhdGUtPmdldFBhcmFtQ291bnQoKTsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZm5DYW5kaWRhdGUtPmdl
dFBhcmFtQ291bnQoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBxdWFsID0gZm5D
YW5kaWRhdGUtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllcigpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHF1YWwgPT0gRXZxT3V0IHx8IHF1YWwgPT0gRXZxSW5PdXQpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldExpbmUoKSwgImFzc2lnbiIsICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+Z2V0U2VxdWVuY2Uo
KVtpXS0+Z2V0QXNUeXBlZCgpKSkgewpAQCAtMzE0MCw3ICszMTQwLDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgIHByb3RvdHlwZS0+c2V0VHlwZShmdW5jdGlvbi5nZXRSZXR1cm5UeXBlKCkpOwogICAg
ICAgICBwcm90b3R5cGUtPnNldE5hbWUoZnVuY3Rpb24uZ2V0TmFtZSgpKTsKICAgICAgICAgCi0g
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpOyBpKysp
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgp
OyBpKyspCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRQYXJhbWV0ZXIgJnBhcmFtID0g
ZnVuY3Rpb24uZ2V0UGFyYW0oaSk7CiAgICAgICAgICAgICBpZiAocGFyYW0ubmFtZSAhPSAwKQpA
QCAtMzE3NCw3ICszMTc0LDEwIEBAIHl5cmVkdWNlOgogICBjYXNlIDczOgogCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAoeXl2c3BbKDMp
IC0gKDQpXS5pbnRlcm0udHlwZSkudHlwZSwgKHl5dnNwWygyKSAtICg0KV0uaW50ZXJtLnByZWNp
c2lvbikgKTsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5zeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJl
Y2lzaW9uKCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlwZSksICh5eXZzcFsoMikgLSAoNCld
LmludGVybS5wcmVjaXNpb24pICkpIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMSkgLSAoNCldLmxleCkubGluZSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVmYXVs
dCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoKHl5dnNwWygzKSAtICg0KV0u
aW50ZXJtLnR5cGUpLnR5cGUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAg
ICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsKICAgICA7fQog
ICAgIGJyZWFrOwpAQCAtMzE5Niw3ICszMTk5LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAib3ZlcmxvYWRl
ZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwgKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkp
OwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyAr
K2kpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFy
YW1Db3VudCgpOyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0o
aSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkgIT0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0
aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAib3Zlcmxv
YWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwg
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0
UXVhbGlmaWVyU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CkBAIC00NTYyLDcgKzQ1NjUsNyBAQCB5eXJlZHVjZToKICAgICAgICAgLy8ga25vd3Mgd2hl
cmUgdG8gZmluZCBwYXJhbWV0ZXJzLgogICAgICAgICAvLwogICAgICAgICBUSW50ZXJtQWdncmVn
YXRlKiBwYXJhbU5vZGVzID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7Ci0gICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgZnVuY3Rpb24tPmdldFBhcmFtQ291bnQoKTsgaSsrKSB7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb24tPmdldFBhcmFtQ291bnQoKTsgaSsrKSB7CiAg
ICAgICAgICAgICBjb25zdCBUUGFyYW1ldGVyJiBwYXJhbSA9IGZ1bmN0aW9uLT5nZXRQYXJhbShp
KTsKICAgICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApIHsKICAgICAgICAgICAgICAgICBU
VmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlw
ZSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAJKHJl
dmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQg
KzEsMjIgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjMuICAqLwor
LyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuNC4yLiAgKi8KIAogLyogU2tl
bGV0b24gaW1wbGVtZW50YXRpb24gZm9yIEJpc29uJ3MgWWFjYy1saWtlIHBhcnNlcnMgaW4gQwot
Ci0gICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIsIDIw
MDMsIDIwMDQsIDIwMDUsIDIwMDYKLSAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot
Ci0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yIG1vZGlmeQorICAgCisgICAgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODktMTk5
MCwgMjAwMC0yMDA2LCAyMDA5LTIwMTAgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5j
LgorICAgCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAg
IGFueSBsYXRlciB2ZXJzaW9uLgotCisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl
aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAgIAogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQorICAgCiAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKLSAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCisgICBhbG9u
ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj
ZW5zZXMvPi4gICovCiAKIC8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgY3JlYXRl
IGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlucwogICAgcGFydCBvciBhbGwgb2YgdGhlIEJpc29u
IHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKQEAgLTI5LDcgKzI3LDcg
QEAKICAgIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBza2VsZXRvbiBh
bmQgdGhlIHJlc3VsdGluZwogICAgQmlzb24gb3V0cHV0IGZpbGVzIHRvIGJlIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2Ugd2l0aG91dCB0aGlzIHNwZWNp
YWwgZXhjZXB0aW9uLgotCisgICAKICAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KICAgIHZlcnNpb24gMi4yIG9mIEJp
c29uLiAgKi8KIApAQCAtNDcsNyArNDUsNyBAQAogI2RlZmluZSBZWUJJU09OIDEKIAogLyogQmlz
b24gdmVyc2lvbi4gICovCi0jZGVmaW5lIFlZQklTT05fVkVSU0lPTiAiMi4zIgorI2RlZmluZSBZ
WUJJU09OX1ZFUlNJT04gIjIuNC4yIgogCiAvKiBTa2VsZXRvbiBuYW1lLiAgKi8KICNkZWZpbmUg
WVlTS0VMRVRPTl9OQU1FICJ5YWNjLmMiCkBAIC01NSw1MCArNTMsMjMgQEAKIC8qIFB1cmUgcGFy
c2Vycy4gICovCiAjZGVmaW5lIFlZUFVSRSAxCiAKKy8qIFB1c2ggcGFyc2Vycy4gICovCisjZGVm
aW5lIFlZUFVTSCAwCisKKy8qIFB1bGwgcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVMTCAxCisK
IC8qIFVzaW5nIGxvY2F0aW9ucy4gICovCiAjZGVmaW5lIFlZTFNQX05FRURFRCAwCiAKIC8qIFN1
YnN0aXR1dGUgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcy4gICovCi0jZGVmaW5lIHl5
cGFyc2UgcHBwYXJzZQotI2RlZmluZSB5eWxleCAgIHBwbGV4Ci0jZGVmaW5lIHl5ZXJyb3IgcHBl
cnJvcgotI2RlZmluZSB5eWx2YWwgIHBwbHZhbAotI2RlZmluZSB5eWNoYXIgIHBwY2hhcgotI2Rl
ZmluZSB5eWRlYnVnIHBwZGVidWcKLSNkZWZpbmUgeXluZXJycyBwcG5lcnJzCi0KLQotLyogVG9r
ZW5zLiAgKi8KLSNpZm5kZWYgWVlUT0tFTlRZUEUKLSMgZGVmaW5lIFlZVE9LRU5UWVBFCi0gICAv
KiBQdXQgdGhlIHRva2VucyBpbnRvIHRoZSBzeW1ib2wgdGFibGUsIHNvIHRoYXQgR0RCIGFuZCBv
dGhlciBkZWJ1Z2dlcnMKLSAgICAgIGtub3cgYWJvdXQgdGhlbS4gICovCi0gICBlbnVtIHl5dG9r
ZW50eXBlIHsKLSAgICAgVE9LX0NPTlNUX0lOVCA9IDI1OCwKLSAgICAgVE9LX09QX09SID0gMjU5
LAotICAgICBUT0tfT1BfQU5EID0gMjYwLAotICAgICBUT0tfT1BfTkUgPSAyNjEsCi0gICAgIFRP
S19PUF9FUSA9IDI2MiwKLSAgICAgVE9LX09QX0dFID0gMjYzLAotICAgICBUT0tfT1BfTEUgPSAy
NjQsCi0gICAgIFRPS19PUF9SSUdIVCA9IDI2NSwKLSAgICAgVE9LX09QX0xFRlQgPSAyNjYsCi0g
ICAgIFRPS19VTkFSWSA9IDI2NwotICAgfTsKLSNlbmRpZgotLyogVG9rZW5zLiAgKi8KLSNkZWZp
bmUgVE9LX0NPTlNUX0lOVCAyNTgKLSNkZWZpbmUgVE9LX09QX09SIDI1OQotI2RlZmluZSBUT0tf
T1BfQU5EIDI2MAotI2RlZmluZSBUT0tfT1BfTkUgMjYxCi0jZGVmaW5lIFRPS19PUF9FUSAyNjIK
LSNkZWZpbmUgVE9LX09QX0dFIDI2MwotI2RlZmluZSBUT0tfT1BfTEUgMjY0Ci0jZGVmaW5lIFRP
S19PUF9SSUdIVCAyNjUKLSNkZWZpbmUgVE9LX09QX0xFRlQgMjY2Ci0jZGVmaW5lIFRPS19VTkFS
WSAyNjcKLQotCisjZGVmaW5lIHl5cGFyc2UgICAgICAgICBwcHBhcnNlCisjZGVmaW5lIHl5bGV4
ICAgICAgICAgICBwcGxleAorI2RlZmluZSB5eWVycm9yICAgICAgICAgcHBlcnJvcgorI2RlZmlu
ZSB5eWx2YWwgICAgICAgICAgcHBsdmFsCisjZGVmaW5lIHl5Y2hhciAgICAgICAgICBwcGNoYXIK
KyNkZWZpbmUgeXlkZWJ1ZyAgICAgICAgIHBwZGVidWcKKyNkZWZpbmUgeXluZXJycyAgICAgICAg
IHBwbmVycnMKIAogCiAvKiBDb3B5IHRoZSBmaXJzdCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25z
LiAgKi8KQEAgLTExMiwxOCArODMsMTMgQEAKIAogLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCiAKLS8vIElmIGNsYW5nIG9y
IGdjYy4KICNpZiBkZWZpbmVkKF9fR05VQ19fKQotCi0vLyBUdXJuIG9mZiB1bmluaXRpYWxpemVk
IHZhcmlhYmxlIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGUgYXV0by1nZW5lcmF0ZWQgcHBsdmFs
IHZhcmlhYmxlLgotLy8gT24gZ2NjIDQuNyssIFRoZSBmbGFnIGlzIGNhbGxlZCAiLVdtYXliZS11
bmluaXRpYWxpemVkIi4KLS8vIE9uIGNsYW5nIGFuZCBnY2MgPCA0LjcsIHRoZSBmbGFnIGlzIGNh
bGxlZCAiLVd1bmluaXRpYWxpemVkIi4KLSNpZiAhZGVmaW5lZChfX2NsYW5nX18pICYmICgoX19H
TlVDX18gPT0gNCAmJiBfX0dOVV9DX01JTk9SX18gPj0gNykgfHwgX19HTlVDX18gPj0gNSkKKy8v
IFRyaWdnZXJlZCBieSB0aGUgYXV0by1nZW5lcmF0ZWQgcHBsdmFsIHZhcmlhYmxlLgorI2lmICFk
ZWZpbmVkKF9fY2xhbmdfXykgJiYgKChfX0dOVUNfXyA+IDQpIHx8IChfX0dOVUNfXyA9PSA0ICYm
IF9fR05VQ19NSU5PUl9fID49IDcpKQogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V21heWJlLXVuaW5pdGlhbGl6ZWQiCiAjZWxzZQogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25v
cmVkICItV3VuaW5pdGlhbGl6ZWQiCiAjZW5kaWYKLQogI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikK
ICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDY1IDQ3MDEpCiAjZW5kaWYKQEAgLTE2Myw2ICsx
MjksNyBAQCBzdGF0aWMgaW50IHl5bGV4KFlZU1RZUEUqIGx2YWxwLCBDb250ZXh0CiBzdGF0aWMg
dm9pZCB5eWVycm9yKENvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKIAor
CiAvKiBFbmFibGluZyB0cmFjZXMuICAqLwogI2lmbmRlZiBZWURFQlVHCiAjIGRlZmluZSBZWURF
QlVHIDAKQEAgLTE4MSwyMCArMTQ4LDM5IEBAIHN0YXRpYyB2b2lkIHl5ZXJyb3IoQ29udGV4dCog
Y29udGV4dCwgY28KICMgZGVmaW5lIFlZVE9LRU5fVEFCTEUgMAogI2VuZGlmCiAKKworLyogVG9r
ZW5zLiAgKi8KKyNpZm5kZWYgWVlUT0tFTlRZUEUKKyMgZGVmaW5lIFlZVE9LRU5UWVBFCisgICAv
KiBQdXQgdGhlIHRva2VucyBpbnRvIHRoZSBzeW1ib2wgdGFibGUsIHNvIHRoYXQgR0RCIGFuZCBv
dGhlciBkZWJ1Z2dlcnMKKyAgICAgIGtub3cgYWJvdXQgdGhlbS4gICovCisgICBlbnVtIHl5dG9r
ZW50eXBlIHsKKyAgICAgVE9LX0NPTlNUX0lOVCA9IDI1OCwKKyAgICAgVE9LX09QX09SID0gMjU5
LAorICAgICBUT0tfT1BfQU5EID0gMjYwLAorICAgICBUT0tfT1BfTkUgPSAyNjEsCisgICAgIFRP
S19PUF9FUSA9IDI2MiwKKyAgICAgVE9LX09QX0dFID0gMjYzLAorICAgICBUT0tfT1BfTEUgPSAy
NjQsCisgICAgIFRPS19PUF9SSUdIVCA9IDI2NSwKKyAgICAgVE9LX09QX0xFRlQgPSAyNjYsCisg
ICAgIFRPS19VTkFSWSA9IDI2NworICAgfTsKKyNlbmRpZgorCisKKwogI2lmICEgZGVmaW5lZCBZ
WVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBFX0lTX0RFQ0xBUkVECiB0eXBlZGVmIGludCBZWVNU
WVBFOworIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKICMgZGVmaW5lIHl5c3R5cGUgWVlT
VFlQRSAvKiBvYnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KICMgZGVmaW5lIFlZU1RZ
UEVfSVNfREVDTEFSRUQgMQotIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKICNlbmRpZgog
CiAKLQogLyogQ29weSB0aGUgc2Vjb25kIHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwog
CiAKLS8qIExpbmUgMjE2IG9mIHlhY2MuYy4gICovCi0KIAogI2lmZGVmIHNob3J0CiAjIHVuZGVm
IHNob3J0CkBAIC0yNDQsNyArMjMwLDcgQEAgdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDE2
OwogI2RlZmluZSBZWVNJWkVfTUFYSU1VTSAoKFlZU0laRV9UKSAtMSkKIAogI2lmbmRlZiBZWV8K
LSMgaWYgWVlFTkFCTEVfTkxTCisjIGlmIGRlZmluZWQgWVlFTkFCTEVfTkxTICYmIFlZRU5BQkxF
X05MUwogIyAgaWYgRU5BQkxFX05MUwogIyAgIGluY2x1ZGUgPGxpYmludGwuaD4gLyogSU5GUklO
R0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwogIyAgIGRlZmluZSBZWV8obXNnaWQpIGRnZXR0ZXh0
ICgiYmlzb24tcnVudGltZSIsIG1zZ2lkKQpAQCAtMjY5LDE0ICsyNTUsMTQgQEAgdHlwZWRlZiBz
aG9ydCBpbnQgeXl0eXBlX2ludDE2OwogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQg
X19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBf
TVNDX1ZFUikKIHN0YXRpYyBpbnQKLVlZSUQgKGludCBpKQorWVlJRCAoaW50IHl5aSkKICNlbHNl
CiBzdGF0aWMgaW50Ci1ZWUlEIChpKQotICAgIGludCBpOworWVlJRCAoeXlpKQorICAgIGludCB5
eWk7CiAjZW5kaWYKIHsKLSAgcmV0dXJuIGk7CisgIHJldHVybiB5eWk7CiB9CiAjZW5kaWYKIApA
QCAtMzU3LDkgKzM0Myw5IEBAIHZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklOR0VTIE9OIFVT
RVIKIC8qIEEgdHlwZSB0aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBzdGFjayBtZW1i
ZXIuICAqLwogdW5pb24geXlhbGxvYwogewotICB5eXR5cGVfaW50MTYgeXlzczsKLSAgWVlTVFlQ
RSB5eXZzOwotICB9OworICB5eXR5cGVfaW50MTYgeXlzc19hbGxvYzsKKyAgWVlTVFlQRSB5eXZz
X2FsbG9jOworfTsKIAogLyogVGhlIHNpemUgb2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25l
IGFsaWduZWQgc3RhY2sgYW5kIHRoZSBuZXh0LiAgKi8KICMgZGVmaW5lIFlZU1RBQ0tfR0FQX01B
WElNVU0gKHNpemVvZiAodW5pb24geXlhbGxvYykgLSAxKQpAQCAtMzkzLDEyICszNzksMTIgQEAg
dW5pb24geXlhbGxvYwogICAgZWxlbWVudHMgaW4gdGhlIHN0YWNrLCBhbmQgWVlQVFIgZ2l2ZXMg
dGhlIG5ldyBsb2NhdGlvbiBvZiB0aGUKICAgIHN0YWNrLiAgQWR2YW5jZSBZWVBUUiB0byBhIHBy
b3Blcmx5IGFsaWduZWQgbG9jYXRpb24gZm9yIHRoZSBuZXh0CiAgICBzdGFjay4gICovCi0jIGRl
ZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrKQkJCQkJXAorIyBkZWZpbmUgWVlTVEFDS19SRUxP
Q0FURShTdGFja19hbGxvYywgU3RhY2spCQkJCVwKICAgICBkbwkJCQkJCQkJCVwKICAgICAgIHsJ
CQkJCQkJCQlcCiAJWVlTSVpFX1QgeXluZXdieXRlczsJCQkJCQlcCi0JWVlDT1BZICgmeXlwdHIt
PlN0YWNrLCBTdGFjaywgeXlzaXplKTsJCQkJXAotCVN0YWNrID0gJnl5cHRyLT5TdGFjazsJCQkJ
CQlcCisJWVlDT1BZICgmeXlwdHItPlN0YWNrX2FsbG9jLCBTdGFjaywgeXlzaXplKTsJCQlcCisJ
U3RhY2sgPSAmeXlwdHItPlN0YWNrX2FsbG9jOwkJCQkJXAogCXl5bmV3Ynl0ZXMgPSB5eXN0YWNr
c2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZU1RBQ0tfR0FQX01BWElNVU07IFwKIAl5eXB0ciAr
PSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOwkJCQlcCiAgICAgICB9CQkJCQkJCQkJXApA
QCAtNDg3LDkgKzQ3Myw5IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eXJoc1tdID0KIC8q
IFlZUkxJTkVbWVlOXSAtLSBzb3VyY2UgbGluZSB3aGVyZSBydWxlIG51bWJlciBZWU4gd2FzIGRl
ZmluZWQuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXJsaW5lW10gPQogewotICAg
ICAgIDAsICAgIDk2LCAgICA5NiwgICAxMDMsICAgMTA0LCAgIDEwNywgICAxMTAsICAgMTEzLCAg
IDExNiwgICAxMTksCi0gICAgIDEyMiwgICAxMjUsICAgMTI4LCAgIDEzMSwgICAxMzQsICAgMTM3
LCAgIDE0MCwgICAxNDMsICAgMTQ2LCAgIDE0OSwKLSAgICAgMTYyLCAgIDE3NSwgICAxNzgsICAg
MTgxLCAgIDE4NCwgICAxODcsICAgMTkwCisgICAgICAgMCwgICAgOTAsICAgIDkwLCAgICA5Nywg
ICAgOTgsICAgMTAxLCAgIDEwNCwgICAxMDcsICAgMTEwLCAgIDExMywKKyAgICAgMTE2LCAgIDEx
OSwgICAxMjIsICAgMTI1LCAgIDEyOCwgICAxMzEsICAgMTM0LCAgIDEzNywgICAxNDAsICAgMTQz
LAorICAgICAxNTYsICAgMTY5LCAgIDE3MiwgICAxNzUsICAgMTc4LCAgIDE4MSwgICAxODQKIH07
CiAjZW5kaWYKIApAQCAtNjQ0LDkgKzYzMCwxOCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4
IHl5c3Rvc1tdID0KIAogLyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBjYWxsIHl5ZXJyb3IuICBU
aGlzIHJlbWFpbnMgaGVyZSB0ZW1wb3JhcmlseQogICAgdG8gZWFzZSB0aGUgdHJhbnNpdGlvbiB0
byB0aGUgbmV3IG1lYW5pbmcgb2YgWVlFUlJPUiwgZm9yIEdDQy4KLSAgIE9uY2UgR0NDIHZlcnNp
b24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgKi8KKyAgIE9uY2Ug
R0NDIHZlcnNpb24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgSG93
ZXZlciwKKyAgIFlZRkFJTCBhcHBlYXJzIHRvIGJlIGluIHVzZS4gIE5ldmVydGhlbGVzcywgaXQg
aXMgZm9ybWFsbHkgZGVwcmVjYXRlZAorICAgaW4gQmlzb24gMi40LjIncyBORVdTIGVudHJ5LCB3
aGVyZSBhIHBsYW4gdG8gcGhhc2UgaXQgb3V0IGlzCisgICBkaXNjdXNzZWQuICAqLwogCiAjZGVm
aW5lIFlZRkFJTAkJZ290byB5eWVycmxhYgorI2lmIGRlZmluZWQgWVlGQUlMCisgIC8qIFRoaXMg
aXMgaGVyZSB0byBzdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBHQ0MgY3BwJ3MKKyAgICAgLVd1
bnVzZWQtbWFjcm9zLiAgTm9ybWFsbHkgd2UgZG9uJ3Qgd29ycnkgYWJvdXQgdGhhdCB3YXJuaW5n
LCBidXQKKyAgICAgc29tZSB1c2VycyBkbywgYW5kIHdlIHdhbnQgdG8gbWFrZSBpdCBlYXN5IGZv
ciB1c2VycyB0byByZW1vdmUKKyAgICAgWVlGQUlMIHVzZXMsIHdoaWNoIHdpbGwgcHJvZHVjZSB3
YXJuaW5ncyBmcm9tIEJpc29uIDIuNS4gICovCisjZW5kaWYKIAogI2RlZmluZSBZWVJFQ09WRVJJ
TkcoKSAgKCEheXllcnJzdGF0dXMpCiAKQEAgLTcwMyw3ICs2OTgsNyBAQCB3aGlsZSAoWVlJRCAo
MCkpCiAgICB3ZSB3b24ndCBicmVhayB1c2VyIGNvZGU6IHdoZW4gdGhlc2UgYXJlIHRoZSBsb2Nh
dGlvbnMgd2Uga25vdy4gICovCiAKICNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKLSMgaWYgWVlM
VFlQRV9JU19UUklWSUFMCisjIGlmIGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZ
UEVfSVNfVFJJVklBTAogIyAgZGVmaW5lIFlZX0xPQ0FUSU9OX1BSSU5UKEZpbGUsIExvYykJCQlc
CiAgICAgIGZwcmludGYgKEZpbGUsICIlZC4lZC0lZC4lZCIsCQkJXAogCSAgICAgIChMb2MpLmZp
cnN0X2xpbmUsIChMb2MpLmZpcnN0X2NvbHVtbiwJXApAQCAtODE3LDE3ICs4MTIsMjAgQEAgeXlf
c3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbAogI2lmIChkZWZpbmVkIF9fU1RE
Q19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3Bs
dXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9zdGFja19wcmludCAoeXl0
eXBlX2ludDE2ICpib3R0b20sIHl5dHlwZV9pbnQxNiAqdG9wKQoreXlfc3RhY2tfcHJpbnQgKHl5
dHlwZV9pbnQxNiAqeXlib3R0b20sIHl5dHlwZV9pbnQxNiAqeXl0b3ApCiAjZWxzZQogc3RhdGlj
IHZvaWQKLXl5X3N0YWNrX3ByaW50IChib3R0b20sIHRvcCkKLSAgICB5eXR5cGVfaW50MTYgKmJv
dHRvbTsKLSAgICB5eXR5cGVfaW50MTYgKnRvcDsKK3l5X3N0YWNrX3ByaW50ICh5eWJvdHRvbSwg
eXl0b3ApCisgICAgeXl0eXBlX2ludDE2ICp5eWJvdHRvbTsKKyAgICB5eXR5cGVfaW50MTYgKnl5
dG9wOwogI2VuZGlmCiB7CiAgIFlZRlBSSU5URiAoc3RkZXJyLCAiU3RhY2sgbm93Iik7Ci0gIGZv
ciAoOyBib3R0b20gPD0gdG9wOyArK2JvdHRvbSkKLSAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAl
ZCIsICpib3R0b20pOworICBmb3IgKDsgeXlib3R0b20gPD0geXl0b3A7IHl5Ym90dG9tKyspCisg
ICAgeworICAgICAgaW50IHl5Ym90ID0gKnl5Ym90dG9tOworICAgICAgWVlGUFJJTlRGIChzdGRl
cnIsICIgJWQiLCB5eWJvdCk7CisgICAgfQogICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CiB9
CiAKQEAgLTg2MiwxMSArODYwLDExIEBAIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSwg
Y29udGV4dCkKICAgLyogVGhlIHN5bWJvbHMgYmVpbmcgcmVkdWNlZC4gICovCiAgIGZvciAoeXlp
ID0gMDsgeXlpIDwgeXlucmhzOyB5eWkrKykKICAgICB7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIs
ICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICAgJCVk
ID0gIiwgeXlpICsgMSk7CiAgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwgeXlyaHNbeXlw
cmhzW3l5cnVsZV0gKyB5eWldLAogCQkgICAgICAgJih5eXZzcFsoeXlpICsgMSkgLSAoeXlucmhz
KV0pCiAJCSAgICAgICAJCSAgICAgICAsIGNvbnRleHQpOwotICAgICAgZnByaW50ZiAoc3RkZXJy
LCAiXG4iKTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKICAgICB9CiB9CiAKQEAg
LTExNDgsMTAgKzExNDYsOCBAQCB5eWRlc3RydWN0ICh5eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwg
Y29uCiAJYnJlYWs7CiAgICAgfQogfQotDAogCiAvKiBQcmV2ZW50IHdhcm5pbmdzIGZyb20gLVdt
aXNzaW5nLXByb3RvdHlwZXMuICAqLwotCiAjaWZkZWYgWVlQQVJTRV9QQVJBTQogI2lmIGRlZmlu
ZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cwogaW50IHl5cGFyc2UgKHZvaWQgKllZ
UEFSU0VfUEFSQU0pOwpAQCAtMTE3MCwxMCArMTE2Niw5IEBAIGludCB5eXBhcnNlICgpOwogCiAK
IAotCi0vKi0tLS0tLS0tLS0uCi18IHl5cGFyc2UuICB8Ci1gLS0tLS0tLS0tLSovCisvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5cGFyc2Ugb3IgeXlwdXNoX3BhcnNlLiAgfAorYC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAjaWZkZWYgWVlQQVJTRV9QQVJBTQogI2lmIChk
ZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCkBAIC0xMTk3LDIyICsx
MTkyLDQ2IEBAIHl5cGFyc2UgKGNvbnRleHQpCiAjZW5kaWYKICNlbmRpZgogewotICAvKiBUaGUg
bG9vay1haGVhZCBzeW1ib2wuICAqLworLyogVGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLwogaW50
IHl5Y2hhcjsKIAotLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rLWFoZWFkIHN5bWJv
bC4gICovCisvKiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2thaGVhZCBzeW1ib2wuICAq
LwogWVlTVFlQRSB5eWx2YWw7CiAKLS8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4g
ICovCi1pbnQgeXluZXJyczsKKyAgICAvKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBzbyBmYXIu
ICAqLworICAgIGludCB5eW5lcnJzOworCisgICAgaW50IHl5c3RhdGU7CisgICAgLyogTnVtYmVy
IG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4gICovCisg
ICAgaW50IHl5ZXJyc3RhdHVzOworCisgICAgLyogVGhlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6
CisgICAgICAgYHl5c3MnOiByZWxhdGVkIHRvIHN0YXRlcy4KKyAgICAgICBgeXl2cyc6IHJlbGF0
ZWQgdG8gc2VtYW50aWMgdmFsdWVzLgorCisgICAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJ1
IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93CisgICAgICAgdG8gcmVhbGxv
Y2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisKKyAgICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLwor
ICAgIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07CisgICAgeXl0eXBlX2ludDE2ICp5
eXNzOworICAgIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAgICAvKiBUaGUgc2VtYW50aWMgdmFs
dWUgc3RhY2suICAqLworICAgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOworICAgIFlZU1RZ
UEUgKnl5dnM7CisgICAgWVlTVFlQRSAqeXl2c3A7CisKKyAgICBZWVNJWkVfVCB5eXN0YWNrc2l6
ZTsKIAotICBpbnQgeXlzdGF0ZTsKICAgaW50IHl5bjsKICAgaW50IHl5cmVzdWx0OwotICAvKiBO
dW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAg
Ki8KLSAgaW50IHl5ZXJyc3RhdHVzOwotICAvKiBMb29rLWFoZWFkIHRva2VuIGFzIGFuIGludGVy
bmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLwotICBpbnQgeXl0b2tlbiA9IDA7Cisg
IC8qIExvb2thaGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAodHJhbnNsYXRlZCkgdG9rZW4gbnVt
YmVyLiAgKi8KKyAgaW50IHl5dG9rZW47CisgIC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1
cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0aW9uIGZyb20gdGhlCisgICAgIGFjdGlvbiByb3V0
aW5lcy4gICovCisgIFlZU1RZUEUgeXl2YWw7CisKICNpZiBZWUVSUk9SX1ZFUkJPU0UKICAgLyog
QnVmZmVyIGZvciBlcnJvciBtZXNzYWdlcywgYW5kIGl0cyBhbGxvY2F0ZWQgc2l6ZS4gICovCiAg
IGNoYXIgeXltc2didWZbMTI4XTsKQEAgLTEyMjAsNTEgKzEyMzksMjggQEAgaW50IHl5bmVycnM7
CiAgIFlZU0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOwogI2VuZGlmCiAKLSAg
LyogVGhyZWUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKLSAgICAgYHl5c3MnOiByZWxhdGVkIHRv
IHN0YXRlcywKLSAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcywKLSAgICAg
YHl5bHMnOiByZWxhdGVkIHRvIGxvY2F0aW9ucy4KLQotICAgICBSZWZlciB0byB0aGUgc3RhY2tz
IHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKLSAgICAgdG8gcmVh
bGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCi0KLSAgLyogVGhlIHN0YXRlIHN0YWNrLiAgKi8K
LSAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKLSAgeXl0eXBlX2ludDE2ICp5eXNz
ID0geXlzc2E7Ci0gIHl5dHlwZV9pbnQxNiAqeXlzc3A7Ci0KLSAgLyogVGhlIHNlbWFudGljIHZh
bHVlIHN0YWNrLiAgKi8KLSAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07Ci0gIFlZU1RZUEUg
Knl5dnMgPSB5eXZzYTsKLSAgWVlTVFlQRSAqeXl2c3A7Ci0KLQotCiAjZGVmaW5lIFlZUE9QU1RB
Q0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTikpCiAKLSAgWVlTSVpFX1QgeXlzdGFj
a3NpemUgPSBZWUlOSVRERVBUSDsKLQotICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8gcmV0dXJu
IHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQotICAgICBhY3Rpb24gcm91dGlu
ZXMuICAqLwotICBZWVNUWVBFIHl5dmFsOwotCi0KICAgLyogVGhlIG51bWJlciBvZiBzeW1ib2xz
IG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVjZWQgcnVsZS4KICAgICAgS2VlcCB0byB6ZXJvIHdoZW4g
bm8gc3ltYm9sIHNob3VsZCBiZSBwb3BwZWQuICAqLwogICBpbnQgeXlsZW4gPSAwOwogCisgIHl5
dG9rZW4gPSAwOworICB5eXNzID0geXlzc2E7CisgIHl5dnMgPSB5eXZzYTsKKyAgeXlzdGFja3Np
emUgPSBZWUlOSVRERVBUSDsKKwogICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFydGluZyBwYXJz
ZVxuIikpOwogCiAgIHl5c3RhdGUgPSAwOwogICB5eWVycnN0YXR1cyA9IDA7CiAgIHl5bmVycnMg
PSAwOwotICB5eWNoYXIgPSBZWUVNUFRZOwkJLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAg
Ki8KKyAgeXljaGFyID0gWVlFTVBUWTsgLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAgKi8K
IAogICAvKiBJbml0aWFsaXplIHN0YWNrIHBvaW50ZXJzLgogICAgICBXYXN0ZSBvbmUgZWxlbWVu
dCBvZiB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2sKICAgICAgc28gdGhhdCB0aGV5IHN0YXkgb24g
dGhlIHNhbWUgbGV2ZWwgYXMgdGhlIHN0YXRlIHN0YWNrLgogICAgICBUaGUgd2FzdGVkIGVsZW1l
bnRzIGFyZSBuZXZlciBpbml0aWFsaXplZC4gICovCi0KICAgeXlzc3AgPSB5eXNzOwogICB5eXZz
cCA9IHl5dnM7CiAKQEAgLTEyOTQsNyArMTI5MCw2IEBAIGludCB5eW5lcnJzOwogCVlZU1RZUEUg
Knl5dnMxID0geXl2czsKIAl5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKIAotCiAJLyogRWFj
aCBzdGFjayBwb2ludGVyIGFkZHJlc3MgaXMgZm9sbG93ZWQgYnkgdGhlIHNpemUgb2YgdGhlCiAJ
ICAgZGF0YSBpbiB1c2UgaW4gdGhhdCBzdGFjaywgaW4gYnl0ZXMuICBUaGlzIHVzZWQgdG8gYmUg
YQogCSAgIGNvbmRpdGlvbmFsIGFyb3VuZCBqdXN0IHRoZSB0d28gZXh0cmEgYXJncywgYnV0IHRo
YXQgbWlnaHQKQEAgLTEzMDIsNyArMTI5Nyw2IEBAIGludCB5eW5lcnJzOwogCXl5b3ZlcmZsb3cg
KFlZXygibWVtb3J5IGV4aGF1c3RlZCIpLAogCQkgICAgJnl5c3MxLCB5eXNpemUgKiBzaXplb2Yg
KCp5eXNzcCksCiAJCSAgICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwKLQogCQkg
ICAgJnl5c3RhY2tzaXplKTsKIAogCXl5c3MgPSB5eXNzMTsKQEAgLTEzMjUsOSArMTMxOSw4IEBA
IGludCB5eW5lcnJzOwogCSAgKHVuaW9uIHl5YWxsb2MgKikgWVlTVEFDS19BTExPQyAoWVlTVEFD
S19CWVRFUyAoeXlzdGFja3NpemUpKTsKIAlpZiAoISB5eXB0cikKIAkgIGdvdG8geXlleGhhdXN0
ZWRsYWI7Ci0JWVlTVEFDS19SRUxPQ0FURSAoeXlzcyk7Ci0JWVlTVEFDS19SRUxPQ0FURSAoeXl2
cyk7Ci0KKwlZWVNUQUNLX1JFTE9DQVRFICh5eXNzX2FsbG9jLCB5eXNzKTsKKwlZWVNUQUNLX1JF
TE9DQVRFICh5eXZzX2FsbG9jLCB5eXZzKTsKICMgIHVuZGVmIFlZU1RBQ0tfUkVMT0NBVEUKIAlp
ZiAoeXlzczEgIT0geXlzc2EpCiAJICBZWVNUQUNLX0ZSRUUgKHl5c3MxKTsKQEAgLTEzMzgsNyAr
MTMzMSw2IEBAIGludCB5eW5lcnJzOwogICAgICAgeXlzc3AgPSB5eXNzICsgeXlzaXplIC0gMTsK
ICAgICAgIHl5dnNwID0geXl2cyArIHl5c2l6ZSAtIDE7CiAKLQogICAgICAgWVlEUFJJTlRGICgo
c3RkZXJyLCAiU3RhY2sgc2l6ZSBpbmNyZWFzZWQgdG8gJWx1XG4iLAogCQkgICh1bnNpZ25lZCBs
b25nIGludCkgeXlzdGFja3NpemUpKTsKIApAQCAtMTM0OCw2ICsxMzQwLDkgQEAgaW50IHl5bmVy
cnM7CiAKICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiRW50ZXJpbmcgc3RhdGUgJWRcbiIsIHl5c3Rh
dGUpKTsKIAorICBpZiAoeXlzdGF0ZSA9PSBZWUZJTkFMKQorICAgIFlZQUNDRVBUOworCiAgIGdv
dG8geXliYWNrdXA7CiAKIC8qLS0tLS0tLS0tLS0uCkBAIC0xMzU2LDE2ICsxMzUxLDE2IEBAIGlu
dCB5eW5lcnJzOwogeXliYWNrdXA6CiAKICAgLyogRG8gYXBwcm9wcmlhdGUgcHJvY2Vzc2luZyBn
aXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gIFJlYWQgYQotICAgICBsb29rLWFoZWFkIHRva2VuIGlm
IHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKyAgICAgbG9va2Fo
ZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8K
IAotICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZlcmVuY2Ug
dG8gbG9vay1haGVhZCB0b2tlbi4gICovCisgIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0
byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAqLwogICB5eW4gPSB5
eXBhY3RbeXlzdGF0ZV07CiAgIGlmICh5eW4gPT0gWVlQQUNUX05JTkYpCiAgICAgZ290byB5eWRl
ZmF1bHQ7CiAKLSAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2stYWhlYWQgdG9rZW4gaWYgZG9u
J3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisgIC8qIE5vdCBrbm93biA9PiBnZXQgYSBsb29rYWhl
YWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCiAKLSAgLyogWVlDSEFSIGlz
IGVpdGhlciBZWUVNUFRZIG9yIFlZRU9GIG9yIGEgdmFsaWQgbG9vay1haGVhZCBzeW1ib2wuICAq
LworICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29r
YWhlYWQgc3ltYm9sLiAgKi8KICAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKQogICAgIHsKICAgICAg
IFlZRFBSSU5URiAoKHN0ZGVyciwgIlJlYWRpbmcgYSB0b2tlbjogIikpOwpAQCAtMTM5NywyMCAr
MTM5MiwxNiBAQCB5eWJhY2t1cDoKICAgICAgIGdvdG8geXlyZWR1Y2U7CiAgICAgfQogCi0gIGlm
ICh5eW4gPT0gWVlGSU5BTCkKLSAgICBZWUFDQ0VQVDsKLQogICAvKiBDb3VudCB0b2tlbnMgc2hp
ZnRlZCBzaW5jZSBlcnJvcjsgYWZ0ZXIgdGhyZWUsIHR1cm4gb2ZmIGVycm9yCiAgICAgIHN0YXR1
cy4gICovCiAgIGlmICh5eWVycnN0YXR1cykKICAgICB5eWVycnN0YXR1cy0tOwogCi0gIC8qIFNo
aWZ0IHRoZSBsb29rLWFoZWFkIHRva2VuLiAgKi8KKyAgLyogU2hpZnQgdGhlIGxvb2thaGVhZCB0
b2tlbi4gICovCiAgIFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXl0b2tlbiwgJnl5bHZh
bCwgJnl5bGxvYyk7CiAKLSAgLyogRGlzY2FyZCB0aGUgc2hpZnRlZCB0b2tlbiB1bmxlc3MgaXQg
aXMgZW9mLiAgKi8KLSAgaWYgKHl5Y2hhciAhPSBZWUVPRikKLSAgICB5eWNoYXIgPSBZWUVNUFRZ
OworICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuLiAgKi8KKyAgeXljaGFyID0gWVlFTVBU
WTsKIAogICB5eXN0YXRlID0geXluOwogICAqKyt5eXZzcCA9IHl5bHZhbDsKQEAgLTE0NTQsMTEy
ICsxNDQ1LDExMiBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICooY29udGV4dC0+cmVzdWx0
KSA9IHN0YXRpY19jYXN0PGludD4oKHl5dnNwWygxKSAtICgxKV0pKTsKICAgICAgICAgWVlBQ0NF
UFQ7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIHx8ICh5eXZzcFsoMykgLSAoMyldKTsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDU6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgJiYgKHl5dnNwWygzKSAtICgzKV0pOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSB8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkg
PSAoeXl2c3BbKDEpIC0gKDMpXSkgXiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5
dnNwWygxKSAtICgzKV0pICYgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgOToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFso
MSkgLSAoMyldKSAhPSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkg
LSAoMyldKSA9PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxMToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAo
MyldKSA+PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyld
KSA8PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA+
ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDE0OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIDwgKHl5
dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTU6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPj4gKHl5dnNw
WygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPDwgKHl5dnNwWygz
KSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgLSAoeXl2c3BbKDMpIC0g
KDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSArICh5eXZzcFsoMykgLSAoMyld
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5OgpAQCAtMTU3Niw3ICsx
NTY3LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAoeXl2YWwp
ID0gKHl5dnNwWygxKSAtICgzKV0pICUgKHl5dnNwWygzKSAtICgzKV0pOwogICAgICAgICB9Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMDoKQEAgLTE1OTMsNTMgKzE1ODQs
NTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAoeXl2YWwpID0g
KHl5dnNwWygxKSAtICgzKV0pIC8gKHl5dnNwWygzKSAtICgzKV0pOwogICAgICAgICB9Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMToKIAogICAgIHsKICAgICAgICAgKHl5
dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAqICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIyOgogCiAgICAgewogICAgICAgICAoeXl2YWwp
ID0gISAoeXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAyMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9IH4gKHl5dnNwWygyKSAtICgyKV0p
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjQ6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbCkgPSAtICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDI1OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKyAoeXl2c3Bb
KDIpIC0gKDIpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNjoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMikgLSAoMyldKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogCi0vKiBMaW5lIDEyNjcgb2YgeWFjYy5jLiAgKi8KIAogICAgICAg
ZGVmYXVsdDogYnJlYWs7CiAgICAgfQpAQCAtMTY1MSw3ICsxNjQxLDYgQEAgeXlyZWR1Y2U6CiAK
ICAgKisreXl2c3AgPSB5eXZhbDsKIAotCiAgIC8qIE5vdyBgc2hpZnQnIHRoZSByZXN1bHQgb2Yg
dGhlIHJlZHVjdGlvbi4gIERldGVybWluZSB3aGF0IHN0YXRlCiAgICAgIHRoYXQgZ29lcyB0bywg
YmFzZWQgb24gdGhlIHN0YXRlIHdlIHBvcHBlZCBiYWNrIHRvIGFuZCB0aGUgcnVsZQogICAgICBu
dW1iZXIgcmVkdWNlZCBieS4gICovCkBAIC0xNzE2LDcgKzE3MDUsNyBAQCB5eWVycmxhYjoKIAog
ICBpZiAoeXllcnJzdGF0dXMgPT0gMykKICAgICB7Ci0gICAgICAvKiBJZiBqdXN0IHRyaWVkIGFu
ZCBmYWlsZWQgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBhbgorICAgICAgLyogSWYg
anVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBhbgog
CSBlcnJvciwgZGlzY2FyZCBpdC4gICovCiAKICAgICAgIGlmICh5eWNoYXIgPD0gWVlFT0YpCkBA
IC0xNzMzLDcgKzE3MjIsNyBAQCB5eWVycmxhYjoKIAl9CiAgICAgfQogCi0gIC8qIEVsc2Ugd2ls
bCB0cnkgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IK
KyAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgc2hpZnRp
bmcgdGhlIGVycm9yCiAgICAgIHRva2VuLiAgKi8KICAgZ290byB5eWVycmxhYjE7CiAKQEAgLTE3
OTAsOSArMTc3OSw2IEBAIHl5ZXJybGFiMToKICAgICAgIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5
eXNzcCk7CiAgICAgfQogCi0gIGlmICh5eW4gPT0gWVlGSU5BTCkKLSAgICBZWUFDQ0VQVDsKLQog
ICAqKyt5eXZzcCA9IHl5bHZhbDsKIAogCkBAIC0xODE3LDcgKzE4MDMsNyBAQCB5eWFib3J0bGFi
OgogICB5eXJlc3VsdCA9IDE7CiAgIGdvdG8geXlyZXR1cm47CiAKLSNpZm5kZWYgeXlvdmVyZmxv
dworI2lmICFkZWZpbmVkKHl5b3ZlcmZsb3cpIHx8IFlZRVJST1JfVkVSQk9TRQogLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCB5eWV4aGF1c3Rl
ZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTgyOCw3ICsxODE0LDcg
QEAgeXlleGhhdXN0ZWRsYWI6CiAjZW5kaWYKIAogeXlyZXR1cm46Ci0gIGlmICh5eWNoYXIgIT0g
WVlFT0YgJiYgeXljaGFyICE9IFlZRU1QVFkpCisgIGlmICh5eWNoYXIgIT0gWVlFTVBUWSkKICAg
ICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKIAkJIHl5dG9r
ZW4sICZ5eWx2YWwsIGNvbnRleHQpOwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBv
ZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIueQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL0V4cHJlc3Npb25QYXJzZXIueQkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLnkJ
KHdvcmtpbmcgY29weSkKQEAgLTIwLDE4ICsyMCwxMyBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdM
U0wgRVMgcHJlcHJvY2Vzc29yCiAKIC8vIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBn
ZW5lcmF0ZV9wYXJzZXIuc2guIERPIE5PVCBFRElUIQogCi0vLyBJZiBjbGFuZyBvciBnY2MuCiAj
aWYgZGVmaW5lZChfX0dOVUNfXykKLQotLy8gVHVybiBvZmYgdW5pbml0aWFsaXplZCB2YXJpYWJs
ZSB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIGF1dG8tZ2VuZXJhdGVkIHBwbHZhbCB2YXJpYWJs
ZS4KLS8vIE9uIGdjYyA0LjcrLCBUaGUgZmxhZyBpcyBjYWxsZWQgIi1XbWF5YmUtdW5pbml0aWFs
aXplZCIuCi0vLyBPbiBjbGFuZyBhbmQgZ2NjIDwgNC43LCB0aGUgZmxhZyBpcyBjYWxsZWQgIi1X
dW5pbml0aWFsaXplZCIuCi0jaWYgIWRlZmluZWQoX19jbGFuZ19fKSAmJiAoKF9fR05VQ19fID09
IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNykgfHwgX19HTlVDX18gPj0gNSkKKy8vIFRyaWdnZXJl
ZCBieSB0aGUgYXV0by1nZW5lcmF0ZWQgcHBsdmFsIHZhcmlhYmxlLgorI2lmICFkZWZpbmVkKF9f
Y2xhbmdfXykgJiYgKChfX0dOVUNfXyA+IDQpIHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19N
SU5PUl9fID49IDcpKQogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV21heWJlLXVu
aW5pdGlhbGl6ZWQiCiAjZWxzZQogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vu
aW5pdGlhbGl6ZWQiCiAjZW5kaWYKLQogI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKICNwcmFnbWEg
d2FybmluZyhkaXNhYmxlOiA0MDY1IDQ3MDEpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5w
dXQuY3BwCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcsMzIg
KzE3LDI0IEBAIElucHV0OjpJbnB1dCgpIDogbUNvdW50KDApLCBtU3RyaW5nKDApCiB7CiB9CiAK
LUlucHV0OjpJbnB1dChpbnQgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25z
dCBpbnQgbGVuZ3RoW10pIDoKK0lucHV0OjpJbnB1dChzaXplX3QgY291bnQsIGNvbnN0IGNoYXIq
IGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pIDoKICAgICBtQ291bnQoY291bnQp
LAogICAgIG1TdHJpbmcoc3RyaW5nKQogewotICAgIGFzc2VydChtQ291bnQgPj0gMCk7CiAgICAg
bUxlbmd0aC5yZXNlcnZlKG1Db3VudCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtQ291bnQ7
ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Db3VudDsgKytpKQogICAgIHsKICAg
ICAgICAgaW50IGxlbiA9IGxlbmd0aCA/IGxlbmd0aFtpXSA6IC0xOwotI2lmIGRlZmluZWQoX19j
bGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV3Nob3J0ZW4tNjQtdG8tMzIiCi0jZW5kaWYKICAgICAgICAgbUxl
bmd0aC5wdXNoX2JhY2sobGVuIDwgMCA/IHN0ZDo6c3RybGVuKG1TdHJpbmdbaV0pIDogbGVuKTsK
LSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNl
bmRpZgogICAgIH0KIH0KIAotaW50IElucHV0OjpyZWFkKGNoYXIqIGJ1ZiwgaW50IG1heFNpemUp
CitzaXplX3QgSW5wdXQ6OnJlYWQoY2hhciogYnVmLCBzaXplX3QgbWF4U2l6ZSkKIHsKLSAgICBp
bnQgblJlYWQgPSAwOworICAgIHNpemVfdCBuUmVhZCA9IDA7CiAgICAgd2hpbGUgKChuUmVhZCA8
IG1heFNpemUpICYmIChtUmVhZExvYy5zSW5kZXggPCBtQ291bnQpKQogICAgIHsKLSAgICAgICAg
aW50IHNpemUgPSBtTGVuZ3RoW21SZWFkTG9jLnNJbmRleF0gLSBtUmVhZExvYy5jSW5kZXg7Cisg
ICAgICAgIHNpemVfdCBzaXplID0gbUxlbmd0aFttUmVhZExvYy5zSW5kZXhdIC0gbVJlYWRMb2Mu
Y0luZGV4OwogICAgICAgICBzaXplID0gc3RkOjptaW4oc2l6ZSwgbWF4U2l6ZSk7CiAgICAgICAg
IHN0ZDo6bWVtY3B5KGJ1ZiArIG5SZWFkLCBtU3RyaW5nW21SZWFkTG9jLnNJbmRleF0gKyBtUmVh
ZExvYy5jSW5kZXgsIHNpemUpOwogICAgICAgICBuUmVhZCArPSBzaXplOwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvSW5wdXQuaAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDYg
KzcsNyBAQAogI2lmbmRlZiBDT01QSUxFUl9QUkVQUk9DRVNTT1JfSU5QVVRfSF8KICNkZWZpbmUg
Q09NUElMRVJfUFJFUFJPQ0VTU09SX0lOUFVUX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNp
bmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFjZSBwcApAQCAtMTcsMTggKzE4LDE4IEBAIGNsYXNz
IElucHV0CiB7CiAgIHB1YmxpYzoKICAgICBJbnB1dCgpOwotICAgIElucHV0KGludCBjb3VudCwg
Y29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSk7CisgICAgSW5w
dXQoc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxl
bmd0aFtdKTsKIAotICAgIGludCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1Db3VudDsgfQotICAg
IGNvbnN0IGNoYXIqIHN0cmluZyhpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1TdHJpbmdbaW5k
ZXhdOyB9Ci0gICAgaW50IGxlbmd0aChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1MZW5ndGhb
aW5kZXhdOyB9CisgICAgc2l6ZV90IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbUNvdW50OyB9Cisg
ICAgY29uc3QgY2hhciogc3RyaW5nKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbVN0cmlu
Z1tpbmRleF07IH0KKyAgICBzaXplX3QgbGVuZ3RoKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1
cm4gbUxlbmd0aFtpbmRleF07IH0KIAotICAgIGludCByZWFkKGNoYXIqIGJ1ZiwgaW50IG1heFNp
emUpOworICAgIHNpemVfdCByZWFkKGNoYXIqIGJ1Ziwgc2l6ZV90IG1heFNpemUpOwogCiAgICAg
c3RydWN0IExvY2F0aW9uCiAgICAgewotICAgICAgICBpbnQgc0luZGV4OyAgLy8gU3RyaW5nIGlu
ZGV4OwotICAgICAgICBpbnQgY0luZGV4OyAgLy8gQ2hhciBpbmRleC4KKyAgICAgICAgc2l6ZV90
IHNJbmRleDsgIC8vIFN0cmluZyBpbmRleDsKKyAgICAgICAgc2l6ZV90IGNJbmRleDsgIC8vIENo
YXIgaW5kZXguCiAKICAgICAgICAgTG9jYXRpb24oKSA6IHNJbmRleCgwKSwgY0luZGV4KDApIHsg
fQogICAgIH07CkBAIC0zNiw5ICszNyw5IEBAIGNsYXNzIElucHV0CiAKICAgcHJpdmF0ZToKICAg
ICAvLyBJbnB1dC4KLSAgICBpbnQgbUNvdW50OworICAgIHNpemVfdCBtQ291bnQ7CiAgICAgY29u
c3QgY2hhciogY29uc3QqIG1TdHJpbmc7Ci0gICAgc3RkOjp2ZWN0b3I8aW50PiBtTGVuZ3RoOwor
ICAgIHN0ZDo6dmVjdG9yPHNpemVfdD4gbUxlbmd0aDsKIAogICAgIExvY2F0aW9uIG1SZWFkTG9j
OwogfTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvUHJlcHJvY2Vzc29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5jcHAJKHJldmlzaW9u
IDE0MzY1NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvUHJlcHJvY2Vzc29yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBQ
cmVwcm9jZXNzb3I6On5QcmVwcm9jZXNzb3IoKQogICAgIGRlbGV0ZSBtSW1wbDsKIH0KIAotYm9v
bCBQcmVwcm9jZXNzb3I6OmluaXQoaW50IGNvdW50LAorYm9vbCBQcmVwcm9jZXNzb3I6OmluaXQo
c2l6ZV90IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY29uc3Qg
c3RyaW5nW10sCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGVuZ3RoW10pCiB7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L1ByZXByb2Nlc3Nvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmgJKHJldmlzaW9uIDE0MzY1NCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJl
cHJvY2Vzc29yLmgJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw4IEBACiAjaWZuZGVmIENPTVBJ
TEVSX1BSRVBST0NFU1NPUl9QUkVQUk9DRVNTT1JfSF8KICNkZWZpbmUgQ09NUElMRVJfUFJFUFJP
Q0VTU09SX1BSRVBST0NFU1NPUl9IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNpbmNsdWRl
ICJwcF91dGlscy5oIgogCiBuYW1lc3BhY2UgcHAKQEAgLTMyLDcgKzM0LDcgQEAgY2xhc3MgUHJl
cHJvY2Vzc29yCiAgICAgLy8gRWFjaCBlbGVtZW50IGluIHRoZSBsZW5ndGggYXJyYXkgbWF5IGNv
bnRhaW4gdGhlIGxlbmd0aCBvZiB0aGUKICAgICAvLyBjb3JyZXNwb25kaW5nIHN0cmluZyBvciBh
IHZhbHVlIGxlc3MgdGhhbiAwIHRvIGluZGljYXRlIHRoYXQgdGhlIHN0cmluZwogICAgIC8vIGlz
IG51bGwgdGVybWluYXRlZC4KLSAgICBib29sIGluaXQoaW50IGNvdW50LCBjb25zdCBjaGFyKiBj
b25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdKTsKKyAgICBib29sIGluaXQoc2l6ZV90
IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdKTsK
ICAgICAvLyBBZGRzIGEgcHJlLWRlZmluZWQgbWFjcm8uCiAgICAgdm9pZCBwcmVkZWZpbmVNYWNy
byhjb25zdCBjaGFyKiBuYW1lLCBpbnQgdmFsdWUpOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9U
b2tlbml6ZXIuY3BwCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyMCw5ICs1MjAsNiBAQCBJRiBZT1UgTU9ESUZZIFRISVMgRklMRSBZT1UgQUxTTyBORUVE
IFRPCiAjaW5jbHVkZSAiRGlhZ25vc3RpY3NCYXNlLmgiCiAjaW5jbHVkZSAiVG9rZW4uaCIKIAot
I2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1Xc2hvcnRlbi02NC10by0zMiIKLSNlbmRpZgogI2lmIGRlZmluZWQoX19HTlVDX18pCiAvLyBU
cmlnZ2VyZWQgYnkgdGhlIGF1dG8tZ2VuZXJhdGVkIHl5X2ZhdGFsX2Vycm9yIGZ1bmN0aW9uLgog
I3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1cm4iCkBAIC0x
MTIyLDEzICsxMTE5LDE0IEBAIGNhc2UgWVlfU1RBVEVfRU9GKENPTU1FTlQpOgogICAgIC8vIFNl
dCB0aGUgbG9jYXRpb24gZm9yIEVPRiB0b2tlbiBtYW51YWxseS4KICAgICBwcDo6SW5wdXQqIGlu
cHV0ID0gJnl5ZXh0cmEtPmlucHV0OwogICAgIHBwOjpJbnB1dDo6TG9jYXRpb24qIHNjYW5Mb2Mg
PSAmeXlleHRyYS0+c2NhbkxvYzsKLSAgICBpbnQgc0luZGV4TWF4ID0gc3RkOjptYXgoMCwgaW5w
dXQtPmNvdW50KCkgLSAxKTsKKyAgICB5eV9zaXplX3Qgc0luZGV4TWF4ID0gaW5wdXQtPmNvdW50
KCkgPyBpbnB1dC0+Y291bnQoKSAtIDEgOiAwOwogICAgIGlmIChzY2FuTG9jLT5zSW5kZXggIT0g
c0luZGV4TWF4KQogICAgIHsKICAgICAgICAgLy8gV2UgY2FuIG9ubHkgcmVhY2ggaGVyZSBpZiB0
aGVyZSBhcmUgZW1wdHkgc3RyaW5ncyBhdCB0aGUKICAgICAgICAgLy8gZW5kIG9mIHRoZSBpbnB1
dC4KICAgICAgICAgc2NhbkxvYy0+c0luZGV4ID0gc0luZGV4TWF4OyBzY2FuTG9jLT5jSW5kZXgg
PSAwOwotICAgICAgICB5eWZpbGVubyA9IHNJbmRleE1heDsgeXlsaW5lbm8gPSAxOworICAgICAg
ICAvLyBGSVhNRTogdGhpcyBpcyBub3QgNjQtYml0IGNsZWFuLgorICAgICAgICB5eWZpbGVubyA9
IHN0YXRpY19jYXN0PGludD4oc0luZGV4TWF4KTsgeXlsaW5lbm8gPSAxOwogICAgIH0KICAgICB5
eWxsb2MtPmZpbGUgPSB5eWZpbGVubzsKICAgICB5eWxsb2MtPmxpbmUgPSB5eWxpbmVubzsKQEAg
LTIyOTcsOSArMjI5NSw4IEBAIFRva2VuaXplcjo6flRva2VuaXplcigpCiAgICAgZGVzdHJveVNj
YW5uZXIoKTsKIH0KIAotYm9vbCBUb2tlbml6ZXI6OmluaXQoaW50IGNvdW50LCBjb25zdCBjaGFy
KiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdKQorYm9vbCBUb2tlbml6ZXI6Omlu
aXQoc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxl
bmd0aFtdKQogewotICAgIGlmIChjb3VudCA8IDApIHJldHVybiBmYWxzZTsKICAgICBpZiAoKGNv
dW50ID4gMCkgJiYgKHN0cmluZyA9PSAwKSkgcmV0dXJuIGZhbHNlOwogCiAgICAgbUNvbnRleHQu
aW5wdXQgPSBJbnB1dChjb3VudCwgc3RyaW5nLCBsZW5ndGgpOwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L1Rva2VuaXplci5oCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIGNsYXNzIFRva2VuaXplciA6IHB1YmxpYyBMZXhlcgogICAgIFRva2Vu
aXplcihEaWFnbm9zdGljcyogZGlhZ25vc3RpY3MpOwogICAgIH5Ub2tlbml6ZXIoKTsKIAotICAg
IGJvb2wgaW5pdChpbnQgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBp
bnQgbGVuZ3RoW10pOworICAgIGJvb2wgaW5pdChzaXplX3QgY291bnQsIGNvbnN0IGNoYXIqIGNv
bnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pOwogCiAgICAgdm9pZCBzZXRGaWxlTnVt
YmVyKGludCBmaWxlKTsKICAgICB2b2lkIHNldExpbmVOdW1iZXIoaW50IGxpbmUpOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6
ZXIubAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1Rva2VuaXplci5sCShyZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw2IEBAIElGIFlPVSBNT0RJRlkgVEhJUyBGSUxFIFlPVSBB
TFNPIE5FRUQgVE8KICNpbmNsdWRlICJEaWFnbm9zdGljc0Jhc2UuaCIKICNpbmNsdWRlICJUb2tl
bi5oIgogCi0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdzaG9ydGVuLTY0LXRvLTMyIgotI2VuZGlmCiAjaWYgZGVmaW5lZChfX0dOVUNf
XykKIC8vIFRyaWdnZXJlZCBieSB0aGUgYXV0by1nZW5lcmF0ZWQgeXlfZmF0YWxfZXJyb3IgZnVu
Y3Rpb24uCiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1ub3JldHVy
biIKQEAgLTI0MiwxMyArMjM5LDE0IEBAIEZSQUNUSU9OQUxfQ09OU1RBTlQgICh7RElHSVR9KiIu
IntESUdJVH0KICAgICAvLyBTZXQgdGhlIGxvY2F0aW9uIGZvciBFT0YgdG9rZW4gbWFudWFsbHku
CiAgICAgcHA6OklucHV0KiBpbnB1dCA9ICZ5eWV4dHJhLT5pbnB1dDsKICAgICBwcDo6SW5wdXQ6
OkxvY2F0aW9uKiBzY2FuTG9jID0gJnl5ZXh0cmEtPnNjYW5Mb2M7Ci0gICAgaW50IHNJbmRleE1h
eCA9IHN0ZDo6bWF4KDAsIGlucHV0LT5jb3VudCgpIC0gMSk7CisgICAgeXlfc2l6ZV90IHNJbmRl
eE1heCA9IGlucHV0LT5jb3VudCgpID8gaW5wdXQtPmNvdW50KCkgLSAxIDogMDsKICAgICBpZiAo
c2NhbkxvYy0+c0luZGV4ICE9IHNJbmRleE1heCkKICAgICB7CiAgICAgICAgIC8vIFdlIGNhbiBv
bmx5IHJlYWNoIGhlcmUgaWYgdGhlcmUgYXJlIGVtcHR5IHN0cmluZ3MgYXQgdGhlCiAgICAgICAg
IC8vIGVuZCBvZiB0aGUgaW5wdXQuCiAgICAgICAgIHNjYW5Mb2MtPnNJbmRleCA9IHNJbmRleE1h
eDsgc2NhbkxvYy0+Y0luZGV4ID0gMDsKLSAgICAgICAgeXlmaWxlbm8gPSBzSW5kZXhNYXg7IHl5
bGluZW5vID0gMTsKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgaXMgbm90IDY0LWJpdCBjbGVhbi4K
KyAgICAgICAgeXlmaWxlbm8gPSBzdGF0aWNfY2FzdDxpbnQ+KHNJbmRleE1heCk7IHl5bGluZW5v
ID0gMTsKICAgICB9CiAgICAgeXlsbG9jLT5maWxlID0geXlmaWxlbm87CiAgICAgeXlsbG9jLT5s
aW5lID0geXlsaW5lbm87CkBAIC0yODEsOSArMjc5LDggQEAgVG9rZW5pemVyOjp+VG9rZW5pemVy
KCkKICAgICBkZXN0cm95U2Nhbm5lcigpOwogfQogCi1ib29sIFRva2VuaXplcjo6aW5pdChpbnQg
Y291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pCiti
b29sIFRva2VuaXplcjo6aW5pdChzaXplX3QgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmlu
Z1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pCiB7Ci0gICAgaWYgKGNvdW50IDwgMCkgcmV0dXJuIGZh
bHNlOwogICAgIGlmICgoY291bnQgPiAwKSAmJiAoc3RyaW5nID09IDApKSByZXR1cm4gZmFsc2U7
CiAKICAgICBtQ29udGV4dC5pbnB1dCA9IElucHV0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCk7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJy
YXlCb3VuZHNDbGFtcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxl
ci9BcnJheUJvdW5kc0NsYW1wZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
InRoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oIgorCisvLyBUaGUgYnVp
bHQtaW4gJ2NsYW1wJyBpbnN0cnVjdGlvbiBvbmx5IGFjY2VwdHMgZmxvYXRzIGFuZCByZXR1cm5z
IGEgZmxvYXQuICBJCisvLyBpdGVyYXRlZCBhIGZldyB0aW1lcyB3aXRoIG91ciBkcml2ZXIgdGVh
bSB3aG8gZXhhbWluZWQgdGhlIG91dHB1dCBmcm9tIG91cgorLy8gY29tcGlsZXIgLSB0aGV5IHNh
aWQgdGhlIG11bHRpcGxlIGNhc3RzIGdlbmVyYXRlcyBtb3JlIGNvZGUgdGhhbiBhIHNpbmdsZQor
Ly8gZnVuY3Rpb24gY2FsbC4gIEFuIGlubGluZSB0ZXJuYXJ5IG9wZXJhdG9yIG1pZ2h0IGhhdmUg
YmVlbiBiZXR0ZXIsIGJ1dCBzaW5jZQorLy8gdGhlIGluZGV4IHZhbHVlIG1pZ2h0IGJlIGFuIGV4
cHJlc3Npb24gaXRzZWxmLCB3ZSdkIGhhdmUgdG8gbWFrZSB0ZW1wb3JhcnkKKy8vIHZhcmlhYmxl
cyB0byBhdm9pZCBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9uIG11bHRpcGxlIHRpbWVzLiAgQW5k
IG1ha2luZworLy8gdGVtcG9yYXJ5IHZhcmlhYmxlcyB3YXMgZGlmZmljdWx0IGJlY2F1c2UgQU5H
TEUgd291bGQgdGhlbiBuZWVkIHRvIG1ha2UgbW9yZQorLy8gYnJ1dGFsIGNoYW5nZXMgdG8gdGhl
IGV4cHJlc3Npb24gdHJlZS4KKworY29uc3QgY2hhcioga0ludENsYW1wQmVnaW4gPSAiLy8gQkVH
SU46IEdlbmVyYXRlZCBjb2RlIGZvciBhcnJheSBib3VuZHMgY2xhbXBpbmdcblxuIjsKK2NvbnN0
IGNoYXIqIGtJbnRDbGFtcEVuZCA9ICIvLyBFTkQ6IEdlbmVyYXRlZCBjb2RlIGZvciBhcnJheSBi
b3VuZHMgY2xhbXBpbmdcblxuIjsKK2NvbnN0IGNoYXIqIGtJbnRDbGFtcERlZmluaXRpb24gPSAi
aW50IHdlYmdsX2ludF9jbGFtcChpbnQgdmFsdWUsIGludCBtaW5WYWx1ZSwgaW50IG1heFZhbHVl
KSB7IHJldHVybiAoKHZhbHVlIDwgbWluVmFsdWUpID8gbWluVmFsdWUgOiAoKHZhbHVlID4gbWF4
VmFsdWUpID8gbWF4VmFsdWUgOiB2YWx1ZSkpOyB9XG5cbiI7CisKK25hbWVzcGFjZSB7CisKK2Ns
YXNzIEFycmF5Qm91bmRzQ2xhbXBlck1hcmtlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyIHsK
K3B1YmxpYzoKKyAgICBBcnJheUJvdW5kc0NsYW1wZXJNYXJrZXIoKQorICAgICAgICA6IG1OZWVk
c0NsYW1wKGZhbHNlKQorICAgeworICAgfQorCisgICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnko
VmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkqIG5vZGUpCisgICB7CisgICAgICAgaWYgKG5vZGUt
PmdldE9wKCkgPT0gRU9wSW5kZXhJbmRpcmVjdCkKKyAgICAgICB7CisgICAgICAgICAgIFRJbnRl
cm1UeXBlZCogbGVmdCA9IG5vZGUtPmdldExlZnQoKTsKKyAgICAgICAgICAgaWYgKGxlZnQtPmlz
QXJyYXkoKSB8fCBsZWZ0LT5pc1ZlY3RvcigpIHx8IGxlZnQtPmlzTWF0cml4KCkpCisgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgIG5vZGUtPnNldEFkZEluZGV4Q2xhbXAoKTsKKyAgICAgICAg
ICAgICAgIG1OZWVkc0NsYW1wID0gdHJ1ZTsKKyAgICAgICAgICAgfQorICAgICAgIH0KKyAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgIH0KKworICAgIGJvb2wgR2V0TmVlZHNDbGFtcCgpIHsgcmV0dXJu
IG1OZWVkc0NsYW1wOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtTmVlZHNDbGFtcDsKK307CisK
K30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworQXJyYXlCb3VuZHNDbGFtcGVyOjpBcnJheUJv
dW5kc0NsYW1wZXIoKQorICAgIDogbUNsYW1waW5nU3RyYXRlZ3koU0hfQ0xBTVBfV0lUSF9DTEFN
UF9JTlRSSU5TSUMpCisgICAgLCBtQXJyYXlCb3VuZHNDbGFtcERlZmluaXRpb25OZWVkZWQoZmFs
c2UpCit7Cit9CisKK3ZvaWQgQXJyYXlCb3VuZHNDbGFtcGVyOjpTZXRDbGFtcGluZ1N0cmF0ZWd5
KFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgY2xhbXBpbmdTdHJhdGVneSkKK3sKKyAgICBt
Q2xhbXBpbmdTdHJhdGVneSA9IGNsYW1waW5nU3RyYXRlZ3k7Cit9CisKK3ZvaWQgQXJyYXlCb3Vu
ZHNDbGFtcGVyOjpNYXJrSW5kaXJlY3RBcnJheUJvdW5kc0ZvckNsYW1waW5nKFRJbnRlcm1Ob2Rl
KiByb290KQoreworICAgIEFTU0VSVChyb290KTsKKworICAgIEFycmF5Qm91bmRzQ2xhbXBlck1h
cmtlciBjbGFtcGVyOworICAgIHJvb3QtPnRyYXZlcnNlKCZjbGFtcGVyKTsKKyAgICBpZiAoY2xh
bXBlci5HZXROZWVkc0NsYW1wKCkpCisgICAgeworICAgICAgICBTZXRBcnJheUJvdW5kc0NsYW1w
RGVmaW5pdGlvbk5lZWRlZCgpOworICAgIH0KK30KKwordm9pZCBBcnJheUJvdW5kc0NsYW1wZXI6
Ok91dHB1dENsYW1waW5nRnVuY3Rpb25EZWZpbml0aW9uKFRJbmZvU2lua0Jhc2UmIG91dCkgY29u
c3QKK3sKKyAgICBpZiAoIW1BcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlvbk5lZWRlZCkKKyAgICB7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1DbGFtcGluZ1N0cmF0ZWd5ICE9IFNI
X0NMQU1QX1dJVEhfVVNFUl9ERUZJTkVEX0lOVF9DTEFNUF9GVU5DVElPTikKKyAgICB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgb3V0IDw8IGtJbnRDbGFtcEJlZ2luIDw8IGtJbnRDbGFt
cERlZmluaXRpb24gPDwga0ludENsYW1wRW5kOworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRz
Q2xhbXBlci5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5
Qm91bmRzQ2xhbXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJh
eUJvdW5kc0NsYW1wZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUSElSRF9QQVJU
WV9DT01QSUxFUl9BUlJBWV9CT1VORFNfQ0xBTVBFUl9IXworI2RlZmluZSBUSElSRF9QQVJUWV9D
T01QSUxFUl9BUlJBWV9CT1VORFNfQ0xBTVBFUl9IXworCisjaW5jbHVkZSAiR0xTTEFORy9TaGFk
ZXJMYW5nLmgiCisKKyNpbmNsdWRlICJjb21waWxlci9JbmZvU2luay5oIgorI2luY2x1ZGUgImNv
bXBpbGVyL2ludGVybWVkaWF0ZS5oIgorCitjbGFzcyBBcnJheUJvdW5kc0NsYW1wZXIgeworcHVi
bGljOgorICAgIEFycmF5Qm91bmRzQ2xhbXBlcigpOworCisgICAgLy8gTXVzdCBiZSBzZXQgYmVm
b3JlIGNvbXBpbGluZyBhbnkgc2hhZGVycyB0byBlbnN1cmUgY29uc2lzdGVuY3kKKyAgICAvLyBi
ZXR3ZWVuIHRoZSB0cmFuc2xhdGVkIHNoYWRlcnMgYW5kIGFueSBuZWNlc3NhcnkgcHJlcXVlbC4K
KyAgICB2b2lkIFNldENsYW1waW5nU3RyYXRlZ3koU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVn
eSBjbGFtcGluZ1N0cmF0ZWd5KTsKKworICAgIC8vIE1hcmtzIG5vZGVzIGluIHRoZSB0cmVlIHRo
YXQgaW5kZXggYXJyYXlzIGluZGlyZWN0bHkgYXMKKyAgICAvLyByZXF1aXJpbmcgY2xhbXBpbmcu
CisgICAgdm9pZCBNYXJrSW5kaXJlY3RBcnJheUJvdW5kc0ZvckNsYW1waW5nKFRJbnRlcm1Ob2Rl
KiByb290KTsKKworICAgIC8vIElmIG5lY2Vzc2FyeSwgb3V0cHV0IGFycmF5IGNsYW1wIGZ1bmN0
aW9uIHNvdXJjZSBpbnRvIHRoZSBzaGFkZXIgc291cmNlLgorICAgIHZvaWQgT3V0cHV0Q2xhbXBp
bmdGdW5jdGlvbkRlZmluaXRpb24oVEluZm9TaW5rQmFzZSYgb3V0KSBjb25zdDsKKworICAgIHZv
aWQgQ2xlYW51cCgpCisgICAgeworICAgICAgICBtQXJyYXlCb3VuZHNDbGFtcERlZmluaXRpb25O
ZWVkZWQgPSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBHZXRBcnJheUJvdW5k
c0NsYW1wRGVmaW5pdGlvbk5lZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1BcnJheUJvdW5kc0NsYW1w
RGVmaW5pdGlvbk5lZWRlZDsgfQorICAgIHZvaWQgU2V0QXJyYXlCb3VuZHNDbGFtcERlZmluaXRp
b25OZWVkZWQoKSB7IG1BcnJheUJvdW5kc0NsYW1wRGVmaW5pdGlvbk5lZWRlZCA9IHRydWU7IH0K
KworICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgbUNsYW1waW5nU3RyYXRlZ3k7Cisg
ICAgYm9vbCBtQXJyYXlCb3VuZHNDbGFtcERlZmluaXRpb25OZWVkZWQ7Cit9OworCisjZW5kaWYg
Ly8gVEhJUkRfUEFSVFlfQ09NUElMRVJfQVJSQVlfQk9VTkRTX0NMQU1QRVJfSF8KClByb3BlcnR5
IGNoYW5nZXMgb246IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21w
aWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxl
CiAgICsgTEYKCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkv
Y29tcGlsZXIvTElDRU5TRQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGhpcmRfcGFydHkvY29tcGlsZXIvTElDRU5TRQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9MSUNFTlNFCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIyIEBACitDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworYXJlIG1ldDoKKzEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKK0lNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFLCBJTkMuIE9SCitDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKK0VYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKK1BS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvUkVBRE1F
LmFuZ2xlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9w
YXJ0eS9jb21waWxlci9SRUFETUUuYW5nbGUJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvUkVBRE1FLmFuZ2xlCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEyIEBACitOYW1lOiBBTkdMRSBhcnJheSBib3VuZHMgY2xhbXBlciBm
cm9tIFdlYktpdAorU2hvcnQgTmFtZTogV2ViS2l0CitVUkw6IGh0dHA6Ly93ZWJraXQub3JnCitW
ZXJzaW9uOiAwCitMaWNlbnNlOiBCU0QKK1NlY3VyaXR5IENyaXRpY2FsOiB5ZXMKKworRGVzY3Jp
cHRpb246CitJbXBsZW1lbnRzIGNsYW1waW5nIG9mIGFycmF5IGluZGV4aW5nIGV4cHJlc3Npb25z
IGR1cmluZyBzaGFkZXIgdHJhbnNsYXRpb24uCisKK0xvY2FsIE1vZGlmaWNhdGlvbnM6CitOb25l
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDM2NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMi0yMSAgWmhlbnlh
byBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJvbGwgQU5HTEUgdG8gcjE4MzMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUxMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKwogMjAxMy0wMi0yMSAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTGF5b3V0VGVzdHMvZmFzdC9l
bmNvZGluZy9wYXJzZXItdGVzdHMtKi5odG1sIHRpbWVvdXQgd2l0aCB0aHJlYWRlZCBIVE1MIHBh
cnNlcgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNzYyLDcgKzI3NjIs
NiBAQCBpZiAoV1RGX1VTRV8zRF9HUkFQSElDUykKICAgICBlbmRpZiAoKQogCiAgICAgbGlzdChB
UFBFTkQgQU5HTEVTdXBwb3J0X1NPVVJDRVMKLSAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5H
TEUvc3JjL2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHAKICAgICAgICAgJHtUSElSRFBB
UlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcAog
ICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wu
Y3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxl
ci5jcHAKQEAgLTI4MTksNiArMjgxOCw3IEBAIGlmIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICAg
ICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNw
cAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVQ
YWNrZXIuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9W
ZXJzaW9uR0xTTC5jcHAKKyAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL3RoaXJk
X3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHAKICAgICApCiAKICAgICBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtNjMxNSw4ICs2MzE1LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5o
IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0tIUi9raHJwbGF0Zm9ybS5oIFwK
IAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaCBcCi0JU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHAg
XAotCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9BcnJheUJvdW5kc0NsYW1w
ZXIuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5o
IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3IuY3BwIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IuaCBcCkBAIC02NDM4LDcgKzY0MzYsOSBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYWxpZGF0
ZUxpbWl0YXRpb25zLmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1ZhbGlkYXRlTGltaXRhdGlvbnMuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAgXAotCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9WYXJpYWJsZUluZm8uaAorCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9WYXJpYWJsZUluZm8uaCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJk
X3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHAgXAorCVNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaAog
CiBpZiBVU0VfQ0xVVFRFUgogd2ViY29yZV9zb3VyY2VzICs9IFwK
</data>
<flag name="review"
          id="210128"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>