<?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>121064</bug_id>
          
          <creation_ts>2013-09-09 18:54:23 -0700</creation_ts>
          <short_desc>DFG should support Int52 for local variables</short_desc>
          <delta_ts>2013-12-08 19:54:12 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>121065</dependson>
    
    <dependson>121116</dependson>
    
    <dependson>121132</dependson>
    
    <dependson>121141</dependson>
    
    <dependson>121142</dependson>
    
    <dependson>121202</dependson>
    
    <dependson>121211</dependson>
    
    <dependson>121250</dependson>
    
    <dependson>121253</dependson>
    
    <dependson>121268</dependson>
    
    <dependson>121371</dependson>
    
    <dependson>121374</dependson>
    
    <dependson>121530</dependson>
    
    <dependson>121540</dependson>
          <blocked>121063</blocked>
    
    <blocked>121648</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>927039</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-09 18:54:23 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928105</commentid>
    <comment_count>1</comment_count>
      <attachid>211385</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-11 19:24:42 -0700</bug_when>
    <thetext>Created attachment 211385
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928454</commentid>
    <comment_count>2</comment_count>
      <attachid>211463</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-12 13:17:24 -0700</bug_when>
    <thetext>Created attachment 211463
making some small progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928497</commentid>
    <comment_count>3</comment_count>
      <attachid>211477</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-12 14:44:01 -0700</bug_when>
    <thetext>Created attachment 211477
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928630</commentid>
    <comment_count>4</comment_count>
      <attachid>211507</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-12 22:16:17 -0700</bug_when>
    <thetext>Created attachment 211507
it&apos;s getting real</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929110</commentid>
    <comment_count>5</comment_count>
      <attachid>211614</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-13 18:54:52 -0700</bug_when>
    <thetext>Created attachment 211614
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929128</commentid>
    <comment_count>6</comment_count>
      <attachid>211619</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-13 21:58:12 -0700</bug_when>
    <thetext>Created attachment 211619
starting to get there</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929251</commentid>
    <comment_count>7</comment_count>
      <attachid>211655</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-14 10:33:28 -0700</bug_when>
    <thetext>Created attachment 211655
filling in the backend</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929292</commentid>
    <comment_count>8</comment_count>
      <attachid>211666</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-14 13:13:05 -0700</bug_when>
    <thetext>Created attachment 211666
backend almost done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929340</commentid>
    <comment_count>9</comment_count>
      <attachid>211679</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-14 18:24:05 -0700</bug_when>
    <thetext>Created attachment 211679
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929482</commentid>
    <comment_count>10</comment_count>
      <attachid>211723</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-15 12:12:37 -0700</bug_when>
    <thetext>Created attachment 211723
almost done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929511</commentid>
    <comment_count>11</comment_count>
      <attachid>211730</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-15 15:16:07 -0700</bug_when>
    <thetext>Created attachment 211730
it ran some easy program

Here&apos;s some groovy IR, including StrictInt48 addition over Int32 inputs.  Note the lack of an overflow check: adding two int32&apos;s to produce an int48 doesn&apos;t need it. :-)  Note that this is in debug mode so it probably has some JIT assertions.


Generated DFG JIT code for foo#CZzf6Y:[0x10150aca0-&gt;0x10244fe70, DFGFunctionCall], instruction count = 12:
    Optimized with execution counter = 1005.000000/1047.000000, 5
    Code at [0x3b25ef202aa0, 0x3b25ef202bdb):
          0x3b25ef202aa0: pop %rcx
          0x3b25ef202aa1: mov %rcx, 0x10(%r13)
          0x3b25ef202aa5: mov $0x10150aca0, %r11
          0x3b25ef202aaf: mov %r11, 0x8(%r13)
          0x3b25ef202ab3: lea -0x10(%r13), %rdx
          0x3b25ef202ab7: mov $0x101501918, %r11
          0x3b25ef202ac1: cmp %rdx, (%r11)
          0x3b25ef202ac4: ja 0x3b25ef202b18
    Block #0 (bc#0):  (OSR target)
      Predecessors:
      Dominated by: #0
      Dominates: #0
          0x3b25ef202aca: test $0x7, %r13b
          0x3b25ef202ace: jz 0x3b25ef202ad5
          0x3b25ef202ad4: int3 
       1:           &lt; 2:-&gt;	SetArgument(, arg1(B~&lt;Int32&gt;/FlushedJSValue), W:SideState, bc#0)  predicting Int32
       2:           &lt; 2:-&gt;	SetArgument(, arg2(C~&lt;Int32&gt;/FlushedJSValue), W:SideState, bc#0)  predicting Int32
       3:           &lt; 1:0&gt;	GetLocal(@1, JS|UseAsOther, Int32, arg1(B~&lt;Int32&gt;/FlushedJSValue), R:Variables(8), bc#1)  predicting Int32
          0x3b25ef202ad5: mov 0x40(%r13), %rax
       4:           &lt; 1:-1&gt;	GetLocal(@2, JS|UseAsOther, Int32, arg2(C~&lt;Int32&gt;/FlushedJSValue), R:Variables(9), bc#1)  predicting Int32
          0x3b25ef202ad9: mov 0x48(%r13), %rdx
       5:           &lt;!1:-1&gt;	ValueAdd(Check:MachineInt:@3&lt;Int32&gt;, Check:MachineInt:@4&lt;Int32&gt;, JS|MustGen|MightClobber|UseAsOther|MayOverflow, Int48, bc#1)
          0x3b25ef202add: cmp %r14, %rax
          0x3b25ef202ae0: jb 0x3b25ef202b99
          0x3b25ef202ae6: movsxd %eax, %rax
          0x3b25ef202ae9: cmp %r14, %rdx
          0x3b25ef202aec: jb 0x3b25ef202bba
          0x3b25ef202af2: movsxd %edx, %rdx
          0x3b25ef202af5: add %rdx, %rax
       6:  skipped  &lt; 0:-&gt;	ZombieHint(r0(D~&lt;Int48&gt;/FlushedJSValue), W:SideState, bc#1)
       7:           &lt; 1:0&gt;	JSConstant(JS|UseAsOther, Int48, $0 = Double: 4748581863621132288, 3000000000.000000, bc#6)
       8:           &lt;!1:0&gt;	CompareEq(MachineInt:@5&lt;Int48&gt;, MachineInt:@7&lt;Int48&gt;, Boolean|MustGen|MightClobber|UseAsOther|CanExit, Bool, bc#6)
          0x3b25ef202af8: mov $0xb2d05e00, %rdx
          0x3b25ef202b02: cmp %rdx, %rax
          0x3b25ef202b05: setz %al
          0x3b25ef202b08: movzx %al, %eax
          0x3b25ef202b0b: or $0x6, %eax
       9:  skipped  &lt; 0:-&gt;	MovHint(@8&lt;Boolean&gt;, r0(E~&lt;Boolean&gt;/FlushedJSValue), W:SideState, bc#6)
      10:           &lt;!0:-&gt;	Flush(@2, MustGen, arg2(C~&lt;Int32&gt;/FlushedJSValue), W:SideState, bc#10)  predicting Int32
      11:           &lt;!0:-&gt;	Flush(@1, MustGen, arg1(B~&lt;Int32&gt;/FlushedJSValue), W:SideState, bc#10)  predicting Int32
      12:           &lt;!0:-&gt;	Return(@8&lt;Boolean&gt;, MustGen, W:SideState, bc#10)
          0x3b25ef202b0e: mov 0x10(%r13), %rdx
          0x3b25ef202b12: mov 0x28(%r13), %r13
          0x3b25ef202b16: push %rdx
          0x3b25ef202b17: ret 
    (End Of Main Path)
          0x3b25ef202b18: mov %rsp, %rdi
          0x3b25ef202b1b: mov %r13, 0x58(%rsp)
          0x3b25ef202b20: mov $0x40000000, 0x34(%r13)
          0x3b25ef202b28: mov $0x10036ea00, %r11
          0x3b25ef202b32: call %r11
          0x3b25ef202b35: jmp 0x3b25ef202aca
          0x3b25ef202b3a: pop %rcx
          0x3b25ef202b3b: mov %rcx, 0x10(%r13)
          0x3b25ef202b3f: mov $0x10150aca0, %r11
          0x3b25ef202b49: mov %r11, 0x8(%r13)
          0x3b25ef202b4d: mov 0x30(%r13), %edx
          0x3b25ef202b51: cmp $0x3, %edx
          0x3b25ef202b54: jae 0x3b25ef202ab3
          0x3b25ef202b5a: mov %rsp, %rdi
          0x3b25ef202b5d: mov %r13, 0x58(%rsp)
          0x3b25ef202b62: mov $0x40000001, 0x34(%r13)
          0x3b25ef202b6a: mov $0x100374060, %r11
          0x3b25ef202b74: call %r11
          0x3b25ef202b77: test %eax, %eax
          0x3b25ef202b79: jz 0x3b25ef202ab3
          0x3b25ef202b7f: mov $0x40000002, 0x34(%r13)
          0x3b25ef202b87: mov $0x3b25ef201940, %r11
          0x3b25ef202b91: call %r11
          0x3b25ef202b94: jmp 0x3b25ef202ab3
          0x3b25ef202b99: test $0x7, %r13b
          0x3b25ef202b9d: jz 0x3b25ef202ba4
          0x3b25ef202ba3: int3 
          0x3b25ef202ba4: mov $0x101813120, %r11
          0x3b25ef202bae: mov $0x0, (%r11)
          0x3b25ef202bb5: jmp 0x3b25ef201c60
          0x3b25ef202bba: test $0x7, %r13b
          0x3b25ef202bbe: jz 0x3b25ef202bc5
          0x3b25ef202bc4: int3 
          0x3b25ef202bc5: mov $0x101813120, %r11
          0x3b25ef202bcf: mov $0x1, (%r11)
          0x3b25ef202bd6: jmp 0x3b25ef201c60
    Structures:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929516</commentid>
    <comment_count>12</comment_count>
      <attachid>211732</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-15 15:52:22 -0700</bug_when>
    <thetext>Created attachment 211732
it kind of passes some tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929541</commentid>
    <comment_count>13</comment_count>
      <attachid>211735</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-15 20:24:30 -0700</bug_when>
    <thetext>Created attachment 211735
passes all DFG 64-bit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929543</commentid>
    <comment_count>14</comment_count>
      <attachid>211736</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-15 21:49:32 -0700</bug_when>
    <thetext>Created attachment 211736
starting on FTL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929544</commentid>
    <comment_count>15</comment_count>
      <attachid>211737</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-15 22:13:22 -0700</bug_when>
    <thetext>Created attachment 211737
more FTL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929970</commentid>
    <comment_count>16</comment_count>
      <attachid>211842</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-16 16:32:01 -0700</bug_when>
    <thetext>Created attachment 211842
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929971</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-16 16:34:10 -0700</bug_when>
    <thetext>Attachment 211842 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h&apos;, u&apos;Source/JavaScriptCore/assembler/X86Assembler.h&apos;, u&apos;Source/JavaScriptCore/bytecode/DataFormat.h&apos;, u&apos;Source/JavaScriptCore/bytecode/OperandsInlines.h&apos;, u&apos;Source/JavaScriptCore/bytecode/SpeculatedType.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/SpeculatedType.h&apos;, u&apos;Source/JavaScriptCore/bytecode/ValueRecovery.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreter.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractValue.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractValue.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArrayMode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCSEPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGClobberize.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCommon.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFlushFormat.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFlushFormat.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGenerationInfo.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGMinifiedNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeFlags.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSafeToExecute.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSilentRegisterSavePlan.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGUseKind.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGUseKind.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGValueSource.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGValueSource.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVariableAccessData.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCArgumentGetter.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCArgumentGetter.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCapabilities.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLExitValue.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLExitValue.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLIntrinsicRepository.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLOutput.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLValueFormat.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLValueFormat.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLValueSource.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLValueSource.h&apos;, u&apos;Source/JavaScriptCore/interpreter/Register.h&apos;, u&apos;Source/JavaScriptCore/runtime/Arguments.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/IndexingType.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValue.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValueInlines.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/ftl/FTLCArgumentGetter.h:118:  The parameter name &quot;format&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:340:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3372:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4008:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:466:  The parameter name &quot;format&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:858:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 6 in 61 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>929973</commentid>
    <comment_count>18</comment_count>
      <attachid>211842</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-16 16:42:14 -0700</bug_when>
    <thetext>Comment on attachment 211842
the patch

Attachment 211842 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1907087</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929993</commentid>
    <comment_count>19</comment_count>
      <attachid>211842</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-16 17:44:33 -0700</bug_when>
    <thetext>Comment on attachment 211842
the patch

Attachment 211842 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1859127</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930014</commentid>
    <comment_count>20</comment_count>
      <attachid>211853</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-16 18:45:43 -0700</bug_when>
    <thetext>Created attachment 211853
the patch

Fix build and actually include WTF changes this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930015</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-16 18:47:51 -0700</bug_when>
    <thetext>Attachment 211853 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h&apos;, u&apos;Source/JavaScriptCore/assembler/X86Assembler.h&apos;, u&apos;Source/JavaScriptCore/bytecode/DataFormat.h&apos;, u&apos;Source/JavaScriptCore/bytecode/OperandsInlines.h&apos;, u&apos;Source/JavaScriptCore/bytecode/SpeculatedType.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/SpeculatedType.h&apos;, u&apos;Source/JavaScriptCore/bytecode/ValueRecovery.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreter.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractValue.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractValue.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArrayMode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCSEPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGClobberize.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCommon.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFlushFormat.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFlushFormat.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGenerationInfo.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGMinifiedNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeFlags.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSafeToExecute.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSilentRegisterSavePlan.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGUseKind.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGUseKind.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGValueSource.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGValueSource.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVariableAccessData.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCArgumentGetter.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCArgumentGetter.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCapabilities.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLExitValue.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLExitValue.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLIntrinsicRepository.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLOutput.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLValueFormat.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLValueFormat.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLValueSource.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLValueSource.h&apos;, u&apos;Source/JavaScriptCore/interpreter/Register.h&apos;, u&apos;Source/JavaScriptCore/runtime/Arguments.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/IndexingType.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValue.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValueInlines.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/PrintStream.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/ftl/FTLCArgumentGetter.h:118:  The parameter name &quot;format&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:340:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4009:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:466:  The parameter name &quot;format&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:858:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 6 in 63 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>930018</commentid>
    <comment_count>22</comment_count>
      <attachid>211853</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-16 18:55:01 -0700</bug_when>
    <thetext>Comment on attachment 211853
the patch

Attachment 211853 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1844196</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930020</commentid>
    <comment_count>23</comment_count>
      <attachid>211854</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-16 19:05:49 -0700</bug_when>
    <thetext>Created attachment 211854
the patch

Found and fixed some bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930022</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-16 19:07:10 -0700</bug_when>
    <thetext>Attachment 211854 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h&apos;, u&apos;Source/JavaScriptCore/assembler/X86Assembler.h&apos;, u&apos;Source/JavaScriptCore/bytecode/DataFormat.h&apos;, u&apos;Source/JavaScriptCore/bytecode/OperandsInlines.h&apos;, u&apos;Source/JavaScriptCore/bytecode/SpeculatedType.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/SpeculatedType.h&apos;, u&apos;Source/JavaScriptCore/bytecode/ValueRecovery.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreter.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractValue.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractValue.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArrayMode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCSEPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGClobberize.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCommon.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFlushFormat.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFlushFormat.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGenerationInfo.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGMinifiedNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeFlags.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSafeToExecute.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSilentRegisterSavePlan.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGUseKind.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGUseKind.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGValueSource.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGValueSource.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVariableAccessData.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCArgumentGetter.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCArgumentGetter.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCapabilities.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLExitValue.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLExitValue.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLIntrinsicRepository.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLOutput.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLValueFormat.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLValueFormat.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLValueSource.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLValueSource.h&apos;, u&apos;Source/JavaScriptCore/interpreter/Register.h&apos;, u&apos;Source/JavaScriptCore/runtime/Arguments.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/IndexingType.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValue.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValueInlines.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/PrintStream.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/ftl/FTLCArgumentGetter.h:118:  The parameter name &quot;format&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:340:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4009:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:466:  The parameter name &quot;format&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:858:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 6 in 63 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>930024</commentid>
    <comment_count>25</comment_count>
      <attachid>211854</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-16 19:16:08 -0700</bug_when>
    <thetext>Comment on attachment 211854
the patch

Attachment 211854 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1855221</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930038</commentid>
    <comment_count>26</comment_count>
      <attachid>211854</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-16 20:45:54 -0700</bug_when>
    <thetext>Comment on attachment 211854
the patch

Attachment 211854 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1893150</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930064</commentid>
    <comment_count>27</comment_count>
      <attachid>211854</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-16 22:45:40 -0700</bug_when>
    <thetext>Comment on attachment 211854
the patch

Attachment 211854 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1836342</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930067</commentid>
    <comment_count>28</comment_count>
      <attachid>211866</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-16 22:53:43 -0700</bug_when>
    <thetext>Created attachment 211866
the patch

Bunch of fixes, to placate GCC and the style bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930271</commentid>
    <comment_count>29</comment_count>
      <attachid>211866</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-09-17 09:46:40 -0700</bug_when>
    <thetext>Comment on attachment 211866
the patch

Looks good -- the only thing i&apos;m really uncomfortable with is the Int48s type - why do we need this?  I can&apos;t see anywhere that you&apos;re not explicitly using the values 1 or 2 and then directly loading indices 0 or 1 - I&apos;m assuming that there&apos;s a templatised function somewhere that you pass these to where it&apos;s nice to just iterate the list but i can&apos;t find it :(

Also Int48s seems like an odd name, i&apos;d prefer Int48Tuple or something.  Then if you wanted you could typedef Int48Pair, etc into existence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930335</commentid>
    <comment_count>30</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-17 12:03:58 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 211866 [details])
&gt; Looks good -- the only thing i&apos;m really uncomfortable with is the Int48s type - why do we need this?  I can&apos;t see anywhere that you&apos;re not explicitly using the values 1 or 2 and then directly loading indices 0 or 1 - I&apos;m assuming that there&apos;s a templatised function somewhere that you pass these to where it&apos;s nice to just iterate the list but i can&apos;t find it :(
&gt; 
&gt; Also Int48s seems like an odd name, i&apos;d prefer Int48Tuple or something.  Then if you wanted you could typedef Int48Pair, etc into existence.

Agreed, I&apos;ve fixed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930336</commentid>
    <comment_count>31</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-17 12:04:26 -0700</bug_when>
    <thetext>Why Int48 when you can do Int52?  No reason.  So I changed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930337</commentid>
    <comment_count>32</comment_count>
      <attachid>211929</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-17 12:05:00 -0700</bug_when>
    <thetext>Created attachment 211929
the patch

Already reviewed by Oliver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930474</commentid>
    <comment_count>33</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-17 18:30:41 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/156019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930478</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-17 18:46:11 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 121530</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930553</commentid>
    <comment_count>35</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-09-18 00:26:32 -0700</bug_when>
    <thetext>Rolled out in &lt;https://trac.webkit.org/r156029&gt;:

** The following js test failures have been introduced:
	js/dfg-int-overflow-large-constants-in-a-line

** The following JSC stress test failures have been introduced:
	regress/script-tests/large-int-neg.js.always-trigger-copy-phase

The first failure occurs every time, the second one seems flaky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930630</commentid>
    <comment_count>36</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-18 08:24:17 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; Rolled out in &lt;https://trac.webkit.org/r156029&gt;:
&gt; 
&gt; ** The following js test failures have been introduced:
&gt;     js/dfg-int-overflow-large-constants-in-a-line

Yeah, that&apos;s a bug.  I&apos;ve got a fix for it.

&gt; 
&gt; ** The following JSC stress test failures have been introduced:
&gt;     regress/script-tests/large-int-neg.js.always-trigger-copy-phase

Not seeing this one.

&gt; 
&gt; The first failure occurs every time, the second one seems flaky.

I think that the second one is caused by the same thing as the first.  I&apos;ll test on a couple of machines.  If I don&apos;t see the failure in the second one, I&apos;ll reland.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930645</commentid>
    <comment_count>37</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-18 08:58:19 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (In reply to comment #35)
&gt; &gt; Rolled out in &lt;https://trac.webkit.org/r156029&gt;:
&gt; &gt; 
&gt; &gt; ** The following js test failures have been introduced:
&gt; &gt;     js/dfg-int-overflow-large-constants-in-a-line
&gt; 
&gt; Yeah, that&apos;s a bug.  I&apos;ve got a fix for it.
&gt; 
&gt; &gt; 
&gt; &gt; ** The following JSC stress test failures have been introduced:
&gt; &gt;     regress/script-tests/large-int-neg.js.always-trigger-copy-phase
&gt; 
&gt; Not seeing this one.
&gt; 
&gt; &gt; 
&gt; &gt; The first failure occurs every time, the second one seems flaky.
&gt; 
&gt; I think that the second one is caused by the same thing as the first.  I&apos;ll test on a couple of machines.  If I don&apos;t see the failure in the second one, I&apos;ll reland.

I got a different, but related, test to fail.  It was also flaky.  Fix that also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930663</commentid>
    <comment_count>38</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-18 10:15:31 -0700</bug_when>
    <thetext>Relanded in http://trac.webkit.org/changeset/156047 with some test fixes:

- OSR entry wasn&apos;t handling Int52.  I had assumed that OSR entry seeing Int52 would be impossible; that&apos;s sort of true - the baseline JIT won&apos;t produce an Int52 and if it produces a double then OSR entry will be disallowed even if that double is representable in Int52.  But we could have the DFG deducing that a local should be an Int52 while the baseline JIT has an Int32 in that variable.  Then we still need the logic to up-convert the Int32 to an Int52.

- Int52 Add and Sub were reusing registers on overflow checks in a way that led to incorrect values.  Disable register reuse for those operations if they do overflow checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931137</commentid>
    <comment_count>39</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-09-19 17:16:39 -0700</bug_when>
    <thetext>This patch caused the bug 121648.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957740</commentid>
    <comment_count>40</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-08 19:54:12 -0800</bug_when>
    <thetext>This was relanded.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211385</attachid>
            <date>2013-09-11 19:24:42 -0700</date>
            <delta_ts>2013-09-12 13:17:24 -0700</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>10838</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAkocmV2
aXNpb24gMTU1NTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0Tm9uZSA9IDAsCiAgICAgRGF0YUZvcm1h
dEludDMyID0gMSwKLSAgICBEYXRhRm9ybWF0RG91YmxlID0gMiwKLSAgICBEYXRhRm9ybWF0Qm9v
bGVhbiA9IDMsCi0gICAgRGF0YUZvcm1hdENlbGwgPSA0LAotICAgIERhdGFGb3JtYXRTdG9yYWdl
ID0gNSwKKyAgICBEYXRhRm9ybWF0SW50NDggPSAyLAorICAgIERhdGFGb3JtYXREb3VibGUgPSAz
LAorICAgIERhdGFGb3JtYXRCb29sZWFuID0gNCwKKyAgICBEYXRhRm9ybWF0Q2VsbCA9IDUsCisg
ICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA2LAogICAgIERhdGFGb3JtYXRKUyA9IDgsCiAgICAgRGF0
YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAgICAgRGF0
YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwKQEAgLTY0
LDYgKzY1LDggQEAgaW5saW5lIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRUb1N0cmluZyhEYQogICAg
ICAgICByZXR1cm4gIk5vbmUiOwogICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgogICAgICAgICBy
ZXR1cm4gIkludDMyIjsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICAgICAgcmV0dXJu
ICJJbnQ0OCI7CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgICAgICByZXR1cm4gIkRv
dWJsZSI7CiAgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTU1NTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMzMSw3ICsxMzMxLDYyIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8VXNlS2luZCB1c2VLaW5k
PgogICAgIHZvaWQgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlKEVkZ2UmIGVkZ2UpCiAg
ICAgeworICAgICAgICBBU1NFUlQodXNlS2luZCAhPSBOdW1iZXJVc2UgJiYgdXNlS2luZCAhPSBS
ZWFsTnVtYmVyVXNlKTsKKyAgICAgICAgCiAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPHVz
ZUtpbmQ+KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgCisgICAgICAgIGlmICh1c2VLaW5kICE9IElu
dDQ4VXNlCisgICAgICAgICAgICAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkg
JiYgIWVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKKyAgICAgICAgICAgIC8vIFdlIG1h
a2UgYWxsIG5vbi1pbnQ0OCB1c2VzIG9mIGludDQ4IHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0
ZSBJbnQ0OFRvVmFsdWUKKyAgICAgICAgICAgIC8vIG5vZGUgdG8gZW5zdXJlIHRoYXQgd2UgaGFu
ZGxlIHRoaXMgcHJvcGVybHk6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gYTogU29t
ZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0aEFkZChAYSwgLi4uKQorICAgICAgICAgICAg
Ly8gYzogQ2FsbCguLi4sIEBhKQorICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoQGEsIC4uLikK
KyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBXaXRob3V0IGFuIGludGVybWVkaWF0ZSBu
b2RlIGFuZCBqdXN0IGxhYmVsaW5nIHRoZSB1c2VzLCB3ZSB3aWxsIGdldDoKKyAgICAgICAgICAg
IC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IEFyaXRo
QWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpA
YSkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAg
ICAvLworICAgICAgICAgICAgLy8gQW5kIG5vdyB0aGUgYy0+VW50eXBlZDpAYSBlZGdlIHdpbGwg
Ym94IHRoZSB2YWx1ZSBvZiBAYSBpbnRvIGEgZG91YmxlLiBUaGlzCisgICAgICAgICAgICAvLyBp
cyBiYWQsIGJlY2F1c2Ugbm93IHRoZSBkLT5JbnQ0ODpAYSBlZGdlIHdpbGwgZWl0aGVyIGhhdmUg
dG8gZG8gZG91YmxlLXRvLWludAorICAgICAgICAgICAgLy8gY29udmVyc2lvbnMsIG9yIHdpbGwg
aGF2ZSB0byBPU1IgZXhpdCB1bmNvbmRpdGlvbmFsbHkuIEFsdGVybmF0aXZlbHkgd2UgY291bGQK
KyAgICAgICAgICAgIC8vIGhhdmUgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSBib3ggdGhlIHZhbHVl
IGJ5IGNvcHlpbmcgcmF0aGVyIHRoYW4gaW4tcGxhY2UuCisgICAgICAgICAgICAvLyBCdXQgdGhl
c2UgYm94aW5ncyBhcmUgYWxzbyBjb3N0bHkgc28gdGhpcyB3b3VsZG4ndCBiZSBncmVhdC4KKyAg
ICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBUaGUgc29sdXRpb24gd2UgdXNlIGlzIHRvIGFs
d2F5cyBoYXZlIG5vbi1JbnQ0OCB1c2VzIG9mIHByZWRpY3RlZCBJbnQ0OCdzIHVzZQorICAgICAg
ICAgICAgLy8gYW4gaW50ZXJ2ZW5pbmcgSW50NDhUb1ZhbHVlIG5vZGU6CisgICAgICAgICAgICAv
LworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0aEFk
ZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8geDogSW50NDhUb1ZhbHVlKEludDQ4OkBh
KQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QHgpCisgICAgICAgICAgICAv
LyBkOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAg
IC8vIE5vdGUgdGhhdCBldmVuIGlmIHdlIGhhZCBtdWx0aXBsZSBub24taW50NDggdXNlcyBvZiBA
YSwgdGhlIG11bHRpcGxlCisgICAgICAgICAgICAvLyBJbnQ0OFRvVmFsdWUncyB3b3VsZCBnZXQg
Q1NFJ2QgdG9nZXRoZXIuIFNvIHRoZSBib3hpbmcgd291bGQgb25seSBoYXBwZW4gb25jZS4KKyAg
ICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIEBhIHdvdWxkIGNvbnRpbnVlIHRvIGJlIHJl
cHJlc2VudGVkIGFzIGEgbmF0aXZlIGludDQ4LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAg
IC8vIEFuIGFsdGVybmF0aXZlIHdvdWxkIGhhdmUgYmVlbiB0byBpbnNlcnQgVG9OYXRpdmVJbnQ0
OCBub2RlcyBvbiBpbnQ0OCB1c2VzIG9mCisgICAgICAgICAgICAvLyBpbnQ0OCdzLiBUaGlzIHdv
dWxkIGhhdmUgaGFuZGxlZCB0aGUgYWJvdmUgZXhhbXBsZSBidXQgd291bGQgZmFsbCBvdmVyIGZv
cjoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAg
ICAgIC8vIGI6IENhbGwoLi4uLCBAYSkKKyAgICAgICAgICAgIC8vIGM6IEFyaXRoQWRkKEBhLCAu
Li4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQnV0IHRoZSBzb2x1dGlvbiB3ZSB1
c2UgaGFuZGxlcyB0aGUgYWJvdmUgZ3JhY2VmdWxseS4KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4LCBJbnQ0OFRvVmFsdWUsCisgICAgICAgICAg
ICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgSW50NDhV
c2UpKTsKKyAgICAgICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGVkZ2Uuc2V0VXNlS2lu
ZCh1c2VLaW5kKTsKICAgICB9CiAgICAgCkBAIC0xMzY2LDExICsxNDIxLDExIEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShlZGdlLCB1c2VLaW5k
LCBkaXJlY3Rpb24pOwogICAgIH0KLQorICAgIAogICAgIHZvaWQgaW5qZWN0SW50MzJUb0RvdWJs
ZU5vZGUoRWRnZSYgZWRnZSwgVXNlS2luZCB1c2VLaW5kID0gTnVtYmVyVXNlLCBTcGVjdWxhdGlv
bkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBCYWNrd2FyZFNwZWN1bGF0aW9uKQogICAgIHsKICAgICAg
ICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAg
IG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDgsIEludDMyVG9Eb3VibGUsCisgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY0ludDQ4QXNEb3VibGUsIEludDMyVG9Eb3VibGUsCiAgICAgICAg
ICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJV
c2UpKTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb3J3YXJkU3BlY3VsYXRpb24pCiAgICAg
ICAgICAgICByZXN1bHQtPm1lcmdlRmxhZ3MoTm9kZUV4aXRzRm9yd2FyZCk7CkBAIC0xMzg0LDYg
KzE0MzksMTcgQEAgcHJpdmF0ZToKICAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5k
KTsKICAgICB9CiAgICAgCisgICAgLy8gV2UgbWFrZSBhbGwgaW50NDggZWRnZXMgaGF2ZSBhbiBp
bnRlcm1lZGlhdGUgQXNOYXRpdmVJbnQ0OCBub2RlIHRvIGVuc3VyZQorICAgIC8vIHRoYXQgd2Ug
aGFuZGxlIHRoaXMgcHJvcGVybHk6CisgICAgdGVtcGxhdGU8VXNlS2luZCB1c2VLaW5kPgorICAg
IHZvaWQgZml4SW50NDhFZGdlKEVkZ2UmIGVkZ2UpCisgICAgeworICAgICAgICBOb2RlKiByZXN1
bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIFNwZWNJbnQ0OCwgQXNOYXRpdmVJbnQ0OCwKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUt
PmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIHVzZUtpbmQpKTsKKyAgICAgICAgZWRnZSA9
IGVkZ2UocmVzdWx0LCBJbnQ0OFVzZSk7CisgICAgfQorCiAgICAgdm9pZCB0cnVuY2F0ZUNvbnN0
YW50VG9JbnQzMihFZGdlJiBlZGdlKQogICAgIHsKICAgICAgICAgTm9kZSogb2xkTm9kZSA9IGVk
Z2Uubm9kZSgpOwpAQCAtMTQyNiwxMyArMTQ5MiwyMCBAQCBwcml2YXRlOgogICAgIGJvb2wgYXR0
ZW1wdFRvTWFrZUludGVnZXJBZGQoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFkZFNwZWN1
bGF0aW9uTW9kZSBtb2RlID0gbV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1vZGUobm9kZSk7Ci0gICAg
ICAgIGlmIChtb2RlID09IERvbnRTcGVjdWxhdGVJbnQzMikKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKG1vZGUgIT0gRG9udFNwZWN1bGF0ZUludDMyKSB7CisgICAgICAg
ICAgICB0cnVuY2F0ZUNvbnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUsIG1vZGUpOworICAgICAgICAg
ICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPEludDMyVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8SW50MzJVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICB0cnVuY2F0ZUNvbnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUsIG1vZGUp
OwotICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPEludDMy
VXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAo
bV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAgICAg
ICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8SW50NDhVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIHNldFVzZUtpbmRBbmRVbmJveElmUHJvZml0YWJsZTxJbnQ0OFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBhdHRl
bXB0VG9NYWtlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCShyZXZpc2lvbiAxNTU1NzkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNiArNDEsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Rmx1CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIG91dC5wcmludCgiRmx1c2hlZElu
dDMyIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAg
b3V0LnByaW50KCJGbHVzaGVkSW50MzIiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmx1
c2hlZERvdWJsZToKICAgICAgICAgb3V0LnByaW50KCJGbHVzaGVkRG91YmxlIik7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0
LmgJKHJldmlzaW9uIDE1NTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1
c2hGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiBlbnVtIEZsdXNoRm9ybWF0IHsKICAgICBEZWFkRmx1c2gsCiAg
ICAgRmx1c2hlZEludDMyLAorICAgIEZsdXNoZWRJbnQ0OCwKICAgICBGbHVzaGVkRG91YmxlLAog
ICAgIEZsdXNoZWRDZWxsLAogICAgIEZsdXNoZWRCb29sZWFuLApAQCAtNTUsNiArNTYsOCBAQCBp
bmxpbmUgTm9kZUZsYWdzIHJlc3VsdEZvcihGbHVzaEZvcm1hdCBmCiAgICAgICAgIHJldHVybiBO
b2RlUmVzdWx0SlM7CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVybiBOb2Rl
UmVzdWx0SW50MzI7CisgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIHJldHVybiBOb2Rl
UmVzdWx0SW50NDg7CiAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICByZXR1cm4gTm9k
ZVJlc3VsdE51bWJlcjsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgpAQCAtNzQsNiArNzcsOCBA
QCBpbmxpbmUgVXNlS2luZCB1c2VLaW5kRm9yKEZsdXNoRm9ybWF0IGZvCiAgICAgICAgIHJldHVy
biBDZWxsVXNlOwogICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICByZXR1cm4gSW50MzJV
c2U7CisgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIHJldHVybiBJbnQ0OFVzZTsKICAg
ICBjYXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAgIHJldHVybiBOdW1iZXJVc2U7CiAgICAgY2Fz
ZSBGbHVzaGVkQm9vbGVhbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
RmxhZ3MuaAkocmV2aXNpb24gMTU1NTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5vZGVSZXN1bHRKUyAgICAgICAgICAgICAg
ICAgICAgIDB4MDAwMQogI2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAgICAgICAgICAgICAgICAw
eDAwMDIKICNkZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAgICAgICAgMHgwMDAzCi0j
ZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4MDAwNAotI2RlZmluZSBO
b2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUgTm9kZVJlc3Vs
dEludDQ4ICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFu
ICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAg
ICAgICAgICAweDAwMDYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAjZGVmaW5l
IE5vZGVNdXN0R2VuZXJhdGUgICAgICAgICAgICAgICAgIDB4MDAwOCAvLyBzZXQgb24gbm9kZXMg
dGhhdCBoYXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92ZWQg
YnkgRENFLgogI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAgICAgICAgICAweDAwMTAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE1
NTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhJbnQzMlRvRG91YmxlLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgLyog
VXNlZCB0byBzcGVjdWxhdGUgdGhhdCBhIGRvdWJsZSB2YWx1ZSBpcyBhY3R1YWxseSBhbiBpbnRl
Z2VyLiAqL1wKICAgICBtYWNybyhEb3VibGVBc0ludDMyLCBOb2RlUmVzdWx0SW50MzIgfCBOb2Rl
RXhpdHNGb3J3YXJkKSBcCisgICAgLyogVXNlZCB0byBzZXBhcmF0ZSByZXByZXNlbnRhdGlvbiBh
bmQgcmVnaXN0ZXIgYWxsb2NhdGlvbiBvZiBJbnQ0OCdzIHJlcHJlc2VudGVkICovXAorICAgIC8q
IGFzIHZhbHVlcy4gKi9cCisgICAgbWFjcm8oSW50NDhUb1ZhbHVlLCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCiAgICAg
bWFjcm8oQXJpdGhBZGQsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDE1
NTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDYgKzQ0LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIFVzZQogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgb3V0LnByaW50KCJL
bm93bkludDMyIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50NDhVc2U6CisgICAgICAg
IG91dC5wcmludCgiSW50NDgiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsTnVtYmVy
VXNlOgogICAgICAgICBvdXQucHJpbnQoIlJlYWxOdW1iZXIiKTsKICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNpb24gMTU1NTc5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDYgKzM5LDcgQEAgZW51bSBVc2VLaW5kIHsKICAgICBVbnR5cGVkVXNlLAogICAg
IEludDMyVXNlLAogICAgIEtub3duSW50MzJVc2UsCisgICAgSW50NDhVc2UsCiAgICAgUmVhbE51
bWJlclVzZSwKICAgICBOdW1iZXJVc2UsCiAgICAgS25vd25OdW1iZXJVc2UsCkBAIC02Niw2ICs2
Nyw4IEBAIEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckYKICAgICBjYXNl
IEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgcmV0dXJuIFNwZWNJ
bnQzMjsKKyAgICBjYXNlIEludDQ4VXNlOgorICAgICAgICByZXR1cm4gU3BlY0ludDQ4OwogICAg
IGNhc2UgUmVhbE51bWJlclVzZToKICAgICAgICAgcmV0dXJuIFNwZWNSZWFsTnVtYmVyOwogICAg
IGNhc2UgTnVtYmVyVXNlOgpAQCAtMTI1LDYgKzEyOCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBp
c051bWVyaWNhbChVc2VLaW5kIGsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIEludDMy
VXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKKyAgICBjYXNlIEludDQ4VXNlOgogICAgIGNh
c2UgUmVhbE51bWJlclVzZToKICAgICBjYXNlIE51bWJlclVzZToKICAgICBjYXNlIEtub3duTnVt
YmVyVXNlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211463</attachid>
            <date>2013-09-12 13:17:24 -0700</date>
            <delta_ts>2013-09-12 14:44:01 -0700</delta_ts>
            <desc>making some small progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>15961</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAkocmV2
aXNpb24gMTU1NjQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0Tm9uZSA9IDAsCiAgICAgRGF0YUZvcm1h
dEludDMyID0gMSwKLSAgICBEYXRhRm9ybWF0RG91YmxlID0gMiwKLSAgICBEYXRhRm9ybWF0Qm9v
bGVhbiA9IDMsCi0gICAgRGF0YUZvcm1hdENlbGwgPSA0LAotICAgIERhdGFGb3JtYXRTdG9yYWdl
ID0gNSwKKyAgICBEYXRhRm9ybWF0SW50NDggPSAyLCAvLyBJbnQ0OCdzIGFyZSBsZWZ0LXNoaWZ0
ZWQgYnkgMTYgYnkgZGVmYXVsdC4KKyAgICBEYXRhRm9ybWF0U3RyaWN0SW50NDggPSAzLCAvLyAi
U3RyaWN0IiBJbnQ0OCBtZWFucyBpdCdzIG5vdCBzaGlmdGVkLgorICAgIERhdGFGb3JtYXREb3Vi
bGUgPSA0LAorICAgIERhdGFGb3JtYXRCb29sZWFuID0gNSwKKyAgICBEYXRhRm9ybWF0Q2VsbCA9
IDYsCisgICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA3LAogICAgIERhdGFGb3JtYXRKUyA9IDgsCiAg
ICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAg
ICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwK
QEAgLTY0LDYgKzY2LDEwIEBAIGlubGluZSBjb25zdCBjaGFyKiBkYXRhRm9ybWF0VG9TdHJpbmco
RGEKICAgICAgICAgcmV0dXJuICJOb25lIjsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAg
ICAgICAgcmV0dXJuICJJbnQzMiI7CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAg
IHJldHVybiAiSW50NDgiOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1
cm4gIlN0cmljdEludDQ4IjsKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgIHJl
dHVybiAiRG91YmxlIjsKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNTU2NDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQz
LDE1IEBAIGlubGluZSBib29sIGVuYWJsZUNvbmN1cnJlbnRKSVQoKQogI2VuZGlmCiB9CiAKK2lu
bGluZSBib29sIGVuYWJsZUludDQ4KCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVy
biB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogZW51bSBTcGls
bFJlZ2lzdGVyc01vZGUgeyBOZWVkVG9TcGlsbCwgRG9udFNwaWxsIH07CiAKIGVudW0gTm9SZXN1
bHRUYWcgeyBOb1Jlc3VsdCB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNTU2NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDEw
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgbV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVNYWNo
aW5lSW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ0OFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0yMDcsNiArMjExLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYg
bV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQ0OFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50NDhVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDAsNiArMzA5LDExIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuYWJsZUludDQ4
KCkKKyAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50NDhVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPEludDQ4VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8
TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKQEAgLTM1NSw2ICszNjksMTIgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50
NDgoKQorICAgICAgICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQo
bm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxJbnQ0OFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SW50NDhVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAtMTM1
Myw2ICsxMzczLDU5IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG9i
c2VydmVVc2VLaW5kT25Ob2RlPHVzZUtpbmQ+KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgCisgICAg
ICAgIGlmICh1c2VLaW5kICE9IEludDQ4VXNlCisgICAgICAgICAgICAmJiBlZGdlLT5zaG91bGRT
cGVjdWxhdGVNYWNoaW5lSW50KCkgJiYgIWVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsK
KyAgICAgICAgICAgIC8vIFdlIG1ha2UgYWxsIG5vbi1pbnQ0OCB1c2VzIG9mIGludDQ4IHZhbHVl
cyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ0OFRvVmFsdWUKKyAgICAgICAgICAgIC8vIG5vZGUg
dG8gZW5zdXJlIHRoYXQgd2UgaGFuZGxlIHRoaXMgcHJvcGVybHk6CisgICAgICAgICAgICAvLwor
ICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0aEFkZChA
YSwgLi4uKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIEBhKQorICAgICAgICAgICAgLy8g
ZDogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBXaXRo
b3V0IGFuIGludGVybWVkaWF0ZSBub2RlIGFuZCBqdXN0IGxhYmVsaW5nIHRoZSB1c2VzLCB3ZSB3
aWxsIGdldDoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAg
ICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLyBj
OiBDYWxsKC4uLiwgVW50eXBlZDpAYSkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEludDQ4
OkBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQW5kIG5vdyB0aGUgYy0+
VW50eXBlZDpAYSBlZGdlIHdpbGwgYm94IHRoZSB2YWx1ZSBvZiBAYSBpbnRvIGEgZG91YmxlLiBU
aGlzCisgICAgICAgICAgICAvLyBpcyBiYWQsIGJlY2F1c2Ugbm93IHRoZSBkLT5JbnQ0ODpAYSBl
ZGdlIHdpbGwgZWl0aGVyIGhhdmUgdG8gZG8gZG91YmxlLXRvLWludAorICAgICAgICAgICAgLy8g
Y29udmVyc2lvbnMsIG9yIHdpbGwgaGF2ZSB0byBPU1IgZXhpdCB1bmNvbmRpdGlvbmFsbHkuIEFs
dGVybmF0aXZlbHkgd2UgY291bGQKKyAgICAgICAgICAgIC8vIGhhdmUgdGhlIGMtPlVudHlwZWQ6
QGEgZWRnZSBib3ggdGhlIHZhbHVlIGJ5IGNvcHlpbmcgcmF0aGVyIHRoYW4gaW4tcGxhY2UuCisg
ICAgICAgICAgICAvLyBCdXQgdGhlc2UgYm94aW5ncyBhcmUgYWxzbyBjb3N0bHkgc28gdGhpcyB3
b3VsZG4ndCBiZSBncmVhdC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBUaGUgc29s
dXRpb24gd2UgdXNlIGlzIHRvIGFsd2F5cyBoYXZlIG5vbi1JbnQ0OCB1c2VzIG9mIHByZWRpY3Rl
ZCBJbnQ0OCdzIHVzZQorICAgICAgICAgICAgLy8gYW4gaW50ZXJ2ZW5pbmcgSW50NDhUb1ZhbHVl
IG5vZGU6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAg
ICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8geDog
SW50NDhUb1ZhbHVlKEludDQ4OkBhKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVudHlw
ZWQ6QHgpCisgICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAg
ICAgICAgLy8KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBldmVuIGlmIHdlIGhhZCBtdWx0aXBs
ZSBub24taW50NDggdXNlcyBvZiBAYSwgdGhlIG11bHRpcGxlCisgICAgICAgICAgICAvLyBJbnQ0
OFRvVmFsdWUncyB3b3VsZCBnZXQgQ1NFJ2QgdG9nZXRoZXIuIFNvIHRoZSBib3hpbmcgd291bGQg
b25seSBoYXBwZW4gb25jZS4KKyAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIEBhIHdv
dWxkIGNvbnRpbnVlIHRvIGJlIHJlcHJlc2VudGVkIGFzIGEgbmF0aXZlIGludDQ4LgorICAgICAg
ICAgICAgLy8KKyAgICAgICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHdvdWxkIGhhdmUgYmVlbiB0
byBpbnNlcnQgVG9OYXRpdmVJbnQ0OCBub2RlcyBvbiBpbnQ0OCB1c2VzIG9mCisgICAgICAgICAg
ICAvLyBpbnQ0OCdzLiBUaGlzIHdvdWxkIGhhdmUgaGFuZGxlZCB0aGUgYWJvdmUgZXhhbXBsZSBi
dXQgd291bGQgZmFsbCBvdmVyIGZvcjoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBh
OiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IENhbGwoLi4uLCBAYSkKKyAgICAgICAgICAg
IC8vIGM6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8g
QnV0IHRoZSBzb2x1dGlvbiB3ZSB1c2UgaGFuZGxlcyB0aGUgYWJvdmUgZ3JhY2VmdWxseS4KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4LCBJbnQ0
OFRvVmFsdWUsCisgICAgICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRn
ZShlZGdlLm5vZGUoKSwgSW50NDhVc2UpKTsKKyAgICAgICAgICAgIGVkZ2UgPSBFZGdlKHJlc3Vs
dCwgdXNlS2luZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAg
ICAgICAgIGVkZ2Uuc2V0VXNlS2luZCh1c2VLaW5kKTsKICAgICB9CiAgICAgCkBAIC0xMzc4LDcg
KzE0NTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoRWRn
ZSYgZWRnZSwgVXNlS2luZCB1c2VLaW5kID0gTnVtYmVyVXNlLCBTcGVjdWxhdGlvbkRpcmVjdGlv
biBkaXJlY3Rpb24gPSBCYWNrd2FyZFNwZWN1bGF0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSog
cmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJ
bkJsb2NrLCBTcGVjSW50NDgsIEludDMyVG9Eb3VibGUsCisgICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY0ludDQ4QXNEb3VibGUsIEludDMyVG9Eb3VibGUsCiAgICAgICAgICAgICBtX2N1
cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKICAg
ICAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb3J3YXJkU3BlY3VsYXRpb24pCiAgICAgICAgICAgICBy
ZXN1bHQtPm1lcmdlRmxhZ3MoTm9kZUV4aXRzRm9yd2FyZCk7CkBAIC0xMzkyLDYgKzE0NjUsMTcg
QEAgcHJpdmF0ZToKICAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsKICAgICB9
CiAgICAgCisgICAgLy8gV2UgbWFrZSBhbGwgaW50NDggZWRnZXMgaGF2ZSBhbiBpbnRlcm1lZGlh
dGUgQXNOYXRpdmVJbnQ0OCBub2RlIHRvIGVuc3VyZQorICAgIC8vIHRoYXQgd2UgaGFuZGxlIHRo
aXMgcHJvcGVybHk6CisgICAgdGVtcGxhdGU8VXNlS2luZCB1c2VLaW5kPgorICAgIHZvaWQgZml4
SW50NDhFZGdlKEVkZ2UmIGVkZ2UpCisgICAgeworICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJ
bnQ0OCwgQXNOYXRpdmVJbnQ0OCwKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmln
aW4sIEVkZ2UoZWRnZS5ub2RlKCksIHVzZUtpbmQpKTsKKyAgICAgICAgZWRnZSA9IGVkZ2UocmVz
dWx0LCBJbnQ0OFVzZSk7CisgICAgfQorCiAgICAgdm9pZCB0cnVuY2F0ZUNvbnN0YW50VG9JbnQz
MihFZGdlJiBlZGdlKQogICAgIHsKICAgICAgICAgTm9kZSogb2xkTm9kZSA9IGVkZ2Uubm9kZSgp
OwpAQCAtMTQzNCwxMyArMTUxOCwyMCBAQCBwcml2YXRlOgogICAgIGJvb2wgYXR0ZW1wdFRvTWFr
ZUludGVnZXJBZGQoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFkZFNwZWN1bGF0aW9uTW9k
ZSBtb2RlID0gbV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1vZGUobm9kZSk7Ci0gICAgICAgIGlmICht
b2RlID09IERvbnRTcGVjdWxhdGVJbnQzMikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKG1vZGUgIT0gRG9udFNwZWN1bGF0ZUludDMyKSB7CisgICAgICAgICAgICB0cnVu
Y2F0ZUNvbnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUsIG1vZGUpOworICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIHRydW5jYXRlQ29uc3RhbnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9k
ZSk7Ci0gICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVN
YWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEludDQ4VXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDQ4VXNlPihub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBib29sIGF0dGVtcHRUb01ha2VHZXRBcnJh
eUxlbmd0aChOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
bHVzaEZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGbHVzaEZvcm1hdC5jcHAJKHJldmlzaW9uIDE1NTY0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBGbHUKICAgICBjYXNlIEZs
dXNoZWRJbnQzMjoKICAgICAgICAgb3V0LnByaW50KCJGbHVzaGVkSW50MzIiKTsKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICBvdXQucHJpbnQoIkZsdXNo
ZWRJbnQzMiIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAg
ICAgICBvdXQucHJpbnQoIkZsdXNoZWREb3VibGUiKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMTU1
NjQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIGVudW0gRmx1c2hGb3JtYXQgewogICAgIERlYWRGbHVzaCwKICAgICBGbHVzaGVkSW50MzIs
CisgICAgRmx1c2hlZEludDQ4LAogICAgIEZsdXNoZWREb3VibGUsCiAgICAgRmx1c2hlZENlbGws
CiAgICAgRmx1c2hlZEJvb2xlYW4sCkBAIC01NSw2ICs1Niw4IEBAIGlubGluZSBOb2RlRmxhZ3Mg
cmVzdWx0Rm9yKEZsdXNoRm9ybWF0IGYKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRKUzsKICAg
ICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRJbnQzMjsKKyAg
ICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRJbnQ0ODsKICAg
ICBjYXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0TnVtYmVyOwog
ICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CkBAIC03NCw2ICs3Nyw4IEBAIGlubGluZSBVc2VLaW5k
IHVzZUtpbmRGb3IoRmx1c2hGb3JtYXQgZm8KICAgICAgICAgcmV0dXJuIENlbGxVc2U7CiAgICAg
Y2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVybiBJbnQzMlVzZTsKKyAgICBjYXNlIEZs
dXNoZWRJbnQ0ODoKKyAgICAgICAgcmV0dXJuIEludDQ4VXNlOwogICAgIGNhc2UgRmx1c2hlZERv
dWJsZToKICAgICAgICAgcmV0dXJuIE51bWJlclVzZTsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFu
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCShyZXZpc2lv
biAxNTU2NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKICNkZWZpbmUgTm9kZVJlc3VsdEpTICAgICAgICAgICAgICAgICAgICAgMHgwMDAxCiAj
ZGVmaW5lIE5vZGVSZXN1bHROdW1iZXIgICAgICAgICAgICAgICAgIDB4MDAwMgogI2RlZmluZSBO
b2RlUmVzdWx0SW50MzIgICAgICAgICAgICAgICAgICAweDAwMDMKLSNkZWZpbmUgTm9kZVJlc3Vs
dEJvb2xlYW4gICAgICAgICAgICAgICAgMHgwMDA0Ci0jZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdl
ICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0SW50NDggICAgICAgICAg
ICAgICAgICAweDAwMDQKKyNkZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAg
MHgwMDA1CisjZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICNkZWZpbmUgTm9kZU11c3RHZW5lcmF0
ZSAgICAgICAgICAgICAgICAgMHgwMDA4IC8vIHNldCBvbiBub2RlcyB0aGF0IGhhdmUgc2lkZSBl
ZmZlY3RzLCBhbmQgbWF5IG5vdCB0cml2aWFsbHkgYmUgcmVtb3ZlZCBieSBEQ0UuCiAjZGVmaW5l
IE5vZGVIYXNWYXJBcmdzICAgICAgICAgICAgICAgICAgIDB4MDAxMApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTU1NjQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQs
NiArMTE0LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKElu
dDMyVG9Eb3VibGUsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICAvKiBVc2VkIHRvIHNwZWN1bGF0
ZSB0aGF0IGEgZG91YmxlIHZhbHVlIGlzIGFjdHVhbGx5IGFuIGludGVnZXIuICovXAogICAgIG1h
Y3JvKERvdWJsZUFzSW50MzIsIE5vZGVSZXN1bHRJbnQzMiB8IE5vZGVFeGl0c0ZvcndhcmQpIFwK
KyAgICAvKiBVc2VkIHRvIHNlcGFyYXRlIHJlcHJlc2VudGF0aW9uIGFuZCByZWdpc3RlciBhbGxv
Y2F0aW9uIG9mIEludDQ4J3MgcmVwcmVzZW50ZWQgKi9cCisgICAgLyogYXMgdmFsdWVzLiAqL1wK
KyAgICBtYWNybyhJbnQ0OFRvVmFsdWUsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBO
b2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhBcml0aEFkZCwg
Tm9kZVJlc3VsdE51bWJlciB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1NTY0NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjY4NCw2ICsyNjg0LDEwMCBAQCBwcml2YXRlOgogICAgIERhdGFGb3JtYXQg
bV9mb3JtYXQ7CiB9OwogCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NDggKGkuZS4gaXQn
cyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorY2xhc3MgU3BlY3VsYXRlSW50
NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQo
U3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1v
ZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQor
ICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRH
UFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEludDQ4VXNlKTsKKyAgICAg
ICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0K
KyAgICAKKyAgICB+U3BlY3VsYXRlSW50NDhPcGVyYW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX2dwck9ySW52YWxpZCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9j
ayhtX2dwck9ySW52YWxpZCk7CisgICAgfQorICAgIAorICAgIEVkZ2UgZWRnZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9lZGdlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBub2Rl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKyAg
ICAKKyAgICBHUFJSZWcgZ3ByKCkKKyAgICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9
PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+Zmls
bFNwZWN1bGF0ZUludDQ4KGVkZ2UoKSwgbV9mb3JtYXQpOworICAgICAgICByZXR1cm4gbV9ncHJP
ckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1f
aml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZl
SklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7
Cit9OworCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NDggKGkuZS4gdGhlIHBheWxvYWQgaXMg
aW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgorY2xh
c3MgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBT
cGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdl
LCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRp
b24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAg
ICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNl
S2luZCgpID09IEludDQ4VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkK
KyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICB+U3BlY3VsYXRlSW50NDhPcGVy
YW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dwck9ySW52YWxpZCAhPSBJbnZhbGlkR1BS
UmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayhtX2dwck9ySW52YWxpZCk7CisgICAgfQorICAg
IAorICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lZGdlOwor
ICAgIH0KKyAgICAKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBlZGdlKCkubm9kZSgpOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcgZ3ByKCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
bV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZVN0cmljdEludDQ4KGVkZ2UoKSwg
bV9mb3JtYXQpOworICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQorICAgIAor
ICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9
CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1f
ZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7Cit9OworCiBjbGFzcyBTcGVjdWxhdGVT
dHJpY3RJbnQzMk9wZXJhbmQgewogcHVibGljOgogICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVN0cmlj
dEludDMyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVj
dWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAkocmV2aXNpb24gMTU1NjQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNiArNDQsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
VXNlCiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAgICAgICBvdXQucHJpbnQoIktub3duSW50
MzIiKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ0OFVzZToKKyAgICAgICAgb3V0LnBy
aW50KCJJbnQ0OCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAg
ICAgICAgIG91dC5wcmludCgiUmVhbE51bWJlciIpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAxNTU2NDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksNyBAQCBlbnVtIFVzZUtpbmQgewogICAgIFVudHlwZWRVc2UsCiAgICAgSW50MzJV
c2UsCiAgICAgS25vd25JbnQzMlVzZSwKKyAgICBJbnQ0OFVzZSwKICAgICBSZWFsTnVtYmVyVXNl
LAogICAgIE51bWJlclVzZSwKICAgICBLbm93bk51bWJlclVzZSwKQEAgLTY2LDYgKzY3LDggQEAg
QUxXQVlTX0lOTElORSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRgogICAgIGNhc2UgSW50MzJV
c2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAgICAgICByZXR1cm4gU3BlY0ludDMyOwor
ICAgIGNhc2UgSW50NDhVc2U6CisgICAgICAgIHJldHVybiBTcGVjSW50NDg7CiAgICAgY2FzZSBS
ZWFsTnVtYmVyVXNlOgogICAgICAgICByZXR1cm4gU3BlY1JlYWxOdW1iZXI7CiAgICAgY2FzZSBO
dW1iZXJVc2U6CkBAIC0xMjUsNiArMTI4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGlzTnVtZXJp
Y2FsKFVzZUtpbmQgawogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgSW50MzJVc2U6CiAg
ICAgY2FzZSBLbm93bkludDMyVXNlOgorICAgIGNhc2UgSW50NDhVc2U6CiAgICAgY2FzZSBSZWFs
TnVtYmVyVXNlOgogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211477</attachid>
            <date>2013-09-12 14:44:01 -0700</date>
            <delta_ts>2013-09-12 22:16:17 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>27754</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAkocmV2
aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0Tm9uZSA9IDAsCiAgICAgRGF0YUZvcm1h
dEludDMyID0gMSwKLSAgICBEYXRhRm9ybWF0RG91YmxlID0gMiwKLSAgICBEYXRhRm9ybWF0Qm9v
bGVhbiA9IDMsCi0gICAgRGF0YUZvcm1hdENlbGwgPSA0LAotICAgIERhdGFGb3JtYXRTdG9yYWdl
ID0gNSwKKyAgICBEYXRhRm9ybWF0SW50NDggPSAyLCAvLyBJbnQ0OCdzIGFyZSBsZWZ0LXNoaWZ0
ZWQgYnkgMTYgYnkgZGVmYXVsdC4KKyAgICBEYXRhRm9ybWF0U3RyaWN0SW50NDggPSAzLCAvLyAi
U3RyaWN0IiBJbnQ0OCBtZWFucyBpdCdzIG5vdCBzaGlmdGVkLgorICAgIERhdGFGb3JtYXREb3Vi
bGUgPSA0LAorICAgIERhdGFGb3JtYXRCb29sZWFuID0gNSwKKyAgICBEYXRhRm9ybWF0Q2VsbCA9
IDYsCisgICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA3LAogICAgIERhdGFGb3JtYXRKUyA9IDgsCiAg
ICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAg
ICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwK
QEAgLTY0LDYgKzY2LDEwIEBAIGlubGluZSBjb25zdCBjaGFyKiBkYXRhRm9ybWF0VG9TdHJpbmco
RGEKICAgICAgICAgcmV0dXJuICJOb25lIjsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAg
ICAgICAgcmV0dXJuICJJbnQzMiI7CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAg
IHJldHVybiAiSW50NDgiOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1
cm4gIlN0cmljdEludDQ4IjsKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgIHJl
dHVybiAiRG91YmxlIjsKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZpc2lv
biAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDUsMTYgKzM0NSwxMSBAQCBTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhCiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CiAg
ICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVl
LmFzTnVtYmVyKCk7Ci0gICAgICAgIGlmIChudW1iZXIgPT0gbnVtYmVyKSB7Ci0gICAgICAgICAg
ICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIpOwotICAgICAg
ICAgICAgaWYgKGFzSW50NjQgPT0gbnVtYmVyICYmIChhc0ludDY0IHx8ICFzdGQ6OnNpZ25iaXQo
bnVtYmVyKSkKLSAgICAgICAgICAgICAgICAmJiBhc0ludDY0IDwgKHN0YXRpY19jYXN0PGludDY0
X3Q+KDEpIDw8IDQ3KQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPj0gLShzdGF0aWNfY2Fz
dDxpbnQ2NF90PigxKSA8PCA0NykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU3BlY0ludDQ4
QXNEb3VibGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU3BlY05vbkludEFz
RG91YmxlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFOOworICAgICAg
ICBpZiAobnVtYmVyICE9IG51bWJlcikKKyAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFO
OworICAgICAgICBpZiAodmFsdWUuaXNNYWNoaW5lSW50KCkpCisgICAgICAgICAgICByZXR1cm4g
U3BlY0ludDQ4QXNEb3VibGU7CisgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAg
ICAgfQogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
RnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbi5oCShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDE1IEBAIGlubGluZSBi
b29sIGVuYWJsZUNvbmN1cnJlbnRKSVQoKQogI2VuZGlmCiB9CiAKK2lubGluZSBib29sIGVuYWJs
ZUludDQ4KCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiB0cnVlOworI2Vsc2UK
KyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogZW51bSBTcGlsbFJlZ2lzdGVyc01vZGUg
eyBOZWVkVG9TcGlsbCwgRG9udFNwaWxsIH07CiAKIGVudW0gTm9SZXN1bHRUYWcgeyBOb1Jlc3Vs
dCB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuYWJsZUlu
dDQ4KCkgJiYgbV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ0OFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZml4RWRnZTxO
dW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0yMDcsNiArMjExLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgbV9ncmFwaC5tdWxTaG91
bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQ0OFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NDhV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0zMDAsNiArMzA5LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkKKyAgICAgICAgICAg
ICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50NDhVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDQ4
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNo
aWxkMigpKTsKQEAgLTM1NSw2ICszNjksMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKQorICAgICAgICAg
ICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCku
bm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ0OFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
NDhVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAtMTM1Myw2ICsxMzczLDU5IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG9ic2VydmVVc2VLaW5kT25O
b2RlPHVzZUtpbmQ+KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChlbmFibGVJ
bnQ0OCgpICYmIHVzZUtpbmQgIT0gSW50NDhVc2UKKyAgICAgICAgICAgICYmIGVkZ2UtPnNob3Vs
ZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSAmJiAhZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkg
eworICAgICAgICAgICAgLy8gV2UgbWFrZSBhbGwgbm9uLWludDQ4IHVzZXMgb2YgaW50NDggdmFs
dWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDQ4VG9WYWx1ZQorICAgICAgICAgICAgLy8gbm9k
ZSB0byBlbnN1cmUgdGhhdCB3ZSBoYW5kbGUgdGhpcyBwcm9wZXJseToKKyAgICAgICAgICAgIC8v
CisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRk
KEBhLCAuLi4pCisgICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgQGEpCisgICAgICAgICAgICAv
LyBkOiBBcml0aEFkZChAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFdp
dGhvdXQgYW4gaW50ZXJtZWRpYXRlIG5vZGUgYW5kIGp1c3QgbGFiZWxpbmcgdGhlIHVzZXMsIHdl
IHdpbGwgZ2V0OgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ0OAor
ICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoSW50NDg6QGEsIC4uLikKKyAgICAgICAgICAgIC8v
IGM6IENhbGwoLi4uLCBVbnR5cGVkOkBhKQorICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoSW50
NDg6QGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBBbmQgbm93IHRoZSBj
LT5VbnR5cGVkOkBhIGVkZ2Ugd2lsbCBib3ggdGhlIHZhbHVlIG9mIEBhIGludG8gYSBkb3VibGUu
IFRoaXMKKyAgICAgICAgICAgIC8vIGlzIGJhZCwgYmVjYXVzZSBub3cgdGhlIGQtPkludDQ4OkBh
IGVkZ2Ugd2lsbCBlaXRoZXIgaGF2ZSB0byBkbyBkb3VibGUtdG8taW50CisgICAgICAgICAgICAv
LyBjb252ZXJzaW9ucywgb3Igd2lsbCBoYXZlIHRvIE9TUiBleGl0IHVuY29uZGl0aW9uYWxseS4g
QWx0ZXJuYXRpdmVseSB3ZSBjb3VsZAorICAgICAgICAgICAgLy8gaGF2ZSB0aGUgYy0+VW50eXBl
ZDpAYSBlZGdlIGJveCB0aGUgdmFsdWUgYnkgY29weWluZyByYXRoZXIgdGhhbiBpbi1wbGFjZS4K
KyAgICAgICAgICAgIC8vIEJ1dCB0aGVzZSBib3hpbmdzIGFyZSBhbHNvIGNvc3RseSBzbyB0aGlz
IHdvdWxkbid0IGJlIGdyZWF0LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFRoZSBz
b2x1dGlvbiB3ZSB1c2UgaXMgdG8gYWx3YXlzIGhhdmUgbm9uLUludDQ4IHVzZXMgb2YgcHJlZGlj
dGVkIEludDQ4J3MgdXNlCisgICAgICAgICAgICAvLyBhbiBpbnRlcnZlbmluZyBJbnQ0OFRvVmFs
dWUgbm9kZToKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAg
ICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLyB4
OiBJbnQ0OFRvVmFsdWUoSW50NDg6QGEpCisgICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50
eXBlZDpAeCkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAg
ICAgICAgICAvLworICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGV2ZW4gaWYgd2UgaGFkIG11bHRp
cGxlIG5vbi1pbnQ0OCB1c2VzIG9mIEBhLCB0aGUgbXVsdGlwbGUKKyAgICAgICAgICAgIC8vIElu
dDQ4VG9WYWx1ZSdzIHdvdWxkIGdldCBDU0UnZCB0b2dldGhlci4gU28gdGhlIGJveGluZyB3b3Vs
ZCBvbmx5IGhhcHBlbiBvbmNlLgorICAgICAgICAgICAgLy8gQXQgdGhlIHNhbWUgdGltZSwgQGEg
d291bGQgY29udGludWUgdG8gYmUgcmVwcmVzZW50ZWQgYXMgYSBuYXRpdmUgaW50NDguCisgICAg
ICAgICAgICAvLworICAgICAgICAgICAgLy8gQW4gYWx0ZXJuYXRpdmUgd291bGQgaGF2ZSBiZWVu
IHRvIGluc2VydCBUb05hdGl2ZUludDQ4IG5vZGVzIG9uIGludDQ4IHVzZXMgb2YKKyAgICAgICAg
ICAgIC8vIGludDQ4J3MuIFRoaXMgd291bGQgaGF2ZSBoYW5kbGVkIHRoZSBhYm92ZSBleGFtcGxl
IGJ1dCB3b3VsZCBmYWxsIG92ZXIgZm9yOgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8v
IGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8gYjogQ2FsbCguLi4sIEBhKQorICAgICAgICAg
ICAgLy8gYzogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAv
LyBCdXQgdGhlIHNvbHV0aW9uIHdlIHVzZSBoYW5kbGVzIHRoZSBhYm92ZSBncmFjZWZ1bGx5Lgor
ICAgICAgICAgICAgCisgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDgsIElu
dDQ4VG9WYWx1ZSwKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBF
ZGdlKGVkZ2Uubm9kZSgpLCBJbnQ0OFVzZSkpOworICAgICAgICAgICAgZWRnZSA9IEVkZ2UocmVz
dWx0LCB1c2VLaW5kKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKHVzZUtpbmQpOwogICAgIH0KICAgICAKQEAgLTEzNzgs
NyArMTQ1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShF
ZGdlJiBlZGdlLCBVc2VLaW5kIHVzZUtpbmQgPSBOdW1iZXJVc2UsIFNwZWN1bGF0aW9uRGlyZWN0
aW9uIGRpcmVjdGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBOb2Rl
KiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNJbnQ0OCwgSW50MzJUb0RvdWJsZSwKKyAgICAgICAgICAgIG1faW5kZXhJ
bkJsb2NrLCBTcGVjSW50NDhBc0RvdWJsZSwgSW50MzJUb0RvdWJsZSwKICAgICAgICAgICAgIG1f
Y3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwog
ICAgICAgICBpZiAoZGlyZWN0aW9uID09IEZvcndhcmRTcGVjdWxhdGlvbikKICAgICAgICAgICAg
IHJlc3VsdC0+bWVyZ2VGbGFncyhOb2RlRXhpdHNGb3J3YXJkKTsKQEAgLTEzOTIsNiArMTQ2NSwx
NyBAQCBwcml2YXRlOgogICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQpOwogICAg
IH0KICAgICAKKyAgICAvLyBXZSBtYWtlIGFsbCBpbnQ0OCBlZGdlcyBoYXZlIGFuIGludGVybWVk
aWF0ZSBBc05hdGl2ZUludDQ4IG5vZGUgdG8gZW5zdXJlCisgICAgLy8gdGhhdCB3ZSBoYW5kbGUg
dGhpcyBwcm9wZXJseToKKyAgICB0ZW1wbGF0ZTxVc2VLaW5kIHVzZUtpbmQ+CisgICAgdm9pZCBm
aXhJbnQ0OEVkZ2UoRWRnZSYgZWRnZSkKKyAgICB7CisgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y0ludDQ4LCBBc05hdGl2ZUludDQ4LAorICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9y
aWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgdXNlS2luZCkpOworICAgICAgICBlZGdlID0gZWRnZShy
ZXN1bHQsIEludDQ4VXNlKTsKKyAgICB9CisKICAgICB2b2lkIHRydW5jYXRlQ29uc3RhbnRUb0lu
dDMyKEVkZ2UmIGVkZ2UpCiAgICAgewogICAgICAgICBOb2RlKiBvbGROb2RlID0gZWRnZS5ub2Rl
KCk7CkBAIC0xNDM0LDEzICsxNTE4LDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBhdHRlbXB0VG9N
YWtlSW50ZWdlckFkZChOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgQWRkU3BlY3VsYXRpb25N
b2RlIG1vZGUgPSBtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShub2RlKTsKLSAgICAgICAgaWYg
KG1vZGUgPT0gRG9udFNwZWN1bGF0ZUludDMyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAobW9kZSAhPSBEb250U3BlY3VsYXRlSW50MzIpIHsKKyAgICAgICAgICAgIHRy
dW5jYXRlQ29uc3RhbnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9kZSk7CisgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgdHJ1bmNhdGVDb25zdGFudHNJZk5lY2Vzc2FyeShub2RlLCBt
b2RlKTsKLSAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiBtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0
ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50NDhVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50NDhVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUdldEFy
cmF5TGVuZ3RoKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZsdXNoRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZsdXNoRm9ybWF0LmNwcAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQx
LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEZsdQogICAgIGNhc2Ug
Rmx1c2hlZEludDMyOgogICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWRJbnQzMiIpOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIG91dC5wcmludCgiRmx1
c2hlZEludDMyIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6CiAg
ICAgICAgIG91dC5wcmludCgiRmx1c2hlZERvdWJsZSIpOwogICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAx
NTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogZW51bSBGbHVzaEZvcm1hdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJbnQz
MiwKKyAgICBGbHVzaGVkSW50NDgsCiAgICAgRmx1c2hlZERvdWJsZSwKICAgICBGbHVzaGVkQ2Vs
bCwKICAgICBGbHVzaGVkQm9vbGVhbiwKQEAgLTU1LDYgKzU2LDggQEAgaW5saW5lIE5vZGVGbGFn
cyByZXN1bHRGb3IoRmx1c2hGb3JtYXQgZgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEpTOwog
ICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEludDMyOwor
ICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEludDQ4Owog
ICAgIGNhc2UgRmx1c2hlZERvdWJsZToKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHROdW1iZXI7
CiAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKQEAgLTc0LDYgKzc3LDggQEAgaW5saW5lIFVzZUtp
bmQgdXNlS2luZEZvcihGbHVzaEZvcm1hdCBmbwogICAgICAgICByZXR1cm4gQ2VsbFVzZTsKICAg
ICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMyVXNlOworICAgIGNhc2Ug
Rmx1c2hlZEludDQ4OgorICAgICAgICByZXR1cm4gSW50NDhVc2U7CiAgICAgY2FzZSBGbHVzaGVk
RG91YmxlOgogICAgICAgICByZXR1cm4gTnVtYmVyVXNlOwogICAgIGNhc2UgRmx1c2hlZEJvb2xl
YW46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5m
by5oCShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dl
bmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDE0IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIGluaXRHUFIobm9kZSwgdXNlQ291bnQsIGdwciwgRGF0YUZvcm1hdElu
dDMyKTsKICAgICB9CisgICAgdm9pZCBpbml0SW50NDgoTm9kZSogbm9kZSwgdWludDMyX3QgdXNl
Q291bnQsIEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50
LCBncHIsIERhdGFGb3JtYXRJbnQ0OCk7CisgICAgfQorICAgIHZvaWQgaW5pdFN0cmljdEludDQ4
KE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgcmVnKQorICAgIHsKKyAgICAg
ICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOwor
ICAgIH0KICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgaW5pdEpTVmFsdWUoTm9kZSogbm9k
ZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyBncHIsIERhdGFGb3JtYXQgZm9ybWF0ID0gRGF0
YUZvcm1hdEpTKQogICAgIHsKQEAgLTE4Nyw2ICsxOTUsMTEgQEAgcHVibGljOgogICAgIC8vIEdl
dCB0aGUgZm9ybWF0IG9mIHRoZSB2YWx1ZSBhcyBpdCBpcyBzcGlsbGVkIGluIHRoZSBKU1N0YWNr
IChvciAnbm9uZScpLgogICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQoKSB7IHJldHVybiBtX3Nw
aWxsRm9ybWF0OyB9CiAgICAgCisgICAgYm9vbCBpc0Zvcm1hdChEYXRhRm9ybWF0IGV4cGVjdGVk
Rm9ybWF0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ybWF0KCkgPT0gZXhwZWN0
ZWRGb3JtYXQgfHwgc3BpbGxGb3JtYXQoKSA9PSBleHBlY3RlZEZvcm1hdDsKKyAgICB9CisgICAg
CiAgICAgYm9vbCBpc0pTRm9ybWF0KERhdGFGb3JtYXQgZXhwZWN0ZWRGb3JtYXQpCiAgICAgewog
ICAgICAgICByZXR1cm4gSlNDOjppc0pTRm9ybWF0KHJlZ2lzdGVyRm9ybWF0KCksIGV4cGVjdGVk
Rm9ybWF0KSB8fCBKU0M6OmlzSlNGb3JtYXQoc3BpbGxGb3JtYXQoKSwgZXhwZWN0ZWRGb3JtYXQp
OwpAQCAtMTk3LDYgKzIxMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBpc0pTRm9ybWF0
KERhdGFGb3JtYXRKU0ludDMyKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBpc0ludDQ4KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBpc0Zvcm1hdChEYXRhRm9ybWF0SW50NDgpOworICAgIH0KKyAg
ICAKKyAgICBib29sIGlzU3RyaWN0SW50NDgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzRm9y
bWF0KERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgfQorICAgIAogICAgIGJvb2wgaXNKU0Rv
dWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gaXNKU0Zvcm1hdChEYXRhRm9ybWF0SlNEb3Vi
bGUpOwpAQCAtMzE0LDYgKzMzNywxNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBmaWxsR1BS
KHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SW50MzIpOwogICAgIH0KKyAgICB2b2lkIGZpbGxJbnQ0
OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIpCisgICAgeworICAgICAg
ICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SW50NDgpOworICAgIH0KKyAgICB2b2lk
IGZpbGxTdHJpY3RJbnQ0OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIp
CisgICAgeworICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0U3RyaWN0SW50
NDgpOworICAgIH0KICAgICB2b2lkIGZpbGxCb29sZWFuKFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0
cmVhbSwgR1BSUmVnIGdwcikKICAgICB7CiAgICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERh
dGFGb3JtYXRCb29sZWFuKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
RmxhZ3MuaAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5vZGVSZXN1bHRKUyAgICAgICAgICAgICAg
ICAgICAgIDB4MDAwMQogI2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAgICAgICAgICAgICAgICAw
eDAwMDIKICNkZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAgICAgICAgMHgwMDAzCi0j
ZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4MDAwNAotI2RlZmluZSBO
b2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUgTm9kZVJlc3Vs
dEludDQ4ICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFu
ICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAg
ICAgICAgICAweDAwMDYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAjZGVmaW5l
IE5vZGVNdXN0R2VuZXJhdGUgICAgICAgICAgICAgICAgIDB4MDAwOCAvLyBzZXQgb24gbm9kZXMg
dGhhdCBoYXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92ZWQg
YnkgRENFLgogI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAgICAgICAgICAweDAwMTAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE1
NTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhJbnQzMlRvRG91YmxlLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgLyog
VXNlZCB0byBzcGVjdWxhdGUgdGhhdCBhIGRvdWJsZSB2YWx1ZSBpcyBhY3R1YWxseSBhbiBpbnRl
Z2VyLiAqL1wKICAgICBtYWNybyhEb3VibGVBc0ludDMyLCBOb2RlUmVzdWx0SW50MzIgfCBOb2Rl
RXhpdHNGb3J3YXJkKSBcCisgICAgLyogVXNlZCB0byBzZXBhcmF0ZSByZXByZXNlbnRhdGlvbiBh
bmQgcmVnaXN0ZXIgYWxsb2NhdGlvbiBvZiBJbnQ0OCdzIHJlcHJlc2VudGVkICovXAorICAgIC8q
IGFzIHZhbHVlcy4gKi9cCisgICAgbWFjcm8oSW50NDhUb1ZhbHVlLCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCiAgICAg
bWFjcm8oQXJpdGhBZGQsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lz
dGVyU2F2ZVBsYW4uaAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYg
KzQ4LDggQEAgZW51bSBTaWxlbnRTcGlsbEFjdGlvbiB7CiBlbnVtIFNpbGVudEZpbGxBY3Rpb24g
ewogICAgIERvTm90aGluZ0ZvckZpbGwsCiAgICAgU2V0SW50MzJDb25zdGFudCwKKyAgICBTZXRJ
bnQ0OENvbnN0YW50LAorICAgIFNldFN0cmljdEludDQ4Q29uc3RhbnQsCiAgICAgU2V0Qm9vbGVh
bkNvbnN0YW50LAogICAgIFNldENlbGxDb25zdGFudCwKICAgICBTZXRUcnVzdGVkSlNDb25zdGFu
dCwKQEAgLTYxLDggKzYzLDEyIEBAIGVudW0gU2lsZW50RmlsbEFjdGlvbiB7CiAgICAgTG9hZDMy
VGFnLAogICAgIExvYWQzMlBheWxvYWQsCiAgICAgTG9hZDMyUGF5bG9hZEJveEludCwKKyAgICBM
b2FkMzJQYXlsb2FkQ29udmVydFRvSW50NDgsCisgICAgTG9hZDMyUGF5bG9hZFNpZ25FeHRlbmQs
CiAgICAgTG9hZFB0ciwKICAgICBMb2FkNjQsCisgICAgTG9hZDY0U2hpZnRSaWdodDE2LAorICAg
IExvYWQ2NFNoaWZ0TGVmdDE2LAogICAgIExvYWREb3VibGUsCiAgICAgTG9hZERvdWJsZUJveERv
dWJsZSwKICAgICBMb2FkSlNVbmJveERvdWJsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1NTY0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzUsNyArMzM1LDkgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2
ZUpJVDo6cwogICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZTMyUGF5bG9hZDsKICAgICAg
ICAgZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdENlbGwgfHwgcmVnaXN0ZXJG
b3JtYXQgPT0gRGF0YUZvcm1hdFN0b3JhZ2UpCiAgICAgICAgICAgICBzcGlsbEFjdGlvbiA9IFN0
b3JlUHRyOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQg
PT0gRGF0YUZvcm1hdEludDQ4IHx8IHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJ
bnQ0OCkgeworICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZTY0OworICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsK
ICAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmU2NDsKICAgICAgICAgfQpAQCAtMzg2LDYg
KzM4OCw0MCBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAg
fSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RvcmFnZSkgewogICAgICAg
ICBBU1NFUlQoaW5mby5ncHIoKSA9PSBzb3VyY2UpOwogICAgICAgICBmaWxsQWN0aW9uID0gTG9h
ZFB0cjsKKyAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkg
eworICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIGZpbGxBY3Rp
b24gPSBTZXRJbnQ0OENvbnN0YW50OworICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5z
cGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQorICAg
ICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRDb252ZXJ0VG9JbnQ0ODsKKyAgICAg
ICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAg
ICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgICAgICBmaWxsQWN0aW9u
ID0gTG9hZDY0U2hpZnRMZWZ0MTY7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0Tm9uZSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhp
bmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgorICAgICAgICAgICAgLy8g
YmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAo
dG8tZG91YmxlCisgICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUg
bm9kZSkuCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NDgpCisgICAgICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKQorICAgICAgICAgICAgZmlsbEFj
dGlvbiA9IFNldFN0cmljdEludDQ4Q29uc3RhbnQ7CisgICAgICAgIGVsc2UgaWYgKGlzSlNJbnQz
MihpbmZvLnNwaWxsRm9ybWF0KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0
SlMpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDMyUGF5bG9hZFNpZ25FeHRlbmQ7Cisg
ICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50NDgpCisg
ICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0U2hpZnRSaWdodDE2OworICAgICAgICBlbHNl
IGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAg
ICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZv
cm1hdCgpID09IERhdGFGb3JtYXROb25lKQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2
NDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuLiBB
bnl0aGluZyB0aGF0IHF1YWxpZmllcyBhcyBhbiBpbnQzMiB3aWxsIG5ldmVyCisgICAgICAgICAg
ICAvLyBiZSB0dXJuZWQgaW50byBhIGNlbGwgKGltbWVkaWF0ZSBzcGVjIGZhaWwpIG9yIGEgZG91
YmxlICh0by1kb3VibGUKKyAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zIGludm9sdmUgYSBzZXBh
cmF0ZSBub2RlKS4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgJiBE
YXRhRm9ybWF0SlMpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0zOTMsNyArNDI5LDYgQEAgU2ls
ZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICBpZiAobm9kZS0+
aGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgaWYgKHZhbHVlT2ZKU0NvbnN0YW50KG5vZGUp
LmlzQ2VsbCgpKQogICAgICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRUcnVzdGVkSlNDb25z
dGFudDsKLSAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0
SlNDb25zdGFudDsKICAgICAgICAgfSBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0
YUZvcm1hdEludDMyKSB7CiAgICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgPT0gRGF0
YUZvcm1hdEpTSW50MzIpOwpAQCAtNTEyLDYgKzU0NywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgY2FzZSBTZXRJbnQzMkNvbnN0YW50OgogICAgICAg
ICBtX2ppdC5tb3ZlKEltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0YW50KHBsYW4ubm9kZSgpKSksIHBs
YW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNldEludDQ4Q29uc3RhbnQ6Cisg
ICAgICAgIG1faml0Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29uc3RhbnQocGxhbi5ub2RlKCkpLmFz
TWFjaGluZUludCgpIDw8IDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU2V0U3RyaWN0SW50NDhDb25zdGFudDoKKyAgICAgICAgbV9qaXQubW92ZShJbW02NCh2YWx1
ZU9mSlNDb25zdGFudChwbGFuLm5vZGUoKSkuYXNNYWNoaW5lSW50KCkpLCBwbGFuLmdwcigpKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXRCb29sZWFuQ29uc3RhbnQ6CiAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKHZhbHVlT2ZCb29sZWFuQ29uc3RhbnQocGxhbi5ub2RlKCkp
KSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTMzLDYgKzU3NCwxNSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkp
LCBwbGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIExvYWQzMlBh
eWxvYWRDb252ZXJ0VG9JbnQ0ODoKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpw
YXlsb2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwor
ICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihwbGFuLmdwcigpLCBwbGFuLmdwcigpKTsK
KyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTG9hZDMyUGF5bG9hZFNpZ25FeHRlbmQ6CisgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVh
bFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9Q
dHIocGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTG9h
ZERvdWJsZUJveERvdWJsZToKICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAg
ICAgICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHBsYW4uZ3By
KCkpOwpAQCAtNTc0LDYgKzYyNCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxs
KGNvbnN0IFNpCiAgICAgY2FzZSBMb2FkNjQ6CiAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21w
aWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdw
cigpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkNjRTaGlmdFJpZ2h0MTY6CisgICAg
ICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmly
dHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1
c3RlZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTG9h
ZDY0U2hpZnRMZWZ0MTY6CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVz
c0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAg
ICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAg
IGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBMb2FkRG91YmxlOgogICAgICAgICBtX2ppdC5sb2Fk
RG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0
ZXIoKSksIHBsYW4uZnByKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjg0LDYg
KzI2ODQsMTAwIEBAIHByaXZhdGU6CiAgICAgRGF0YUZvcm1hdCBtX2Zvcm1hdDsKIH07CiAKKy8v
IEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ0OCAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAx
NiwgbG93IGJpdHMgemVybykuCitjbGFzcyBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0
LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJh
bmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVk
Z2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24g
fHwgZWRnZS51c2VLaW5kKCkgPT0gSW50NDhVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxl
ZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIH5TcGVjdWxh
dGVJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9
IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsK
KyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAgIEdQUlJlZyBncHIo
KQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisg
ICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlSW50NDgoZWRn
ZSgpLCBtX2Zvcm1hdCk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkpOwor
ICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVk
Z2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisKKy8vIEdpdmVzIHlv
dSBhIHN0cmljdCBJbnQ0OCAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMs
IGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCitjbGFzcyBTcGVjdWxhdGVTdHJpY3RJ
bnQ0OE9wZXJhbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVN0cmljdEludDQ4
T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlv
bk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2pp
dChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQo
SW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9
PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gSW50NDhVc2Up
OworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7
CisgICAgfQorICAgIAorICAgIH5TcGVjdWxhdGVJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2pp
dC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5v
ZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7Cisg
ICAgfQorICAgIAorICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJ
bnZhbGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1f
aml0LT5maWxsU3BlY3VsYXRlU3RyaWN0SW50NDgoZWRnZSgpLCBtX2Zvcm1hdCk7CisgICAgICAg
IHJldHVybiBtX2dwck9ySW52YWxpZDsKKyAgICB9CisgICAgCisgICAgdm9pZCB1c2UoKQorICAg
IHsKKyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKyAgICAKK3ByaXZhdGU6Cisg
ICAgU3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBt
X2dwck9ySW52YWxpZDsKK307CisKIGNsYXNzIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCB7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kKFNwZWN1
bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0g
QXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdVc2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuY3BwCShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw5IEBA
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2UKICAgICBjYXNlIEtub3du
SW50MzJVc2U6CiAgICAgICAgIG91dC5wcmludCgiS25vd25JbnQzMiIpOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIEludDQ4VXNlOgorICAgICAgICBvdXQucHJpbnQoIkludDQ4Iik7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgUmVhbE51bWJlclVzZToKICAgICAgICAgb3V0LnByaW50KCJS
ZWFsTnVtYmVyIik7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdVc2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdVc2VLaW5kLmgJKHJldmlzaW9uIDE1NTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIGVudW0g
VXNlS2luZCB7CiAgICAgVW50eXBlZFVzZSwKICAgICBJbnQzMlVzZSwKICAgICBLbm93bkludDMy
VXNlLAorICAgIEludDQ4VXNlLAogICAgIFJlYWxOdW1iZXJVc2UsCiAgICAgTnVtYmVyVXNlLAog
ICAgIEtub3duTnVtYmVyVXNlLApAQCAtNjYsNiArNjcsOCBAQCBBTFdBWVNfSU5MSU5FIFNwZWN1
bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNlIEtub3du
SW50MzJVc2U6CiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CisgICAgY2FzZSBJbnQ0OFVzZToK
KyAgICAgICAgcmV0dXJuIFNwZWNJbnQ0ODsKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAg
ICAgIHJldHVybiBTcGVjUmVhbE51bWJlcjsKICAgICBjYXNlIE51bWJlclVzZToKQEAgLTEyNSw2
ICsxMjgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBrCiAgICAg
c3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNlIEtub3duSW50MzJV
c2U6CisgICAgY2FzZSBJbnQ0OFVzZToKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgY2Fz
ZSBOdW1iZXJVc2U6CiAgICAgY2FzZSBLbm93bk51bWJlclVzZToKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkocmV2aXNpb24g
MTU1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0Rh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzMzLDYgKzMzMyw5IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBG
bHVzaGVkSW50MzI7CiAgICAgICAgIAorICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiBpc01h
Y2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBGbHVz
aGVkSW50NDg7CisgICAgICAgIAogICAgICAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJlZGlj
dGlvbikpCiAgICAgICAgICAgICByZXR1cm4gRmx1c2hlZENlbGw7CiAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTU1
NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDcgQEAgcHVibGljOgogCiAgICAgaW50MzJfdCBhc0lu
dDMyKCkgY29uc3Q7CiAgICAgdWludDMyX3QgYXNVSW50MzIoKSBjb25zdDsKKyAgICBpbnQ2NF90
IGFzTWFjaGluZUludCgpIGNvbnN0OwogICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0OwogICAg
IGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CiAgICAgZG91YmxlIGFzTnVtYmVyKCkgY29uc3Q7CkBA
IC0yMDIsNiArMjAzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNCb29sZWFuKCkgY29u
c3Q7CisgICAgYm9vbCBpc01hY2hpbmVJbnQoKSBjb25zdDsKICAgICBib29sIGlzTnVtYmVyKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwogICAgIGJvb2wgaXNQcmltaXRpdmUo
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDk0LDYg
KzQ5NCwzNSBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgCiAKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc01hY2hpbmVJ
bnQoKSBjb25zdAoreworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmICghaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRvdWJsZSBu
dW1iZXIgPSBhc0RvdWJsZSgpOworICAgIGlmIChudW1iZXIgIT0gbnVtYmVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaW50NjRfdCBhc0ludDY0ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4o
bnVtYmVyKTsKKyAgICBpZiAoYXNJbnQ2NCAhPSBudW1iZXIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWFzSW50NjQgJiYgc3RkOjpzaWduYml0KG51bWJlcikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoYXNJbnQ2NCA+PSAoc3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkg
PDwgNDcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGFzSW50NjQgPCAtKHN0YXRp
Y19jYXN0PGludDY0X3Q+KDEpIDw8IDQ3KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiB0cnVlOworfQorCitpbmxpbmUgaW50NjRfdCBKU1ZhbHVlOjphc01hY2hpbmVJbnQoKSBj
b25zdAoreworICAgIEFTU0VSVChpc01hY2hpbmVJbnQoKSk7CisgICAgaWYgKGlzSW50MzIoKSkK
KyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRf
dD4oYXNEb3VibGUoKSk7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29u
c3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211507</attachid>
            <date>2013-09-12 22:16:17 -0700</date>
            <delta_ts>2013-09-13 18:54:52 -0700</delta_ts>
            <desc>it&apos;s getting real</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>44548</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAkocmV2
aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0Tm9uZSA9IDAsCiAgICAgRGF0YUZvcm1h
dEludDMyID0gMSwKLSAgICBEYXRhRm9ybWF0RG91YmxlID0gMiwKLSAgICBEYXRhRm9ybWF0Qm9v
bGVhbiA9IDMsCi0gICAgRGF0YUZvcm1hdENlbGwgPSA0LAotICAgIERhdGFGb3JtYXRTdG9yYWdl
ID0gNSwKKyAgICBEYXRhRm9ybWF0SW50NDggPSAyLCAvLyBJbnQ0OCdzIGFyZSBsZWZ0LXNoaWZ0
ZWQgYnkgMTYgYnkgZGVmYXVsdC4KKyAgICBEYXRhRm9ybWF0U3RyaWN0SW50NDggPSAzLCAvLyAi
U3RyaWN0IiBJbnQ0OCBtZWFucyBpdCdzIG5vdCBzaGlmdGVkLgorICAgIERhdGFGb3JtYXREb3Vi
bGUgPSA0LAorICAgIERhdGFGb3JtYXRCb29sZWFuID0gNSwKKyAgICBEYXRhRm9ybWF0Q2VsbCA9
IDYsCisgICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA3LAogICAgIERhdGFGb3JtYXRKUyA9IDgsCiAg
ICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAg
ICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwK
QEAgLTY0LDYgKzY2LDEwIEBAIGlubGluZSBjb25zdCBjaGFyKiBkYXRhRm9ybWF0VG9TdHJpbmco
RGEKICAgICAgICAgcmV0dXJuICJOb25lIjsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAg
ICAgICAgcmV0dXJuICJJbnQzMiI7CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAg
IHJldHVybiAiSW50NDgiOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1
cm4gIlN0cmljdEludDQ4IjsKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgIHJl
dHVybiAiRG91YmxlIjsKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZpc2lv
biAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDUsMTYgKzM0NSwxMSBAQCBTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhCiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CiAg
ICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVl
LmFzTnVtYmVyKCk7Ci0gICAgICAgIGlmIChudW1iZXIgPT0gbnVtYmVyKSB7Ci0gICAgICAgICAg
ICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIpOwotICAgICAg
ICAgICAgaWYgKGFzSW50NjQgPT0gbnVtYmVyICYmIChhc0ludDY0IHx8ICFzdGQ6OnNpZ25iaXQo
bnVtYmVyKSkKLSAgICAgICAgICAgICAgICAmJiBhc0ludDY0IDwgKHN0YXRpY19jYXN0PGludDY0
X3Q+KDEpIDw8IDQ3KQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPj0gLShzdGF0aWNfY2Fz
dDxpbnQ2NF90PigxKSA8PCA0NykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU3BlY0ludDQ4
QXNEb3VibGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU3BlY05vbkludEFz
RG91YmxlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFOOworICAgICAg
ICBpZiAobnVtYmVyICE9IG51bWJlcikKKyAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFO
OworICAgICAgICBpZiAodmFsdWUuaXNNYWNoaW5lSW50KCkpCisgICAgICAgICAgICByZXR1cm4g
U3BlY0ludDQ4QXNEb3VibGU7CisgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAg
ICAgfQogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
RnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbi5oCShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDE1IEBAIGlubGluZSBi
b29sIGVuYWJsZUNvbmN1cnJlbnRKSVQoKQogI2VuZGlmCiB9CiAKK2lubGluZSBib29sIGVuYWJs
ZUludDQ4KCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiB0cnVlOworI2Vsc2UK
KyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogZW51bSBTcGlsbFJlZ2lzdGVyc01vZGUg
eyBOZWVkVG9TcGlsbCwgRG9udFNwaWxsIH07CiAKIGVudW0gTm9SZXN1bHRUYWcgeyBOb1Jlc3Vs
dCB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuYWJsZUlu
dDQ4KCkgJiYgbV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ0OFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZml4RWRnZTxO
dW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0yMDcsNiArMjExLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgbV9ncmFwaC5tdWxTaG91
bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQ0OFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NDhV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0zMDAsNiArMzA5LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkKKyAgICAgICAgICAg
ICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50NDhVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEludDQ4
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNo
aWxkMigpKTsKQEAgLTM1NSw2ICszNjksMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKQorICAgICAgICAg
ICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCku
bm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ0OFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
NDhVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAtMTM0NywxMiArMTM2Nyw4NCBA
QCBwcml2YXRlOgogICAgIHRlbXBsYXRlPFVzZUtpbmQgdXNlS2luZD4KICAgICB2b2lkIGZpeEVk
Z2UoRWRnZSYgZWRnZSwgU3BlY3VsYXRpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gQmFja3dhcmRT
cGVjdWxhdGlvbikKICAgICB7Ci0gICAgICAgIGlmIChpc0RvdWJsZSh1c2VLaW5kKSAmJiBlZGdl
LT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgewotICAgICAgICAgICAgaW5q
ZWN0SW50MzJUb0RvdWJsZU5vZGUoZWRnZSwgdXNlS2luZCwgZGlyZWN0aW9uKTsKKyAgICAgICAg
aWYgKGlzRG91YmxlKHVzZUtpbmQpKSB7CisgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3Bl
Y3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsKKyAgICAgICAgICAgICAgICBpbmplY3RJbnQz
MlRvRG91YmxlTm9kZShlZGdlLCB1c2VLaW5kLCBkaXJlY3Rpb24pOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGVu
YWJsZUludDQ4KCkgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7CisgICAg
ICAgICAgICAgICAgLy8gTWFrZSBhbGwgZG91YmxlIHVzZXMgb2YgaW50NDggdmFsdWVzIGhhdmUg
YW4gaW50ZXJtZWRpYXRlIEludDQ4VG9Eb3VibGUuCisgICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIEludDQ4VG9WYWx1ZSAoc2VlIGJlbG93KSBleGNlcHQg
dGhhdAorICAgICAgICAgICAgICAgIC8vIEludDhUb0RvdWJsZSB3aWxsIGNvbnZlcnQgaW50NDgn
cyB0aGF0IGZpdCBpbiBhbiBpbnQzMiBpbnRvIGEgZG91YmxlCisgICAgICAgICAgICAgICAgLy8g
cmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGNyZWF0ZSBhIGJveGVkIGludDMyIGxpa2UgSW50NDhUb1Zh
bHVlIGRvZXMuCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgb2JzZXJ2ZVVzZUtp
bmRPbk5vZGU8SW50NDhVc2U+KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAg
ICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4QXNEb3VibGUsIEludDQ4
VG9Eb3VibGUsCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4s
IEVkZ2UoZWRnZS5ub2RlKCksIEludDQ4VXNlKSk7CisgICAgICAgICAgICAgICAgZWRnZSA9IEVk
Z2UocmVzdWx0LCB1c2VLaW5kKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIHVz
ZUtpbmQgIT0gSW50NDhVc2UKKyAgICAgICAgICAgICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1h
Y2hpbmVJbnQoKSAmJiAhZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgeworICAgICAgICAg
ICAgLy8gV2UgbWFrZSBhbGwgbm9uLWludDQ4IHVzZXMgb2YgaW50NDggdmFsdWVzIGhhdmUgYW4g
aW50ZXJtZWRpYXRlIEludDQ4VG9WYWx1ZQorICAgICAgICAgICAgLy8gbm9kZSB0byBlbnN1cmUg
dGhhdCB3ZSBoYW5kbGUgdGhpcyBwcm9wZXJseToKKyAgICAgICAgICAgIC8vCisgICAgICAgICAg
ICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEBhLCAuLi4pCisg
ICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgQGEpCisgICAgICAgICAgICAvLyBkOiBBcml0aEFk
ZChAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFdpdGhvdXQgYW4gaW50
ZXJtZWRpYXRlIG5vZGUgYW5kIGp1c3QgbGFiZWxpbmcgdGhlIHVzZXMsIHdlIHdpbGwgZ2V0Ogor
ICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAg
Ly8gYjogQXJpdGhBZGQoSW50NDg6QGEsIC4uLikKKyAgICAgICAgICAgIC8vIGM6IENhbGwoLi4u
LCBVbnR5cGVkOkBhKQorICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoSW50NDg6QGEsIC4uLikK
KyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBBbmQgbm93IHRoZSBjLT5VbnR5cGVkOkBh
IGVkZ2Ugd2lsbCBib3ggdGhlIHZhbHVlIG9mIEBhIGludG8gYSBkb3VibGUuIFRoaXMKKyAgICAg
ICAgICAgIC8vIGlzIGJhZCwgYmVjYXVzZSBub3cgdGhlIGQtPkludDQ4OkBhIGVkZ2Ugd2lsbCBl
aXRoZXIgaGF2ZSB0byBkbyBkb3VibGUtdG8taW50CisgICAgICAgICAgICAvLyBjb252ZXJzaW9u
cywgb3Igd2lsbCBoYXZlIHRvIE9TUiBleGl0IHVuY29uZGl0aW9uYWxseS4gQWx0ZXJuYXRpdmVs
eSB3ZSBjb3VsZAorICAgICAgICAgICAgLy8gaGF2ZSB0aGUgYy0+VW50eXBlZDpAYSBlZGdlIGJv
eCB0aGUgdmFsdWUgYnkgY29weWluZyByYXRoZXIgdGhhbiBpbi1wbGFjZS4KKyAgICAgICAgICAg
IC8vIEJ1dCB0aGVzZSBib3hpbmdzIGFyZSBhbHNvIGNvc3RseSBzbyB0aGlzIHdvdWxkbid0IGJl
IGdyZWF0LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFRoZSBzb2x1dGlvbiB3ZSB1
c2UgaXMgdG8gYWx3YXlzIGhhdmUgbm9uLUludDQ4IHVzZXMgb2YgcHJlZGljdGVkIEludDQ4J3Mg
dXNlCisgICAgICAgICAgICAvLyBhbiBpbnRlcnZlbmluZyBJbnQ0OFRvVmFsdWUgbm9kZToKKyAg
ICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8v
IGI6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLyB4OiBJbnQ0OFRvVmFs
dWUoSW50NDg6QGEpCisgICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAeCkKKyAg
ICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLwor
ICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGV2ZW4gaWYgd2UgaGFkIG11bHRpcGxlIG5vbi1pbnQ0
OCB1c2VzIG9mIEBhLCB0aGUgbXVsdGlwbGUKKyAgICAgICAgICAgIC8vIEludDQ4VG9WYWx1ZSdz
IHdvdWxkIGdldCBDU0UnZCB0b2dldGhlci4gU28gdGhlIGJveGluZyB3b3VsZCBvbmx5IGhhcHBl
biBvbmNlLgorICAgICAgICAgICAgLy8gQXQgdGhlIHNhbWUgdGltZSwgQGEgd291bGQgY29udGlu
dWUgdG8gYmUgcmVwcmVzZW50ZWQgYXMgYSBuYXRpdmUgaW50NDguCisgICAgICAgICAgICAvLwor
ICAgICAgICAgICAgLy8gQW4gYWx0ZXJuYXRpdmUgd291bGQgaGF2ZSBiZWVuIHRvIGluc2VydCBU
b05hdGl2ZUludDQ4IG5vZGVzIG9uIGludDQ4IHVzZXMgb2YKKyAgICAgICAgICAgIC8vIGludDQ4
J3MuIFRoaXMgd291bGQgaGF2ZSBoYW5kbGVkIHRoZSBhYm92ZSBleGFtcGxlIGJ1dCB3b3VsZCBm
YWxsIG92ZXIgZm9yOgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ0
OAorICAgICAgICAgICAgLy8gYjogQ2FsbCguLi4sIEBhKQorICAgICAgICAgICAgLy8gYzogQXJp
dGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBCdXQgdGhlIHNv
bHV0aW9uIHdlIHVzZSBoYW5kbGVzIHRoZSBhYm92ZSBncmFjZWZ1bGx5LgorICAgICAgICAgICAg
CisgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxJbnQ0OFVzZT4oZWRnZS5ub2RlKCkp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDgs
IEludDQ4VG9WYWx1ZSwKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2lu
LCBFZGdlKGVkZ2Uubm9kZSgpLCBJbnQ0OFVzZSkpOworICAgICAgICAgICAgZWRnZSA9IEVkZ2Uo
cmVzdWx0LCB1c2VLaW5kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8dXNlS2luZD4oZWRnZS5ub2RlKCkpOwor
ICAgICAgICAKICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKHVzZUtpbmQpOwogICAgIH0KICAgICAK
QEAgLTEzNzgsNyArMTQ3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmplY3RJbnQzMlRvRG91
YmxlTm9kZShFZGdlJiBlZGdlLCBVc2VLaW5kIHVzZUtpbmQgPSBOdW1iZXJVc2UsIFNwZWN1bGF0
aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCiAgICAgewogICAg
ICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAg
ICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0OCwgSW50MzJUb0RvdWJsZSwKKyAgICAgICAgICAg
IG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDhBc0RvdWJsZSwgSW50MzJUb0RvdWJsZSwKICAgICAg
ICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJl
clVzZSkpOwogICAgICAgICBpZiAoZGlyZWN0aW9uID09IEZvcndhcmRTcGVjdWxhdGlvbikKICAg
ICAgICAgICAgIHJlc3VsdC0+bWVyZ2VGbGFncyhOb2RlRXhpdHNGb3J3YXJkKTsKQEAgLTEzOTIs
NiArMTQ4NCwxNyBAQCBwcml2YXRlOgogICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVzZUtp
bmQpOwogICAgIH0KICAgICAKKyAgICAvLyBXZSBtYWtlIGFsbCBpbnQ0OCBlZGdlcyBoYXZlIGFu
IGludGVybWVkaWF0ZSBBc05hdGl2ZUludDQ4IG5vZGUgdG8gZW5zdXJlCisgICAgLy8gdGhhdCB3
ZSBoYW5kbGUgdGhpcyBwcm9wZXJseToKKyAgICB0ZW1wbGF0ZTxVc2VLaW5kIHVzZUtpbmQ+Cisg
ICAgdm9pZCBmaXhJbnQ0OEVkZ2UoRWRnZSYgZWRnZSkKKyAgICB7CisgICAgICAgIE5vZGUqIHJl
c3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY0ludDQ4LCBBc05hdGl2ZUludDQ4LAorICAgICAgICAgICAgbV9jdXJyZW50Tm9k
ZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgdXNlS2luZCkpOworICAgICAgICBlZGdl
ID0gZWRnZShyZXN1bHQsIEludDQ4VXNlKTsKKyAgICB9CisKICAgICB2b2lkIHRydW5jYXRlQ29u
c3RhbnRUb0ludDMyKEVkZ2UmIGVkZ2UpCiAgICAgewogICAgICAgICBOb2RlKiBvbGROb2RlID0g
ZWRnZS5ub2RlKCk7CkBAIC0xNDM0LDEzICsxNTM3LDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBh
dHRlbXB0VG9NYWtlSW50ZWdlckFkZChOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgQWRkU3Bl
Y3VsYXRpb25Nb2RlIG1vZGUgPSBtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShub2RlKTsKLSAg
ICAgICAgaWYgKG1vZGUgPT0gRG9udFNwZWN1bGF0ZUludDMyKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAobW9kZSAhPSBEb250U3BlY3VsYXRlSW50MzIpIHsKKyAgICAg
ICAgICAgIHRydW5jYXRlQ29uc3RhbnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9kZSk7CisgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdHJ1bmNhdGVDb25zdGFudHNJZk5lY2Vzc2Fy
eShub2RlLCBtb2RlKTsKLSAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiBtX2dyYXBoLmFkZFNob3Vs
ZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50NDhV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50NDhVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGJvb2wgYXR0ZW1wdFRv
TWFrZUdldEFycmF5TGVuZ3RoKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDYgKzQxLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEZsdQog
ICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWRJbnQzMiIp
OwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIG91dC5w
cmludCgiRmx1c2hlZEludDMyIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZsdXNoZWRE
b3VibGU6CiAgICAgICAgIG91dC5wcmludCgiRmx1c2hlZERvdWJsZSIpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShy
ZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9y
bWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogZW51bSBGbHVzaEZvcm1hdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZs
dXNoZWRJbnQzMiwKKyAgICBGbHVzaGVkSW50NDgsCiAgICAgRmx1c2hlZERvdWJsZSwKICAgICBG
bHVzaGVkQ2VsbCwKICAgICBGbHVzaGVkQm9vbGVhbiwKQEAgLTU1LDYgKzU2LDggQEAgaW5saW5l
IE5vZGVGbGFncyByZXN1bHRGb3IoRmx1c2hGb3JtYXQgZgogICAgICAgICByZXR1cm4gTm9kZVJl
c3VsdEpTOwogICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICByZXR1cm4gTm9kZVJlc3Vs
dEludDMyOworICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICByZXR1cm4gTm9kZVJlc3Vs
dEludDQ4OwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1
bHROdW1iZXI7CiAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKQEAgLTc0LDYgKzc3LDggQEAgaW5s
aW5lIFVzZUtpbmQgdXNlS2luZEZvcihGbHVzaEZvcm1hdCBmbwogICAgICAgICByZXR1cm4gQ2Vs
bFVzZTsKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMyVXNlOwor
ICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICByZXR1cm4gSW50NDhVc2U7CiAgICAgY2Fz
ZSBGbHVzaGVkRG91YmxlOgogICAgICAgICByZXR1cm4gTnVtYmVyVXNlOwogICAgIGNhc2UgRmx1
c2hlZEJvb2xlYW46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRp
b25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5l
cmF0aW9uSW5mby5oCShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDE0IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIGluaXRHUFIobm9kZSwgdXNlQ291bnQsIGdwciwgRGF0
YUZvcm1hdEludDMyKTsKICAgICB9CisgICAgdm9pZCBpbml0SW50NDgoTm9kZSogbm9kZSwgdWlu
dDMyX3QgdXNlQ291bnQsIEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBpbml0R1BSKG5vZGUs
IHVzZUNvdW50LCBncHIsIERhdGFGb3JtYXRJbnQ0OCk7CisgICAgfQorICAgIHZvaWQgaW5pdFN0
cmljdEludDQ4KE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgcmVnKQorICAg
IHsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBEYXRhRm9ybWF0U3RyaWN0
SW50NDgpOworICAgIH0KICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgaW5pdEpTVmFsdWUo
Tm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyBncHIsIERhdGFGb3JtYXQgZm9y
bWF0ID0gRGF0YUZvcm1hdEpTKQogICAgIHsKQEAgLTE4Nyw2ICsxOTUsMTEgQEAgcHVibGljOgog
ICAgIC8vIEdldCB0aGUgZm9ybWF0IG9mIHRoZSB2YWx1ZSBhcyBpdCBpcyBzcGlsbGVkIGluIHRo
ZSBKU1N0YWNrIChvciAnbm9uZScpLgogICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQoKSB7IHJl
dHVybiBtX3NwaWxsRm9ybWF0OyB9CiAgICAgCisgICAgYm9vbCBpc0Zvcm1hdChEYXRhRm9ybWF0
IGV4cGVjdGVkRm9ybWF0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ybWF0KCkg
PT0gZXhwZWN0ZWRGb3JtYXQgfHwgc3BpbGxGb3JtYXQoKSA9PSBleHBlY3RlZEZvcm1hdDsKKyAg
ICB9CisgICAgCiAgICAgYm9vbCBpc0pTRm9ybWF0KERhdGFGb3JtYXQgZXhwZWN0ZWRGb3JtYXQp
CiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjppc0pTRm9ybWF0KHJlZ2lzdGVyRm9ybWF0KCks
IGV4cGVjdGVkRm9ybWF0KSB8fCBKU0M6OmlzSlNGb3JtYXQoc3BpbGxGb3JtYXQoKSwgZXhwZWN0
ZWRGb3JtYXQpOwpAQCAtMTk3LDYgKzIxMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBp
c0pTRm9ybWF0KERhdGFGb3JtYXRKU0ludDMyKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBpc0lu
dDQ4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0Zvcm1hdChEYXRhRm9ybWF0SW50NDgpOwor
ICAgIH0KKyAgICAKKyAgICBib29sIGlzU3RyaWN0SW50NDgoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGlzRm9ybWF0KERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgfQorICAgIAogICAgIGJv
b2wgaXNKU0RvdWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gaXNKU0Zvcm1hdChEYXRhRm9y
bWF0SlNEb3VibGUpOwpAQCAtMzE0LDYgKzMzNywxNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SW50MzIpOwogICAgIH0KKyAgICB2b2lk
IGZpbGxJbnQ0OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIpCisgICAg
eworICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SW50NDgpOworICAgIH0K
KyAgICB2b2lkIGZpbGxTdHJpY3RJbnQ0OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQ
UlJlZyBncHIpCisgICAgeworICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0
U3RyaWN0SW50NDgpOworICAgIH0KICAgICB2b2lkIGZpbGxCb29sZWFuKFZhcmlhYmxlRXZlbnRT
dHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwcikKICAgICB7CiAgICAgICAgIGZpbGxHUFIoc3RyZWFt
LCBncHIsIERhdGFGb3JtYXRCb29sZWFuKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOSBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5vZGVSZXN1bHRKUyAgICAg
ICAgICAgICAgICAgICAgIDB4MDAwMQogI2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAgICAgICAg
ICAgICAgICAweDAwMDIKICNkZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAgICAgICAg
MHgwMDAzCi0jZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4MDAwNAot
I2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUg
Tm9kZVJlc3VsdEludDQ4ICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIE5vZGVSZXN1
bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFn
ZSAgICAgICAgICAgICAgICAweDAwMDYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAjZGVmaW5lIE5vZGVNdXN0R2VuZXJhdGUgICAgICAgICAgICAgICAgIDB4MDAwOCAvLyBzZXQg
b24gbm9kZXMgdGhhdCBoYXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJl
IHJlbW92ZWQgYnkgRENFLgogI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAgICAgICAg
ICAweDAwMTAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJl
dmlzaW9uIDE1NTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSW50MzJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikg
XAogICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRlIHRoYXQgYSBkb3VibGUgdmFsdWUgaXMgYWN0dWFs
bHkgYW4gaW50ZWdlci4gKi9cCiAgICAgbWFjcm8oRG91YmxlQXNJbnQzMiwgTm9kZVJlc3VsdElu
dDMyIHwgTm9kZUV4aXRzRm9yd2FyZCkgXAorICAgIC8qIFVzZWQgdG8gc2VwYXJhdGUgcmVwcmVz
ZW50YXRpb24gYW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gb2YgSW50NDgncyByZXByZXNlbnRlZCAq
L1wKKyAgICAvKiBhcyB2YWx1ZXMuICovXAorICAgIG1hY3JvKEludDQ4VG9WYWx1ZSwgTm9kZVJl
c3VsdEpTKSBcCisgICAgbWFjcm8oSW50NDhUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikgXAog
ICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAqL1wKICAgICBt
YWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlciB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0
ZXJTYXZlUGxhbi5oCShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsOCBAQCBlbnVtIFNpbGVudFNwaWxsQWN0aW9uIHsKIGVudW0gU2lsZW50RmlsbEFjdGlvbiB7
CiAgICAgRG9Ob3RoaW5nRm9yRmlsbCwKICAgICBTZXRJbnQzMkNvbnN0YW50LAorICAgIFNldElu
dDQ4Q29uc3RhbnQsCisgICAgU2V0U3RyaWN0SW50NDhDb25zdGFudCwKICAgICBTZXRCb29sZWFu
Q29uc3RhbnQsCiAgICAgU2V0Q2VsbENvbnN0YW50LAogICAgIFNldFRydXN0ZWRKU0NvbnN0YW50
LApAQCAtNjEsOCArNjMsMTIgQEAgZW51bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBMb2FkMzJU
YWcsCiAgICAgTG9hZDMyUGF5bG9hZCwKICAgICBMb2FkMzJQYXlsb2FkQm94SW50LAorICAgIExv
YWQzMlBheWxvYWRDb252ZXJ0VG9JbnQ0OCwKKyAgICBMb2FkMzJQYXlsb2FkU2lnbkV4dGVuZCwK
ICAgICBMb2FkUHRyLAogICAgIExvYWQ2NCwKKyAgICBMb2FkNjRTaGlmdFJpZ2h0MTYsCisgICAg
TG9hZDY0U2hpZnRMZWZ0MTYsCiAgICAgTG9hZERvdWJsZSwKICAgICBMb2FkRG91YmxlQm94RG91
YmxlLAogICAgIExvYWRKU1VuYm94RG91YmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1NTY0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMCw2ICsxMjAsNDAgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
SW50MzIoRWRnZSBlZAogICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Ym94SW50NDgo
R1BSUmVnIHNvdXJjZUdQUiwgR1BSUmVnIHRhcmdldEdQUiwgRGF0YUZvcm1hdCBmb3JtYXQpCit7
CisgICAgR1BSUmVnIHRlbXBHUFI7CisgICAgaWYgKHNvdXJjZUdQUiA9PSB0YXJnZXRHUFIpCisg
ICAgICAgIHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAgIGVsc2UKKyAgICAgICAgdGVtcEdQUiA9
IHRhcmdldEdQUjsKKyAgICAKKyAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKKworICAg
IGlmIChmb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICBtX2ppdC5yc2hpZnQ2NChU
cnVzdGVkSW1tMzIoMTYpLCBzb3VyY2VHUFIpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKGZv
cm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgIG1faml0LnNpZ25FeHRlbmQzMlRv
UHRyKHNvdXJjZUdQUiwgdGVtcEdQUik7CisgICAgCisgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNE
b3VibGUgPSBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBz
b3VyY2VHUFIsIHRlbXBHUFIpOworICAgIAorICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHNv
dXJjZUdQUiwgdGFyZ2V0R1BSKTsKKyAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlciwgdGFyZ2V0R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9q
aXQuanVtcCgpOworICAgIAorICAgIGlzRG91YmxlLmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5j
b252ZXJ0SW50NjRUb0RvdWJsZShzb3VyY2VHUFIsIGZwcik7CisgICAgYm94RG91YmxlKGZwciwg
dGFyZ2V0R1BSKTsKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAKKyAgICBpZiAodGVtcEdQ
UiAhPSB0YXJnZXRHUFIpCisgICAgICAgIHVubG9jayh0ZW1wR1BSKTsKKyAgICAKKyAgICB1bmxv
Y2soZnByKTsKK30KKwogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVk
Z2UpCiB7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1
YWxSZWdpc3RlcigpOwpAQCAtMTQ5LDExICsxODMsMjMgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgRGF0YUZv
cm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgICAgIG1fZ3By
cy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAg
ICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpIHsKKyAgICAgICAgICAg
IHN3aXRjaCAoc3BpbGxGb3JtYXQpIHsKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDMy
OiB7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAgICAgICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGdwcik7CiAgICAgICAgICAgICAgICAgc3BpbGxG
b3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQzMjsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDQ4OiB7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICAgICAgYm94SW50
NDgoZ3ByLCBncHIsIHNwaWxsRm9ybWF0KTsKKyAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9
IERhdGFGb3JtYXRKUzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgbV9q
aXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7
CiAgICAgICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXREb3VibGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBib3ggdGhlIGRvdWJsZSwgc2luY2Ugd2Ug
d2FudCBhIEpTVmFsdWUuCkBAIC0xNjEsNiArMjA3LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERh
dGFGb3JtYXRKU0RvdWJsZTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW5mby5maWxsSlNW
YWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwogICAgICAgICB9CkBAIC0xOTMsNiAr
MjQwLDE2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKIAogICAg
ICAgICByZXR1cm4gZ3ByOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50
NDg6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdw
ciA9IGluZm8uZ3ByKCk7CisgICAgICAgIGxvY2soZ3ByKTsKKyAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IGFsbG9jYXRlKCk7CisgICAgICAgIGJveEludDQ4KGdwciwgcmVzdWx0R1BSLCBpbmZv
LnJlZ2lzdGVyRm9ybWF0KCkpOworICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdEdQUjsKKyAgICB9CiAKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgogICAgICAgICAv
LyBObyByZXRhZyByZXF1aXJlZCBvbiBKU1ZBTFVFNjQhCkBAIC04NDgsNyArOTA1LDcgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICAKICAgICAgICAg
RGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgCi0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3Bp
bGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNw
aWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50
MzIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERh
dGFGb3JtYXRTdHJpY3RJbnQ0OCk7CiAgICAgICAgIAogICAgICAgICBtX2dwcnMucmV0YWluKGdw
ciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAgIApAQCAtODY5
LDYgKzkyNiwyNSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAg
ICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQzMjsKICAgICAgICAgICAg
IHJldHVybiBncHI7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFG
b3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAg
ICAgICAgICAgIC8vIENhbiBvbmx5IGhhcHBlbiBpZiB3ZSd2ZSBhbHJlYWR5IHByb3ZlZCB0aGF0
IHRoZSB2YWx1ZSBpcyBhbiBpbnQzMi4KKyAgICAgICAgICAgIC8vIFRoYXQncyBiZWNhdXNlIGlm
IGEgdmFsdWUgb3JpZ2luYXRlZCBhcyBhIEpTVmFsdWUgdGhlbiB3ZSB3b3VsZAorICAgICAgICAg
ICAgLy8gc3BlY3VsYXRlIHRoYXQgaXQncyBhbiBpbnQzMiBiZWZvcmUgcmVwcmVzZW50aW5nIGl0
IGFzIGFuIGludDQ4LgorICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiB3ZSBrbm93aW5nbHkg
cHJvZHVjZWQgYW4gaW50NDgsIHRoZW4gd2Ugd291bGQgYmUKKyAgICAgICAgICAgIC8vIGJveGlu
ZyBpdCBpbnRvIGEgdmFsdWUgdXNpbmcgSW50NDhUb1ZhbHVlLiBUaGlzIGFzc2VydGlvbiBpcyB2
YWxpZAorICAgICAgICAgICAgLy8gb25seSBiZWNhdXNlIEludDQ4IGlzIHNvbWV0aGluZyB0aGF0
IHdlIGludHJvZHVjZSBhdCBwcmVkaWN0aW9uIHRpbWUuCisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghKHR5cGUgJiB+U3BlY0ludDMyKSk7CisgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQg
PT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMy
KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgICAgIG1faml0
LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgICAgICAgICAgbV9qaXQu
emVyb0V4dGVuZDMyVG9QdHIoZ3ByLCBncHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aW5mby5maWxsSW50MzIoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJuRm9ybWF0
ID0gRGF0YUZvcm1hdEludDMyOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQog
ICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgZ3ByKTsKIAogICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91
Z2guCkBAIC05MjMsNiArOTk5LDI3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUludDMKICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwogICAgICAg
ICByZXR1cm4gZ3ByOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0
SW50NDg6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNJbnQzMikpOwor
ICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3By
KTsKKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoZ3ByLCBncHIpOworICAgICAgICBy
ZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CisgICAgICAgIGluZm8uZmlsbEludDMyKCpt
X3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisgICAgICAgIAorICAg
IGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAm
IH5TcGVjSW50MzIpKTsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAg
IG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigx
NiksIGdwcik7CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwcik7CisgICAgICAg
IHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAgICAgICAgaW5mby5maWxsSW50MzIo
Km1fc3RyZWFtLCBncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KIAogICAgIGNhc2Ug
RGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewpAQCAtOTY1
LDYgKzEwNjIsMTc1IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVJbnQ0OChFZGdlIGVkZ2UsIERhdGFGb3JtYXQgZGVzaXJlZEZvcm1hdCkKK3sKKyAgICBB
U1NFUlQoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgZGVzaXJlZEZvcm1hdCA9
PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9z
dGF0ZS5mb3JOb2RlKGVkZ2UpOworICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5
cGU7CisgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNJbnQ0OCk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOwor
ICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lz
dGVyKHZpcnR1YWxSZWdpc3Rlcik7CisKKyAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQo
KSkgeworICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKKyAgICAgICAgaWYgKChlZGdlLT5oYXND
b25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSkuaXNNYWNoaW5lSW50
KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAg
ICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgMCk7CisgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisKKyAgICAgICAgaWYgKGVk
Z2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSB2YWx1ZU9m
SlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBBU1NFUlQodmFsdWUuaXNNYWNo
aW5lSW50KCkpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3Rl
ciwgU3BpbGxPcmRlckNvbnN0YW50KTsKKyAgICAgICAgICAgIGludDY0X3QgdmFsdWUgPSB2YWx1
ZS5hc01hY2hpbmVJbnQoKTsKKyAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFG
b3JtYXRJbnQ0OCkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlIDw8IDE2OworICAgICAg
ICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQodmFsdWUpLCBncHIpOworICAg
ICAgICAgICAgaW5mby5maWxsR1BSKCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAg
ICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIERhdGFG
b3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CisgICAgICAgIAorICAgICAg
ICAvLyBGSVhNRSEhIQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9y
bWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIgfHwg
c3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3Jt
YXRTdHJpY3RJbnQ0OCk7CisgICAgICAgIAorICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmly
dHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAgIAorICAgICAgICBpZiAo
c3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEpTSW50MzIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZv
cm1hdEludDMyKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBrbm93IHRoaXMgd2FzIHNwaWxsZWQg
YXMgYW4gaW50ZWdlciB3ZSBjYW4gZmlsbCB3aXRob3V0IGNoZWNraW5nLgorICAgICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7CisgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihncHIsIGdwcik7CisgICAg
ICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAg
ICAgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OChncHIpOworICAgICAgICAgICAgICAg
IHJldHVybiBncHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChU
cnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSW50NDgoZ3ByKTsK
KyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0
SW50NDgpIHsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQg
PT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICAgICAgaWYgKHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0
NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBpbmZvLmZpbGxTdHJp
Y3RJbnQ0OChncHIpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQor
ICAgICAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7Cisg
ICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OChncHIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsK
KyAgICAgICAgfQorICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKworICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFu
ZCBmYWxsIHRocm91Z2guCisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIs
IERhdGFGb3JtYXRKU0ludDMyKTsKKyAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOworICAgIH0K
KworICAgICAgICAvLyBGSVhNRSEhISEKKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SlM6
IHsKKyAgICAgICAgLy8gQ2hlY2sgdGhlIHZhbHVlIGlzIGFuIGludGVnZXIuCisgICAgICAgIEdQ
UlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAg
ICBpZiAodHlwZSAmIH5TcGVjSW50MzIpCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1i
bGVyOjpCZWxvdywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAg
ICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTSW50MzIpOwor
ICAgICAgICAvLyBJZiAhc3RyaWN0IHdlJ3JlIGRvbmUsIHJldHVybi4KKyAgICAgICAgaWYgKCFz
dHJpY3QpIHsKKyAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRKU0ludDMyOwor
ICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICAvLyBlbHNlIGZhbGwg
dGhyb3VnaCAmIGhhbmRsZSBhcyBEYXRhRm9ybWF0SlNJbnQzMi4KKyAgICAgICAgbV9ncHJzLnVu
bG9jayhncHIpOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6IHsKKyAgICAg
ICAgLy8gSW4gYSBzdHJpY3QgZmlsbCB3ZSBuZWVkIHRvIHN0cmlwIG9mZiB0aGUgdmFsdWUgdGFn
LgorICAgICAgICBpZiAoc3RyaWN0KSB7CisgICAgICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5n
cHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHQ7CisgICAgICAgICAgICAvLyBJZiB0aGUg
cmVnaXN0ZXIgaGFzIGFscmVhZHkgYmVlbiBsb2NrZWQgd2UgbmVlZCB0byB0YWtlIGEgY29weS4K
KyAgICAgICAgICAgIC8vIElmIG5vdCwgd2UnbGwgemVybyBleHRlbmQgaW4gcGxhY2UsIHNvIG1h
cmsgb24gdGhlIGluZm8gdGhhdCB0aGlzIGlzIG5vdyB0eXBlIERhdGFGb3JtYXRJbnQzMiwgbm90
IERhdGFGb3JtYXRKU0ludDMyLgorICAgICAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIp
KQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICAgICAgICAgIGlu
Zm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBn
cHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihn
cHIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgR1BSUmVn
IGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIHJl
dHVybkZvcm1hdCA9IERhdGFGb3JtYXRKU0ludDMyOworICAgICAgICByZXR1cm4gZ3ByOworICAg
IH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBp
bmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICByZXR1cm5Gb3Jt
YXQgPSBEYXRhRm9ybWF0SW50MzI7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorICAgICAg
ICAKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAgICBSRUxFQVNFX0FT
U0VSVCghKHR5cGUgJiB+U3BlY0ludDMyKSk7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdw
cigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5k
MzJUb1B0cihncHIsIGdwcik7CisgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQz
MjsKKyAgICAgICAgaW5mby5maWxsSW50MzIoKm1fc3RyZWFtLCBncHIpOworICAgICAgICByZXR1
cm4gZ3ByOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNJbnQzMikpOworICAgICAgICBHUFJS
ZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAg
bV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgbV9qaXQuemVy
b0V4dGVuZDMyVG9QdHIoZ3ByKTsKKyAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdElu
dDMyOworICAgICAgICBpbmZvLmZpbGxJbnQzMigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIHJl
dHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgorICAgIGNhc2Ug
RGF0YUZvcm1hdEpTRG91YmxlOiB7CisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpICYm
IGlzSW50MzJDb25zdGFudChlZGdlLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIEdQUlJlZyBncHIg
PSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgQVNTRVJUKGlzSW50MzJDb25zdGFudChlZGdlLm5v
ZGUoKSkpOworICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tMzIodmFs
dWVPZkludDMyQ29uc3RhbnQoZWRnZS5ub2RlKCkpKSwgZ3ByKTsKKyAgICAgICAgICAgIHJldHVy
bkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAg
ICAgIH0KKyAgICB9CisgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3Jt
YXRCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3Jt
YXRKU0Jvb2xlYW46IHsKKyAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOworICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRh
Rm9ybWF0SW50MzI7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgIH0KKworICAgIGNh
c2UgRGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0KK30KKwogRlBS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UgZWRnZSkKIHsKICNp
ZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCkBAIC0xMDI1LDYgKzEyOTEsMjQgQEAgRlBSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogICAgICAgICAgICAgdW5sb2NrKGdw
cik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2Nh
dGUoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNw
aWxsT3JkZXJTcGlsbGVkKTsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxs
SW50NDgoZ3ByKTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJ
bnQ0ODogeworICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAgICAgICAg
ICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7
CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVh
bFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KGdwcik7
CisgICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgp
OwpAQCAtMTA4OSw2ICsxMzczLDI0IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZURvdWIKICAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZnBy
OwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAgICAg
R1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAg
ICAgIG1faml0LnJzaGlmdDMyKFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgIGluZm8u
ZmlsbFN0cmljdEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgbV9ncHJzLnVubG9jayhn
cHIpOworICAgICAgICAvLyBmYWxsIHRocm91Z2guCisgICAgfQorICAgICAgICAKKyAgICBjYXNl
IERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2Nh
dGUoKTsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5s
b2NrKGdwcik7CisgICAgICAgIG1faml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKGdwciwgZnByKTsK
KyAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOworICAgICAgICByZXR1cm4gZnByOworICAgIH0K
IAogICAgIC8vIFVuYm94IHRoZSBkb3VibGUKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTog
ewpAQCAtMTE5MSw3ICsxNDkzLDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlQ2VsbAogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1h
dERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46Ci0gICAgY2FzZSBEYXRhRm9y
bWF0Qm9vbGVhbjogeworICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CisgICAgY2FzZSBEYXRh
Rm9ybWF0SW50NDg6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKICAgICAgICAg
dGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CkBAIC0xMjc0LDcgKzE1Nzgs
OSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAgY2FzZSBE
YXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2Ug
RGF0YUZvcm1hdEpTQ2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRDZWxsOiB7CisgICAgY2FzZSBE
YXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICBjYXNlIERhdGFG
b3JtYXRTdHJpY3RJbnQ0ODogewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlv
bihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgIHJldHVybiBhbGxvY2F0
ZSgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDcgKzMz
NSw5IEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICAgICAg
ICAgIHNwaWxsQWN0aW9uID0gU3RvcmUzMlBheWxvYWQ7CiAgICAgICAgIGVsc2UgaWYgKHJlZ2lz
dGVyRm9ybWF0ID09IERhdGFGb3JtYXRDZWxsIHx8IHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3Jt
YXRTdG9yYWdlKQogICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZVB0cjsKLSAgICAgICAg
ZWxzZSB7CisgICAgICAgIGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0
OCB8fCByZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAg
ICAgIHNwaWxsQWN0aW9uID0gU3RvcmU2NDsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IEFTU0VSVChyZWdpc3RlckZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CiAgICAgICAgICAgICBzcGls
bEFjdGlvbiA9IFN0b3JlNjQ7CiAgICAgICAgIH0KQEAgLTM4Niw2ICszODgsNDAgQEAgU2lsZW50
UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgIH0gZWxzZSBpZiAocmVnaXN0
ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0b3JhZ2UpIHsKICAgICAgICAgQVNTRVJUKGluZm8uZ3By
KCkgPT0gc291cmNlKTsKICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWRQdHI7CisgICAgfSBlbHNl
IGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpIHsKKyAgICAgICAgaWYgKG5v
ZGUtPmhhc0NvbnN0YW50KCkpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0SW50NDhDb25z
dGFudDsKKyAgICAgICAgZWxzZSBpZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwg
aW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRKUykKKyAgICAgICAgICAgIGZpbGxBY3Rp
b24gPSBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50NDg7CisgICAgICAgIGVsc2UgaWYgKGluZm8u
c3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICBmaWxsQWN0aW9u
ID0gTG9hZDY0OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZv
cm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NFNoaWZ0TGVm
dDE2OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5v
bmUpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVz
IGFzIGFuIGludDMyIHdpbGwgbmV2ZXIKKyAgICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEg
Y2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRvdWJsZQorICAgICAg
ICAgICAgLy8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgorICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBp
ZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICBpZiAo
bm9kZS0+aGFzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRTdHJpY3RJ
bnQ0OENvbnN0YW50OworICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1h
dCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQorICAgICAgICAgICAg
ZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOworICAgICAgICBlbHNlIGlmIChp
bmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgZmlsbEFj
dGlvbiA9IExvYWQ2NFNoaWZ0UmlnaHQxNjsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZv
cm1hdCgpID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24g
PSBMb2FkNjQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0Tm9uZSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFs
aWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgorICAgICAgICAgICAgLy8gYmUgdHVybmVkIGlu
dG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCisg
ICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICNp
ZiBVU0UoSlNWQUxVRTY0KQpAQCAtMzkzLDcgKzQyOSw2IEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBs
YW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpIHsK
ICAgICAgICAgICAgIGlmICh2YWx1ZU9mSlNDb25zdGFudChub2RlKS5pc0NlbGwoKSkKICAgICAg
ICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0VHJ1c3RlZEpTQ29uc3RhbnQ7Ci0gICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldEpTQ29uc3RhbnQ7CiAgICAg
ICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikgewog
ICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyKTsK
QEAgLTUxMiw2ICs1NDcsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25z
dCBTaQogICAgIGNhc2UgU2V0SW50MzJDb25zdGFudDoKICAgICAgICAgbV9qaXQubW92ZShJbW0z
Mih2YWx1ZU9mSW50MzJDb25zdGFudChwbGFuLm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBTZXRJbnQ0OENvbnN0YW50OgorICAgICAgICBtX2ppdC5tb3Zl
KEltbTY0KHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS5hc01hY2hpbmVJbnQoKSA8PCAx
NiksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNldFN0cmljdEludDQ4
Q29uc3RhbnQ6CisgICAgICAgIG1faml0Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29uc3RhbnQocGxh
bi5ub2RlKCkpLmFzTWFjaGluZUludCgpKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgU2V0Qm9vbGVhbkNvbnN0YW50OgogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW0zMih2YWx1ZU9mQm9vbGVhbkNvbnN0YW50KHBsYW4ubm9kZSgpKSksIHBsYW4uZ3ByKCkpOwog
ICAgICAgICBicmVhazsKQEAgLTUzMyw2ICs1NzQsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c2lsZW50RmlsbChjb25zdCBTaQogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBh
eWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAg
ICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBwbGFuLmdw
cigpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50
NDg6CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5v
ZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQuc2ln
bkV4dGVuZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0Lmxz
aGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOgorICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxh
bi5ncHIoKSk7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHBsYW4uZ3ByKCksIHBs
YW4uZ3ByKCkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIExvYWREb3VibGVCb3hEb3VibGU6
CiAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUo
KS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQuc3ViNjQo
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBwbGFuLmdwcigpKTsKQEAgLTU3NCw2ICs2
MjQsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBTaQogICAgIGNh
c2UgTG9hZDY0OgogICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
cGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTG9hZDY0U2hpZnRSaWdodDE2OgorICAgICAgICBtX2ppdC5sb2FkNjQo
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwg
cGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHBs
YW4uZ3ByKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExvYWQ2NFNoaWZ0TGVmdDE2Ogor
ICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCkt
PnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LmxzaGlmdDY0
KFRydXN0ZWRJbW0zMigxNiksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKICNlbmRpZgog
ICAgIGNhc2UgTG9hZERvdWJsZToKICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxl
cjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmZwcigp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHJldmlzaW9uIDE1NTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCw3IEBAIHB1YmxpYzoK
ICAgICAvLyBtYWNoaW5lIHJlZ2lzdGVycywgaW1wbGljaXRseSBnZW5lcmF0aW5nIHNwZWN1bGF0
aW9uIGNoZWNrcyBhcyBuZWVkZWQuCiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVJbnQzMihFZGdl
LCBEYXRhRm9ybWF0JiByZXR1cm5Gb3JtYXQpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50
MzJTdHJpY3QoRWRnZSk7CisgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVJbnQ0OChFZGdlLCBEYXRh
Rm9ybWF0IGRlc2lyZWRGb3JtYXQpOwogICAgIEZQUlJlZyBmaWxsU3BlY3VsYXRlRG91YmxlKEVk
Z2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2VsbChFZGdlKTsKICAgICBHUFJSZWcgZmls
bFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CkBAIC00NjksNiArNDcwLDggQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGJveERvdWJsZShmcHIsIGFsbG9jYXRlKCkpOwogICAgIH0KKyAg
ICAKKyAgICB2b2lkIGJveEludDQ4KEdQUlJlZyBzb3VyY2VHUFIsIEdQUlJlZyB0YXJnZXRHUFIs
IERhdGFGb3JtYXQgZm9ybWF0KTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdm9pZCBi
b3hEb3VibGUoRlBSUmVnIGZwciwgR1BSUmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRHUFIpCiAg
ICAgewpAQCAtMjY4NCw2ICsyNjg3LDEwMCBAQCBwcml2YXRlOgogICAgIERhdGFGb3JtYXQgbV9m
b3JtYXQ7CiB9OwogCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NDggKGkuZS4gaXQncyBs
ZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorY2xhc3MgU3BlY3VsYXRlSW50NDhP
cGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQoU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUg
PSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAg
ICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJS
ZWcpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEludDQ4VXNlKTsKKyAgICAgICAg
aWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAg
ICAKKyAgICB+U3BlY3VsYXRlSW50NDhPcGVyYW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X2dwck9ySW52YWxpZCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayht
X2dwck9ySW52YWxpZCk7CisgICAgfQorICAgIAorICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9lZGdlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBub2RlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKyAgICAK
KyAgICBHUFJSZWcgZ3ByKCkKKyAgICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9PSBJ
bnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNw
ZWN1bGF0ZUludDQ4KGVkZ2UoKSwgRGF0YUZvcm1hdEludDQ4KTsKKyAgICAgICAgcmV0dXJuIG1f
Z3ByT3JJbnZhbGlkOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVzZSgpCisgICAgeworICAgICAg
ICBtX2ppdC0+dXNlKG5vZGUoKSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBTcGVjdWxh
dGl2ZUpJVCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJbnZh
bGlkOworfTsKKworLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDQ4IChpLmUuIHRoZSBwYXlsb2Fk
IGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4K
K2NsYXNzIFNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2Ug
ZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1
bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAg
ICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdl
LnVzZUtpbmQoKSA9PSBJbnQ0OFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUo
KSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgflNwZWN1bGF0ZUludDQ4
T3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52YWxp
ZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOworICAgIH0K
KyAgICAKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZWRn
ZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVnIGdwcigpCisgICAg
eworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAg
ICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVTdHJpY3RJbnQ0OChlZGdl
KCksIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxp
ZDsKKyAgICB9CisgICAgCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVz
ZShub2RlKCkpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1f
aml0OworICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisK
IGNsYXNzIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCB7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2Ug
ZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1
bGF0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCShy
ZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBVc2UKICAgICBjYXNlIEtub3duSW50MzJVc2U6CiAgICAgICAgIG91
dC5wcmludCgiS25vd25JbnQzMiIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEludDQ4VXNl
OgorICAgICAgICBvdXQucHJpbnQoIkludDQ4Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UmVhbE51bWJlclVzZToKICAgICAgICAgb3V0LnByaW50KCJSZWFsTnVtYmVyIik7CiAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHJldmlz
aW9uIDE1NTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAgVW50eXBl
ZFVzZSwKICAgICBJbnQzMlVzZSwKICAgICBLbm93bkludDMyVXNlLAorICAgIEludDQ4VXNlLAog
ICAgIFJlYWxOdW1iZXJVc2UsCiAgICAgTnVtYmVyVXNlLAogICAgIEtub3duTnVtYmVyVXNlLApA
QCAtNjYsNiArNjcsOCBAQCBBTFdBWVNfSU5MSU5FIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJG
CiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNlIEtub3duSW50MzJVc2U6CiAgICAgICAgIHJl
dHVybiBTcGVjSW50MzI7CisgICAgY2FzZSBJbnQ0OFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNJ
bnQ0ODsKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgICAgIHJldHVybiBTcGVjUmVhbE51
bWJlcjsKICAgICBjYXNlIE51bWJlclVzZToKQEAgLTEyNSw2ICsxMjgsNyBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBrCiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAg
Y2FzZSBJbnQzMlVzZToKICAgICBjYXNlIEtub3duSW50MzJVc2U6CisgICAgY2FzZSBJbnQ0OFVz
ZToKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgY2Fz
ZSBLbm93bk51bWJlclVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
aWFibGVBY2Nlc3NEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMzLDYgKzMzMyw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBGbHVzaGVkSW50MzI7CiAgICAgICAg
IAorICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbihw
cmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBGbHVzaGVkSW50NDg7CisgICAgICAgIAog
ICAgICAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICBy
ZXR1cm4gRmx1c2hlZENlbGw7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNiAr
MTkxLDcgQEAgcHVibGljOgogCiAgICAgaW50MzJfdCBhc0ludDMyKCkgY29uc3Q7CiAgICAgdWlu
dDMyX3QgYXNVSW50MzIoKSBjb25zdDsKKyAgICBpbnQ2NF90IGFzTWFjaGluZUludCgpIGNvbnN0
OwogICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0OwogICAgIGJvb2wgYXNCb29sZWFuKCkgY29u
c3Q7CiAgICAgZG91YmxlIGFzTnVtYmVyKCkgY29uc3Q7CkBAIC0yMDIsNiArMjAzLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVs
bCgpIGNvbnN0OwogICAgIGJvb2wgaXNCb29sZWFuKCkgY29uc3Q7CisgICAgYm9vbCBpc01hY2hp
bmVJbnQoKSBjb25zdDsKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0
cmluZygpIGNvbnN0OwogICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2
aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDk0LDYgKzQ5NCwzNSBAQCBBTFdBWVNfSU5M
SU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQogCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc01hY2hpbmVJbnQoKSBjb25zdAoreworICAgIGlm
IChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICghaXNOdW1iZXIoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRvdWJsZSBudW1iZXIgPSBhc0RvdWJsZSgpOwor
ICAgIGlmIChudW1iZXIgIT0gbnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50
NjRfdCBhc0ludDY0ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obnVtYmVyKTsKKyAgICBpZiAoYXNJ
bnQ2NCAhPSBudW1iZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWFzSW50NjQg
JiYgc3RkOjpzaWduYml0KG51bWJlcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
YXNJbnQ2NCA+PSAoc3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgNDcpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKGFzSW50NjQgPCAtKHN0YXRpY19jYXN0PGludDY0X3Q+KDEpIDw8
IDQ3KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxp
bmUgaW50NjRfdCBKU1ZhbHVlOjphc01hY2hpbmVJbnQoKSBjb25zdAoreworICAgIEFTU0VSVChp
c01hY2hpbmVJbnQoKSk7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50
MzIoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4oYXNEb3VibGUoKSk7Cit9CisK
IGlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXND
ZWxsKCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211614</attachid>
            <date>2013-09-13 18:54:52 -0700</date>
            <delta_ts>2013-09-13 21:58:12 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>49229</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAkocmV2
aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0Tm9uZSA9IDAsCiAgICAgRGF0YUZvcm1h
dEludDMyID0gMSwKLSAgICBEYXRhRm9ybWF0RG91YmxlID0gMiwKLSAgICBEYXRhRm9ybWF0Qm9v
bGVhbiA9IDMsCi0gICAgRGF0YUZvcm1hdENlbGwgPSA0LAotICAgIERhdGFGb3JtYXRTdG9yYWdl
ID0gNSwKKyAgICBEYXRhRm9ybWF0SW50NDggPSAyLCAvLyBJbnQ0OCdzIGFyZSBsZWZ0LXNoaWZ0
ZWQgYnkgMTYgYnkgZGVmYXVsdC4KKyAgICBEYXRhRm9ybWF0U3RyaWN0SW50NDggPSAzLCAvLyAi
U3RyaWN0IiBJbnQ0OCBtZWFucyBpdCdzIG5vdCBzaGlmdGVkLgorICAgIERhdGFGb3JtYXREb3Vi
bGUgPSA0LAorICAgIERhdGFGb3JtYXRCb29sZWFuID0gNSwKKyAgICBEYXRhRm9ybWF0Q2VsbCA9
IDYsCisgICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA3LAogICAgIERhdGFGb3JtYXRKUyA9IDgsCiAg
ICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAg
ICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwK
QEAgLTY0LDYgKzY2LDEwIEBAIGlubGluZSBjb25zdCBjaGFyKiBkYXRhRm9ybWF0VG9TdHJpbmco
RGEKICAgICAgICAgcmV0dXJuICJOb25lIjsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAg
ICAgICAgcmV0dXJuICJJbnQzMiI7CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAg
IHJldHVybiAiSW50NDgiOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1
cm4gIlN0cmljdEludDQ4IjsKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgIHJl
dHVybiAiRG91YmxlIjsKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZpc2lv
biAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDUsMTYgKzM0NSwxMSBAQCBTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhCiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CiAg
ICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVl
LmFzTnVtYmVyKCk7Ci0gICAgICAgIGlmIChudW1iZXIgPT0gbnVtYmVyKSB7Ci0gICAgICAgICAg
ICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIpOwotICAgICAg
ICAgICAgaWYgKGFzSW50NjQgPT0gbnVtYmVyICYmIChhc0ludDY0IHx8ICFzdGQ6OnNpZ25iaXQo
bnVtYmVyKSkKLSAgICAgICAgICAgICAgICAmJiBhc0ludDY0IDwgKHN0YXRpY19jYXN0PGludDY0
X3Q+KDEpIDw8IDQ3KQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPj0gLShzdGF0aWNfY2Fz
dDxpbnQ2NF90PigxKSA8PCA0NykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU3BlY0ludDQ4
QXNEb3VibGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU3BlY05vbkludEFz
RG91YmxlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFOOworICAgICAg
ICBpZiAobnVtYmVyICE9IG51bWJlcikKKyAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFO
OworICAgICAgICBpZiAodmFsdWUuaXNNYWNoaW5lSW50KCkpCisgICAgICAgICAgICByZXR1cm4g
U3BlY0ludDQ4QXNEb3VibGU7CisgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAg
ICAgfQogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
RnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDE1NTY0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG5lZWRz
VHlwZUNoZWNrKE5vZGUqIG5vZGUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBmb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH50eXBlc1Bhc3Nl
ZFRocm91Z2g7CisgICAgICAgIHJldHVybiAhZm9yTm9kZShub2RlKS5pc1R5cGUodHlwZXNQYXNz
ZWRUaHJvdWdoKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBuZWVkc1R5cGVDaGVjayhFZGdlIGVk
Z2UsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKQEAgLTE2OCw3ICsxNjgsNyBA
QCBwcml2YXRlOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJCeVR5cGUoTm9kZSogbm9k
ZSwgRWRnZSYgZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIEFic3Ry
YWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShlZGdlKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fdHlw
ZSAmIH50eXBlKSB7CisgICAgICAgIGlmICghdmFsdWUuaXNUeXBlKHR5cGUpKSB7CiAgICAgICAg
ICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgZWRnZS5zZXRQcm9vZlN0
YXR1cyhOZWVkc0NoZWNrKTsKICAgICAgICAgfSBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2ICszMTAsMjYg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgSW50NDhUb0RvdWJsZTogeworICAgICAgICBK
U1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAg
aWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsIGNoaWxkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDhBc0RvdWJsZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBJbnQ0OEFzVmFsdWU6IHsKKyAgICAgICAgSlNWYWx1
ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChj
aGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2Rl
LCBjaGlsZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY01hY2hpbmVJbnQpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBBcml0aEFkZDogewogICAgICAg
ICBKU1ZhbHVlIGxlZnQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwpAQCAtMzI0
LDYgKzM0NCwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9k
ZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ0OFVzZToKKyAgICAgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0ludDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JO
b2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
TnVtYmVyVXNlOgogICAgICAgICAgICAgaWYgKGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKICAgICAgICAgICAgICAgICAmJiBpc1JlYWxOdW1i
ZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQpAQCAtMzU4LDYg
KzM4NCwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZs
YWdzKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ0OFVzZToKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5pc1R5cGUoU3BlY0ludDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2Rl
KG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVt
YmVyVXNlOgogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0zODAsNiArNDEyLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5UcnVu
Y2F0ZUludGVnZXIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgbm9k
ZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElu
dDQ4VXNlOgorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7Cisg
ICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9k
ZUZsYWdzKCkpKQorICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQw
NCw2ICs0NDEsMTAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgICAgIHx8ICFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5h
cml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NDhVc2U6CisgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIG5vZGUtPnNl
dENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJV
c2U6CiAgICAgICAgICAgICBpZiAoaXNSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlKQogICAgICAgICAgICAgICAgIHx8IGlzUmVhbE51bWJlclNwZWN1
bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTU1NjQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NSw2ICsxODUsMTEgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNUeXBlKFNwZWN1
bGF0ZWRUeXBlIGRlc2lyZWRUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEobV90eXBlICYg
fmRlc2lyZWRUeXBlKTsKKyAgICB9CisgICAgCiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIo
R3JhcGgmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKICAgICAKICAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2RlcyBhcnJheU1vZGVzKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0
MywxNSBAQCBpbmxpbmUgYm9vbCBlbmFibGVDb25jdXJyZW50SklUKCkKICNlbmRpZgogfQogCitp
bmxpbmUgYm9vbCBlbmFibGVJbnQ0OCgpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1
cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGVudW0gU3Bp
bGxSZWdpc3RlcnNNb2RlIHsgTmVlZFRvU3BpbGwsIERvbnRTcGlsbCB9OwogCiBlbnVtIE5vUmVz
dWx0VGFnIHsgTm9SZXN1bHQgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDYgKzE5Nywx
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIG1fZ3JhcGgubmVnYXRlU2hvdWxkU3BlY3VsYXRlTWFj
aGluZUludChub2RlKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NDhVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpAQCAtMjA3LDYgKzIxMSwxMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYm
IG1fZ3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50NDhVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPEludDQ4VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzAwLDYgKzMwOSwxMSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0
OCgpCisgICAgICAgICAgICAgICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChu
b2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPEludDQ4VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQ0OFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLT5jaGlsZDEoKS5u
b2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdl
PE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVt
YmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CkBAIC0zNTUsNiArMzY5LDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuYWJsZUlu
dDQ4KCkKKyAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50
KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SW50NDhVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDQ4VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
ewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKQEAgLTEz
NDcsMTIgKzEzNjcsODQgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxVc2VLaW5kIHVzZUtpbmQ+
CiAgICAgdm9pZCBmaXhFZGdlKEVkZ2UmIGVkZ2UsIFNwZWN1bGF0aW9uRGlyZWN0aW9uIGRpcmVj
dGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBpZiAoaXNEb3VibGUo
dXNlS2luZCkgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsK
LSAgICAgICAgICAgIGluamVjdEludDMyVG9Eb3VibGVOb2RlKGVkZ2UsIHVzZUtpbmQsIGRpcmVj
dGlvbik7CisgICAgICAgIGlmIChpc0RvdWJsZSh1c2VLaW5kKSkgeworICAgICAgICAgICAgaWYg
KGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7CisgICAgICAgICAg
ICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoZWRnZSwgdXNlS2luZCwgZGlyZWN0aW9uKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hp
bmVJbnQoKSkgeworICAgICAgICAgICAgICAgIC8vIE1ha2UgYWxsIGRvdWJsZSB1c2VzIG9mIGlu
dDQ4IHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ0OFRvRG91YmxlLgorICAgICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBJbnQ0OFRvVmFsdWUgKHNl
ZSBiZWxvdykgZXhjZXB0IHRoYXQKKyAgICAgICAgICAgICAgICAvLyBJbnQ4VG9Eb3VibGUgd2ls
bCBjb252ZXJ0IGludDQ4J3MgdGhhdCBmaXQgaW4gYW4gaW50MzIgaW50byBhIGRvdWJsZQorICAg
ICAgICAgICAgICAgIC8vIHJhdGhlciB0aGFuIHRyeWluZyB0byBjcmVhdGUgYSBib3hlZCBpbnQz
MiBsaWtlIEludDQ4VG9WYWx1ZSBkb2VzLgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPEludDQ4VXNlPihlZGdlLm5vZGUoKSk7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0
OEFzRG91YmxlLCBJbnQ0OFRvRG91YmxlLAorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRO
b2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBJbnQ0OFVzZSkpOworICAgICAgICAg
ICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoZW5h
YmxlSW50NDgoKSAmJiB1c2VLaW5kICE9IEludDQ4VXNlCisgICAgICAgICAgICAmJiBlZGdlLT5z
aG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkgJiYgIWVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMy
KCkpIHsKKyAgICAgICAgICAgIC8vIFdlIG1ha2UgYWxsIG5vbi1pbnQ0OCB1c2VzIG9mIGludDQ4
IHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ0OFRvVmFsdWUKKyAgICAgICAgICAgIC8v
IG5vZGUgdG8gZW5zdXJlIHRoYXQgd2UgaGFuZGxlIHRoaXMgcHJvcGVybHk6CisgICAgICAgICAg
ICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0
aEFkZChAYSwgLi4uKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIEBhKQorICAgICAgICAg
ICAgLy8gZDogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAv
LyBXaXRob3V0IGFuIGludGVybWVkaWF0ZSBub2RlIGFuZCBqdXN0IGxhYmVsaW5nIHRoZSB1c2Vz
LCB3ZSB3aWxsIGdldDoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50
NDgKKyAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAg
ICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAYSkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRk
KEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQW5kIG5vdyB0
aGUgYy0+VW50eXBlZDpAYSBlZGdlIHdpbGwgYm94IHRoZSB2YWx1ZSBvZiBAYSBpbnRvIGEgZG91
YmxlLiBUaGlzCisgICAgICAgICAgICAvLyBpcyBiYWQsIGJlY2F1c2Ugbm93IHRoZSBkLT5JbnQ0
ODpAYSBlZGdlIHdpbGwgZWl0aGVyIGhhdmUgdG8gZG8gZG91YmxlLXRvLWludAorICAgICAgICAg
ICAgLy8gY29udmVyc2lvbnMsIG9yIHdpbGwgaGF2ZSB0byBPU1IgZXhpdCB1bmNvbmRpdGlvbmFs
bHkuIEFsdGVybmF0aXZlbHkgd2UgY291bGQKKyAgICAgICAgICAgIC8vIGhhdmUgdGhlIGMtPlVu
dHlwZWQ6QGEgZWRnZSBib3ggdGhlIHZhbHVlIGJ5IGNvcHlpbmcgcmF0aGVyIHRoYW4gaW4tcGxh
Y2UuCisgICAgICAgICAgICAvLyBCdXQgdGhlc2UgYm94aW5ncyBhcmUgYWxzbyBjb3N0bHkgc28g
dGhpcyB3b3VsZG4ndCBiZSBncmVhdC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBU
aGUgc29sdXRpb24gd2UgdXNlIGlzIHRvIGFsd2F5cyBoYXZlIG5vbi1JbnQ0OCB1c2VzIG9mIHBy
ZWRpY3RlZCBJbnQ0OCdzIHVzZQorICAgICAgICAgICAgLy8gYW4gaW50ZXJ2ZW5pbmcgSW50NDhU
b1ZhbHVlIG5vZGU6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4
CisgICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAg
Ly8geDogSW50NDhUb1ZhbHVlKEludDQ4OkBhKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4s
IFVudHlwZWQ6QHgpCisgICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQor
ICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBldmVuIGlmIHdlIGhhZCBt
dWx0aXBsZSBub24taW50NDggdXNlcyBvZiBAYSwgdGhlIG11bHRpcGxlCisgICAgICAgICAgICAv
LyBJbnQ0OFRvVmFsdWUncyB3b3VsZCBnZXQgQ1NFJ2QgdG9nZXRoZXIuIFNvIHRoZSBib3hpbmcg
d291bGQgb25seSBoYXBwZW4gb25jZS4KKyAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUs
IEBhIHdvdWxkIGNvbnRpbnVlIHRvIGJlIHJlcHJlc2VudGVkIGFzIGEgbmF0aXZlIGludDQ4Lgor
ICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHdvdWxkIGhhdmUg
YmVlbiB0byBpbnNlcnQgVG9OYXRpdmVJbnQ0OCBub2RlcyBvbiBpbnQ0OCB1c2VzIG9mCisgICAg
ICAgICAgICAvLyBpbnQ0OCdzLiBUaGlzIHdvdWxkIGhhdmUgaGFuZGxlZCB0aGUgYWJvdmUgZXhh
bXBsZSBidXQgd291bGQgZmFsbCBvdmVyIGZvcjoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAg
ICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IENhbGwoLi4uLCBAYSkKKyAgICAg
ICAgICAgIC8vIGM6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gQnV0IHRoZSBzb2x1dGlvbiB3ZSB1c2UgaGFuZGxlcyB0aGUgYWJvdmUgZ3JhY2VmdWxs
eS4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8SW50NDhV
c2U+KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTm9kZSogcmVzdWx0
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY0ludDQ4LCBJbnQ0OFRvVmFsdWUsCisgICAgICAgICAgICAgICAgbV9jdXJyZW50
Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgSW50NDhVc2UpKTsKKyAgICAgICAg
ICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPHVzZUtpbmQ+
KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgCiAgICAgICAgIGVkZ2Uuc2V0VXNlS2luZCh1c2VLaW5k
KTsKICAgICB9CiAgICAgCkBAIC0xMzc4LDcgKzE0NzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
aW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoRWRnZSYgZWRnZSwgVXNlS2luZCB1c2VLaW5kID0gTnVt
YmVyVXNlLCBTcGVjdWxhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBCYWNrd2FyZFNwZWN1bGF0
aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDgsIEludDMyVG9Eb3Vi
bGUsCisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4QXNEb3VibGUsIEludDMy
VG9Eb3VibGUsCiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVk
Z2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb3J3YXJk
U3BlY3VsYXRpb24pCiAgICAgICAgICAgICByZXN1bHQtPm1lcmdlRmxhZ3MoTm9kZUV4aXRzRm9y
d2FyZCk7CkBAIC0xMzkyLDYgKzE0ODQsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgZWRnZSA9IEVk
Z2UocmVzdWx0LCB1c2VLaW5kKTsKICAgICB9CiAgICAgCisgICAgLy8gV2UgbWFrZSBhbGwgaW50
NDggZWRnZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgQXNOYXRpdmVJbnQ0OCBub2RlIHRvIGVuc3Vy
ZQorICAgIC8vIHRoYXQgd2UgaGFuZGxlIHRoaXMgcHJvcGVybHk6CisgICAgdGVtcGxhdGU8VXNl
S2luZCB1c2VLaW5kPgorICAgIHZvaWQgZml4SW50NDhFZGdlKEVkZ2UmIGVkZ2UpCisgICAgewor
ICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAg
ICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0OCwgQXNOYXRpdmVJbnQ0OCwKKyAgICAgICAg
ICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIHVzZUtpbmQp
KTsKKyAgICAgICAgZWRnZSA9IGVkZ2UocmVzdWx0LCBJbnQ0OFVzZSk7CisgICAgfQorCiAgICAg
dm9pZCB0cnVuY2F0ZUNvbnN0YW50VG9JbnQzMihFZGdlJiBlZGdlKQogICAgIHsKICAgICAgICAg
Tm9kZSogb2xkTm9kZSA9IGVkZ2Uubm9kZSgpOwpAQCAtMTQzNCwxMyArMTUzNywyMCBAQCBwcml2
YXRlOgogICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUludGVnZXJBZGQoTm9kZSogbm9kZSkKICAgICB7
CiAgICAgICAgIEFkZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gbV9ncmFwaC5hZGRTcGVjdWxhdGlv
bk1vZGUobm9kZSk7Ci0gICAgICAgIGlmIChtb2RlID09IERvbnRTcGVjdWxhdGVJbnQzMikKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1vZGUgIT0gRG9udFNwZWN1bGF0
ZUludDMyKSB7CisgICAgICAgICAgICB0cnVuY2F0ZUNvbnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUs
IG1vZGUpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHRydW5jYXRlQ29u
c3RhbnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9kZSk7Ci0gICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQy
KCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYg
bV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAgICAg
ICBmaXhFZGdlPEludDQ4VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdl
PEludDQ4VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAg
ICBib29sIGF0dGVtcHRUb01ha2VHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAJKHJldmlzaW9uIDE1
NTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBGbHUKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgb3V0LnByaW50
KCJGbHVzaGVkSW50MzIiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRmx1c2hlZEludDQ4
OgorICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWRJbnQzMiIpOworICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWREb3VibGUi
KTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
bHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIGVudW0gRmx1c2hGb3JtYXQgewogICAgIERl
YWRGbHVzaCwKICAgICBGbHVzaGVkSW50MzIsCisgICAgRmx1c2hlZEludDQ4LAogICAgIEZsdXNo
ZWREb3VibGUsCiAgICAgRmx1c2hlZENlbGwsCiAgICAgRmx1c2hlZEJvb2xlYW4sCkBAIC01NSw2
ICs1Niw4IEBAIGlubGluZSBOb2RlRmxhZ3MgcmVzdWx0Rm9yKEZsdXNoRm9ybWF0IGYKICAgICAg
ICAgcmV0dXJuIE5vZGVSZXN1bHRKUzsKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAg
cmV0dXJuIE5vZGVSZXN1bHRJbnQzMjsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAg
cmV0dXJuIE5vZGVSZXN1bHRJbnQ0ODsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAg
IHJldHVybiBOb2RlUmVzdWx0TnVtYmVyOwogICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CkBAIC03
NCw2ICs3Nyw4IEBAIGlubGluZSBVc2VLaW5kIHVzZUtpbmRGb3IoRmx1c2hGb3JtYXQgZm8KICAg
ICAgICAgcmV0dXJuIENlbGxVc2U7CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJl
dHVybiBJbnQzMlVzZTsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgcmV0dXJuIElu
dDQ4VXNlOwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKICAgICAgICAgcmV0dXJuIE51bWJlclVz
ZTsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw2ICs4NiwxNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbml0R1BSKG5vZGUsIHVz
ZUNvdW50LCBncHIsIERhdGFGb3JtYXRJbnQzMik7CiAgICAgfQorICAgIHZvaWQgaW5pdEludDQ4
KE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgcmVnKQorICAgIHsKKyAgICAg
ICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBEYXRhRm9ybWF0SW50NDgpOworICAgIH0K
KyAgICB2b2lkIGluaXRTdHJpY3RJbnQ0OChOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwg
R1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIGluaXRHUFIobm9kZSwgdXNlQ291bnQsIGdwciwg
RGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB2
b2lkIGluaXRKU1ZhbHVlKE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgZ3By
LCBEYXRhRm9ybWF0IGZvcm1hdCA9IERhdGFGb3JtYXRKUykKICAgICB7CkBAIC0xODcsNiArMTk1
LDExIEBAIHB1YmxpYzoKICAgICAvLyBHZXQgdGhlIGZvcm1hdCBvZiB0aGUgdmFsdWUgYXMgaXQg
aXMgc3BpbGxlZCBpbiB0aGUgSlNTdGFjayAob3IgJ25vbmUnKS4KICAgICBEYXRhRm9ybWF0IHNw
aWxsRm9ybWF0KCkgeyByZXR1cm4gbV9zcGlsbEZvcm1hdDsgfQogICAgIAorICAgIGJvb2wgaXNG
b3JtYXQoRGF0YUZvcm1hdCBleHBlY3RlZEZvcm1hdCkKKyAgICB7CisgICAgICAgIHJldHVybiBy
ZWdpc3RlckZvcm1hdCgpID09IGV4cGVjdGVkRm9ybWF0IHx8IHNwaWxsRm9ybWF0KCkgPT0gZXhw
ZWN0ZWRGb3JtYXQ7CisgICAgfQorICAgIAogICAgIGJvb2wgaXNKU0Zvcm1hdChEYXRhRm9ybWF0
IGV4cGVjdGVkRm9ybWF0KQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6aXNKU0Zvcm1hdChy
ZWdpc3RlckZvcm1hdCgpLCBleHBlY3RlZEZvcm1hdCkgfHwgSlNDOjppc0pTRm9ybWF0KHNwaWxs
Rm9ybWF0KCksIGV4cGVjdGVkRm9ybWF0KTsKQEAgLTE5Nyw2ICsyMTAsMTYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gaXNKU0Zvcm1hdChEYXRhRm9ybWF0SlNJbnQzMik7CiAgICAgfQogICAg
IAorICAgIGJvb2wgaXNJbnQ0OCgpCisgICAgeworICAgICAgICByZXR1cm4gaXNGb3JtYXQoRGF0
YUZvcm1hdEludDQ4KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc1N0cmljdEludDQ4KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBpc0Zvcm1hdChEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAg
IH0KKyAgICAKICAgICBib29sIGlzSlNEb3VibGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlz
SlNGb3JtYXQoRGF0YUZvcm1hdEpTRG91YmxlKTsKQEAgLTMxNCw2ICszMzcsMTQgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZvcm1hdEludDMyKTsK
ICAgICB9CisgICAgdm9pZCBmaWxsSW50NDgoVmFyaWFibGVFdmVudFN0cmVhbSYgc3RyZWFtLCBH
UFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZvcm1h
dEludDQ4KTsKKyAgICB9CisgICAgdm9pZCBmaWxsU3RyaWN0SW50NDgoVmFyaWFibGVFdmVudFN0
cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgZmlsbEdQUihzdHJlYW0s
IGdwciwgRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICB9CiAgICAgdm9pZCBmaWxsQm9vbGVh
bihWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIpCiAgICAgewogICAgICAg
ICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0Qm9vbGVhbik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE1NTY0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDggKzQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogI2RlZmluZSBO
b2RlUmVzdWx0SlMgICAgICAgICAgICAgICAgICAgICAweDAwMDEKICNkZWZpbmUgTm9kZVJlc3Vs
dE51bWJlciAgICAgICAgICAgICAgICAgMHgwMDAyCiAjZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAg
ICAgICAgICAgICAgICAgIDB4MDAwMwotI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAg
ICAgICAgICAweDAwMDQKLSNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAg
MHgwMDA1CisjZGVmaW5lIE5vZGVSZXN1bHRJbnQ0OCAgICAgICAgICAgICAgICAgIDB4MDAwNAor
I2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUg
Tm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA2CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogI2RlZmluZSBOb2RlTXVzdEdlbmVyYXRlICAgICAgICAgICAgICAg
ICAweDAwMDggLy8gc2V0IG9uIG5vZGVzIHRoYXQgaGF2ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkg
bm90IHRyaXZpYWxseSBiZSByZW1vdmVkIGJ5IERDRS4KICNkZWZpbmUgTm9kZUhhc1ZhckFyZ3Mg
ICAgICAgICAgICAgICAgICAgMHgwMDEwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEludDMyVG9Eb3VibGUsIE5v
ZGVSZXN1bHROdW1iZXIpIFwKICAgICAvKiBVc2VkIHRvIHNwZWN1bGF0ZSB0aGF0IGEgZG91Ymxl
IHZhbHVlIGlzIGFjdHVhbGx5IGFuIGludGVnZXIuICovXAogICAgIG1hY3JvKERvdWJsZUFzSW50
MzIsIE5vZGVSZXN1bHRJbnQzMiB8IE5vZGVFeGl0c0ZvcndhcmQpIFwKKyAgICAvKiBVc2VkIHRv
IHNlcGFyYXRlIHJlcHJlc2VudGF0aW9uIGFuZCByZWdpc3RlciBhbGxvY2F0aW9uIG9mIEludDQ4
J3MgcmVwcmVzZW50ZWQgKi9cCisgICAgLyogYXMgdmFsdWVzLiAqL1wKKyAgICBtYWNybyhJbnQ0
OFRvVmFsdWUsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKEludDQ4VG9Eb3VibGUsIE5vZGVS
ZXN1bHROdW1iZXIpIFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGFyaXRobWV0aWMgb3BlcmF0
aW9ucy4gKi9cCiAgICAgbWFjcm8oQXJpdGhBZGQsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJl
Z2lzdGVyU2F2ZVBsYW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaAkocmV2aXNpb24gMTU1NjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgZW51bSBTaWxlbnRTcGlsbEFjdGlvbiB7CiBlbnVtIFNp
bGVudEZpbGxBY3Rpb24gewogICAgIERvTm90aGluZ0ZvckZpbGwsCiAgICAgU2V0SW50MzJDb25z
dGFudCwKKyAgICBTZXRJbnQ0OENvbnN0YW50LAorICAgIFNldFN0cmljdEludDQ4Q29uc3RhbnQs
CiAgICAgU2V0Qm9vbGVhbkNvbnN0YW50LAogICAgIFNldENlbGxDb25zdGFudCwKICAgICBTZXRU
cnVzdGVkSlNDb25zdGFudCwKQEAgLTYxLDggKzYzLDEyIEBAIGVudW0gU2lsZW50RmlsbEFjdGlv
biB7CiAgICAgTG9hZDMyVGFnLAogICAgIExvYWQzMlBheWxvYWQsCiAgICAgTG9hZDMyUGF5bG9h
ZEJveEludCwKKyAgICBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50NDgsCisgICAgTG9hZDMyUGF5
bG9hZFNpZ25FeHRlbmQsCiAgICAgTG9hZFB0ciwKICAgICBMb2FkNjQsCisgICAgTG9hZDY0U2hp
ZnRSaWdodDE2LAorICAgIExvYWQ2NFNoaWZ0TGVmdDE2LAogICAgIExvYWREb3VibGUsCiAgICAg
TG9hZERvdWJsZUJveERvdWJsZSwKICAgICBMb2FkSlNVbmJveERvdWJsZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZp
c2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDQwIEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbEludDMyKEVkZ2UgZWQKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmJveEludDQ4KEdQUlJlZyBzb3VyY2VHUFIsIEdQUlJlZyB0YXJnZXRHUFIsIERhdGFG
b3JtYXQgZm9ybWF0KQoreworICAgIEdQUlJlZyB0ZW1wR1BSOworICAgIGlmIChzb3VyY2VHUFIg
PT0gdGFyZ2V0R1BSKQorICAgICAgICB0ZW1wR1BSID0gYWxsb2NhdGUoKTsKKyAgICBlbHNlCisg
ICAgICAgIHRlbXBHUFIgPSB0YXJnZXRHUFI7CisgICAgCisgICAgRlBSUmVnIGZwciA9IGZwckFs
bG9jYXRlKCk7CisKKyAgICBpZiAoZm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAg
bV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgc291cmNlR1BSKTsKKyAgICBlbHNlCisg
ICAgICAgIEFTU0VSVChmb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICBtX2pp
dC5zaWduRXh0ZW5kMzJUb1B0cihzb3VyY2VHUFIsIHRlbXBHUFIpOworICAgIAorICAgIEpJVENv
bXBpbGVyOjpKdW1wIGlzRG91YmxlID0gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgIEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwgc291cmNlR1BSLCB0ZW1wR1BSKTsKKyAgICAKKyAgICBtX2ppdC56ZXJv
RXh0ZW5kMzJUb1B0cihzb3VyY2VHUFIsIHRhcmdldEdQUik7CisgICAgbV9qaXQub3I2NChHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRhcmdldEdQUik7CisgICAgSklUQ29tcGlsZXI6
Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAKKyAgICBpc0RvdWJsZS5saW5rKCZtX2pp
dCk7CisgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUoc291cmNlR1BSLCBmcHIpOworICAg
IGJveERvdWJsZShmcHIsIHRhcmdldEdQUik7CisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAg
CisgICAgaWYgKHRlbXBHUFIgIT0gdGFyZ2V0R1BSKQorICAgICAgICB1bmxvY2sodGVtcEdQUik7
CisgICAgCisgICAgdW5sb2NrKGZwcik7Cit9CisKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bEpTVmFsdWUoRWRnZSBlZGdlKQogewogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKQEAgLTE0OSwxMSArMTgzLDIzIEBAIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAg
ICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVy
U3BpbGxlZCk7Ci0gICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMy
KSB7CisgICAgICAgICAgICBzd2l0Y2ggKHNwaWxsRm9ybWF0KSB7CisgICAgICAgICAgICBjYXNl
IERhdGFGb3JtYXRJbnQzMjogewogICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogICAgICAgICAgICAgICAg
IG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBncHIpOwogICAgICAg
ICAgICAgICAgIHNwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdEpTSW50MzI7Ci0gICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgICAgICBj
YXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2
NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAg
ICAgICAgICAgIGJveEludDQ4KGdwciwgZ3ByLCBzcGlsbEZvcm1hdCk7CisgICAgICAgICAgICAg
ICAgc3BpbGxGb3JtYXQgPSBEYXRhRm9ybWF0SlM7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpLCBncHIpOwogICAgICAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRh
Rm9ybWF0RG91YmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gYm94IHRoZSBk
b3VibGUsIHNpbmNlIHdlIHdhbnQgYSBKU1ZhbHVlLgpAQCAtMTYxLDYgKzIwNyw3IEBAIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgICAgICAgICAgICAg
c3BpbGxGb3JtYXQgPSBEYXRhRm9ybWF0SlNEb3VibGU7CiAgICAgICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0ICYgRGF0YUZv
cm1hdEpTKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIHNwaWxsRm9ybWF0KTsKICAgICAg
ICAgfQpAQCAtMTkzLDYgKzI0MCwxNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1Zh
bHVlKEVkZ2UgCiAKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CisgICAgICAgIAorICAgIGNh
c2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7Cisg
ICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBsb2NrKGdwcik7CisgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSBhbGxvY2F0ZSgpOworICAgICAgICBib3hJbnQ0OChncHIs
IHJlc3VsdEdQUiwgaW5mby5yZWdpc3RlckZvcm1hdCgpKTsKKyAgICAgICAgdW5sb2NrKGdwcik7
CisgICAgICAgIHJldHVybiByZXN1bHRHUFI7CisgICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0
Q2VsbDoKICAgICAgICAgLy8gTm8gcmV0YWcgcmVxdWlyZWQgb24gSlNWQUxVRTY0IQpAQCAtODQ4
LDcgKzkwNSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAg
ICAgICAgCiAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0
KCk7CiAgICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRh
Rm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMik7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQg
PT0gRGF0YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBz
cGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOwogICAgICAgICAKICAgICAgICAg
bV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwog
ICAgICAgICAKQEAgLTg2OSw2ICs5MjYsMjUgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlSW50MwogICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEpTSW50
MzI7CiAgICAgICAgICAgICByZXR1cm4gZ3ByOwogICAgICAgICB9CisgICAgICAgIGlmIChzcGls
bEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0
cmljdEludDQ4KSB7CisgICAgICAgICAgICAvLyBDYW4gb25seSBoYXBwZW4gaWYgd2UndmUgYWxy
ZWFkeSBwcm92ZWQgdGhhdCB0aGUgdmFsdWUgaXMgYW4gaW50MzIuCisgICAgICAgICAgICAvLyBU
aGF0J3MgYmVjYXVzZSBpZiBhIHZhbHVlIG9yaWdpbmF0ZWQgYXMgYSBKU1ZhbHVlIHRoZW4gd2Ug
d291bGQKKyAgICAgICAgICAgIC8vIHNwZWN1bGF0ZSB0aGF0IGl0J3MgYW4gaW50MzIgYmVmb3Jl
IHJlcHJlc2VudGluZyBpdCBhcyBhbiBpbnQ0OC4KKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSwg
aWYgd2Uga25vd2luZ2x5IHByb2R1Y2VkIGFuIGludDQ4LCB0aGVuIHdlIHdvdWxkIGJlCisgICAg
ICAgICAgICAvLyBib3hpbmcgaXQgaW50byBhIHZhbHVlIHVzaW5nIEludDQ4VG9WYWx1ZS4gVGhp
cyBhc3NlcnRpb24gaXMgdmFsaWQKKyAgICAgICAgICAgIC8vIG9ubHkgYmVjYXVzZSBJbnQ0OCBp
cyBzb21ldGhpbmcgdGhhdCB3ZSBpbnRyb2R1Y2UgYXQgcHJlZGljdGlvbiB0aW1lLgorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNJbnQzMikpOworICAgICAgICAgICAg
aWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIp
LCBncHIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
NjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAg
ICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAg
ICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwciwgZ3ByKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAg
ICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAgICAgICAgICAgIHJldHVybiBn
cHI7CisgICAgICAgIH0KICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAKICAgICAgICAgLy8gRmlsbCBhcyBKU1ZhbHVl
LCBhbmQgZmFsbCB0aHJvdWdoLgpAQCAtOTIzLDYgKzk5OSwyNyBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3Jt
YXRJbnQzMjsKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2Ug
RGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAm
IH5TcGVjSW50MzIpKTsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAg
IG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwciwg
Z3ByKTsKKyAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOworICAgICAgICBp
bmZvLmZpbGxJbnQzMigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAg
fQorICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODogeworICAgICAgICBSRUxFQVNF
X0FTU0VSVCghKHR5cGUgJiB+U3BlY0ludDMyKSk7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZv
LmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBtX2ppdC5yc2hpZnQ2
NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0
cihncHIpOworICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CisgICAgICAg
IGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAg
ICB9CiAKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNE
b3VibGU6IHsKQEAgLTk2NSw2ICsxMDYyLDE0OCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVJbnQzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NDgoRWRnZSBlZGdlLCBEYXRhRm9ybWF0IGRlc2lyZWRG
b3JtYXQpCit7CisgICAgQVNTRVJUKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8
IGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICBBYnN0cmFjdFZh
bHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gdmFsdWUubV90eXBlOworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVj
TWFjaGluZUludCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2Ut
PnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlv
bkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisKKyAgICBzd2l0Y2gg
KGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgeworICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKKyAg
ICAgICAgaWYgKChlZGdlLT5oYXNDb25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChlZGdl
Lm5vZGUoKSkuaXNNYWNoaW5lSW50KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0RG91YmxlKSB7CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgICAgICByZXR1cm4gYWxsb2Nh
dGUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRl
KCk7CisKKyAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSB2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAgICAg
ICBBU1NFUlQodmFsdWUuaXNNYWNoaW5lSW50KCkpOworICAgICAgICAgICAgbV9ncHJzLnJldGFp
bihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKKyAgICAgICAgICAg
IGludDY0X3QgdmFsdWUgPSB2YWx1ZS5hc01hY2hpbmVJbnQoKTsKKyAgICAgICAgICAgIGlmIChk
ZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9
IHZhbHVlIDw8IDE2OworICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1t
NjQodmFsdWUpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsR1BSKCptX3N0cmVhbSwgZ3By
LCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0
KCk7CisgICAgICAgIAorICAgICAgICAvLyBGSVhNRSEhIQorICAgICAgICAKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9
PSBEYXRhRm9ybWF0SW50MzIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgICAgIAorICAgICAgICBt
X2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7Cisg
ICAgICAgIAorICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEpTSW50MzIgfHwg
c3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBr
bm93IHRoaXMgd2FzIHNwaWxsZWQgYXMgYW4gaW50ZWdlciB3ZSBjYW4gZmlsbCB3aXRob3V0IGNo
ZWNraW5nLgorICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihncHIsIGdwcik7CisgICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9y
bWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OChn
cHIpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAgICAg
aW5mby5maWxsSW50NDgoZ3ByKTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAg
ICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAg
ICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAg
ICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OChncHIpOworICAgICAgICAgICAgICAgIHJldHVy
biBncHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0
YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0
ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OChncHIpOworICAg
ICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5sb2FkNjQoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKworICAgICAgICAv
LyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91Z2guCisgICAgICAgIGluZm8uZmlsbEpT
VmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0ludDMyKTsKKyAgICAgICAgbV9ncHJz
LnVubG9jayhncHIpOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAg
IC8vIENoZWNrIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLiBOb3RlIHRoYXQgd2Ugd291bGQgKmxp
a2UqIHRvIHVuYm94IGFuIEludDQ4CisgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgYnV0IHRoaXMg
aXMgdG9vIGNvc3RseS4gV2Ugb25seSAqcHJvdmUqIHRoYXQgdGhpcyBpcyBhbiBJbnQ0OAorICAg
ICAgICAvLyBldmVuIHRob3VnaCB3ZSBjaGVjayBpZiBpdCdzIGFuIGludDMyLgorICAgICAgICBH
UFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAg
ICAgaWYgKHR5cGUgJiB+U3BlY0ludDMyKQorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2Vt
Ymxlcjo6QmVsb3csIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAg
ICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGdwcik7CisgICAgICAgIGlmIChkZXNpcmVkRm9y
bWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgZmlsbFN0cmljdElu
dDQ4KGdwcik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisgICAgICAgIG1f
aml0LmxzaGlmdDY0KFRydXN0ZWRJbW02NCgxNiksIGdwcik7CisgICAgICAgIGZpbGxJbnQ0OChn
cHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdElu
dDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9
IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIG1faml0LnNp
Z25FeHRlbmQzMlRvUHRyKGdwcik7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFG
b3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgZmlsbFN0cmljdEludDQ4KGdwcik7Cisg
ICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisgICAgICAgIG1faml0LmxzaGlmdDY0
KFRydXN0ZWRJbW02NCgxNiksIGdwcik7CisgICAgICAgIGZpbGxJbnQ0OChncHIpOworICAgICAg
ICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7
CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhn
cHIpOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgp
CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVk
SW1tMzIoMTYpLCBncHIpOworICAgICAgICBmaWxsU3RyaWN0SW50NDgoZ3ByKTsKKyAgICAgICAg
cmV0dXJuIGdwcjsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7
CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhn
cHIpOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAg
ICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIo
MTYpLCBncHIpOworICAgICAgICBmaWxsSW50NDgoZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsK
KyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0
SlNEb3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRC
b29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRK
U0Jvb2xlYW46IHsKKyAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIDApOworICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9y
bWF0SW50MzI7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgIH0KKworICAgIGNhc2Ug
RGF0YUZvcm1hdFN0b3JhZ2U6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0KK30KKwogRlBSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UgZWRnZSkKIHsKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCkBAIC0xMDI1LDYgKzEyNjQsMjQgQEAgRlBSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogICAgICAgICAgICAgdW5sb2NrKGdwcik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNh
c2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUo
KTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJTcGlsbGVkKTsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSW50
NDgoZ3ByKTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0
ODogeworICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBt
X2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7Cisg
ICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJl
Z2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KGdwcik7Cisg
ICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwpA
QCAtMTA4OSw2ICsxMzQ2LDI0IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZURvdWIKICAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZnByOwog
ICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAg
IG1faml0LnJzaGlmdDMyKFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgIGluZm8uZmls
bFN0cmljdEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgbV9ncHJzLnVubG9jayhncHIp
OworICAgICAgICAvLyBmYWxsIHRocm91Z2guCisgICAgfQorICAgICAgICAKKyAgICBjYXNlIERh
dGFGb3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUo
KTsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2Nr
KGdwcik7CisgICAgICAgIG1faml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKGdwciwgZnByKTsKKyAg
ICAgICAgbV9ncHJzLnVubG9jayhncHIpOworICAgICAgICByZXR1cm4gZnByOworICAgIH0KIAog
ICAgIC8vIFVuYm94IHRoZSBkb3VibGUKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewpA
QCAtMTE5MSw3ICsxNDY2LDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
Q2VsbAogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdERv
dWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46Ci0gICAgY2FzZSBEYXRhRm9ybWF0
Qm9vbGVhbjogeworICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CisgICAgY2FzZSBEYXRhRm9y
bWF0SW50NDg6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKICAgICAgICAgdGVy
bWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAp
OwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CkBAIC0xMjc0LDcgKzE1NTEsOSBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0
YUZvcm1hdEpTQ2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRDZWxsOiB7CisgICAgY2FzZSBEYXRh
Rm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICBjYXNlIERhdGFGb3Jt
YXRTdHJpY3RJbnQ0ODogewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgp
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDcgKzMzNSw5
IEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICAgICAgICAg
IHNwaWxsQWN0aW9uID0gU3RvcmUzMlBheWxvYWQ7CiAgICAgICAgIGVsc2UgaWYgKHJlZ2lzdGVy
Rm9ybWF0ID09IERhdGFGb3JtYXRDZWxsIHx8IHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRT
dG9yYWdlKQogICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZVB0cjsKLSAgICAgICAgZWxz
ZSB7CisgICAgICAgIGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8
fCByZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAg
IHNwaWxsQWN0aW9uID0gU3RvcmU2NDsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFT
U0VSVChyZWdpc3RlckZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CiAgICAgICAgICAgICBzcGlsbEFj
dGlvbiA9IFN0b3JlNjQ7CiAgICAgICAgIH0KQEAgLTM4Niw2ICszODgsNDAgQEAgU2lsZW50UmVn
aXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgIH0gZWxzZSBpZiAocmVnaXN0ZXJG
b3JtYXQgPT0gRGF0YUZvcm1hdFN0b3JhZ2UpIHsKICAgICAgICAgQVNTRVJUKGluZm8uZ3ByKCkg
PT0gc291cmNlKTsKICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWRQdHI7CisgICAgfSBlbHNlIGlm
IChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpIHsKKyAgICAgICAgaWYgKG5vZGUt
Pmhhc0NvbnN0YW50KCkpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0SW50NDhDb25zdGFu
dDsKKyAgICAgICAgZWxzZSBpZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5m
by5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRKUykKKyAgICAgICAgICAgIGZpbGxBY3Rpb24g
PSBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50NDg7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3Bp
bGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0g
TG9hZDY0OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1h
dFN0cmljdEludDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NFNoaWZ0TGVmdDE2
OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUp
CisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFz
IGFuIGludDMyIHdpbGwgbmV2ZXIKKyAgICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2Vs
bCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRvdWJsZQorICAgICAgICAg
ICAgLy8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
cmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICBpZiAobm9k
ZS0+aGFzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRTdHJpY3RJbnQ0
OENvbnN0YW50OworICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgp
KSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQorICAgICAgICAgICAgZmls
bEFjdGlvbiA9IExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOworICAgICAgICBlbHNlIGlmIChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlv
biA9IExvYWQ2NFNoaWZ0UmlnaHQxNjsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1h
dCgpID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBM
b2FkNjQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0
Tm9uZSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZp
ZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgorICAgICAgICAgICAgLy8gYmUgdHVybmVkIGludG8g
YSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCisgICAg
ICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfSBlbHNl
IHsKICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICNpZiBV
U0UoSlNWQUxVRTY0KQpAQCAtMzkzLDcgKzQyOSw2IEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4g
U3BlY3VsYXRpdmVKSVQ6OnMKICAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpIHsKICAg
ICAgICAgICAgIGlmICh2YWx1ZU9mSlNDb25zdGFudChub2RlKS5pc0NlbGwoKSkKICAgICAgICAg
ICAgICAgICBmaWxsQWN0aW9uID0gU2V0VHJ1c3RlZEpTQ29uc3RhbnQ7Ci0gICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldEpTQ29uc3RhbnQ7CiAgICAgICAg
IH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikgewogICAg
ICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyKTsKQEAg
LTUxMiw2ICs1NDcsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBT
aQogICAgIGNhc2UgU2V0SW50MzJDb25zdGFudDoKICAgICAgICAgbV9qaXQubW92ZShJbW0zMih2
YWx1ZU9mSW50MzJDb25zdGFudChwbGFuLm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTZXRJbnQ0OENvbnN0YW50OgorICAgICAgICBtX2ppdC5tb3ZlKElt
bTY0KHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS5hc01hY2hpbmVJbnQoKSA8PCAxNiks
IHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNldFN0cmljdEludDQ4Q29u
c3RhbnQ6CisgICAgICAgIG1faml0Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29uc3RhbnQocGxhbi5u
b2RlKCkpLmFzTWFjaGluZUludCgpKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgU2V0Qm9vbGVhbkNvbnN0YW50OgogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0z
Mih2YWx1ZU9mQm9vbGVhbkNvbnN0YW50KHBsYW4ubm9kZSgpKSksIHBsYW4uZ3ByKCkpOwogICAg
ICAgICBicmVhazsKQEAgLTUzMyw2ICs1NzQsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2ls
ZW50RmlsbChjb25zdCBTaQogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxv
YWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAgICAg
ICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBwbGFuLmdwcigp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50NDg6
CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUo
KS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4
dGVuZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LmxzaGlm
dDY0KFRydXN0ZWRJbW0zMigxNiksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOgorICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5n
cHIoKSk7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHBsYW4uZ3ByKCksIHBsYW4u
Z3ByKCkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIExvYWREb3VibGVCb3hEb3VibGU6CiAg
ICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+
dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQuc3ViNjQoR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBwbGFuLmdwcigpKTsKQEAgLTU3NCw2ICs2MjQs
MTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBTaQogICAgIGNhc2Ug
TG9hZDY0OgogICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxh
bi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTG9hZDY0U2hpZnRSaWdodDE2OgorICAgICAgICBtX2ppdC5sb2FkNjQoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxh
bi5ncHIoKSk7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHBsYW4u
Z3ByKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExvYWQ2NFNoaWZ0TGVmdDE2OgorICAg
ICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZp
cnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LmxzaGlmdDY0KFRy
dXN0ZWRJbW0zMigxNiksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKICNlbmRpZgogICAg
IGNhc2UgTG9hZERvdWJsZToKICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6
YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmZwcigpKTsK
QEAgLTMwODgsNiArMzE0Niw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5l
Z2F0ZSgKIAogICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKIAor
ICAgICAgICAvLyBOb3RlOiB0aGVyZSBpcyBubyBub3Rpb24gb2YgYmVpbmcgbm90IHVzZWQgYXMg
YSBudW1iZXIsIGJ1dCBzb21lb25lCisgICAgICAgIC8vIGNhcmluZyBhYm91dCBuZWdhdGl2ZSB6
ZXJvLgorICAgICAgICAKICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5v
ZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgbV9qaXQubmVnMzIocmVzdWx0Lmdw
cigpKTsKICAgICAgICAgZWxzZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTU2NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2
ICszMzQsNyBAQCBwdWJsaWM6CiAgICAgLy8gbWFjaGluZSByZWdpc3RlcnMsIGltcGxpY2l0bHkg
Z2VuZXJhdGluZyBzcGVjdWxhdGlvbiBjaGVja3MgYXMgbmVlZGVkLgogICAgIEdQUlJlZyBmaWxs
U3BlY3VsYXRlSW50MzIoRWRnZSwgRGF0YUZvcm1hdCYgcmV0dXJuRm9ybWF0KTsKICAgICBHUFJS
ZWcgZmlsbFNwZWN1bGF0ZUludDMyU3RyaWN0KEVkZ2UpOworICAgIEdQUlJlZyBmaWxsU3BlY3Vs
YXRlSW50NDgoRWRnZSwgRGF0YUZvcm1hdCBkZXNpcmVkRm9ybWF0KTsKICAgICBGUFJSZWcgZmls
bFNwZWN1bGF0ZURvdWJsZShFZGdlKTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUNlbGwoRWRn
ZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVCb29sZWFuKEVkZ2UpOwpAQCAtNDY5LDYgKzQ3
MCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBib3hEb3VibGUoZnByLCBhbGxv
Y2F0ZSgpKTsKICAgICB9CisgICAgCisgICAgdm9pZCBib3hJbnQ0OChHUFJSZWcgc291cmNlR1BS
LCBHUFJSZWcgdGFyZ2V0R1BSLCBEYXRhRm9ybWF0IGZvcm1hdCk7CiAjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQogICAgIHZvaWQgYm94RG91YmxlKEZQUlJlZyBmcHIsIEdQUlJlZyB0YWdHUFIsIEdQ
UlJlZyBwYXlsb2FkR1BSKQogICAgIHsKQEAgLTU2MCw4ICs1NjMsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCi0gICAgYm9vbCBpc0tub3duSW50ZWdlcihOb2RlKiBub2RlKSB7
IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiB+U3BlY0ludDMyKTsgfQot
ICAgIGJvb2wgaXNLbm93bkNlbGwoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5v
ZGUobm9kZSkubV90eXBlICYgflNwZWNDZWxsKTsgfQorICAgIGJvb2wgaXNLbm93bkludGVnZXIo
Tm9kZSogbm9kZSkgeyByZXR1cm4gIW1fc3RhdGUuZm9yTm9kZShub2RlKS5pc1R5cGUoU3BlY0lu
dDMyKTsgfQorICAgIGJvb2wgaXNLbm93bkNlbGwoTm9kZSogbm9kZSkgeyByZXR1cm4gIW1fc3Rh
dGUuZm9yTm9kZShub2RlKS5pc1R5cGUoU3BlY0NlbGwpOyB9CiAgICAgCiAgICAgYm9vbCBpc0tu
b3duTm90SW50ZWdlcihOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2Rl
KS5tX3R5cGUgJiBTcGVjSW50MzIpOyB9CiAgICAgYm9vbCBpc0tub3duTm90TnVtYmVyKE5vZGUq
IG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNOdW1i
ZXIpOyB9CkBAIC0yNjg0LDYgKzI2ODcsMTAwIEBAIHByaXZhdGU6CiAgICAgRGF0YUZvcm1hdCBt
X2Zvcm1hdDsKIH07CiAKKy8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ0OCAoaS5lLiBpdCdz
IGxlZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMgemVybykuCitjbGFzcyBTcGVjdWxhdGVJbnQ0
OE9wZXJhbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUludDQ4T3BlcmFuZChT
cGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9k
ZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisg
ICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQ
UlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gSW50NDhVc2UpOworICAgICAg
ICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQor
ICAgIAorICAgIH5TcGVjdWxhdGVJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2Nr
KG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAg
IAorICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09
IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxs
U3BlY3VsYXRlSW50NDgoZWRnZSgpLCBEYXRhRm9ybWF0SW50NDgpOworICAgICAgICByZXR1cm4g
bV9ncHJPckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAg
ICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1
bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPcklu
dmFsaWQ7Cit9OworCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NDggKGkuZS4gdGhlIHBheWxv
YWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQp
LgorY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRn
ZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3Bl
Y3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQor
ICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVk
Z2UudXNlS2luZCgpID09IEludDQ4VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9k
ZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICB+U3BlY3VsYXRlSW50
NDhPcGVyYW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dwck9ySW52YWxpZCAhPSBJbnZh
bGlkR1BSUmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayhtX2dwck9ySW52YWxpZCk7CisgICAg
fQorICAgIAorICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9l
ZGdlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcgZ3ByKCkKKyAg
ICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAg
ICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZVN0cmljdEludDQ4KGVk
Z2UoKSwgRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZh
bGlkOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVzZSgpCisgICAgeworICAgICAgICBtX2ppdC0+
dXNlKG5vZGUoKSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBTcGVjdWxhdGl2ZUpJVCog
bV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOworfTsK
KwogY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRn
ZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3Bl
Y3VsYXRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJ
KHJldmlzaW9uIDE1NTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2lu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDkgQEAgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAg
b3V0LnByaW50KCJLbm93bkludDMyIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50NDhV
c2U6CisgICAgICAgIG91dC5wcmludCgiSW50NDgiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBSZWFsTnVtYmVyVXNlOgogICAgICAgICBvdXQucHJpbnQoIlJlYWxOdW1iZXIiKTsKICAgICAg
ICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkocmV2
aXNpb24gMTU1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgZW51bSBVc2VLaW5kIHsKICAgICBVbnR5
cGVkVXNlLAogICAgIEludDMyVXNlLAogICAgIEtub3duSW50MzJVc2UsCisgICAgSW50NDhVc2Us
CiAgICAgUmVhbE51bWJlclVzZSwKICAgICBOdW1iZXJVc2UsCiAgICAgS25vd25OdW1iZXJVc2Us
CkBAIC02Niw2ICs2Nyw4IEBAIEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRl
ckYKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAg
cmV0dXJuIFNwZWNJbnQzMjsKKyAgICBjYXNlIEludDQ4VXNlOgorICAgICAgICByZXR1cm4gU3Bl
Y01hY2hpbmVJbnQ7CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgICAgICByZXR1cm4gU3Bl
Y1JlYWxOdW1iZXI7CiAgICAgY2FzZSBOdW1iZXJVc2U6CkBAIC0xMjUsNiArMTI4LDcgQEAgQUxX
QVlTX0lOTElORSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQgawogICAgIHN3aXRjaCAoa2luZCkg
ewogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgorICAgIGNhc2Ug
SW50NDhVc2U6CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgIGNhc2UgTnVtYmVyVXNlOgog
ICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHJldmlzaW9uIDE1NTY0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzMyw2ICszMzMsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc0ludDMyU3Bl
Y3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gRmx1c2hlZEludDMyOwog
ICAgICAgICAKKyAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgaXNNYWNoaW5lSW50U3BlY3Vs
YXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByZXR1cm4gRmx1c2hlZEludDQ4OworICAg
ICAgICAKICAgICAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAg
ICAgICAgcmV0dXJuIEZsdXNoZWRDZWxsOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE1NTY0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTkxLDYgKzE5MSw3IEBAIHB1YmxpYzoKIAogICAgIGludDMyX3QgYXNJbnQzMigpIGNvbnN0Owog
ICAgIHVpbnQzMl90IGFzVUludDMyKCkgY29uc3Q7CisgICAgaW50NjRfdCBhc01hY2hpbmVJbnQo
KSBjb25zdDsKICAgICBkb3VibGUgYXNEb3VibGUoKSBjb25zdDsKICAgICBib29sIGFzQm9vbGVh
bigpIGNvbnN0OwogICAgIGRvdWJsZSBhc051bWJlcigpIGNvbnN0OwpAQCAtMjAyLDYgKzIwMyw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNVbmRlZmlu
ZWRPck51bGwoKSBjb25zdDsKICAgICBib29sIGlzQm9vbGVhbigpIGNvbnN0OworICAgIGJvb2wg
aXNNYWNoaW5lSW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0OwogICAgIGJv
b2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzUHJpbWl0aXZlKCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgJKHJldmlzaW9uIDE1NTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5NCw2ICs0OTQsMzUgQEAgQUxX
QVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIAogCiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNNYWNoaW5lSW50KCkgY29uc3QKK3sK
KyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIWlzTnVt
YmVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkb3VibGUgbnVtYmVyID0gYXNEb3Vi
bGUoKTsKKyAgICBpZiAobnVtYmVyICE9IG51bWJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGludDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7CisgICAg
aWYgKGFzSW50NjQgIT0gbnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFh
c0ludDY0ICYmIHN0ZDo6c2lnbmJpdChudW1iZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKGFzSW50NjQgPj0gKHN0YXRpY19jYXN0PGludDY0X3Q+KDEpIDw8IDQ3KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhc0ludDY0IDwgLShzdGF0aWNfY2FzdDxpbnQ2NF90
PigxKSA8PCA0NykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworaW5saW5lIGludDY0X3QgSlNWYWx1ZTo6YXNNYWNoaW5lSW50KCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoaXNNYWNoaW5lSW50KCkpOworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVy
biBhc0ludDMyKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KGFzRG91YmxlKCkp
OworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N0cmluZygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211619</attachid>
            <date>2013-09-13 21:58:12 -0700</date>
            <delta_ts>2013-09-14 10:33:28 -0700</delta_ts>
            <desc>starting to get there</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>62408</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAkocmV2
aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0Tm9uZSA9IDAsCiAgICAgRGF0YUZvcm1h
dEludDMyID0gMSwKLSAgICBEYXRhRm9ybWF0RG91YmxlID0gMiwKLSAgICBEYXRhRm9ybWF0Qm9v
bGVhbiA9IDMsCi0gICAgRGF0YUZvcm1hdENlbGwgPSA0LAotICAgIERhdGFGb3JtYXRTdG9yYWdl
ID0gNSwKKyAgICBEYXRhRm9ybWF0SW50NDggPSAyLCAvLyBJbnQ0OCdzIGFyZSBsZWZ0LXNoaWZ0
ZWQgYnkgMTYgYnkgZGVmYXVsdC4KKyAgICBEYXRhRm9ybWF0U3RyaWN0SW50NDggPSAzLCAvLyAi
U3RyaWN0IiBJbnQ0OCBtZWFucyBpdCdzIG5vdCBzaGlmdGVkLgorICAgIERhdGFGb3JtYXREb3Vi
bGUgPSA0LAorICAgIERhdGFGb3JtYXRCb29sZWFuID0gNSwKKyAgICBEYXRhRm9ybWF0Q2VsbCA9
IDYsCisgICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA3LAogICAgIERhdGFGb3JtYXRKUyA9IDgsCiAg
ICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAg
ICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwK
QEAgLTY0LDYgKzY2LDEwIEBAIGlubGluZSBjb25zdCBjaGFyKiBkYXRhRm9ybWF0VG9TdHJpbmco
RGEKICAgICAgICAgcmV0dXJuICJOb25lIjsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAg
ICAgICAgcmV0dXJuICJJbnQzMiI7CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAg
IHJldHVybiAiSW50NDgiOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1
cm4gIlN0cmljdEludDQ4IjsKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgIHJl
dHVybiAiRG91YmxlIjsKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZpc2lv
biAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDUsMTYgKzM0NSwxMSBAQCBTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhCiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CiAg
ICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVl
LmFzTnVtYmVyKCk7Ci0gICAgICAgIGlmIChudW1iZXIgPT0gbnVtYmVyKSB7Ci0gICAgICAgICAg
ICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIpOwotICAgICAg
ICAgICAgaWYgKGFzSW50NjQgPT0gbnVtYmVyICYmIChhc0ludDY0IHx8ICFzdGQ6OnNpZ25iaXQo
bnVtYmVyKSkKLSAgICAgICAgICAgICAgICAmJiBhc0ludDY0IDwgKHN0YXRpY19jYXN0PGludDY0
X3Q+KDEpIDw8IDQ3KQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPj0gLShzdGF0aWNfY2Fz
dDxpbnQ2NF90PigxKSA8PCA0NykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU3BlY0ludDQ4
QXNEb3VibGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU3BlY05vbkludEFz
RG91YmxlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFOOworICAgICAg
ICBpZiAobnVtYmVyICE9IG51bWJlcikKKyAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFO
OworICAgICAgICBpZiAodmFsdWUuaXNNYWNoaW5lSW50KCkpCisgICAgICAgICAgICByZXR1cm4g
U3BlY0ludDQ4QXNEb3VibGU7CisgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAg
ICAgfQogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
RnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5n
ICAKIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbE90aGVyICAgICAgICAgPSAw
eDAwMDQwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBhIHN1YmNsYXNz
IG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgogc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICA9IDB4MDAwN2ZmZmY7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
SW50MzIgICAgICAgICAgICAgPSAweDAwODAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50
MzIuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDQ4ICAgICAgICAgICAgID0g
MHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4LCBpdCdzIGluc2lkZSBhIGRv
dWJsZSwgYnV0IGl0IGRvZXNuJ3QgbmVlZCB0byBiZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjSW50NDggICAgICAgICAgICAgPSAweDAxMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRl
bHkgYW4gSW50NDggYW5kIHdlIGludGVuZCBpdCB0byB1bmJveCBpdC4KIHN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjTWFjaGluZUludCAgICAgICAgPSAweDAxODAwMDAwOyAvLyBJdCdz
IHNvbWV0aGluZyB0aGF0IHdlIGNhbiBkbyBtYWNoaW5lIGludCBhcml0aG1ldGljIG9uLgogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ0OEFzRG91YmxlICAgICA9IDB4MDIwMDAw
MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUu
CiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgID0gMHgw
MzgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IHNvbWUga2luZCBvZiBpbnRlZ2VyLgpAQCAtNzQs
OSArNzQsOSBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iCiBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY051bWJlciAgICAgICAgICAgID0gMHgwZjgwMDAw
MDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGUuCiBzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAgID0gMHgxMDAwMDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgQm9vbGVhbi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT3Ro
ZXIgICAgICAgICAgICAgPSAweDIwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm9uZSBvZiB0
aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAg
ICAgID0gMHgzZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgID0gMHgzZWZmZmZmZjsg
Ly8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4NDAwMDAw
MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZmZmZmZmZjsgLy8g
SXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0
aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNGdWxsVG9wICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkg
b2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgogCiB0eXBlZGVmIGJv
b2wgKCpTcGVjdWxhdGVkVHlwZUNoZWNrZXIpKFNwZWN1bGF0ZWRUeXBlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkocmV2aXNpb24g
MTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3Zlcnku
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDE1IEBAIGVudW0gVmFsdWVSZWNvdmVyeVRl
Y2huaXF1ZSB7CiAgICAgQWxyZWFkeUluSlNTdGFjaywKICAgICAvLyBJdCdzIGFscmVhZHkgaW4g
dGhlIHN0YWNrIGJ1dCB1bmJveGVkLgogICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQz
MiwKKyAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDgsCiAgICAgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZENlbGwsCiAgICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW4s
CiAgICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZSwKICAgICAvLyBJdCdzIGluIGEg
cmVnaXN0ZXIuCiAgICAgSW5HUFIsCiAgICAgVW5ib3hlZEludDMySW5HUFIsCisgICAgVW5ib3hl
ZEludDQ4SW5HUFIsCisgICAgVW5ib3hlZFN0cmljdEludDQ4SW5HUFIsCiAgICAgVW5ib3hlZEJv
b2xlYW5JbkdQUiwKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEluUGFpciwKQEAgLTU4LDYg
KzYxLDggQEAgZW51bSBWYWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBEaXNwbGFjZWRJbkpT
U3RhY2ssCiAgICAgLy8gSXQncyBpbiB0aGUgc3RhY2ssIGF0IGEgZGlmZmVyZW50IGxvY2F0aW9u
LCBhbmQgaXQncyB1bmJveGVkLgogICAgIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrLAorICAgIElu
dDQ4RGlzcGxhY2VkSW5KU1N0YWNrLAorICAgIFN0cmljdEludDQ4RGlzcGxhY2VkSW5KU1N0YWNr
LAogICAgIERvdWJsZURpc3BsYWNlZEluSlNTdGFjaywKICAgICBDZWxsRGlzcGxhY2VkSW5KU1N0
YWNrLAogICAgIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2ssCkBAIC05Myw2ICs5OCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBW
YWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCgpCisgICAgeworICAg
ICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0g
QWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKyAgICAKICAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0YWNrQXNV
bmJveGVkQ2VsbCgpCiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKQEAgLTEy
Myw2ICsxMzUsMTAgQEAgcHVibGljOgogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKICAg
ICAgICAgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKQogICAgICAgICAgICAgcmVz
dWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDMySW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRh
dGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5p
cXVlID0gVW5ib3hlZEludDQ4SW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0g
RGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0g
VW5ib3hlZFN0cmljdEludDQ4SW5HUFI7CiAgICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0g
RGF0YUZvcm1hdEJvb2xlYW4pCiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBVbmJv
eGVkQm9vbGVhbkluR1BSOwogICAgICAgICBlbHNlCkBAIC0xNjYsNiArMTgyLDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDMyRGlzcGxhY2VkSW5KU1N0
YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0SW50NDg6CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBJbnQ0OERpc3Bs
YWNlZEluSlNTdGFjazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OgorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5p
cXVlID0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIAogICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgICAg
ICByZXN1bHQubV90ZWNobmlxdWUgPSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTIyNyw2ICsyNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAo
dGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrOgogICAgICAgICBj
YXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAgICAgY2FzZSBBbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xl
YW46CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKQEAgLTIz
OCw3ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgZ3ByKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBJbkdQ
UiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBV
bmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQzMkluR1BSKTsKKyAgICAg
ICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRJ
bnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFuSW5HUFIgfHwgbV90ZWNo
bmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZEludDQ4SW5HUFIg
fHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFIpOwogICAgICAgICByZXR1
cm4gbV9zb3VyY2UuZ3ByOwogICAgIH0KICAgICAKQEAgLTI2NCw3ICsyODksNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpIGNvbnN0CiAgICAg
ewotICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1f
dGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IERv
dWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxhY2VkSW5K
U1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2spOworICAg
ICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5p
cXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IERvdWJsZURp
c3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNr
IHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlx
dWUgPT0gSW50NDhEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0gU3RyaWN0SW50
NDhEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gbV9zb3VyY2UudmlydHVhbFJl
ZzsKICAgICB9CiAgICAgCkBAIC0yODMsNiArMzA4LDkgQEAgcHVibGljOgogICAgICAgICBjYXNl
IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAgIG91dC5wcmludGYo
IihpbnQzMikiKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgICAgIG91dC5wcmludGYoIihpbnQ0OCkiKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWRDZWxsOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKGNlbGwpIik7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTI5OCw2ICszMjYsMTIgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQzMkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiaW50MzIoJSVyJWQpIiwgZ3ByKCkp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVW5ib3hlZEludDQ4SW5HUFI6Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCJpbnQ0OCglJXIlZCkiLCBncHIoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKKyAgICAgICAg
ICAgIG91dC5wcmludGYoInN0cmljdEludDQ4KCUlciVkKSIsIGdwcigpKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CiAgICAgICAgICAgICBv
dXQucHJpbnRmKCJib29sKCUlciVkKSIsIGdwcigpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MzE4LDYgKzM1MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2s6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIqaW50MzIoJWQpIiwgdmlydHVhbFJlZ2lz
dGVyKCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NDhEaXNwbGFjZWRJ
bkpTU3RhY2s6CisgICAgICAgICAgICBvdXQucHJpbnRmKCIqaW50NDgoJWQpIiwgdmlydHVhbFJl
Z2lzdGVyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RyaWN0SW50NDhE
aXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBvdXQucHJpbnRmKCIqc3RyaWN0SW50NDgo
JWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKmRv
dWJsZSglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
ci5oCShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgYm9vbCBuZWVkc1R5cGVDaGVjayhOb2RlKiBub2RlLCBTcGVjdWxhdGVk
VHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gpCiAgICAgewotICAgICAgICByZXR1cm4gZm9yTm9kZShu
b2RlKS5tX3R5cGUgJiB+dHlwZXNQYXNzZWRUaHJvdWdoOworICAgICAgICByZXR1cm4gIWZvck5v
ZGUobm9kZSkuaXNUeXBlKHR5cGVzUGFzc2VkVGhyb3VnaCk7CiAgICAgfQogICAgIAogICAgIGJv
b2wgbmVlZHNUeXBlQ2hlY2soRWRnZSBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRo
cm91Z2gpCkBAIC0xNjgsNyArMTY4LDcgQEAgcHJpdmF0ZToKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZmlsdGVyQnlUeXBlKE5vZGUqIG5vZGUsIEVkZ2UmIGVkZ2UsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUpCiAgICAgewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUoZWRnZSk7
Ci0gICAgICAgIGlmICh2YWx1ZS5tX3R5cGUgJiB+dHlwZSkgeworICAgICAgICBpZiAoIXZhbHVl
LmlzVHlwZSh0eXBlKSkgewogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAg
ICAgICAgICAgIGVkZ2Uuc2V0UHJvb2ZTdGF0dXMoTmVlZHNDaGVjayk7CiAgICAgICAgIH0gZWxz
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTAsNiArMzEwLDI2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIElu
dDQ4VG9Eb3VibGU6IHsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7
CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBjaGlsZCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4QXNE
b3VibGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50NDhB
c1ZhbHVlOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgeworICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNNYWNoaW5lSW50KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIFZhbHVlQWRkOgogICAg
IGNhc2UgQXJpdGhBZGQ6IHsKICAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkudmFsdWUoKTsKQEAgLTMyNCw2ICszNDQsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5j
YXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgp
OworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0lu
dDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUo
U3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgaWYg
KGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkK
ICAgICAgICAgICAgICAgICAmJiBpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUt
PmNoaWxkMigpKS5tX3R5cGUpKQpAQCAtMzU4LDYgKzM4NCwxMiBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1
bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5v
ZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBN
YWNoaW5lSW50VXNlOgorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0
OCk7CisgICAgICAgICAgICBpZiAoIWZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVj
SW50MzIpCisgICAgICAgICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlw
ZShTcGVjSW50MzIpKQorICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTM4MCw2ICs0MTIsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0
aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKCFi
eXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00MDQsNiArNDQxLDEwIEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB8
fCAhYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkp
CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUoU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1
ZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAg
ICAgICBpZiAoaXNSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV90eXBlKQogICAgICAgICAgICAgICAgIHx8IGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5v
ZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCkBAIC04MTIsNyArODUzLDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKG5vZGUtPnNo
b3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50NDgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
QXJyYXk6OkZsb2F0MzJBcnJheToKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjRG91YmxlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RWYWx1ZS5oCShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYgKzE4NSwxNiBAQCBz
dHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9
CiAgICAgCisgICAgYm9vbCBjb3VsZEJlVHlwZShTcGVjdWxhdGVkVHlwZSBkZXNpcmVkVHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiAhIShtX3R5cGUgJiBkZXNpcmVkVHlwZSk7CisgICAgfQor
ICAgIAorICAgIGJvb2wgaXNUeXBlKFNwZWN1bGF0ZWRUeXBlIGRlc2lyZWRUeXBlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuICEobV90eXBlICYgfmRlc2lyZWRUeXBlKTsKKyAgICB9CisgICAgCiAg
ICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoR3JhcGgmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmKTsK
ICAgICAKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2RlcyBh
cnJheU1vZGVzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2
aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0MywxNSBAQCBpbmxpbmUgYm9vbCBlbmFibGVDb25j
dXJyZW50SklUKCkKICNlbmRpZgogfQogCitpbmxpbmUgYm9vbCBlbmFibGVJbnQ0OCgpCit7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCit9CisKIGVudW0gU3BpbGxSZWdpc3RlcnNNb2RlIHsgTmVlZFRvU3BpbGws
IERvbnRTcGlsbCB9OwogCiBlbnVtIE5vUmVzdWx0VGFnIHsgTm9SZXN1bHQgfTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTU1
NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTE5Nyw2ICsyMDIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiBtX2dyYXBoLm5l
Z2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjA3LDYgKzIx
NiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIG1fZ3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlTWFj
aGluZUludChub2RlKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTMwMCw2ICszMTQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKQorICAgICAgICAgICAgICAg
ICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgp
LCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNo
aW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNo
aW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNl
Pihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKQEAgLTM1NSw2ICszNzQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKQorICAg
ICAgICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
ewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKQEAgLTEz
NDcsMTIgKzEzNzIsODQgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxVc2VLaW5kIHVzZUtpbmQ+
CiAgICAgdm9pZCBmaXhFZGdlKEVkZ2UmIGVkZ2UsIFNwZWN1bGF0aW9uRGlyZWN0aW9uIGRpcmVj
dGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBpZiAoaXNEb3VibGUo
dXNlS2luZCkgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsK
LSAgICAgICAgICAgIGluamVjdEludDMyVG9Eb3VibGVOb2RlKGVkZ2UsIHVzZUtpbmQsIGRpcmVj
dGlvbik7CisgICAgICAgIGlmIChpc0RvdWJsZSh1c2VLaW5kKSkgeworICAgICAgICAgICAgaWYg
KGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7CisgICAgICAgICAg
ICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoZWRnZSwgdXNlS2luZCwgZGlyZWN0aW9uKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hp
bmVJbnQoKSkgeworICAgICAgICAgICAgICAgIC8vIE1ha2UgYWxsIGRvdWJsZSB1c2VzIG9mIGlu
dDQ4IHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ0OFRvRG91YmxlLgorICAgICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBJbnQ0OFRvVmFsdWUgKHNl
ZSBiZWxvdykgZXhjZXB0IHRoYXQKKyAgICAgICAgICAgICAgICAvLyBJbnQ4VG9Eb3VibGUgd2ls
bCBjb252ZXJ0IGludDQ4J3MgdGhhdCBmaXQgaW4gYW4gaW50MzIgaW50byBhIGRvdWJsZQorICAg
ICAgICAgICAgICAgIC8vIHJhdGhlciB0aGFuIHRyeWluZyB0byBjcmVhdGUgYSBib3hlZCBpbnQz
MiBsaWtlIEludDQ4VG9WYWx1ZSBkb2VzLgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPE1hY2hpbmVJbnRVc2U+KGVkZ2Uubm9kZSgpKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y0ludDQ4QXNEb3VibGUsIEludDQ4VG9Eb3VibGUsCisgICAgICAgICAgICAgICAgICAgIG1fY3Vy
cmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE1hY2hpbmVJbnRVc2UpKTsK
KyAgICAgICAgICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgdXNlS2luZCAhPSBNYWNoaW5lSW50VXNlCisgICAgICAg
ICAgICAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkgJiYgIWVkZ2UtPnNob3Vs
ZFNwZWN1bGF0ZUludDMyKCkpIHsKKyAgICAgICAgICAgIC8vIFdlIG1ha2UgYWxsIG5vbi1pbnQ0
OCB1c2VzIG9mIGludDQ4IHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ0OFRvVmFsdWUK
KyAgICAgICAgICAgIC8vIG5vZGUgdG8gZW5zdXJlIHRoYXQgd2UgaGFuZGxlIHRoaXMgcHJvcGVy
bHk6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAg
ICAgICAvLyBiOiBBcml0aEFkZChAYSwgLi4uKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4s
IEBhKQorICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8v
CisgICAgICAgICAgICAvLyBXaXRob3V0IGFuIGludGVybWVkaWF0ZSBub2RlIGFuZCBqdXN0IGxh
YmVsaW5nIHRoZSB1c2VzLCB3ZSB3aWxsIGdldDoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAg
ICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDQ4OkBhLCAu
Li4pCisgICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAYSkKKyAgICAgICAgICAg
IC8vIGQ6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gQW5kIG5vdyB0aGUgYy0+VW50eXBlZDpAYSBlZGdlIHdpbGwgYm94IHRoZSB2YWx1ZSBv
ZiBAYSBpbnRvIGEgZG91YmxlLiBUaGlzCisgICAgICAgICAgICAvLyBpcyBiYWQsIGJlY2F1c2Ug
bm93IHRoZSBkLT5JbnQ0ODpAYSBlZGdlIHdpbGwgZWl0aGVyIGhhdmUgdG8gZG8gZG91YmxlLXRv
LWludAorICAgICAgICAgICAgLy8gY29udmVyc2lvbnMsIG9yIHdpbGwgaGF2ZSB0byBPU1IgZXhp
dCB1bmNvbmRpdGlvbmFsbHkuIEFsdGVybmF0aXZlbHkgd2UgY291bGQKKyAgICAgICAgICAgIC8v
IGhhdmUgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSBib3ggdGhlIHZhbHVlIGJ5IGNvcHlpbmcgcmF0
aGVyIHRoYW4gaW4tcGxhY2UuCisgICAgICAgICAgICAvLyBCdXQgdGhlc2UgYm94aW5ncyBhcmUg
YWxzbyBjb3N0bHkgc28gdGhpcyB3b3VsZG4ndCBiZSBncmVhdC4KKyAgICAgICAgICAgIC8vCisg
ICAgICAgICAgICAvLyBUaGUgc29sdXRpb24gd2UgdXNlIGlzIHRvIGFsd2F5cyBoYXZlIG5vbi1J
bnQ0OCB1c2VzIG9mIHByZWRpY3RlZCBJbnQ0OCdzIHVzZQorICAgICAgICAgICAgLy8gYW4gaW50
ZXJ2ZW5pbmcgSW50NDhUb1ZhbHVlIG5vZGU6CisgICAgICAgICAgICAvLworICAgICAgICAgICAg
Ly8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4u
KQorICAgICAgICAgICAgLy8geDogSW50NDhUb1ZhbHVlKEludDQ4OkBhKQorICAgICAgICAgICAg
Ly8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QHgpCisgICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJ
bnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBl
dmVuIGlmIHdlIGhhZCBtdWx0aXBsZSBub24taW50NDggdXNlcyBvZiBAYSwgdGhlIG11bHRpcGxl
CisgICAgICAgICAgICAvLyBJbnQ0OFRvVmFsdWUncyB3b3VsZCBnZXQgQ1NFJ2QgdG9nZXRoZXIu
IFNvIHRoZSBib3hpbmcgd291bGQgb25seSBoYXBwZW4gb25jZS4KKyAgICAgICAgICAgIC8vIEF0
IHRoZSBzYW1lIHRpbWUsIEBhIHdvdWxkIGNvbnRpbnVlIHRvIGJlIHJlcHJlc2VudGVkIGFzIGEg
bmF0aXZlIGludDQ4LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEFuIGFsdGVybmF0
aXZlIHdvdWxkIGhhdmUgYmVlbiB0byBpbnNlcnQgVG9OYXRpdmVJbnQ0OCBub2RlcyBvbiBpbnQ0
OCB1c2VzIG9mCisgICAgICAgICAgICAvLyBpbnQ0OCdzLiBUaGlzIHdvdWxkIGhhdmUgaGFuZGxl
ZCB0aGUgYWJvdmUgZXhhbXBsZSBidXQgd291bGQgZmFsbCBvdmVyIGZvcjoKKyAgICAgICAgICAg
IC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IENhbGwo
Li4uLCBAYSkKKyAgICAgICAgICAgIC8vIGM6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAg
ICAvLworICAgICAgICAgICAgLy8gQnV0IHRoZSBzb2x1dGlvbiB3ZSB1c2UgaGFuZGxlcyB0aGUg
YWJvdmUgZ3JhY2VmdWxseS4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgb2JzZXJ2ZVVzZUtp
bmRPbk5vZGU8TWFjaGluZUludFVzZT4oZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDgsIEludDQ4VG9WYWx1ZSwKKyAgICAg
ICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBN
YWNoaW5lSW50VXNlKSk7CisgICAgICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBvYnNl
cnZlVXNlS2luZE9uTm9kZTx1c2VLaW5kPihlZGdlLm5vZGUoKSk7CisgICAgICAgIAogICAgICAg
ICBlZGdlLnNldFVzZUtpbmQodXNlS2luZCk7CiAgICAgfQogICAgIApAQCAtMTM3OCw3ICsxNDc1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluamVjdEludDMyVG9Eb3VibGVOb2RlKEVkZ2UmIGVk
Z2UsIFVzZUtpbmQgdXNlS2luZCA9IE51bWJlclVzZSwgU3BlY3VsYXRpb25EaXJlY3Rpb24gZGly
ZWN0aW9uID0gQmFja3dhcmRTcGVjdWxhdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIHJlc3Vs
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY0ludDQ4LCBJbnQzMlRvRG91YmxlLAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNJbnQ0OEFzRG91YmxlLCBJbnQzMlRvRG91YmxlLAogICAgICAgICAgICAgbV9jdXJyZW50
Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7CiAgICAgICAg
IGlmIChkaXJlY3Rpb24gPT0gRm9yd2FyZFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgcmVzdWx0
LT5tZXJnZUZsYWdzKE5vZGVFeGl0c0ZvcndhcmQpOwpAQCAtMTM5Miw2ICsxNDg5LDE3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CiAgICAgfQogICAg
IAorICAgIC8vIFdlIG1ha2UgYWxsIGludDQ4IGVkZ2VzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEFz
TmF0aXZlSW50NDggbm9kZSB0byBlbnN1cmUKKyAgICAvLyB0aGF0IHdlIGhhbmRsZSB0aGlzIHBy
b3Blcmx5OgorICAgIHRlbXBsYXRlPFVzZUtpbmQgdXNlS2luZD4KKyAgICB2b2lkIGZpeEludDQ4
RWRnZShFZGdlJiBlZGdlKQorICAgIHsKKyAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDgs
IEFzTmF0aXZlSW50NDgsCisgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBF
ZGdlKGVkZ2Uubm9kZSgpLCB1c2VLaW5kKSk7CisgICAgICAgIGVkZ2UgPSBlZGdlKHJlc3VsdCwg
TWFjaGluZUludFVzZSk7CisgICAgfQorCiAgICAgdm9pZCB0cnVuY2F0ZUNvbnN0YW50VG9JbnQz
MihFZGdlJiBlZGdlKQogICAgIHsKICAgICAgICAgTm9kZSogb2xkTm9kZSA9IGVkZ2Uubm9kZSgp
OwpAQCAtMTQzNCwxMyArMTU0MiwyMCBAQCBwcml2YXRlOgogICAgIGJvb2wgYXR0ZW1wdFRvTWFr
ZUludGVnZXJBZGQoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFkZFNwZWN1bGF0aW9uTW9k
ZSBtb2RlID0gbV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1vZGUobm9kZSk7Ci0gICAgICAgIGlmICht
b2RlID09IERvbnRTcGVjdWxhdGVJbnQzMikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKG1vZGUgIT0gRG9udFNwZWN1bGF0ZUludDMyKSB7CisgICAgICAgICAgICB0cnVu
Y2F0ZUNvbnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUsIG1vZGUpOworICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIHRydW5jYXRlQ29uc3RhbnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9k
ZSk7Ci0gICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVN
YWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBhdHRlbXB0VG9N
YWtlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNiArNDEsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgRmx1CiAg
ICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIG91dC5wcmludCgiRmx1c2hlZEludDMyIik7
CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgb3V0LnBy
aW50KCJGbHVzaGVkSW50MzIiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmx1c2hlZERv
dWJsZToKICAgICAgICAgb3V0LnByaW50KCJGbHVzaGVkRG91YmxlIik7CiAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJl
dmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiBlbnVtIEZsdXNoRm9ybWF0IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1
c2hlZEludDMyLAorICAgIEZsdXNoZWRJbnQ0OCwKICAgICBGbHVzaGVkRG91YmxlLAogICAgIEZs
dXNoZWRDZWxsLAogICAgIEZsdXNoZWRCb29sZWFuLApAQCAtNTUsNiArNTYsOCBAQCBpbmxpbmUg
Tm9kZUZsYWdzIHJlc3VsdEZvcihGbHVzaEZvcm1hdCBmCiAgICAgICAgIHJldHVybiBOb2RlUmVz
dWx0SlM7CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0
SW50MzI7CisgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIHJldHVybiBOb2RlUmVzdWx0
SW50NDg7CiAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICByZXR1cm4gTm9kZVJlc3Vs
dE51bWJlcjsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgpAQCAtNzQsNiArNzcsOCBAQCBpbmxp
bmUgVXNlS2luZCB1c2VLaW5kRm9yKEZsdXNoRm9ybWF0IGZvCiAgICAgICAgIHJldHVybiBDZWxs
VXNlOwogICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICByZXR1cm4gSW50MzJVc2U7Cisg
ICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIHJldHVybiBNYWNoaW5lSW50VXNlOwogICAg
IGNhc2UgRmx1c2hlZERvdWJsZToKICAgICAgICAgcmV0dXJuIE51bWJlclVzZTsKICAgICBjYXNl
IEZsdXNoZWRCb29sZWFuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5l
cmF0aW9uSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R2VuZXJhdGlvbkluZm8uaAkocmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niwx
NCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCBncHIs
IERhdGFGb3JtYXRJbnQzMik7CiAgICAgfQorICAgIHZvaWQgaW5pdEludDQ4KE5vZGUqIG5vZGUs
IHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgaW5pdEdQUihu
b2RlLCB1c2VDb3VudCwgZ3ByLCBEYXRhRm9ybWF0SW50NDgpOworICAgIH0KKyAgICB2b2lkIGlu
aXRTdHJpY3RJbnQ0OChOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHJlZykK
KyAgICB7CisgICAgICAgIGluaXRHUFIobm9kZSwgdXNlQ291bnQsIGdwciwgRGF0YUZvcm1hdFN0
cmljdEludDQ4KTsKKyAgICB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB2b2lkIGluaXRKU1Zh
bHVlKE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgZ3ByLCBEYXRhRm9ybWF0
IGZvcm1hdCA9IERhdGFGb3JtYXRKUykKICAgICB7CkBAIC0xODcsNiArMTk1LDExIEBAIHB1Ymxp
YzoKICAgICAvLyBHZXQgdGhlIGZvcm1hdCBvZiB0aGUgdmFsdWUgYXMgaXQgaXMgc3BpbGxlZCBp
biB0aGUgSlNTdGFjayAob3IgJ25vbmUnKS4KICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0KCkg
eyByZXR1cm4gbV9zcGlsbEZvcm1hdDsgfQogICAgIAorICAgIGJvb2wgaXNGb3JtYXQoRGF0YUZv
cm1hdCBleHBlY3RlZEZvcm1hdCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWdpc3RlckZvcm1h
dCgpID09IGV4cGVjdGVkRm9ybWF0IHx8IHNwaWxsRm9ybWF0KCkgPT0gZXhwZWN0ZWRGb3JtYXQ7
CisgICAgfQorICAgIAogICAgIGJvb2wgaXNKU0Zvcm1hdChEYXRhRm9ybWF0IGV4cGVjdGVkRm9y
bWF0KQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6aXNKU0Zvcm1hdChyZWdpc3RlckZvcm1h
dCgpLCBleHBlY3RlZEZvcm1hdCkgfHwgSlNDOjppc0pTRm9ybWF0KHNwaWxsRm9ybWF0KCksIGV4
cGVjdGVkRm9ybWF0KTsKQEAgLTE5Nyw2ICsyMTAsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gaXNKU0Zvcm1hdChEYXRhRm9ybWF0SlNJbnQzMik7CiAgICAgfQogICAgIAorICAgIGJvb2wg
aXNJbnQ0OCgpCisgICAgeworICAgICAgICByZXR1cm4gaXNGb3JtYXQoRGF0YUZvcm1hdEludDQ4
KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc1N0cmljdEludDQ4KCkKKyAgICB7CisgICAgICAg
IHJldHVybiBpc0Zvcm1hdChEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgIH0KKyAgICAKICAg
ICBib29sIGlzSlNEb3VibGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSlNGb3JtYXQoRGF0
YUZvcm1hdEpTRG91YmxlKTsKQEAgLTMxNCw2ICszMzcsMTQgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZvcm1hdEludDMyKTsKICAgICB9CisgICAg
dm9pZCBmaWxsSW50NDgoVmFyaWFibGVFdmVudFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByKQor
ICAgIHsKKyAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZvcm1hdEludDQ4KTsKKyAg
ICB9CisgICAgdm9pZCBmaWxsU3RyaWN0SW50NDgoVmFyaWFibGVFdmVudFN0cmVhbSYgc3RyZWFt
LCBHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZv
cm1hdFN0cmljdEludDQ4KTsKKyAgICB9CiAgICAgdm9pZCBmaWxsQm9vbGVhbihWYXJpYWJsZUV2
ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIpCiAgICAgewogICAgICAgICBmaWxsR1BSKHN0
cmVhbSwgZ3ByLCBEYXRhRm9ybWF0Qm9vbGVhbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDkg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogI2RlZmluZSBOb2RlUmVzdWx0SlMg
ICAgICAgICAgICAgICAgICAgICAweDAwMDEKICNkZWZpbmUgTm9kZVJlc3VsdE51bWJlciAgICAg
ICAgICAgICAgICAgMHgwMDAyCiAjZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAgICAg
ICAgIDB4MDAwMwotI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAw
MDQKLSNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA1CisjZGVm
aW5lIE5vZGVSZXN1bHRJbnQ0OCAgICAgICAgICAgICAgICAgIDB4MDAwNAorI2RlZmluZSBOb2Rl
UmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUgTm9kZVJlc3VsdFN0
b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogI2RlZmluZSBOb2RlTXVzdEdlbmVyYXRlICAgICAgICAgICAgICAgICAweDAwMDggLy8g
c2V0IG9uIG5vZGVzIHRoYXQgaGF2ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxs
eSBiZSByZW1vdmVkIGJ5IERDRS4KICNkZWZpbmUgTm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAg
ICAgICAgMHgwMDEwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEludDMyVG9Eb3VibGUsIE5vZGVSZXN1bHROdW1i
ZXIpIFwKICAgICAvKiBVc2VkIHRvIHNwZWN1bGF0ZSB0aGF0IGEgZG91YmxlIHZhbHVlIGlzIGFj
dHVhbGx5IGFuIGludGVnZXIuICovXAogICAgIG1hY3JvKERvdWJsZUFzSW50MzIsIE5vZGVSZXN1
bHRJbnQzMiB8IE5vZGVFeGl0c0ZvcndhcmQpIFwKKyAgICAvKiBVc2VkIHRvIHNlcGFyYXRlIHJl
cHJlc2VudGF0aW9uIGFuZCByZWdpc3RlciBhbGxvY2F0aW9uIG9mIEludDQ4J3MgcmVwcmVzZW50
ZWQgKi9cCisgICAgLyogYXMgdmFsdWVzLiAqL1wKKyAgICBtYWNybyhJbnQ0OFRvVmFsdWUsIE5v
ZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKEludDQ4VG9Eb3VibGUsIE5vZGVSZXN1bHROdW1iZXIp
IFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCiAg
ICAgbWFjcm8oQXJpdGhBZGQsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CkBAIC0zMTcsNiArMzIxLDggQEAgaW5saW5lIGJvb2wgbmVlZHNPU1JGb3J3YXJkUmV3aXJpbmco
Tm9kZQogICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAg
ICAgY2FzZSBEb3VibGVBc0ludDMyOgorICAgIGNhc2UgSW50NDhUb1ZhbHVlOgorICAgIGNhc2Ug
SW50NDhUb0RvdWJsZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1
NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjgsMTAgKzM2OCwyMCBAQCBwcml2YXRl
OgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBHZXRCeVZhbDogeworICAgICAgICAgICAgaWYg
KCFub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgaWYgKCFub2RlLT5wcmVkaWN0aW9uKCkpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlRmxvYXQzMkFycmF5KCkKICAgICAgICAgICAgICAgICB8fCBub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpCiAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0RvdWJsZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlVWludDMyQXJy
YXkoKSkgeworICAgICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVJbnQzMigp
KQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50
MzIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUtPmdldEhlYXBQcmVkaWN0
aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCShy
ZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJl
Z2lzdGVyU2F2ZVBsYW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBlbnVtIFNp
bGVudFNwaWxsQWN0aW9uIHsKIGVudW0gU2lsZW50RmlsbEFjdGlvbiB7CiAgICAgRG9Ob3RoaW5n
Rm9yRmlsbCwKICAgICBTZXRJbnQzMkNvbnN0YW50LAorICAgIFNldEludDQ4Q29uc3RhbnQsCisg
ICAgU2V0U3RyaWN0SW50NDhDb25zdGFudCwKICAgICBTZXRCb29sZWFuQ29uc3RhbnQsCiAgICAg
U2V0Q2VsbENvbnN0YW50LAogICAgIFNldFRydXN0ZWRKU0NvbnN0YW50LApAQCAtNjEsOCArNjMs
MTIgQEAgZW51bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBMb2FkMzJUYWcsCiAgICAgTG9hZDMy
UGF5bG9hZCwKICAgICBMb2FkMzJQYXlsb2FkQm94SW50LAorICAgIExvYWQzMlBheWxvYWRDb252
ZXJ0VG9JbnQ0OCwKKyAgICBMb2FkMzJQYXlsb2FkU2lnbkV4dGVuZCwKICAgICBMb2FkUHRyLAog
ICAgIExvYWQ2NCwKKyAgICBMb2FkNjRTaGlmdFJpZ2h0MTYsCisgICAgTG9hZDY0U2hpZnRMZWZ0
MTYsCiAgICAgTG9hZERvdWJsZSwKICAgICBMb2FkRG91YmxlQm94RG91YmxlLAogICAgIExvYWRK
U1VuYm94RG91YmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDQwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogI2lmIFVTRShK
U1ZBTFVFNjQpCiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJveEludDQ4KEdQUlJlZyBzb3VyY2VH
UFIsIEdQUlJlZyB0YXJnZXRHUFIsIERhdGFGb3JtYXQgZm9ybWF0KQoreworICAgIEdQUlJlZyB0
ZW1wR1BSOworICAgIGlmIChzb3VyY2VHUFIgPT0gdGFyZ2V0R1BSKQorICAgICAgICB0ZW1wR1BS
ID0gYWxsb2NhdGUoKTsKKyAgICBlbHNlCisgICAgICAgIHRlbXBHUFIgPSB0YXJnZXRHUFI7Cisg
ICAgCisgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CisKKyAgICBpZiAoZm9ybWF0ID09
IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2
KSwgc291cmNlR1BSKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVChmb3JtYXQgPT0gRGF0YUZv
cm1hdFN0cmljdEludDQ4KTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihzb3VyY2VHUFIs
IHRlbXBHUFIpOworICAgIAorICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzRG91YmxlID0gbV9qaXQu
YnJhbmNoNjQoCisgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc291cmNlR1BSLCB0ZW1w
R1BSKTsKKyAgICAKKyAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihzb3VyY2VHUFIsIHRhcmdl
dEdQUik7CisgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRh
cmdldEdQUik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAg
ICAKKyAgICBpc0RvdWJsZS5saW5rKCZtX2ppdCk7CisgICAgbV9qaXQuY29udmVydEludDY0VG9E
b3VibGUoc291cmNlR1BSLCBmcHIpOworICAgIGJveERvdWJsZShmcHIsIHRhcmdldEdQUik7Cisg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgCisgICAgaWYgKHRlbXBHUFIgIT0gdGFyZ2V0R1BS
KQorICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgCisgICAgdW5sb2NrKGZwcik7Cit9CisK
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogewogICAgIFZp
cnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsK
QEAgLTY5LDExICsxMDMsMjMgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShF
ZGdlIAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1h
dCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2
aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAgIGlmIChzcGls
bEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3BpbGxG
b3JtYXQpIHsKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7CiAgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIGdwcik7CiAgICAgICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIsIGdwcik7CiAgICAgICAgICAgICAgICAgc3BpbGxGb3JtYXQgPSBEYXRhRm9y
bWF0SlNJbnQzMjsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIERhdGFG
b3JtYXRJbnQ0ODoKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7Cisg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICAgICAgYm94SW50NDgoZ3ByLCBncHIsIHNw
aWxsRm9ybWF0KTsKKyAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFGb3JtYXRKUzsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAgICAgICAgICAgICAg
ICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXREb3VibGUpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gTmVlZCB0byBib3ggdGhlIGRvdWJsZSwgc2luY2Ugd2Ugd2FudCBhIEpTVmFsdWUu
CkBAIC04MSw2ICsxMjcsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVk
Z2UgCiAgICAgICAgICAgICAgICAgICAgIHNwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdEpTRG91Ymxl
OwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwg
Z3ByLCBzcGlsbEZvcm1hdCk7CiAgICAgICAgIH0KQEAgLTExMyw2ICsxNjAsMTYgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogCiAgICAgICAgIHJldHVybiBncHI7
CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICBjYXNlIERh
dGFGb3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsK
KyAgICAgICAgbG9jayhncHIpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gYWxsb2NhdGUo
KTsKKyAgICAgICAgYm94SW50NDgoZ3ByLCByZXN1bHRHUFIsIGluZm8ucmVnaXN0ZXJGb3JtYXQo
KSk7CisgICAgICAgIHVubG9jayhncHIpOworICAgICAgICByZXR1cm4gcmVzdWx0R1BSOworICAg
IH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CiAgICAgICAgIC8vIE5vIHJldGFnIHJlcXVp
cmVkIG9uIEpTVkFMVUU2NCEKQEAgLTc2OCw3ICs4MjUsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxs
Rm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwogICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRh
Rm9ybWF0SW50MzIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRh
Rm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0SW50NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdElu
dDQ4KTsKICAgICAgICAgCiAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0
ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAgICAgICAgCkBAIC03ODksNiArODQ2LDI1IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgICAgIHJldHVy
bkZvcm1hdCA9IERhdGFGb3JtYXRKU0ludDMyOwogICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAg
ICAgICAgfQorICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgLy8gQ2Fu
IG9ubHkgaGFwcGVuIGlmIHdlJ3ZlIGFscmVhZHkgcHJvdmVkIHRoYXQgdGhlIHZhbHVlIGlzIGFu
IGludDMyLgorICAgICAgICAgICAgLy8gVGhhdCdzIGJlY2F1c2UgaWYgYSB2YWx1ZSBvcmlnaW5h
dGVkIGFzIGEgSlNWYWx1ZSB0aGVuIHdlIHdvdWxkCisgICAgICAgICAgICAvLyBzcGVjdWxhdGUg
dGhhdCBpdCdzIGFuIGludDMyIGJlZm9yZSByZXByZXNlbnRpbmcgaXQgYXMgYW4gaW50NDguCisg
ICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHdlIGtub3dpbmdseSBwcm9kdWNlZCBhbiBpbnQ0
OCwgdGhlbiB3ZSB3b3VsZCBiZQorICAgICAgICAgICAgLy8gYm94aW5nIGl0IGludG8gYSB2YWx1
ZSB1c2luZyBJbnQ0OFRvVmFsdWUuIFRoaXMgYXNzZXJ0aW9uIGlzIHZhbGlkCisgICAgICAgICAg
ICAvLyBvbmx5IGJlY2F1c2UgSW50NDggaXMgc29tZXRoaW5nIHRoYXQgd2UgaW50cm9kdWNlIGF0
IHByZWRpY3Rpb24gdGltZS4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIH5T
cGVjSW50MzIpKTsKKyAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3Ry
aWN0SW50NDgpIHsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0
cihncHIsIGdwcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQzMigq
bV9zdHJlYW0sIGdwcik7CisgICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50
MzI7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CiAgICAgICAgIG1faml0Lmxv
YWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogCiAg
ICAgICAgIC8vIEZpbGwgYXMgSlNWYWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KQEAgLTc5Nyw2ICs4
NzMsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgfQog
CiAgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBl
ICYgU3BlY0ludDQ4KSk7CiAgICAgICAgIC8vIENoZWNrIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2Vy
LgogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKICAgICAgICAgbV9ncHJzLmxvY2so
Z3ByKTsKQEAgLTg0Myw2ICs5MjAsMjcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlSW50MwogICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CiAgICAg
ICAgIHJldHVybiBncHI7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJp
Y3RJbnQ0ODogeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5cGUgJiB+U3BlY0ludDMyKSk7
CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhn
cHIpOworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihncHIsIGdwcik7CisgICAgICAg
IHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAgICAgICAgaW5mby5maWxsSW50MzIo
Km1fc3RyZWFtLCBncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKyAgICAgICAgCisg
ICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBl
ICYgflNwZWNJbnQzMikpOworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAg
ICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMy
KDE2KSwgZ3ByKTsKKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoZ3ByKTsKKyAgICAg
ICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOworICAgICAgICBpbmZvLmZpbGxJbnQz
MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQogCiAgICAgY2Fz
ZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7CkBAIC04
ODUsNiArOTgzLDE0OCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQz
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlSW50NDgoRWRnZSBlZGdlLCBEYXRhRm9ybWF0IGRlc2lyZWRGb3JtYXQpCit7CisgICAg
QVNTRVJUKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IGRlc2lyZWRGb3JtYXQg
PT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1f
c3RhdGUuZm9yTm9kZShlZGdlKTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90
eXBlOworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjTWFjaGluZUludCk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3Rl
cigpOworICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVh
bFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisKKyAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJG
b3JtYXQoKSkgeworICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKKyAgICAgICAgaWYgKChlZGdl
LT5oYXNDb25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSkuaXNNYWNo
aW5lSW50KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Cisg
ICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNW
YWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisKKyAgICAgICAg
aWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSB2
YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBBU1NFUlQodmFsdWUu
aXNNYWNoaW5lSW50KCkpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxS
ZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKKyAgICAgICAgICAgIGludDY0X3QgdmFsdWUg
PSB2YWx1ZS5hc01hY2hpbmVJbnQoKTsKKyAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlIDw8IDE2Owor
ICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQodmFsdWUpLCBncHIp
OworICAgICAgICAgICAgaW5mby5maWxsR1BSKCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0
KTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CisgICAgICAgIAor
ICAgICAgICAvLyBGSVhNRSEhIQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNw
aWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50
MzIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERh
dGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgICAgIAorICAgICAgICBtX2dwcnMucmV0YWluKGdw
ciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAgIAorICAgICAg
ICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEpTSW50MzIgfHwgc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDMyKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBrbm93IHRoaXMgd2FzIHNw
aWxsZWQgYXMgYW4gaW50ZWdlciB3ZSBjYW4gZmlsbCB3aXRob3V0IGNoZWNraW5nLgorICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIGdwcik7CisgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihncHIsIGdwcik7
CisgICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgp
IHsKKyAgICAgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OChncHIpOworICAgICAgICAg
ICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ppdC5sc2hp
ZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSW50NDgo
Z3ByKTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRG
b3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICAgICAgaWYgKHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQu
cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBpbmZvLmZp
bGxTdHJpY3RJbnQ0OChncHIpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdElu
dDQ4KQorICAgICAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdw
cik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OChncHIpOworICAgICAgICAgICAgcmV0dXJu
IGdwcjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKworICAgICAgICAvLyBGaWxsIGFzIEpTVmFs
dWUsIGFuZCBmYWxsIHRocm91Z2guCisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFt
LCBncHIsIERhdGFGb3JtYXRKU0ludDMyKTsKKyAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwor
ICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIC8vIENoZWNrIHRoZSB2
YWx1ZSBpcyBhbiBpbnRlZ2VyLiBOb3RlIHRoYXQgd2Ugd291bGQgKmxpa2UqIHRvIHVuYm94IGFu
IEludDQ4CisgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgYnV0IHRoaXMgaXMgdG9vIGNvc3RseS4g
V2Ugb25seSAqcHJvdmUqIHRoYXQgdGhpcyBpcyBhbiBJbnQ0OAorICAgICAgICAvLyBldmVuIHRo
b3VnaCB3ZSBjaGVjayBpZiBpdCdzIGFuIGludDMyLgorICAgICAgICBHUFJSZWcgZ3ByID0gaW5m
by5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgaWYgKHR5cGUgJiB+
U3BlY0ludDMyKQorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIGdw
ciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIG1faml0LnNpZ25F
eHRlbmQzMlRvUHRyKGdwcik7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3Jt
YXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgZmlsbFN0cmljdEludDQ4KGdwcik7CisgICAg
ICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisgICAgICAgIG1faml0LmxzaGlmdDY0KFRy
dXN0ZWRJbW02NCgxNiksIGdwcik7CisgICAgICAgIGZpbGxJbnQ0OChncHIpOworICAgICAgICBy
ZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgorICAgIGNhc2Ug
RGF0YUZvcm1hdEpTSW50MzI6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7Cisg
ICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRy
KGdwcik7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0
OCkgeworICAgICAgICAgICAgZmlsbFN0cmljdEludDQ4KGdwcik7CisgICAgICAgICAgICByZXR1
cm4gZ3ByOworICAgICAgICB9CisgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW02NCgx
NiksIGdwcik7CisgICAgICAgIGZpbGxJbnQ0OChncHIpOworICAgICAgICByZXR1cm4gZ3ByOwor
ICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAgIEdQUlJl
ZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBp
ZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgICAgICBy
ZXR1cm4gZ3ByOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIp
OworICAgICAgICBmaWxsU3RyaWN0SW50NDgoZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAg
ICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEdQUlJl
ZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBp
ZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICByZXR1cm4g
Z3ByOworICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAg
ICAgICBmaWxsSW50NDgoZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBj
YXNlIERhdGFGb3JtYXREb3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CisgICAg
Y2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgorICAgIGNh
c2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46IHsKKyAg
ICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIDApOworICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CisgICAg
ICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdFN0b3Jh
Z2U6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIAorICAg
IGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0KK30KKwogRlBSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UgZWRnZSkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVH
X1ZFUkJPU0UpCkBAIC05NDUsNiArMTE4NSwyNCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVEb3ViCiAgICAgICAgICAgICB1bmxvY2soZ3ByKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50
NDg6IHsKKyAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAg
bV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwor
ICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OChncHIpOworICAgICAg
ICAgICAgdW5sb2NrKGdwcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAgICAg
ICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3By
LCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKKyAgICAgICAgICAgIG1faml0
LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwor
ICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NDgoZ3ByKTsKKyAgICAgICAgICAgIHVubG9j
ayhncHIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CkBAIC0xMDA5LDYgKzEyNjcs
MjQgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogICAgICAgICBt
X2dwcnMudW5sb2NrKGdwcik7CiAgICAgICAgIHJldHVybiBmcHI7CiAgICAgfQorICAgICAgICAK
KyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5n
cHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0MzIo
VHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NDgoKm1f
c3RyZWFtLCBncHIpOworICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7CisgICAgICAgIC8vIGZh
bGwgdGhyb3VnaC4KKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdElu
dDQ4OiB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOworICAgICAgICBHUFJS
ZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAg
bV9qaXQuY29udmVydEludDY0VG9Eb3VibGUoZ3ByLCBmcHIpOworICAgICAgICBtX2dwcnMudW5s
b2NrKGdwcik7CisgICAgICAgIHJldHVybiBmcHI7CisgICAgfQogCiAgICAgLy8gVW5ib3ggdGhl
IGRvdWJsZQogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7CkBAIC0xMTExLDcgKzEzODcs
OSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgY2FzZSBE
YXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2Ug
RGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOiB7CisgICAg
Y2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICBj
YXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2
ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgIHJldHVy
biBhbGxvY2F0ZSgpOwogICAgIH0KQEAgLTExOTQsNyArMTQ3Miw5IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToK
ICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgot
ICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6IHsKKyAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgorICAg
IGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7
CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJl
dmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDkgQEAgU2lsZW50UmVnaXN0
ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBT
dG9yZTMyUGF5bG9hZDsKICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZv
cm1hdENlbGwgfHwgcmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0b3JhZ2UpCiAgICAgICAg
ICAgICBzcGlsbEFjdGlvbiA9IFN0b3JlUHRyOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxz
ZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHJlZ2lzdGVyRm9ybWF0
ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBT
dG9yZTY0OworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9y
bWF0ICYgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmU2NDsK
ICAgICAgICAgfQpAQCAtMzg2LDYgKzM4OCw0MCBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNw
ZWN1bGF0aXZlSklUOjpzCiAgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9y
bWF0U3RvcmFnZSkgewogICAgICAgICBBU1NFUlQoaW5mby5ncHIoKSA9PSBzb3VyY2UpOwogICAg
ICAgICBmaWxsQWN0aW9uID0gTG9hZFB0cjsKKyAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQ0OCkgeworICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkK
KyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRJbnQ0OENvbnN0YW50OworICAgICAgICBlbHNl
IGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdEpTKQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRD
b252ZXJ0VG9JbnQ0ODsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERh
dGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAg
IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisg
ICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0U2hpZnRMZWZ0MTY7CisgICAgICAgIGVsc2Ug
aWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKKyAgICAgICAgICAgIGZp
bGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gU2hvdWxk
IG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBu
ZXZlcgorICAgICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3Bl
YyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCisgICAgICAgICAgICAvLyBjb252ZXJzaW9u
cyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9
PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgp
KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldFN0cmljdEludDQ4Q29uc3RhbnQ7CisgICAg
ICAgIGVsc2UgaWYgKGlzSlNJbnQzMihpbmZvLnNwaWxsRm9ybWF0KCkpIHx8IGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDMy
UGF5bG9hZFNpZ25FeHRlbmQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9
PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0U2hpZnRS
aWdodDE2OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1h
dFN0cmljdEludDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAgICAg
ZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXROb25lKQorICAgICAgICAg
ICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBT
aG91bGQgbmV2ZXIgaGFwcGVuLiBBbnl0aGluZyB0aGF0IHF1YWxpZmllcyBhcyBhbiBpbnQzMiB3
aWxsIG5ldmVyCisgICAgICAgICAgICAvLyBiZSB0dXJuZWQgaW50byBhIGNlbGwgKGltbWVkaWF0
ZSBzcGVjIGZhaWwpIG9yIGEgZG91YmxlICh0by1kb3VibGUKKyAgICAgICAgICAgIC8vIGNvbnZl
cnNpb25zIGludm9sdmUgYSBzZXBhcmF0ZSBub2RlKS4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlQocmVnaXN0ZXJGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBA
IC0zOTMsNyArNDI5LDYgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6
cwogICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgaWYgKHZh
bHVlT2ZKU0NvbnN0YW50KG5vZGUpLmlzQ2VsbCgpKQogICAgICAgICAgICAgICAgIGZpbGxBY3Rp
b24gPSBTZXRUcnVzdGVkSlNDb25zdGFudDsKLSAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBmaWxsQWN0aW9uID0gU2V0SlNDb25zdGFudDsKICAgICAgICAgfSBlbHNlIGlmIChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyKSB7CiAgICAgICAgICAgICBBU1NFUlQo
cmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdEpTSW50MzIpOwpAQCAtNTEyLDYgKzU0NywxMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgY2FzZSBTZXRJ
bnQzMkNvbnN0YW50OgogICAgICAgICBtX2ppdC5tb3ZlKEltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0
YW50KHBsYW4ubm9kZSgpKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IFNldEludDQ4Q29uc3RhbnQ6CisgICAgICAgIG1faml0Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29u
c3RhbnQocGxhbi5ub2RlKCkpLmFzTWFjaGluZUludCgpIDw8IDE2KSwgcGxhbi5ncHIoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU2V0U3RyaWN0SW50NDhDb25zdGFudDoKKyAgICAgICAg
bV9qaXQubW92ZShJbW02NCh2YWx1ZU9mSlNDb25zdGFudChwbGFuLm5vZGUoKSkuYXNNYWNoaW5l
SW50KCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXRCb29sZWFu
Q29uc3RhbnQ6CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKHZhbHVlT2ZCb29sZWFu
Q29uc3RhbnQocGxhbi5ub2RlKCkpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAt
NTMzLDYgKzU3NCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNp
CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUo
KS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQub3I2NChH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIExvYWQzMlBheWxvYWRDb252ZXJ0VG9JbnQ0ODoKKyAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0
ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihwbGFu
LmdwcigpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMy
KDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTG9hZDMyUGF5bG9h
ZFNpZ25FeHRlbmQ6CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZv
cihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAg
bV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTG9hZERvdWJsZUJveERvdWJsZToKICAgICAgICAgbV9qaXQubG9h
ZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIo
KSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkpOwpAQCAtNTc0LDYgKzYyNCwxNCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgY2FzZSBMb2FkNjQ6CiAgICAgICAg
IG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVh
bFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2Fk
NjRTaGlmdFJpZ2h0MTY6CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVz
c0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAg
ICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTG9hZDY0U2hpZnRMZWZ0MTY6CisgICAgICAgIG1faml0LmxvYWQ2
NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkp
LCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwg
cGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBMb2FkRG91Ymxl
OgogICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4u
bm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZnByKCkpOwpAQCAtMjkxNSw2ICsyOTcz
LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICAgICAg
aW50MzJSZXN1bHQoZ3ByUmVzdWx0LCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICAgICAgCisgICAgY2FzZSBJbnQ0OFVzZTogeworICAgICAgICAvLyBXaWxsIHdlIG5lZWQgYW4g
b3ZlcmZsb3cgY2hlY2s/IElmIHdlIGNhbiBwcm92ZSB0aGF0IG5laXRoZXIgaW5wdXQgY2FuIGJl
CisgICAgICAgIC8vIEludDQ4IHRoZW4gdGhlIG92ZXJmbG93IGNoZWNrIHdpbGwgbm90IGJlIG5l
Y2Vzc2FyeS4KKyAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNv
dWxkQmVUeXBlKFNwZWNJbnQ0OCkKKyAgICAgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUobm9k
ZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAgICAgICAgIC8vIERl
Y2lkZSB3aGV0aGVyIHRvIGRvIGFuIGFkZGl0aW9uIG92ZXIgc3RyaWN0IGludDQ4IG9yIG5vdCBi
YXNlZCBvbiB0aGUKKyAgICAgICAgICAgIC8vIGZvcm1hdCBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4g
VGhhdCdzIHNvcnQgb2YgcmFuZG9tLCBidXQgd2hhdGV2ZXIuCisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuOworICAgIH0KICAgICAKICAgICBjYXNlIE51bWJlclVzZTogewogICAgICAgICBTcGVj
dWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0zMDg4LDYg
KzMxNTcsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUoCiAKICAg
ICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAKKyAgICAgICAgLy8g
Tm90ZTogdGhlcmUgaXMgbm8gbm90aW9uIG9mIGJlaW5nIG5vdCB1c2VkIGFzIGEgbnVtYmVyLCBi
dXQgc29tZW9uZQorICAgICAgICAvLyBjYXJpbmcgYWJvdXQgbmVnYXRpdmUgemVyby4KKyAgICAg
ICAgCiAgICAgICAgIGlmIChieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5v
ZGVGbGFncygpKSkKICAgICAgICAgICAgIG1faml0Lm5lZzMyKHJlc3VsdC5ncHIoKSk7CiAgICAg
ICAgIGVsc2UgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkocmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsNiArMzMzLDcgQEAg
cHVibGljOgogICAgIC8vIG1hY2hpbmUgcmVnaXN0ZXJzLCBpbXBsaWNpdGx5IGdlbmVyYXRpbmcg
c3BlY3VsYXRpb24gY2hlY2tzIGFzIG5lZWRlZC4KICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUlu
dDMyKEVkZ2UsIERhdGFGb3JtYXQmIHJldHVybkZvcm1hdCk7CiAgICAgR1BSUmVnIGZpbGxTcGVj
dWxhdGVJbnQzMlN0cmljdChFZGdlKTsKKyAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludDQ4KEVk
Z2UsIERhdGFGb3JtYXQgZGVzaXJlZEZvcm1hdCk7CiAgICAgRlBSUmVnIGZpbGxTcGVjdWxhdGVE
b3VibGUoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UpOwogICAgIEdQ
UlJlZyBmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlKTsKQEAgLTQ2OCw2ICs0NjksOCBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gYm94RG91YmxlKGZwciwgYWxsb2NhdGUoKSk7CiAg
ICAgfQorICAgIAorICAgIHZvaWQgYm94SW50NDgoR1BSUmVnIHNvdXJjZUdQUiwgR1BSUmVnIHRh
cmdldEdQUiwgRGF0YUZvcm1hdCBmb3JtYXQpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICB2b2lkIGJveERvdWJsZShGUFJSZWcgZnByLCBHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9h
ZEdQUikKICAgICB7CkBAIC01NTksOCArNTYyLDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
fQogICAgIAotICAgIGJvb2wgaXNLbm93bkludGVnZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gISht
X3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgflNwZWNJbnQzMik7IH0KLSAgICBib29sIGlz
S25vd25DZWxsKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1f
dHlwZSAmIH5TcGVjQ2VsbCk7IH0KKyAgICBib29sIGlzS25vd25JbnRlZ2VyKE5vZGUqIG5vZGUp
IHsgcmV0dXJuICFtX3N0YXRlLmZvck5vZGUobm9kZSkuaXNUeXBlKFNwZWNJbnQzMik7IH0KKyAg
ICBib29sIGlzS25vd25DZWxsKE5vZGUqIG5vZGUpIHsgcmV0dXJuICFtX3N0YXRlLmZvck5vZGUo
bm9kZSkuaXNUeXBlKFNwZWNDZWxsKTsgfQogICAgIAogICAgIGJvb2wgaXNLbm93bk5vdEludGVn
ZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYg
U3BlY0ludDMyKTsgfQogICAgIGJvb2wgaXNLbm93bk5vdE51bWJlcihOb2RlKiBub2RlKSB7IHJl
dHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBTcGVjTnVtYmVyKTsgfQpAQCAt
MjYyOSw2ICsyNjMyLDEwMCBAQCBwcml2YXRlOgogICAgIERhdGFGb3JtYXQgbV9mb3JtYXQ7CiB9
OwogCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NDggKGkuZS4gaXQncyBsZWZ0LXNoaWZ0
ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorY2xhc3MgU3BlY3VsYXRlSW50NDhPcGVyYW5kIHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVK
SVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0
aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1f
ZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAo
aml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAor
ICAgIH5TcGVjdWxhdGVJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3By
T3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3By
T3JJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAg
IEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFs
aWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3Vs
YXRlSW50NDgoZWRnZSgpLCBEYXRhRm9ybWF0SW50NDgpOworICAgICAgICByZXR1cm4gbV9ncHJP
ckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1f
aml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZl
SklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7
Cit9OworCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NDggKGkuZS4gdGhlIHBheWxvYWQgaXMg
aW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgorY2xh
c3MgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBT
cGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdl
LCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRp
b24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAg
ICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNl
S2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2Rl
KCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIH5TcGVjdWxhdGVJbnQ0
OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9IEludmFs
aWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9
CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vk
Z2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAgIEdQUlJlZyBncHIoKQorICAg
IHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAg
ICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlU3RyaWN0SW50NDgoZWRn
ZSgpLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICByZXR1cm4gbV9ncHJPckludmFs
aWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1faml0LT51
c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZlSklUKiBt
X2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7Cit9Owor
CiBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgewogcHVibGljOgogICAgIGV4cGxp
Y2l0IFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdl
IGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVj
dWxhdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAko
cmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgVXNlCiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAgICAgICBv
dXQucHJpbnQoIktub3duSW50MzIiKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNYWNoaW5l
SW50VXNlOgorICAgICAgICBvdXQucHJpbnQoIkludDQ4Iik7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUmVhbE51bWJlclVzZToKICAgICAgICAgb3V0LnByaW50KCJSZWFsTnVtYmVyIik7CiAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5k
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJ
KHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2lu
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAg
VW50eXBlZFVzZSwKICAgICBJbnQzMlVzZSwKICAgICBLbm93bkludDMyVXNlLAorICAgIE1hY2hp
bmVJbnRVc2UsCiAgICAgUmVhbE51bWJlclVzZSwKICAgICBOdW1iZXJVc2UsCiAgICAgS25vd25O
dW1iZXJVc2UsCkBAIC02Niw2ICs2Nyw4IEBAIEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUg
dHlwZUZpbHRlckYKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToK
ICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAg
ICAgIHJldHVybiBTcGVjTWFjaGluZUludDsKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAg
ICAgIHJldHVybiBTcGVjUmVhbE51bWJlcjsKICAgICBjYXNlIE51bWJlclVzZToKQEAgLTEyNSw2
ICsxMjgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBrCiAgICAg
c3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNlIEtub3duSW50MzJV
c2U6CisgICAgY2FzZSBNYWNoaW5lSW50VXNlOgogICAgIGNhc2UgUmVhbE51bWJlclVzZToKICAg
ICBjYXNlIE51bWJlclVzZToKICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAJKHJldmlzaW9uIDE1NTc0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIHZvaWQgVmFsdWVTb3VyY2U6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkKICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICBvdXQucHJpbnQo
IkludDMyIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAg
ICAgIG91dC5wcmludCgiSW50NDgiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDZWxsSW5K
U1N0YWNrOgogICAgICAgICBvdXQucHJpbnQoIkNlbGwiKTsKICAgICAgICAgYnJlYWs7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCShyZXZpc2lvbiAx
NTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgZW51bSBWYWx1ZVNvdXJjZUtpbmQgewogICAg
IFNvdXJjZU5vdFNldCwKICAgICBWYWx1ZUluSlNTdGFjaywKICAgICBJbnQzMkluSlNTdGFjaywK
KyAgICBJbnQ0OEluSlNTdGFjaywKICAgICBDZWxsSW5KU1N0YWNrLAogICAgIEJvb2xlYW5JbkpT
U3RhY2ssCiAgICAgRG91YmxlSW5KU1N0YWNrLApAQCAtNTYsNiArNTcsOCBAQCBzdGF0aWMgaW5s
aW5lIFZhbHVlU291cmNlS2luZCBkYXRhRm9ybWF0CiAgICAgc3dpdGNoIChkYXRhRm9ybWF0KSB7
CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CiAgICAgICAgIHJldHVybiBJbnQzMkluSlNTdGFj
azsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICAgICAgcmV0dXJuIEludDQ4SW5KU1N0
YWNrOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICAgICAgcmV0dXJuIERvdWJsZUlu
SlNTdGFjazsKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgpAQCAtNzksNiArODIsOCBAQCBz
dGF0aWMgaW5saW5lIERhdGFGb3JtYXQgdmFsdWVTb3VyY2VLaW5kCiAgICAgICAgIHJldHVybiBE
YXRhRm9ybWF0SlM7CiAgICAgY2FzZSBJbnQzMkluSlNTdGFjazoKICAgICAgICAgcmV0dXJuIERh
dGFGb3JtYXRJbnQzMjsKKyAgICBjYXNlIEludDQ4SW5KU1N0YWNrOgorICAgICAgICByZXR1cm4g
RGF0YUZvcm1hdEludDQ4OwogICAgIGNhc2UgQ2VsbEluSlNTdGFjazoKICAgICAgICAgcmV0dXJu
IERhdGFGb3JtYXRDZWxsOwogICAgIGNhc2UgQm9vbGVhbkluSlNTdGFjazoKQEAgLTEzOSw2ICsx
NDQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoRG91YmxlSW5K
U1N0YWNrKTsKICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAgICByZXR1cm4g
VmFsdWVTb3VyY2UoSW50MzJJbkpTU3RhY2spOworICAgICAgICBjYXNlIEZsdXNoZWRJbnQ0ODoK
KyAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShJbnQ0OEluSlNTdGFjayk7CiAgICAgICAg
IGNhc2UgRmx1c2hlZENlbGw6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoQ2VsbElu
SlNTdGFjayk7CiAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CkBAIC0xODEsNiArMTg4LDkg
QEAgcHVibGljOgogICAgICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICAgICAgcmV0
dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMigpOwogICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgICAgICByZXR1
cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4KCk7CisgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgogICAgICAgICAgICAgcmV0dXJu
IFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsKCk7CiAgICAgICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJs
ZUFjY2Vzc0RhdGEuaAkocmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzMzLDYgKzMz
Myw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKICAgICAgICAgICAgIHJldHVybiBGbHVzaGVkSW50MzI7CiAgICAgICAgIAorICAgICAgICBp
ZiAoZW5hYmxlSW50NDgoKSAmJiAhb3BlcmFuZElzQXJndW1lbnQobV9sb2NhbCkgJiYgaXNNYWNo
aW5lSW50U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByZXR1cm4gRmx1c2hl
ZEludDQ4OworICAgICAgICAKICAgICAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3Rp
b24pKQogICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRDZWxsOwogICAgICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE1NTc0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTkxLDYgKzE5MSw3IEBAIHB1YmxpYzoKIAogICAgIGludDMyX3QgYXNJbnQz
MigpIGNvbnN0OwogICAgIHVpbnQzMl90IGFzVUludDMyKCkgY29uc3Q7CisgICAgaW50NjRfdCBh
c01hY2hpbmVJbnQoKSBjb25zdDsKICAgICBkb3VibGUgYXNEb3VibGUoKSBjb25zdDsKICAgICBi
b29sIGFzQm9vbGVhbigpIGNvbnN0OwogICAgIGRvdWJsZSBhc051bWJlcigpIGNvbnN0OwpAQCAt
MjAyLDYgKzIwMyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgIGJv
b2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdDsKICAgICBib29sIGlzQm9vbGVhbigpIGNvbnN0
OworICAgIGJvb2wgaXNNYWNoaW5lSW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc051bWJlcigpIGNv
bnN0OwogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzUHJpbWl0aXZlKCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5NCw2ICs0
OTQsMzUgQEAgQUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIAogCiAjZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNNYWNoaW5lSW50
KCkgY29uc3QKK3sKKyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoIWlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkb3VibGUgbnVt
YmVyID0gYXNEb3VibGUoKTsKKyAgICBpZiAobnVtYmVyICE9IG51bWJlcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGludDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG51
bWJlcik7CisgICAgaWYgKGFzSW50NjQgIT0gbnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFhc0ludDY0ICYmIHN0ZDo6c2lnbmJpdChudW1iZXIpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKGFzSW50NjQgPj0gKHN0YXRpY19jYXN0PGludDY0X3Q+KDEpIDw8
IDQ3KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhc0ludDY0IDwgLShzdGF0aWNf
Y2FzdDxpbnQ2NF90PigxKSA8PCA0NykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworaW5saW5lIGludDY0X3QgSlNWYWx1ZTo6YXNNYWNoaW5lSW50KCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoaXNNYWNoaW5lSW50KCkpOworICAgIGlmIChpc0ludDMyKCkpCisg
ICAgICAgIHJldHVybiBhc0ludDMyKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+
KGFzRG91YmxlKCkpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N0cmluZygpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N0cmluZygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211655</attachid>
            <date>2013-09-14 10:33:28 -0700</date>
            <delta_ts>2013-09-14 13:13:05 -0700</delta_ts>
            <desc>filling in the backend</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>69220</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAkocmV2
aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0Tm9uZSA9IDAsCiAgICAgRGF0YUZvcm1h
dEludDMyID0gMSwKLSAgICBEYXRhRm9ybWF0RG91YmxlID0gMiwKLSAgICBEYXRhRm9ybWF0Qm9v
bGVhbiA9IDMsCi0gICAgRGF0YUZvcm1hdENlbGwgPSA0LAotICAgIERhdGFGb3JtYXRTdG9yYWdl
ID0gNSwKKyAgICBEYXRhRm9ybWF0SW50NDggPSAyLCAvLyBJbnQ0OCdzIGFyZSBsZWZ0LXNoaWZ0
ZWQgYnkgMTYgYnkgZGVmYXVsdC4KKyAgICBEYXRhRm9ybWF0U3RyaWN0SW50NDggPSAzLCAvLyAi
U3RyaWN0IiBJbnQ0OCBtZWFucyBpdCdzIG5vdCBzaGlmdGVkLgorICAgIERhdGFGb3JtYXREb3Vi
bGUgPSA0LAorICAgIERhdGFGb3JtYXRCb29sZWFuID0gNSwKKyAgICBEYXRhRm9ybWF0Q2VsbCA9
IDYsCisgICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA3LAogICAgIERhdGFGb3JtYXRKUyA9IDgsCiAg
ICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAg
ICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwK
QEAgLTY0LDYgKzY2LDEwIEBAIGlubGluZSBjb25zdCBjaGFyKiBkYXRhRm9ybWF0VG9TdHJpbmco
RGEKICAgICAgICAgcmV0dXJuICJOb25lIjsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAg
ICAgICAgcmV0dXJuICJJbnQzMiI7CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAg
IHJldHVybiAiSW50NDgiOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1
cm4gIlN0cmljdEludDQ4IjsKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgIHJl
dHVybiAiRG91YmxlIjsKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZpc2lv
biAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDUsMTYgKzM0NSwxMSBAQCBTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhCiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CiAg
ICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVl
LmFzTnVtYmVyKCk7Ci0gICAgICAgIGlmIChudW1iZXIgPT0gbnVtYmVyKSB7Ci0gICAgICAgICAg
ICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIpOwotICAgICAg
ICAgICAgaWYgKGFzSW50NjQgPT0gbnVtYmVyICYmIChhc0ludDY0IHx8ICFzdGQ6OnNpZ25iaXQo
bnVtYmVyKSkKLSAgICAgICAgICAgICAgICAmJiBhc0ludDY0IDwgKHN0YXRpY19jYXN0PGludDY0
X3Q+KDEpIDw8IDQ3KQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPj0gLShzdGF0aWNfY2Fz
dDxpbnQ2NF90PigxKSA8PCA0NykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU3BlY0ludDQ4
QXNEb3VibGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU3BlY05vbkludEFz
RG91YmxlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFOOworICAgICAg
ICBpZiAobnVtYmVyICE9IG51bWJlcikKKyAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFO
OworICAgICAgICBpZiAodmFsdWUuaXNNYWNoaW5lSW50KCkpCisgICAgICAgICAgICByZXR1cm4g
U3BlY0ludDQ4QXNEb3VibGU7CisgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAg
ICAgfQogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
RnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5n
ICAKIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbE90aGVyICAgICAgICAgPSAw
eDAwMDQwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBhIHN1YmNsYXNz
IG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgogc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICA9IDB4MDAwN2ZmZmY7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
SW50MzIgICAgICAgICAgICAgPSAweDAwODAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50
MzIuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDQ4ICAgICAgICAgICAgID0g
MHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4LCBpdCdzIGluc2lkZSBhIGRv
dWJsZSwgYnV0IGl0IGRvZXNuJ3QgbmVlZCB0byBiZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjSW50NDggICAgICAgICAgICAgPSAweDAxMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRl
bHkgYW4gSW50NDggYW5kIHdlIGludGVuZCBpdCB0byB1bmJveCBpdC4KIHN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjTWFjaGluZUludCAgICAgICAgPSAweDAxODAwMDAwOyAvLyBJdCdz
IHNvbWV0aGluZyB0aGF0IHdlIGNhbiBkbyBtYWNoaW5lIGludCBhcml0aG1ldGljIG9uLgogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ0OEFzRG91YmxlICAgICA9IDB4MDIwMDAw
MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUu
CiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgID0gMHgw
MzgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IHNvbWUga2luZCBvZiBpbnRlZ2VyLgpAQCAtNzQs
OSArNzQsOSBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iCiBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY051bWJlciAgICAgICAgICAgID0gMHgwZjgwMDAw
MDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGUuCiBzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAgID0gMHgxMDAwMDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgQm9vbGVhbi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT3Ro
ZXIgICAgICAgICAgICAgPSAweDIwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm9uZSBvZiB0
aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAg
ICAgID0gMHgzZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgID0gMHgzZWZmZmZmZjsg
Ly8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4NDAwMDAw
MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZmZmZmZmZjsgLy8g
SXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0
aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNGdWxsVG9wICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkg
b2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgogCiB0eXBlZGVmIGJv
b2wgKCpTcGVjdWxhdGVkVHlwZUNoZWNrZXIpKFNwZWN1bGF0ZWRUeXBlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkocmV2aXNpb24g
MTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3Zlcnku
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDE1IEBAIGVudW0gVmFsdWVSZWNvdmVyeVRl
Y2huaXF1ZSB7CiAgICAgQWxyZWFkeUluSlNTdGFjaywKICAgICAvLyBJdCdzIGFscmVhZHkgaW4g
dGhlIHN0YWNrIGJ1dCB1bmJveGVkLgogICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQz
MiwKKyAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDgsCiAgICAgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZENlbGwsCiAgICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW4s
CiAgICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZSwKICAgICAvLyBJdCdzIGluIGEg
cmVnaXN0ZXIuCiAgICAgSW5HUFIsCiAgICAgVW5ib3hlZEludDMySW5HUFIsCisgICAgVW5ib3hl
ZEludDQ4SW5HUFIsCisgICAgVW5ib3hlZFN0cmljdEludDQ4SW5HUFIsCiAgICAgVW5ib3hlZEJv
b2xlYW5JbkdQUiwKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEluUGFpciwKQEAgLTU4LDYg
KzYxLDggQEAgZW51bSBWYWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBEaXNwbGFjZWRJbkpT
U3RhY2ssCiAgICAgLy8gSXQncyBpbiB0aGUgc3RhY2ssIGF0IGEgZGlmZmVyZW50IGxvY2F0aW9u
LCBhbmQgaXQncyB1bmJveGVkLgogICAgIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrLAorICAgIElu
dDQ4RGlzcGxhY2VkSW5KU1N0YWNrLAorICAgIFN0cmljdEludDQ4RGlzcGxhY2VkSW5KU1N0YWNr
LAogICAgIERvdWJsZURpc3BsYWNlZEluSlNTdGFjaywKICAgICBDZWxsRGlzcGxhY2VkSW5KU1N0
YWNrLAogICAgIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2ssCkBAIC05Myw2ICs5OCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBW
YWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCgpCisgICAgeworICAg
ICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0g
QWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKyAgICAKICAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0YWNrQXNV
bmJveGVkQ2VsbCgpCiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKQEAgLTEy
Myw2ICsxMzUsMTAgQEAgcHVibGljOgogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKICAg
ICAgICAgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKQogICAgICAgICAgICAgcmVz
dWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDMySW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRh
dGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5p
cXVlID0gVW5ib3hlZEludDQ4SW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0g
RGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0g
VW5ib3hlZFN0cmljdEludDQ4SW5HUFI7CiAgICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0g
RGF0YUZvcm1hdEJvb2xlYW4pCiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBVbmJv
eGVkQm9vbGVhbkluR1BSOwogICAgICAgICBlbHNlCkBAIC0xNjYsNiArMTgyLDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDMyRGlzcGxhY2VkSW5KU1N0
YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0SW50NDg6CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBJbnQ0OERpc3Bs
YWNlZEluSlNTdGFjazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OgorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5p
cXVlID0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIAogICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgICAg
ICByZXN1bHQubV90ZWNobmlxdWUgPSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTIyNyw2ICsyNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAo
dGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrOgogICAgICAgICBj
YXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAgICAgY2FzZSBBbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xl
YW46CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKQEAgLTIz
OCw3ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgZ3ByKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBJbkdQ
UiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBV
bmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQzMkluR1BSKTsKKyAgICAg
ICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRJ
bnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFuSW5HUFIgfHwgbV90ZWNo
bmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZEludDQ4SW5HUFIg
fHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFIpOwogICAgICAgICByZXR1
cm4gbV9zb3VyY2UuZ3ByOwogICAgIH0KICAgICAKQEAgLTI2NCw3ICsyODksNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpIGNvbnN0CiAgICAg
ewotICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1f
dGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IERv
dWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxhY2VkSW5K
U1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2spOworICAg
ICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5p
cXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IERvdWJsZURp
c3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNr
IHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlx
dWUgPT0gSW50NDhEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0gU3RyaWN0SW50
NDhEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gbV9zb3VyY2UudmlydHVhbFJl
ZzsKICAgICB9CiAgICAgCkBAIC0yODMsNiArMzA4LDkgQEAgcHVibGljOgogICAgICAgICBjYXNl
IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAgIG91dC5wcmludGYo
IihpbnQzMikiKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgICAgIG91dC5wcmludGYoIihpbnQ0OCkiKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWRDZWxsOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKGNlbGwpIik7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTI5OCw2ICszMjYsMTIgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQzMkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiaW50MzIoJSVyJWQpIiwgZ3ByKCkp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVW5ib3hlZEludDQ4SW5HUFI6Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCJpbnQ0OCglJXIlZCkiLCBncHIoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKKyAgICAgICAg
ICAgIG91dC5wcmludGYoInN0cmljdEludDQ4KCUlciVkKSIsIGdwcigpKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CiAgICAgICAgICAgICBv
dXQucHJpbnRmKCJib29sKCUlciVkKSIsIGdwcigpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MzE4LDYgKzM1MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2s6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIqaW50MzIoJWQpIiwgdmlydHVhbFJlZ2lz
dGVyKCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NDhEaXNwbGFjZWRJ
bkpTU3RhY2s6CisgICAgICAgICAgICBvdXQucHJpbnRmKCIqaW50NDgoJWQpIiwgdmlydHVhbFJl
Z2lzdGVyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RyaWN0SW50NDhE
aXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBvdXQucHJpbnRmKCIqc3RyaWN0SW50NDgo
JWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKmRv
dWJsZSglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
ci5oCShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgYm9vbCBuZWVkc1R5cGVDaGVjayhOb2RlKiBub2RlLCBTcGVjdWxhdGVk
VHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gpCiAgICAgewotICAgICAgICByZXR1cm4gZm9yTm9kZShu
b2RlKS5tX3R5cGUgJiB+dHlwZXNQYXNzZWRUaHJvdWdoOworICAgICAgICByZXR1cm4gIWZvck5v
ZGUobm9kZSkuaXNUeXBlKHR5cGVzUGFzc2VkVGhyb3VnaCk7CiAgICAgfQogICAgIAogICAgIGJv
b2wgbmVlZHNUeXBlQ2hlY2soRWRnZSBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRo
cm91Z2gpCkBAIC0xNjgsNyArMTY4LDcgQEAgcHJpdmF0ZToKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZmlsdGVyQnlUeXBlKE5vZGUqIG5vZGUsIEVkZ2UmIGVkZ2UsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUpCiAgICAgewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUoZWRnZSk7
Ci0gICAgICAgIGlmICh2YWx1ZS5tX3R5cGUgJiB+dHlwZSkgeworICAgICAgICBpZiAoIXZhbHVl
LmlzVHlwZSh0eXBlKSkgewogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAg
ICAgICAgICAgIGVkZ2Uuc2V0UHJvb2ZTdGF0dXMoTmVlZHNDaGVjayk7CiAgICAgICAgIH0gZWxz
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTAsNiArMzEwLDI2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIElu
dDQ4VG9Eb3VibGU6IHsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7
CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBjaGlsZCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4QXNE
b3VibGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50NDhB
c1ZhbHVlOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgeworICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNNYWNoaW5lSW50KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIFZhbHVlQWRkOgogICAg
IGNhc2UgQXJpdGhBZGQ6IHsKICAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkudmFsdWUoKTsKQEAgLTMyNCw2ICszNDQsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5j
YXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgp
OworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0lu
dDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUo
U3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgaWYg
KGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkK
ICAgICAgICAgICAgICAgICAmJiBpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUt
PmNoaWxkMigpKS5tX3R5cGUpKQpAQCAtMzU4LDYgKzM4NCwxMiBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1
bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5v
ZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBN
YWNoaW5lSW50VXNlOgorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0
OCk7CisgICAgICAgICAgICBpZiAoIWZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVj
SW50MzIpCisgICAgICAgICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlw
ZShTcGVjSW50MzIpKQorICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTM4MCw2ICs0MTIsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0
aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKCFi
eXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00MDQsNiArNDQxLDEwIEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB8
fCAhYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkp
CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUoU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1
ZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAg
ICAgICBpZiAoaXNSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV90eXBlKQogICAgICAgICAgICAgICAgIHx8IGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5v
ZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCkBAIC04MTIsNyArODUzLDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKG5vZGUtPnNo
b3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50NDgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
QXJyYXk6OkZsb2F0MzJBcnJheToKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjRG91YmxlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RWYWx1ZS5oCShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYgKzE4NSwxNiBAQCBz
dHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9
CiAgICAgCisgICAgYm9vbCBjb3VsZEJlVHlwZShTcGVjdWxhdGVkVHlwZSBkZXNpcmVkVHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiAhIShtX3R5cGUgJiBkZXNpcmVkVHlwZSk7CisgICAgfQor
ICAgIAorICAgIGJvb2wgaXNUeXBlKFNwZWN1bGF0ZWRUeXBlIGRlc2lyZWRUeXBlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuICEobV90eXBlICYgfmRlc2lyZWRUeXBlKTsKKyAgICB9CisgICAgCiAg
ICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoR3JhcGgmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmKTsK
ICAgICAKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2RlcyBh
cnJheU1vZGVzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2
aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0MywxNSBAQCBpbmxpbmUgYm9vbCBlbmFibGVDb25j
dXJyZW50SklUKCkKICNlbmRpZgogfQogCitpbmxpbmUgYm9vbCBlbmFibGVJbnQ0OCgpCit7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCit9CisKIGVudW0gU3BpbGxSZWdpc3RlcnNNb2RlIHsgTmVlZFRvU3BpbGws
IERvbnRTcGlsbCB9OwogCiBlbnVtIE5vUmVzdWx0VGFnIHsgTm9SZXN1bHQgfTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTU1
NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTE5Nyw2ICsyMDIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiBtX2dyYXBoLm5l
Z2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjA3LDYgKzIx
NiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIG1fZ3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlTWFj
aGluZUludChub2RlKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTMwMCw2ICszMTQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKQorICAgICAgICAgICAgICAg
ICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgp
LCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNo
aW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNo
aW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNl
Pihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKQEAgLTM1NSw2ICszNzQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKQorICAg
ICAgICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
ewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKQEAgLTEz
NDcsMTIgKzEzNzIsODQgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxVc2VLaW5kIHVzZUtpbmQ+
CiAgICAgdm9pZCBmaXhFZGdlKEVkZ2UmIGVkZ2UsIFNwZWN1bGF0aW9uRGlyZWN0aW9uIGRpcmVj
dGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCiAgICAgewotICAgICAgICBpZiAoaXNEb3VibGUo
dXNlS2luZCkgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsK
LSAgICAgICAgICAgIGluamVjdEludDMyVG9Eb3VibGVOb2RlKGVkZ2UsIHVzZUtpbmQsIGRpcmVj
dGlvbik7CisgICAgICAgIGlmIChpc0RvdWJsZSh1c2VLaW5kKSkgeworICAgICAgICAgICAgaWYg
KGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7CisgICAgICAgICAg
ICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoZWRnZSwgdXNlS2luZCwgZGlyZWN0aW9uKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hp
bmVJbnQoKSkgeworICAgICAgICAgICAgICAgIC8vIE1ha2UgYWxsIGRvdWJsZSB1c2VzIG9mIGlu
dDQ4IHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ0OFRvRG91YmxlLgorICAgICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBJbnQ0OFRvVmFsdWUgKHNl
ZSBiZWxvdykgZXhjZXB0IHRoYXQKKyAgICAgICAgICAgICAgICAvLyBJbnQ4VG9Eb3VibGUgd2ls
bCBjb252ZXJ0IGludDQ4J3MgdGhhdCBmaXQgaW4gYW4gaW50MzIgaW50byBhIGRvdWJsZQorICAg
ICAgICAgICAgICAgIC8vIHJhdGhlciB0aGFuIHRyeWluZyB0byBjcmVhdGUgYSBib3hlZCBpbnQz
MiBsaWtlIEludDQ4VG9WYWx1ZSBkb2VzLgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPE1hY2hpbmVJbnRVc2U+KGVkZ2Uubm9kZSgpKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y0ludDQ4QXNEb3VibGUsIEludDQ4VG9Eb3VibGUsCisgICAgICAgICAgICAgICAgICAgIG1fY3Vy
cmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE1hY2hpbmVJbnRVc2UpKTsK
KyAgICAgICAgICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgdXNlS2luZCAhPSBNYWNoaW5lSW50VXNlCisgICAgICAg
ICAgICAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkgJiYgIWVkZ2UtPnNob3Vs
ZFNwZWN1bGF0ZUludDMyKCkpIHsKKyAgICAgICAgICAgIC8vIFdlIG1ha2UgYWxsIG5vbi1pbnQ0
OCB1c2VzIG9mIGludDQ4IHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ0OFRvVmFsdWUK
KyAgICAgICAgICAgIC8vIG5vZGUgdG8gZW5zdXJlIHRoYXQgd2UgaGFuZGxlIHRoaXMgcHJvcGVy
bHk6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAg
ICAgICAvLyBiOiBBcml0aEFkZChAYSwgLi4uKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4s
IEBhKQorICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8v
CisgICAgICAgICAgICAvLyBXaXRob3V0IGFuIGludGVybWVkaWF0ZSBub2RlIGFuZCBqdXN0IGxh
YmVsaW5nIHRoZSB1c2VzLCB3ZSB3aWxsIGdldDoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAg
ICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDQ4OkBhLCAu
Li4pCisgICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAYSkKKyAgICAgICAgICAg
IC8vIGQ6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gQW5kIG5vdyB0aGUgYy0+VW50eXBlZDpAYSBlZGdlIHdpbGwgYm94IHRoZSB2YWx1ZSBv
ZiBAYSBpbnRvIGEgZG91YmxlLiBUaGlzCisgICAgICAgICAgICAvLyBpcyBiYWQsIGJlY2F1c2Ug
bm93IHRoZSBkLT5JbnQ0ODpAYSBlZGdlIHdpbGwgZWl0aGVyIGhhdmUgdG8gZG8gZG91YmxlLXRv
LWludAorICAgICAgICAgICAgLy8gY29udmVyc2lvbnMsIG9yIHdpbGwgaGF2ZSB0byBPU1IgZXhp
dCB1bmNvbmRpdGlvbmFsbHkuIEFsdGVybmF0aXZlbHkgd2UgY291bGQKKyAgICAgICAgICAgIC8v
IGhhdmUgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSBib3ggdGhlIHZhbHVlIGJ5IGNvcHlpbmcgcmF0
aGVyIHRoYW4gaW4tcGxhY2UuCisgICAgICAgICAgICAvLyBCdXQgdGhlc2UgYm94aW5ncyBhcmUg
YWxzbyBjb3N0bHkgc28gdGhpcyB3b3VsZG4ndCBiZSBncmVhdC4KKyAgICAgICAgICAgIC8vCisg
ICAgICAgICAgICAvLyBUaGUgc29sdXRpb24gd2UgdXNlIGlzIHRvIGFsd2F5cyBoYXZlIG5vbi1J
bnQ0OCB1c2VzIG9mIHByZWRpY3RlZCBJbnQ0OCdzIHVzZQorICAgICAgICAgICAgLy8gYW4gaW50
ZXJ2ZW5pbmcgSW50NDhUb1ZhbHVlIG5vZGU6CisgICAgICAgICAgICAvLworICAgICAgICAgICAg
Ly8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4u
KQorICAgICAgICAgICAgLy8geDogSW50NDhUb1ZhbHVlKEludDQ4OkBhKQorICAgICAgICAgICAg
Ly8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QHgpCisgICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJ
bnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBl
dmVuIGlmIHdlIGhhZCBtdWx0aXBsZSBub24taW50NDggdXNlcyBvZiBAYSwgdGhlIG11bHRpcGxl
CisgICAgICAgICAgICAvLyBJbnQ0OFRvVmFsdWUncyB3b3VsZCBnZXQgQ1NFJ2QgdG9nZXRoZXIu
IFNvIHRoZSBib3hpbmcgd291bGQgb25seSBoYXBwZW4gb25jZS4KKyAgICAgICAgICAgIC8vIEF0
IHRoZSBzYW1lIHRpbWUsIEBhIHdvdWxkIGNvbnRpbnVlIHRvIGJlIHJlcHJlc2VudGVkIGFzIGEg
bmF0aXZlIGludDQ4LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEFuIGFsdGVybmF0
aXZlIHdvdWxkIGhhdmUgYmVlbiB0byBpbnNlcnQgVG9OYXRpdmVJbnQ0OCBub2RlcyBvbiBpbnQ0
OCB1c2VzIG9mCisgICAgICAgICAgICAvLyBpbnQ0OCdzLiBUaGlzIHdvdWxkIGhhdmUgaGFuZGxl
ZCB0aGUgYWJvdmUgZXhhbXBsZSBidXQgd291bGQgZmFsbCBvdmVyIGZvcjoKKyAgICAgICAgICAg
IC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IENhbGwo
Li4uLCBAYSkKKyAgICAgICAgICAgIC8vIGM6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAg
ICAvLworICAgICAgICAgICAgLy8gQnV0IHRoZSBzb2x1dGlvbiB3ZSB1c2UgaGFuZGxlcyB0aGUg
YWJvdmUgZ3JhY2VmdWxseS4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgb2JzZXJ2ZVVzZUtp
bmRPbk5vZGU8TWFjaGluZUludFVzZT4oZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDgsIEludDQ4VG9WYWx1ZSwKKyAgICAg
ICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBN
YWNoaW5lSW50VXNlKSk7CisgICAgICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBvYnNl
cnZlVXNlS2luZE9uTm9kZTx1c2VLaW5kPihlZGdlLm5vZGUoKSk7CisgICAgICAgIAogICAgICAg
ICBlZGdlLnNldFVzZUtpbmQodXNlS2luZCk7CiAgICAgfQogICAgIApAQCAtMTM3OCw3ICsxNDc1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluamVjdEludDMyVG9Eb3VibGVOb2RlKEVkZ2UmIGVk
Z2UsIFVzZUtpbmQgdXNlS2luZCA9IE51bWJlclVzZSwgU3BlY3VsYXRpb25EaXJlY3Rpb24gZGly
ZWN0aW9uID0gQmFja3dhcmRTcGVjdWxhdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIHJlc3Vs
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY0ludDQ4LCBJbnQzMlRvRG91YmxlLAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNJbnQ0OEFzRG91YmxlLCBJbnQzMlRvRG91YmxlLAogICAgICAgICAgICAgbV9jdXJyZW50
Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7CiAgICAgICAg
IGlmIChkaXJlY3Rpb24gPT0gRm9yd2FyZFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgcmVzdWx0
LT5tZXJnZUZsYWdzKE5vZGVFeGl0c0ZvcndhcmQpOwpAQCAtMTM5Miw2ICsxNDg5LDE3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CiAgICAgfQogICAg
IAorICAgIC8vIFdlIG1ha2UgYWxsIGludDQ4IGVkZ2VzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEFz
TmF0aXZlSW50NDggbm9kZSB0byBlbnN1cmUKKyAgICAvLyB0aGF0IHdlIGhhbmRsZSB0aGlzIHBy
b3Blcmx5OgorICAgIHRlbXBsYXRlPFVzZUtpbmQgdXNlS2luZD4KKyAgICB2b2lkIGZpeEludDQ4
RWRnZShFZGdlJiBlZGdlKQorICAgIHsKKyAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDgs
IEFzTmF0aXZlSW50NDgsCisgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBF
ZGdlKGVkZ2Uubm9kZSgpLCB1c2VLaW5kKSk7CisgICAgICAgIGVkZ2UgPSBlZGdlKHJlc3VsdCwg
TWFjaGluZUludFVzZSk7CisgICAgfQorCiAgICAgdm9pZCB0cnVuY2F0ZUNvbnN0YW50VG9JbnQz
MihFZGdlJiBlZGdlKQogICAgIHsKICAgICAgICAgTm9kZSogb2xkTm9kZSA9IGVkZ2Uubm9kZSgp
OwpAQCAtMTQzNCwxMyArMTU0MiwyMCBAQCBwcml2YXRlOgogICAgIGJvb2wgYXR0ZW1wdFRvTWFr
ZUludGVnZXJBZGQoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFkZFNwZWN1bGF0aW9uTW9k
ZSBtb2RlID0gbV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1vZGUobm9kZSk7Ci0gICAgICAgIGlmICht
b2RlID09IERvbnRTcGVjdWxhdGVJbnQzMikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKG1vZGUgIT0gRG9udFNwZWN1bGF0ZUludDMyKSB7CisgICAgICAgICAgICB0cnVu
Y2F0ZUNvbnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUsIG1vZGUpOworICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIHRydW5jYXRlQ29uc3RhbnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9k
ZSk7Ci0gICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVN
YWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBhdHRlbXB0VG9N
YWtlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNiArNDEsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgRmx1CiAg
ICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIG91dC5wcmludCgiRmx1c2hlZEludDMyIik7
CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgb3V0LnBy
aW50KCJGbHVzaGVkSW50MzIiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmx1c2hlZERv
dWJsZToKICAgICAgICAgb3V0LnByaW50KCJGbHVzaGVkRG91YmxlIik7CiAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJl
dmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiBlbnVtIEZsdXNoRm9ybWF0IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1
c2hlZEludDMyLAorICAgIEZsdXNoZWRJbnQ0OCwKICAgICBGbHVzaGVkRG91YmxlLAogICAgIEZs
dXNoZWRDZWxsLAogICAgIEZsdXNoZWRCb29sZWFuLApAQCAtNTUsNiArNTYsOCBAQCBpbmxpbmUg
Tm9kZUZsYWdzIHJlc3VsdEZvcihGbHVzaEZvcm1hdCBmCiAgICAgICAgIHJldHVybiBOb2RlUmVz
dWx0SlM7CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0
SW50MzI7CisgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIHJldHVybiBOb2RlUmVzdWx0
SW50NDg7CiAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICByZXR1cm4gTm9kZVJlc3Vs
dE51bWJlcjsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgpAQCAtNzQsNiArNzcsOCBAQCBpbmxp
bmUgVXNlS2luZCB1c2VLaW5kRm9yKEZsdXNoRm9ybWF0IGZvCiAgICAgICAgIHJldHVybiBDZWxs
VXNlOwogICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICByZXR1cm4gSW50MzJVc2U7Cisg
ICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIHJldHVybiBNYWNoaW5lSW50VXNlOwogICAg
IGNhc2UgRmx1c2hlZERvdWJsZToKICAgICAgICAgcmV0dXJuIE51bWJlclVzZTsKICAgICBjYXNl
IEZsdXNoZWRCb29sZWFuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5l
cmF0aW9uSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R2VuZXJhdGlvbkluZm8uaAkocmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niwx
NCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCBncHIs
IERhdGFGb3JtYXRJbnQzMik7CiAgICAgfQorICAgIHZvaWQgaW5pdEludDQ4KE5vZGUqIG5vZGUs
IHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgaW5pdEdQUihu
b2RlLCB1c2VDb3VudCwgZ3ByLCBEYXRhRm9ybWF0SW50NDgpOworICAgIH0KKyAgICB2b2lkIGlu
aXRTdHJpY3RJbnQ0OChOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHJlZykK
KyAgICB7CisgICAgICAgIGluaXRHUFIobm9kZSwgdXNlQ291bnQsIGdwciwgRGF0YUZvcm1hdFN0
cmljdEludDQ4KTsKKyAgICB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB2b2lkIGluaXRKU1Zh
bHVlKE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgZ3ByLCBEYXRhRm9ybWF0
IGZvcm1hdCA9IERhdGFGb3JtYXRKUykKICAgICB7CkBAIC0xODcsNiArMTk1LDExIEBAIHB1Ymxp
YzoKICAgICAvLyBHZXQgdGhlIGZvcm1hdCBvZiB0aGUgdmFsdWUgYXMgaXQgaXMgc3BpbGxlZCBp
biB0aGUgSlNTdGFjayAob3IgJ25vbmUnKS4KICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0KCkg
eyByZXR1cm4gbV9zcGlsbEZvcm1hdDsgfQogICAgIAorICAgIGJvb2wgaXNGb3JtYXQoRGF0YUZv
cm1hdCBleHBlY3RlZEZvcm1hdCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWdpc3RlckZvcm1h
dCgpID09IGV4cGVjdGVkRm9ybWF0IHx8IHNwaWxsRm9ybWF0KCkgPT0gZXhwZWN0ZWRGb3JtYXQ7
CisgICAgfQorICAgIAogICAgIGJvb2wgaXNKU0Zvcm1hdChEYXRhRm9ybWF0IGV4cGVjdGVkRm9y
bWF0KQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6aXNKU0Zvcm1hdChyZWdpc3RlckZvcm1h
dCgpLCBleHBlY3RlZEZvcm1hdCkgfHwgSlNDOjppc0pTRm9ybWF0KHNwaWxsRm9ybWF0KCksIGV4
cGVjdGVkRm9ybWF0KTsKQEAgLTE5Nyw2ICsyMTAsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gaXNKU0Zvcm1hdChEYXRhRm9ybWF0SlNJbnQzMik7CiAgICAgfQogICAgIAorICAgIGJvb2wg
aXNJbnQ0OCgpCisgICAgeworICAgICAgICByZXR1cm4gaXNGb3JtYXQoRGF0YUZvcm1hdEludDQ4
KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc1N0cmljdEludDQ4KCkKKyAgICB7CisgICAgICAg
IHJldHVybiBpc0Zvcm1hdChEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgIH0KKyAgICAKICAg
ICBib29sIGlzSlNEb3VibGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSlNGb3JtYXQoRGF0
YUZvcm1hdEpTRG91YmxlKTsKQEAgLTMxNCw2ICszMzcsMTQgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZvcm1hdEludDMyKTsKICAgICB9CisgICAg
dm9pZCBmaWxsSW50NDgoVmFyaWFibGVFdmVudFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByKQor
ICAgIHsKKyAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZvcm1hdEludDQ4KTsKKyAg
ICB9CisgICAgdm9pZCBmaWxsU3RyaWN0SW50NDgoVmFyaWFibGVFdmVudFN0cmVhbSYgc3RyZWFt
LCBHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZv
cm1hdFN0cmljdEludDQ4KTsKKyAgICB9CiAgICAgdm9pZCBmaWxsQm9vbGVhbihWYXJpYWJsZUV2
ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIpCiAgICAgewogICAgICAgICBmaWxsR1BSKHN0
cmVhbSwgZ3ByLCBEYXRhRm9ybWF0Qm9vbGVhbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDkg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogI2RlZmluZSBOb2RlUmVzdWx0SlMg
ICAgICAgICAgICAgICAgICAgICAweDAwMDEKICNkZWZpbmUgTm9kZVJlc3VsdE51bWJlciAgICAg
ICAgICAgICAgICAgMHgwMDAyCiAjZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAgICAg
ICAgIDB4MDAwMwotI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAw
MDQKLSNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA1CisjZGVm
aW5lIE5vZGVSZXN1bHRJbnQ0OCAgICAgICAgICAgICAgICAgIDB4MDAwNAorI2RlZmluZSBOb2Rl
UmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUgTm9kZVJlc3VsdFN0
b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogI2RlZmluZSBOb2RlTXVzdEdlbmVyYXRlICAgICAgICAgICAgICAgICAweDAwMDggLy8g
c2V0IG9uIG5vZGVzIHRoYXQgaGF2ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxs
eSBiZSByZW1vdmVkIGJ5IERDRS4KICNkZWZpbmUgTm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAg
ICAgICAgMHgwMDEwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEludDMyVG9Eb3VibGUsIE5vZGVSZXN1bHROdW1i
ZXIpIFwKICAgICAvKiBVc2VkIHRvIHNwZWN1bGF0ZSB0aGF0IGEgZG91YmxlIHZhbHVlIGlzIGFj
dHVhbGx5IGFuIGludGVnZXIuICovXAogICAgIG1hY3JvKERvdWJsZUFzSW50MzIsIE5vZGVSZXN1
bHRJbnQzMiB8IE5vZGVFeGl0c0ZvcndhcmQpIFwKKyAgICAvKiBVc2VkIHRvIHNlcGFyYXRlIHJl
cHJlc2VudGF0aW9uIGFuZCByZWdpc3RlciBhbGxvY2F0aW9uIG9mIEludDQ4J3MgcmVwcmVzZW50
ZWQgKi9cCisgICAgLyogYXMgdmFsdWVzLiAqL1wKKyAgICBtYWNybyhJbnQ0OFRvVmFsdWUsIE5v
ZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKEludDQ4VG9Eb3VibGUsIE5vZGVSZXN1bHROdW1iZXIp
IFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCiAg
ICAgbWFjcm8oQXJpdGhBZGQsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CkBAIC0zMTcsNiArMzIxLDggQEAgaW5saW5lIGJvb2wgbmVlZHNPU1JGb3J3YXJkUmV3aXJpbmco
Tm9kZQogICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAg
ICAgY2FzZSBEb3VibGVBc0ludDMyOgorICAgIGNhc2UgSW50NDhUb1ZhbHVlOgorICAgIGNhc2Ug
SW50NDhUb0RvdWJsZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1
NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjgsMTAgKzM2OCwyMCBAQCBwcml2YXRl
OgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBHZXRCeVZhbDogeworICAgICAgICAgICAgaWYg
KCFub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgaWYgKCFub2RlLT5wcmVkaWN0aW9uKCkpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlRmxvYXQzMkFycmF5KCkKICAgICAgICAgICAgICAgICB8fCBub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpCiAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0RvdWJsZSk7Ci0gICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlVWludDMyQXJy
YXkoKSkgeworICAgICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVJbnQzMigp
KQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50
MzIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUtPmdldEhlYXBQcmVkaWN0
aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCShy
ZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJl
Z2lzdGVyU2F2ZVBsYW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBlbnVtIFNp
bGVudFNwaWxsQWN0aW9uIHsKIGVudW0gU2lsZW50RmlsbEFjdGlvbiB7CiAgICAgRG9Ob3RoaW5n
Rm9yRmlsbCwKICAgICBTZXRJbnQzMkNvbnN0YW50LAorICAgIFNldEludDQ4Q29uc3RhbnQsCisg
ICAgU2V0U3RyaWN0SW50NDhDb25zdGFudCwKICAgICBTZXRCb29sZWFuQ29uc3RhbnQsCiAgICAg
U2V0Q2VsbENvbnN0YW50LAogICAgIFNldFRydXN0ZWRKU0NvbnN0YW50LApAQCAtNjEsOCArNjMs
MTIgQEAgZW51bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBMb2FkMzJUYWcsCiAgICAgTG9hZDMy
UGF5bG9hZCwKICAgICBMb2FkMzJQYXlsb2FkQm94SW50LAorICAgIExvYWQzMlBheWxvYWRDb252
ZXJ0VG9JbnQ0OCwKKyAgICBMb2FkMzJQYXlsb2FkU2lnbkV4dGVuZCwKICAgICBMb2FkUHRyLAog
ICAgIExvYWQ2NCwKKyAgICBMb2FkNjRTaGlmdFJpZ2h0MTYsCisgICAgTG9hZDY0U2hpZnRMZWZ0
MTYsCiAgICAgTG9hZERvdWJsZSwKICAgICBMb2FkRG91YmxlQm94RG91YmxlLAogICAgIExvYWRK
U1VuYm94RG91YmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDQwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogI2lmIFVTRShK
U1ZBTFVFNjQpCiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJveEludDQ4KEdQUlJlZyBzb3VyY2VH
UFIsIEdQUlJlZyB0YXJnZXRHUFIsIERhdGFGb3JtYXQgZm9ybWF0KQoreworICAgIEdQUlJlZyB0
ZW1wR1BSOworICAgIGlmIChzb3VyY2VHUFIgPT0gdGFyZ2V0R1BSKQorICAgICAgICB0ZW1wR1BS
ID0gYWxsb2NhdGUoKTsKKyAgICBlbHNlCisgICAgICAgIHRlbXBHUFIgPSB0YXJnZXRHUFI7Cisg
ICAgCisgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CisKKyAgICBpZiAoZm9ybWF0ID09
IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2
KSwgc291cmNlR1BSKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVChmb3JtYXQgPT0gRGF0YUZv
cm1hdFN0cmljdEludDQ4KTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihzb3VyY2VHUFIs
IHRlbXBHUFIpOworICAgIAorICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzRG91YmxlID0gbV9qaXQu
YnJhbmNoNjQoCisgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc291cmNlR1BSLCB0ZW1w
R1BSKTsKKyAgICAKKyAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihzb3VyY2VHUFIsIHRhcmdl
dEdQUik7CisgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRh
cmdldEdQUik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAg
ICAKKyAgICBpc0RvdWJsZS5saW5rKCZtX2ppdCk7CisgICAgbV9qaXQuY29udmVydEludDY0VG9E
b3VibGUoc291cmNlR1BSLCBmcHIpOworICAgIGJveERvdWJsZShmcHIsIHRhcmdldEdQUik7Cisg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgCisgICAgaWYgKHRlbXBHUFIgIT0gdGFyZ2V0R1BS
KQorICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgCisgICAgdW5sb2NrKGZwcik7Cit9CisK
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogewogICAgIFZp
cnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsK
QEAgLTY5LDExICsxMDMsMjMgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShF
ZGdlIAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1h
dCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2
aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAgIGlmIChzcGls
bEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3BpbGxG
b3JtYXQpIHsKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7CiAgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIGdwcik7CiAgICAgICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIsIGdwcik7CiAgICAgICAgICAgICAgICAgc3BpbGxGb3JtYXQgPSBEYXRhRm9y
bWF0SlNJbnQzMjsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIERhdGFG
b3JtYXRJbnQ0ODoKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7Cisg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICAgICAgYm94SW50NDgoZ3ByLCBncHIsIHNw
aWxsRm9ybWF0KTsKKyAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFGb3JtYXRKUzsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAgICAgICAgICAgICAg
ICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXREb3VibGUpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gTmVlZCB0byBib3ggdGhlIGRvdWJsZSwgc2luY2Ugd2Ugd2FudCBhIEpTVmFsdWUu
CkBAIC04MSw2ICsxMjcsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVk
Z2UgCiAgICAgICAgICAgICAgICAgICAgIHNwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdEpTRG91Ymxl
OwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwg
Z3ByLCBzcGlsbEZvcm1hdCk7CiAgICAgICAgIH0KQEAgLTExMyw2ICsxNjAsMTYgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogCiAgICAgICAgIHJldHVybiBncHI7
CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICBjYXNlIERh
dGFGb3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsK
KyAgICAgICAgbG9jayhncHIpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gYWxsb2NhdGUo
KTsKKyAgICAgICAgYm94SW50NDgoZ3ByLCByZXN1bHRHUFIsIGluZm8ucmVnaXN0ZXJGb3JtYXQo
KSk7CisgICAgICAgIHVubG9jayhncHIpOworICAgICAgICByZXR1cm4gcmVzdWx0R1BSOworICAg
IH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CiAgICAgICAgIC8vIE5vIHJldGFnIHJlcXVp
cmVkIG9uIEpTVkFMVUU2NCEKQEAgLTc2OCw3ICs4MjUsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxs
Rm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwogICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRh
Rm9ybWF0SW50MzIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRh
Rm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0SW50NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdElu
dDQ4KTsKICAgICAgICAgCiAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0
ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAgICAgICAgCkBAIC03ODksNiArODQ2LDI1IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgICAgIHJldHVy
bkZvcm1hdCA9IERhdGFGb3JtYXRKU0ludDMyOwogICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAg
ICAgICAgfQorICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgLy8gQ2Fu
IG9ubHkgaGFwcGVuIGlmIHdlJ3ZlIGFscmVhZHkgcHJvdmVkIHRoYXQgdGhlIHZhbHVlIGlzIGFu
IGludDMyLgorICAgICAgICAgICAgLy8gVGhhdCdzIGJlY2F1c2UgaWYgYSB2YWx1ZSBvcmlnaW5h
dGVkIGFzIGEgSlNWYWx1ZSB0aGVuIHdlIHdvdWxkCisgICAgICAgICAgICAvLyBzcGVjdWxhdGUg
dGhhdCBpdCdzIGFuIGludDMyIGJlZm9yZSByZXByZXNlbnRpbmcgaXQgYXMgYW4gaW50NDguCisg
ICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHdlIGtub3dpbmdseSBwcm9kdWNlZCBhbiBpbnQ0
OCwgdGhlbiB3ZSB3b3VsZCBiZQorICAgICAgICAgICAgLy8gYm94aW5nIGl0IGludG8gYSB2YWx1
ZSB1c2luZyBJbnQ0OFRvVmFsdWUuIFRoaXMgYXNzZXJ0aW9uIGlzIHZhbGlkCisgICAgICAgICAg
ICAvLyBvbmx5IGJlY2F1c2UgSW50NDggaXMgc29tZXRoaW5nIHRoYXQgd2UgaW50cm9kdWNlIGF0
IHByZWRpY3Rpb24gdGltZS4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIH5T
cGVjSW50MzIpKTsKKyAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3Ry
aWN0SW50NDgpIHsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0
cihncHIsIGdwcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQzMigq
bV9zdHJlYW0sIGdwcik7CisgICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50
MzI7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CiAgICAgICAgIG1faml0Lmxv
YWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogCiAg
ICAgICAgIC8vIEZpbGwgYXMgSlNWYWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KQEAgLTc5Nyw2ICs4
NzMsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgfQog
CiAgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBl
ICYgU3BlY0ludDQ4KSk7CiAgICAgICAgIC8vIENoZWNrIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2Vy
LgogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKICAgICAgICAgbV9ncHJzLmxvY2so
Z3ByKTsKQEAgLTg0Myw2ICs5MjAsMjcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlSW50MwogICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CiAgICAg
ICAgIHJldHVybiBncHI7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJp
Y3RJbnQ0ODogeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5cGUgJiB+U3BlY0ludDMyKSk7
CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhn
cHIpOworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihncHIsIGdwcik7CisgICAgICAg
IHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAgICAgICAgaW5mby5maWxsSW50MzIo
Km1fc3RyZWFtLCBncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKyAgICAgICAgCisg
ICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBl
ICYgflNwZWNJbnQzMikpOworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAg
ICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMy
KDE2KSwgZ3ByKTsKKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoZ3ByKTsKKyAgICAg
ICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOworICAgICAgICBpbmZvLmZpbGxJbnQz
MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQogCiAgICAgY2Fz
ZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7CkBAIC04
ODUsNiArOTgzLDE0OCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQz
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlSW50NDgoRWRnZSBlZGdlLCBEYXRhRm9ybWF0IGRlc2lyZWRGb3JtYXQpCit7CisgICAg
QVNTRVJUKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IGRlc2lyZWRGb3JtYXQg
PT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1f
c3RhdGUuZm9yTm9kZShlZGdlKTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90
eXBlOworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjTWFjaGluZUludCk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3Rl
cigpOworICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVh
bFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisKKyAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJG
b3JtYXQoKSkgeworICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKKyAgICAgICAgaWYgKChlZGdl
LT5oYXNDb25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSkuaXNNYWNo
aW5lSW50KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7Cisg
ICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNW
YWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisKKyAgICAgICAg
aWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSB2
YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBBU1NFUlQodmFsdWUu
aXNNYWNoaW5lSW50KCkpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxS
ZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKKyAgICAgICAgICAgIGludDY0X3QgdmFsdWUg
PSB2YWx1ZS5hc01hY2hpbmVJbnQoKTsKKyAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlIDw8IDE2Owor
ICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQodmFsdWUpLCBncHIp
OworICAgICAgICAgICAgaW5mby5maWxsR1BSKCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0
KTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CisgICAgICAgIAor
ICAgICAgICAvLyBGSVhNRSEhIQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNw
aWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50
MzIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERh
dGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgICAgIAorICAgICAgICBtX2dwcnMucmV0YWluKGdw
ciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAgIAorICAgICAg
ICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEpTSW50MzIgfHwgc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDMyKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBrbm93IHRoaXMgd2FzIHNw
aWxsZWQgYXMgYW4gaW50ZWdlciB3ZSBjYW4gZmlsbCB3aXRob3V0IGNoZWNraW5nLgorICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIGdwcik7CisgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihncHIsIGdwcik7
CisgICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgp
IHsKKyAgICAgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OChncHIpOworICAgICAgICAg
ICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ppdC5sc2hp
ZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSW50NDgo
Z3ByKTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRG
b3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICAgICAgaWYgKHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQu
cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBpbmZvLmZp
bGxTdHJpY3RJbnQ0OChncHIpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdElu
dDQ4KQorICAgICAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdw
cik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OChncHIpOworICAgICAgICAgICAgcmV0dXJu
IGdwcjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKworICAgICAgICAvLyBGaWxsIGFzIEpTVmFs
dWUsIGFuZCBmYWxsIHRocm91Z2guCisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFt
LCBncHIsIERhdGFGb3JtYXRKU0ludDMyKTsKKyAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwor
ICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIC8vIENoZWNrIHRoZSB2
YWx1ZSBpcyBhbiBpbnRlZ2VyLiBOb3RlIHRoYXQgd2Ugd291bGQgKmxpa2UqIHRvIHVuYm94IGFu
IEludDQ4CisgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgYnV0IHRoaXMgaXMgdG9vIGNvc3RseS4g
V2Ugb25seSAqcHJvdmUqIHRoYXQgdGhpcyBpcyBhbiBJbnQ0OAorICAgICAgICAvLyBldmVuIHRo
b3VnaCB3ZSBjaGVjayBpZiBpdCdzIGFuIGludDMyLgorICAgICAgICBHUFJSZWcgZ3ByID0gaW5m
by5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgaWYgKHR5cGUgJiB+
U3BlY0ludDMyKQorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIGdw
ciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIG1faml0LnNpZ25F
eHRlbmQzMlRvUHRyKGdwcik7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3Jt
YXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgZmlsbFN0cmljdEludDQ4KGdwcik7CisgICAg
ICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisgICAgICAgIG1faml0LmxzaGlmdDY0KFRy
dXN0ZWRJbW02NCgxNiksIGdwcik7CisgICAgICAgIGZpbGxJbnQ0OChncHIpOworICAgICAgICBy
ZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgorICAgIGNhc2Ug
RGF0YUZvcm1hdEpTSW50MzI6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7Cisg
ICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRy
KGdwcik7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0
OCkgeworICAgICAgICAgICAgZmlsbFN0cmljdEludDQ4KGdwcik7CisgICAgICAgICAgICByZXR1
cm4gZ3ByOworICAgICAgICB9CisgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW02NCgx
NiksIGdwcik7CisgICAgICAgIGZpbGxJbnQ0OChncHIpOworICAgICAgICByZXR1cm4gZ3ByOwor
ICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAgIEdQUlJl
ZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBp
ZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgICAgICBy
ZXR1cm4gZ3ByOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIp
OworICAgICAgICBmaWxsU3RyaWN0SW50NDgoZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAg
ICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEdQUlJl
ZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBp
ZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICByZXR1cm4g
Z3ByOworICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAg
ICAgICBmaWxsSW50NDgoZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBj
YXNlIERhdGFGb3JtYXREb3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CisgICAg
Y2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgorICAgIGNh
c2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46IHsKKyAg
ICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIDApOworICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CisgICAg
ICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdFN0b3Jh
Z2U6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIAorICAg
IGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBJbnZhbGlkR1BSUmVnOworICAgIH0KK30KKwogRlBSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UgZWRnZSkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVH
X1ZFUkJPU0UpCkBAIC05NDUsNiArMTE4NSwyNCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVEb3ViCiAgICAgICAgICAgICB1bmxvY2soZ3ByKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50
NDg6IHsKKyAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAg
bV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwor
ICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OChncHIpOworICAgICAg
ICAgICAgdW5sb2NrKGdwcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAgICAg
ICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3By
LCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKKyAgICAgICAgICAgIG1faml0
LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwor
ICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NDgoZ3ByKTsKKyAgICAgICAgICAgIHVubG9j
ayhncHIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CkBAIC0xMDA5LDYgKzEyNjcs
MjQgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogICAgICAgICBt
X2dwcnMudW5sb2NrKGdwcik7CiAgICAgICAgIHJldHVybiBmcHI7CiAgICAgfQorICAgICAgICAK
KyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5n
cHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0MzIo
VHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NDgoKm1f
c3RyZWFtLCBncHIpOworICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7CisgICAgICAgIC8vIGZh
bGwgdGhyb3VnaC4KKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdElu
dDQ4OiB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOworICAgICAgICBHUFJS
ZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAg
bV9qaXQuY29udmVydEludDY0VG9Eb3VibGUoZ3ByLCBmcHIpOworICAgICAgICBtX2dwcnMudW5s
b2NrKGdwcik7CisgICAgICAgIHJldHVybiBmcHI7CisgICAgfQogCiAgICAgLy8gVW5ib3ggdGhl
IGRvdWJsZQogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7CkBAIC0xMTExLDcgKzEzODcs
OSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgY2FzZSBE
YXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2Ug
RGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOiB7CisgICAg
Y2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICBj
YXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2
ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgIHJldHVy
biBhbGxvY2F0ZSgpOwogICAgIH0KQEAgLTExOTQsNyArMTQ3Miw5IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToK
ICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgot
ICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6IHsKKyAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgorICAg
IGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7
CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJl
dmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDkgQEAgU2lsZW50UmVnaXN0
ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBT
dG9yZTMyUGF5bG9hZDsKICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZv
cm1hdENlbGwgfHwgcmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0b3JhZ2UpCiAgICAgICAg
ICAgICBzcGlsbEFjdGlvbiA9IFN0b3JlUHRyOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxz
ZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHJlZ2lzdGVyRm9ybWF0
ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBT
dG9yZTY0OworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9y
bWF0ICYgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmU2NDsK
ICAgICAgICAgfQpAQCAtMzg2LDYgKzM4OCw0MCBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNw
ZWN1bGF0aXZlSklUOjpzCiAgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9y
bWF0U3RvcmFnZSkgewogICAgICAgICBBU1NFUlQoaW5mby5ncHIoKSA9PSBzb3VyY2UpOwogICAg
ICAgICBmaWxsQWN0aW9uID0gTG9hZFB0cjsKKyAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQ0OCkgeworICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkK
KyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRJbnQ0OENvbnN0YW50OworICAgICAgICBlbHNl
IGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdEpTKQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRD
b252ZXJ0VG9JbnQ0ODsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERh
dGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAg
IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisg
ICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0U2hpZnRMZWZ0MTY7CisgICAgICAgIGVsc2Ug
aWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKKyAgICAgICAgICAgIGZp
bGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gU2hvdWxk
IG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBu
ZXZlcgorICAgICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3Bl
YyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCisgICAgICAgICAgICAvLyBjb252ZXJzaW9u
cyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9
PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgp
KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldFN0cmljdEludDQ4Q29uc3RhbnQ7CisgICAg
ICAgIGVsc2UgaWYgKGlzSlNJbnQzMihpbmZvLnNwaWxsRm9ybWF0KCkpIHx8IGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDMy
UGF5bG9hZFNpZ25FeHRlbmQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9
PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0U2hpZnRS
aWdodDE2OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1h
dFN0cmljdEludDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAgICAg
ZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXROb25lKQorICAgICAgICAg
ICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBT
aG91bGQgbmV2ZXIgaGFwcGVuLiBBbnl0aGluZyB0aGF0IHF1YWxpZmllcyBhcyBhbiBpbnQzMiB3
aWxsIG5ldmVyCisgICAgICAgICAgICAvLyBiZSB0dXJuZWQgaW50byBhIGNlbGwgKGltbWVkaWF0
ZSBzcGVjIGZhaWwpIG9yIGEgZG91YmxlICh0by1kb3VibGUKKyAgICAgICAgICAgIC8vIGNvbnZl
cnNpb25zIGludm9sdmUgYSBzZXBhcmF0ZSBub2RlKS4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlQocmVnaXN0ZXJGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBA
IC0zOTMsNyArNDI5LDYgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6
cwogICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgaWYgKHZh
bHVlT2ZKU0NvbnN0YW50KG5vZGUpLmlzQ2VsbCgpKQogICAgICAgICAgICAgICAgIGZpbGxBY3Rp
b24gPSBTZXRUcnVzdGVkSlNDb25zdGFudDsKLSAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBmaWxsQWN0aW9uID0gU2V0SlNDb25zdGFudDsKICAgICAgICAgfSBlbHNlIGlmIChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyKSB7CiAgICAgICAgICAgICBBU1NFUlQo
cmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdEpTSW50MzIpOwpAQCAtNTEyLDYgKzU0NywxMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgY2FzZSBTZXRJ
bnQzMkNvbnN0YW50OgogICAgICAgICBtX2ppdC5tb3ZlKEltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0
YW50KHBsYW4ubm9kZSgpKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IFNldEludDQ4Q29uc3RhbnQ6CisgICAgICAgIG1faml0Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29u
c3RhbnQocGxhbi5ub2RlKCkpLmFzTWFjaGluZUludCgpIDw8IDE2KSwgcGxhbi5ncHIoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU2V0U3RyaWN0SW50NDhDb25zdGFudDoKKyAgICAgICAg
bV9qaXQubW92ZShJbW02NCh2YWx1ZU9mSlNDb25zdGFudChwbGFuLm5vZGUoKSkuYXNNYWNoaW5l
SW50KCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXRCb29sZWFu
Q29uc3RhbnQ6CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKHZhbHVlT2ZCb29sZWFu
Q29uc3RhbnQocGxhbi5ub2RlKCkpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAt
NTMzLDYgKzU3NCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNp
CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUo
KS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQub3I2NChH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIExvYWQzMlBheWxvYWRDb252ZXJ0VG9JbnQ0ODoKKyAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0
ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihwbGFu
LmdwcigpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMy
KDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTG9hZDMyUGF5bG9h
ZFNpZ25FeHRlbmQ6CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZv
cihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAg
bV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTG9hZERvdWJsZUJveERvdWJsZToKICAgICAgICAgbV9qaXQubG9h
ZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIo
KSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkpOwpAQCAtNTc0LDYgKzYyNCwxNCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgY2FzZSBMb2FkNjQ6CiAgICAgICAg
IG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVh
bFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2Fk
NjRTaGlmdFJpZ2h0MTY6CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVz
c0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAg
ICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTG9hZDY0U2hpZnRMZWZ0MTY6CisgICAgICAgIG1faml0LmxvYWQ2
NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkp
LCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwg
cGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBMb2FkRG91Ymxl
OgogICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4u
bm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZnByKCkpOwpAQCAtMjkxNSw2ICsyOTcz
LDQ0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICAgICAg
aW50MzJSZXN1bHQoZ3ByUmVzdWx0LCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAg
ICAgICAgLy8gV2lsbCB3ZSBuZWVkIGFuIG92ZXJmbG93IGNoZWNrPyBJZiB3ZSBjYW4gcHJvdmUg
dGhhdCBuZWl0aGVyIGlucHV0IGNhbiBiZQorICAgICAgICAvLyBJbnQ0OCB0aGVuIHRoZSBvdmVy
ZmxvdyBjaGVjayB3aWxsIG5vdCBiZSBuZWNlc3NhcnkuCisgICAgICAgIGlmICghbV9zdGF0ZS5m
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAgICAg
ICAmJiAhbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50
NDgpKSB7CisgICAgICAgICAgICAvLyBEZWNpZGUgd2hldGhlciB0byBkbyBhbiBhZGRpdGlvbiBv
dmVyIHN0cmljdCBpbnQ0OCBvciBub3QgYmFzZWQgb24gdGhlCisgICAgICAgICAgICAvLyBmb3Jt
YXQgb2YgdGhlIGZpcnN0IG9wZXJhbmQuIFRoYXQncyBzb3J0IG9mIHJhbmRvbSwgYnV0IHdoYXRl
dmVyIC0gaWYKKyAgICAgICAgICAgIC8vIHdlIGdldCBpdCB3cm9uZywgd2UnbGwganVzdCBoYXZl
IHNvbWUgZXh0cmEgc2hpZnRzLgorICAgICAgICAgICAgaWYgKGJldHRlclVzZVN0cmljdEludDQ4
KG5vZGUtPmNoaWxkMSgpKSkgeworICAgICAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDQ4
T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIFNwZWN1
bGF0ZVN0cmljdEludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOworICAgICAgICAg
ICAgICAgIG1faml0LmFkZDY0KG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOwor
ICAgICAgICAgICAgICAgIHN0cmljdEludDQ4UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAg
IG1faml0LmFkZDY0KG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICAgICAgaW50NjRSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBv
cDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIo
KSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92ZXJmbG93
LCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoQWRkNjQoTWFjcm9B
c3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOworICAgICAgICBp
bnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAg
ICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpA
QCAtMzA2MCw2ICszMTU2LDQ0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1
YihOb2QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgLy8gV2lsbCB3ZSBuZWVkIGFu
IG92ZXJmbG93IGNoZWNrPyBJZiB3ZSBjYW4gcHJvdmUgdGhhdCBuZWl0aGVyIGlucHV0IGNhbiBi
ZQorICAgICAgICAvLyBJbnQ0OCB0aGVuIHRoZSBvdmVyZmxvdyBjaGVjayB3aWxsIG5vdCBiZSBu
ZWNlc3NhcnkuCisgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5j
b3VsZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAgICAgICAmJiAhbV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpKSB7CisgICAgICAgICAgICAvLyBE
ZWNpZGUgd2hldGhlciB0byBkbyBhbiBhZGRpdGlvbiBvdmVyIHN0cmljdCBpbnQ0OCBvciBub3Qg
YmFzZWQgb24gdGhlCisgICAgICAgICAgICAvLyBmb3JtYXQgb2YgdGhlIGZpcnN0IG9wZXJhbmQu
IFRoYXQncyBzb3J0IG9mIHJhbmRvbSwgYnV0IHdoYXRldmVyIC0gaWYKKyAgICAgICAgICAgIC8v
IHdlIGdldCBpdCB3cm9uZywgd2UnbGwganVzdCBoYXZlIHNvbWUgZXh0cmEgc2hpZnRzLgorICAg
ICAgICAgICAgaWYgKGJldHRlclVzZVN0cmljdEludDQ4KG5vZGUtPmNoaWxkMSgpKSkgeworICAg
ICAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCBv
cDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcywgb3AxLCBvcDIpOworICAgICAgICAgICAgICAgIG1faml0LnN1YjY0KG9wMS5n
cHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgICAgIHN0cmljdElu
dDQ4UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBTcGVjdWxhdGVJbnQ0OE9w
ZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUlu
dDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgIG1faml0LnN1YjY0KG9wMS5ncHIoKSwg
b3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgaW50NjRSZXN1bHQocmVzdWx0
LmdwcigpLCBub2RlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSwgb3AyKTsKKyAgICAgICAg
bV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soCisgICAgICAgICAgICBJbnQ0OE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLAorICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoU3ViNjQoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIu
Z3ByKCksIHJlc3VsdC5ncHIoKSkpOworICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCks
IG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQp
CisKICAgICBjYXNlIE51bWJlclVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKQEAgLTMwODgsNiArMzIyMiw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSgKIAogICAgICAgICBtX2ppdC5tb3Zl
KG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKIAorICAgICAgICAvLyBOb3RlOiB0aGVyZSBpcyBu
byBub3Rpb24gb2YgYmVpbmcgbm90IHVzZWQgYXMgYSBudW1iZXIsIGJ1dCBzb21lb25lCisgICAg
ICAgIC8vIGNhcmluZyBhYm91dCBuZWdhdGl2ZSB6ZXJvLgorICAgICAgICAKICAgICAgICAgaWYg
KGJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAg
ICAgICAgICAgbV9qaXQubmVnMzIocmVzdWx0LmdwcigpKTsKICAgICAgICAgZWxzZSB7CkBAIC0z
MDk5LDYgKzMyMzYsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRl
KAogICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6
IHsKKyAgICAgICAgRklYTUUhCisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTU5LDkgKzE1OSw3IEBAIHB1YmxpYzoKICAgICAvLyBhbmQgaXRzIG1hY2hpbmUgcmVnaXN0
ZXJzIG1heSBiZSByZXVzZWQuCiAgICAgYm9vbCBjYW5SZXVzZShOb2RlKiBub2RlKQogICAgIHsK
LSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxS
ZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZv
RnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gaW5m
by5jYW5SZXVzZSgpOworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8obm9kZSkuY2FuUmV1
c2UoKTsKICAgICB9CiAgICAgYm9vbCBjYW5SZXVzZShFZGdlIG5vZGVVc2UpCiAgICAgewpAQCAt
MjM3LDE1ICsyMzUsMTEgQEAgcHVibGljOgogICAgIC8vIGF2b2lkIHNwaWxsaW5nIHZhbHVlcyB3
ZSB3aWxsIG5lZWQgaW1tZWRpYXRlbHkpLgogICAgIGJvb2wgaXNGaWxsZWQoTm9kZSogbm9kZSkK
ICAgICB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52
aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0
aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0
dXJuIGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9uZTsKKyAgICAgICAgcmV0
dXJuIGdlbmVyYXRpb25JbmZvKG5vZGUpLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdE5v
bmU7CiAgICAgfQogICAgIGJvb2wgaXNGaWxsZWREb3VibGUoTm9kZSogbm9kZSkKICAgICB7Ci0g
ICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVn
aXN0ZXIoKTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zy
b21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGluZm8u
cmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlOworICAgICAgICByZXR1cm4gZ2Vu
ZXJhdGlvbkluZm8obm9kZSkucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlOwog
ICAgIH0KIAogICAgIC8vIENhbGxlZCBvbiBhbiBvcGVyYW5kIG9uY2UgaXQgaGFzIGJlZW4gY29u
c3VtZWQgYnkgYSBwYXJlbnQgbm9kZS4KQEAgLTI1Myw4ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBpZiAoIW5vZGUtPmhhc1Jlc3VsdCgpKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJl
Z2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9G
cm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgIEdlbmVyYXRpb25J
bmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm8obm9kZSk7CiAKICAgICAgICAgLy8gdXNlKCkgcmV0
dXJucyB0cnVlIHdoZW4gdGhlIHZhbHVlIGJlY29tZXMgZGVhZCwgYW5kIGFueQogICAgICAgICAv
LyBhc3NvY2lhdGVkIHJlc291cmNlcyBtYXkgYmUgZnJlZWQuCkBAIC0zMzMsNiArMzI2LDcgQEAg
cHVibGljOgogICAgIC8vIG1hY2hpbmUgcmVnaXN0ZXJzLCBpbXBsaWNpdGx5IGdlbmVyYXRpbmcg
c3BlY3VsYXRpb24gY2hlY2tzIGFzIG5lZWRlZC4KICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUlu
dDMyKEVkZ2UsIERhdGFGb3JtYXQmIHJldHVybkZvcm1hdCk7CiAgICAgR1BSUmVnIGZpbGxTcGVj
dWxhdGVJbnQzMlN0cmljdChFZGdlKTsKKyAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludDQ4KEVk
Z2UsIERhdGFGb3JtYXQgZGVzaXJlZEZvcm1hdCk7CiAgICAgRlBSUmVnIGZpbGxTcGVjdWxhdGVE
b3VibGUoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UpOwogICAgIEdQ
UlJlZyBmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlKTsKQEAgLTQ2OCw2ICs0NjIsOCBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gYm94RG91YmxlKGZwciwgYWxsb2NhdGUoKSk7CiAg
ICAgfQorICAgIAorICAgIHZvaWQgYm94SW50NDgoR1BSUmVnIHNvdXJjZUdQUiwgR1BSUmVnIHRh
cmdldEdQUiwgRGF0YUZvcm1hdCBmb3JtYXQpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICB2b2lkIGJveERvdWJsZShGUFJSZWcgZnByLCBHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9h
ZEdQUikKICAgICB7CkBAIC01NTksOCArNTU1LDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
fQogICAgIAotICAgIGJvb2wgaXNLbm93bkludGVnZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gISht
X3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgflNwZWNJbnQzMik7IH0KLSAgICBib29sIGlz
S25vd25DZWxsKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1f
dHlwZSAmIH5TcGVjQ2VsbCk7IH0KKyAgICBib29sIGlzS25vd25JbnRlZ2VyKE5vZGUqIG5vZGUp
IHsgcmV0dXJuICFtX3N0YXRlLmZvck5vZGUobm9kZSkuaXNUeXBlKFNwZWNJbnQzMik7IH0KKyAg
ICBib29sIGlzS25vd25DZWxsKE5vZGUqIG5vZGUpIHsgcmV0dXJuICFtX3N0YXRlLmZvck5vZGUo
bm9kZSkuaXNUeXBlKFNwZWNDZWxsKTsgfQogICAgIAogICAgIGJvb2wgaXNLbm93bk5vdEludGVn
ZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYg
U3BlY0ludDMyKTsgfQogICAgIGJvb2wgaXNLbm93bk5vdE51bWJlcihOb2RlKiBub2RlKSB7IHJl
dHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBTcGVjTnVtYmVyKTsgfQpAQCAt
OTAwLDcgKzg5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRDb25zdGFudEluZm8oTm9kZSog
bm9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0ludDMyQ29uc3RhbnQobm9kZSkgfHwgaXNO
dW1iZXJDb25zdGFudChub2RlKSB8fCBpc0pTQ29uc3RhbnQobm9kZSkpOwotICAgICAgICBnZW5l
cmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIobm9kZS0+dmlydHVhbFJlZ2lzdGVyKCkpLmlu
aXRDb25zdGFudChub2RlLCBub2RlLT5yZWZDb3VudCgpKTsKKyAgICAgICAgZ2VuZXJhdGlvbklu
Zm8obm9kZSkuaW5pdENvbnN0YW50KG5vZGUsIG5vZGUtPnJlZkNvdW50KCkpOwogICAgIH0KICAg
ICAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxscyB0byBDKysgaGVscGVyIGZ1bmN0aW9u
cy4KQEAgLTE4ODksMTAgKzE4ODUsMTYgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNJbnQzMkNv
bnN0YW50KG5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAg
ICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdp
c3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGluZm8uaXNK
U0ludDMyKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5pc0pTSW50MzIo
KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChOb2RlKiBub2Rl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICFnZW5lcmF0aW9uSW5mbyhub2RlLT5jaGlsZDEoKSku
aXNJbnQ0OCgpOworICAgIH0KKyAgICBib29sIGJldHRlclVzZVN0cmljdEludDQ4KEVkZ2UgZWRn
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChlZGdlLm5vZGUo
KSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgY29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6
OlJlbGF0aW9uYWxDb25kaXRpb24sIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNf
REZHT3BlcmF0aW9uX0VKSik7CkBAIC0yMTk1LDYgKzIxOTcsMTYgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdGlvbkluZm9bb3BlcmFuZFRvTG9jYWwodmlydHVhbFJl
Z2lzdGVyKV07CiAgICAgfQorICAgIAorICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5m
byhOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvRnJvbVZp
cnR1YWxSZWdpc3Rlcihub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgfQorICAgIAorICAg
IEdlZW5yYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mbyhFZGdlIGVkZ2UpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2VuZXJhdGlvbkluZm8oZWRnZS5ub2RlKCkpOworICAgIH0KIAogICAgIC8vIFRo
ZSBKSVQsIHdoaWxlIGFsc28gcHJvdmlkZXMgTWFjcm9Bc3NlbWJsZXIgZnVuY3Rpb25hbGl0eS4K
ICAgICBKSVRDb21waWxlciYgbV9qaXQ7CkBAIC0yNjI5LDYgKzI2NDEsMTAwIEBAIHByaXZhdGU6
CiAgICAgRGF0YUZvcm1hdCBtX2Zvcm1hdDsKIH07CiAKKy8vIEdpdmVzIHlvdSBhIGNhbm9uaWNh
bCBJbnQ0OCAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwgbG93IGJpdHMgemVybykuCitj
bGFzcyBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1
bGF0ZUludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRT
cGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAg
ICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJP
ckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9k
ZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0g
TWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisgICAg
ICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgflNwZWN1bGF0ZUludDQ4T3BlcmFuZCgp
CisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52YWxpZEdQUlJlZyk7
CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOworICAgIH0KKyAgICAKKyAg
ICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9
CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWRn
ZSgpLm5vZGUoKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVnIGdwcigpCisgICAgeworICAgICAg
ICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1fZ3By
T3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVJbnQ0OChlZGdlKCksIERhdGFGb3JtYXRJ
bnQ0OCk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKKyAgICB9CisgICAgCisgICAg
dm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVkZ2UgbV9lZGdl
OworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisKKy8vIEdpdmVzIHlvdSBhIHN0cmlj
dCBJbnQ0OCAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYg
Yml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCitjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJh
bmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZChT
cGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9k
ZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisg
ICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQ
UlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7Cisg
ICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAg
ICB9CisgICAgCisgICAgflNwZWN1bGF0ZUludDQ4T3BlcmFuZCgpCisgICAgeworICAgICAgICBB
U1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51
bmxvY2sobV9ncHJPckludmFsaWQpOworICAgIH0KKyAgICAKKyAgICBFZGdlIGVkZ2UoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9CisgICAgCisgICAgTm9kZSog
bm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9
CisgICAgCisgICAgR1BSUmVnIGdwcigpCisgICAgeworICAgICAgICBpZiAobV9ncHJPckludmFs
aWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQt
PmZpbGxTcGVjdWxhdGVTdHJpY3RJbnQ0OChlZGdlKCksIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7
CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKKyAgICB9CisgICAgCisgICAgdm9pZCB1
c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKyAgICAKK3By
aXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVkZ2UgbV9lZGdlOworICAg
IEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisKIGNsYXNzIFNwZWN1bGF0ZVN0cmljdEludDMy
T3BlcmFuZCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVy
YW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9k
ZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2
ICs0NCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2UKICAgICBj
YXNlIEtub3duSW50MzJVc2U6CiAgICAgICAgIG91dC5wcmludCgiS25vd25JbnQzMiIpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgi
SW50NDgiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgICAg
ICBvdXQucHJpbnQoIlJlYWxOdW1iZXIiKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAgZW51bSBVc2VLaW5kIHsKICAgICBVbnR5cGVkVXNlLAogICAgIEludDMyVXNlLAog
ICAgIEtub3duSW50MzJVc2UsCisgICAgTWFjaGluZUludFVzZSwKICAgICBSZWFsTnVtYmVyVXNl
LAogICAgIE51bWJlclVzZSwKICAgICBLbm93bk51bWJlclVzZSwKQEAgLTY2LDYgKzY3LDggQEAg
QUxXQVlTX0lOTElORSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRgogICAgIGNhc2UgSW50MzJV
c2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAgICAgICByZXR1cm4gU3BlY0ludDMyOwor
ICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5lSW50Owog
ICAgIGNhc2UgUmVhbE51bWJlclVzZToKICAgICAgICAgcmV0dXJuIFNwZWNSZWFsTnVtYmVyOwog
ICAgIGNhc2UgTnVtYmVyVXNlOgpAQCAtMTI1LDYgKzEyOCw3IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBpc051bWVyaWNhbChVc2VLaW5kIGsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIElu
dDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6
CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2Ug
S25vd25OdW1iZXJVc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVl
U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bHVlU291cmNlLmNwcAkocmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAg
dm9pZCBWYWx1ZVNvdXJjZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogICAgIGNhc2UgSW50MzJJ
bkpTU3RhY2s6CiAgICAgICAgIG91dC5wcmludCgiSW50MzIiKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAgb3V0LnByaW50KCJJbnQ0OCIpOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAgIG91dC5wcmludCgi
Q2VsbCIpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsdWVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhbHVlU291cmNlLmgJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBA
QCBlbnVtIFZhbHVlU291cmNlS2luZCB7CiAgICAgU291cmNlTm90U2V0LAogICAgIFZhbHVlSW5K
U1N0YWNrLAogICAgIEludDMySW5KU1N0YWNrLAorICAgIEludDQ4SW5KU1N0YWNrLAogICAgIENl
bGxJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkluSlNTdGFjaywKICAgICBEb3VibGVJbkpTU3RhY2ss
CkBAIC01Niw2ICs1Nyw4IEBAIHN0YXRpYyBpbmxpbmUgVmFsdWVTb3VyY2VLaW5kIGRhdGFGb3Jt
YXQKICAgICBzd2l0Y2ggKGRhdGFGb3JtYXQpIHsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoK
ICAgICAgICAgcmV0dXJuIEludDMySW5KU1N0YWNrOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4
OgorICAgICAgICByZXR1cm4gSW50NDhJbkpTU3RhY2s7CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91
YmxlOgogICAgICAgICByZXR1cm4gRG91YmxlSW5KU1N0YWNrOwogICAgIGNhc2UgRGF0YUZvcm1h
dEJvb2xlYW46CkBAIC03OSw2ICs4Miw4IEBAIHN0YXRpYyBpbmxpbmUgRGF0YUZvcm1hdCB2YWx1
ZVNvdXJjZUtpbmQKICAgICAgICAgcmV0dXJuIERhdGFGb3JtYXRKUzsKICAgICBjYXNlIEludDMy
SW5KU1N0YWNrOgogICAgICAgICByZXR1cm4gRGF0YUZvcm1hdEludDMyOworICAgIGNhc2UgSW50
NDhJbkpTU3RhY2s6CisgICAgICAgIHJldHVybiBEYXRhRm9ybWF0SW50NDg7CiAgICAgY2FzZSBD
ZWxsSW5KU1N0YWNrOgogICAgICAgICByZXR1cm4gRGF0YUZvcm1hdENlbGw7CiAgICAgY2FzZSBC
b29sZWFuSW5KU1N0YWNrOgpAQCAtMTM5LDYgKzE0NCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybiBWYWx1ZVNvdXJjZShEb3VibGVJbkpTU3RhY2spOwogICAgICAgICBjYXNlIEZsdXNo
ZWRJbnQzMjoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjayk7
CisgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291
cmNlKEludDQ4SW5KU1N0YWNrKTsKICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAgICAgICAg
ICAgIHJldHVybiBWYWx1ZVNvdXJjZShDZWxsSW5KU1N0YWNrKTsKICAgICAgICAgY2FzZSBGbHVz
aGVkQm9vbGVhbjoKQEAgLTE4MSw2ICsxODgsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50
MzJJbkpTU3RhY2s6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZEludDMyKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ0
OEluSlNTdGFjazoKKyAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5K
U1N0YWNrQXNVbmJveGVkSW50NDgoKTsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIENlbGxJ
bkpTU3RhY2s6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZENlbGwoKTsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCShyZXZpc2lvbiAxNTU3
NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsNiArMzMzLDkgQEAgcHVibGljOgogICAgICAgICBpZiAo
aXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIEZsdXNo
ZWRJbnQzMjsKICAgICAgICAgCisgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmICFvcGVyYW5k
SXNBcmd1bWVudChtX2xvY2FsKSAmJiBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgICAgIHJldHVybiBGbHVzaGVkSW50NDg7CisgICAgICAgIAogICAgICAgICBp
ZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gRmx1
c2hlZENlbGw7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDcgQEAg
cHVibGljOgogCiAgICAgaW50MzJfdCBhc0ludDMyKCkgY29uc3Q7CiAgICAgdWludDMyX3QgYXNV
SW50MzIoKSBjb25zdDsKKyAgICBpbnQ2NF90IGFzTWFjaGluZUludCgpIGNvbnN0OwogICAgIGRv
dWJsZSBhc0RvdWJsZSgpIGNvbnN0OwogICAgIGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CiAgICAg
ZG91YmxlIGFzTnVtYmVyKCkgY29uc3Q7CkBAIC0yMDIsNiArMjAzLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0
OwogICAgIGJvb2wgaXNCb29sZWFuKCkgY29uc3Q7CisgICAgYm9vbCBpc01hY2hpbmVJbnQoKSBj
b25zdDsKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0cmluZygpIGNv
bnN0OwogICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTU1
NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNDk0LDYgKzQ5NCwzNSBAQCBBTFdBWVNfSU5MSU5FIEpTQ2Vs
bCogSlNWYWx1ZTo6YXNDZWxsKCkgCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCitpbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc01hY2hpbmVJbnQoKSBjb25zdAoreworICAgIGlmIChpc0ludDMy
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICghaXNOdW1iZXIoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGRvdWJsZSBudW1iZXIgPSBhc0RvdWJsZSgpOworICAgIGlmIChu
dW1iZXIgIT0gbnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50NjRfdCBhc0lu
dDY0ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obnVtYmVyKTsKKyAgICBpZiAoYXNJbnQ2NCAhPSBu
dW1iZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWFzSW50NjQgJiYgc3RkOjpz
aWduYml0KG51bWJlcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXNJbnQ2NCA+
PSAoc3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgNDcpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKGFzSW50NjQgPCAtKHN0YXRpY19jYXN0PGludDY0X3Q+KDEpIDw8IDQ3KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgaW50NjRf
dCBKU1ZhbHVlOjphc01hY2hpbmVJbnQoKSBjb25zdAoreworICAgIEFTU0VSVChpc01hY2hpbmVJ
bnQoKSk7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4oYXNEb3VibGUoKSk7Cit9CisKIGlubGluZSBi
b29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkgJiYg
YXNDZWxsKCktPmlzU3RyaW5nKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211666</attachid>
            <date>2013-09-14 13:13:05 -0700</date>
            <delta_ts>2013-09-14 18:24:05 -0700</delta_ts>
            <desc>backend almost done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>75069</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAkocmV2
aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0Tm9uZSA9IDAsCiAgICAgRGF0YUZvcm1h
dEludDMyID0gMSwKLSAgICBEYXRhRm9ybWF0RG91YmxlID0gMiwKLSAgICBEYXRhRm9ybWF0Qm9v
bGVhbiA9IDMsCi0gICAgRGF0YUZvcm1hdENlbGwgPSA0LAotICAgIERhdGFGb3JtYXRTdG9yYWdl
ID0gNSwKKyAgICBEYXRhRm9ybWF0SW50NDggPSAyLCAvLyBJbnQ0OCdzIGFyZSBsZWZ0LXNoaWZ0
ZWQgYnkgMTYgYnkgZGVmYXVsdC4KKyAgICBEYXRhRm9ybWF0U3RyaWN0SW50NDggPSAzLCAvLyAi
U3RyaWN0IiBJbnQ0OCBtZWFucyBpdCdzIG5vdCBzaGlmdGVkLgorICAgIERhdGFGb3JtYXREb3Vi
bGUgPSA0LAorICAgIERhdGFGb3JtYXRCb29sZWFuID0gNSwKKyAgICBEYXRhRm9ybWF0Q2VsbCA9
IDYsCisgICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA3LAogICAgIERhdGFGb3JtYXRKUyA9IDgsCiAg
ICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAg
ICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwK
QEAgLTY0LDYgKzY2LDEwIEBAIGlubGluZSBjb25zdCBjaGFyKiBkYXRhRm9ybWF0VG9TdHJpbmco
RGEKICAgICAgICAgcmV0dXJuICJOb25lIjsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAg
ICAgICAgcmV0dXJuICJJbnQzMiI7CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAg
IHJldHVybiAiSW50NDgiOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1
cm4gIlN0cmljdEludDQ4IjsKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgIHJl
dHVybiAiRG91YmxlIjsKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZpc2lv
biAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDUsMTYgKzM0NSwxMSBAQCBTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhCiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CiAg
ICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVl
LmFzTnVtYmVyKCk7Ci0gICAgICAgIGlmIChudW1iZXIgPT0gbnVtYmVyKSB7Ci0gICAgICAgICAg
ICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIpOwotICAgICAg
ICAgICAgaWYgKGFzSW50NjQgPT0gbnVtYmVyICYmIChhc0ludDY0IHx8ICFzdGQ6OnNpZ25iaXQo
bnVtYmVyKSkKLSAgICAgICAgICAgICAgICAmJiBhc0ludDY0IDwgKHN0YXRpY19jYXN0PGludDY0
X3Q+KDEpIDw8IDQ3KQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPj0gLShzdGF0aWNfY2Fz
dDxpbnQ2NF90PigxKSA8PCA0NykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU3BlY0ludDQ4
QXNEb3VibGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU3BlY05vbkludEFz
RG91YmxlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFOOworICAgICAg
ICBpZiAobnVtYmVyICE9IG51bWJlcikKKyAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFO
OworICAgICAgICBpZiAodmFsdWUuaXNNYWNoaW5lSW50KCkpCisgICAgICAgICAgICByZXR1cm4g
U3BlY0ludDQ4QXNEb3VibGU7CisgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAg
ICAgfQogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
RnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5n
ICAKIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbE90aGVyICAgICAgICAgPSAw
eDAwMDQwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBhIHN1YmNsYXNz
IG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgogc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICA9IDB4MDAwN2ZmZmY7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
SW50MzIgICAgICAgICAgICAgPSAweDAwODAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50
MzIuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDQ4ICAgICAgICAgICAgID0g
MHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4LCBpdCdzIGluc2lkZSBhIGRv
dWJsZSwgYnV0IGl0IGRvZXNuJ3QgbmVlZCB0byBiZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjSW50NDggICAgICAgICAgICAgPSAweDAxMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRl
bHkgYW4gSW50NDggYW5kIHdlIGludGVuZCBpdCB0byB1bmJveCBpdC4KIHN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjTWFjaGluZUludCAgICAgICAgPSAweDAxODAwMDAwOyAvLyBJdCdz
IHNvbWV0aGluZyB0aGF0IHdlIGNhbiBkbyBtYWNoaW5lIGludCBhcml0aG1ldGljIG9uLgogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ0OEFzRG91YmxlICAgICA9IDB4MDIwMDAw
MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUu
CiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgID0gMHgw
MzgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IHNvbWUga2luZCBvZiBpbnRlZ2VyLgpAQCAtNzQs
OSArNzQsOSBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iCiBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY051bWJlciAgICAgICAgICAgID0gMHgwZjgwMDAw
MDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGUuCiBzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAgID0gMHgxMDAwMDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgQm9vbGVhbi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT3Ro
ZXIgICAgICAgICAgICAgPSAweDIwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm9uZSBvZiB0
aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAg
ICAgID0gMHgzZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgID0gMHgzZWZmZmZmZjsg
Ly8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4NDAwMDAw
MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZmZmZmZmZjsgLy8g
SXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0
aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNGdWxsVG9wICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkg
b2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgogCiB0eXBlZGVmIGJv
b2wgKCpTcGVjdWxhdGVkVHlwZUNoZWNrZXIpKFNwZWN1bGF0ZWRUeXBlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkocmV2aXNpb24g
MTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3Zlcnku
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDE1IEBAIGVudW0gVmFsdWVSZWNvdmVyeVRl
Y2huaXF1ZSB7CiAgICAgQWxyZWFkeUluSlNTdGFjaywKICAgICAvLyBJdCdzIGFscmVhZHkgaW4g
dGhlIHN0YWNrIGJ1dCB1bmJveGVkLgogICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQz
MiwKKyAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDgsCiAgICAgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZENlbGwsCiAgICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW4s
CiAgICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZSwKICAgICAvLyBJdCdzIGluIGEg
cmVnaXN0ZXIuCiAgICAgSW5HUFIsCiAgICAgVW5ib3hlZEludDMySW5HUFIsCisgICAgVW5ib3hl
ZEludDQ4SW5HUFIsCisgICAgVW5ib3hlZFN0cmljdEludDQ4SW5HUFIsCiAgICAgVW5ib3hlZEJv
b2xlYW5JbkdQUiwKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEluUGFpciwKQEAgLTU4LDYg
KzYxLDggQEAgZW51bSBWYWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBEaXNwbGFjZWRJbkpT
U3RhY2ssCiAgICAgLy8gSXQncyBpbiB0aGUgc3RhY2ssIGF0IGEgZGlmZmVyZW50IGxvY2F0aW9u
LCBhbmQgaXQncyB1bmJveGVkLgogICAgIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrLAorICAgIElu
dDQ4RGlzcGxhY2VkSW5KU1N0YWNrLAorICAgIFN0cmljdEludDQ4RGlzcGxhY2VkSW5KU1N0YWNr
LAogICAgIERvdWJsZURpc3BsYWNlZEluSlNTdGFjaywKICAgICBDZWxsRGlzcGxhY2VkSW5KU1N0
YWNrLAogICAgIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2ssCkBAIC05Myw2ICs5OCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBW
YWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCgpCisgICAgeworICAg
ICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0g
QWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKyAgICAKICAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0YWNrQXNV
bmJveGVkQ2VsbCgpCiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKQEAgLTEy
Myw2ICsxMzUsMTAgQEAgcHVibGljOgogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKICAg
ICAgICAgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKQogICAgICAgICAgICAgcmVz
dWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDMySW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRh
dGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5p
cXVlID0gVW5ib3hlZEludDQ4SW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0g
RGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0g
VW5ib3hlZFN0cmljdEludDQ4SW5HUFI7CiAgICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0g
RGF0YUZvcm1hdEJvb2xlYW4pCiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBVbmJv
eGVkQm9vbGVhbkluR1BSOwogICAgICAgICBlbHNlCkBAIC0xNjYsNiArMTgyLDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDMyRGlzcGxhY2VkSW5KU1N0
YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0SW50NDg6CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBJbnQ0OERpc3Bs
YWNlZEluSlNTdGFjazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OgorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5p
cXVlID0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIAogICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgICAg
ICByZXN1bHQubV90ZWNobmlxdWUgPSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTIyNyw2ICsyNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAo
dGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrOgogICAgICAgICBj
YXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAgICAgY2FzZSBBbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xl
YW46CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKQEAgLTIz
OCw3ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgZ3ByKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBJbkdQ
UiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBV
bmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQzMkluR1BSKTsKKyAgICAg
ICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRJ
bnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFuSW5HUFIgfHwgbV90ZWNo
bmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZEludDQ4SW5HUFIg
fHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFIpOwogICAgICAgICByZXR1
cm4gbV9zb3VyY2UuZ3ByOwogICAgIH0KICAgICAKQEAgLTI2NCw3ICsyODksNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpIGNvbnN0CiAgICAg
ewotICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1f
dGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IERv
dWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxhY2VkSW5K
U1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2spOworICAg
ICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5p
cXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IERvdWJsZURp
c3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNr
IHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlx
dWUgPT0gSW50NDhEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0gU3RyaWN0SW50
NDhEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gbV9zb3VyY2UudmlydHVhbFJl
ZzsKICAgICB9CiAgICAgCkBAIC0yODMsNiArMzA4LDkgQEAgcHVibGljOgogICAgICAgICBjYXNl
IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAgIG91dC5wcmludGYo
IihpbnQzMikiKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgICAgIG91dC5wcmludGYoIihpbnQ0OCkiKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWRDZWxsOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKGNlbGwpIik7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTI5OCw2ICszMjYsMTIgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQzMkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiaW50MzIoJSVyJWQpIiwgZ3ByKCkp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVW5ib3hlZEludDQ4SW5HUFI6Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCJpbnQ0OCglJXIlZCkiLCBncHIoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKKyAgICAgICAg
ICAgIG91dC5wcmludGYoInN0cmljdEludDQ4KCUlciVkKSIsIGdwcigpKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CiAgICAgICAgICAgICBv
dXQucHJpbnRmKCJib29sKCUlciVkKSIsIGdwcigpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MzE4LDYgKzM1MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2s6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIqaW50MzIoJWQpIiwgdmlydHVhbFJlZ2lz
dGVyKCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NDhEaXNwbGFjZWRJ
bkpTU3RhY2s6CisgICAgICAgICAgICBvdXQucHJpbnRmKCIqaW50NDgoJWQpIiwgdmlydHVhbFJl
Z2lzdGVyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RyaWN0SW50NDhE
aXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBvdXQucHJpbnRmKCIqc3RyaWN0SW50NDgo
JWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKmRv
dWJsZSglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
ci5oCShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgYm9vbCBuZWVkc1R5cGVDaGVjayhOb2RlKiBub2RlLCBTcGVjdWxhdGVk
VHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gpCiAgICAgewotICAgICAgICByZXR1cm4gZm9yTm9kZShu
b2RlKS5tX3R5cGUgJiB+dHlwZXNQYXNzZWRUaHJvdWdoOworICAgICAgICByZXR1cm4gIWZvck5v
ZGUobm9kZSkuaXNUeXBlKHR5cGVzUGFzc2VkVGhyb3VnaCk7CiAgICAgfQogICAgIAogICAgIGJv
b2wgbmVlZHNUeXBlQ2hlY2soRWRnZSBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRo
cm91Z2gpCkBAIC0xNjgsNyArMTY4LDcgQEAgcHJpdmF0ZToKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZmlsdGVyQnlUeXBlKE5vZGUqIG5vZGUsIEVkZ2UmIGVkZ2UsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUpCiAgICAgewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUoZWRnZSk7
Ci0gICAgICAgIGlmICh2YWx1ZS5tX3R5cGUgJiB+dHlwZSkgeworICAgICAgICBpZiAoIXZhbHVl
LmlzVHlwZSh0eXBlKSkgewogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAg
ICAgICAgICAgIGVkZ2Uuc2V0UHJvb2ZTdGF0dXMoTmVlZHNDaGVjayk7CiAgICAgICAgIH0gZWxz
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTAsNiArMzEwLDI2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIElu
dDQ4VG9Eb3VibGU6IHsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7
CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBjaGlsZCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4QXNE
b3VibGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50NDhB
c1ZhbHVlOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgeworICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNNYWNoaW5lSW50KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIFZhbHVlQWRkOgogICAg
IGNhc2UgQXJpdGhBZGQ6IHsKICAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkudmFsdWUoKTsKQEAgLTMyNCw2ICszNDQsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5j
YXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgp
OworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0lu
dDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUo
U3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgaWYg
KGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkK
ICAgICAgICAgICAgICAgICAmJiBpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUt
PmNoaWxkMigpKS5tX3R5cGUpKQpAQCAtMzU4LDYgKzM4NCwxMiBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1
bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5v
ZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBN
YWNoaW5lSW50VXNlOgorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0
OCk7CisgICAgICAgICAgICBpZiAoIWZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVj
SW50MzIpCisgICAgICAgICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlw
ZShTcGVjSW50MzIpKQorICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTM4MCw2ICs0MTIsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0
aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKG1f
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KSkKKyAg
ICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgaWYgKCFi
eXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQorICAg
ICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQwNCw2ICs0NDMsMTAgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAg
IHx8ICFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygp
KSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0
cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlclVzZToKICAgICAg
ICAgICAgIGlmIChpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5tX3R5cGUpCiAgICAgICAgICAgICAgICAgfHwgaXNSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9y
Tm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSkKQEAgLTgxMiw3ICs4NTUsNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAobm9kZS0+
c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CisgICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBcnJheTo6RmxvYXQzMkFycmF5OgogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNEb3VibGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFZhbHVlLmgJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDE2IEBA
IHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAg
IH0KICAgICAKKyAgICBib29sIGNvdWxkQmVUeXBlKFNwZWN1bGF0ZWRUeXBlIGRlc2lyZWRUeXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhKG1fdHlwZSAmIGRlc2lyZWRUeXBlKTsKKyAgICB9
CisgICAgCisgICAgYm9vbCBpc1R5cGUoU3BlY3VsYXRlZFR5cGUgZGVzaXJlZFR5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gIShtX3R5cGUgJiB+ZGVzaXJlZFR5cGUpOworICAgIH0KKyAgICAK
ICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0IFN0cnVjdHVyZVNldCYp
OwogICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJyYXlNb2RlcyhBcnJheU1vZGVz
IGFycmF5TW9kZXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShy
ZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDE1IEBAIGlubGluZSBib29sIGVuYWJsZUNv
bmN1cnJlbnRKSVQoKQogI2VuZGlmCiB9CiAKK2lubGluZSBib29sIGVuYWJsZUludDQ4KCkKK3sK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKK30KKwogZW51bSBTcGlsbFJlZ2lzdGVyc01vZGUgeyBOZWVkVG9TcGls
bCwgRG9udFNwaWxsIH07CiAKIGVudW0gTm9SZXN1bHRUYWcgeyBOb1Jlc3VsdCB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAx
NTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpIHsKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTk3LDYgKzIwMiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIG1fZ3JhcGgu
bmVnYXRlU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMDcsNiAr
MjE2LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgbV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVN
YWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNl
Pihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMzAwLDYgKzMxNCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAg
ICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1h
Y2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1h
Y2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBu
b2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4o
bm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzU1LDYgKzM3NCwxMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpCisg
ICAgICAgICAgICAgICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5j
aGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkp
KSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAt
MTM0NywxMiArMTM3Miw4NCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPFVzZUtpbmQgdXNlS2lu
ZD4KICAgICB2b2lkIGZpeEVkZ2UoRWRnZSYgZWRnZSwgU3BlY3VsYXRpb25EaXJlY3Rpb24gZGly
ZWN0aW9uID0gQmFja3dhcmRTcGVjdWxhdGlvbikKICAgICB7Ci0gICAgICAgIGlmIChpc0RvdWJs
ZSh1c2VLaW5kKSAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkg
ewotICAgICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoZWRnZSwgdXNlS2luZCwgZGly
ZWN0aW9uKTsKKyAgICAgICAgaWYgKGlzRG91YmxlKHVzZUtpbmQpKSB7CisgICAgICAgICAgICBp
ZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsKKyAgICAgICAg
ICAgICAgICBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShlZGdlLCB1c2VLaW5kLCBkaXJlY3Rpb24p
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFj
aGluZUludCgpKSB7CisgICAgICAgICAgICAgICAgLy8gTWFrZSBhbGwgZG91YmxlIHVzZXMgb2Yg
aW50NDggdmFsdWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDQ4VG9Eb3VibGUuCisgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIEludDQ4VG9WYWx1ZSAo
c2VlIGJlbG93KSBleGNlcHQgdGhhdAorICAgICAgICAgICAgICAgIC8vIEludDhUb0RvdWJsZSB3
aWxsIGNvbnZlcnQgaW50NDgncyB0aGF0IGZpdCBpbiBhbiBpbnQzMiBpbnRvIGEgZG91YmxlCisg
ICAgICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGNyZWF0ZSBhIGJveGVkIGlu
dDMyIGxpa2UgSW50NDhUb1ZhbHVlIGRvZXMuCisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8TWFjaGluZUludFVzZT4oZWRnZS5ub2RlKCkpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjSW50NDhBc0RvdWJsZSwgSW50NDhUb0RvdWJsZSwKKyAgICAgICAgICAgICAgICAgICAgbV9j
dXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTWFjaGluZUludFVzZSkp
OworICAgICAgICAgICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiB1c2VLaW5kICE9IE1hY2hpbmVJbnRVc2UKKyAgICAg
ICAgICAgICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSAmJiAhZWRnZS0+c2hv
dWxkU3BlY3VsYXRlSW50MzIoKSkgeworICAgICAgICAgICAgLy8gV2UgbWFrZSBhbGwgbm9uLWlu
dDQ4IHVzZXMgb2YgaW50NDggdmFsdWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDQ4VG9WYWx1
ZQorICAgICAgICAgICAgLy8gbm9kZSB0byBlbnN1cmUgdGhhdCB3ZSBoYW5kbGUgdGhpcyBwcm9w
ZXJseToKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAgICAg
ICAgICAgIC8vIGI6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAgICAvLyBjOiBDYWxsKC4u
LiwgQGEpCisgICAgICAgICAgICAvLyBkOiBBcml0aEFkZChAYSwgLi4uKQorICAgICAgICAgICAg
Ly8KKyAgICAgICAgICAgIC8vIFdpdGhvdXQgYW4gaW50ZXJtZWRpYXRlIG5vZGUgYW5kIGp1c3Qg
bGFiZWxpbmcgdGhlIHVzZXMsIHdlIHdpbGwgZ2V0OgorICAgICAgICAgICAgLy8KKyAgICAgICAg
ICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoSW50NDg6QGEs
IC4uLikKKyAgICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBVbnR5cGVkOkBhKQorICAgICAgICAg
ICAgLy8gZDogQXJpdGhBZGQoSW50NDg6QGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAg
ICAgICAvLyBBbmQgbm93IHRoZSBjLT5VbnR5cGVkOkBhIGVkZ2Ugd2lsbCBib3ggdGhlIHZhbHVl
IG9mIEBhIGludG8gYSBkb3VibGUuIFRoaXMKKyAgICAgICAgICAgIC8vIGlzIGJhZCwgYmVjYXVz
ZSBub3cgdGhlIGQtPkludDQ4OkBhIGVkZ2Ugd2lsbCBlaXRoZXIgaGF2ZSB0byBkbyBkb3VibGUt
dG8taW50CisgICAgICAgICAgICAvLyBjb252ZXJzaW9ucywgb3Igd2lsbCBoYXZlIHRvIE9TUiBl
eGl0IHVuY29uZGl0aW9uYWxseS4gQWx0ZXJuYXRpdmVseSB3ZSBjb3VsZAorICAgICAgICAgICAg
Ly8gaGF2ZSB0aGUgYy0+VW50eXBlZDpAYSBlZGdlIGJveCB0aGUgdmFsdWUgYnkgY29weWluZyBy
YXRoZXIgdGhhbiBpbi1wbGFjZS4KKyAgICAgICAgICAgIC8vIEJ1dCB0aGVzZSBib3hpbmdzIGFy
ZSBhbHNvIGNvc3RseSBzbyB0aGlzIHdvdWxkbid0IGJlIGdyZWF0LgorICAgICAgICAgICAgLy8K
KyAgICAgICAgICAgIC8vIFRoZSBzb2x1dGlvbiB3ZSB1c2UgaXMgdG8gYWx3YXlzIGhhdmUgbm9u
LUludDQ4IHVzZXMgb2YgcHJlZGljdGVkIEludDQ4J3MgdXNlCisgICAgICAgICAgICAvLyBhbiBp
bnRlcnZlbmluZyBJbnQ0OFRvVmFsdWUgbm9kZToKKyAgICAgICAgICAgIC8vCisgICAgICAgICAg
ICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDQ4OkBhLCAu
Li4pCisgICAgICAgICAgICAvLyB4OiBJbnQ0OFRvVmFsdWUoSW50NDg6QGEpCisgICAgICAgICAg
ICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAeCkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRk
KEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gTm90ZSB0aGF0
IGV2ZW4gaWYgd2UgaGFkIG11bHRpcGxlIG5vbi1pbnQ0OCB1c2VzIG9mIEBhLCB0aGUgbXVsdGlw
bGUKKyAgICAgICAgICAgIC8vIEludDQ4VG9WYWx1ZSdzIHdvdWxkIGdldCBDU0UnZCB0b2dldGhl
ci4gU28gdGhlIGJveGluZyB3b3VsZCBvbmx5IGhhcHBlbiBvbmNlLgorICAgICAgICAgICAgLy8g
QXQgdGhlIHNhbWUgdGltZSwgQGEgd291bGQgY29udGludWUgdG8gYmUgcmVwcmVzZW50ZWQgYXMg
YSBuYXRpdmUgaW50NDguCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQW4gYWx0ZXJu
YXRpdmUgd291bGQgaGF2ZSBiZWVuIHRvIGluc2VydCBUb05hdGl2ZUludDQ4IG5vZGVzIG9uIGlu
dDQ4IHVzZXMgb2YKKyAgICAgICAgICAgIC8vIGludDQ4J3MuIFRoaXMgd291bGQgaGF2ZSBoYW5k
bGVkIHRoZSBhYm92ZSBleGFtcGxlIGJ1dCB3b3VsZCBmYWxsIG92ZXIgZm9yOgorICAgICAgICAg
ICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8gYjogQ2Fs
bCguLi4sIEBhKQorICAgICAgICAgICAgLy8gYzogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAg
ICAgIC8vCisgICAgICAgICAgICAvLyBCdXQgdGhlIHNvbHV0aW9uIHdlIHVzZSBoYW5kbGVzIHRo
ZSBhYm92ZSBncmFjZWZ1bGx5LgorICAgICAgICAgICAgCisgICAgICAgICAgICBvYnNlcnZlVXNl
S2luZE9uTm9kZTxNYWNoaW5lSW50VXNlPihlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAg
ICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0OCwgSW50NDhUb1ZhbHVlLAorICAg
ICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCks
IE1hY2hpbmVJbnRVc2UpKTsKKyAgICAgICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2lu
ZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG9i
c2VydmVVc2VLaW5kT25Ob2RlPHVzZUtpbmQ+KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgCiAgICAg
ICAgIGVkZ2Uuc2V0VXNlS2luZCh1c2VLaW5kKTsKICAgICB9CiAgICAgCkBAIC0xMzc4LDcgKzE0
NzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoRWRnZSYg
ZWRnZSwgVXNlS2luZCB1c2VLaW5kID0gTnVtYmVyVXNlLCBTcGVjdWxhdGlvbkRpcmVjdGlvbiBk
aXJlY3Rpb24gPSBCYWNrd2FyZFNwZWN1bGF0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogcmVz
dWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBTcGVjSW50NDgsIEludDMyVG9Eb3VibGUsCisgICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY0ludDQ4QXNEb3VibGUsIEludDMyVG9Eb3VibGUsCiAgICAgICAgICAgICBtX2N1cnJl
bnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKICAgICAg
ICAgaWYgKGRpcmVjdGlvbiA9PSBGb3J3YXJkU3BlY3VsYXRpb24pCiAgICAgICAgICAgICByZXN1
bHQtPm1lcmdlRmxhZ3MoTm9kZUV4aXRzRm9yd2FyZCk7CkBAIC0xMzkyLDYgKzE0ODksMTcgQEAg
cHJpdmF0ZToKICAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsKICAgICB9CiAg
ICAgCisgICAgLy8gV2UgbWFrZSBhbGwgaW50NDggZWRnZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUg
QXNOYXRpdmVJbnQ0OCBub2RlIHRvIGVuc3VyZQorICAgIC8vIHRoYXQgd2UgaGFuZGxlIHRoaXMg
cHJvcGVybHk6CisgICAgdGVtcGxhdGU8VXNlS2luZCB1c2VLaW5kPgorICAgIHZvaWQgZml4SW50
NDhFZGdlKEVkZ2UmIGVkZ2UpCisgICAgeworICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0
OCwgQXNOYXRpdmVJbnQ0OCwKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4s
IEVkZ2UoZWRnZS5ub2RlKCksIHVzZUtpbmQpKTsKKyAgICAgICAgZWRnZSA9IGVkZ2UocmVzdWx0
LCBNYWNoaW5lSW50VXNlKTsKKyAgICB9CisKICAgICB2b2lkIHRydW5jYXRlQ29uc3RhbnRUb0lu
dDMyKEVkZ2UmIGVkZ2UpCiAgICAgewogICAgICAgICBOb2RlKiBvbGROb2RlID0gZWRnZS5ub2Rl
KCk7CkBAIC0xNDM0LDEzICsxNTQyLDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBhdHRlbXB0VG9N
YWtlSW50ZWdlckFkZChOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgQWRkU3BlY3VsYXRpb25N
b2RlIG1vZGUgPSBtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShub2RlKTsKLSAgICAgICAgaWYg
KG1vZGUgPT0gRG9udFNwZWN1bGF0ZUludDMyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAobW9kZSAhPSBEb250U3BlY3VsYXRlSW50MzIpIHsKKyAgICAgICAgICAgIHRy
dW5jYXRlQ29uc3RhbnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9kZSk7CisgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgdHJ1bmNhdGVDb25zdGFudHNJZk5lY2Vzc2FyeShub2RlLCBt
b2RlKTsKLSAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiBtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0
ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBib29sIGF0dGVtcHRU
b01ha2VHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw2ICs0MSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBGbHUK
ICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgb3V0LnByaW50KCJGbHVzaGVkSW50MzIi
KTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICBvdXQu
cHJpbnQoIkZsdXNoZWRJbnQzMiIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGbHVzaGVk
RG91YmxlOgogICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWREb3VibGUiKTsKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAko
cmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZv
cm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIGVudW0gRmx1c2hGb3JtYXQgewogICAgIERlYWRGbHVzaCwKICAgICBG
bHVzaGVkSW50MzIsCisgICAgRmx1c2hlZEludDQ4LAogICAgIEZsdXNoZWREb3VibGUsCiAgICAg
Rmx1c2hlZENlbGwsCiAgICAgRmx1c2hlZEJvb2xlYW4sCkBAIC01NSw2ICs1Niw4IEBAIGlubGlu
ZSBOb2RlRmxhZ3MgcmVzdWx0Rm9yKEZsdXNoRm9ybWF0IGYKICAgICAgICAgcmV0dXJuIE5vZGVS
ZXN1bHRKUzsKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1
bHRJbnQzMjsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgcmV0dXJuIE5vZGVSZXN1
bHRJbnQ0ODsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAgIHJldHVybiBOb2RlUmVz
dWx0TnVtYmVyOwogICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CkBAIC03NCw2ICs3Nyw4IEBAIGlu
bGluZSBVc2VLaW5kIHVzZUtpbmRGb3IoRmx1c2hGb3JtYXQgZm8KICAgICAgICAgcmV0dXJuIENl
bGxVc2U7CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVybiBJbnQzMlVzZTsK
KyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgcmV0dXJuIE1hY2hpbmVJbnRVc2U7CiAg
ICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICByZXR1cm4gTnVtYmVyVXNlOwogICAgIGNh
c2UgRmx1c2hlZEJvb2xlYW46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dl
bmVyYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHZW5lcmF0aW9uSW5mby5oCShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2
LDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGluaXRHUFIobm9kZSwgdXNlQ291bnQsIGdw
ciwgRGF0YUZvcm1hdEludDMyKTsKICAgICB9CisgICAgdm9pZCBpbml0SW50NDgoTm9kZSogbm9k
ZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBpbml0R1BS
KG5vZGUsIHVzZUNvdW50LCBncHIsIERhdGFGb3JtYXRJbnQ0OCk7CisgICAgfQorICAgIHZvaWQg
aW5pdFN0cmljdEludDQ4KE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgcmVn
KQorICAgIHsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBEYXRhRm9ybWF0
U3RyaWN0SW50NDgpOworICAgIH0KICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgaW5pdEpT
VmFsdWUoTm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyBncHIsIERhdGFGb3Jt
YXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTKQogICAgIHsKQEAgLTE4Nyw2ICsxOTUsMTEgQEAgcHVi
bGljOgogICAgIC8vIEdldCB0aGUgZm9ybWF0IG9mIHRoZSB2YWx1ZSBhcyBpdCBpcyBzcGlsbGVk
IGluIHRoZSBKU1N0YWNrIChvciAnbm9uZScpLgogICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQo
KSB7IHJldHVybiBtX3NwaWxsRm9ybWF0OyB9CiAgICAgCisgICAgYm9vbCBpc0Zvcm1hdChEYXRh
Rm9ybWF0IGV4cGVjdGVkRm9ybWF0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9y
bWF0KCkgPT0gZXhwZWN0ZWRGb3JtYXQgfHwgc3BpbGxGb3JtYXQoKSA9PSBleHBlY3RlZEZvcm1h
dDsKKyAgICB9CisgICAgCiAgICAgYm9vbCBpc0pTRm9ybWF0KERhdGFGb3JtYXQgZXhwZWN0ZWRG
b3JtYXQpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjppc0pTRm9ybWF0KHJlZ2lzdGVyRm9y
bWF0KCksIGV4cGVjdGVkRm9ybWF0KSB8fCBKU0M6OmlzSlNGb3JtYXQoc3BpbGxGb3JtYXQoKSwg
ZXhwZWN0ZWRGb3JtYXQpOwpAQCAtMTk3LDYgKzIxMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBpc0pTRm9ybWF0KERhdGFGb3JtYXRKU0ludDMyKTsKICAgICB9CiAgICAgCisgICAgYm9v
bCBpc0ludDQ4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0Zvcm1hdChEYXRhRm9ybWF0SW50
NDgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzU3RyaWN0SW50NDgoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGlzRm9ybWF0KERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgfQorICAgIAog
ICAgIGJvb2wgaXNKU0RvdWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gaXNKU0Zvcm1hdChE
YXRhRm9ybWF0SlNEb3VibGUpOwpAQCAtMzE0LDYgKzMzNywxNCBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SW50MzIpOwogICAgIH0KKyAg
ICB2b2lkIGZpbGxJbnQ0OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIp
CisgICAgeworICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SW50NDgpOwor
ICAgIH0KKyAgICB2b2lkIGZpbGxTdHJpY3RJbnQ0OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJl
YW0sIEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRh
Rm9ybWF0U3RyaWN0SW50NDgpOworICAgIH0KICAgICB2b2lkIGZpbGxCb29sZWFuKFZhcmlhYmxl
RXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwcikKICAgICB7CiAgICAgICAgIGZpbGxHUFIo
c3RyZWFtLCBncHIsIERhdGFGb3JtYXRCb29sZWFuKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEs
OSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5vZGVSZXN1bHRK
UyAgICAgICAgICAgICAgICAgICAgIDB4MDAwMQogI2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAg
ICAgICAgICAgICAgICAweDAwMDIKICNkZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAg
ICAgICAgMHgwMDAzCi0jZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4
MDAwNAotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDUKKyNk
ZWZpbmUgTm9kZVJlc3VsdEludDQ4ICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIE5v
ZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0
U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDYKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAjZGVmaW5lIE5vZGVNdXN0R2VuZXJhdGUgICAgICAgICAgICAgICAgIDB4MDAwOCAv
LyBzZXQgb24gbm9kZXMgdGhhdCBoYXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlh
bGx5IGJlIHJlbW92ZWQgYnkgRENFLgogI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAg
ICAgICAgICAweDAwMTAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSW50MzJUb0RvdWJsZSwgTm9kZVJlc3VsdE51
bWJlcikgXAogICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRlIHRoYXQgYSBkb3VibGUgdmFsdWUgaXMg
YWN0dWFsbHkgYW4gaW50ZWdlci4gKi9cCiAgICAgbWFjcm8oRG91YmxlQXNJbnQzMiwgTm9kZVJl
c3VsdEludDMyIHwgTm9kZUV4aXRzRm9yd2FyZCkgXAorICAgIC8qIFVzZWQgdG8gc2VwYXJhdGUg
cmVwcmVzZW50YXRpb24gYW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gb2YgSW50NDgncyByZXByZXNl
bnRlZCAqL1wKKyAgICAvKiBhcyB2YWx1ZXMuICovXAorICAgIG1hY3JvKEludDQ4VG9WYWx1ZSwg
Tm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oSW50NDhUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJl
cikgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAqL1wK
ICAgICBtYWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlciB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKQEAgLTMxNyw2ICszMjEsOCBAQCBpbmxpbmUgYm9vbCBuZWVkc09TUkZvcndhcmRSZXdpcmlu
ZyhOb2RlCiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgY2FzZSBVSW50MzJUb051bWJlcjoK
ICAgICBjYXNlIERvdWJsZUFzSW50MzI6CisgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CisgICAgY2Fz
ZSBJbnQ0OFRvRG91YmxlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OCwxMCArMzY4LDIwIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEdldEJ5VmFsOiB7CisgICAgICAgICAgICBp
ZiAoIW5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBpZiAoIW5vZGUtPnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKQogICAgICAgICAgICAgICAgIHx8IG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKSkKICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsKLSAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVVaW50MzJB
cnJheSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUludDMy
KCkpCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJ
bnQzMik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NDgpOworICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS0+Z2V0SGVhcFByZWRp
Y3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgJ
KHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50
UmVnaXN0ZXJTYXZlUGxhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIGVudW0g
U2lsZW50U3BpbGxBY3Rpb24gewogZW51bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBEb05vdGhp
bmdGb3JGaWxsLAogICAgIFNldEludDMyQ29uc3RhbnQsCisgICAgU2V0SW50NDhDb25zdGFudCwK
KyAgICBTZXRTdHJpY3RJbnQ0OENvbnN0YW50LAogICAgIFNldEJvb2xlYW5Db25zdGFudCwKICAg
ICBTZXRDZWxsQ29uc3RhbnQsCiAgICAgU2V0VHJ1c3RlZEpTQ29uc3RhbnQsCkBAIC02MSw4ICs2
MywxMiBAQCBlbnVtIFNpbGVudEZpbGxBY3Rpb24gewogICAgIExvYWQzMlRhZywKICAgICBMb2Fk
MzJQYXlsb2FkLAogICAgIExvYWQzMlBheWxvYWRCb3hJbnQsCisgICAgTG9hZDMyUGF5bG9hZENv
bnZlcnRUb0ludDQ4LAorICAgIExvYWQzMlBheWxvYWRTaWduRXh0ZW5kLAogICAgIExvYWRQdHIs
CiAgICAgTG9hZDY0LAorICAgIExvYWQ2NFNoaWZ0UmlnaHQxNiwKKyAgICBMb2FkNjRTaGlmdExl
ZnQxNiwKICAgICBMb2FkRG91YmxlLAogICAgIExvYWREb3VibGVCb3hEb3VibGUsCiAgICAgTG9h
ZEpTVW5ib3hEb3VibGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNiArNDAsNDAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Ym94SW50NDgoR1BSUmVnIHNvdXJj
ZUdQUiwgR1BSUmVnIHRhcmdldEdQUiwgRGF0YUZvcm1hdCBmb3JtYXQpCit7CisgICAgR1BSUmVn
IHRlbXBHUFI7CisgICAgaWYgKHNvdXJjZUdQUiA9PSB0YXJnZXRHUFIpCisgICAgICAgIHRlbXBH
UFIgPSBhbGxvY2F0ZSgpOworICAgIGVsc2UKKyAgICAgICAgdGVtcEdQUiA9IHRhcmdldEdQUjsK
KyAgICAKKyAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKKworICAgIGlmIChmb3JtYXQg
PT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIo
MTYpLCBzb3VyY2VHUFIpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKGZvcm1hdCA9PSBEYXRh
Rm9ybWF0U3RyaWN0SW50NDgpOworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNvdXJjZUdQ
UiwgdGVtcEdQUik7CisgICAgCisgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNEb3VibGUgPSBtX2pp
dC5icmFuY2g2NCgKKyAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzb3VyY2VHUFIsIHRl
bXBHUFIpOworICAgIAorICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHNvdXJjZUdQUiwgdGFy
Z2V0R1BSKTsKKyAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwg
dGFyZ2V0R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwor
ICAgIAorICAgIGlzRG91YmxlLmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5jb252ZXJ0SW50NjRU
b0RvdWJsZShzb3VyY2VHUFIsIGZwcik7CisgICAgYm94RG91YmxlKGZwciwgdGFyZ2V0R1BSKTsK
KyAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAKKyAgICBpZiAodGVtcEdQUiAhPSB0YXJnZXRH
UFIpCisgICAgICAgIHVubG9jayh0ZW1wR1BSKTsKKyAgICAKKyAgICB1bmxvY2soZnByKTsKK30K
KwogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UpCiB7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3Rlcigp
OwpAQCAtNjksMTEgKzEwMywyMyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVl
KEVkZ2UgCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9y
bWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwogICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIs
IHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgaWYgKHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikgeworICAgICAgICAgICAgc3dpdGNoIChzcGls
bEZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6IHsKICAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgZ3ByKTsKICAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlciwgZ3ByKTsKICAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFG
b3JtYXRKU0ludDMyOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGF0
YUZvcm1hdEludDQ4OgorICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsK
KyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBib3hJbnQ0OChncHIsIGdwciwg
c3BpbGxGb3JtYXQpOworICAgICAgICAgICAgICAgIHNwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdEpT
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKICAgICAgICAgICAg
ICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBOZWVkIHRvIGJveCB0aGUgZG91YmxlLCBzaW5jZSB3ZSB3YW50IGEgSlNWYWx1
ZS4KQEAgLTgxLDYgKzEyNyw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUo
RWRnZSAKICAgICAgICAgICAgICAgICAgICAgc3BpbGxGb3JtYXQgPSBEYXRhRm9ybWF0SlNEb3Vi
bGU7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFt
LCBncHIsIHNwaWxsRm9ybWF0KTsKICAgICAgICAgfQpAQCAtMTEzLDYgKzE2MCwxNiBAQCBHUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAKICAgICAgICAgcmV0dXJuIGdw
cjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2Ug
RGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigp
OworICAgICAgICBsb2NrKGdwcik7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBhbGxvY2F0
ZSgpOworICAgICAgICBib3hJbnQ0OChncHIsIHJlc3VsdEdQUiwgaW5mby5yZWdpc3RlckZvcm1h
dCgpKTsKKyAgICAgICAgdW5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiByZXN1bHRHUFI7Cisg
ICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKICAgICAgICAgLy8gTm8gcmV0YWcgcmVx
dWlyZWQgb24gSlNWQUxVRTY0IQpAQCAtNzY4LDcgKzgyNSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgCiAgICAgICAgIERhdGFGb3JtYXQgc3Bp
bGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAgICAgICAgIAotICAgICAgICBSRUxFQVNF
X0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERh
dGFGb3JtYXRJbnQzMik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERh
dGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyIHx8IHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0
SW50NDgpOwogICAgICAgICAKICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdp
c3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwogICAgICAgICAKQEAgLTc4OSw2ICs4NDYsMjUgQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICAgICAgcmV0
dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEpTSW50MzI7CiAgICAgICAgICAgICByZXR1cm4gZ3ByOwog
ICAgICAgICB9CisgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwg
c3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICAvLyBD
YW4gb25seSBoYXBwZW4gaWYgd2UndmUgYWxyZWFkeSBwcm92ZWQgdGhhdCB0aGUgdmFsdWUgaXMg
YW4gaW50MzIuCisgICAgICAgICAgICAvLyBUaGF0J3MgYmVjYXVzZSBpZiBhIHZhbHVlIG9yaWdp
bmF0ZWQgYXMgYSBKU1ZhbHVlIHRoZW4gd2Ugd291bGQKKyAgICAgICAgICAgIC8vIHNwZWN1bGF0
ZSB0aGF0IGl0J3MgYW4gaW50MzIgYmVmb3JlIHJlcHJlc2VudGluZyBpdCBhcyBhbiBpbnQ0OC4K
KyAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgd2Uga25vd2luZ2x5IHByb2R1Y2VkIGFuIGlu
dDQ4LCB0aGVuIHdlIHdvdWxkIGJlCisgICAgICAgICAgICAvLyBib3hpbmcgaXQgaW50byBhIHZh
bHVlIHVzaW5nIEludDQ4VG9WYWx1ZS4gVGhpcyBhc3NlcnRpb24gaXMgdmFsaWQKKyAgICAgICAg
ICAgIC8vIG9ubHkgYmVjYXVzZSBJbnQ0OCBpcyBzb21ldGhpbmcgdGhhdCB3ZSBpbnRyb2R1Y2Ug
YXQgcHJlZGljdGlvbiB0aW1lLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYg
flNwZWNJbnQzMikpOworICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRT
dHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVz
dGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRv
UHRyKGdwciwgZ3ByKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluZm8uZmlsbEludDMy
KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJ
bnQzMjsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KICAgICAgICAgbV9qaXQu
bG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAK
ICAgICAgICAgLy8gRmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgpAQCAtNzk3LDYg
Kzg3Myw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICB9
CiAKICAgICBjYXNlIERhdGFGb3JtYXRKUzogeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5
cGUgJiBTcGVjSW50NDgpKTsKICAgICAgICAgLy8gQ2hlY2sgdGhlIHZhbHVlIGlzIGFuIGludGVn
ZXIuCiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dwcnMubG9j
ayhncHIpOwpAQCAtODQzLDYgKzkyMCwyNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVJbnQzCiAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKICAg
ICAgICAgcmV0dXJuIGdwcjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDQ4OiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIH5TcGVjSW50MzIp
KTsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2Nr
KGdwcik7CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwciwgZ3ByKTsKKyAgICAg
ICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOworICAgICAgICBpbmZvLmZpbGxJbnQz
MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorICAgICAgICAK
KyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODogeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5
cGUgJiB+U3BlY0ludDMyKSk7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAg
ICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1t
MzIoMTYpLCBncHIpOworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihncHIpOworICAg
ICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CisgICAgICAgIGluZm8uZmlsbElu
dDMyKCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CiAKICAgICBj
YXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKQEAg
LTg4NSw2ICs5ODMsMTQ4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUlu
dDMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVJbnQ0OChFZGdlIGVkZ2UsIERhdGFGb3JtYXQgZGVzaXJlZEZvcm1hdCkKK3sKKyAg
ICBBU1NFUlQoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgZGVzaXJlZEZvcm1h
dCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0g
bV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOworICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5t
X3R5cGU7CisgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNNYWNoaW5lSW50KTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lz
dGVyKCk7CisgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0
dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKworICAgIHN3aXRjaCAoaW5mby5yZWdpc3Rl
ckZvcm1hdCgpKSB7CisgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogeworICAgICAgICBpZiAoKGVk
Z2UtPmhhc0NvbnN0YW50KCkgJiYgIXZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01h
Y2hpbmVJbnQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsK
KyAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKworICAgICAg
ICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IHZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCh2YWx1
ZS5pc01hY2hpbmVJbnQoKSk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVh
bFJlZ2lzdGVyLCBTcGlsbE9yZGVyQ29uc3RhbnQpOworICAgICAgICAgICAgaW50NjRfdCB2YWx1
ZSA9IHZhbHVlLmFzTWFjaGluZUludCgpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQg
PT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgMTY7
CisgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NCh2YWx1ZSksIGdw
cik7CisgICAgICAgICAgICBpbmZvLmZpbGxHUFIoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3Jt
YXQpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKKyAgICAgICAg
CisgICAgICAgIC8vIEZJWE1FISEhCisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVCgo
c3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJ
bnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAgICAgCisgICAgICAgIG1fZ3Bycy5yZXRhaW4o
Z3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SlNJbnQzMiB8fCBzcGlsbEZvcm1hdCA9
PSBEYXRhRm9ybWF0SW50MzIpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGtub3cgdGhpcyB3YXMg
c3BpbGxlZCBhcyBhbiBpbnRlZ2VyIHdlIGNhbiBmaWxsIHdpdGhvdXQgY2hlY2tpbmcuCisgICAg
ICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGdwciwgZ3By
KTsKKyAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0
OCkgeworICAgICAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KGdwcik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faml0Lmxz
aGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0
OChncHIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICBpZiAo
c3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3Jt
YXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICBpZiAoZGVzaXJl
ZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgICAgICBpZiAo
c3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgICAgICAgICBtX2pp
dC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAgICAgICAgIGluZm8u
ZmlsbFN0cmljdEludDQ4KGdwcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0
SW50NDgpCisgICAgICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwg
Z3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEludDQ4KGdwcik7CisgICAgICAgICAgICByZXR1
cm4gZ3ByOworICAgICAgICB9CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworCisgICAgICAgIC8vIEZpbGwgYXMgSlNW
YWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJl
YW0sIGdwciwgRGF0YUZvcm1hdEpTSW50MzIpOworICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7
CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKKyAgICAgICAgLy8gQ2hlY2sgdGhl
IHZhbHVlIGlzIGFuIGludGVnZXIuIE5vdGUgdGhhdCB3ZSB3b3VsZCAqbGlrZSogdG8gdW5ib3gg
YW4gSW50NDgKKyAgICAgICAgLy8gYXQgdGhpcyBwb2ludCBidXQgdGhpcyBpcyB0b28gY29zdGx5
LiBXZSBvbmx5ICpwcm92ZSogdGhhdCB0aGlzIGlzIGFuIEludDQ4CisgICAgICAgIC8vIGV2ZW4g
dGhvdWdoIHdlIGNoZWNrIGlmIGl0J3MgYW4gaW50MzIuCisgICAgICAgIEdQUlJlZyBncHIgPSBp
bmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBpZiAodHlwZSAm
IH5TcGVjSW50MzIpCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywg
Z3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgbV9qaXQuc2ln
bkV4dGVuZDMyVG9QdHIoZ3ByKTsKKyAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZv
cm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICBmaWxsU3RyaWN0SW50NDgoZ3ByKTsKKyAg
ICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgbV9qaXQubHNoaWZ0NjQo
VHJ1c3RlZEltbTY0KDE2KSwgZ3ByKTsKKyAgICAgICAgZmlsbEludDQ4KGdwcik7CisgICAgICAg
IHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CisgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNJbnQzMjogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsK
KyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9Q
dHIoZ3ByKTsKKyAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdElu
dDQ4KSB7CisgICAgICAgICAgICBmaWxsU3RyaWN0SW50NDgoZ3ByKTsKKyAgICAgICAgICAgIHJl
dHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTY0
KDE2KSwgZ3ByKTsKKyAgICAgICAgZmlsbEludDQ4KGdwcik7CisgICAgICAgIHJldHVybiBncHI7
CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAg
IGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgICAg
IHJldHVybiBncHI7CisgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdw
cik7CisgICAgICAgIGZpbGxTdHJpY3RJbnQ0OChncHIpOworICAgICAgICByZXR1cm4gZ3ByOwor
ICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAg
IGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIHJldHVy
biBncHI7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7Cisg
ICAgICAgIGZpbGxJbnQ0OChncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAg
IGNhc2UgRGF0YUZvcm1hdERvdWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKKyAg
ICBjYXNlIERhdGFGb3JtYXRDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CisgICAg
Y2FzZSBEYXRhRm9ybWF0SlNDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogewor
ICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgMCk7CisgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAg
ICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0U3Rv
cmFnZToKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CisgICAgfQorfQorCiBGUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSBlZGdlKQogewogI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKQEAgLTk0NSw2ICsxMTg1LDI0IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAgICAgIHVubG9jayhncHIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERhdGFGb3JtYXRJ
bnQ0ODogeworICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAgICAgICAg
ICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7
CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVh
bFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEludDQ4KGdwcik7CisgICAg
ICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAg
ICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihn
cHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAgICAgICAgbV9q
aXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7
CisgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OChncHIpOworICAgICAgICAgICAgdW5s
b2NrKGdwcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKQEAgLTEwMDksNiArMTI2
NywyNCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAg
IG1fZ3Bycy51bmxvY2soZ3ByKTsKICAgICAgICAgcmV0dXJuIGZwcjsKICAgICB9CisgICAgICAg
IAorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZv
LmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBtX2ppdC5yc2hpZnQz
MihUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OCgq
bV9zdHJlYW0sIGdwcik7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKKyAgICAgICAgLy8g
ZmFsbCB0aHJvdWdoLgorICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0
SW50NDg6IHsKKyAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CisgICAgICAgIEdQ
UlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAg
ICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShncHIsIGZwcik7CisgICAgICAgIG1fZ3Bycy51
bmxvY2soZ3ByKTsKKyAgICAgICAgcmV0dXJuIGZwcjsKKyAgICB9CiAKICAgICAvLyBVbmJveCB0
aGUgZG91YmxlCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKQEAgLTExMTEsNyArMTM4
Nyw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICBjYXNl
IERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNCb29sZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46IHsKKyAg
ICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAg
IGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0
aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0
dXJuIGFsbG9jYXRlKCk7CiAgICAgfQpAQCAtMTE5NCw3ICsxNDcyLDkgQEAgR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91Ymxl
OgogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6
Ci0gICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDogeworICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Cisg
ICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6
IHsKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
cmV2aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsOSBAQCBTaWxlbnRSZWdp
c3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgICAgICBzcGlsbEFjdGlvbiA9
IFN0b3JlMzJQYXlsb2FkOwogICAgICAgICBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRh
Rm9ybWF0Q2VsbCB8fCByZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RvcmFnZSkKICAgICAg
ICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmVQdHI7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBl
bHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgcmVnaXN0ZXJGb3Jt
YXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICBzcGlsbEFjdGlvbiA9
IFN0b3JlNjQ7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJG
b3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZTY0
OwogICAgICAgICB9CkBAIC0zODYsNiArMzg4LDQwIEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4g
U3BlY3VsYXRpdmVKSVQ6OnMKICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFG
b3JtYXRTdG9yYWdlKSB7CiAgICAgICAgIEFTU0VSVChpbmZvLmdwcigpID09IHNvdXJjZSk7CiAg
ICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkUHRyOworICAgIH0gZWxzZSBpZiAocmVnaXN0ZXJGb3Jt
YXQgPT0gRGF0YUZvcm1hdEludDQ4KSB7CisgICAgICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgp
KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldEludDQ4Q29uc3RhbnQ7CisgICAgICAgIGVs
c2UgaWYgKGlzSlNJbnQzMihpbmZvLnNwaWxsRm9ybWF0KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0SlMpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDMyUGF5bG9h
ZENvbnZlcnRUb0ludDQ4OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0g
RGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAg
ICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkK
KyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlmdExlZnQxNjsKKyAgICAgICAgZWxz
ZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXROb25lKQorICAgICAgICAgICAg
ZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBTaG91
bGQgbmV2ZXIgaGFwcGVuLiBBbnl0aGluZyB0aGF0IHF1YWxpZmllcyBhcyBhbiBpbnQzMiB3aWxs
IG5ldmVyCisgICAgICAgICAgICAvLyBiZSB0dXJuZWQgaW50byBhIGNlbGwgKGltbWVkaWF0ZSBz
cGVjIGZhaWwpIG9yIGEgZG91YmxlICh0by1kb3VibGUKKyAgICAgICAgICAgIC8vIGNvbnZlcnNp
b25zIGludm9sdmUgYSBzZXBhcmF0ZSBub2RlKS4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0
ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50
KCkpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0U3RyaWN0SW50NDhDb25zdGFudDsKKyAg
ICAgICAgZWxzZSBpZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5mby5zcGls
bEZvcm1hdCgpID09IERhdGFGb3JtYXRKUykKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2Fk
MzJQYXlsb2FkU2lnbkV4dGVuZDsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgp
ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlm
dFJpZ2h0MTY7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0U3RyaWN0SW50NDgpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAg
ICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCisgICAgICAg
ICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8v
IFNob3VsZCBuZXZlciBoYXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFuIGludDMy
IHdpbGwgbmV2ZXIKKyAgICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAoaW1tZWRp
YXRlIHNwZWMgZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRvdWJsZQorICAgICAgICAgICAgLy8gY29u
dmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFT
U0VSVChyZWdpc3RlckZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
QEAgLTM5Myw3ICs0MjksNiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklU
OjpzCiAgICAgICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICBpZiAo
dmFsdWVPZkpTQ29uc3RhbnQobm9kZSkuaXNDZWxsKCkpCiAgICAgICAgICAgICAgICAgZmlsbEFj
dGlvbiA9IFNldFRydXN0ZWRKU0NvbnN0YW50OwotICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGZpbGxBY3Rpb24gPSBTZXRKU0NvbnN0YW50OwogICAgICAgICB9IGVsc2UgaWYgKGlu
Zm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50MzIpIHsKICAgICAgICAgICAgIEFTU0VS
VChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SlNJbnQzMik7CkBAIC01MTIsNiArNTQ3LDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICBjYXNlIFNl
dEludDMyQ29uc3RhbnQ6CiAgICAgICAgIG1faml0Lm1vdmUoSW1tMzIodmFsdWVPZkludDMyQ29u
c3RhbnQocGxhbi5ub2RlKCkpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU2V0SW50NDhDb25zdGFudDoKKyAgICAgICAgbV9qaXQubW92ZShJbW02NCh2YWx1ZU9mSlND
b25zdGFudChwbGFuLm5vZGUoKSkuYXNNYWNoaW5lSW50KCkgPDwgMTYpLCBwbGFuLmdwcigpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZXRTdHJpY3RJbnQ0OENvbnN0YW50OgorICAgICAg
ICBtX2ppdC5tb3ZlKEltbTY0KHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS5hc01hY2hp
bmVJbnQoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFNldEJvb2xl
YW5Db25zdGFudDoKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIodmFsdWVPZkJvb2xl
YW5Db25zdGFudChwbGFuLm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CkBA
IC01MzMsNiArNTc0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3Qg
U2kKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4ubm9k
ZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBtX2ppdC5vcjY0
KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTG9hZDMyUGF5bG9hZENvbnZlcnRUb0ludDQ4OgorICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdp
c3RlcigpKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHBs
YW4uZ3ByKCksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1t
MzIoMTYpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkMzJQYXls
b2FkU2lnbkV4dGVuZDoKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2Fk
Rm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAg
ICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihwbGFuLmdwcigpLCBwbGFuLmdwcigpKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBMb2FkRG91YmxlQm94RG91YmxlOgogICAgICAgICBtX2ppdC5s
b2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3Rl
cigpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIG1faml0LnN1YjY0KEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlciwgcGxhbi5ncHIoKSk7CkBAIC01NzQsNiArNjI0LDE0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICBjYXNlIExvYWQ2NDoKICAgICAg
ICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0
dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIExv
YWQ2NFNoaWZ0UmlnaHQxNjoKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAg
ICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBwbGFuLmdwcigpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMb2FkNjRTaGlmdExlZnQxNjoKKyAgICAgICAgbV9qaXQubG9h
ZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIo
KSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYp
LCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIExvYWREb3Vi
bGU6CiAgICAgICAgIG1faml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxh
bi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5mcHIoKSk7CkBAIC0yMTQ5LDYgKzIy
MDcsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgICAg
ICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG9wMS5mb3JtYXQoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAg
ICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKKyAgICAg
ICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIob3AxR1BSLCBy
ZXN1bHRHUFIpOworICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIERhdGFGb3Jt
YXRJbnQzMik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAgICAgY2FzZSBOdW1iZXJV
c2U6CiAgICAgY2FzZSBOb3RDZWxsVXNlOiB7CkBAIC0yOTE1LDYgKzI5ODMsMzIgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFkZChOb2RlKiBubwogICAgICAgICBpbnQzMlJlc3VsdChn
cHJSZXN1bHQsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAgICAKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAvLyBXaWxs
IHdlIG5lZWQgYW4gb3ZlcmZsb3cgY2hlY2s/IElmIHdlIGNhbiBwcm92ZSB0aGF0IG5laXRoZXIg
aW5wdXQgY2FuIGJlCisgICAgICAgIC8vIEludDQ4IHRoZW4gdGhlIG92ZXJmbG93IGNoZWNrIHdp
bGwgbm90IGJlIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkKKyAgICAgICAgICAgICYmICFtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0
aGlzLCBub2RlLT5jaGlsZDIoKSwgb3AxKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CisgICAgICAgICAgICBtX2ppdC5hZGQ2NChvcDEuZ3ByKCksIG9wMi5ncHIoKSwg
cmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIGludDY0UmVzdWx0KHJlc3VsdC5ncHIoKSwgb3Ax
LCBub2RlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9qaXQu
bW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
CisgICAgICAgICAgICBJbnQ0OE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoQWRkNjQoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCks
IHJlc3VsdC5ncHIoKSkpOworICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAg
CiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBv
cDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMzA2MCw2ICszMTU0LDMyIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2QKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsK
KyAgICAgICAgLy8gV2lsbCB3ZSBuZWVkIGFuIG92ZXJmbG93IGNoZWNrPyBJZiB3ZSBjYW4gcHJv
dmUgdGhhdCBuZWl0aGVyIGlucHV0IGNhbiBiZQorICAgICAgICAvLyBJbnQ0OCB0aGVuIHRoZSBv
dmVyZmxvdyBjaGVjayB3aWxsIG5vdCBiZSBuZWNlc3NhcnkuCisgICAgICAgIGlmICghbV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAg
ICAgICAmJiAhbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVj
SW50NDgpKSB7CisgICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlcklu
dDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCksIG9wMSk7CisgICAgICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgbV9qaXQuc3ViNjQob3AxLmdw
cigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBpbnQ2NFJlc3VsdChy
ZXN1bHQuZ3ByKCksIG9wMSwgbm9kZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7
CisgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3Mo
KSwgMCwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFN1YjY0KE1hY3JvQXNzZW1ibGVyOjpPdmVy
Zmxvdywgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgaW50NDhSZXN1bHQocmVz
dWx0LmdwcigpLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KQorCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91
YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVE
b3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CkBAIC0zMDg4LDYgKzMyMDgs
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUoCiAKICAgICAgICAg
bV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAKKyAgICAgICAgLy8gTm90ZTog
dGhlcmUgaXMgbm8gbm90aW9uIG9mIGJlaW5nIG5vdCB1c2VkIGFzIGEgbnVtYmVyLCBidXQgc29t
ZW9uZQorICAgICAgICAvLyBjYXJpbmcgYWJvdXQgbmVnYXRpdmUgemVyby4KKyAgICAgICAgCiAg
ICAgICAgIGlmIChieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFn
cygpKSkKICAgICAgICAgICAgIG1faml0Lm5lZzMyKHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGVs
c2UgewpAQCAtMzA5OSw2ICszMjIyLDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cml0aE5lZ2F0ZSgKICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBNYWNo
aW5lSW50VXNlOiB7CisgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5jb3VsZEJlVHlwZShTcGVjSW50NDgpKSB7CisgICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2
ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3Ax
LmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAg
ICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9q
aXQubmVnNjQocmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVO
ZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFs
dWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNy
b0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0R1BSKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpbnQ0OFJlc3VsdChyZXN1bHRHUFIsIG9wMSwgbm9kZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDEo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0
R1BSKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIEludDQ4T3ZlcmZs
b3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBtX2ppdC5icmFuY2hOZWc2NChNYWNy
b0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUikpOworICAgICAgICBpZiAoIWJ5dGVjb2Rl
Q2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVybywgSlNW
YWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Olplcm8sIHJlc3VsdEdQUikpOworICAgICAgICB9CisgICAgICAgIGludDQ4UmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAg
U3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMzE2
NCw2ICszMzIzLDYxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bChOb2QK
ICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKyAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkgICAKKyAgICBjYXNlIE1hY2hpbmVJ
bnRVc2U6IHsKKyAgICAgICAgLy8gVGhpcyBpcyBzdXBlciBjbGV2ZXIuIFdlIHdhbnQgdG8gZG8g
YW4gaW50NDggbXVsdGlwbGljYXRpb24gYW5kIGNoZWNrIHRoZQorICAgICAgICAvLyBpbnQ0OCBv
dmVyZmxvdyBiaXQuIFRoZXJlIGlzIG5vIGRpcmVjdCBoYXJkd2FyZSBzdXBwb3J0IGZvciB0aGlz
LCBidXQgd2UgZG8KKyAgICAgICAgLy8gaGF2ZSB0aGUgYWJpbGl0eSB0byBkbyBhbiBpbnQ2NCBt
dWx0aXBsaWNhdGlvbiBhbmQgY2hlY2sgdGhlIGludDY0IG92ZXJmbG93CisgICAgICAgIC8vIGJp
dC4gV2UgbGV2ZXJhZ2UgdGhhdC4gQ29uc2lkZXIgdGhhdCBhLCBiIGFyZSBpbnQ0OCBudW1iZXJz
IGluc2lkZSBpbnQ2NAorICAgICAgICAvLyByZWdpc3RlcnMsIHdpdGggdGhlIGhpZ2ggMTYgYml0
cyBiZWluZyBzaWduLWV4dGVuZGVkLiBXZSBjYW4gZG86CisgICAgICAgIC8vCisgICAgICAgIC8v
ICAgICAoYSAqIChiIDw8IDE2KSkKKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhpcyB3aWxsIGdp
dmUgdXMgYSBsZWZ0LXNoaWZ0ZWQgaW50NDggKHZhbHVlIGlzIGluIGhpZ2ggNDggYml0cywgbG93
IDE2CisgICAgICAgIC8vIGJpdHMgYXJlIHplcm8pIHBsdXMgdGhlIGludDQ4IG92ZXJmbG93IGJp
dC4gSS5lLiB3aGV0aGVyIHRoaXMgNjQtYml0CisgICAgICAgIC8vIG11bHRpcGxpY2F0aW9uIG92
ZXJmbG93cyBpcyBpZGVudGljYWwgdG8gd2hldGhlciB0aGUgJ2EgKiBiJyA0OC1iaXQKKyAgICAg
ICAgLy8gbXVsdGlwbGljYXRpb24gb3ZlcmZsb3dzLgorICAgICAgICAvLworICAgICAgICAvLyBJ
biBvdXIgbm9tZW5jbGF0dXJlLCB0aGlzIGlzOgorICAgICAgICAvLworICAgICAgICAvLyAgICAg
c3RyaWN0SW50NDgoYSkgKiBpbnQ0OChiKSA9PiBpbnQ0OAorICAgICAgICAvLworICAgICAgICAv
LyBUaGF0IGlzICJzdHJpY3RJbnQ0OCIgbWVhbnMgdW5zaGlmdGVkIGFuZCAiaW50NDgiIG1lYW5z
IGxlZnQtc2hpZnRlZCBieSAxNgorICAgICAgICAvLyBiaXRzLgorICAgICAgICAvLworICAgICAg
ICAvLyBXZSBkb24ndCBjYXJlIHdoaWNoIG9mIG9wMSBvciBvcDIgc2VydmVzIGFzIHRoZSBsZWZ0
LXNoaWZ0ZWQgb3BlcmFuZCwgc28KKyAgICAgICAgLy8gd2UganVzdCBkbyB3aGF0ZXZlciBpcyBt
b3JlIGNvbnZlbmllbnQgZm9yIG9wMSBhbmQgaGF2ZSBvcDIgZG8gdGhlCisgICAgICAgIC8vIG9w
cG9zaXRlLiBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBkbyBhdCBtb3N0IG9uZSBzaGlmdC4KKworICAg
ICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0aGlzLCBu
b2RlLT5jaGlsZDIoKSwgT3Bwb3NpdGVTaGlmdCwgb3AxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3By
KCk7CisgICAgICAgIEdQUlJlZyBvcDJHUFIgPSBvcDIuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAg
ICAgICAgIG1faml0LmJyYW5jaE11bDY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AxR1BS
LCBvcDJHUFIsIHJlc3VsdEdQUikpOworICAgICAgICAKKyAgICAgICAgaWYgKCFieXRlY29kZUNh
bklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkgeworICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmVzdWx0Tm9uWmVybyA9IG1faml0LmJyYW5jaFRlc3Q2
NCgKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgcmVzdWx0R1BSKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgTmVnYXRpdmVa
ZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1h
Y3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgb3AxR1BSLCBUcnVzdGVkSW1tNjQoMCkpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgTmVnYXRpdmVaZXJvLCBK
U1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNz
ZW1ibGVyOjpMZXNzVGhhbiwgb3AyR1BSLCBUcnVzdGVkSW1tNjQoMCkpKTsKKyAgICAgICAgICAg
IHJlc3VsdE5vblplcm8ubGluaygmbV9qaXQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpbnQ0OFJlc3VsdChyZXN1bHRHUFIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAg
ICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJl
dmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDkgKzE1OSw3IEBAIHB1YmxpYzoKICAgICAv
LyBhbmQgaXRzIG1hY2hpbmUgcmVnaXN0ZXJzIG1heSBiZSByZXVzZWQuCiAgICAgYm9vbCBjYW5S
ZXVzZShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5m
byYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0
ZXIpOwotICAgICAgICByZXR1cm4gaW5mby5jYW5SZXVzZSgpOworICAgICAgICByZXR1cm4gZ2Vu
ZXJhdGlvbkluZm8obm9kZSkuY2FuUmV1c2UoKTsKICAgICB9CiAgICAgYm9vbCBjYW5SZXVzZShF
ZGdlIG5vZGVVc2UpCiAgICAgewpAQCAtMjM3LDE1ICsyMzUsMTEgQEAgcHVibGljOgogICAgIC8v
IGF2b2lkIHNwaWxsaW5nIHZhbHVlcyB3ZSB3aWxsIG5lZWQgaW1tZWRpYXRlbHkpLgogICAgIGJv
b2wgaXNGaWxsZWQoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJh
dGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVh
bFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRh
Rm9ybWF0Tm9uZTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKG5vZGUpLnJlZ2lzdGVy
Rm9ybWF0KCkgIT0gRGF0YUZvcm1hdE5vbmU7CiAgICAgfQogICAgIGJvb2wgaXNGaWxsZWREb3Vi
bGUoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVn
aXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8m
IGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVy
KTsKLSAgICAgICAgcmV0dXJuIGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91
YmxlOworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8obm9kZSkucmVnaXN0ZXJGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0RG91YmxlOwogICAgIH0KIAogICAgIC8vIENhbGxlZCBvbiBhbiBvcGVy
YW5kIG9uY2UgaXQgaGFzIGJlZW4gY29uc3VtZWQgYnkgYSBwYXJlbnQgbm9kZS4KQEAgLTI1Myw4
ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIW5vZGUtPmhhc1Jlc3VsdCgp
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
Z2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZv
JiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rl
cik7CisgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm8obm9kZSk7
CiAKICAgICAgICAgLy8gdXNlKCkgcmV0dXJucyB0cnVlIHdoZW4gdGhlIHZhbHVlIGJlY29tZXMg
ZGVhZCwgYW5kIGFueQogICAgICAgICAvLyBhc3NvY2lhdGVkIHJlc291cmNlcyBtYXkgYmUgZnJl
ZWQuCkBAIC0zMzMsNiArMzI2LDcgQEAgcHVibGljOgogICAgIC8vIG1hY2hpbmUgcmVnaXN0ZXJz
LCBpbXBsaWNpdGx5IGdlbmVyYXRpbmcgc3BlY3VsYXRpb24gY2hlY2tzIGFzIG5lZWRlZC4KICAg
ICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludDMyKEVkZ2UsIERhdGFGb3JtYXQmIHJldHVybkZvcm1h
dCk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVJbnQzMlN0cmljdChFZGdlKTsKKyAgICBHUFJS
ZWcgZmlsbFNwZWN1bGF0ZUludDQ4KEVkZ2UsIERhdGFGb3JtYXQgZGVzaXJlZEZvcm1hdCk7CiAg
ICAgRlBSUmVnIGZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVj
dWxhdGVDZWxsKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlKTsK
QEAgLTQ2OCw2ICs0NjIsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYm94RG91
YmxlKGZwciwgYWxsb2NhdGUoKSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgYm94SW50NDgoR1BS
UmVnIHNvdXJjZUdQUiwgR1BSUmVnIHRhcmdldEdQUiwgRGF0YUZvcm1hdCBmb3JtYXQpOwogI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lkIGJveERvdWJsZShGUFJSZWcgZnByLCBHUFJS
ZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUikKICAgICB7CkBAIC01NTksOCArNTU1LDggQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNLbm93bkludGVnZXIo
Tm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgflNw
ZWNJbnQzMik7IH0KLSAgICBib29sIGlzS25vd25DZWxsKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEo
bV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH5TcGVjQ2VsbCk7IH0KKyAgICBib29sIGlz
S25vd25JbnRlZ2VyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICFtX3N0YXRlLmZvck5vZGUobm9kZSku
aXNUeXBlKFNwZWNJbnQzMik7IH0KKyAgICBib29sIGlzS25vd25DZWxsKE5vZGUqIG5vZGUpIHsg
cmV0dXJuICFtX3N0YXRlLmZvck5vZGUobm9kZSkuaXNUeXBlKFNwZWNDZWxsKTsgfQogICAgIAog
ICAgIGJvb2wgaXNLbm93bk5vdEludGVnZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRl
LmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0ludDMyKTsgfQogICAgIGJvb2wgaXNLbm93bk5v
dE51bWJlcihOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5
cGUgJiBTcGVjTnVtYmVyKTsgfQpAQCAtOTAwLDcgKzg5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGluaXRDb25zdGFudEluZm8oTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0lu
dDMyQ29uc3RhbnQobm9kZSkgfHwgaXNOdW1iZXJDb25zdGFudChub2RlKSB8fCBpc0pTQ29uc3Rh
bnQobm9kZSkpOwotICAgICAgICBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIobm9k
ZS0+dmlydHVhbFJlZ2lzdGVyKCkpLmluaXRDb25zdGFudChub2RlLCBub2RlLT5yZWZDb3VudCgp
KTsKKyAgICAgICAgZ2VuZXJhdGlvbkluZm8obm9kZSkuaW5pdENvbnN0YW50KG5vZGUsIG5vZGUt
PnJlZkNvdW50KCkpOwogICAgIH0KICAgICAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxs
cyB0byBDKysgaGVscGVyIGZ1bmN0aW9ucy4KQEAgLTE4ODksMTAgKzE4ODUsMTYgQEAgcHVibGlj
OgogICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KG5vZGUpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUt
PnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVy
YXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICAK
LSAgICAgICAgcmV0dXJuIGluZm8uaXNKU0ludDMyKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0
aW9uSW5mbyhub2RlKS5pc0pTSW50MzIoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBiZXR0ZXJV
c2VTdHJpY3RJbnQ0OChOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFnZW5lcmF0
aW9uSW5mbyhub2RlLT5jaGlsZDEoKSkuaXNJbnQ0OCgpOworICAgIH0KKyAgICBib29sIGJldHRl
clVzZVN0cmljdEludDQ4KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBiZXR0ZXJV
c2VTdHJpY3RJbnQ0OChlZGdlLm5vZGUoKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgY29tcGFy
ZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIE1hY3JvQXNzZW1i
bGVyOjpEb3VibGVDb25kaXRpb24sIFNfREZHT3BlcmF0aW9uX0VKSik7CkBAIC0yMTk1LDYgKzIx
OTcsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdGlvbkluZm9b
b3BlcmFuZFRvTG9jYWwodmlydHVhbFJlZ2lzdGVyKV07CiAgICAgfQorICAgIAorICAgIEdlbmVy
YXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mbyhOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcihub2RlLT52aXJ0dWFsUmVnaXN0
ZXIoKSk7CisgICAgfQorICAgIAorICAgIEdlZW5yYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mbyhF
ZGdlIGVkZ2UpCisgICAgeworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8oZWRnZS5ub2Rl
KCkpOworICAgIH0KIAogICAgIC8vIFRoZSBKSVQsIHdoaWxlIGFsc28gcHJvdmlkZXMgTWFjcm9B
c3NlbWJsZXIgZnVuY3Rpb25hbGl0eS4KICAgICBKSVRDb21waWxlciYgbV9qaXQ7CkBAIC0yNjI5
LDYgKzI2NDEsMTAwIEBAIHByaXZhdGU6CiAgICAgRGF0YUZvcm1hdCBtX2Zvcm1hdDsKIH07CiAK
Ky8vIEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ0OCAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBi
eSAxNiwgbG93IGJpdHMgemVybykuCitjbGFzcyBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCog
aml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09w
ZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdl
KGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQt
PmlzRmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAg
flNwZWN1bGF0ZUludDQ4T3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPcklu
dmFsaWQgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPcklu
dmFsaWQpOworICAgIH0KKyAgICAKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9CisgICAgCisgICAgR1BS
UmVnIGdwcigpCisgICAgeworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVJ
bnQ0OChlZGdlKCksIERhdGFGb3JtYXRJbnQ0OCk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52
YWxpZDsKKyAgICB9CisgICAgCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQt
PnVzZShub2RlKCkpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQq
IG1faml0OworICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307
CisKKy8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ0OCAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0
aGUgbG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCitjbGFzcyBT
cGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1
bGF0ZVN0cmljdEludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9w
ZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikK
KyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwg
bV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5k
KCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkp
CisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgflNwZWN1bGF0ZUludDQ4T3Bl
cmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52YWxpZEdQ
UlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOworICAgIH0KKyAg
ICAKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZWRnZTsK
KyAgICB9CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVnIGdwcigpCisgICAgewor
ICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAg
IG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVTdHJpY3RJbnQ0OChlZGdlKCks
IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsK
KyAgICB9CisgICAgCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShu
b2RlKCkpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0
OworICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisKIGNs
YXNzIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRn
ZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0
aW9uKQpAQCAtMjY3Niw2ICsyNzgyLDgwIEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJ
bnZhbGlkOwogfTsKIAorZW51bSBPcHBvc2l0ZVNoaWZ0VGFnIHsgT3Bwb3NpdGVTaGlmdCB9Owor
CitjbGFzcyBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZChTcGN1bGF0aXZlSklUKiBqaXQs
IEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVj
dWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisg
ICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICAgICAgLCBtX3N0cmlj
dChqaXQtPmJldHRlclVzZVN0cmljdEludDQ4KGVkZ2UpKQorICAgIHsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVz
ZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9k
ZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBTcGVj
dWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQoU3BjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2Us
IGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCYgb3RoZXIsIE9wZXJhbmRTcGVj
dWxhdGlvbk1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9q
aXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlk
KEludmFsaWRHUFJSZWcpCisgICAgICAgICwgbV9zdHJpY3Qob3RoZXIubV9zdHJpY3QpCisgICAg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAo
aml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAor
ICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZChTcGN1bGF0aXZlSklU
KiBqaXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29uc3QgU3BlY3VsYXRlV2hpY2hl
dmVySW50NDhPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSA9IEF1dG9tYXRp
Y09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9l
ZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICAg
ICAgLCBtX3N0cmljdCghb3RoZXIubV9zdHJpY3QpCisgICAgeworICAgICAgICBBU1NFUlRfVU5V
U0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2lu
ZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkp
KQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIH5TcGVjdWxhdGVXaGljaGV2
ZXJJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9
IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsK
KyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAgIEdQUlJlZyBncHIo
KQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpIHsK
KyAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVJbnQ0OCgK
KyAgICAgICAgICAgICAgICBlZGdlKCksIG1fc3RydWN0ID8gRGF0YUZvcm1hdFN0cmljdEludDQ4
IDogRGF0YUZvcm1hdEludDQ4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9ncHJPcklu
dmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1faml0
LT51c2Uobm9kZSgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRlSklUKiBtX2pp
dDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CisgICAgYm9v
bCBtX3N0cmljdDsKK307CisKIGNsYXNzIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgewogcHVibGlj
OgogICAgIGV4cGxpY2l0IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGpp
dCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVy
YW5kU3BlY3VsYXRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2lu
ZC5jcHAJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDkgQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAg
ICAgICAgb3V0LnByaW50KCJLbm93bkludDMyIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
TWFjaGluZUludFVzZToKKyAgICAgICAgb3V0LnByaW50KCJJbnQ0OCIpOworICAgICAgICBicmVh
azsKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgICAgIG91dC5wcmludCgiUmVhbE51bWJl
ciIpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNl
S2luZC5oCShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBlbnVtIFVzZUtpbmQg
ewogICAgIFVudHlwZWRVc2UsCiAgICAgSW50MzJVc2UsCiAgICAgS25vd25JbnQzMlVzZSwKKyAg
ICBNYWNoaW5lSW50VXNlLAogICAgIFJlYWxOdW1iZXJVc2UsCiAgICAgTnVtYmVyVXNlLAogICAg
IEtub3duTnVtYmVyVXNlLApAQCAtNjYsNiArNjcsOCBAQCBBTFdBWVNfSU5MSU5FIFNwZWN1bGF0
ZWRUeXBlIHR5cGVGaWx0ZXJGCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNlIEtub3duSW50
MzJVc2U6CiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CisgICAgY2FzZSBNYWNoaW5lSW50VXNl
OgorICAgICAgICByZXR1cm4gU3BlY01hY2hpbmVJbnQ7CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNl
OgogICAgICAgICByZXR1cm4gU3BlY1JlYWxOdW1iZXI7CiAgICAgY2FzZSBOdW1iZXJVc2U6CkBA
IC0xMjUsNiArMTI4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQg
awogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgY2FzZSBLbm93
bkludDMyVXNlOgorICAgIGNhc2UgTWFjaGluZUludFVzZToKICAgICBjYXNlIFJlYWxOdW1iZXJV
c2U6CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgY2FzZSBLbm93bk51bWJlclVzZToKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuY3BwCShyZXZpc2lv
biAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOSBAQCB2b2lkIFZhbHVlU291cmNlOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpCiAgICAgY2FzZSBJbnQzMkluSlNTdGFjazoKICAgICAgICAgb3V0
LnByaW50KCJJbnQzMiIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEludDQ4SW5KU1N0YWNr
OgorICAgICAgICBvdXQucHJpbnQoIkludDQ4Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q2VsbEluSlNTdGFjazoKICAgICAgICAgb3V0LnByaW50KCJDZWxsIik7CiAgICAgICAgIGJyZWFr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAkocmV2
aXNpb24gMTU1NzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGVudW0gVmFsdWVTb3VyY2VLaW5k
IHsKICAgICBTb3VyY2VOb3RTZXQsCiAgICAgVmFsdWVJbkpTU3RhY2ssCiAgICAgSW50MzJJbkpT
U3RhY2ssCisgICAgSW50NDhJbkpTU3RhY2ssCiAgICAgQ2VsbEluSlNTdGFjaywKICAgICBCb29s
ZWFuSW5KU1N0YWNrLAogICAgIERvdWJsZUluSlNTdGFjaywKQEAgLTU2LDYgKzU3LDggQEAgc3Rh
dGljIGlubGluZSBWYWx1ZVNvdXJjZUtpbmQgZGF0YUZvcm1hdAogICAgIHN3aXRjaCAoZGF0YUZv
cm1hdCkgewogICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgogICAgICAgICByZXR1cm4gSW50MzJJ
bkpTU3RhY2s7CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgIHJldHVybiBJbnQ0
OEluSlNTdGFjazsKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgIHJldHVybiBE
b3VibGVJbkpTU3RhY2s7CiAgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKQEAgLTc5LDYgKzgy
LDggQEAgc3RhdGljIGlubGluZSBEYXRhRm9ybWF0IHZhbHVlU291cmNlS2luZAogICAgICAgICBy
ZXR1cm4gRGF0YUZvcm1hdEpTOwogICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgIHJl
dHVybiBEYXRhRm9ybWF0SW50MzI7CisgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAg
cmV0dXJuIERhdGFGb3JtYXRJbnQ0ODsKICAgICBjYXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAg
IHJldHVybiBEYXRhRm9ybWF0Q2VsbDsKICAgICBjYXNlIEJvb2xlYW5JbkpTU3RhY2s6CkBAIC0x
MzksNiArMTQ0LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKERv
dWJsZUluSlNTdGFjayk7CiAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICAgICAg
cmV0dXJuIFZhbHVlU291cmNlKEludDMySW5KU1N0YWNrKTsKKyAgICAgICAgY2FzZSBGbHVzaGVk
SW50NDg6CisgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoSW50NDhJbkpTU3RhY2spOwog
ICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNl
KENlbGxJbkpTU3RhY2spOwogICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgpAQCAtMTgxLDYg
KzE4OCw5IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBJbnQzMkluSlNTdGFjazoKICAgICAgICAg
ICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzIo
KTsKICAgICAgICAgICAgIAorICAgICAgICBjYXNlIEludDQ4SW5KU1N0YWNrOgorICAgICAgICAg
ICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCgp
OworICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2VsbEluSlNTdGFjazoKICAgICAgICAgICAg
IHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpOwog
ICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxl
QWNjZXNzRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyaWFibGVBY2Nlc3NEYXRhLmgJKHJldmlzaW9uIDE1NTc0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
Myw2ICszMzMsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJl
ZGljdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gRmx1c2hlZEludDMyOwogICAgICAgICAKKyAg
ICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgIW9wZXJhbmRJc0FyZ3VtZW50KG1fbG9jYWwpICYm
IGlzTWFjaGluZUludFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJu
IEZsdXNoZWRJbnQ0ODsKKyAgICAgICAgCiAgICAgICAgIGlmIChpc0NlbGxTcGVjdWxhdGlvbihw
cmVkaWN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBGbHVzaGVkQ2VsbDsKICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCShyZXZpc2lv
biAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE5MSw2ICsxOTEsNyBAQCBwdWJsaWM6CiAKICAgICBpbnQzMl90
IGFzSW50MzIoKSBjb25zdDsKICAgICB1aW50MzJfdCBhc1VJbnQzMigpIGNvbnN0OworICAgIGlu
dDY0X3QgYXNNYWNoaW5lSW50KCkgY29uc3Q7CiAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7
CiAgICAgYm9vbCBhc0Jvb2xlYW4oKSBjb25zdDsKICAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25z
dDsKQEAgLTIwMiw2ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc051bGwoKSBjb25zdDsK
ICAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Jvb2xlYW4o
KSBjb25zdDsKKyAgICBib29sIGlzTWFjaGluZUludCgpIGNvbnN0OwogICAgIGJvb2wgaXNOdW1i
ZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1p
dGl2ZSgpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNTU3NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OTQsNiArNDk0LDM1IEBAIEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSAK
IAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKK2lubGluZSBib29sIEpTVmFsdWU6OmlzTWFj
aGluZUludCgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKCFpc051bWJlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZG91
YmxlIG51bWJlciA9IGFzRG91YmxlKCk7CisgICAgaWYgKG51bWJlciAhPSBudW1iZXIpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2
NF90PihudW1iZXIpOworICAgIGlmIChhc0ludDY0ICE9IG51bWJlcikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghYXNJbnQ2NCAmJiBzdGQ6OnNpZ25iaXQobnVtYmVyKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhc0ludDY0ID49IChzdGF0aWNfY2FzdDxpbnQ2NF90
PigxKSA8PCA0NykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXNJbnQ2NCA8IC0o
c3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgNDcpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBpbnQ2NF90IEpTVmFsdWU6OmFzTWFjaGluZUlu
dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFjaGluZUludCgpKTsKKyAgICBpZiAoaXNJbnQz
MigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ2NF90Pihhc0RvdWJsZSgpKTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmco
KSBjb25zdAogewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTdHJpbmcoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211679</attachid>
            <date>2013-09-14 18:24:05 -0700</date>
            <delta_ts>2013-09-15 12:12:37 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>80659</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAkocmV2
aXNpb24gMTU1NzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0Tm9uZSA9IDAsCiAgICAgRGF0YUZvcm1h
dEludDMyID0gMSwKLSAgICBEYXRhRm9ybWF0RG91YmxlID0gMiwKLSAgICBEYXRhRm9ybWF0Qm9v
bGVhbiA9IDMsCi0gICAgRGF0YUZvcm1hdENlbGwgPSA0LAotICAgIERhdGFGb3JtYXRTdG9yYWdl
ID0gNSwKKyAgICBEYXRhRm9ybWF0SW50NDggPSAyLCAvLyBJbnQ0OCdzIGFyZSBsZWZ0LXNoaWZ0
ZWQgYnkgMTYgYnkgZGVmYXVsdC4KKyAgICBEYXRhRm9ybWF0U3RyaWN0SW50NDggPSAzLCAvLyAi
U3RyaWN0IiBJbnQ0OCBtZWFucyBpdCdzIG5vdCBzaGlmdGVkLgorICAgIERhdGFGb3JtYXREb3Vi
bGUgPSA0LAorICAgIERhdGFGb3JtYXRCb29sZWFuID0gNSwKKyAgICBEYXRhRm9ybWF0Q2VsbCA9
IDYsCisgICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA3LAogICAgIERhdGFGb3JtYXRKUyA9IDgsCiAg
ICAgRGF0YUZvcm1hdEpTSW50MzIgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0SW50MzIsCiAg
ICAgRGF0YUZvcm1hdEpTRG91YmxlID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdERvdWJsZSwK
QEAgLTY0LDYgKzY2LDEwIEBAIGlubGluZSBjb25zdCBjaGFyKiBkYXRhRm9ybWF0VG9TdHJpbmco
RGEKICAgICAgICAgcmV0dXJuICJOb25lIjsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAg
ICAgICAgcmV0dXJuICJJbnQzMiI7CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAg
IHJldHVybiAiSW50NDgiOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1
cm4gIlN0cmljdEludDQ4IjsKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgIHJl
dHVybiAiRG91YmxlIjsKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCShyZXZpc2lv
biAxNTU3OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDUsMTYgKzM0NSwxMSBAQCBTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhCiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CiAg
ICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVl
LmFzTnVtYmVyKCk7Ci0gICAgICAgIGlmIChudW1iZXIgPT0gbnVtYmVyKSB7Ci0gICAgICAgICAg
ICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIpOwotICAgICAg
ICAgICAgaWYgKGFzSW50NjQgPT0gbnVtYmVyICYmIChhc0ludDY0IHx8ICFzdGQ6OnNpZ25iaXQo
bnVtYmVyKSkKLSAgICAgICAgICAgICAgICAmJiBhc0ludDY0IDwgKHN0YXRpY19jYXN0PGludDY0
X3Q+KDEpIDw8IDQ3KQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPj0gLShzdGF0aWNfY2Fz
dDxpbnQ2NF90PigxKSA8PCA0NykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU3BlY0ludDQ4
QXNEb3VibGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU3BlY05vbkludEFz
RG91YmxlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFOOworICAgICAg
ICBpZiAobnVtYmVyICE9IG51bWJlcikKKyAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFO
OworICAgICAgICBpZiAodmFsdWUuaXNNYWNoaW5lSW50KCkpCisgICAgICAgICAgICByZXR1cm4g
U3BlY0ludDQ4QXNEb3VibGU7CisgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAg
ICAgfQogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9u
RnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDE1NTc5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5n
ICAKIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbE90aGVyICAgICAgICAgPSAw
eDAwMDQwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBhIHN1YmNsYXNz
IG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgogc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICA9IDB4MDAwN2ZmZmY7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
SW50MzIgICAgICAgICAgICAgPSAweDAwODAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50
MzIuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDQ4ICAgICAgICAgICAgID0g
MHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4LCBpdCdzIGluc2lkZSBhIGRv
dWJsZSwgYnV0IGl0IGRvZXNuJ3QgbmVlZCB0byBiZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjSW50NDggICAgICAgICAgICAgPSAweDAxMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRl
bHkgYW4gSW50NDggYW5kIHdlIGludGVuZCBpdCB0byB1bmJveCBpdC4KIHN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjTWFjaGluZUludCAgICAgICAgPSAweDAxODAwMDAwOyAvLyBJdCdz
IHNvbWV0aGluZyB0aGF0IHdlIGNhbiBkbyBtYWNoaW5lIGludCBhcml0aG1ldGljIG9uLgogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ0OEFzRG91YmxlICAgICA9IDB4MDIwMDAw
MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUu
CiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgID0gMHgw
MzgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IHNvbWUga2luZCBvZiBpbnRlZ2VyLgpAQCAtNzQs
OSArNzQsOSBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iCiBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY051bWJlciAgICAgICAgICAgID0gMHgwZjgwMDAw
MDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGUuCiBzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAgID0gMHgxMDAwMDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgQm9vbGVhbi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT3Ro
ZXIgICAgICAgICAgICAgPSAweDIwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm9uZSBvZiB0
aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAg
ICAgID0gMHgzZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgID0gMHgzZWZmZmZmZjsg
Ly8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4NDAwMDAw
MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZmZmZmZmZjsgLy8g
SXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0
aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNGdWxsVG9wICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkg
b2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgogCiB0eXBlZGVmIGJv
b2wgKCpTcGVjdWxhdGVkVHlwZUNoZWNrZXIpKFNwZWN1bGF0ZWRUeXBlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkocmV2aXNpb24g
MTU1NzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3Zlcnku
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDE1IEBAIGVudW0gVmFsdWVSZWNvdmVyeVRl
Y2huaXF1ZSB7CiAgICAgQWxyZWFkeUluSlNTdGFjaywKICAgICAvLyBJdCdzIGFscmVhZHkgaW4g
dGhlIHN0YWNrIGJ1dCB1bmJveGVkLgogICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQz
MiwKKyAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDgsCiAgICAgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZENlbGwsCiAgICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW4s
CiAgICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZSwKICAgICAvLyBJdCdzIGluIGEg
cmVnaXN0ZXIuCiAgICAgSW5HUFIsCiAgICAgVW5ib3hlZEludDMySW5HUFIsCisgICAgVW5ib3hl
ZEludDQ4SW5HUFIsCisgICAgVW5ib3hlZFN0cmljdEludDQ4SW5HUFIsCiAgICAgVW5ib3hlZEJv
b2xlYW5JbkdQUiwKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEluUGFpciwKQEAgLTU4LDYg
KzYxLDggQEAgZW51bSBWYWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBEaXNwbGFjZWRJbkpT
U3RhY2ssCiAgICAgLy8gSXQncyBpbiB0aGUgc3RhY2ssIGF0IGEgZGlmZmVyZW50IGxvY2F0aW9u
LCBhbmQgaXQncyB1bmJveGVkLgogICAgIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrLAorICAgIElu
dDQ4RGlzcGxhY2VkSW5KU1N0YWNrLAorICAgIFN0cmljdEludDQ4RGlzcGxhY2VkSW5KU1N0YWNr
LAogICAgIERvdWJsZURpc3BsYWNlZEluSlNTdGFjaywKICAgICBDZWxsRGlzcGxhY2VkSW5KU1N0
YWNrLAogICAgIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2ssCkBAIC05Myw2ICs5OCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBW
YWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCgpCisgICAgeworICAg
ICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0g
QWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKyAgICAKICAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0YWNrQXNV
bmJveGVkQ2VsbCgpCiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKQEAgLTEy
Myw2ICsxMzUsMTAgQEAgcHVibGljOgogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKICAg
ICAgICAgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKQogICAgICAgICAgICAgcmVz
dWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDMySW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRh
dGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5p
cXVlID0gVW5ib3hlZEludDQ4SW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0g
RGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0g
VW5ib3hlZFN0cmljdEludDQ4SW5HUFI7CiAgICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0g
RGF0YUZvcm1hdEJvb2xlYW4pCiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBVbmJv
eGVkQm9vbGVhbkluR1BSOwogICAgICAgICBlbHNlCkBAIC0xNjYsNiArMTgyLDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDMyRGlzcGxhY2VkSW5KU1N0
YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0SW50NDg6CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBJbnQ0OERpc3Bs
YWNlZEluSlNTdGFjazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OgorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5p
cXVlID0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIAogICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgICAg
ICByZXN1bHQubV90ZWNobmlxdWUgPSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTIyNyw2ICsyNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAo
dGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrOgogICAgICAgICBj
YXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAgICAgY2FzZSBBbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xl
YW46CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKQEAgLTIz
OCw3ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgZ3ByKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBJbkdQ
UiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBV
bmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQzMkluR1BSKTsKKyAgICAg
ICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRJ
bnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFuSW5HUFIgfHwgbV90ZWNo
bmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZEludDQ4SW5HUFIg
fHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFIpOwogICAgICAgICByZXR1
cm4gbV9zb3VyY2UuZ3ByOwogICAgIH0KICAgICAKQEAgLTI2NCw3ICsyODksNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpIGNvbnN0CiAgICAg
ewotICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1f
dGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IERv
dWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxhY2VkSW5K
U1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2spOworICAg
ICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5p
cXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IERvdWJsZURp
c3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNr
IHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlx
dWUgPT0gSW50NDhEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0gU3RyaWN0SW50
NDhEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gbV9zb3VyY2UudmlydHVhbFJl
ZzsKICAgICB9CiAgICAgCkBAIC0yODMsNiArMzA4LDkgQEAgcHVibGljOgogICAgICAgICBjYXNl
IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAgIG91dC5wcmludGYo
IihpbnQzMikiKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgICAgIG91dC5wcmludGYoIihpbnQ0OCkiKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWRDZWxsOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKGNlbGwpIik7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTI5OCw2ICszMjYsMTIgQEAgcHVibGljOgogICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQzMkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiaW50MzIoJSVyJWQpIiwgZ3ByKCkp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVW5ib3hlZEludDQ4SW5HUFI6Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCJpbnQ0OCglJXIlZCkiLCBncHIoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKKyAgICAgICAg
ICAgIG91dC5wcmludGYoInN0cmljdEludDQ4KCUlciVkKSIsIGdwcigpKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CiAgICAgICAgICAgICBv
dXQucHJpbnRmKCJib29sKCUlciVkKSIsIGdwcigpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MzE4LDYgKzM1MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2s6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIqaW50MzIoJWQpIiwgdmlydHVhbFJlZ2lz
dGVyKCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NDhEaXNwbGFjZWRJ
bkpTU3RhY2s6CisgICAgICAgICAgICBvdXQucHJpbnRmKCIqaW50NDgoJWQpIiwgdmlydHVhbFJl
Z2lzdGVyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RyaWN0SW50NDhE
aXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBvdXQucHJpbnRmKCIqc3RyaWN0SW50NDgo
JWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKmRv
dWJsZSglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
ci5oCShyZXZpc2lvbiAxNTU3OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgYm9vbCBuZWVkc1R5cGVDaGVjayhOb2RlKiBub2RlLCBTcGVjdWxhdGVk
VHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gpCiAgICAgewotICAgICAgICByZXR1cm4gZm9yTm9kZShu
b2RlKS5tX3R5cGUgJiB+dHlwZXNQYXNzZWRUaHJvdWdoOworICAgICAgICByZXR1cm4gIWZvck5v
ZGUobm9kZSkuaXNUeXBlKHR5cGVzUGFzc2VkVGhyb3VnaCk7CiAgICAgfQogICAgIAogICAgIGJv
b2wgbmVlZHNUeXBlQ2hlY2soRWRnZSBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRo
cm91Z2gpCkBAIC0xNjgsNyArMTY4LDcgQEAgcHJpdmF0ZToKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZmlsdGVyQnlUeXBlKE5vZGUqIG5vZGUsIEVkZ2UmIGVkZ2UsIFNwZWN1bGF0ZWRUeXBlIHR5
cGUpCiAgICAgewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUoZWRnZSk7
Ci0gICAgICAgIGlmICh2YWx1ZS5tX3R5cGUgJiB+dHlwZSkgeworICAgICAgICBpZiAoIXZhbHVl
LmlzVHlwZSh0eXBlKSkgewogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAg
ICAgICAgICAgIGVkZ2Uuc2V0UHJvb2ZTdGF0dXMoTmVlZHNDaGVjayk7CiAgICAgICAgIH0gZWxz
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTU1NzkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTAsNiArMzEwLDI2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIElu
dDQ4VG9Eb3VibGU6IHsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7
CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBjaGlsZCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4QXNE
b3VibGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50NDhB
c1ZhbHVlOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgeworICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNNYWNoaW5lSW50KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIFZhbHVlQWRkOgogICAg
IGNhc2UgQXJpdGhBZGQ6IHsKICAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkudmFsdWUoKTsKQEAgLTMyNCw2ICszNDQsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5j
YXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgp
OworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0lu
dDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUo
U3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgaWYg
KGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkK
ICAgICAgICAgICAgICAgICAmJiBpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUt
PmNoaWxkMigpKS5tX3R5cGUpKQpAQCAtMzU4LDYgKzM4NCwxMiBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1
bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5v
ZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBN
YWNoaW5lSW50VXNlOgorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0
OCk7CisgICAgICAgICAgICBpZiAoIWZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVj
SW50MzIpCisgICAgICAgICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlw
ZShTcGVjSW50MzIpKQorICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTM4MCw2ICs0MTIsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0
aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKG1f
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KSkKKyAg
ICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgaWYgKCFi
eXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQorICAg
ICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQwNCw2ICs0NDMsMTAgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAg
IHx8ICFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygp
KSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0
cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlclVzZToKICAgICAg
ICAgICAgIGlmIChpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5tX3R5cGUpCiAgICAgICAgICAgICAgICAgfHwgaXNSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9y
Tm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSkKQEAgLTgxMiw3ICs4NTUsNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAobm9kZS0+
c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CisgICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBcnJheTo6RmxvYXQzMkFycmF5OgogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNEb3VibGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFZhbHVlLmgJKHJldmlzaW9uIDE1NTc5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDE2IEBA
IHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAg
IH0KICAgICAKKyAgICBib29sIGNvdWxkQmVUeXBlKFNwZWN1bGF0ZWRUeXBlIGRlc2lyZWRUeXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhKG1fdHlwZSAmIGRlc2lyZWRUeXBlKTsKKyAgICB9
CisgICAgCisgICAgYm9vbCBpc1R5cGUoU3BlY3VsYXRlZFR5cGUgZGVzaXJlZFR5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gIShtX3R5cGUgJiB+ZGVzaXJlZFR5cGUpOworICAgIH0KKyAgICAK
ICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0IFN0cnVjdHVyZVNldCYp
OwogICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJyYXlNb2RlcyhBcnJheU1vZGVz
IGFycmF5TW9kZXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShy
ZXZpc2lvbiAxNTU3OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDE1IEBAIGlubGluZSBib29sIGVuYWJsZUNv
bmN1cnJlbnRKSVQoKQogI2VuZGlmCiB9CiAKK2lubGluZSBib29sIGVuYWJsZUludDQ4KCkKK3sK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKK30KKwogZW51bSBTcGlsbFJlZ2lzdGVyc01vZGUgeyBOZWVkVG9TcGls
bCwgRG9udFNwaWxsIH07CiAKIGVudW0gTm9SZXN1bHRUYWcgeyBOb1Jlc3VsdCB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAx
NTU3OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpIHsKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTk3LDYgKzIwMiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIG1fZ3JhcGgu
bmVnYXRlU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMDcsNiAr
MjE2LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgbV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVN
YWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNl
Pihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMzAwLDYgKzMxNCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAg
ICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1h
Y2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1h
Y2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBu
b2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4o
bm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzU1LDYgKzM3NCwxMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpCisg
ICAgICAgICAgICAgICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5j
aGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkp
KSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAt
MTM0NywxMiArMTM3Miw4NCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPFVzZUtpbmQgdXNlS2lu
ZD4KICAgICB2b2lkIGZpeEVkZ2UoRWRnZSYgZWRnZSwgU3BlY3VsYXRpb25EaXJlY3Rpb24gZGly
ZWN0aW9uID0gQmFja3dhcmRTcGVjdWxhdGlvbikKICAgICB7Ci0gICAgICAgIGlmIChpc0RvdWJs
ZSh1c2VLaW5kKSAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkg
ewotICAgICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoZWRnZSwgdXNlS2luZCwgZGly
ZWN0aW9uKTsKKyAgICAgICAgaWYgKGlzRG91YmxlKHVzZUtpbmQpKSB7CisgICAgICAgICAgICBp
ZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsKKyAgICAgICAg
ICAgICAgICBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShlZGdlLCB1c2VLaW5kLCBkaXJlY3Rpb24p
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFj
aGluZUludCgpKSB7CisgICAgICAgICAgICAgICAgLy8gTWFrZSBhbGwgZG91YmxlIHVzZXMgb2Yg
aW50NDggdmFsdWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDQ4VG9Eb3VibGUuCisgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIEludDQ4VG9WYWx1ZSAo
c2VlIGJlbG93KSBleGNlcHQgdGhhdAorICAgICAgICAgICAgICAgIC8vIEludDhUb0RvdWJsZSB3
aWxsIGNvbnZlcnQgaW50NDgncyB0aGF0IGZpdCBpbiBhbiBpbnQzMiBpbnRvIGEgZG91YmxlCisg
ICAgICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGNyZWF0ZSBhIGJveGVkIGlu
dDMyIGxpa2UgSW50NDhUb1ZhbHVlIGRvZXMuCisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8TWFjaGluZUludFVzZT4oZWRnZS5ub2RlKCkpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjSW50NDhBc0RvdWJsZSwgSW50NDhUb0RvdWJsZSwKKyAgICAgICAgICAgICAgICAgICAgbV9j
dXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTWFjaGluZUludFVzZSkp
OworICAgICAgICAgICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiB1c2VLaW5kICE9IE1hY2hpbmVJbnRVc2UKKyAgICAg
ICAgICAgICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSAmJiAhZWRnZS0+c2hv
dWxkU3BlY3VsYXRlSW50MzIoKSkgeworICAgICAgICAgICAgLy8gV2UgbWFrZSBhbGwgbm9uLWlu
dDQ4IHVzZXMgb2YgaW50NDggdmFsdWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDQ4VG9WYWx1
ZQorICAgICAgICAgICAgLy8gbm9kZSB0byBlbnN1cmUgdGhhdCB3ZSBoYW5kbGUgdGhpcyBwcm9w
ZXJseToKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAgICAg
ICAgICAgIC8vIGI6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAgICAvLyBjOiBDYWxsKC4u
LiwgQGEpCisgICAgICAgICAgICAvLyBkOiBBcml0aEFkZChAYSwgLi4uKQorICAgICAgICAgICAg
Ly8KKyAgICAgICAgICAgIC8vIFdpdGhvdXQgYW4gaW50ZXJtZWRpYXRlIG5vZGUgYW5kIGp1c3Qg
bGFiZWxpbmcgdGhlIHVzZXMsIHdlIHdpbGwgZ2V0OgorICAgICAgICAgICAgLy8KKyAgICAgICAg
ICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoSW50NDg6QGEs
IC4uLikKKyAgICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBVbnR5cGVkOkBhKQorICAgICAgICAg
ICAgLy8gZDogQXJpdGhBZGQoSW50NDg6QGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAg
ICAgICAvLyBBbmQgbm93IHRoZSBjLT5VbnR5cGVkOkBhIGVkZ2Ugd2lsbCBib3ggdGhlIHZhbHVl
IG9mIEBhIGludG8gYSBkb3VibGUuIFRoaXMKKyAgICAgICAgICAgIC8vIGlzIGJhZCwgYmVjYXVz
ZSBub3cgdGhlIGQtPkludDQ4OkBhIGVkZ2Ugd2lsbCBlaXRoZXIgaGF2ZSB0byBkbyBkb3VibGUt
dG8taW50CisgICAgICAgICAgICAvLyBjb252ZXJzaW9ucywgb3Igd2lsbCBoYXZlIHRvIE9TUiBl
eGl0IHVuY29uZGl0aW9uYWxseS4gQWx0ZXJuYXRpdmVseSB3ZSBjb3VsZAorICAgICAgICAgICAg
Ly8gaGF2ZSB0aGUgYy0+VW50eXBlZDpAYSBlZGdlIGJveCB0aGUgdmFsdWUgYnkgY29weWluZyBy
YXRoZXIgdGhhbiBpbi1wbGFjZS4KKyAgICAgICAgICAgIC8vIEJ1dCB0aGVzZSBib3hpbmdzIGFy
ZSBhbHNvIGNvc3RseSBzbyB0aGlzIHdvdWxkbid0IGJlIGdyZWF0LgorICAgICAgICAgICAgLy8K
KyAgICAgICAgICAgIC8vIFRoZSBzb2x1dGlvbiB3ZSB1c2UgaXMgdG8gYWx3YXlzIGhhdmUgbm9u
LUludDQ4IHVzZXMgb2YgcHJlZGljdGVkIEludDQ4J3MgdXNlCisgICAgICAgICAgICAvLyBhbiBp
bnRlcnZlbmluZyBJbnQ0OFRvVmFsdWUgbm9kZToKKyAgICAgICAgICAgIC8vCisgICAgICAgICAg
ICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDQ4OkBhLCAu
Li4pCisgICAgICAgICAgICAvLyB4OiBJbnQ0OFRvVmFsdWUoSW50NDg6QGEpCisgICAgICAgICAg
ICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAeCkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRk
KEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gTm90ZSB0aGF0
IGV2ZW4gaWYgd2UgaGFkIG11bHRpcGxlIG5vbi1pbnQ0OCB1c2VzIG9mIEBhLCB0aGUgbXVsdGlw
bGUKKyAgICAgICAgICAgIC8vIEludDQ4VG9WYWx1ZSdzIHdvdWxkIGdldCBDU0UnZCB0b2dldGhl
ci4gU28gdGhlIGJveGluZyB3b3VsZCBvbmx5IGhhcHBlbiBvbmNlLgorICAgICAgICAgICAgLy8g
QXQgdGhlIHNhbWUgdGltZSwgQGEgd291bGQgY29udGludWUgdG8gYmUgcmVwcmVzZW50ZWQgYXMg
YSBuYXRpdmUgaW50NDguCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQW4gYWx0ZXJu
YXRpdmUgd291bGQgaGF2ZSBiZWVuIHRvIGluc2VydCBUb05hdGl2ZUludDQ4IG5vZGVzIG9uIGlu
dDQ4IHVzZXMgb2YKKyAgICAgICAgICAgIC8vIGludDQ4J3MuIFRoaXMgd291bGQgaGF2ZSBoYW5k
bGVkIHRoZSBhYm92ZSBleGFtcGxlIGJ1dCB3b3VsZCBmYWxsIG92ZXIgZm9yOgorICAgICAgICAg
ICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8gYjogQ2Fs
bCguLi4sIEBhKQorICAgICAgICAgICAgLy8gYzogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAg
ICAgIC8vCisgICAgICAgICAgICAvLyBCdXQgdGhlIHNvbHV0aW9uIHdlIHVzZSBoYW5kbGVzIHRo
ZSBhYm92ZSBncmFjZWZ1bGx5LgorICAgICAgICAgICAgCisgICAgICAgICAgICBvYnNlcnZlVXNl
S2luZE9uTm9kZTxNYWNoaW5lSW50VXNlPihlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAg
ICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0OCwgSW50NDhUb1ZhbHVlLAorICAg
ICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCks
IE1hY2hpbmVJbnRVc2UpKTsKKyAgICAgICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2lu
ZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG9i
c2VydmVVc2VLaW5kT25Ob2RlPHVzZUtpbmQ+KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgCiAgICAg
ICAgIGVkZ2Uuc2V0VXNlS2luZCh1c2VLaW5kKTsKICAgICB9CiAgICAgCkBAIC0xMzc4LDcgKzE0
NzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoRWRnZSYg
ZWRnZSwgVXNlS2luZCB1c2VLaW5kID0gTnVtYmVyVXNlLCBTcGVjdWxhdGlvbkRpcmVjdGlvbiBk
aXJlY3Rpb24gPSBCYWNrd2FyZFNwZWN1bGF0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogcmVz
dWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBTcGVjSW50NDgsIEludDMyVG9Eb3VibGUsCisgICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY0ludDQ4QXNEb3VibGUsIEludDMyVG9Eb3VibGUsCiAgICAgICAgICAgICBtX2N1cnJl
bnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKICAgICAg
ICAgaWYgKGRpcmVjdGlvbiA9PSBGb3J3YXJkU3BlY3VsYXRpb24pCiAgICAgICAgICAgICByZXN1
bHQtPm1lcmdlRmxhZ3MoTm9kZUV4aXRzRm9yd2FyZCk7CkBAIC0xMzkyLDYgKzE0ODksMTcgQEAg
cHJpdmF0ZToKICAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsKICAgICB9CiAg
ICAgCisgICAgLy8gV2UgbWFrZSBhbGwgaW50NDggZWRnZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUg
QXNOYXRpdmVJbnQ0OCBub2RlIHRvIGVuc3VyZQorICAgIC8vIHRoYXQgd2UgaGFuZGxlIHRoaXMg
cHJvcGVybHk6CisgICAgdGVtcGxhdGU8VXNlS2luZCB1c2VLaW5kPgorICAgIHZvaWQgZml4SW50
NDhFZGdlKEVkZ2UmIGVkZ2UpCisgICAgeworICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0
OCwgQXNOYXRpdmVJbnQ0OCwKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4s
IEVkZ2UoZWRnZS5ub2RlKCksIHVzZUtpbmQpKTsKKyAgICAgICAgZWRnZSA9IGVkZ2UocmVzdWx0
LCBNYWNoaW5lSW50VXNlKTsKKyAgICB9CisKICAgICB2b2lkIHRydW5jYXRlQ29uc3RhbnRUb0lu
dDMyKEVkZ2UmIGVkZ2UpCiAgICAgewogICAgICAgICBOb2RlKiBvbGROb2RlID0gZWRnZS5ub2Rl
KCk7CkBAIC0xNDM0LDEzICsxNTQyLDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBhdHRlbXB0VG9N
YWtlSW50ZWdlckFkZChOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgQWRkU3BlY3VsYXRpb25N
b2RlIG1vZGUgPSBtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShub2RlKTsKLSAgICAgICAgaWYg
KG1vZGUgPT0gRG9udFNwZWN1bGF0ZUludDMyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAobW9kZSAhPSBEb250U3BlY3VsYXRlSW50MzIpIHsKKyAgICAgICAgICAgIHRy
dW5jYXRlQ29uc3RhbnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9kZSk7CisgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgdHJ1bmNhdGVDb25zdGFudHNJZk5lY2Vzc2FyeShub2RlLCBt
b2RlKTsKLSAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiBtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0
ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBib29sIGF0dGVtcHRU
b01ha2VHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAJKHJldmlzaW9uIDE1NTc5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw2ICs0MSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBGbHUK
ICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgb3V0LnByaW50KCJGbHVzaGVkSW50MzIi
KTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICBvdXQu
cHJpbnQoIkZsdXNoZWRJbnQzMiIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGbHVzaGVk
RG91YmxlOgogICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWREb3VibGUiKTsKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAko
cmV2aXNpb24gMTU1NzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZv
cm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIGVudW0gRmx1c2hGb3JtYXQgewogICAgIERlYWRGbHVzaCwKICAgICBG
bHVzaGVkSW50MzIsCisgICAgRmx1c2hlZEludDQ4LAogICAgIEZsdXNoZWREb3VibGUsCiAgICAg
Rmx1c2hlZENlbGwsCiAgICAgRmx1c2hlZEJvb2xlYW4sCkBAIC01NSw2ICs1Niw4IEBAIGlubGlu
ZSBOb2RlRmxhZ3MgcmVzdWx0Rm9yKEZsdXNoRm9ybWF0IGYKICAgICAgICAgcmV0dXJuIE5vZGVS
ZXN1bHRKUzsKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1
bHRJbnQzMjsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgcmV0dXJuIE5vZGVSZXN1
bHRJbnQ0ODsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAgIHJldHVybiBOb2RlUmVz
dWx0TnVtYmVyOwogICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CkBAIC03NCw2ICs3Nyw4IEBAIGlu
bGluZSBVc2VLaW5kIHVzZUtpbmRGb3IoRmx1c2hGb3JtYXQgZm8KICAgICAgICAgcmV0dXJuIENl
bGxVc2U7CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVybiBJbnQzMlVzZTsK
KyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgcmV0dXJuIE1hY2hpbmVJbnRVc2U7CiAg
ICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICByZXR1cm4gTnVtYmVyVXNlOwogICAgIGNh
c2UgRmx1c2hlZEJvb2xlYW46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dl
bmVyYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHZW5lcmF0aW9uSW5mby5oCShyZXZpc2lvbiAxNTU3OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2
LDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGluaXRHUFIobm9kZSwgdXNlQ291bnQsIGdw
ciwgRGF0YUZvcm1hdEludDMyKTsKICAgICB9CisgICAgdm9pZCBpbml0SW50NDgoTm9kZSogbm9k
ZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBpbml0R1BS
KG5vZGUsIHVzZUNvdW50LCBncHIsIERhdGFGb3JtYXRJbnQ0OCk7CisgICAgfQorICAgIHZvaWQg
aW5pdFN0cmljdEludDQ4KE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgcmVn
KQorICAgIHsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBEYXRhRm9ybWF0
U3RyaWN0SW50NDgpOworICAgIH0KICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgaW5pdEpT
VmFsdWUoTm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyBncHIsIERhdGFGb3Jt
YXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTKQogICAgIHsKQEAgLTE4Nyw2ICsxOTUsMTEgQEAgcHVi
bGljOgogICAgIC8vIEdldCB0aGUgZm9ybWF0IG9mIHRoZSB2YWx1ZSBhcyBpdCBpcyBzcGlsbGVk
IGluIHRoZSBKU1N0YWNrIChvciAnbm9uZScpLgogICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQo
KSB7IHJldHVybiBtX3NwaWxsRm9ybWF0OyB9CiAgICAgCisgICAgYm9vbCBpc0Zvcm1hdChEYXRh
Rm9ybWF0IGV4cGVjdGVkRm9ybWF0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9y
bWF0KCkgPT0gZXhwZWN0ZWRGb3JtYXQgfHwgc3BpbGxGb3JtYXQoKSA9PSBleHBlY3RlZEZvcm1h
dDsKKyAgICB9CisgICAgCiAgICAgYm9vbCBpc0pTRm9ybWF0KERhdGFGb3JtYXQgZXhwZWN0ZWRG
b3JtYXQpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjppc0pTRm9ybWF0KHJlZ2lzdGVyRm9y
bWF0KCksIGV4cGVjdGVkRm9ybWF0KSB8fCBKU0M6OmlzSlNGb3JtYXQoc3BpbGxGb3JtYXQoKSwg
ZXhwZWN0ZWRGb3JtYXQpOwpAQCAtMTk3LDYgKzIxMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBpc0pTRm9ybWF0KERhdGFGb3JtYXRKU0ludDMyKTsKICAgICB9CiAgICAgCisgICAgYm9v
bCBpc0ludDQ4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0Zvcm1hdChEYXRhRm9ybWF0SW50
NDgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzU3RyaWN0SW50NDgoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGlzRm9ybWF0KERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgfQorICAgIAog
ICAgIGJvb2wgaXNKU0RvdWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gaXNKU0Zvcm1hdChE
YXRhRm9ybWF0SlNEb3VibGUpOwpAQCAtMzE0LDYgKzMzNywxNCBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SW50MzIpOwogICAgIH0KKyAg
ICB2b2lkIGZpbGxJbnQ0OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIp
CisgICAgeworICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SW50NDgpOwor
ICAgIH0KKyAgICB2b2lkIGZpbGxTdHJpY3RJbnQ0OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJl
YW0sIEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRh
Rm9ybWF0U3RyaWN0SW50NDgpOworICAgIH0KICAgICB2b2lkIGZpbGxCb29sZWFuKFZhcmlhYmxl
RXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwcikKICAgICB7CiAgICAgICAgIGZpbGxHUFIo
c3RyZWFtLCBncHIsIERhdGFGb3JtYXRCb29sZWFuKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNpb24gMTU1NzkzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEs
OSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5vZGVSZXN1bHRK
UyAgICAgICAgICAgICAgICAgICAgIDB4MDAwMQogI2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAg
ICAgICAgICAgICAgICAweDAwMDIKICNkZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAg
ICAgICAgMHgwMDAzCi0jZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4
MDAwNAotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDUKKyNk
ZWZpbmUgTm9kZVJlc3VsdEludDQ4ICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIE5v
ZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0
U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDYKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAjZGVmaW5lIE5vZGVNdXN0R2VuZXJhdGUgICAgICAgICAgICAgICAgIDB4MDAwOCAv
LyBzZXQgb24gbm9kZXMgdGhhdCBoYXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlh
bGx5IGJlIHJlbW92ZWQgYnkgRENFLgogI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAg
ICAgICAgICAweDAwMTAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDE1NTc5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSW50MzJUb0RvdWJsZSwgTm9kZVJlc3VsdE51
bWJlcikgXAogICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRlIHRoYXQgYSBkb3VibGUgdmFsdWUgaXMg
YWN0dWFsbHkgYW4gaW50ZWdlci4gKi9cCiAgICAgbWFjcm8oRG91YmxlQXNJbnQzMiwgTm9kZVJl
c3VsdEludDMyIHwgTm9kZUV4aXRzRm9yd2FyZCkgXAorICAgIC8qIFVzZWQgdG8gc2VwYXJhdGUg
cmVwcmVzZW50YXRpb24gYW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gb2YgSW50NDgncyByZXByZXNl
bnRlZCAqL1wKKyAgICAvKiBhcyB2YWx1ZXMuICovXAorICAgIG1hY3JvKEludDQ4VG9WYWx1ZSwg
Tm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oSW50NDhUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJl
cikgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAqL1wK
ICAgICBtYWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlciB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKQEAgLTM1Niw2ICszNjAsMTcgQEAgaW5saW5lIHVuc2lnbmVkIGZvcndhcmRSZXdpcmluZ1Nl
bGVjdGlvbgogICAgICAgICAvLyBUaGlzIGxvc2VzIGluZm9ybWF0aW9uLiBPbmx5IHVzZSBpdCBp
ZiB0aGVyZSBhcmUgbm8gYmV0dGVyIGFsdGVybmF0aXZlcy4KICAgICAgICAgcmV0dXJuIDI1Owog
ICAgICAgICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZToKKyAgICAgICAgLy8gTG9zZXMgbm8gaW5m
b3JtYXRpb24uIEl0IGp1c3QgYm94ZXMgdGhlIHZhbHVlLCB3aGljaCBpcyB3aGF0IE9TUiB3YW50
cworICAgICAgICAvLyB0byBkbyBhbnl3YXkuCisgICAgICAgIHJldHVybiAxMDA7CisgICAgICAg
IAorICAgIGNhc2UgSW50NDhUb0RvdWJsZToKKyAgICAgICAgLy8gVGhpcyBpcyBsaWtlIEludDMy
VG9Eb3VibGU7IHdlIGNhbiB1c2UgaXQgYmVjYXVzZSBpdCBnaXZlcyBhIHNlbWFudGljYWxseQor
ICAgICAgICAvLyBlcXVpdmFsZW50IHZhbHVlIGJ1dCB0aGF0IHZhbHVlIG1heSBiZSBhbiBpbnQz
MiBpbiBhIGRvdWJsZSwgc28gd2UnZAorICAgICAgICAvLyByYXRoZXIgbm90IGlmIHdlIGNhbiBh
dm9pZCBpdC4KKyAgICAgICAgcmV0dXJuIDc1OworICAgICAgICAKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTU1NzkzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MCw3ICsxODAsOSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4
aXQoY29uc3QgCiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAg
ICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBEb3VibGVEaXNw
bGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOiB7CisgICAg
ICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIEludDQ4RGlzcGxhY2Vk
SW5KU1N0YWNrOgorICAgICAgICBjYXNlIFN0cmljdEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrOiB7
CiAgICAgICAgICAgICBudW1iZXJPZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3RlcnMrKzsKICAgICAg
ICAgICAgIEFTU0VSVChvcGVyYW5kSXNMb2NhbChyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkp
OwogICAgICAgICAgICAgCkBAIC0xOTgsNiArMjAwLDggQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6
OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5H
UFI6CiAgICAgICAgICAgICAgICAgY2FzZSBVSW50MzJJbkdQUjoKICAgICAgICAgICAgICAgICBj
YXNlIEluRlBSOgorICAgICAgICAgICAgICAgIGNhc2UgVW5ib3hlZEludDQ4SW5HUFI6CisgICAg
ICAgICAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFwb2lzb25lZFZpcnR1YWxSZWdpc3RlcnNbbG9jYWxdKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwb2lzb25lZFZpcnR1YWxSZWdpc3RlcnNbbG9jYWxdID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bWJlck9mUG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzKys7
CkBAIC0yMDksNiArMjEzLDEyIEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChj
b25zdCAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQor
CisgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazogLy8gSlNWQUxVRTY0IG1vZGUg
YWx3YXlzIHNwaWxscyBhcyBKU0NlbGwuCisgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZElu
SlNTdGFjazogLy8gbm8gc3VjaCB0aGluZyBpbiBKU1ZBTFVFNjQuCisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKICAgICAgICAgY2FzZSBBbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6CiAgICAgICAgICAgICBoYXZlVW5ib3hlZEludDMycyA9
IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTU1NzkzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OCwxMCArMzY4LDIwIEBAIHByaXZhdGU6CiAgICAgICAg
IH0KIAogICAgICAgICBjYXNlIEdldEJ5VmFsOiB7CisgICAgICAgICAgICBpZiAoIW5vZGUtPmNo
aWxkMSgpLT5wcmVkaWN0aW9uKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBpZiAoIW5vZGUtPnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVG
bG9hdDMyQXJyYXkoKQogICAgICAgICAgICAgICAgIHx8IG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVGbG9hdDY0QXJyYXkoKSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihTcGVjRG91YmxlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCisgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihTcGVjSW50NDgpOworICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgJKHJldmlzaW9uIDE1
NTc5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZl
UGxhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIGVudW0gU2lsZW50U3BpbGxB
Y3Rpb24gewogZW51bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBEb05vdGhpbmdGb3JGaWxsLAog
ICAgIFNldEludDMyQ29uc3RhbnQsCisgICAgU2V0SW50NDhDb25zdGFudCwKKyAgICBTZXRTdHJp
Y3RJbnQ0OENvbnN0YW50LAogICAgIFNldEJvb2xlYW5Db25zdGFudCwKICAgICBTZXRDZWxsQ29u
c3RhbnQsCiAgICAgU2V0VHJ1c3RlZEpTQ29uc3RhbnQsCkBAIC02MSw4ICs2MywxMiBAQCBlbnVt
IFNpbGVudEZpbGxBY3Rpb24gewogICAgIExvYWQzMlRhZywKICAgICBMb2FkMzJQYXlsb2FkLAog
ICAgIExvYWQzMlBheWxvYWRCb3hJbnQsCisgICAgTG9hZDMyUGF5bG9hZENvbnZlcnRUb0ludDQ4
LAorICAgIExvYWQzMlBheWxvYWRTaWduRXh0ZW5kLAogICAgIExvYWRQdHIsCiAgICAgTG9hZDY0
LAorICAgIExvYWQ2NFNoaWZ0UmlnaHQxNiwKKyAgICBMb2FkNjRTaGlmdExlZnQxNiwKICAgICBM
b2FkRG91YmxlLAogICAgIExvYWREb3VibGVCb3hEb3VibGUsCiAgICAgTG9hZEpTVW5ib3hEb3Vi
bGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkocmV2aXNpb24gMTU1NzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNDAg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkK
IAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Ym94SW50NDgoR1BSUmVnIHNvdXJjZUdQUiwgR1BSUmVn
IHRhcmdldEdQUiwgRGF0YUZvcm1hdCBmb3JtYXQpCit7CisgICAgR1BSUmVnIHRlbXBHUFI7Cisg
ICAgaWYgKHNvdXJjZUdQUiA9PSB0YXJnZXRHUFIpCisgICAgICAgIHRlbXBHUFIgPSBhbGxvY2F0
ZSgpOworICAgIGVsc2UKKyAgICAgICAgdGVtcEdQUiA9IHRhcmdldEdQUjsKKyAgICAKKyAgICBG
UFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKKworICAgIGlmIChmb3JtYXQgPT0gRGF0YUZvcm1h
dEludDQ4KQorICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBzb3VyY2VH
UFIpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKGZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0
SW50NDgpOworICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNvdXJjZUdQUiwgdGVtcEdQUik7
CisgICAgCisgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNEb3VibGUgPSBtX2ppdC5icmFuY2g2NCgK
KyAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzb3VyY2VHUFIsIHRlbXBHUFIpOworICAg
IAorICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHNvdXJjZUdQUiwgdGFyZ2V0R1BSKTsKKyAg
ICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgdGFyZ2V0R1BSKTsK
KyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworICAgIAorICAgIGlz
RG91YmxlLmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShzb3Vy
Y2VHUFIsIGZwcik7CisgICAgYm94RG91YmxlKGZwciwgdGFyZ2V0R1BSKTsKKyAgICBkb25lLmxp
bmsoJm1faml0KTsKKyAgICAKKyAgICBpZiAodGVtcEdQUiAhPSB0YXJnZXRHUFIpCisgICAgICAg
IHVubG9jayh0ZW1wR1BSKTsKKyAgICAKKyAgICB1bmxvY2soZnByKTsKK30KKwogR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UpCiB7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOwpAQCAtNjksMTEg
KzEwMywyMyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5z
cGlsbEZvcm1hdCgpOwogICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdp
c3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQzMikgeworICAgICAgICAgICAgc3dpdGNoIChzcGlsbEZvcm1hdCkgewor
ICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6IHsKICAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsK
ICAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwgZ3ByKTsKICAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFGb3JtYXRKU0ludDMy
OwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4
OgorICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBib3hJbnQ0OChncHIsIGdwciwgc3BpbGxGb3JtYXQp
OworICAgICAgICAgICAgICAgIHNwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdEpTOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKICAgICAgICAgICAgICAgICBpZiAoc3Bp
bGxGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBO
ZWVkIHRvIGJveCB0aGUgZG91YmxlLCBzaW5jZSB3ZSB3YW50IGEgSlNWYWx1ZS4KQEAgLTgxLDYg
KzEyNyw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAg
ICAgICAgICAgICAgICAgc3BpbGxGb3JtYXQgPSBEYXRhRm9ybWF0SlNEb3VibGU7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxs
Rm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIHNwaWxs
Rm9ybWF0KTsKICAgICAgICAgfQpAQCAtMTEzLDYgKzE2MCwxNiBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9Cisg
ICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBs
b2NrKGdwcik7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBhbGxvY2F0ZSgpOworICAgICAg
ICBib3hJbnQ0OChncHIsIHJlc3VsdEdQUiwgaW5mby5yZWdpc3RlckZvcm1hdCgpKTsKKyAgICAg
ICAgdW5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiByZXN1bHRHUFI7CisgICAgfQogCiAgICAg
Y2FzZSBEYXRhRm9ybWF0Q2VsbDoKICAgICAgICAgLy8gTm8gcmV0YWcgcmVxdWlyZWQgb24gSlNW
QUxVRTY0IQpAQCAtNzY4LDcgKzgyNSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZUludDMKICAgICAgICAgCiAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBp
bmZvLnNwaWxsRm9ybWF0KCk7CiAgICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3Bp
bGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQz
Mik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykg
fHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFG
b3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOwogICAg
ICAgICAKICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxP
cmRlclNwaWxsZWQpOwogICAgICAgICAKQEAgLTc4OSw2ICs4NDYsMjUgQEAgR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0g
RGF0YUZvcm1hdEpTSW50MzI7CiAgICAgICAgICAgICByZXR1cm4gZ3ByOwogICAgICAgICB9Cisg
ICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgc3BpbGxGb3JtYXQg
PT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICAvLyBDYW4gb25seSBoYXBw
ZW4gaWYgd2UndmUgYWxyZWFkeSBwcm92ZWQgdGhhdCB0aGUgdmFsdWUgaXMgYW4gaW50MzIuCisg
ICAgICAgICAgICAvLyBUaGF0J3MgYmVjYXVzZSBpZiBhIHZhbHVlIG9yaWdpbmF0ZWQgYXMgYSBK
U1ZhbHVlIHRoZW4gd2Ugd291bGQKKyAgICAgICAgICAgIC8vIHNwZWN1bGF0ZSB0aGF0IGl0J3Mg
YW4gaW50MzIgYmVmb3JlIHJlcHJlc2VudGluZyBpdCBhcyBhbiBpbnQ0OC4KKyAgICAgICAgICAg
IC8vIE90aGVyd2lzZSwgaWYgd2Uga25vd2luZ2x5IHByb2R1Y2VkIGFuIGludDQ4LCB0aGVuIHdl
IHdvdWxkIGJlCisgICAgICAgICAgICAvLyBib3hpbmcgaXQgaW50byBhIHZhbHVlIHVzaW5nIElu
dDQ4VG9WYWx1ZS4gVGhpcyBhc3NlcnRpb24gaXMgdmFsaWQKKyAgICAgICAgICAgIC8vIG9ubHkg
YmVjYXVzZSBJbnQ0OCBpcyBzb21ldGhpbmcgdGhhdCB3ZSBpbnRyb2R1Y2UgYXQgcHJlZGljdGlv
biB0aW1lLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNJbnQzMikp
OworICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkg
eworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYp
LCBncHIpOworICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwciwgZ3By
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwg
Z3ByKTsKKyAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAgICAg
ICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAKICAgICAgICAgLy8g
RmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgpAQCAtNzk3LDYgKzg3Myw3IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICB9CiAKICAgICBjYXNl
IERhdGFGb3JtYXRKUzogeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5cGUgJiBTcGVjSW50
NDgpKTsKICAgICAgICAgLy8gQ2hlY2sgdGhlIHZhbHVlIGlzIGFuIGludGVnZXIuCiAgICAgICAg
IEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dwcnMubG9jayhncHIpOwpAQCAt
ODQzLDYgKzkyMCwyNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQz
CiAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKICAgICAgICAgcmV0dXJu
IGdwcjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIH5TcGVjSW50MzIpKTsKKyAgICAgICAg
R1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAg
ICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwciwgZ3ByKTsKKyAgICAgICAgcmV0dXJuRm9y
bWF0ID0gRGF0YUZvcm1hdEludDMyOworICAgICAgICBpbmZvLmZpbGxJbnQzMigqbV9zdHJlYW0s
IGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIERh
dGFGb3JtYXRJbnQ0ODogeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5cGUgJiB+U3BlY0lu
dDMyKSk7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMu
bG9jayhncHIpOworICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIp
OworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihncHIpOworICAgICAgICByZXR1cm5G
b3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CisgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVh
bSwgZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CiAKICAgICBjYXNlIERhdGFGb3Jt
YXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKQEAgLTg4NSw2ICs5ODMs
MTQ4IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ0
OChFZGdlIGVkZ2UsIERhdGFGb3JtYXQgZGVzaXJlZEZvcm1hdCkKK3sKKyAgICBBU1NFUlQoZGVz
aXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9y
bWF0U3RyaWN0SW50NDgpOworICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JO
b2RlKGVkZ2UpOworICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CisgICAg
bV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNNYWNoaW5lSW50KTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAg
R2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIo
dmlydHVhbFJlZ2lzdGVyKTsKKworICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7
CisgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogeworICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0
YW50KCkgJiYgIXZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkg
fHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKKyAgICAgICAgICAg
IHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCAwKTsKKyAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKworICAgICAgICBpZiAoZWRnZS0+
aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHZhbHVlT2ZKU0Nv
bnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCh2YWx1ZS5pc01hY2hpbmVJ
bnQoKSk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBT
cGlsbE9yZGVyQ29uc3RhbnQpOworICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IHZhbHVlLmFz
TWFjaGluZUludCgpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1h
dEludDQ4KQorICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgMTY7CisgICAgICAgICAg
ICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NCh2YWx1ZSksIGdwcik7CisgICAgICAg
ICAgICBpbmZvLmZpbGxHUFIoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOworICAgICAg
ICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgRGF0YUZvcm1h
dCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKKyAgICAgICAgCisgICAgICAgIC8v
IEZJWE1FISEhCisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQg
JiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMiB8fCBzcGls
bEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0
cmljdEludDQ4KTsKKyAgICAgICAgCisgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFs
UmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKKyAgICAgICAgCisgICAgICAgIGlmIChzcGls
bEZvcm1hdCA9PSBEYXRhRm9ybWF0SlNJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
SW50MzIpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGtub3cgdGhpcyB3YXMgc3BpbGxlZCBhcyBh
biBpbnRlZ2VyIHdlIGNhbiBmaWxsIHdpdGhvdXQgY2hlY2tpbmcuCisgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsK
KyAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGdwciwgZ3ByKTsKKyAgICAgICAg
ICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAg
ICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KGdwcik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdwcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0
ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OChncHIpOworICAg
ICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3BpbGxGb3JtYXQg
PT0gRGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0
OCkgeworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBE
YXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQg
PT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChU
cnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdElu
dDQ4KGdwcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAg
ICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAg
ICAgICAgIGluZm8uZmlsbEludDQ4KGdwcik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAg
ICAgICB9CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBncHIpOworCisgICAgICAgIC8vIEZpbGwgYXMgSlNWYWx1ZSwgYW5kIGZh
bGwgdGhyb3VnaC4KKyAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0
YUZvcm1hdEpTSW50MzIpOworICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7CisgICAgfQorCisg
ICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKKyAgICAgICAgLy8gQ2hlY2sgdGhlIHZhbHVlIGlzIGFu
IGludGVnZXIuIE5vdGUgdGhhdCB3ZSB3b3VsZCAqbGlrZSogdG8gdW5ib3ggYW4gSW50NDgKKyAg
ICAgICAgLy8gYXQgdGhpcyBwb2ludCBidXQgdGhpcyBpcyB0b28gY29zdGx5LiBXZSBvbmx5ICpw
cm92ZSogdGhhdCB0aGlzIGlzIGFuIEludDQ4CisgICAgICAgIC8vIGV2ZW4gdGhvdWdoIHdlIGNo
ZWNrIGlmIGl0J3MgYW4gaW50MzIuCisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwor
ICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBpZiAodHlwZSAmIH5TcGVjSW50MzIp
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciks
IGVkZ2UsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgZ3ByLCBHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9Q
dHIoZ3ByKTsKKyAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdElu
dDQ4KSB7CisgICAgICAgICAgICBmaWxsU3RyaWN0SW50NDgoZ3ByKTsKKyAgICAgICAgICAgIHJl
dHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTY0
KDE2KSwgZ3ByKTsKKyAgICAgICAgZmlsbEludDQ4KGdwcik7CisgICAgICAgIHJldHVybiBncHI7
CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0
SlNJbnQzMjogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9n
cHJzLmxvY2soZ3ByKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoZ3ByKTsKKyAg
ICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAg
ICAgICAgICBmaWxsU3RyaWN0SW50NDgoZ3ByKTsKKyAgICAgICAgICAgIHJldHVybiBncHI7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTY0KDE2KSwgZ3ByKTsK
KyAgICAgICAgZmlsbEludDQ4KGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisg
ICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGlu
Zm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIGlmIChkZXNpcmVk
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgICAgIHJldHVybiBncHI7
CisgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAg
IGZpbGxTdHJpY3RJbnQ0OChncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKyAgICAg
ICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGlu
Zm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIGlmIChkZXNpcmVk
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAg
ICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgIGZpbGxJ
bnQ0OChncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZv
cm1hdERvdWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKKyAgICBjYXNlIERhdGFG
b3JtYXRDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CisgICAgY2FzZSBEYXRhRm9y
bWF0SlNDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogeworICAgICAgICB0ZXJt
aW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7
CisgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAgICAgICAgcmV0dXJu
IGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIElu
dmFsaWRHUFJSZWc7CisgICAgfQorfQorCiBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVEb3VibGUoRWRnZSBlZGdlKQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
QEAgLTk0NSw2ICsxMTg1LDI0IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZURvdWIKICAgICAgICAgICAgIHVubG9jayhncHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODogeworICAg
ICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBtX2dwcnMucmV0
YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAgICAg
ICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwg
Z3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEludDQ4KGdwcik7CisgICAgICAgICAgICB1bmxv
Y2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgICAgIEdQUlJlZyBn
cHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxS
ZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAg
ICBpbmZvLmZpbGxTdHJpY3RJbnQ0OChncHIpOworICAgICAgICAgICAgdW5sb2NrKGdwcik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKQEAgLTEwMDksNiArMTI2NywyNCBAQCBGUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIG1fZ3Bycy51bmxv
Y2soZ3ByKTsKICAgICAgICAgcmV0dXJuIGZwcjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2Ug
RGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAg
ICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBtX2ppdC5yc2hpZnQzMihUcnVzdGVkSW1t
MzIoMTYpLCBncHIpOworICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OCgqbV9zdHJlYW0sIGdw
cik7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKKyAgICAgICAgLy8gZmFsbCB0aHJvdWdo
LgorICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAg
ICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CisgICAgICAgIEdQUlJlZyBncHIgPSBp
bmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBtX2ppdC5jb252
ZXJ0SW50NjRUb0RvdWJsZShncHIsIGZwcik7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsK
KyAgICAgICAgcmV0dXJuIGZwcjsKKyAgICB9CiAKICAgICAvLyBVbmJveCB0aGUgZG91YmxlCiAg
ICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKQEAgLTExMTEsNyArMTM4Nyw5IEBAIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICBjYXNlIERhdGFGb3JtYXRK
U0RvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0
SlNCb29sZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46IHsKKyAgICBjYXNlIERhdGFG
b3JtYXRCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZv
cm1hdFN0cmljdEludDQ4OiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9u
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRl
KCk7CiAgICAgfQpAQCAtMTE5NCw3ICsxNDcyLDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlQm9vbAogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2Ug
RGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBE
YXRhRm9ybWF0Q2VsbDogeworICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CisgICAgY2FzZSBEYXRh
Rm9ybWF0SW50NDg6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKICAgICAgICAg
dGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CkBAIC0xNTAzLDYgKzE3ODMs
NDAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyQ29tcGFyZQogICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFu
KTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDQ4Q29tcGFyZShOb2RlKiBu
b2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7Cisg
ICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5j
aGlsZDIoKSwgb3AxKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEs
IG9wMik7CisgICAgCisgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBv
cDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgCisgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZv
cm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KKyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJ
bW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dC5ncHIoKSwgbV9jdXJyZW50Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7Cit9CisKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUludDQ4QnJhbmNoKE5vZGUqIG5vZGUsIE5v
ZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlv
bikKK3sKKyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPnRha2VuQmxvY2soKTsK
KyAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPm5vdFRha2VuQmxvY2soKTsK
KworICAgIC8vIFRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2lsbCBicmFuY2ggdG8gdGhlIHRha2Vu
IGJsb2NrLgorICAgIC8vIElmIHRha2VuIGlzIG5leHQsIHN3aXRjaCB0YWtlbiB3aXRoIG5vdFRh
a2VuICYgaW52ZXJ0IHRoZSBicmFuY2ggY29uZGl0aW9uIHNvIHdlIGNhbiBmYWxsIHRocm91Z2gu
CisgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGNvbmRpdGlvbiA9IEpJ
VENvbXBpbGVyOjppbnZlcnQoY29uZGl0aW9uKTsKKyAgICAgICAgQmFzaWNCbG9jayogdG1wID0g
dGFrZW47CisgICAgICAgIHRha2VuID0gbm90VGFrZW47CisgICAgICAgIG5vdFRha2VuID0gdG1w
OworICAgIH0KKyAgICAKKyAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQg
b3AyKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBvcDEpOworICAgIAorICAgIGJyYW5jaDY0KGNvbmRp
dGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCkpOworICAgIGp1bXAobm90VGFrZW4pOworfQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlQ29tcGFyZShOb2RlKiBub2RlLCBNYWNy
b0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKIHsKICAgICBTcGVjdWxhdGVE
b3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTU1
NzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsOSBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFu
IFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgICAgICBzcGlsbEFjdGlvbiA9IFN0b3JlMzJQYXls
b2FkOwogICAgICAgICBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0Q2VsbCB8
fCByZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RvcmFnZSkKICAgICAgICAgICAgIHNwaWxs
QWN0aW9uID0gU3RvcmVQdHI7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBlbHNlIGlmIChyZWdp
c3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgcmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZv
cm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICBzcGlsbEFjdGlvbiA9IFN0b3JlNjQ7Cisg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgJiBEYXRh
Rm9ybWF0SlMpOwogICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZTY0OwogICAgICAgICB9
CkBAIC0zODYsNiArMzg4LDQwIEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4gU3BlY3VsYXRpdmVK
SVQ6OnMKICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRTdG9yYWdl
KSB7CiAgICAgICAgIEFTU0VSVChpbmZvLmdwcigpID09IHNvdXJjZSk7CiAgICAgICAgIGZpbGxB
Y3Rpb24gPSBMb2FkUHRyOworICAgIH0gZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZv
cm1hdEludDQ4KSB7CisgICAgICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKQorICAgICAgICAg
ICAgZmlsbEFjdGlvbiA9IFNldEludDQ4Q29uc3RhbnQ7CisgICAgICAgIGVsc2UgaWYgKGlzSlNJ
bnQzMihpbmZvLnNwaWxsRm9ybWF0KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0SlMpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDMyUGF5bG9hZENvbnZlcnRUb0lu
dDQ4OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdElu
dDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAgICAgZWxzZSBpZiAo
aW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgICAg
IGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlmdExlZnQxNjsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5z
cGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXROb25lKQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9
IExvYWQ2NDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFw
cGVuLiBBbnl0aGluZyB0aGF0IHF1YWxpZmllcyBhcyBhbiBpbnQzMiB3aWxsIG5ldmVyCisgICAg
ICAgICAgICAvLyBiZSB0dXJuZWQgaW50byBhIGNlbGwgKGltbWVkaWF0ZSBzcGVjIGZhaWwpIG9y
IGEgZG91YmxlICh0by1kb3VibGUKKyAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zIGludm9sdmUg
YSBzZXBhcmF0ZSBub2RlKS4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3Jt
YXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpCisgICAgICAg
ICAgICBmaWxsQWN0aW9uID0gU2V0U3RyaWN0SW50NDhDb25zdGFudDsKKyAgICAgICAgZWxzZSBp
ZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09
IERhdGFGb3JtYXRKUykKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2FkU2ln
bkV4dGVuZDsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3Jt
YXRJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlmdFJpZ2h0MTY7Cisg
ICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NDgpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIGlmIChp
bmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCisgICAgICAgICAgICBmaWxsQWN0
aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNob3VsZCBuZXZl
ciBoYXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFuIGludDMyIHdpbGwgbmV2ZXIK
KyAgICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFp
bCkgb3IgYSBkb3VibGUgKHRvLWRvdWJsZQorICAgICAgICAgICAgLy8gY29udmVyc2lvbnMgaW52
b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChyZWdpc3Rl
ckZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTM5Myw3ICs0
MjksNiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAg
IGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICBpZiAodmFsdWVPZkpTQ29u
c3RhbnQobm9kZSkuaXNDZWxsKCkpCiAgICAgICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldFRy
dXN0ZWRKU0NvbnN0YW50OwotICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZpbGxB
Y3Rpb24gPSBTZXRKU0NvbnN0YW50OwogICAgICAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3Jt
YXQoKSA9PSBEYXRhRm9ybWF0SW50MzIpIHsKICAgICAgICAgICAgIEFTU0VSVChyZWdpc3RlckZv
cm1hdCA9PSBEYXRhRm9ybWF0SlNJbnQzMik7CkBAIC01MTIsNiArNTQ3LDEyIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICBjYXNlIFNldEludDMyQ29uc3Rh
bnQ6CiAgICAgICAgIG1faml0Lm1vdmUoSW1tMzIodmFsdWVPZkludDMyQ29uc3RhbnQocGxhbi5u
b2RlKCkpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2V0SW50NDhD
b25zdGFudDoKKyAgICAgICAgbV9qaXQubW92ZShJbW02NCh2YWx1ZU9mSlNDb25zdGFudChwbGFu
Lm5vZGUoKSkuYXNNYWNoaW5lSW50KCkgPDwgMTYpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBTZXRTdHJpY3RJbnQ0OENvbnN0YW50OgorICAgICAgICBtX2ppdC5tb3Zl
KEltbTY0KHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS5hc01hY2hpbmVJbnQoKSksIHBs
YW4uZ3ByKCkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFNldEJvb2xlYW5Db25zdGFudDoK
ICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIodmFsdWVPZkJvb2xlYW5Db25zdGFudChw
bGFuLm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CkBAIC01MzMsNiArNTc0
LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFs
UmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3RlciwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTG9hZDMyUGF5bG9hZENvbnZlcnRUb0ludDQ4OgorICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxh
bi5ncHIoKSk7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHBsYW4uZ3ByKCksIHBs
YW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBwbGFu
LmdwcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkMzJQYXlsb2FkU2lnbkV4dGVu
ZDoKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4ubm9k
ZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5zaWdu
RXh0ZW5kMzJUb1B0cihwbGFuLmdwcigpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBMb2FkRG91YmxlQm94RG91YmxlOgogICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29t
cGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5n
cHIoKSk7CiAgICAgICAgIG1faml0LnN1YjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwgcGxhbi5ncHIoKSk7CkBAIC01NzQsNiArNjI0LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICBjYXNlIExvYWQ2NDoKICAgICAgICAgbV9qaXQubG9h
ZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIo
KSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIExvYWQ2NFNoaWZ0Umln
aHQxNjoKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4u
bm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5y
c2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBMb2FkNjRTaGlmdExlZnQxNjoKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3By
KCkpOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBwbGFuLmdwcigp
KTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIExvYWREb3VibGU6CiAgICAgICAg
IG1faml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZp
cnR1YWxSZWdpc3RlcigpKSwgcGxhbi5mcHIoKSk7CkBAIC0xNDE2LDYgKzE0NzQsMTAgQEAgYm9v
bCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbgogCiAgICAgICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xl
SW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVz
ZSkpCisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ0OEJyYW5jaChub2RlLCBicmFuY2hO
b2RlLCBjb25kaXRpb24pOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQogICAgICAgICAgICAgY29tcGls
ZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGRvdWJsZUNvbmRpdGlvbik7
CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ29tcGFyZUVxKSB7CkBAIC0yMTQ5LDYg
KzIyMTEsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogICAg
ICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG9wMS5mb3JtYXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2Fz
ZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCBv
cDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIFJldXNlLCBvcDEpOworICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBtX2ppdC56ZXJv
RXh0ZW5kMzJUb1B0cihvcDFHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIGludDMyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdEludDMyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOgogICAg
IGNhc2UgTm90Q2VsbFVzZTogewpAQCAtMjkxNSw2ICsyOTg5LDMyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICAgICAgaW50MzJSZXN1bHQoZ3ByUmVzdWx0
LCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAgICAgCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgLy8gV2lsbCB3ZSBuZWVk
IGFuIG92ZXJmbG93IGNoZWNrPyBJZiB3ZSBjYW4gcHJvdmUgdGhhdCBuZWl0aGVyIGlucHV0IGNh
biBiZQorICAgICAgICAvLyBJbnQ0OCB0aGVuIHRoZSBvdmVyZmxvdyBjaGVjayB3aWxsIG5vdCBi
ZSBuZWNlc3NhcnkuCisgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5jb3VsZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAgICAgICAmJiAhbV9zdGF0ZS5mb3JOb2Rl
KG5vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpKSB7CisgICAgICAgICAgICBT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9k
ZS0+Y2hpbGQyKCksIG9wMSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworICAgICAgICAgICAgbV9qaXQuYWRkNjQob3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5n
cHIoKSk7CisgICAgICAgICAgICBpbnQ2NFJlc3VsdChyZXN1bHQuZ3ByKCksIG9wMSwgbm9kZSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFNwZWN1
bGF0ZUludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVj
dWxhdGVJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7CisgICAgICAgIG1faml0Lm1vdmUob3Ax
LmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAg
ICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgIG1faml0
LmJyYW5jaEFkZDY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AyLmdwcigpLCByZXN1bHQu
Z3ByKCkpKTsKKyAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIAogICAgIGNh
c2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKQEAgLTMwNjAsNiArMzE2MCwzMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJpdGhTdWIoTm9kCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAg
IAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAg
IC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxvdyBjaGVjaz8gSWYgd2UgY2FuIHByb3ZlIHRoYXQg
bmVpdGhlciBpbnB1dCBjYW4gYmUKKyAgICAgICAgLy8gSW50NDggdGhlbiB0aGUgb3ZlcmZsb3cg
Y2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5LgorICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KQorICAgICAgICAgICAgJiYg
IW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KSkg
eworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJh
bmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBvcDEpOworICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgIG1faml0LnN1YjY0KG9wMS5ncHIoKSwgb3Ay
LmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgaW50NjRSZXN1bHQocmVzdWx0Lmdw
cigpLCBvcDEsIG5vZGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOworICAgICAg
ICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgc3BlY3VsYXRp
b25DaGVjaygKKyAgICAgICAgICAgIEludDQ4T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisg
ICAgICAgICAgICBtX2ppdC5icmFuY2hTdWI2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9w
Mi5ncHIoKSwgcmVzdWx0LmdwcigpKSk7CisgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdC5ncHIo
KSwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2
NCkKKwogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzA4OCw2ICszMjE0LDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAogCiAgICAgICAgIG1faml0Lm1v
dmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogCisgICAgICAgIC8vIE5vdGU6IHRoZXJlIGlz
IG5vIG5vdGlvbiBvZiBiZWluZyBub3QgdXNlZCBhcyBhIG51bWJlciwgYnV0IHNvbWVvbmUKKyAg
ICAgICAgLy8gY2FyaW5nIGFib3V0IG5lZ2F0aXZlIHplcm8uCisgICAgICAgIAogICAgICAgICBp
ZiAoYnl0ZWNvZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAg
ICAgICAgICAgICBtX2ppdC5uZWczMihyZXN1bHQuZ3ByKCkpOwogICAgICAgICBlbHNlIHsKQEAg
LTMwOTksNiArMzIyOCw0MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdh
dGUoCiAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVz
ZTogeworICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRC
ZVR5cGUoU3BlY0ludDQ4KSkgeworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsK
KyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgICAg
ICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm5lZzY0
KHJlc3VsdEdQUik7CisgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVa
ZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjaygKKyAgICAgICAgICAgICAgICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygp
LCAwLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIHJlc3VsdEdQUikpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50NDhS
ZXN1bHQocmVzdWx0R1BSLCBvcDEsIG5vZGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7Cisg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92ZXJmbG93LCBKU1Zh
bHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoTmVnNjQoTWFjcm9Bc3NlbWJs
ZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIpKTsKKyAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9y
ZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkgeworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdz
KCksIDAsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCByZXN1bHRHUFIpKTsKKyAgICAgICAgfQorICAgICAgICBpbnQ0OFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0
ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTMxNjQsNiArMzMy
OSw2MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNdWwoTm9kCiAgICAgICAg
IGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpICAgCisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7
CisgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgY2xldmVyLiBXZSB3YW50IHRvIGRvIGFuIGludDQ4
IG11bHRpcGxpY2F0aW9uIGFuZCBjaGVjayB0aGUKKyAgICAgICAgLy8gaW50NDggb3ZlcmZsb3cg
Yml0LiBUaGVyZSBpcyBubyBkaXJlY3QgaGFyZHdhcmUgc3VwcG9ydCBmb3IgdGhpcywgYnV0IHdl
IGRvCisgICAgICAgIC8vIGhhdmUgdGhlIGFiaWxpdHkgdG8gZG8gYW4gaW50NjQgbXVsdGlwbGlj
YXRpb24gYW5kIGNoZWNrIHRoZSBpbnQ2NCBvdmVyZmxvdworICAgICAgICAvLyBiaXQuIFdlIGxl
dmVyYWdlIHRoYXQuIENvbnNpZGVyIHRoYXQgYSwgYiBhcmUgaW50NDggbnVtYmVycyBpbnNpZGUg
aW50NjQKKyAgICAgICAgLy8gcmVnaXN0ZXJzLCB3aXRoIHRoZSBoaWdoIDE2IGJpdHMgYmVpbmcg
c2lnbi1leHRlbmRlZC4gV2UgY2FuIGRvOgorICAgICAgICAvLworICAgICAgICAvLyAgICAgKGEg
KiAoYiA8PCAxNikpCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoaXMgd2lsbCBnaXZlIHVzIGEg
bGVmdC1zaGlmdGVkIGludDQ4ICh2YWx1ZSBpcyBpbiBoaWdoIDQ4IGJpdHMsIGxvdyAxNgorICAg
ICAgICAvLyBiaXRzIGFyZSB6ZXJvKSBwbHVzIHRoZSBpbnQ0OCBvdmVyZmxvdyBiaXQuIEkuZS4g
d2hldGhlciB0aGlzIDY0LWJpdAorICAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBvdmVyZmxvd3Mg
aXMgaWRlbnRpY2FsIHRvIHdoZXRoZXIgdGhlICdhICogYicgNDgtYml0CisgICAgICAgIC8vIG11
bHRpcGxpY2F0aW9uIG92ZXJmbG93cy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSW4gb3VyIG5v
bWVuY2xhdHVyZSwgdGhpcyBpczoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIHN0cmljdElu
dDQ4KGEpICogaW50NDgoYikgPT4gaW50NDgKKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhhdCBp
cyAic3RyaWN0SW50NDgiIG1lYW5zIHVuc2hpZnRlZCBhbmQgImludDQ4IiBtZWFucyBsZWZ0LXNo
aWZ0ZWQgYnkgMTYKKyAgICAgICAgLy8gYml0cy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gV2Ug
ZG9uJ3QgY2FyZSB3aGljaCBvZiBvcDEgb3Igb3AyIHNlcnZlcyBhcyB0aGUgbGVmdC1zaGlmdGVk
IG9wZXJhbmQsIHNvCisgICAgICAgIC8vIHdlIGp1c3QgZG8gd2hhdGV2ZXIgaXMgbW9yZSBjb252
ZW5pZW50IGZvciBvcDEgYW5kIGhhdmUgb3AyIGRvIHRoZQorICAgICAgICAvLyBvcHBvc2l0ZS4g
VGhpcyBlbnN1cmVzIHRoYXQgd2UgZG8gYXQgbW9zdCBvbmUgc2hpZnQuCisKKyAgICAgICAgU3Bl
Y3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hp
bGQyKCksIE9wcG9zaXRlU2hpZnQsIG9wMSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CisgICAgICAgIAorICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAg
ICAgICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOworICAgICAgICAKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAg
ICAgICAgICAgIEludDQ4T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBt
X2ppdC5icmFuY2hNdWw2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMUdQUiwgb3AyR1BS
LCByZXN1bHRHUFIpKTsKKyAgICAgICAgCisgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVO
ZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHJlc3VsdE5vblplcm8gPSBtX2ppdC5icmFuY2hUZXN0NjQoCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVybywgSlNW
YWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2Vt
Ymxlcjo6TGVzc1RoYW4sIG9wMUdQUiwgVHJ1c3RlZEltbTY0KDApKSk7CisgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJl
Z3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6
TGVzc1RoYW4sIG9wMkdQUiwgVHJ1c3RlZEltbTY0KDApKSk7CisgICAgICAgICAgICByZXN1bHRO
b25aZXJvLmxpbmsoJm1faml0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50NDhS
ZXN1bHQocmVzdWx0R1BSKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KQogICAgICAgICAKICAgICBjYXNlIE51bWJlclVzZTogewogICAgICAgICBTcGVj
dWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0zNTg3LDcg
KzM4MDcsMTQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLAogICAg
ICAgICBjb21waWxlSW50MzJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0KKyAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAgICAgICAgY29tcGlsZUludDQ4
Q29tcGFyZShub2RlLCBjb25kaXRpb24pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVEb3VibGVDb21wYXJlKG5vZGUsIGRv
dWJsZUNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3MzcsNiArMzk2NCwy
MyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kCiAgICAgICAgIGNv
bXBpbGVJbnQzMkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkgICAKKyAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2Nr
ID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9j
ayAhPSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2st
PmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ0
OEJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAg
ICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5jaEluZGV4SW5CbG9jazsKKyAg
ICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUludDQ4Q29tcGFyZShub2RlLCBNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAg
ICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CShyZXZpc2lvbiAxNTU3OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw5ICsxNTksNyBAQCBwdWJsaWM6CiAg
ICAgLy8gYW5kIGl0cyBtYWNoaW5lIHJlZ2lzdGVycyBtYXkgYmUgcmV1c2VkLgogICAgIGJvb2wg
Y2FuUmV1c2UoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJhdGlv
bkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJl
Z2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGluZm8uY2FuUmV1c2UoKTsKKyAgICAgICAgcmV0dXJu
IGdlbmVyYXRpb25JbmZvKG5vZGUpLmNhblJldXNlKCk7CiAgICAgfQogICAgIGJvb2wgY2FuUmV1
c2UoRWRnZSBub2RlVXNlKQogICAgIHsKQEAgLTIzNywxNSArMjM1LDExIEBAIHB1YmxpYzoKICAg
ICAvLyBhdm9pZCBzcGlsbGluZyB2YWx1ZXMgd2Ugd2lsbCBuZWVkIGltbWVkaWF0ZWx5KS4KICAg
ICBib29sIGlzRmlsbGVkKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0g
RGF0YUZvcm1hdE5vbmU7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5yZWdp
c3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXROb25lOwogICAgIH0KICAgICBib29sIGlzRmlsbGVk
RG91YmxlKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVh
bFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25J
bmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdp
c3Rlcik7Ci0gICAgICAgIHJldHVybiBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1h
dERvdWJsZTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKG5vZGUpLnJlZ2lzdGVyRm9y
bWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZTsKICAgICB9CiAKICAgICAvLyBDYWxsZWQgb24gYW4g
b3BlcmFuZCBvbmNlIGl0IGhhcyBiZWVuIGNvbnN1bWVkIGJ5IGEgcGFyZW50IG5vZGUuCkBAIC0y
NTMsOCArMjQ3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1
bHQoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1
YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9u
SW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVn
aXN0ZXIpOworICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvKG5v
ZGUpOwogCiAgICAgICAgIC8vIHVzZSgpIHJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2YWx1ZSBiZWNv
bWVzIGRlYWQsIGFuZCBhbnkKICAgICAgICAgLy8gYXNzb2NpYXRlZCByZXNvdXJjZXMgbWF5IGJl
IGZyZWVkLgpAQCAtMzMzLDYgKzMyNiw3IEBAIHB1YmxpYzoKICAgICAvLyBtYWNoaW5lIHJlZ2lz
dGVycywgaW1wbGljaXRseSBnZW5lcmF0aW5nIHNwZWN1bGF0aW9uIGNoZWNrcyBhcyBuZWVkZWQu
CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVJbnQzMihFZGdlLCBEYXRhRm9ybWF0JiByZXR1cm5G
b3JtYXQpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50MzJTdHJpY3QoRWRnZSk7CisgICAg
R1BSUmVnIGZpbGxTcGVjdWxhdGVJbnQ0OChFZGdlLCBEYXRhRm9ybWF0IGRlc2lyZWRGb3JtYXQp
OwogICAgIEZQUlJlZyBmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxs
U3BlY3VsYXRlQ2VsbChFZGdlKTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRn
ZSk7CkBAIC00NjgsNiArNDYyLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGJv
eERvdWJsZShmcHIsIGFsbG9jYXRlKCkpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGJveEludDQ4
KEdQUlJlZyBzb3VyY2VHUFIsIEdQUlJlZyB0YXJnZXRHUFIsIERhdGFGb3JtYXQgZm9ybWF0KTsK
ICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwg
R1BSUmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRHUFIpCiAgICAgewpAQCAtNTU5LDggKzU1NSw4
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBib29sIGlzS25vd25JbnRl
Z2VyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAm
IH5TcGVjSW50MzIpOyB9Ci0gICAgYm9vbCBpc0tub3duQ2VsbChOb2RlKiBub2RlKSB7IHJldHVy
biAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiB+U3BlY0NlbGwpOyB9CisgICAgYm9v
bCBpc0tub3duSW50ZWdlcihOb2RlKiBub2RlKSB7IHJldHVybiAhbV9zdGF0ZS5mb3JOb2RlKG5v
ZGUpLmlzVHlwZShTcGVjSW50MzIpOyB9CisgICAgYm9vbCBpc0tub3duQ2VsbChOb2RlKiBub2Rl
KSB7IHJldHVybiAhbV9zdGF0ZS5mb3JOb2RlKG5vZGUpLmlzVHlwZShTcGVjQ2VsbCk7IH0KICAg
ICAKICAgICBib29sIGlzS25vd25Ob3RJbnRlZ2VyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9z
dGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNJbnQzMik7IH0KICAgICBib29sIGlzS25v
d25Ob3ROdW1iZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSku
bV90eXBlICYgU3BlY051bWJlcik7IH0KQEAgLTkwMCw3ICs4OTYsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbml0Q29uc3RhbnRJbmZvKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBBU1NFUlQo
aXNJbnQzMkNvbnN0YW50KG5vZGUpIHx8IGlzTnVtYmVyQ29uc3RhbnQobm9kZSkgfHwgaXNKU0Nv
bnN0YW50KG5vZGUpKTsKLSAgICAgICAgZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVy
KG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpKS5pbml0Q29uc3RhbnQobm9kZSwgbm9kZS0+cmVmQ291
bnQoKSk7CisgICAgICAgIGdlbmVyYXRpb25JbmZvKG5vZGUpLmluaXRDb25zdGFudChub2RlLCBu
b2RlLT5yZWZDb3VudCgpKTsKICAgICB9CiAgICAgCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhZGQg
Y2FsbHMgdG8gQysrIGhlbHBlciBmdW5jdGlvbnMuCkBAIC0xODg5LDEwICsxODg1LDE2IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBu
b2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBn
ZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAgICAg
ICAgCi0gICAgICAgIHJldHVybiBpbmZvLmlzSlNJbnQzMigpOworICAgICAgICByZXR1cm4gZ2Vu
ZXJhdGlvbkluZm8obm9kZSkuaXNKU0ludDMyKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgYmV0
dGVyVXNlU3RyaWN0SW50NDgoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhZ2Vu
ZXJhdGlvbkluZm8obm9kZS0+Y2hpbGQxKCkpLmlzSW50NDgoKTsKKyAgICB9CisgICAgYm9vbCBi
ZXR0ZXJVc2VTdHJpY3RJbnQ0OChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYmV0
dGVyVXNlU3RyaWN0SW50NDgoZWRnZS5ub2RlKCkpOwogICAgIH0KICAgICAKICAgICBib29sIGNv
bXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fz
c2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0RGR09wZXJhdGlvbl9FSkopOwpAQCAtMjE5NSw2
ICsyMTk3LDE2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2dlbmVyYXRpb25J
bmZvW29wZXJhbmRUb0xvY2FsKHZpcnR1YWxSZWdpc3RlcildOwogICAgIH0KKyAgICAKKyAgICBH
ZW5lcmF0aW9uSW5mbyYgZ2VuZXJhdGlvbkluZm8oTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIobm9kZS0+dmlydHVhbFJl
Z2lzdGVyKCkpOworICAgIH0KKyAgICAKKyAgICBHZWVucmF0aW9uSW5mbyYgZ2VuZXJhdGlvbklu
Zm8oRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKGVkZ2Uu
bm9kZSgpKTsKKyAgICB9CiAKICAgICAvLyBUaGUgSklULCB3aGlsZSBhbHNvIHByb3ZpZGVzIE1h
Y3JvQXNzZW1ibGVyIGZ1bmN0aW9uYWxpdHkuCiAgICAgSklUQ29tcGlsZXImIG1faml0OwpAQCAt
MjYyOSw2ICsyNjQxLDEwMCBAQCBwcml2YXRlOgogICAgIERhdGFGb3JtYXQgbV9mb3JtYXQ7CiB9
OwogCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NDggKGkuZS4gaXQncyBsZWZ0LXNoaWZ0
ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorY2xhc3MgU3BlY3VsYXRlSW50NDhPcGVyYW5kIHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVK
SVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0
aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1f
ZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAo
aml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAor
ICAgIH5TcGVjdWxhdGVJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3By
T3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3By
T3JJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAg
IEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFs
aWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3Vs
YXRlSW50NDgoZWRnZSgpLCBEYXRhRm9ybWF0SW50NDgpOworICAgICAgICByZXR1cm4gbV9ncHJP
ckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1f
aml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZl
SklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7
Cit9OworCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NDggKGkuZS4gdGhlIHBheWxvYWQgaXMg
aW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgorY2xh
c3MgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBT
cGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdl
LCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRp
b24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAg
ICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNl
S2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2Rl
KCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIH5TcGVjdWxhdGVJbnQ0
OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9IEludmFs
aWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9
CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vk
Z2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAgIEdQUlJlZyBncHIoKQorICAg
IHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAg
ICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlU3RyaWN0SW50NDgoZWRn
ZSgpLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICByZXR1cm4gbV9ncHJPckludmFs
aWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1faml0LT51
c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZlSklUKiBt
X2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7Cit9Owor
CiBjbGFzcyBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgewogcHVibGljOgogICAgIGV4cGxp
Y2l0IFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdl
IGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVj
dWxhdGlvbikKQEAgLTI2NzYsNiArMjc4Miw4MCBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dw
ck9ySW52YWxpZDsKIH07CiAKK2VudW0gT3Bwb3NpdGVTaGlmdFRhZyB7IE9wcG9zaXRlU2hpZnQg
fTsKKworY2xhc3MgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQoU3BjdWxhdGl2ZUpJVCog
aml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgPSBBdXRvbWF0aWNPcGVyYW5k
U3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdl
KQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgICAgICwgbV9z
dHJpY3Qoaml0LT5iZXR0ZXJVc2VTdHJpY3RJbnQ0OChlZGdlKSkKKyAgICB7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRn
ZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVk
KG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQg
U3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kKFNwY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBl
ZGdlLCBjb25zdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQmIG90aGVyLCBPcGVyYW5k
U3BlY3VsYXRpb25Nb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6
IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52
YWxpZChJbnZhbGlkR1BSUmVnKQorICAgICAgICAsIG1fc3RyaWN0KG90aGVyLm1fc3RyaWN0KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAg
aWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAg
ICAKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQoU3BjdWxhdGl2
ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wcG9zaXRlU2hpZnRUYWcsIGNvbnN0IFNwZWN1bGF0ZVdo
aWNoZXZlckludDQ4T3BlcmFuZCYgb3RoZXIsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgPSBBdXRv
bWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAs
IG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisg
ICAgICAgICwgbV9zdHJpY3QoIW90aGVyLm1fc3RyaWN0KQorICAgIHsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVz
ZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9k
ZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICB+U3BlY3VsYXRlV2hp
Y2hldmVySW50NDhPcGVyYW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dwck9ySW52YWxp
ZCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayhtX2dwck9ySW52YWxp
ZCk7CisgICAgfQorICAgIAorICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9lZGdlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcg
Z3ByKCkKKyAgICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVn
KSB7CisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlSW50
NDgoCisgICAgICAgICAgICAgICAgZWRnZSgpLCBtX3N0cnVjdCA/IERhdGFGb3JtYXRTdHJpY3RJ
bnQ0OCA6IERhdGFGb3JtYXRJbnQ0OCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fZ3By
T3JJbnZhbGlkOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVzZSgpCisgICAgeworICAgICAgICBt
X2ppdC0+dXNlKG5vZGUoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNwZWN1bGF0ZUpJVCog
bV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOworICAg
IGJvb2wgbV9zdHJpY3Q7Cit9OworCiBjbGFzcyBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBTcGVjdWxhdGVEb3VibGVPcGVyYW5kKFNwZWN1bGF0aXZlSklU
KiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGlj
T3BlcmFuZFNwZWN1bGF0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuY3BwCShyZXZpc2lvbiAxNTU3OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw5IEBAIHZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2UKICAgICBjYXNlIEtub3duSW50MzJVc2U6
CiAgICAgICAgIG91dC5wcmludCgiS25vd25JbnQzMiIpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiSW50NDgiKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgICAgICBvdXQucHJpbnQoIlJlYWxO
dW1iZXIiKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1VzZUtpbmQuaAkocmV2aXNpb24gMTU1NzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgZW51bSBVc2VL
aW5kIHsKICAgICBVbnR5cGVkVXNlLAogICAgIEludDMyVXNlLAogICAgIEtub3duSW50MzJVc2Us
CisgICAgTWFjaGluZUludFVzZSwKICAgICBSZWFsTnVtYmVyVXNlLAogICAgIE51bWJlclVzZSwK
ICAgICBLbm93bk51bWJlclVzZSwKQEAgLTY2LDYgKzY3LDggQEAgQUxXQVlTX0lOTElORSBTcGVj
dWxhdGVkVHlwZSB0eXBlRmlsdGVyRgogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgY2FzZSBLbm93
bkludDMyVXNlOgogICAgICAgICByZXR1cm4gU3BlY0ludDMyOworICAgIGNhc2UgTWFjaGluZUlu
dFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5lSW50OwogICAgIGNhc2UgUmVhbE51bWJl
clVzZToKICAgICAgICAgcmV0dXJuIFNwZWNSZWFsTnVtYmVyOwogICAgIGNhc2UgTnVtYmVyVXNl
OgpAQCAtMTI1LDYgKzEyOCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VL
aW5kIGsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2Ug
S25vd25JbnQzMlVzZToKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgY2FzZSBSZWFsTnVt
YmVyVXNlOgogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAkocmV2
aXNpb24gMTU1NzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgdm9pZCBWYWx1ZVNvdXJjZTo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KQogICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAg
IG91dC5wcmludCgiSW50MzIiKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ0OEluSlNT
dGFjazoKKyAgICAgICAgb3V0LnByaW50KCJJbnQ0OCIpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAgIG91dC5wcmludCgiQ2VsbCIpOwogICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJ
KHJldmlzaW9uIDE1NTc5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVT
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBlbnVtIFZhbHVlU291cmNl
S2luZCB7CiAgICAgU291cmNlTm90U2V0LAogICAgIFZhbHVlSW5KU1N0YWNrLAogICAgIEludDMy
SW5KU1N0YWNrLAorICAgIEludDQ4SW5KU1N0YWNrLAogICAgIENlbGxJbkpTU3RhY2ssCiAgICAg
Qm9vbGVhbkluSlNTdGFjaywKICAgICBEb3VibGVJbkpTU3RhY2ssCkBAIC01Niw2ICs1Nyw4IEBA
IHN0YXRpYyBpbmxpbmUgVmFsdWVTb3VyY2VLaW5kIGRhdGFGb3JtYXQKICAgICBzd2l0Y2ggKGRh
dGFGb3JtYXQpIHsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICAgICAgcmV0dXJuIElu
dDMySW5KU1N0YWNrOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1cm4g
SW50NDhJbkpTU3RhY2s7CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgICAgICByZXR1
cm4gRG91YmxlSW5KU1N0YWNrOwogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CkBAIC03OSw2
ICs4Miw4IEBAIHN0YXRpYyBpbmxpbmUgRGF0YUZvcm1hdCB2YWx1ZVNvdXJjZUtpbmQKICAgICAg
ICAgcmV0dXJuIERhdGFGb3JtYXRKUzsKICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAg
ICByZXR1cm4gRGF0YUZvcm1hdEludDMyOworICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAg
ICAgIHJldHVybiBEYXRhRm9ybWF0SW50NDg7CiAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgogICAg
ICAgICByZXR1cm4gRGF0YUZvcm1hdENlbGw7CiAgICAgY2FzZSBCb29sZWFuSW5KU1N0YWNrOgpA
QCAtMTM5LDYgKzE0NCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJj
ZShEb3VibGVJbkpTU3RhY2spOwogICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAg
ICAgIHJldHVybiBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjayk7CisgICAgICAgIGNhc2UgRmx1
c2hlZEludDQ4OgorICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEludDQ4SW5KU1N0YWNr
KTsKICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNv
dXJjZShDZWxsSW5KU1N0YWNrKTsKICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKQEAgLTE4
MSw2ICsxODgsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAg
ICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZElu
dDMyKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAg
ICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50
NDgoKTsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAg
ICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGwo
KTsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJp
YWJsZUFjY2Vzc0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCShyZXZpc2lvbiAxNTU3OTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzMsNiArMzMzLDkgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRJbnQzMjsKICAgICAgICAg
CisgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmICFvcGVyYW5kSXNBcmd1bWVudChtX2xvY2Fs
KSAmJiBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHJl
dHVybiBGbHVzaGVkSW50NDg7CisgICAgICAgIAogICAgICAgICBpZiAoaXNDZWxsU3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gRmx1c2hlZENlbGw7CiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2
aXNpb24gMTU1NzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDcgQEAgcHVibGljOgogCiAgICAgaW50
MzJfdCBhc0ludDMyKCkgY29uc3Q7CiAgICAgdWludDMyX3QgYXNVSW50MzIoKSBjb25zdDsKKyAg
ICBpbnQ2NF90IGFzTWFjaGluZUludCgpIGNvbnN0OwogICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNv
bnN0OwogICAgIGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CiAgICAgZG91YmxlIGFzTnVtYmVyKCkg
Y29uc3Q7CkBAIC0yMDIsNiArMjAzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNOdWxsKCkgY29u
c3Q7CiAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNCb29s
ZWFuKCkgY29uc3Q7CisgICAgYm9vbCBpc01hY2hpbmVJbnQoKSBjb25zdDsKICAgICBib29sIGlz
TnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwogICAgIGJvb2wgaXNQ
cmltaXRpdmUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTU1NzkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDk0LDYgKzQ5NCwzNSBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxs
KCkgCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c01hY2hpbmVJbnQoKSBjb25zdAoreworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmICghaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGRvdWJsZSBudW1iZXIgPSBhc0RvdWJsZSgpOworICAgIGlmIChudW1iZXIgIT0gbnVtYmVyKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50NjRfdCBhc0ludDY0ID0gc3RhdGljX2Nhc3Q8
aW50NjRfdD4obnVtYmVyKTsKKyAgICBpZiAoYXNJbnQ2NCAhPSBudW1iZXIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWFzSW50NjQgJiYgc3RkOjpzaWduYml0KG51bWJlcikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXNJbnQ2NCA+PSAoc3RhdGljX2Nhc3Q8aW50
NjRfdD4oMSkgPDwgNDcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGFzSW50NjQg
PCAtKHN0YXRpY19jYXN0PGludDY0X3Q+KDEpIDw8IDQ3KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgaW50NjRfdCBKU1ZhbHVlOjphc01hY2hp
bmVJbnQoKSBjb25zdAoreworICAgIEFTU0VSVChpc01hY2hpbmVJbnQoKSk7CisgICAgaWYgKGlz
SW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50NjRfdD4oYXNEb3VibGUoKSk7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3Ry
aW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3RyaW5n
KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211723</attachid>
            <date>2013-09-15 12:12:37 -0700</date>
            <delta_ts>2013-09-15 15:16:07 -0700</delta_ts>
            <desc>almost done!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>92745</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtODIwLDYgKzgyMCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2
dHNpMnNkX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0SW50NjRUb0Rv
dWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBB
U1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2kyc2RxX3Jy
KHNyYywgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShBZGRy
ZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0Uy
UHJlc2VudCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMwLDYgKzIzMCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LnNobHFfaThyKGltbS5tX3ZhbHVlLCBkZXN0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCByc2hp
ZnQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zYXJxX2k4cihpbW0ubV92YWx1ZSwgZGVzdCk7CisgICAgfQorICAgIAogICAg
IHZvaWQgbmVnNjQoUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
bmVncV9yKGRlc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjExLDYgKzE2
MTEsMTQgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNJ
MlNEX1ZzZEVkLCAoUmVnaXN0ZXJJRClkc3QsIHNyYyk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82
NCkKKyAgICB2b2lkIGN2dHNpMnNkcV9ycihSZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9DVlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVy
SUQpZHN0LCBzcmMpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBjdnRzaTJzZF9tcihpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSwxMCArMzksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiBlbnVtIERhdGFGb3JtYXQgewogICAg
IERhdGFGb3JtYXROb25lID0gMCwKICAgICBEYXRhRm9ybWF0SW50MzIgPSAxLAotICAgIERhdGFG
b3JtYXREb3VibGUgPSAyLAotICAgIERhdGFGb3JtYXRCb29sZWFuID0gMywKLSAgICBEYXRhRm9y
bWF0Q2VsbCA9IDQsCi0gICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA1LAorICAgIERhdGFGb3JtYXRJ
bnQ0OCA9IDIsIC8vIEludDQ4J3MgYXJlIGxlZnQtc2hpZnRlZCBieSAxNiBieSBkZWZhdWx0Lgor
ICAgIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA9IDMsIC8vICJTdHJpY3QiIEludDQ4IG1lYW5zIGl0
J3Mgbm90IHNoaWZ0ZWQuCisgICAgRGF0YUZvcm1hdERvdWJsZSA9IDQsCisgICAgRGF0YUZvcm1h
dEJvb2xlYW4gPSA1LAorICAgIERhdGFGb3JtYXRDZWxsID0gNiwKKyAgICBEYXRhRm9ybWF0U3Rv
cmFnZSA9IDcsCiAgICAgRGF0YUZvcm1hdEpTID0gOCwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9
IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRJbnQzMiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUg
PSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0RG91YmxlLApAQCAtNjQsNiArNjYsMTAgQEAgaW5s
aW5lIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRUb1N0cmluZyhEYQogICAgICAgICByZXR1cm4gIk5v
bmUiOwogICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgogICAgICAgICByZXR1cm4gIkludDMyIjsK
KyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICAgICAgcmV0dXJuICJJbnQ0OCI7CisgICAg
Y2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgIHJldHVybiAiU3RyaWN0SW50NDgiOwogICAg
IGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICAgICAgcmV0dXJuICJEb3VibGUiOwogICAgIGNh
c2UgRGF0YUZvcm1hdENlbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0NSwxNiArMzQ1LDExIEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVZhbHVl
KEpTVmEKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKICAgICBpZiAodmFsdWUuaXNEb3VibGUo
KSkgewogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUuYXNOdW1iZXIoKTsKLSAgICAgICAg
aWYgKG51bWJlciA9PSBudW1iZXIpIHsKLSAgICAgICAgICAgIGludDY0X3QgYXNJbnQ2NCA9IHN0
YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7Ci0gICAgICAgICAgICBpZiAoYXNJbnQ2NCA9PSBu
dW1iZXIgJiYgKGFzSW50NjQgfHwgIXN0ZDo6c2lnbmJpdChudW1iZXIpKQotICAgICAgICAgICAg
ICAgICYmIGFzSW50NjQgPCAoc3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgNDcpCi0gICAgICAg
ICAgICAgICAgJiYgYXNJbnQ2NCA+PSAtKHN0YXRpY19jYXN0PGludDY0X3Q+KDEpIDw8IDQ3KSkg
ewotICAgICAgICAgICAgICAgIHJldHVybiBTcGVjSW50NDhBc0RvdWJsZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47CisgICAgICAgIGlmIChudW1iZXIgIT0gbnVtYmVy
KQorICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47CisgICAgICAgIGlmICh2YWx1ZS5p
c01hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBTcGVjSW50NDhBc0RvdWJsZTsKKyAg
ICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9CiAgICAgaWYgKHZhbHVlLmlz
Q2VsbCgpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2VsbCh2YWx1ZS5hc0NlbGwo
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmcgIAogc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAgICAgICA9IDB4MDAwNDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEpTQ2VsbCBidXQgbm90IGEgc3ViY2xhc3Mgb2YgSlNPYmplY3QgYW5kIGRlZmlu
aXRlbHkgbm90IGEgSlNTdHJpbmcuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Nl
bGwgICAgICAgICAgICAgID0gMHgwMDA3ZmZmZjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxs
Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMiAgICAgICAgICAgICA9IDB4
MDA4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMi4KLXN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjSW50NDggICAgICAgICAgICAgPSAweDAxMDAwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYW4gSW50NDgsIGl0J3MgaW5zaWRlIGEgZG91YmxlLCBidXQgaXQgZG9lc24ndCBu
ZWVkIHRvIGJlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ0OCAgICAgICAg
ICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ0OCBhbmQgd2UgaW50
ZW5kIGl0IHRvIHVuYm94IGl0Lgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNNYWNo
aW5lSW50ICAgICAgICA9IDB4MDE4MDAwMDA7IC8vIEl0J3Mgc29tZXRoaW5nIHRoYXQgd2UgY2Fu
IGRvIG1hY2hpbmUgaW50IGFyaXRobWV0aWMgb24uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0ludDQ4QXNEb3VibGUgICAgID0gMHgwMjAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGFuIEludDQ4IGFuZCBpdCdzIGluc2lkZSBhIGRvdWJsZS4KIHN0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjSW50ZWdlciAgICAgICAgICAgPSAweDAzODAwMDAwOyAvLyBJdCdzIGRlZmlu
aXRlbHkgc29tZSBraW5kIG9mIGludGVnZXIuCkBAIC03NCw5ICs3NCw5IEBAIHN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjUmVhbE51bWIKIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjTnVtYmVyICAgICAgICAgICAgPSAweDBmODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJ
bnQzMiBvciBhIERvdWJsZS4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQm9vbGVh
biAgICAgICAgICAgPSAweDEwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCb29sZWFuLgog
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPdGhlciAgICAgICAgICAgICA9IDB4MjAw
MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBub25lIG9mIHRoZSBhYm92ZS4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgPSAweDNmZmZmZmZmOyAvLyBJ
dCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBT
cGVjSGVhcFRvcCAgICAgICAgICAgPSAweDNlZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRo
ZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NDguCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0VtcHR5ICAgICAgICAgICAgID0gMHg0MDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGFuIGVtcHR5IHZhbHVlIG1hcmtlci4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
Qnl0ZWNvZGVUb3AgICAgICAgPSAweDdmZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBh
Ym92ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAg
PSAweDdlZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBT
cGVjSW50NDguCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAg
ICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUgcGx1cyBhbnl0
aGluZyB0aGUgREZHIGNob29zZXMuCiAKIHR5cGVkZWYgYm9vbCAoKlNwZWN1bGF0ZWRUeXBlQ2hl
Y2tlcikoU3BlY3VsYXRlZFR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ZhbHVlUmVjb3ZlcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMiArNDQsMTUgQEAgZW51bSBWYWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBBbHJlYWR5
SW5KU1N0YWNrLAogICAgIC8vIEl0J3MgYWxyZWFkeSBpbiB0aGUgc3RhY2sgYnV0IHVuYm94ZWQu
CiAgICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyLAorICAgIEFscmVhZHlJbkpTU3Rh
Y2tBc1VuYm94ZWRJbnQ0OCwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCwKICAg
ICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbiwKICAgICBBbHJlYWR5SW5KU1N0YWNr
QXNVbmJveGVkRG91YmxlLAogICAgIC8vIEl0J3MgaW4gYSByZWdpc3Rlci4KICAgICBJbkdQUiwK
ICAgICBVbmJveGVkSW50MzJJbkdQUiwKKyAgICBVbmJveGVkSW50NDhJbkdQUiwKKyAgICBVbmJv
eGVkU3RyaWN0SW50NDhJbkdQUiwKICAgICBVbmJveGVkQm9vbGVhbkluR1BSLAogI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCiAgICAgSW5QYWlyLApAQCAtNjAsNiArNjMsOCBAQCBlbnVtIFZhbHVlUmVj
b3ZlcnlUZWNobmlxdWUgewogICAgIERpc3BsYWNlZEluSlNTdGFjaywKICAgICAvLyBJdCdzIGlu
IHRoZSBzdGFjaywgYXQgYSBkaWZmZXJlbnQgbG9jYXRpb24sIGFuZCBpdCdzIHVuYm94ZWQuCiAg
ICAgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2ssCisgICAgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2ss
CisgICAgU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2ssCiAgICAgRG91YmxlRGlzcGxhY2Vk
SW5KU1N0YWNrLAogICAgIENlbGxEaXNwbGFjZWRJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkRpc3Bs
YWNlZEluSlNTdGFjaywKQEAgLTk1LDYgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJ
bkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCgpCisgICAgeworICAgICAgICBWYWx1ZVJlY292ZXJ5IHJl
c3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5i
b3hlZEludDQ4OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBzdGF0
aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpCiAgICAgewog
ICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKQEAgLTEyNSw2ICsxMzcsMTAgQEAgcHVibGlj
OgogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKICAgICAgICAgaWYgKGRhdGFGb3JtYXQg
PT0gRGF0YUZvcm1hdEludDMyKQogICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5i
b3hlZEludDMySW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1h
dEludDQ4KQorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDQ4SW5H
UFI7CisgICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4
KQorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZFN0cmljdEludDQ4SW5H
UFI7CiAgICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEJvb2xlYW4pCiAg
ICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBVbmJveGVkQm9vbGVhbkluR1BSOwogICAg
ICAgICBlbHNlCkBAIC0xNjgsNiArMTg0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3Vs
dC5tX3RlY2huaXF1ZSA9IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAg
ICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmlj
dEludDQ4OgorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gU3RyaWN0SW50NDhEaXNw
bGFjZWRJbkpTU3RhY2s7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUg
PSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyOSw2
ICsyNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKICAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrOgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tB
c1VuYm94ZWRJbnQzMjoKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50
NDg6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAg
IGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW46CiAgICAgICAgIGNhc2UgQWxy
ZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKQEAgLTI0MCw3ICsyNjUsNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZ3ByKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBV
bmJveGVkSW50MzJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkQm9vbGVhbkluR1BSIHx8
IG1fdGVjaG5pcXVlID09IFVJbnQzMkluR1BSKTsKKyAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVl
ID09IEluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRJbnQzMkluR1BSIHx8IG1fdGVjaG5p
cXVlID09IFVuYm94ZWRCb29sZWFuSW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVUludDMySW5HUFIg
fHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZEludDQ4SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5i
b3hlZFN0cmljdEludDQ4SW5HUFIpOwogICAgICAgICByZXR1cm4gbV9zb3VyY2UuZ3ByOwogICAg
IH0KICAgICAKQEAgLTI2Niw3ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90
ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlz
cGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFj
ayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVl
ID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2spOworICAgICAgICBBU1NFUlQobV90ZWNobmlx
dWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2Vk
SW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBt
X3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJv
b2xlYW5EaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0gSW50NDhEaXNwbGFjZWRJ
bkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2sp
OwogICAgICAgICByZXR1cm4gbV9zb3VyY2UudmlydHVhbFJlZzsKICAgICB9CiAgICAgCkBAIC0y
ODUsNiArMzEwLDkgQEAgcHVibGljOgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1Vu
Ym94ZWRJbnQzMjoKICAgICAgICAgICAgIG91dC5wcmludGYoIihpbnQzMikiKTsKICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6
CisgICAgICAgICAgICBvdXQucHJpbnRmKCIoaW50NDgpIik7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbDoKICAgICAgICAgICAg
IG91dC5wcmludGYoIihjZWxsKSIpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzAwLDYgKzMy
OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAg
ICAgICBvdXQucHJpbnRmKCJpbnQzMiglJXIlZCkiLCBncHIoKSk7CiAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGNhc2UgVW5ib3hlZEludDQ4SW5HUFI6CisgICAgICAgICAgICBvdXQucHJp
bnRmKCJpbnQ0OCglJXIlZCkiLCBncHIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKKyAgICAgICAgICAgIG91dC5wcmludGYoInN0
cmljdEludDQ4KCUlciVkKSIsIGdwcigpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJib29sKCUl
ciVkKSIsIGdwcigpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyMCw2ICszNTQsMTIgQEAg
cHVibGljOgogICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAg
ICAgb3V0LnByaW50ZigiKmludDMyKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIippbnQ0OCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0OERpc3BsYWNlZEluSlNTdGFj
azoKKyAgICAgICAgICAgIG91dC5wcmludGYoIipzdHJpY3RJbnQ0OCglZCkiLCB2aXJ0dWFsUmVn
aXN0ZXIoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFj
ZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIqZG91YmxlKCVkKSIsIHZpcnR1
YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCShyZXZpc2lvbiAx
NTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Ym9vbCBuZWVkc1R5cGVDaGVjayhOb2RlKiBub2RlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3Nl
ZFRocm91Z2gpCiAgICAgewotICAgICAgICByZXR1cm4gZm9yTm9kZShub2RlKS5tX3R5cGUgJiB+
dHlwZXNQYXNzZWRUaHJvdWdoOworICAgICAgICByZXR1cm4gIWZvck5vZGUobm9kZSkuaXNUeXBl
KHR5cGVzUGFzc2VkVGhyb3VnaCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgbmVlZHNUeXBlQ2hl
Y2soRWRnZSBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gpCkBAIC0xNjgs
NyArMTY4LDcgQEAgcHJpdmF0ZToKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmlsdGVyQnlUeXBl
KE5vZGUqIG5vZGUsIEVkZ2UmIGVkZ2UsIFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiAgICAgewogICAg
ICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUoZWRnZSk7Ci0gICAgICAgIGlmICh2
YWx1ZS5tX3R5cGUgJiB+dHlwZSkgeworICAgICAgICBpZiAoIXZhbHVlLmlzVHlwZSh0eXBlKSkg
ewogICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGVkZ2Uu
c2V0UHJvb2ZTdGF0dXMoTmVlZHNDaGVjayk7CiAgICAgICAgIH0gZWxzZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAs
NiArMzEwLDI2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIEludDQ4VG9Eb3VibGU6IHsK
KyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7
CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCBjaGlsZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4QXNEb3VibGUpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50NDhBc1ZhbHVlOiB7CisgICAg
ICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAg
ICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgc2V0Q29u
c3RhbnQobm9kZSwgY2hpbGQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNNYWNoaW5lSW50KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgICAgICAKICAgICBjYXNlIFZhbHVlQWRkOgogICAgIGNhc2UgQXJpdGhBZGQ6
IHsKICAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUo
KTsKQEAgLTMyNCw2ICszNDQsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2Rl
LT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRy
dWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAg
aWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0ludDMyKQorICAgICAgICAg
ICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKKyAg
ICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgaWYgKGlzUmVhbE51bWJlclNw
ZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKICAgICAgICAgICAgICAg
ICAmJiBpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5
cGUpKQpAQCAtMzU4LDYgKzM4NCwxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5v
ZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQo
dHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgor
ICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CisgICAgICAgICAg
ICBpZiAoIWZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjSW50MzIpCisgICAgICAg
ICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjSW50MzIpKQor
ICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM4MCw2ICs0MTIsMTMg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAg
aWYgKCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkK
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KSkKKyAgICAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9y
ZU5lZ2F0aXZlWmVyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAgICAgICAgIG5v
ZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBO
dW1iZXJVc2U6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTQwNCw2ICs0NDMsMTAgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIHx8ICFieXRlY29kZUNh
bklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAg
ICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjSW50NDgpOworICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgICAgIGlmIChpc1Jl
YWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpCiAgICAg
ICAgICAgICAgICAgfHwgaXNSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGls
ZDIoKSkubV90eXBlKSkKQEAgLTgxMiw3ICs4NTUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRl
SW50MzIoKSkKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMy
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0RvdWJsZSk7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNJbnQ0OCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQz
MkFycmF5OgogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJl
dmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDE2IEBAIHN0cnVjdCBBYnN0cmFj
dFZhbHVlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KICAgICAKKyAgICBi
b29sIGNvdWxkQmVUeXBlKFNwZWN1bGF0ZWRUeXBlIGRlc2lyZWRUeXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICEhKG1fdHlwZSAmIGRlc2lyZWRUeXBlKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBpc1R5cGUoU3BlY3VsYXRlZFR5cGUgZGVzaXJlZFR5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gIShtX3R5cGUgJiB+ZGVzaXJlZFR5cGUpOworICAgIH0KKyAgICAKICAgICBGaWx0cmF0aW9u
UmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0IFN0cnVjdHVyZVNldCYpOwogICAgIAogICAgIEZp
bHRyYXRpb25SZXN1bHQgZmlsdGVyQXJyYXlNb2RlcyhBcnJheU1vZGVzIGFycmF5TW9kZXMpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNTU4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDMsNiArMTQzLDE1IEBAIGlubGluZSBib29sIGVuYWJsZUNvbmN1cnJlbnRKSVQoKQog
I2VuZGlmCiB9CiAKK2lubGluZSBib29sIGVuYWJsZUludDQ4KCkKK3sKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
K30KKwogZW51bSBTcGlsbFJlZ2lzdGVyc01vZGUgeyBOZWVkVG9TcGlsbCwgRG9udFNwaWxsIH07
CiAKIGVudW0gTm9SZXN1bHRUYWcgeyBOb1Jlc3VsdCB9OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjQsNiArMTI0LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxN
YWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51
bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk3
LDYgKzIwMiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIG1fZ3JhcGgubmVnYXRlU2hvdWxkU3Bl
Y3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGlu
ZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMDcsNiArMjE2LDExIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVu
YWJsZUludDQ4KCkgJiYgbV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUp
KSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZml4RWRnZTxO
dW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzAwLDYg
KzMxNCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAgICAgJiYgTm9kZTo6c2hv
dWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91
bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5u
b2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkp
OwpAQCAtMzU1LDYgKzM3NCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAgICAg
JiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9k
ZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAg
ICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAtNDc1LDcgKzUwMCwxMCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4oY2hpbGQyKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihj
aGlsZDMpOworICAgICAgICAgICAgICAgIGlmIChjaGlsZDMtPnByZWRpY3Rpb24oKSAmIFNwZWNJ
bnQ0OCkKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ0OFVzZT4oY2hpbGQzKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5
OjpEb3VibGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGNoaWxkMSk7
CkBAIC0xMzQ3LDEyICsxMzc1LDg0IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8VXNlS2luZCB1
c2VLaW5kPgogICAgIHZvaWQgZml4RWRnZShFZGdlJiBlZGdlLCBTcGVjdWxhdGlvbkRpcmVjdGlv
biBkaXJlY3Rpb24gPSBCYWNrd2FyZFNwZWN1bGF0aW9uKQogICAgIHsKLSAgICAgICAgaWYgKGlz
RG91YmxlKHVzZUtpbmQpICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRp
YygpKSB7Ci0gICAgICAgICAgICBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShlZGdlLCB1c2VLaW5k
LCBkaXJlY3Rpb24pOworICAgICAgICBpZiAoaXNEb3VibGUodXNlS2luZCkpIHsKKyAgICAgICAg
ICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgeworICAg
ICAgICAgICAgICAgIGluamVjdEludDMyVG9Eb3VibGVOb2RlKGVkZ2UsIHVzZUtpbmQsIGRpcmVj
dGlvbik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiBlZGdlLT5zaG91bGRTcGVjdWxh
dGVNYWNoaW5lSW50KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBNYWtlIGFsbCBkb3VibGUgdXNl
cyBvZiBpbnQ0OCB2YWx1ZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgSW50NDhUb0RvdWJsZS4KKyAg
ICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciB0aGUgc2FtZSByZWFzb24gYXMgSW50NDhUb1Zh
bHVlIChzZWUgYmVsb3cpIGV4Y2VwdCB0aGF0CisgICAgICAgICAgICAgICAgLy8gSW50OFRvRG91
YmxlIHdpbGwgY29udmVydCBpbnQ0OCdzIHRoYXQgZml0IGluIGFuIGludDMyIGludG8gYSBkb3Vi
bGUKKyAgICAgICAgICAgICAgICAvLyByYXRoZXIgdGhhbiB0cnlpbmcgdG8gY3JlYXRlIGEgYm94
ZWQgaW50MzIgbGlrZSBJbnQ0OFRvVmFsdWUgZG9lcy4KKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxNYWNoaW5lSW50VXNlPihlZGdlLm5vZGUo
KSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIFNwZWNJbnQ0OEFzRG91YmxlLCBJbnQ0OFRvRG91YmxlLAorICAgICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBNYWNoaW5lSW50
VXNlKSk7CisgICAgICAgICAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIHVzZUtpbmQgIT0gTWFjaGluZUludFVzZQor
ICAgICAgICAgICAgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpICYmICFlZGdl
LT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7CisgICAgICAgICAgICAvLyBXZSBtYWtlIGFsbCBu
b24taW50NDggdXNlcyBvZiBpbnQ0OCB2YWx1ZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgSW50NDhU
b1ZhbHVlCisgICAgICAgICAgICAvLyBub2RlIHRvIGVuc3VyZSB0aGF0IHdlIGhhbmRsZSB0aGlz
IHByb3Blcmx5OgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ0OAor
ICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8vIGM6IENh
bGwoLi4uLCBAYSkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAg
ICAgICAvLworICAgICAgICAgICAgLy8gV2l0aG91dCBhbiBpbnRlcm1lZGlhdGUgbm9kZSBhbmQg
anVzdCBsYWJlbGluZyB0aGUgdXNlcywgd2Ugd2lsbCBnZXQ6CisgICAgICAgICAgICAvLworICAg
ICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ0
ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QGEpCisgICAg
ICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAg
ICAgICAgICAgIC8vIEFuZCBub3cgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSB3aWxsIGJveCB0aGUg
dmFsdWUgb2YgQGEgaW50byBhIGRvdWJsZS4gVGhpcworICAgICAgICAgICAgLy8gaXMgYmFkLCBi
ZWNhdXNlIG5vdyB0aGUgZC0+SW50NDg6QGEgZWRnZSB3aWxsIGVpdGhlciBoYXZlIHRvIGRvIGRv
dWJsZS10by1pbnQKKyAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zLCBvciB3aWxsIGhhdmUgdG8g
T1NSIGV4aXQgdW5jb25kaXRpb25hbGx5LiBBbHRlcm5hdGl2ZWx5IHdlIGNvdWxkCisgICAgICAg
ICAgICAvLyBoYXZlIHRoZSBjLT5VbnR5cGVkOkBhIGVkZ2UgYm94IHRoZSB2YWx1ZSBieSBjb3B5
aW5nIHJhdGhlciB0aGFuIGluLXBsYWNlLgorICAgICAgICAgICAgLy8gQnV0IHRoZXNlIGJveGlu
Z3MgYXJlIGFsc28gY29zdGx5IHNvIHRoaXMgd291bGRuJ3QgYmUgZ3JlYXQuCisgICAgICAgICAg
ICAvLworICAgICAgICAgICAgLy8gVGhlIHNvbHV0aW9uIHdlIHVzZSBpcyB0byBhbHdheXMgaGF2
ZSBub24tSW50NDggdXNlcyBvZiBwcmVkaWN0ZWQgSW50NDgncyB1c2UKKyAgICAgICAgICAgIC8v
IGFuIGludGVydmVuaW5nIEludDQ4VG9WYWx1ZSBub2RlOgorICAgICAgICAgICAgLy8KKyAgICAg
ICAgICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoSW50NDg6
QGEsIC4uLikKKyAgICAgICAgICAgIC8vIHg6IEludDQ4VG9WYWx1ZShJbnQ0ODpAYSkKKyAgICAg
ICAgICAgIC8vIGM6IENhbGwoLi4uLCBVbnR5cGVkOkB4KQorICAgICAgICAgICAgLy8gZDogQXJp
dGhBZGQoSW50NDg6QGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBOb3Rl
IHRoYXQgZXZlbiBpZiB3ZSBoYWQgbXVsdGlwbGUgbm9uLWludDQ4IHVzZXMgb2YgQGEsIHRoZSBt
dWx0aXBsZQorICAgICAgICAgICAgLy8gSW50NDhUb1ZhbHVlJ3Mgd291bGQgZ2V0IENTRSdkIHRv
Z2V0aGVyLiBTbyB0aGUgYm94aW5nIHdvdWxkIG9ubHkgaGFwcGVuIG9uY2UuCisgICAgICAgICAg
ICAvLyBBdCB0aGUgc2FtZSB0aW1lLCBAYSB3b3VsZCBjb250aW51ZSB0byBiZSByZXByZXNlbnRl
ZCBhcyBhIG5hdGl2ZSBpbnQ0OC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBBbiBh
bHRlcm5hdGl2ZSB3b3VsZCBoYXZlIGJlZW4gdG8gaW5zZXJ0IFRvTmF0aXZlSW50NDggbm9kZXMg
b24gaW50NDggdXNlcyBvZgorICAgICAgICAgICAgLy8gaW50NDgncy4gVGhpcyB3b3VsZCBoYXZl
IGhhbmRsZWQgdGhlIGFib3ZlIGV4YW1wbGUgYnV0IHdvdWxkIGZhbGwgb3ZlciBmb3I6CisgICAg
ICAgICAgICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBi
OiBDYWxsKC4uLiwgQGEpCisgICAgICAgICAgICAvLyBjOiBBcml0aEFkZChAYSwgLi4uKQorICAg
ICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEJ1dCB0aGUgc29sdXRpb24gd2UgdXNlIGhhbmRs
ZXMgdGhlIGFib3ZlIGdyYWNlZnVsbHkuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIG9ic2Vy
dmVVc2VLaW5kT25Ob2RlPE1hY2hpbmVJbnRVc2U+KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
KyAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4LCBJbnQ0OFRvVmFsdWUs
CisgICAgICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5v
ZGUoKSwgTWFjaGluZUludFVzZSkpOworICAgICAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1
c2VLaW5kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8dXNlS2luZD4oZWRnZS5ub2RlKCkpOworICAgICAgICAK
ICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKHVzZUtpbmQpOwogICAgIH0KICAgICAKQEAgLTEzNzgs
NyArMTQ3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShF
ZGdlJiBlZGdlLCBVc2VLaW5kIHVzZUtpbmQgPSBOdW1iZXJVc2UsIFNwZWN1bGF0aW9uRGlyZWN0
aW9uIGRpcmVjdGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBOb2Rl
KiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNJbnQ0OCwgSW50MzJUb0RvdWJsZSwKKyAgICAgICAgICAgIG1faW5kZXhJ
bkJsb2NrLCBTcGVjSW50NDhBc0RvdWJsZSwgSW50MzJUb0RvdWJsZSwKICAgICAgICAgICAgIG1f
Y3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwog
ICAgICAgICBpZiAoZGlyZWN0aW9uID09IEZvcndhcmRTcGVjdWxhdGlvbikKICAgICAgICAgICAg
IHJlc3VsdC0+bWVyZ2VGbGFncyhOb2RlRXhpdHNGb3J3YXJkKTsKQEAgLTEzOTIsNiArMTQ5Miwx
NyBAQCBwcml2YXRlOgogICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQpOwogICAg
IH0KICAgICAKKyAgICAvLyBXZSBtYWtlIGFsbCBpbnQ0OCBlZGdlcyBoYXZlIGFuIGludGVybWVk
aWF0ZSBBc05hdGl2ZUludDQ4IG5vZGUgdG8gZW5zdXJlCisgICAgLy8gdGhhdCB3ZSBoYW5kbGUg
dGhpcyBwcm9wZXJseToKKyAgICB0ZW1wbGF0ZTxVc2VLaW5kIHVzZUtpbmQ+CisgICAgdm9pZCBm
aXhJbnQ0OEVkZ2UoRWRnZSYgZWRnZSkKKyAgICB7CisgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y0ludDQ4LCBBc05hdGl2ZUludDQ4LAorICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9y
aWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgdXNlS2luZCkpOworICAgICAgICBlZGdlID0gZWRnZShy
ZXN1bHQsIE1hY2hpbmVJbnRVc2UpOworICAgIH0KKwogICAgIHZvaWQgdHJ1bmNhdGVDb25zdGFu
dFRvSW50MzIoRWRnZSYgZWRnZSkKICAgICB7CiAgICAgICAgIE5vZGUqIG9sZE5vZGUgPSBlZGdl
Lm5vZGUoKTsKQEAgLTE0MzQsMTMgKzE1NDUsMjAgQEAgcHJpdmF0ZToKICAgICBib29sIGF0dGVt
cHRUb01ha2VJbnRlZ2VyQWRkKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBBZGRTcGVjdWxh
dGlvbk1vZGUgbW9kZSA9IG1fZ3JhcGguYWRkU3BlY3VsYXRpb25Nb2RlKG5vZGUpOwotICAgICAg
ICBpZiAobW9kZSA9PSBEb250U3BlY3VsYXRlSW50MzIpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmIChtb2RlICE9IERvbnRTcGVjdWxhdGVJbnQzMikgeworICAgICAgICAg
ICAgdHJ1bmNhdGVDb25zdGFudHNJZk5lY2Vzc2FyeShub2RlLCBtb2RlKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICB0cnVuY2F0ZUNvbnN0YW50c0lmTmVjZXNzYXJ5KG5v
ZGUsIG1vZGUpOwotICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIG1fZ3JhcGguYWRkU2hvdWxkU3Bl
Y3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGJvb2wgYXR0
ZW1wdFRvTWFrZUdldEFycmF5TGVuZ3RoKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDYgKzQxLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IEZsdQogICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWRJ
bnQzMiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAg
IG91dC5wcmludCgiRmx1c2hlZEludDMyIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZs
dXNoZWREb3VibGU6CiAgICAgICAgIG91dC5wcmludCgiRmx1c2hlZERvdWJsZSIpOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1h
dC5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zs
dXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogZW51bSBGbHVzaEZvcm1hdCB7CiAgICAgRGVhZEZsdXNoLAog
ICAgIEZsdXNoZWRJbnQzMiwKKyAgICBGbHVzaGVkSW50NDgsCiAgICAgRmx1c2hlZERvdWJsZSwK
ICAgICBGbHVzaGVkQ2VsbCwKICAgICBGbHVzaGVkQm9vbGVhbiwKQEAgLTU1LDYgKzU2LDggQEAg
aW5saW5lIE5vZGVGbGFncyByZXN1bHRGb3IoRmx1c2hGb3JtYXQgZgogICAgICAgICByZXR1cm4g
Tm9kZVJlc3VsdEpTOwogICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICByZXR1cm4gTm9k
ZVJlc3VsdEludDMyOworICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICByZXR1cm4gTm9k
ZVJlc3VsdEludDQ4OwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKICAgICAgICAgcmV0dXJuIE5v
ZGVSZXN1bHROdW1iZXI7CiAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKQEAgLTc0LDYgKzc3LDgg
QEAgaW5saW5lIFVzZUtpbmQgdXNlS2luZEZvcihGbHVzaEZvcm1hdCBmbwogICAgICAgICByZXR1
cm4gQ2VsbFVzZTsKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMy
VXNlOworICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICByZXR1cm4gTWFjaGluZUludFVz
ZTsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAgIHJldHVybiBOdW1iZXJVc2U7CiAg
ICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR2VuZXJhdGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtODYs
NiArODYsMTkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3Vu
dCwgZ3ByLCBEYXRhRm9ybWF0SW50MzIpOwogICAgIH0KKyAgICB2b2lkIGluaXRJbnQ0OChOb2Rl
KiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHJlZywgRGF0YUZvcm1hdCBmb3JtYXQp
CisgICAgeworICAgICAgICBBU1NFUlQoZm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBmb3Jt
YXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VD
b3VudCwgZ3ByLCBmb3JtYXQpOworICAgIH0KKyAgICB2b2lkIGluaXRJbnQ0OChOb2RlKiBub2Rl
LCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIGluaXRHUFIo
bm9kZSwgdXNlQ291bnQsIGdwciwgRGF0YUZvcm1hdEludDQ4KTsKKyAgICB9CisgICAgdm9pZCBp
bml0U3RyaWN0SW50NDgoTm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyByZWcp
CisgICAgeworICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCBncHIsIERhdGFGb3JtYXRT
dHJpY3RJbnQ0OCk7CisgICAgfQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCBpbml0SlNW
YWx1ZShOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIGdwciwgRGF0YUZvcm1h
dCBmb3JtYXQgPSBEYXRhRm9ybWF0SlMpCiAgICAgewpAQCAtMTg3LDYgKzIwMCwxMSBAQCBwdWJs
aWM6CiAgICAgLy8gR2V0IHRoZSBmb3JtYXQgb2YgdGhlIHZhbHVlIGFzIGl0IGlzIHNwaWxsZWQg
aW4gdGhlIEpTU3RhY2sgKG9yICdub25lJykuCiAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCgp
IHsgcmV0dXJuIG1fc3BpbGxGb3JtYXQ7IH0KICAgICAKKyAgICBib29sIGlzRm9ybWF0KERhdGFG
b3JtYXQgZXhwZWN0ZWRGb3JtYXQpCisgICAgeworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3Jt
YXQoKSA9PSBleHBlY3RlZEZvcm1hdCB8fCBzcGlsbEZvcm1hdCgpID09IGV4cGVjdGVkRm9ybWF0
OworICAgIH0KKyAgICAKICAgICBib29sIGlzSlNGb3JtYXQoRGF0YUZvcm1hdCBleHBlY3RlZEZv
cm1hdCkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OmlzSlNGb3JtYXQocmVnaXN0ZXJGb3Jt
YXQoKSwgZXhwZWN0ZWRGb3JtYXQpIHx8IEpTQzo6aXNKU0Zvcm1hdChzcGlsbEZvcm1hdCgpLCBl
eHBlY3RlZEZvcm1hdCk7CkBAIC0xOTcsNiArMjE1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGlzSlNGb3JtYXQoRGF0YUZvcm1hdEpTSW50MzIpOwogICAgIH0KICAgICAKKyAgICBib29s
IGlzSW50NDgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzRm9ybWF0KERhdGFGb3JtYXRJbnQ0
OCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNTdHJpY3RJbnQ0OCgpCisgICAgeworICAgICAg
ICByZXR1cm4gaXNGb3JtYXQoRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICB9CisgICAgCiAg
ICAgYm9vbCBpc0pTRG91YmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBpc0pTRm9ybWF0KERh
dGFGb3JtYXRKU0RvdWJsZSk7CkBAIC0zMTQsNiArMzQyLDE0IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERhdGFGb3JtYXRJbnQzMik7CiAgICAgfQorICAg
IHZvaWQgZmlsbEludDQ4KFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwcikK
KyAgICB7CisgICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERhdGFGb3JtYXRJbnQ0OCk7Cisg
ICAgfQorICAgIHZvaWQgZmlsbFN0cmljdEludDQ4KFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVh
bSwgR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERhdGFG
b3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgfQogICAgIHZvaWQgZmlsbEJvb2xlYW4oVmFyaWFibGVF
dmVudFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByKQogICAgIHsKICAgICAgICAgZmlsbEdQUihz
dHJlYW0sIGdwciwgRGF0YUZvcm1hdEJvb2xlYW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAz
LDkgQEAgdm9pZCBKSVRDb2RlOjpyZWNvbnN0cnVjdCgKICAgICAgICAgY2FzZSBBbHJlYWR5SW5K
U1N0YWNrQXNVbmJveGVkSW50MzI6CiAgICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGV4ZWMt
PnIob3BlcmFuZCkudW5ib3hlZEludDMyKCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDY0OgorICAgICAgICAgICAgdmFsdWUg
PSBqc051bWJlcihleGVjLT5yKG9wZXJhbmQpLnVuYm94ZWRJbnQ0OCgpKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU6CiAg
ICAgICAgICAgICB2YWx1ZSA9IGpzRG91YmxlTnVtYmVyKGV4ZWMtPnIob3BlcmFuZCkudW5ib3hl
ZERvdWJsZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw5
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICNkZWZpbmUgTm9kZVJlc3VsdEpT
ICAgICAgICAgICAgICAgICAgICAgMHgwMDAxCiAjZGVmaW5lIE5vZGVSZXN1bHROdW1iZXIgICAg
ICAgICAgICAgICAgIDB4MDAwMgogI2RlZmluZSBOb2RlUmVzdWx0SW50MzIgICAgICAgICAgICAg
ICAgICAweDAwMDMKLSNkZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgw
MDA0Ci0jZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNQorI2Rl
ZmluZSBOb2RlUmVzdWx0SW50NDggICAgICAgICAgICAgICAgICAweDAwMDQKKyNkZWZpbmUgTm9k
ZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgwMDA1CisjZGVmaW5lIE5vZGVSZXN1bHRT
dG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICNkZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAgICAgICAgICAgICAgICAgMHgwMDA4IC8v
IHNldCBvbiBub2RlcyB0aGF0IGhhdmUgc2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0cml2aWFs
bHkgYmUgcmVtb3ZlZCBieSBEQ0UuCiAjZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAgICAgICAg
ICAgICAgIDB4MDAxMApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhJbnQzMlRvRG91YmxlLCBOb2RlUmVzdWx0TnVt
YmVyKSBcCiAgICAgLyogVXNlZCB0byBzcGVjdWxhdGUgdGhhdCBhIGRvdWJsZSB2YWx1ZSBpcyBh
Y3R1YWxseSBhbiBpbnRlZ2VyLiAqL1wKICAgICBtYWNybyhEb3VibGVBc0ludDMyLCBOb2RlUmVz
dWx0SW50MzIgfCBOb2RlRXhpdHNGb3J3YXJkKSBcCisgICAgLyogVXNlZCB0byBzZXBhcmF0ZSBy
ZXByZXNlbnRhdGlvbiBhbmQgcmVnaXN0ZXIgYWxsb2NhdGlvbiBvZiBJbnQ0OCdzIHJlcHJlc2Vu
dGVkICovXAorICAgIC8qIGFzIHZhbHVlcy4gKi9cCisgICAgbWFjcm8oSW50NDhUb1ZhbHVlLCBO
b2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhJbnQ0OFRvRG91YmxlLCBOb2RlUmVzdWx0TnVtYmVy
KSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBhcml0aG1ldGljIG9wZXJhdGlvbnMuICovXAog
ICAgIG1hY3JvKEFyaXRoQWRkLCBOb2RlUmVzdWx0TnVtYmVyIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XApAQCAtMzU2LDYgKzM2MCwxNyBAQCBpbmxpbmUgdW5zaWduZWQgZm9yd2FyZFJld2lyaW5nU2Vs
ZWN0aW9uCiAgICAgICAgIC8vIFRoaXMgbG9zZXMgaW5mb3JtYXRpb24uIE9ubHkgdXNlIGl0IGlm
IHRoZXJlIGFyZSBubyBiZXR0ZXIgYWx0ZXJuYXRpdmVzLgogICAgICAgICByZXR1cm4gMjU7CiAg
ICAgICAgIAorICAgIGNhc2UgSW50NDhUb1ZhbHVlOgorICAgICAgICAvLyBMb3NlcyBubyBpbmZv
cm1hdGlvbi4gSXQganVzdCBib3hlcyB0aGUgdmFsdWUsIHdoaWNoIGlzIHdoYXQgT1NSIHdhbnRz
CisgICAgICAgIC8vIHRvIGRvIGFueXdheS4KKyAgICAgICAgcmV0dXJuIDEwMDsKKyAgICAgICAg
CisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOgorICAgICAgICAvLyBUaGlzIGlzIGxpa2UgSW50MzJU
b0RvdWJsZTsgd2UgY2FuIHVzZSBpdCBiZWNhdXNlIGl0IGdpdmVzIGEgc2VtYW50aWNhbGx5Cisg
ICAgICAgIC8vIGVxdWl2YWxlbnQgdmFsdWUgYnV0IHRoYXQgdmFsdWUgbWF5IGJlIGFuIGludDMy
IGluIGEgZG91YmxlLCBzbyB3ZSdkCisgICAgICAgIC8vIHJhdGhlciBub3QgaWYgd2UgY2FuIGF2
b2lkIGl0LgorICAgICAgICByZXR1cm4gNzU7CisgICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk1LDYgKzE5NSw4IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhp
dChjb25zdCAKICAgICAgICAgY2FzZSBJbkdQUjoKICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJ
bkdQUjoKICAgICAgICAgY2FzZSBVSW50MzJJbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVkSW50
NDhJbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKICAgICAgICAg
ICAgIG1faml0LnN0b3JlNjQocmVjb3ZlcnkuZ3ByKCksIHNjcmF0Y2ggKyBpbmRleCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMjM1LDEyICsyMzcsMTUgQEAgdm9pZCBP
U1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICBjYXNlIERpc3BsYWNl
ZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAg
ICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgSW50NDhEaXNw
bGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3Rh
Y2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAg
ICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFj
a0FzVW5ib3hlZEludDMyOgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRE
b3VibGU6CisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OgogICAg
ICAgICAgICAgbV9qaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5k
KSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpy
ZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc0LDM0ICsy
NzksNTkgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAg
ICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAg
ICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKLSAgICAgICAgY2FzZSBJ
bkZQUjoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAg
ICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5k
ZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEdQUklu
Zm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LmJveERvdWJs
ZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5z
dG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFu
ZCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAgICAgIGNhc2UgVW5ib3hlZEludDQ4SW5H
UFI6CisgICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDQ4SW5HUFI6CisgICAgICAgIGNhc2Ug
SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgU3RydWN0SW50NDhEaXNwbGFj
ZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgVUludDMySW5HUFI6IHsKICAgICAgICAgICAgIG1f
aml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAg
IG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5icmFu
Y2gzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVh
bCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoMCkpOwotICAgICAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUoR1BS
SW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgbV9qaXQuYWRkRG91
YmxlKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZB
c3NlbWJseUhlbHBlcnM6OnR3b1RvVGhlMzIpLAotICAgICAgICAgICAgICAgIEZQUkluZm86OmZw
UmVnVDApOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBDb252ZXJ0IGl0IHRvIGFuIGlu
dDY0LgorICAgICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgeworICAgICAg
ICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAgICAgICAgICBj
YXNlIFVuYm94ZWRJbnQ0OEluR1BSOgorICAgICAgICAgICAgY2FzZSBJbnQ0OERpc3BsYWNlZElu
SlNTdGFjazoKKyAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQoVHJ1c3RlZEltbTMyKDE2KSwg
R1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgY2FzZSBVSW50MzJJbkdQUjoKKyAgICAgICAgICAgICAgICBtX2ppdC56
ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgLy8gSXMgaXQgYW4gaW50MzI/CisgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5k
MzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpKdW1wIGlzSW50MzIgPSBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OkVxdWFsLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVn
VDEpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBOb3BlLCBpdCdzIG5vdCwgYnV0IHJl
Z1QwIGNvbnRhaW5zIHRoZSBpbnQ2NCB2YWx1ZS4KKyAgICAgICAgICAgIG1faml0LmNvbnZlcnRJ
bnQ2NFRvRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAg
ICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CiAg
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAg
ICAgICAgICAgIHBvc2l0aXZlLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaXNJbnQzMi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJU
b1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQu
b3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAgICAgICAgIAogICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAK
ICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJs
ZToKKyAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpT
U3RhY2s6CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBtX2pp
dC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAg
ICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Cisg
ICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoCiAgICAg
ICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2Rl
KHJlY292ZXJ5LmNvbnN0YW50KCkpKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDEwICszNjgsMjAgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgR2V0QnlWYWw6IHsKKyAgICAgICAg
ICAgIGlmICghbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGlmICghbm9kZS0+cHJlZGljdGlvbigpKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpCiAgICAgICAgICAgICAgICAgfHwgbm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKQogICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNEb3VibGUpOwotICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVVp
bnQzMkFycmF5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRl
SW50MzIoKSkKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
U3BlY0ludDMyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ0OCk7CisgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLT5nZXRIZWFw
UHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBs
YW4uaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
aWxlbnRSZWdpc3RlclNhdmVQbGFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAg
ZW51bSBTaWxlbnRTcGlsbEFjdGlvbiB7CiBlbnVtIFNpbGVudEZpbGxBY3Rpb24gewogICAgIERv
Tm90aGluZ0ZvckZpbGwsCiAgICAgU2V0SW50MzJDb25zdGFudCwKKyAgICBTZXRJbnQ0OENvbnN0
YW50LAorICAgIFNldFN0cmljdEludDQ4Q29uc3RhbnQsCiAgICAgU2V0Qm9vbGVhbkNvbnN0YW50
LAogICAgIFNldENlbGxDb25zdGFudCwKICAgICBTZXRUcnVzdGVkSlNDb25zdGFudCwKQEAgLTYx
LDggKzYzLDEyIEBAIGVudW0gU2lsZW50RmlsbEFjdGlvbiB7CiAgICAgTG9hZDMyVGFnLAogICAg
IExvYWQzMlBheWxvYWQsCiAgICAgTG9hZDMyUGF5bG9hZEJveEludCwKKyAgICBMb2FkMzJQYXls
b2FkQ29udmVydFRvSW50NDgsCisgICAgTG9hZDMyUGF5bG9hZFNpZ25FeHRlbmQsCiAgICAgTG9h
ZFB0ciwKICAgICBMb2FkNjQsCisgICAgTG9hZDY0U2hpZnRSaWdodDE2LAorICAgIExvYWQ2NFNo
aWZ0TGVmdDE2LAogICAgIExvYWREb3VibGUsCiAgICAgTG9hZERvdWJsZUJveERvdWJsZSwKICAg
ICBMb2FkSlNVbmJveERvdWJsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw2ICs0MCw0MCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpib3hJbnQ0OChHUFJSZWcg
c291cmNlR1BSLCBHUFJSZWcgdGFyZ2V0R1BSLCBEYXRhRm9ybWF0IGZvcm1hdCkKK3sKKyAgICBH
UFJSZWcgdGVtcEdQUjsKKyAgICBpZiAoc291cmNlR1BSID09IHRhcmdldEdQUikKKyAgICAgICAg
dGVtcEdQUiA9IGFsbG9jYXRlKCk7CisgICAgZWxzZQorICAgICAgICB0ZW1wR1BSID0gdGFyZ2V0
R1BSOworICAgIAorICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOworCisgICAgaWYgKGZv
cm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJ
bW0zMigxNiksIHNvdXJjZUdQUik7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoZm9ybWF0ID09
IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoc291
cmNlR1BSLCB0ZW1wR1BSKTsKKyAgICAKKyAgICBKSVRDb21waWxlcjo6SnVtcCBpc0RvdWJsZSA9
IG1faml0LmJyYW5jaDY0KAorICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHNvdXJjZUdQ
UiwgdGVtcEdQUik7CisgICAgCisgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoc291cmNlR1BS
LCB0YXJnZXRHUFIpOworICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyLCB0YXJnZXRHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CisgICAgCisgICAgaXNEb3VibGUubGluaygmbV9qaXQpOworICAgIG1faml0LmNvbnZlcnRJ
bnQ2NFRvRG91YmxlKHNvdXJjZUdQUiwgZnByKTsKKyAgICBib3hEb3VibGUoZnByLCB0YXJnZXRH
UFIpOworICAgIGRvbmUubGluaygmbV9qaXQpOworICAgIAorICAgIGlmICh0ZW1wR1BSICE9IHRh
cmdldEdQUikKKyAgICAgICAgdW5sb2NrKHRlbXBHUFIpOworICAgIAorICAgIHVubG9jayhmcHIp
OworfQorCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKIHsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lz
dGVyKCk7CkBAIC02OSwxMSArMTAzLDIzIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpT
VmFsdWUoRWRnZSAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIERhdGFGb3JtYXQgc3Bp
bGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAgICAgICAgICAgICBtX2dwcnMucmV0YWlu
KGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7Ci0gICAgICAgICAgICBp
ZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKSB7CisgICAgICAgICAgICBzd2l0Y2gg
KHNwaWxsRm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjogewogICAg
ICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpLCBncHIpOwogICAgICAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyLCBncHIpOwogICAgICAgICAgICAgICAgIHNwaWxsRm9ybWF0ID0g
RGF0YUZvcm1hdEpTSW50MzI7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2Fz
ZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0
ODogeworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgICAgIGJveEludDQ4KGdwciwg
Z3ByLCBzcGlsbEZvcm1hdCk7CisgICAgICAgICAgICAgICAgc3BpbGxGb3JtYXQgPSBEYXRhRm9y
bWF0SlM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2
NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogICAgICAg
ICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIE5lZWQgdG8gYm94IHRoZSBkb3VibGUsIHNpbmNlIHdlIHdhbnQgYSBK
U1ZhbHVlLgpAQCAtODEsNiArMTI3LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNW
YWx1ZShFZGdlIAogICAgICAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFGb3JtYXRK
U0RvdWJsZTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9z
dHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwogICAgICAgICB9CkBAIC0xMTMsNiArMTYwLDE2IEBA
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKIAogICAgICAgICByZXR1
cm4gZ3ByOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAg
Y2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8u
Z3ByKCk7CisgICAgICAgIGxvY2soZ3ByKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IGFs
bG9jYXRlKCk7CisgICAgICAgIGJveEludDQ4KGdwciwgcmVzdWx0R1BSLCBpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkpOworICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdEdQ
UjsKKyAgICB9CiAKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgogICAgICAgICAvLyBObyByZXRh
ZyByZXF1aXJlZCBvbiBKU1ZBTFVFNjQhCkBAIC03NjgsNyArODI1LDcgQEAgR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICAKICAgICAgICAgRGF0YUZvcm1h
dCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgCi0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQg
PT0gRGF0YUZvcm1hdEludDMyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0
ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIgfHwgc3Bp
bGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRT
dHJpY3RJbnQ0OCk7CiAgICAgICAgIAogICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVh
bFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAgIApAQCAtNzg5LDYgKzg0Niwy
NSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgICAg
ICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQzMjsKICAgICAgICAgICAgIHJldHVybiBn
cHI7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0
OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAg
IC8vIENhbiBvbmx5IGhhcHBlbiBpZiB3ZSd2ZSBhbHJlYWR5IHByb3ZlZCB0aGF0IHRoZSB2YWx1
ZSBpcyBhbiBpbnQzMi4KKyAgICAgICAgICAgIC8vIFRoYXQncyBiZWNhdXNlIGlmIGEgdmFsdWUg
b3JpZ2luYXRlZCBhcyBhIEpTVmFsdWUgdGhlbiB3ZSB3b3VsZAorICAgICAgICAgICAgLy8gc3Bl
Y3VsYXRlIHRoYXQgaXQncyBhbiBpbnQzMiBiZWZvcmUgcmVwcmVzZW50aW5nIGl0IGFzIGFuIGlu
dDQ4LgorICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiB3ZSBrbm93aW5nbHkgcHJvZHVjZWQg
YW4gaW50NDgsIHRoZW4gd2Ugd291bGQgYmUKKyAgICAgICAgICAgIC8vIGJveGluZyBpdCBpbnRv
IGEgdmFsdWUgdXNpbmcgSW50NDhUb1ZhbHVlLiBUaGlzIGFzc2VydGlvbiBpcyB2YWxpZAorICAg
ICAgICAgICAgLy8gb25seSBiZWNhdXNlIEludDQ4IGlzIHNvbWV0aGluZyB0aGF0IHdlIGludHJv
ZHVjZSBhdCBwcmVkaWN0aW9uIHRpbWUuCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5
cGUgJiB+U3BlY0ludDMyKSk7CisgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZv
cm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgICAgIG1faml0LnJzaGlmdDY0
KFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgICAgICAgICAgbV9qaXQuemVyb0V4dGVu
ZDMyVG9QdHIoZ3ByLCBncHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5mby5maWxs
SW50MzIoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZv
cm1hdEludDMyOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQogICAgICAgICBt
X2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3By
KTsKIAogICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91Z2guCkBAIC03
OTcsNiArODczLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50Mwog
ICAgIH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCEodHlwZSAmIFNwZWNJbnQ0OCkpOwogICAgICAgICAvLyBDaGVjayB0aGUgdmFsdWUgaXMgYW4g
aW50ZWdlci4KICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAgIG1fZ3By
cy5sb2NrKGdwcik7CkBAIC04NDMsNiArOTIwLDI3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMy
OwogICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9y
bWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNJ
bnQzMikpOworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJz
LmxvY2soZ3ByKTsKKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoZ3ByLCBncHIpOwor
ICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CisgICAgICAgIGluZm8uZmls
bEludDMyKCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisgICAg
ICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCEodHlwZSAmIH5TcGVjSW50MzIpKTsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7
CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0
ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwcik7
CisgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAgICAgICAgaW5mby5m
aWxsSW50MzIoKm1fc3RyZWFtLCBncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KIAog
ICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTog
ewpAQCAtODg1LDYgKzk4MywxNDggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlSW50MwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0dQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUludDQ4KEVkZ2UgZWRnZSwgRGF0YUZvcm1hdCBkZXNpcmVkRm9ybWF0KQor
eworICAgIEFTU0VSVChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBkZXNpcmVk
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgQWJzdHJhY3RWYWx1ZSYgdmFs
dWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7CisgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZh
bHVlLm1fdHlwZTsKKyAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY01hY2hpbmVJ
bnQpOworICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFs
UmVnaXN0ZXIoKTsKKyAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJv
bVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworCisgICAgc3dpdGNoIChpbmZvLnJl
Z2lzdGVyRm9ybWF0KCkpIHsKKyAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7CisgICAgICAgIGlm
ICgoZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiAhdmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkp
LmlzTWFjaGluZUludCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJs
ZSkgeworICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIDApOworICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworCisg
ICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gdmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgQVNTRVJU
KHZhbHVlLmlzTWFjaGluZUludCgpKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2
aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7CisgICAgICAgICAgICBpbnQ2NF90
IHZhbHVlID0gdmFsdWUuYXNNYWNoaW5lSW50KCk7CisgICAgICAgICAgICBpZiAoZGVzaXJlZEZv
cm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA8
PCAxNjsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHZhbHVl
KSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEdQUigqbV9zdHJlYW0sIGdwciwgZGVzaXJl
ZEZvcm1hdCk7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOworICAg
ICAgICAKKyAgICAgICAgLy8gRklYTUUhISEKKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZv
cm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICAKKyAgICAgICAgbV9ncHJzLnJl
dGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAgICAK
KyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyIHx8IHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRJbnQzMikgeworICAgICAgICAgICAgLy8gSWYgd2Uga25vdyB0aGlz
IHdhcyBzcGlsbGVkIGFzIGFuIGludGVnZXIgd2UgY2FuIGZpbGwgd2l0aG91dCBjaGVja2luZy4K
KyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoZ3By
LCBncHIpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmlj
dEludDQ4KSB7CisgICAgICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NDgoZ3ByKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9q
aXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmls
bEludDQ4KGdwcik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisgICAgICAg
IGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0
YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGlmIChk
ZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgICAg
IGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICAgICAgICAg
IG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgICAgICAgICAg
aW5mby5maWxsU3RyaWN0SW50NDgoZ3ByKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRT
dHJpY3RJbnQ0OCkKKyAgICAgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIo
MTYpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSW50NDgoZ3ByKTsKKyAgICAgICAgICAg
IHJldHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisKKyAgICAgICAgLy8gRmlsbCBh
cyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgorICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCpt
X3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNJbnQzMik7CisgICAgICAgIG1fZ3Bycy51bmxvY2so
Z3ByKTsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRKUzogeworICAgICAgICAvLyBDaGVj
ayB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlci4gTm90ZSB0aGF0IHdlIHdvdWxkICpsaWtlKiB0byB1
bmJveCBhbiBJbnQ0OAorICAgICAgICAvLyBhdCB0aGlzIHBvaW50IGJ1dCB0aGlzIGlzIHRvbyBj
b3N0bHkuIFdlIG9ubHkgKnByb3ZlKiB0aGF0IHRoaXMgaXMgYW4gSW50NDgKKyAgICAgICAgLy8g
ZXZlbiB0aG91Z2ggd2UgY2hlY2sgaWYgaXQncyBhbiBpbnQzMi4KKyAgICAgICAgR1BSUmVnIGdw
ciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIGlmICh0
eXBlICYgflNwZWNJbnQzMikKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJl
bG93LCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICBtX2pp
dC5zaWduRXh0ZW5kMzJUb1B0cihncHIpOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBE
YXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgIGZpbGxTdHJpY3RJbnQ0OChncHIp
OworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5sc2hp
ZnQ2NChUcnVzdGVkSW1tNjQoMTYpLCBncHIpOworICAgICAgICBmaWxsSW50NDgoZ3ByKTsKKyAg
ICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKKyAg
ICBjYXNlIERhdGFGb3JtYXRKU0ludDMyOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdw
cigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBtX2ppdC5zaWduRXh0ZW5k
MzJUb1B0cihncHIpOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3Ry
aWN0SW50NDgpIHsKKyAgICAgICAgICAgIGZpbGxTdHJpY3RJbnQ0OChncHIpOworICAgICAgICAg
ICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVk
SW1tNjQoMTYpLCBncHIpOworICAgICAgICBmaWxsSW50NDgoZ3ByKTsKKyAgICAgICAgcmV0dXJu
IGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAg
ICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAg
ICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAg
ICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2
KSwgZ3ByKTsKKyAgICAgICAgZmlsbFN0cmljdEludDQ4KGdwcik7CisgICAgICAgIHJldHVybiBn
cHI7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODogeworICAgICAg
ICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAg
ICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAg
cmV0dXJuIGdwcjsKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3By
KTsKKyAgICAgICAgZmlsbEludDQ4KGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQor
CisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91Ymxl
OgorICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoK
KyAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFu
OiB7CisgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCAwKTsKKyAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMy
OworICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3Jt
YXRTdG9yYWdlOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICB9Cit9CisKIEZQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlIGVkZ2UpCiB7CiAjaWYgREZHX0VOQUJM
RShERUJVR19WRVJCT1NFKQpAQCAtOTQ1LDYgKzExODUsMjQgQEAgRlBSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlRG91YgogICAgICAgICAgICAgdW5sb2NrKGdwcik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRGF0YUZv
cm1hdEludDQ4OiB7CisgICAgICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKyAgICAg
ICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGls
bGVkKTsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSW50NDgoZ3ByKTsK
KyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogeworICAg
ICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBtX2dwcnMucmV0
YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAgICAg
ICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwg
Z3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KGdwcik7CisgICAgICAgICAg
ICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwpAQCAtMTAwOSw2
ICsxMjY3LDI0IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAg
ICAgICAgbV9ncHJzLnVubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZnByOwogICAgIH0KKyAg
ICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9
IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIG1faml0LnJz
aGlmdDMyKFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgIGluZm8uZmlsbFN0cmljdElu
dDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOworICAgICAg
ICAvLyBmYWxsIHRocm91Z2guCisgICAgfQorICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXRT
dHJpY3RJbnQ0ODogeworICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKKyAgICAg
ICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Cisg
ICAgICAgIG1faml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKGdwciwgZnByKTsKKyAgICAgICAgbV9n
cHJzLnVubG9jayhncHIpOworICAgICAgICByZXR1cm4gZnByOworICAgIH0KIAogICAgIC8vIFVu
Ym94IHRoZSBkb3VibGUKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewpAQCAtMTExMSw3
ICsxMzg3LDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAg
IGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAg
ICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46Ci0gICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjog
eworICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6
CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKICAgICAgICAgdGVybWluYXRlU3Bl
Y3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAg
ICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CkBAIC0xMTk0LDcgKzE0NzIsOSBAQCBHUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNE
b3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdEpT
Q2VsbDoKLSAgICBjYXNlIERhdGFGb3JtYXRDZWxsOiB7CisgICAgY2FzZSBEYXRhRm9ybWF0Q2Vs
bDoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJ
bnQ0ODogewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0K
QEAgLTE1MDMsNiArMTc4Myw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJD
b21wYXJlCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERh
dGFGb3JtYXRKU0Jvb2xlYW4pOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50
NDhDb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmRpdGlvbikKK3sKKyAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQg
b3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBvcDEpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgUmV1c2UsIG9wMSwgb3AyKTsKKyAgICAKKyAgICBtX2ppdC5jb21wYXJlNjQoY29uZGl0
aW9uLCBvcDEuZ3ByKCksIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAKKyAgICAvLyBJ
ZiB3ZSBhZGQgYSBEYXRhRm9ybWF0Qm9vbCwgd2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgorICAgIG1f
aml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29s
ZWFuKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NDhCcmFu
Y2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxD
b25kaXRpb24gY29uZGl0aW9uKQoreworICAgIEJhc2ljQmxvY2sqIHRha2VuID0gYnJhbmNoTm9k
ZS0+dGFrZW5CbG9jaygpOworICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0gYnJhbmNoTm9kZS0+
bm90VGFrZW5CbG9jaygpOworCisgICAgLy8gVGhlIGJyYW5jaCBpbnN0cnVjdGlvbiB3aWxsIGJy
YW5jaCB0byB0aGUgdGFrZW4gYmxvY2suCisgICAgLy8gSWYgdGFrZW4gaXMgbmV4dCwgc3dpdGNo
IHRha2VuIHdpdGggbm90VGFrZW4gJiBpbnZlcnQgdGhlIGJyYW5jaCBjb25kaXRpb24gc28gd2Ug
Y2FuIGZhbGwgdGhyb3VnaC4KKyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAg
ICAgY29uZGl0aW9uID0gSklUQ29tcGlsZXI6OmludmVydChjb25kaXRpb24pOworICAgICAgICBC
YXNpY0Jsb2NrKiB0bXAgPSB0YWtlbjsKKyAgICAgICAgdGFrZW4gPSBub3RUYWtlbjsKKyAgICAg
ICAgbm90VGFrZW4gPSB0bXA7CisgICAgfQorICAgIAorICAgIFNwZWN1bGF0ZVdoaWNoZXZlcklu
dDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZVdoaWNo
ZXZlckludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQxKCksIG9wMSk7CisgICAgCisg
ICAgYnJhbmNoNjQoY29uZGl0aW9uLCBvcDEuZ3ByKCksIG9wMi5ncHIoKSk7CisgICAganVtcChu
b3RUYWtlbik7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVDb21wYXJl
KE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0aW9uKQog
ewogICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
QEAgLTE5MDYsNiArMjIyMCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgRmx1c2hlZEludDQ4OiB7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KG5vZGUtPmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVy
KCk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKHJlc3VsdC5ncHIoKSwgdmlydHVhbFJlZ2lz
dGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICAgICAgZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVh
bFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlcikuaW5pdEludDQ4KG5vZGUsIG5vZGUtPnJlZkNvdW50
KCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KG5vZGUtPmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMTk4MSw2ICsyMzA1LDE0IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6IHsK
KyAgICAgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KHZhbHVlLmdwcigpLCBKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcihub2RlLT5sb2NhbCgpKSk7CisgICAgICAgICAgICBub1Jlc3VsdChub2Rl
KTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNl
KEludDQ4SW5KU1N0YWNrKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6IHsKICAgICAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgR1BS
UmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzUsNyArMzM1LDkgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJ
VDo6cwogICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZTMyUGF5bG9hZDsKICAgICAgICAg
ZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdENlbGwgfHwgcmVnaXN0ZXJGb3Jt
YXQgPT0gRGF0YUZvcm1hdFN0b3JhZ2UpCiAgICAgICAgICAgICBzcGlsbEFjdGlvbiA9IFN0b3Jl
UHRyOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDQ4IHx8IHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0
OCkgeworICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZTY0OworICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICAg
ICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmU2NDsKICAgICAgICAgfQpAQCAtMzg2LDYgKzM4
OCw0MCBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgfSBl
bHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RvcmFnZSkgewogICAgICAgICBB
U1NFUlQoaW5mby5ncHIoKSA9PSBzb3VyY2UpOwogICAgICAgICBmaWxsQWN0aW9uID0gTG9hZFB0
cjsKKyAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkgewor
ICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24g
PSBTZXRJbnQ0OENvbnN0YW50OworICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGls
bEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQorICAgICAg
ICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRDb252ZXJ0VG9JbnQ0ODsKKyAgICAgICAg
ZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAg
ICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3Jt
YXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0g
TG9hZDY0U2hpZnRMZWZ0MTY7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9
PSBEYXRhRm9ybWF0Tm9uZSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcg
dGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgorICAgICAgICAgICAgLy8gYmUg
dHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8t
ZG91YmxlCisgICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9k
ZSkuCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9
CisgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgp
CisgICAgICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKQorICAgICAgICAgICAgZmlsbEFjdGlv
biA9IFNldFN0cmljdEludDQ4Q29uc3RhbnQ7CisgICAgICAgIGVsc2UgaWYgKGlzSlNJbnQzMihp
bmZvLnNwaWxsRm9ybWF0KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMp
CisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDMyUGF5bG9hZFNpZ25FeHRlbmQ7CisgICAg
ICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAg
ICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0U2hpZnRSaWdodDE2OworICAgICAgICBlbHNlIGlm
IChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAg
ICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1h
dCgpID09IERhdGFGb3JtYXROb25lKQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuLiBBbnl0
aGluZyB0aGF0IHF1YWxpZmllcyBhcyBhbiBpbnQzMiB3aWxsIG5ldmVyCisgICAgICAgICAgICAv
LyBiZSB0dXJuZWQgaW50byBhIGNlbGwgKGltbWVkaWF0ZSBzcGVjIGZhaWwpIG9yIGEgZG91Ymxl
ICh0by1kb3VibGUKKyAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zIGludm9sdmUgYSBzZXBhcmF0
ZSBub2RlKS4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgJiBEYXRh
Rm9ybWF0SlMpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0zOTMsNyArNDI5LDYgQEAgU2lsZW50
UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICBpZiAobm9kZS0+aGFz
Q29uc3RhbnQoKSkgewogICAgICAgICAgICAgaWYgKHZhbHVlT2ZKU0NvbnN0YW50KG5vZGUpLmlz
Q2VsbCgpKQogICAgICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRUcnVzdGVkSlNDb25zdGFu
dDsKLSAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0SlND
b25zdGFudDsKICAgICAgICAgfSBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZv
cm1hdEludDMyKSB7CiAgICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZv
cm1hdEpTSW50MzIpOwpAQCAtNTEyLDYgKzU0NywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
aWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgY2FzZSBTZXRJbnQzMkNvbnN0YW50OgogICAgICAgICBt
X2ppdC5tb3ZlKEltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0YW50KHBsYW4ubm9kZSgpKSksIHBsYW4u
Z3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNldEludDQ4Q29uc3RhbnQ6CisgICAg
ICAgIG1faml0Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29uc3RhbnQocGxhbi5ub2RlKCkpLmFzTWFj
aGluZUludCgpIDw8IDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U2V0U3RyaWN0SW50NDhDb25zdGFudDoKKyAgICAgICAgbV9qaXQubW92ZShJbW02NCh2YWx1ZU9m
SlNDb25zdGFudChwbGFuLm5vZGUoKSkuYXNNYWNoaW5lSW50KCkpLCBwbGFuLmdwcigpKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXRCb29sZWFuQ29uc3RhbnQ6CiAgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKHZhbHVlT2ZCb29sZWFuQ29uc3RhbnQocGxhbi5ub2RlKCkpKSwg
cGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTMzLDYgKzU3NCwxNSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBw
bGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIExvYWQzMlBheWxv
YWRDb252ZXJ0VG9JbnQ0ODoKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXls
b2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAg
ICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihwbGFuLmdwcigpLCBwbGFuLmdwcigpKTsKKyAg
ICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgTG9hZDMyUGF5bG9hZFNpZ25FeHRlbmQ6CisgICAgICAgIG1f
aml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJl
Z2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIo
cGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTG9hZERv
dWJsZUJveERvdWJsZToKICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAg
ICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkp
OwpAQCAtNTc0LDYgKzYyNCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNv
bnN0IFNpCiAgICAgY2FzZSBMb2FkNjQ6CiAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxl
cjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkNjRTaGlmdFJpZ2h0MTY6CisgICAgICAg
IG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVh
bFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTG9hZDY0
U2hpZnRMZWZ0MTY6CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAg
bV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJy
ZWFrOwogI2VuZGlmCiAgICAgY2FzZSBMb2FkRG91YmxlOgogICAgICAgICBtX2ppdC5sb2FkRG91
YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIo
KSksIHBsYW4uZnByKCkpOwpAQCAtMTQxNiw2ICsxNDc0LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW4KIAogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEludDMyVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUludDMyQnJhbmNoKG5v
ZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
ZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKQorICAgICAgICAg
ICAgY29tcGlsZVBlZXBIb2xlSW50NDhCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9u
KTsKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZURvdWJs
ZUJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBkb3VibGVDb25kaXRpb24pOwogICAgICAgICBlbHNl
IGlmIChub2RlLT5vcCgpID09IENvbXBhcmVFcSkgewpAQCAtMjE0OSw2ICsyMjExLDE4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICAgICAgaW50MzJSZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVz
ZTogeworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3Ax
KTsKKyAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIo
b3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUs
IERhdGFGb3JtYXRJbnQzMik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNF
KEpTVkFMVUU2NCkKICAgICAKICAgICBjYXNlIE51bWJlclVzZToKICAgICBjYXNlIE5vdENlbGxV
c2U6IHsKQEAgLTI1NDksNiArMjYyMywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0QnlWYWxPbkluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisgICAgaWYgKG5vZGUt
PnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5k
MzJUb1B0cihyZXN1bHRSZWcpOworICAgICAgICBzdHJpY3RJbnQ0OFJlc3VsdChyZXN1bHRSZWcs
IG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIEZQUlRlbXBvcmFyeSBm
cmVzdWx0KHRoaXMpOwogICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHJlc3VsdFJlZywg
ZnJlc3VsdC5mcHIoKSk7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCByZXN1bHRSZWcsIFRy
dXN0ZWRJbW0zMigwKSk7CkBAIC0yNjAyLDYgKzI2ODIsMjggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dEJ5VmFsRm9ySQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgICAgIFNw
ZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKKyAgICAg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICAgICAgbV9qaXQubW92
ZSh2YWx1ZU9wLmdwcigpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgICAgIGlmIChpc0NsYW1wZWQo
dHlwZSkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudFNpemUodHlwZSkgPT0gMSk7
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaW5Cb3VuZHMgPSBqaXQuYnJh
bmNoNjQoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWws
IHJlc3VsdCwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NCgweGZmKSk7CisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgdG9vQmlnID0gaml0LmJyYW5jaDY0KAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW4sIHJlc3VsdCwgSklUQ29tcGls
ZXI6OlRydXN0ZWRJbW02NCgweGZmKSk7CisgICAgICAgICAgICAgICAgaml0LnhvclB0cihyZXN1
bHQsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2xhbXBl
ZCA9IGppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgdG9vQmlnLmxpbmsoJmppdCk7CisgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMigyNTUpLCByZXN1
bHQpOworICAgICAgICAgICAgICAgIGNsYW1wZWQubGluaygmaml0KTsKKyAgICAgICAgICAgICAg
ICBpbkJvdW5kcy5saW5rKCZqaXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFsdWUu
YWRvcHQoc2NyYXRjaCk7CisgICAgICAgICAgICB2YWx1ZUdQUiA9IHNjcmF0Y2hSZWc7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTnVt
YmVyVXNlOiB7CiAgICAgICAgICAgICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKGVsZW1lbnRTaXplKHR5cGUpID09IDEpOwpAQCAtMjkxNSw2ICszMDE3LDMy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICAgICAgaW50
MzJSZXN1bHQoZ3ByUmVzdWx0LCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAg
ICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAg
ICAgLy8gV2lsbCB3ZSBuZWVkIGFuIG92ZXJmbG93IGNoZWNrPyBJZiB3ZSBjYW4gcHJvdmUgdGhh
dCBuZWl0aGVyIGlucHV0IGNhbiBiZQorICAgICAgICAvLyBJbnQ0OCB0aGVuIHRoZSBvdmVyZmxv
dyBjaGVjayB3aWxsIG5vdCBiZSBuZWNlc3NhcnkuCisgICAgICAgIGlmICghbV9zdGF0ZS5mb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAgICAgICAm
JiAhbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgp
KSB7CisgICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3Bl
cmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCksIG9wMSk7CisgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgbV9qaXQuYWRkNjQob3AxLmdwcigpLCBv
cDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHQu
Z3ByKCksIG5vZGUsIG9wMS5mb3JtYXQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9w
Mik7CisgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJl
Z3MoKSwgMCwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaEFkZDY0KE1hY3JvQXNzZW1ibGVyOjpP
dmVyZmxvdywgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgaW50NDhSZXN1bHQo
cmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBV
U0UoSlNWQUxVRTY0KQogICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTMwNjAsNiAr
MzE4OCwzMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9kCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2Fz
ZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxvdyBj
aGVjaz8gSWYgd2UgY2FuIHByb3ZlIHRoYXQgbmVpdGhlciBpbnB1dCBjYW4gYmUKKyAgICAgICAg
Ly8gSW50NDggdGhlbiB0aGUgb3ZlcmZsb3cgY2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5Lgor
ICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUo
U3BlY0ludDQ4KQorICAgICAgICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIo
KSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KSkgeworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hl
dmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBv
cDEpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAg
IG1faml0LnN1YjY0KG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICAgICAgaW50NDhSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0KCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVJ
bnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRl
SW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOworICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIo
KSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAg
IEludDQ4T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBtX2ppdC5icmFu
Y2hTdWI2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMi5ncHIoKSwgcmVzdWx0Lmdwcigp
KSk7CisgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKwogICAgIGNhc2UgTnVtYmVy
VXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOwpAQCAtMzA4OCw2ICszMjQyLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFyaXRoTmVnYXRlKAogCiAgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQu
Z3ByKCkpOwogCisgICAgICAgIC8vIE5vdGU6IHRoZXJlIGlzIG5vIG5vdGlvbiBvZiBiZWluZyBu
b3QgdXNlZCBhcyBhIG51bWJlciwgYnV0IHNvbWVvbmUKKyAgICAgICAgLy8gY2FyaW5nIGFib3V0
IG5lZ2F0aXZlIHplcm8uCisgICAgICAgIAogICAgICAgICBpZiAoYnl0ZWNvZGVDYW5UcnVuY2F0
ZUludGVnZXIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICBtX2ppdC5uZWcz
MihyZXN1bHQuZ3ByKCkpOwogICAgICAgICBlbHNlIHsKQEAgLTMwOTksNiArMzI1Niw0MiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUoCiAgICAgICAgIGludDMyUmVz
dWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICBpZiAoIW1f
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KSkgewor
ICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAg
ICAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwg
cmVzdWx0R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm5lZzY0KHJlc3VsdEdQUik7CisgICAgICAg
ICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZs
YWdzKCkpKSB7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAg
ICAgICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdEdQUikp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0R1BSLCBub2Rl
LCBvcDEuZm9ybWF0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIG9w
MUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAw
LAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoTmVnNjQoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93
LCByZXN1bHRHUFIpKTsKKyAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVy
byhub2RlLT5hcml0aE5vZGVGbGFncygpKSkgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKKyAgICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCksIDAsCisgICAg
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1
bHRHUFIpKTsKKyAgICAgICAgfQorICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTMxNjQsNiArMzM1Nyw2MSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNdWwoTm9kCiAgICAgICAgIGludDMyUmVzdWx0
KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgIAorI2lm
IFVTRShKU1ZBTFVFNjQpICAgCisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIC8v
IFRoaXMgaXMgc3VwZXIgY2xldmVyLiBXZSB3YW50IHRvIGRvIGFuIGludDQ4IG11bHRpcGxpY2F0
aW9uIGFuZCBjaGVjayB0aGUKKyAgICAgICAgLy8gaW50NDggb3ZlcmZsb3cgYml0LiBUaGVyZSBp
cyBubyBkaXJlY3QgaGFyZHdhcmUgc3VwcG9ydCBmb3IgdGhpcywgYnV0IHdlIGRvCisgICAgICAg
IC8vIGhhdmUgdGhlIGFiaWxpdHkgdG8gZG8gYW4gaW50NjQgbXVsdGlwbGljYXRpb24gYW5kIGNo
ZWNrIHRoZSBpbnQ2NCBvdmVyZmxvdworICAgICAgICAvLyBiaXQuIFdlIGxldmVyYWdlIHRoYXQu
IENvbnNpZGVyIHRoYXQgYSwgYiBhcmUgaW50NDggbnVtYmVycyBpbnNpZGUgaW50NjQKKyAgICAg
ICAgLy8gcmVnaXN0ZXJzLCB3aXRoIHRoZSBoaWdoIDE2IGJpdHMgYmVpbmcgc2lnbi1leHRlbmRl
ZC4gV2UgY2FuIGRvOgorICAgICAgICAvLworICAgICAgICAvLyAgICAgKGEgKiAoYiA8PCAxNikp
CisgICAgICAgIC8vCisgICAgICAgIC8vIFRoaXMgd2lsbCBnaXZlIHVzIGEgbGVmdC1zaGlmdGVk
IGludDQ4ICh2YWx1ZSBpcyBpbiBoaWdoIDQ4IGJpdHMsIGxvdyAxNgorICAgICAgICAvLyBiaXRz
IGFyZSB6ZXJvKSBwbHVzIHRoZSBpbnQ0OCBvdmVyZmxvdyBiaXQuIEkuZS4gd2hldGhlciB0aGlz
IDY0LWJpdAorICAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBvdmVyZmxvd3MgaXMgaWRlbnRpY2Fs
IHRvIHdoZXRoZXIgdGhlICdhICogYicgNDgtYml0CisgICAgICAgIC8vIG11bHRpcGxpY2F0aW9u
IG92ZXJmbG93cy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSW4gb3VyIG5vbWVuY2xhdHVyZSwg
dGhpcyBpczoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIHN0cmljdEludDQ4KGEpICogaW50
NDgoYikgPT4gaW50NDgKKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhhdCBpcyAic3RyaWN0SW50
NDgiIG1lYW5zIHVuc2hpZnRlZCBhbmQgImludDQ4IiBtZWFucyBsZWZ0LXNoaWZ0ZWQgYnkgMTYK
KyAgICAgICAgLy8gYml0cy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gV2UgZG9uJ3QgY2FyZSB3
aGljaCBvZiBvcDEgb3Igb3AyIHNlcnZlcyBhcyB0aGUgbGVmdC1zaGlmdGVkIG9wZXJhbmQsIHNv
CisgICAgICAgIC8vIHdlIGp1c3QgZG8gd2hhdGV2ZXIgaXMgbW9yZSBjb252ZW5pZW50IGZvciBv
cDEgYW5kIGhhdmUgb3AyIGRvIHRoZQorICAgICAgICAvLyBvcHBvc2l0ZS4gVGhpcyBlbnN1cmVz
IHRoYXQgd2UgZG8gYXQgbW9zdCBvbmUgc2hpZnQuCisKKyAgICAgICAgU3BlY3VsYXRlV2hpY2hl
dmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1
bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCksIE9wcG9z
aXRlU2hpZnQsIG9wMSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAg
ICAgIAorICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAgICAgICBHUFJSZWcg
b3AyR1BSID0gb3AyLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworICAgICAgICAKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIElu
dDQ4T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBtX2ppdC5icmFuY2hN
dWw2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMUdQUiwgb3AyR1BSLCByZXN1bHRHUFIp
KTsKKyAgICAgICAgCisgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8o
bm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIHJlc3VsdE5vblplcm8gPSBtX2ppdC5icmFuY2hUZXN0NjQoCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwg
MCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6TGVzc1Ro
YW4sIG9wMUdQUiwgVHJ1c3RlZEltbTY0KDApKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAg
ICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9w
MkdQUiwgVHJ1c3RlZEltbTY0KDApKSk7CisgICAgICAgICAgICByZXN1bHROb25aZXJvLmxpbmso
Jm1faml0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxV
RTY0KQogICAgICAgICAKICAgICBjYXNlIE51bWJlclVzZTogewogICAgICAgICBTcGVjdWxhdGVE
b3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0zNTg3LDcgKzM4MzUs
MTQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLAogICAgICAgICBj
b21waWxlSW50MzJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0KKyAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAgICAgICAgY29tcGlsZUludDQ4Q29tcGFy
ZShub2RlLCBjb25kaXRpb24pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCisgICAgCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChO
dW1iZXJVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVEb3VibGVDb21wYXJlKG5vZGUsIGRvdWJsZUNv
bmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3MzcsNiArMzk5MiwyMyBAQCBi
b29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kCiAgICAgICAgIGNvbXBpbGVJ
bnQzMkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KKyAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkgICAKKyAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6IHsKKyAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0
ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBV
SU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0KGJy
YW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ0OEJyYW5j
aChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICAgICAg
dXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5jaEluZGV4SW5CbG9jazsKKyAgICAgICAg
ICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUludDQ4Q29tcGFyZShub2RlLCBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmIC8vIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIHVu
c2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZp
c2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw5ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgLy8g
YW5kIGl0cyBtYWNoaW5lIHJlZ2lzdGVycyBtYXkgYmUgcmV1c2VkLgogICAgIGJvb2wgY2FuUmV1
c2UoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVn
aXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8m
IGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVy
KTsKLSAgICAgICAgcmV0dXJuIGluZm8uY2FuUmV1c2UoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVy
YXRpb25JbmZvKG5vZGUpLmNhblJldXNlKCk7CiAgICAgfQogICAgIGJvb2wgY2FuUmV1c2UoRWRn
ZSBub2RlVXNlKQogICAgIHsKQEAgLTIzNywxNSArMjM1LDExIEBAIHB1YmxpYzoKICAgICAvLyBh
dm9pZCBzcGlsbGluZyB2YWx1ZXMgd2Ugd2lsbCBuZWVkIGltbWVkaWF0ZWx5KS4KICAgICBib29s
IGlzRmlsbGVkKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRp
b25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxS
ZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZv
cm1hdE5vbmU7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5yZWdpc3RlckZv
cm1hdCgpICE9IERhdGFGb3JtYXROb25lOwogICAgIH0KICAgICBib29sIGlzRmlsbGVkRG91Ymxl
KE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lz
dGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZvJiBp
bmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7
Ci0gICAgICAgIHJldHVybiBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJs
ZTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKG5vZGUpLnJlZ2lzdGVyRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdERvdWJsZTsKICAgICB9CiAKICAgICAvLyBDYWxsZWQgb24gYW4gb3BlcmFu
ZCBvbmNlIGl0IGhhcyBiZWVuIGNvbnN1bWVkIGJ5IGEgcGFyZW50IG5vZGUuCkBAIC0yNTMsOCAr
MjQ3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdp
c3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYg
aW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIp
OworICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvKG5vZGUpOwog
CiAgICAgICAgIC8vIHVzZSgpIHJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2YWx1ZSBiZWNvbWVzIGRl
YWQsIGFuZCBhbnkKICAgICAgICAgLy8gYXNzb2NpYXRlZCByZXNvdXJjZXMgbWF5IGJlIGZyZWVk
LgpAQCAtMzMzLDYgKzMyNiw3IEBAIHB1YmxpYzoKICAgICAvLyBtYWNoaW5lIHJlZ2lzdGVycywg
aW1wbGljaXRseSBnZW5lcmF0aW5nIHNwZWN1bGF0aW9uIGNoZWNrcyBhcyBuZWVkZWQuCiAgICAg
R1BSUmVnIGZpbGxTcGVjdWxhdGVJbnQzMihFZGdlLCBEYXRhRm9ybWF0JiByZXR1cm5Gb3JtYXQp
OwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50MzJTdHJpY3QoRWRnZSk7CisgICAgR1BSUmVn
IGZpbGxTcGVjdWxhdGVJbnQ0OChFZGdlLCBEYXRhRm9ybWF0IGRlc2lyZWRGb3JtYXQpOwogICAg
IEZQUlJlZyBmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3Vs
YXRlQ2VsbChFZGdlKTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CkBA
IC00NjgsNiArNDYyLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGJveERvdWJs
ZShmcHIsIGFsbG9jYXRlKCkpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGJveEludDQ4KEdQUlJl
ZyBzb3VyY2VHUFIsIEdQUlJlZyB0YXJnZXRHUFIsIERhdGFGb3JtYXQgZm9ybWF0KTsKICNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgR1BSUmVn
IHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRHUFIpCiAgICAgewpAQCAtNTU5LDggKzU1NSw4IEBAIHB1
YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBib29sIGlzS25vd25JbnRlZ2VyKE5v
ZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH5TcGVj
SW50MzIpOyB9Ci0gICAgYm9vbCBpc0tub3duQ2VsbChOb2RlKiBub2RlKSB7IHJldHVybiAhKG1f
c3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiB+U3BlY0NlbGwpOyB9CisgICAgYm9vbCBpc0tu
b3duSW50ZWdlcihOb2RlKiBub2RlKSB7IHJldHVybiAhbV9zdGF0ZS5mb3JOb2RlKG5vZGUpLmlz
VHlwZShTcGVjSW50MzIpOyB9CisgICAgYm9vbCBpc0tub3duQ2VsbChOb2RlKiBub2RlKSB7IHJl
dHVybiAhbV9zdGF0ZS5mb3JOb2RlKG5vZGUpLmlzVHlwZShTcGVjQ2VsbCk7IH0KICAgICAKICAg
ICBib29sIGlzS25vd25Ob3RJbnRlZ2VyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5m
b3JOb2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNJbnQzMik7IH0KICAgICBib29sIGlzS25vd25Ob3RO
dW1iZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBl
ICYgU3BlY051bWJlcik7IH0KQEAgLTgxNiw2ICs4MTIsMjUgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgaW50MzJSZXN1bHQocmVnLCBub2RlLCBEYXRhRm9ybWF0SW50MzIsIG1vZGUpOwogICAg
IH0KKyAgICB2b2lkIGludDQ4UmVzdWx0KEdQUlJlZyByZWcsIE5vZGUqIG5vZGUsIERhdGFGb3Jt
YXQgZm9ybWF0ID0gRGF0YUZvcm1hdEludDQ4LCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9IENhbGxV
c2VDaGlsZHJlbikKKyAgICB7CisgICAgICAgIGlmIChtb2RlID09IENhbGxVc2VDaGlsZHJlbikK
KyAgICAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOworCisgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgR2Vu
ZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmly
dHVhbFJlZ2lzdGVyKTsKKworICAgICAgICBtX2dwcnMucmV0YWluKHJlZywgdmlydHVhbFJlZ2lz
dGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICBpbmZvLmluaXRJbnQ0OChub2RlLCBub2RlLT5y
ZWZDb3VudCgpLCByZWcsIGZvcm1hdCk7CisgICAgfQorICAgIHZvaWQgaW50NDhSZXN1bHQoR1BS
UmVnIHJlZywgTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRy
ZW4pCisgICAgeworICAgICAgICBpbnQ0OFJlc3VsdChyZWcsIG5vZGUsIERhdGFGb3JtYXRJbnQ0
OCwgbW9kZSk7CisgICAgfQorICAgIHZvaWQgc3RyaWN0SW50NDhSZXN1bHQoR1BSUmVnIHJlZywg
Tm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRyZW4pCisgICAg
eworICAgICAgICBpbnQ0OFJlc3VsdChyZWcsIG5vZGUsIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCwg
bW9kZSk7CisgICAgfQogICAgIHZvaWQgbm9SZXN1bHQoTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5N
b2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRyZW4pCiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpCkBAIC05MDAsNyArOTE1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgaW5pdENvbnN0YW50SW5mbyhOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzSW50MzJDb25zdGFudChub2RlKSB8fCBpc051bWJlckNvbnN0YW50KG5vZGUpIHx8IGlz
SlNDb25zdGFudChub2RlKSk7Ci0gICAgICAgIGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdp
c3Rlcihub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKSkuaW5pdENvbnN0YW50KG5vZGUsIG5vZGUtPnJl
ZkNvdW50KCkpOworICAgICAgICBnZW5lcmF0aW9uSW5mbyhub2RlKS5pbml0Q29uc3RhbnQobm9k
ZSwgbm9kZS0+cmVmQ291bnQoKSk7CiAgICAgfQogICAgIAogICAgIC8vIFRoZXNlIG1ldGhvZHMg
YWRkIGNhbGxzIHRvIEMrKyBoZWxwZXIgZnVuY3Rpb25zLgpAQCAtMTg4OSwxMCArMTkwNCwxNiBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChpc0ludDMyQ29uc3RhbnQobm9kZSkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
ID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZv
ID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7Ci0g
ICAgICAgIAotICAgICAgICByZXR1cm4gaW5mby5pc0pTSW50MzIoKTsKKyAgICAgICAgcmV0dXJu
IGdlbmVyYXRpb25JbmZvKG5vZGUpLmlzSlNJbnQzMigpOworICAgIH0KKyAgICAKKyAgICBib29s
IGJldHRlclVzZVN0cmljdEludDQ4KE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4g
IWdlbmVyYXRpb25JbmZvKG5vZGUtPmNoaWxkMSgpKS5pc0ludDQ4KCk7CisgICAgfQorICAgIGJv
b2wgYmV0dGVyVXNlU3RyaWN0SW50NDgoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJldHRlclVzZVN0cmljdEludDQ4KGVkZ2Uubm9kZSgpKTsKICAgICB9CiAgICAgCiAgICAgYm9v
bCBjb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiwgTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiwgU19ERkdPcGVyYXRpb25fRUpKKTsKQEAgLTIx
OTUsNiArMjIxNiwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9nZW5lcmF0
aW9uSW5mb1tvcGVyYW5kVG9Mb2NhbCh2aXJ0dWFsUmVnaXN0ZXIpXTsKICAgICB9CisgICAgCisg
ICAgR2VuZXJhdGlvbkluZm8mIGdlbmVyYXRpb25JbmZvKE5vZGUqIG5vZGUpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKG5vZGUtPnZpcnR1
YWxSZWdpc3RlcigpKTsKKyAgICB9CisgICAgCisgICAgR2VlbnJhdGlvbkluZm8mIGdlbmVyYXRp
b25JbmZvKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhl
ZGdlLm5vZGUoKSk7CisgICAgfQogCiAgICAgLy8gVGhlIEpJVCwgd2hpbGUgYWxzbyBwcm92aWRl
cyBNYWNyb0Fzc2VtYmxlciBmdW5jdGlvbmFsaXR5LgogICAgIEpJVENvbXBpbGVyJiBtX2ppdDsK
QEAgLTI2NzYsNiArMjcwNywxNzkgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFs
aWQ7CiB9OwogCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NDggKGkuZS4gaXQncyBsZWZ0
LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorY2xhc3MgU3BlY3VsYXRlSW50NDhPcGVy
YW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQoU3BlY3Vs
YXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBB
dXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAg
ICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcp
CisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAg
ICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQor
ICAgIAorICAgIH5TcGVjdWxhdGVJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2Nr
KG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAg
IAorICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09
IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxs
U3BlY3VsYXRlSW50NDgoZWRnZSgpLCBEYXRhRm9ybWF0SW50NDgpOworICAgICAgICByZXR1cm4g
bV9ncHJPckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAg
ICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1
bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPcklu
dmFsaWQ7Cit9OworCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NDggKGkuZS4gdGhlIHBheWxv
YWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQp
LgorY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRn
ZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3Bl
Y3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQor
ICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVk
Z2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxl
ZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIH5TcGVjdWxh
dGVJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9
IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsK
KyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAgIEdQUlJlZyBncHIo
KQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisg
ICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlU3RyaWN0SW50
NDgoZWRnZSgpLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICByZXR1cm4gbV9ncHJP
ckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1f
aml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZl
SklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7
Cit9OworCitlbnVtIE9wcG9zaXRlU2hpZnRUYWcgeyBPcHBvc2l0ZVNoaWZ0IH07CisKK2NsYXNz
IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
U3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kKFNwY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBl
ZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9u
KQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAg
LCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgICAgICAsIG1fc3RyaWN0KGppdC0+
YmV0dGVyVXNlU3RyaWN0SW50NDgoZWRnZSkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VE
KG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgp
ID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQor
ICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdo
aWNoZXZlckludDQ4T3BlcmFuZChTcGN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgY29uc3Qg
U3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9u
TW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQp
CisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgLCBtX3N0cmljdChvdGhlci5tX3N0cmljdCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24g
fHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlz
RmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgZXhw
bGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kKFNwY3VsYXRpdmVKSVQqIGppdCwg
RWRnZSBlZGdlLCBPcHBvc2l0ZVNoaWZ0VGFnLCBjb25zdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0
OE9wZXJhbmQmIG90aGVyLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlID0gQXV0b21hdGljT3BlcmFu
ZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRn
ZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgICAgICAsIG1f
c3RyaWN0KCFvdGhlci5tX3N0cmljdCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9k
ZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0g
TWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisgICAg
ICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgflNwZWN1bGF0ZVdoaWNoZXZlckludDQ4
T3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52YWxp
ZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOworICAgIH0K
KyAgICAKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZWRn
ZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVnIGdwcigpCisgICAg
eworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAg
ICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZUludDQ4KAorICAgICAg
ICAgICAgICAgIGVkZ2UoKSwgbV9zdHJ1Y3QgPyBEYXRhRm9ybWF0U3RyaWN0SW50NDggOiBEYXRh
Rm9ybWF0SW50NDgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsK
KyAgICB9CisgICAgCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShu
b2RlKCkpOworICAgIH0KKyAgICAKKyAgICBEYXRhRm9ybWF0IGZvcm1hdCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9zdHJpY3QgPyBEYXRhRm9ybWF0U3RyaWN0SW50NDggOiBEYXRh
Rm9ybWF0SW50NDg7CisgICAgfQorCitwcml2YXRlOgorICAgIFNwZWN1bGF0ZUpJVCogbV9qaXQ7
CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOworICAgIGJvb2wg
bV9zdHJpY3Q7Cit9OworCiBjbGFzcyBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBTcGVjdWxhdGVEb3VibGVPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQs
IEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFu
ZFNwZWN1bGF0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQu
Y3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw5IEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2UKICAgICBjYXNlIEtub3duSW50MzJVc2U6CiAgICAg
ICAgIG91dC5wcmludCgiS25vd25JbnQzMiIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiSW50NDgiKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgICAgICBvdXQucHJpbnQoIlJlYWxOdW1iZXIi
KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgZW51bSBVc2VLaW5kIHsK
ICAgICBVbnR5cGVkVXNlLAogICAgIEludDMyVXNlLAogICAgIEtub3duSW50MzJVc2UsCisgICAg
TWFjaGluZUludFVzZSwKICAgICBSZWFsTnVtYmVyVXNlLAogICAgIE51bWJlclVzZSwKICAgICBL
bm93bk51bWJlclVzZSwKQEAgLTY2LDYgKzY3LDggQEAgQUxXQVlTX0lOTElORSBTcGVjdWxhdGVk
VHlwZSB0eXBlRmlsdGVyRgogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgY2FzZSBLbm93bkludDMy
VXNlOgogICAgICAgICByZXR1cm4gU3BlY0ludDMyOworICAgIGNhc2UgTWFjaGluZUludFVzZToK
KyAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5lSW50OwogICAgIGNhc2UgUmVhbE51bWJlclVzZToK
ICAgICAgICAgcmV0dXJuIFNwZWNSZWFsTnVtYmVyOwogICAgIGNhc2UgTnVtYmVyVXNlOgpAQCAt
MTI1LDYgKzEyOCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGsK
ICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25J
bnQzMlVzZToKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNl
OgogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAkocmV2aXNpb24g
MTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgdm9pZCBWYWx1ZVNvdXJjZTo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KQogICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgIG91dC5w
cmludCgiSW50MzIiKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoK
KyAgICAgICAgb3V0LnByaW50KCJJbnQ0OCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENl
bGxJbkpTU3RhY2s6CiAgICAgICAgIG91dC5wcmludCgiQ2VsbCIpOwogICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHJldmlz
aW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBlbnVtIFZhbHVlU291cmNlS2luZCB7
CiAgICAgU291cmNlTm90U2V0LAogICAgIFZhbHVlSW5KU1N0YWNrLAogICAgIEludDMySW5KU1N0
YWNrLAorICAgIEludDQ4SW5KU1N0YWNrLAogICAgIENlbGxJbkpTU3RhY2ssCiAgICAgQm9vbGVh
bkluSlNTdGFjaywKICAgICBEb3VibGVJbkpTU3RhY2ssCkBAIC01Niw2ICs1Nyw4IEBAIHN0YXRp
YyBpbmxpbmUgVmFsdWVTb3VyY2VLaW5kIGRhdGFGb3JtYXQKICAgICBzd2l0Y2ggKGRhdGFGb3Jt
YXQpIHsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMySW5K
U1N0YWNrOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1cm4gSW50NDhJ
bkpTU3RhY2s7CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgICAgICByZXR1cm4gRG91
YmxlSW5KU1N0YWNrOwogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CkBAIC03OSw2ICs4Miw4
IEBAIHN0YXRpYyBpbmxpbmUgRGF0YUZvcm1hdCB2YWx1ZVNvdXJjZUtpbmQKICAgICAgICAgcmV0
dXJuIERhdGFGb3JtYXRKUzsKICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICByZXR1
cm4gRGF0YUZvcm1hdEludDMyOworICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgIHJl
dHVybiBEYXRhRm9ybWF0SW50NDg7CiAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgogICAgICAgICBy
ZXR1cm4gRGF0YUZvcm1hdENlbGw7CiAgICAgY2FzZSBCb29sZWFuSW5KU1N0YWNrOgpAQCAtMTM5
LDYgKzE0NCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShEb3Vi
bGVJbkpTU3RhY2spOwogICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgIHJl
dHVybiBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjayk7CisgICAgICAgIGNhc2UgRmx1c2hlZElu
dDQ4OgorICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEludDQ4SW5KU1N0YWNrKTsKICAg
ICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShD
ZWxsSW5KU1N0YWNrKTsKICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKQEAgLTE4MSw2ICsx
ODgsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgICAg
ICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyKCk7
CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAgICAg
IHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDgoKTsK
KyAgICAgICAgICAgIAogICAgICAgICBjYXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAgICAgICBy
ZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGwoKTsKICAg
ICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFj
Y2Vzc0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
cmlhYmxlQWNjZXNzRGF0YS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMs
NiArMzMzLDkgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRJbnQzMjsKICAgICAgICAgCisgICAg
ICAgIGlmIChlbmFibGVJbnQ0OCgpICYmICFvcGVyYW5kSXNBcmd1bWVudChtX2xvY2FsKSAmJiBp
c01hY2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBG
bHVzaGVkSW50NDg7CisgICAgICAgIAogICAgICAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJl
ZGljdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gRmx1c2hlZENlbGw7CiAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgJKHJldmlz
aW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBJbnN0cnVjdGlvbiogdlBDKCkgY29uc3Q7CiAgICAgICAgIElubGluZUNhbGxGcmFtZSog
YXNJbmxpbmVDYWxsRnJhbWUoKSBjb25zdDsKICAgICAgICAgaW50MzJfdCB1bmJveGVkSW50MzIo
KSBjb25zdDsKKyAgICAgICAgaW50NjRfdCB1bmJveGVkSW50NDgoKSBjb25zdDsKICAgICAgICAg
Ym9vbCB1bmJveGVkQm9vbGVhbigpIGNvbnN0OwogICAgICAgICBkb3VibGUgdW5ib3hlZERvdWJs
ZSgpIGNvbnN0OwogICAgICAgICBKU0NlbGwqIHVuYm94ZWRDZWxsKCkgY29uc3Q7CkBAIC05OCw2
ICs5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBp
bmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIGVuY29k
ZWRWYWx1ZTsKICAgICAgICAgICAgIGRvdWJsZSBudW1iZXI7CisgICAgICAgICAgICBpbnQ2NF90
IGludGVnZXI7CiAgICAgICAgIH0gdTsKICAgICB9OwogCkBAIC0xODUsNiArMTg3LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gcGF5bG9hZCgpOwogICAgIH0KIAorICAgIEFM
V0FZU19JTkxJTkUgaW50NjRfdCBSZWdpc3Rlcjo6dW5ib3hlZEludDQ4KCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiB1LmludGVnZXIgPj4gMTY7CisgICAgfQorCiAgICAgQUxXQVlTX0lO
TElORSBib29sIFJlZ2lzdGVyOjp1bmJveGVkQm9vbGVhbigpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gISFwYXlsb2FkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Myw2ICszODMs
OSBAQCB2b2lkIEFyZ3VtZW50czo6dGVhck9mZkZvcklubGluZUNhbGxGcmFtCiAgICAgICAgIGNh
c2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgogICAgICAgICAgICAgdmFsdWUgPSBq
c051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDMyKCkpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OgorICAgICAgICAgICAg
dmFsdWUgPSBqc051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDQ4KCkpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAg
ICAgICAgICB2YWx1ZSA9IGxvY2F0aW9uLT51bmJveGVkQ2VsbCgpOwogICAgICAgICAgICAgYnJl
YWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCShy
ZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw2ICsxOTEsNyBAQCBwdWJsaWM6CiAKICAgICBp
bnQzMl90IGFzSW50MzIoKSBjb25zdDsKICAgICB1aW50MzJfdCBhc1VJbnQzMigpIGNvbnN0Owor
ICAgIGludDY0X3QgYXNNYWNoaW5lSW50KCkgY29uc3Q7CiAgICAgZG91YmxlIGFzRG91YmxlKCkg
Y29uc3Q7CiAgICAgYm9vbCBhc0Jvb2xlYW4oKSBjb25zdDsKICAgICBkb3VibGUgYXNOdW1iZXIo
KSBjb25zdDsKQEAgLTIwMiw2ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc051bGwoKSBj
b25zdDsKICAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Jv
b2xlYW4oKSBjb25zdDsKKyAgICBib29sIGlzTWFjaGluZUludCgpIGNvbnN0OwogICAgIGJvb2wg
aXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1ByaW1pdGl2ZSgpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OTQsNiArNDk0LDM1IEBAIEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0Nl
bGwoKSAKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKK2lubGluZSBib29sIEpTVmFsdWU6
OmlzTWFjaGluZUludCgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKCFpc051bWJlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgZG91YmxlIG51bWJlciA9IGFzRG91YmxlKCk7CisgICAgaWYgKG51bWJlciAhPSBudW1iZXIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihudW1iZXIpOworICAgIGlmIChhc0ludDY0ICE9IG51bWJlcikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghYXNJbnQ2NCAmJiBzdGQ6OnNpZ25iaXQobnVtYmVyKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhc0ludDY0ID49IChzdGF0aWNfY2FzdDxp
bnQ2NF90PigxKSA8PCA0NykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXNJbnQ2
NCA8IC0oc3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgNDcpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBpbnQ2NF90IEpTVmFsdWU6OmFzTWFj
aGluZUludCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFjaGluZUludCgpKTsKKyAgICBpZiAo
aXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ2NF90Pihhc0RvdWJsZSgpKTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNT
dHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTdHJp
bmcoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211730</attachid>
            <date>2013-09-15 15:16:07 -0700</date>
            <delta_ts>2013-09-15 15:52:22 -0700</delta_ts>
            <desc>it ran some easy program</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>137183</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtODIwLDYgKzgyMCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2
dHNpMnNkX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0SW50NjRUb0Rv
dWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBB
U1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2kyc2RxX3Jy
KHNyYywgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShBZGRy
ZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0Uy
UHJlc2VudCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMwLDYgKzIzMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LnNobHFfaThyKGltbS5tX3ZhbHVlLCBkZXN0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCByc2hp
ZnQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zYXJxX2k4cihpbW0ubV92YWx1ZSwgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbXVsNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmltdWxxX3JyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAogICAgIHZv
aWQgbmVnNjQoUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubmVn
cV9yKGRlc3QpOwpAQCAtNTMwLDYgKzU0MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaE11bDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbXVsNjQoc3JjLCBkZXN0KTsKKyAgICAgICAg
aWYgKGNvbmQgIT0gT3ZlcmZsb3cpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycihk
ZXN0LCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoU3ViNjQoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIHN1YjY0KGltbSwgZGVzdCk7CkBAIC01NDgsNiArNTY2LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJyYW5jaFN1YjY0KGNvbmQsIHNyYzIsIGRlc3QpOwogICAgIH0KIAorICAgIEp1
bXAgYnJhbmNoTmVnNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjRGVzdCkK
KyAgICB7CisgICAgICAgIG5lZzY0KHNyY0Rlc3QpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQorCiAgICAgQ29udmVydGli
bGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29u
dmVydGlibGVMb2FkTGFiZWwodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgzNiw2ICs4MzYsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3Ao
T1AyX0lNVUxfR3ZFdiwgZHN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgaW11bHFfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wNjQoT1AyX0lNVUxfR3ZFdiwgZHN0LCBzcmMpOworICAgIH0KKwogICAgIHZvaWQg
aW11bGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKICAg
ICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3QsIGJh
c2UsIG9mZnNldCk7CkBAIC0xNjExLDYgKzE2MTYsMTQgQEAgcHVibGljOgogICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNJMlNEX1ZzZEVkLCAoUmVnaXN0ZXJJRClkc3QsIHNy
Yyk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGN2dHNpMnNkcV9ycihSZWdp
c3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9Q
Ml9DVlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBzcmMpOworICAgIH0KKyNlbmRpZgor
CiAgICAgdm9pZCBjdnRzaTJzZF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0Vf
RjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0
YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiBlbnVtIERhdGFGb3JtYXQgewogICAgIERhdGFGb3JtYXROb25lID0gMCwKICAgICBEYXRh
Rm9ybWF0SW50MzIgPSAxLAotICAgIERhdGFGb3JtYXREb3VibGUgPSAyLAotICAgIERhdGFGb3Jt
YXRCb29sZWFuID0gMywKLSAgICBEYXRhRm9ybWF0Q2VsbCA9IDQsCi0gICAgRGF0YUZvcm1hdFN0
b3JhZ2UgPSA1LAorICAgIERhdGFGb3JtYXRJbnQ0OCA9IDIsIC8vIEludDQ4J3MgYXJlIGxlZnQt
c2hpZnRlZCBieSAxNiBieSBkZWZhdWx0LgorICAgIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA9IDMs
IC8vICJTdHJpY3QiIEludDQ4IG1lYW5zIGl0J3Mgbm90IHNoaWZ0ZWQuCisgICAgRGF0YUZvcm1h
dERvdWJsZSA9IDQsCisgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAorICAgIERhdGFGb3JtYXRD
ZWxsID0gNiwKKyAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCiAgICAgRGF0YUZvcm1hdEpTID0g
OCwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRJbnQz
MiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0RG91
YmxlLApAQCAtNjQsNiArNjYsMTAgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRUb1N0
cmluZyhEYQogICAgICAgICByZXR1cm4gIk5vbmUiOwogICAgIGNhc2UgRGF0YUZvcm1hdEludDMy
OgogICAgICAgICByZXR1cm4gIkludDMyIjsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAg
ICAgICAgcmV0dXJuICJJbnQ0OCI7CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6Cisg
ICAgICAgIHJldHVybiAiU3RyaWN0SW50NDgiOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToK
ICAgICAgICAgcmV0dXJuICJEb3VibGUiOwogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5j
cHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCwxMCArMTU0LDEzIEBAIHZv
aWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXQsIFMKICAgICB9CiAgICAgCiAgICAg
aWYgKHZhbHVlICYgU3BlY0ludDMyKQotICAgICAgICBteU91dC5wcmludCgiSW50Iik7CisgICAg
ICAgIG15T3V0LnByaW50KCJJbnQzMiIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKICAgICAKKyAgICBpZiAodmFsdWUgJiBTcGVjSW50NDgpCisgICAgICAgIG15T3V0LnByaW50
KCJJbnQ0OCIpOworICAgICAgICAKICAgICBpZiAoKHZhbHVlICYgU3BlY0RvdWJsZSkgPT0gU3Bl
Y0RvdWJsZSkKICAgICAgICAgbXlPdXQucHJpbnQoIkRvdWJsZSIpOwogICAgIGVsc2UgewpAQCAt
MTY2LDExICsxNjksNiBAQCB2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0cmVhbSYgb3V0LCBT
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgICAgIAotICAg
ICAgICBpZiAodmFsdWUgJiBTcGVjSW50NDgpCi0gICAgICAgICAgICBteU91dC5wcmludCgiSW50
NDgiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAgICAg
CiAgICAgICAgIGlmICh2YWx1ZSAmIFNwZWNOb25JbnRBc0RvdWJsZSkKICAgICAgICAgICAgIG15
T3V0LnByaW50KCJOb25pbnRhc2RvdWJsZSIpOwogICAgICAgICBlbHNlCkBAIC0yNDcsOSArMjQ1
LDExIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzcGVjdWxhdGlvblRvQWJicmV2aWEKICAgICAgICAg
cmV0dXJuICI8SW50NDhBc0RvdWJsZT4iOwogICAgIGlmIChpc0ludDQ4U3BlY3VsYXRpb24ocHJl
ZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPEludDQ4PiI7CisgICAgaWYgKGlzTWFjaGluZUlu
dFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICByZXR1cm4gIjxNYWNoaW5lSW50PiI7
CiAgICAgaWYgKGlzRG91YmxlU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJldHVy
biAiPERvdWJsZT4iOwotICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQor
ICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0
dXJuICI8TnVtYmVyPiI7CiAgICAgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24p
KQogICAgICAgICByZXR1cm4gIjxCb29sZWFuPiI7CkBAIC0zNDUsMTYgKzM0NSwxMSBAQCBTcGVj
dWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhCiAgICAgICAgIHJldHVybiBTcGVj
SW50MzI7CiAgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJl
ciA9IHZhbHVlLmFzTnVtYmVyKCk7Ci0gICAgICAgIGlmIChudW1iZXIgPT0gbnVtYmVyKSB7Ci0g
ICAgICAgICAgICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIp
OwotICAgICAgICAgICAgaWYgKGFzSW50NjQgPT0gbnVtYmVyICYmIChhc0ludDY0IHx8ICFzdGQ6
OnNpZ25iaXQobnVtYmVyKSkKLSAgICAgICAgICAgICAgICAmJiBhc0ludDY0IDwgKHN0YXRpY19j
YXN0PGludDY0X3Q+KDEpIDw8IDQ3KQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPj0gLShz
dGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCA0NykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
U3BlY0ludDQ4QXNEb3VibGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU3Bl
Y05vbkludEFzRG91YmxlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFO
OworICAgICAgICBpZiAobnVtYmVyICE9IG51bWJlcikKKyAgICAgICAgICAgIHJldHVybiBTcGVj
RG91YmxlTmFOOworICAgICAgICBpZiAodmFsdWUuaXNNYWNoaW5lSW50KCkpCisgICAgICAgICAg
ICByZXR1cm4gU3BlY0ludDQ4QXNEb3VibGU7CisgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNE
b3VibGU7CiAgICAgfQogICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNw
ZWN1bGF0aW9uRnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDE1NTgyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw0NiArMzgsNDggQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTdHJ1
Y3R1cmU7CiAKIHR5cGVkZWYgdWludDMyX3QgU3BlY3VsYXRlZFR5cGU7Ci1zdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY05vbmUgICAgICAgICAgICAgID0gMHgwMDAwMDAwMDsgLy8gV2Ug
ZG9uJ3Qga25vdyBhbnl0aGluZyB5ZXQuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0ZpbmFsT2JqZWN0ICAgICAgID0gMHgwMDAwMDAwMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNG
aW5hbE9iamVjdC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQXJyYXkgICAgICAg
ICAgICAgPSAweDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgotc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICA9IDB4MDAwMDAwMDg7
IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRnVuY3Rpb24gb3Igb25lIG9mIGl0cyBzdWJjbGFzc2Vz
Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ4QXJyYXkgICAgICAgICA9IDB4
MDAwMDAwMTA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBz
dWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQxNkFycmF5ICAg
ICAgICA9IDB4MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50
MzJBcnJheSAgICAgICAgPSAweDAwMDAwMDQwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzJB
cnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY1VpbnQ4QXJyYXkgICAgICAgID0gMHgwMDAwMDA4MDsgLy8gSXQncyBkZWZpbml0ZWx5
IGFuIFVpbnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNVaW50OENsYW1wZWRBcnJheSA9IDB4MDAwMDAxMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgID0gMHgw
MDAwMDIwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMg
c3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDMyQXJyYXkg
ICAgICAgPSAweDAwMDAwNDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDMyQXJyYXkgb3Ig
b25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNG
bG9hdDMyQXJyYXkgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50
MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0Zsb2F0NjRBcnJheSAgICAgID0gMHgwMDAwMTAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjVHlwZWRBcnJheVZpZXcgICAgPSBTcGVjSW50OEFycmF5IHwg
U3BlY0ludDE2QXJyYXkgfCBTcGVjSW50MzJBcnJheSB8IFNwZWNVaW50OEFycmF5IHwgU3BlY1Vp
bnQ4Q2xhbXBlZEFycmF5IHwgU3BlY1VpbnQxNkFycmF5IHwgU3BlY1VpbnQzMkFycmF5IHwgU3Bl
Y0Zsb2F0MzJBcnJheSB8IFNwZWNGbG9hdDY0QXJyYXk7Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0FyZ3VtZW50cyAgICAgICAgID0gMHgwMDAwMjAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IGFuIEFyZ3VtZW50cyBvYmplY3QuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y1N0cmluZ09iamVjdCAgICAgID0gMHgwMDAwNDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgU3Ry
aW5nT2JqZWN0Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3RPdGhlciAg
ICAgICA9IDB4MDAwMDgwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBvYmplY3QgYnV0IG5vdCBK
U0ZpbmFsT2JqZWN0LCBKU0FycmF5LCBvciBKU0Z1bmN0aW9uLgotc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICA9IDB4MDAwMGZmZmY7IC8vIEJpdG1hc2sg
dXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCi1zdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAgID0gMHgwMDAxMDAw
MDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcsIGFuZCBpdCdzIGFuIGlkZW50aWZpZXIu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ1ZhciAgICAgICAgID0gMHgw
MDAyMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcsIGFuZCBpdCdzIG5vdCBhbiBp
ZGVudGlmaWVyLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmcgICAgICAg
ICAgICA9IDB4MDAwMzAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLgotc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAgICAgICA9IDB4MDAwNDAwMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbCBidXQgbm90IGEgc3ViY2xhc3Mgb2YgSlNPYmpl
Y3QgYW5kIGRlZmluaXRlbHkgbm90IGEgSlNTdHJpbmcuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0NlbGwgICAgICAgICAgICAgID0gMHgwMDA3ZmZmZjsgLy8gSXQncyBkZWZpbml0
ZWx5IGEgSlNDZWxsLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMiAgICAg
ICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMi4KLXN0YXRp
YyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NDggICAgICAgICAgICAgPSAweDAxMDAwMDAw
OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50NDgsIGl0J3MgaW5zaWRlIGEgZG91YmxlLCBidXQg
aXQgZG9lc24ndCBuZWVkIHRvIGJlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNN
YWNoaW5lSW50ICAgICAgICA9IDB4MDE4MDAwMDA7IC8vIEl0J3Mgc29tZXRoaW5nIHRoYXQgd2Ug
Y2FuIGRvIG1hY2hpbmUgaW50IGFyaXRobWV0aWMgb24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0ludDQ4QXNEb3VibGUgICAgID0gMHgwMjAwMDAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IGFuIEludDQ4IGFuZCBpdCdzIGluc2lkZSBhIGRvdWJsZS4KLXN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjSW50ZWdlciAgICAgICAgICAgPSAweDAzODAwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgc29tZSBraW5kIG9mIGludGVnZXIuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY05vbkludEFzRG91YmxlICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IG5vdCBhbiBJbnQ0OCBidXQgaXQncyBhIHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91YmxlLgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICA9IDB4MDcw
MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIG5vbi1OYU4gZG91YmxlLgotc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVOYU4gICAgICAgICA9IDB4MDgwMDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIE5hTi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91
YmxlICAgICAgICAgICAgPSAweDBmMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3Ig
YSBOYU4gZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNSZWFsTnVtYmVy
ICAgICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91Ymxl
UmVhbC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTnVtYmVyICAgICAgICAgICAg
PSAweDBmODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBhIERvdWJsZS4KLXN0YXRp
YyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQm9vbGVhbiAgICAgICAgICAgPSAweDEwMDAwMDAw
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCb29sZWFuLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNPdGhlciAgICAgICAgICAgICA9IDB4MjAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBub25lIG9mIHRoZSBhYm92ZS4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSGVh
cFRvcCAgICAgICAgICAgPSAweDNmZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92
ZS4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAgICAgPSAw
eDQwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgotc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICA9IDB4N2ZmZmZm
ZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNGdWxsVG9wICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBh
bnkgb2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25lICAgICAgICAgICAgICAgPSAweDAwMDAwMDAwOyAv
LyBXZSBkb24ndCBrbm93IGFueXRoaW5nIHlldC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjRmluYWxPYmplY3QgICAgICAgID0gMHgwMDAwMDAwMTsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgSlNGaW5hbE9iamVjdC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQXJyYXkg
ICAgICAgICAgICAgID0gMHgwMDAwMDAwMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNBcnJheS4K
K3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRnVuY3Rpb24gICAgICAgICAgID0gMHgw
MDAwMDAwODsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUgb2YgaXRzIHN1
YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAg
ICAgICA9IDB4MDAwMDAwMTA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ4QXJyYXkgb3Igb25l
IG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQx
NkFycmF5ICAgICAgICAgPSAweDAwMDAwMDIwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MTZB
cnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0ludDMyQXJyYXkgICAgICAgICA9IDB4MDAwMDAwNDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBJbnQzMkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjVWludDhBcnJheSAgICAgICAgID0gMHgwMDAwMDA4MDsgLy8gSXQn
cyBkZWZpbml0ZWx5IGFuIFVpbnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50OENsYW1wZWRBcnJheSAgPSAweDAwMDAw
MTAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDhDbGFtcGVkQXJyYXkgb3Igb25lIG9mIGl0
cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MTZBcnJh
eSAgICAgICAgPSAweDAwMDAwMjAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkg
b3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNVaW50MzJBcnJheSAgICAgICAgPSAweDAwMDAwNDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4g
VWludDMyQXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNGbG9hdDMyQXJyYXkgICAgICAgPSAweDAwMDAwODAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGbG9hdDY0QXJyYXkgICAgICAgPSAweDAwMDAxMDAw
OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFz
c2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNUeXBlZEFycmF5VmlldyAgICAg
PSBTcGVjSW50OEFycmF5IHwgU3BlY0ludDE2QXJyYXkgfCBTcGVjSW50MzJBcnJheSB8IFNwZWNV
aW50OEFycmF5IHwgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5IHwgU3BlY1VpbnQxNkFycmF5IHwgU3Bl
Y1VpbnQzMkFycmF5IHwgU3BlY0Zsb2F0MzJBcnJheSB8IFNwZWNGbG9hdDY0QXJyYXk7CitzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0FyZ3VtZW50cyAgICAgICAgICA9IDB4MDAwMDIw
MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBBcmd1bWVudHMgb2JqZWN0Lgorc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdPYmplY3QgICAgICAgPSAweDAwMDA0MDAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBTdHJpbmdPYmplY3QuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY09iamVjdE90aGVyICAgICAgICA9IDB4MDAwMDgwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBvYmplY3QgYnV0IG5vdCBKU0ZpbmFsT2JqZWN0LCBKU0FycmF5LCBvciBKU0Z1bmN0aW9u
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgPSAw
eDAwMDBmZmZmOyAvLyBCaXRtYXNrIHVzZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9i
amVjdCBwcmVkaWN0aW9uLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdJ
ZGVudCAgICAgICAgPSAweDAwMDEwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywg
YW5kIGl0J3MgYW4gaWRlbnRpZmllci4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
U3RyaW5nVmFyICAgICAgICAgID0gMHgwMDAyMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNT
dHJpbmcsIGFuZCBpdCdzIG5vdCBhbiBpZGVudGlmaWVyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNTdHJpbmcgICAgICAgICAgICAgPSAweDAwMDMwMDAwOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBKU1N0cmluZy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbE90
aGVyICAgICAgICAgID0gMHgwMDA0MDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsIGJ1
dCBub3QgYSBzdWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVmaW5pdGVseSBub3QgYSBKU1N0cmlu
Zy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgID0g
MHgwMDA3ZmZmZjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgorc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMiAgICAgICAgICAgICAgPSAweDAwODAwMDAwOyAvLyBJdCdz
IGRlZmluaXRlbHkgYW4gSW50MzIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0lu
dDQ4ICAgICAgICAgICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ0
OCBhbmQgd2UgaW50ZW5kIGl0IHRvIHVuYm94IGl0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNNYWNoaW5lSW50ICAgICAgICAgPSAweDAxODAwMDAwOyAvLyBJdCdzIHNvbWV0aGlu
ZyB0aGF0IHdlIGNhbiBkbyBtYWNoaW5lIGludCBhcml0aG1ldGljIG9uLgorc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ0OEFzRG91YmxlICAgICAgPSAweDAyMDAwMDAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYW4gSW50NDggYW5kIGl0J3MgaW5zaWRlIGEgZG91YmxlLgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnRlZ2VyICAgICAgICAgICAgPSAweDAzODAwMDAw
OyAvLyBJdCdzIGRlZmluaXRlbHkgc29tZSBraW5kIG9mIGludGVnZXIuCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY05vbkludEFzRG91YmxlICAgICA9IDB4MDQwMDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBub3QgYW4gSW50NDggYnV0IGl0J3MgYSByZWFsIG51bWJlciBhbmQgaXQn
cyBhIGRvdWJsZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlUmVhbCAg
ICAgICAgID0gMHgwNjAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBkb3VibGUu
CitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZU5hTiAgICAgICAgICA9IDB4
MDgwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIE5hTi4KK3N0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjRG91YmxlICAgICAgICAgICAgID0gMHgwZTAwMDAwMDsgLy8gSXQncyBlaXRo
ZXIgYSBub24tTmFOIG9yIGEgTmFOIGRvdWJsZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjQnl0ZWNvZGVSZWFsTnVtYmVyID0gMHgwNjgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4g
SW50MzIgb3IgYSBEb3VibGVSZWFsLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNG
dWxsUmVhbE51bWJlciAgICAgPSAweDA3ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBv
ciBhIERvdWJsZVJlYWwsIG9yIGEgSW50NDguCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0J5dGVjb2RlTnVtYmVyICAgICA9IDB4MGU4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIElu
dDMyIG9yIGEgRG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdWxsTnVt
YmVyICAgICAgICAgPSAweDBmODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiwgSW50NDgs
IG9yIGEgRG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAg
ICAgICAgICAgPSAweDEwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCb29sZWFuLgorc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPdGhlciAgICAgICAgICAgICAgPSAweDIwMDAw
MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm9uZSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICA9IDB4M2VmZmZmZmY7IC8vIEl0
IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ0OC4KK3N0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAgICAgID0gMHg0MDAwMDAwMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGFuIGVtcHR5IHZhbHVlIG1hcmtlci4KK3N0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAgID0gMHg3ZWZmZmZmZjsgLy8gSXQg
Y2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdWxsVG9wICAgICAgICAgICAgPSAweDdmZmZmZmZmOyAv
LyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSBwbHVzIGFueXRoaW5nIHRoZSBERkcgY2hvb3Nl
cy4KIAogdHlwZWRlZiBib29sICgqU3BlY3VsYXRlZFR5cGVDaGVja2VyKShTcGVjdWxhdGVkVHlw
ZSk7CiAKQEAgLTI0MCw3ICsyNDIsNyBAQCBpbmxpbmUgYm9vbCBpc0ludDMyU3BlY3VsYXRpb24o
U3BlY3VsYXRlCiAKIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbkZvckFyaXRobWV0aWMo
U3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRG91Ymxl
KTsKKyAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVjRG91YmxlIHwgU3BlY0ludDQ4KSk7CiB9CiAK
IGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCkBAIC0yNjUsNyArMjY3LDcgQEAgaW5saW5lIGJvb2wgaXNNYWNoaW5lSW50
U3BlY3VsYXRpb25FeHBlYwogCiBpbmxpbmUgYm9vbCBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbkZv
ckFyaXRobWV0aWMoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEodmFsdWUg
JiAoU3BlY0RvdWJsZSAmIH5TcGVjTWFjaGluZUludCkpOworICAgIHJldHVybiAhKHZhbHVlICYg
flNwZWNEb3VibGUpOwogfQogCiBpbmxpbmUgYm9vbCBpc0ludDQ4QXNEb3VibGVTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKQEAgLTI5MywxOSArMjk1LDM0IEBAIGlubGluZSBib29s
IGlzRG91YmxlU3BlY3VsYXRpb25Gb3JBcml0aG0KICAgICByZXR1cm4gISEodmFsdWUgJiBTcGVj
RG91YmxlKTsKIH0KIAotaW5saW5lIGJvb2wgaXNSZWFsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3Vs
YXRlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc0J5dGVjb2RlUmVhbE51bWJlclNwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNS
ZWFsTnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNSZWFsTnVtYmVyKTsKKyAgICByZXR1cm4gISEo
dmFsdWUgJiBTcGVjQnl0ZWNvZGVSZWFsTnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNCeXRlY29k
ZVJlYWxOdW1iZXIpOwogfQogCi1pbmxpbmUgYm9vbCBpc051bWJlclNwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9u
KFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNOdW1i
ZXIpICYmICEodmFsdWUgJiB+U3BlY051bWJlcik7CisgICAgcmV0dXJuICEhKHZhbHVlICYgU3Bl
Y0Z1bGxSZWFsTnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNGdWxsUmVhbE51bWJlcik7CiB9CiAK
LWlubGluZSBib29sIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0
ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNCeXRlY29kZU51bWJlclNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uKHZh
bHVlICYgflNwZWNPdGhlcik7CisgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0J5dGVjb2RlTnVt
YmVyKSAmJiAhKHZhbHVlICYgflNwZWNCeXRlY29kZU51bWJlcik7Cit9CisKK2lubGluZSBib29s
IGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJl
dHVybiAhISh2YWx1ZSAmIFNwZWNGdWxsTnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNGdWxsTnVt
YmVyKTsKK30KKworaW5saW5lIGJvb2wgaXNCeXRlY29kZU51bWJlclNwZWN1bGF0aW9uRXhwZWN0
aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gaXNCeXRlY29k
ZU51bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7Cit9CisKK2lubGluZSBib29s
IGlzRnVsbE51bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gaXNCeXRlY29kZU51bWJlclNwZWN1bGF0aW9uKHZhbHVlICYg
flNwZWNPdGhlcik7CiB9CiAKIGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Zh
bHVlUmVjb3ZlcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVmFsdWVSZWNvdmVyeS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiAr
NDQsMTUgQEAgZW51bSBWYWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBBbHJlYWR5SW5KU1N0
YWNrLAogICAgIC8vIEl0J3MgYWxyZWFkeSBpbiB0aGUgc3RhY2sgYnV0IHVuYm94ZWQuCiAgICAg
QWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyLAorICAgIEFscmVhZHlJbkpTU3RhY2tBc1Vu
Ym94ZWRJbnQ0OCwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCwKICAgICBBbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbiwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJv
eGVkRG91YmxlLAogICAgIC8vIEl0J3MgaW4gYSByZWdpc3Rlci4KICAgICBJbkdQUiwKICAgICBV
bmJveGVkSW50MzJJbkdQUiwKKyAgICBVbmJveGVkSW50NDhJbkdQUiwKKyAgICBVbmJveGVkU3Ry
aWN0SW50NDhJbkdQUiwKICAgICBVbmJveGVkQm9vbGVhbkluR1BSLAogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgSW5QYWlyLApAQCAtNjAsNiArNjMsOCBAQCBlbnVtIFZhbHVlUmVjb3ZlcnlU
ZWNobmlxdWUgewogICAgIERpc3BsYWNlZEluSlNTdGFjaywKICAgICAvLyBJdCdzIGluIHRoZSBz
dGFjaywgYXQgYSBkaWZmZXJlbnQgbG9jYXRpb24sIGFuZCBpdCdzIHVuYm94ZWQuCiAgICAgSW50
MzJEaXNwbGFjZWRJbkpTU3RhY2ssCisgICAgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2ssCisgICAg
U3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2ssCiAgICAgRG91YmxlRGlzcGxhY2VkSW5KU1N0
YWNrLAogICAgIENlbGxEaXNwbGFjZWRJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkRpc3BsYWNlZElu
SlNTdGFjaywKQEAgLTk1LDYgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3Rh
Y2tBc1VuYm94ZWRJbnQ0OCgpCisgICAgeworICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsK
KyAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZElu
dDQ4OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgVmFs
dWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpCiAgICAgewogICAgICAg
ICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKQEAgLTEyNSw2ICsxMzcsMTAgQEAgcHVibGljOgogICAg
ICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKICAgICAgICAgaWYgKGRhdGFGb3JtYXQgPT0gRGF0
YUZvcm1hdEludDMyKQogICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZElu
dDMySW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4
KQorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDQ4SW5HUFI7Cisg
ICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAg
ICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFI7CiAg
ICAgICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEJvb2xlYW4pCiAgICAgICAg
ICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBVbmJveGVkQm9vbGVhbkluR1BSOwogICAgICAgICBl
bHNlCkBAIC0xNjgsNiArMTg0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdC5tX3Rl
Y2huaXF1ZSA9IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgICAgICBy
ZXN1bHQubV90ZWNobmlxdWUgPSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4
OgorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gU3RyaWN0SW50NDhEaXNwbGFjZWRJ
bkpTU3RhY2s7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNl
IERhdGFGb3JtYXREb3VibGU6CiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBEb3Vi
bGVEaXNwbGFjZWRJbkpTU3RhY2s7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyOSw2ICsyNTMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2Fz
ZSBBbHJlYWR5SW5KU1N0YWNrOgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWRJbnQzMjoKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAg
ICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2Ug
QWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEJvb2xlYW46CiAgICAgICAgIGNhc2UgQWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZERvdWJsZToKQEAgLTI0MCw3ICsyNjUsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZ3ByKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVk
SW50MzJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVj
aG5pcXVlID09IFVJbnQzMkluR1BSKTsKKyAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IElu
R1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09
IFVuYm94ZWRCb29sZWFuSW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90
ZWNobmlxdWUgPT0gVW5ib3hlZEludDQ4SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0
cmljdEludDQ4SW5HUFIpOwogICAgICAgICByZXR1cm4gbV9zb3VyY2UuZ3ByOwogICAgIH0KICAg
ICAKQEAgLTI2Niw3ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWdpc3RlcigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90ZWNobmlx
dWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2Vk
SW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBt
X3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJv
b2xlYW5EaXNwbGFjZWRJbkpTU3RhY2spOworICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0g
RGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0
YWNrIHx8IG1fdGVjaG5pcXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2hu
aXF1ZSA9PSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5E
aXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0gSW50NDhEaXNwbGFjZWRJbkpTU3Rh
Y2sgfHwgbV90ZWNobmlxdWUgPT0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2spOwogICAg
ICAgICByZXR1cm4gbV9zb3VyY2UudmlydHVhbFJlZzsKICAgICB9CiAgICAgCkBAIC0yODUsNiAr
MzEwLDkgQEAgcHVibGljOgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJ
bnQzMjoKICAgICAgICAgICAgIG91dC5wcmludGYoIihpbnQzMikiKTsKICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCIoaW50NDgpIik7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbDoKICAgICAgICAgICAgIG91dC5w
cmludGYoIihjZWxsKSIpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzAwLDYgKzMyOCwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgICAgICBv
dXQucHJpbnRmKCJpbnQzMiglJXIlZCkiLCBncHIoKSk7CiAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGNhc2UgVW5ib3hlZEludDQ4SW5HUFI6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJp
bnQ0OCglJXIlZCkiLCBncHIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBV
bmJveGVkU3RyaWN0SW50NDhJbkdQUjoKKyAgICAgICAgICAgIG91dC5wcmludGYoInN0cmljdElu
dDQ4KCUlciVkKSIsIGdwcigpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFVu
Ym94ZWRCb29sZWFuSW5HUFI6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJib29sKCUlciVkKSIs
IGdwcigpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyMCw2ICszNTQsMTIgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0
LnByaW50ZigiKmludDMyKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgY2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAg
IG91dC5wcmludGYoIippbnQ0OCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIipzdHJpY3RJbnQ0OCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIo
KSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpT
U3RhY2s6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIqZG91YmxlKCVkKSIsIHZpcnR1YWxSZWdp
c3RlcigpKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNTU4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBu
ZWVkc1R5cGVDaGVjayhOb2RlKiBub2RlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91
Z2gpCiAgICAgewotICAgICAgICByZXR1cm4gZm9yTm9kZShub2RlKS5tX3R5cGUgJiB+dHlwZXNQ
YXNzZWRUaHJvdWdoOworICAgICAgICByZXR1cm4gIWZvck5vZGUobm9kZSkuaXNUeXBlKHR5cGVz
UGFzc2VkVGhyb3VnaCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgbmVlZHNUeXBlQ2hlY2soRWRn
ZSBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gpCkBAIC0xNjgsNyArMTY4
LDcgQEAgcHJpdmF0ZToKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmlsdGVyQnlUeXBlKE5vZGUq
IG5vZGUsIEVkZ2UmIGVkZ2UsIFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBB
YnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUoZWRnZSk7Ci0gICAgICAgIGlmICh2YWx1ZS5t
X3R5cGUgJiB+dHlwZSkgeworICAgICAgICBpZiAoIXZhbHVlLmlzVHlwZSh0eXBlKSkgewogICAg
ICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGVkZ2Uuc2V0UHJv
b2ZTdGF0dXMoTmVlZHNDaGVjayk7CiAgICAgICAgIH0gZWxzZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEw
LDI2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIEludDQ4VG9Eb3VibGU6IHsKKyAgICAg
ICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAg
ICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBzZXRDb25z
dGFudChub2RlLCBjaGlsZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4QXNEb3VibGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50NDhUb1ZhbHVlOiB7CisgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBp
ZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwgY2hpbGQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMiB8IFNwZWNJbnQ0OEFzRG91YmxlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIFZhbHVlQWRkOgogICAgIGNhc2Ug
QXJpdGhBZGQ6IHsKICAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkudmFsdWUoKTsKQEAgLTMyNCw5ICszNDQsMTUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5jYXRlSW50
ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRD
YW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUlu
dFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAg
ICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0ludDMyKQor
ICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0lu
dDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAgICAgICAgaWYgKGlzUmVh
bE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKLSAgICAg
ICAgICAgICAgICAmJiBpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxk
MigpKS5tX3R5cGUpKQorICAgICAgICAgICAgaWYgKGlzRnVsbFJlYWxOdW1iZXJTcGVjdWxhdGlv
bihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpCisgICAgICAgICAgICAgICAgJiYgaXNG
dWxsUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkp
CiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0RvdWJsZSk7CkBAIC0zMzQsNyArMzYwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobm9kZS0+b3AoKSA9PSBWYWx1ZUFkZCk7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQo
bm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjU3RyaW5nIHwgU3BlY0ludDMyIHwgU3BlY051bWJlcik7CisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY1N0cmluZyB8IFNwZWNCeXRlY29kZU51bWJl
cik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTM1
OCw2ICszODQsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5v
ZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKCFmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0ludDMyKQorICAgICAgICAgICAgICAgIHx8
ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKKyAgICAgICAgICAg
ICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNE
b3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zODAsNiArNDEyLDEzIEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmICghYnl0ZWNv
ZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0ludDQ4KTsKKyAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpCisgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2Fu
RXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVpl
cm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCisgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2Fu
RXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlclVzZToK
ICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNDA0LDkgKzQ0MywxMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgfHwgIWJ5dGVjb2RlQ2FuSWdub3JlTmVn
YXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5vZGUt
PnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNYWNo
aW5lSW50VXNlOgorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7
CisgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAgICAgICAgaWYgKGlzUmVhbE51bWJlclNw
ZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAg
ICB8fCBpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5
cGUpKQorICAgICAgICAgICAgaWYgKGlzRnVsbFJlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpCisgICAgICAgICAgICAgICAgfHwgaXNGdWxsUmVhbE51
bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCiAgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJs
ZSk7CkBAIC01ODYsNyArNjI5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGlmIChpc051bWJlclNwZWN1bGF0aW9uKGFic3RyYWN0Q2hpbGQubV90eXBlKSkgeworICAgICAg
ICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oYWJzdHJhY3RDaGlsZC5tX3R5cGUpKSB7CiAg
ICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCB2bS0+c21hbGxTdHJpbmdzLm51bWJlclN0cmlu
ZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04MTIsNyArODU1LDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYg
KG5vZGUtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOworICAgICAgICAgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKICAgICAgICAgICAgIGZvck5vZGUobm9kZSku
c2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTg2Myw3ICs5MDYsNyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIG5v
ZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3Jp
Z2luLCBjbG9iYmVyTGltaXQpOwotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY051
bWJlcik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQnl0ZWNvZGVOdW1iZXIp
OwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQb3A6CkBAIC05
MzQsOCArOTc3LDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAvLyBOQi4gVGhlIG1vcmUgY2Fub25pY2FsIHdheSBvZiB3cml0aW5nIHRoaXMgd291
bGQgaGF2ZSBiZWVuOgogICAgICAgICAvLwogICAgICAgICAvLyBkZXN0aW5hdGlvbiA9IHNvdXJj
ZTsKLSAgICAgICAgLy8gaWYgKGRlc3RpbmF0aW9uLm1fdHlwZSAmICEoU3BlY051bWJlciB8IFNw
ZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpIHsKLSAgICAgICAgLy8gICAgIGRlc3RpbmF0aW9uLmZp
bHRlcihTcGVjTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNwZWNCb29sZWFuKTsKKyAgICAgICAgLy8g
aWYgKGRlc3RpbmF0aW9uLm1fdHlwZSAmICEoU3BlY0Z1bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwg
U3BlY0Jvb2xlYW4pKSB7CisgICAgICAgIC8vICAgICBkZXN0aW5hdGlvbi5maWx0ZXIoU3BlY0Z1
bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4pOwogICAgICAgICAvLyAgICAgQWJz
dHJhY3RWYWx1ZSBzdHJpbmc7CiAgICAgICAgIC8vICAgICBzdHJpbmcuc2V0KHZtLT5zdHJpbmdT
dHJ1Y3R1cmUpOwogICAgICAgICAvLyAgICAgZGVzdGluYXRpb24ubWVyZ2Uoc3RyaW5nKTsKQEAg
LTk1NSw3ICs5OTgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwog
ICAgICAgICAKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHNvdXJjZS5tX3R5cGU7Ci0g
ICAgICAgIGlmICh0eXBlICYgfihTcGVjTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNwZWNCb29sZWFu
KSkKKyAgICAgICAgaWYgKHR5cGUgJiB+KFNwZWNGdWxsTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNw
ZWNCb29sZWFuKSkKICAgICAgICAgICAgIHR5cGUgPSAoU3BlY0hlYXBUb3AgJiB+U3BlY0NlbGwp
IHwgU3BlY1N0cmluZzsKIAogICAgICAgICBkZXN0aW5hdGlvbi5zZXRUeXBlKHR5cGUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCShy
ZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw4IEBAIHZvaWQgQWJzdHJhY3RW
YWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgSlMKICAgICB9CiAgICAgICAgIAogICAgIG1fdHlwZSA9
IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKTsKKyAgICBpZiAobV90eXBlID09IFNwZWNJbnQ0
OEFzRG91YmxlKQorICAgICAgICBtX3R5cGUgPSBTcGVjSW50NDg7CiAgICAgbV92YWx1ZSA9IHZh
bHVlOwogICAgICAgICAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC0yMjcsNiArMjI5LDcg
QEAgRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpub3JtYWxpegogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECiB2b2lkIEFic3RyYWN0VmFsdWU6OmNo
ZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAgIGlmICghKG1fdHlwZSAmIFNwZWNDZWxsKSkg
ewpAQCAtMjM4LDE0ICsyNDEsMTkgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3Rl
bmN5KCkgYwogICAgIGlmIChpc0NsZWFyKCkpCiAgICAgICAgIEFTU0VSVCghbV92YWx1ZSk7CiAg
ICAgCi0gICAgaWYgKCEhbV92YWx1ZSkKLSAgICAgICAgQVNTRVJUKG1lcmdlU3BlY3VsYXRpb25z
KG1fdHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUobV92YWx1ZSkpID09IG1fdHlwZSk7CisgICAg
aWYgKCEhbV92YWx1ZSkgeworICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gbV90eXBlOwor
ICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ0OCkKKyAgICAgICAgICAgIHR5cGUgfD0gU3BlY0lu
dDQ4QXNEb3VibGU7CisgICAgICAgIEFTU0VSVChtZXJnZVNwZWN1bGF0aW9ucyh0eXBlLCBzcGVj
dWxhdGlvbkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gdHlwZSk7CisgICAgfQogICAgIAogICAgIC8v
IE5vdGUgdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBhIHByZWRpY3Rpb24gbGlrZSAoRmluYWwsIFtd
KS4gVGhpcyByZWFsbHkgbWVhbnMgdGhhdAogICAgIC8vIHRoZSB2YWx1ZSBpcyBib3R0b20gYW5k
IHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoZSB2YWx1ZSBpcyB1bnJlYWNoYWJsZS4gQnV0CiAg
ICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBnZXQgcGVkYW50aWMgYWJvdXQgdGhpcyBhcyBpdCB3b3Vs
ZCBvbmx5IGluY3JlYXNlIHRoZSBjb21wdXRhdGlvbmFsCiAgICAgLy8gY29tcGxleGl0eSBvZiB0
aGUgY29kZS4KIH0KKyNlbmRpZgogCiB2b2lkIEFic3RyYWN0VmFsdWU6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYgKzE4NSwx
NiBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsK
ICAgICB9CiAgICAgCisgICAgYm9vbCBjb3VsZEJlVHlwZShTcGVjdWxhdGVkVHlwZSBkZXNpcmVk
VHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhIShtX3R5cGUgJiBkZXNpcmVkVHlwZSk7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgaXNUeXBlKFNwZWN1bGF0ZWRUeXBlIGRlc2lyZWRUeXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICEobV90eXBlICYgfmRlc2lyZWRUeXBlKTsKKyAgICB9Cisg
ICAgCiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoR3JhcGgmLCBjb25zdCBTdHJ1Y3R1cmVT
ZXQmKTsKICAgICAKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckFycmF5TW9kZXMoQXJyYXlN
b2RlcyBhcnJheU1vZGVzKTsKQEAgLTE5MywyMiArMjAzLDYgQEAgc3RydWN0IEFic3RyYWN0VmFs
dWUgewogICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQnlWYWx1ZShKU1ZhbHVlIHZh
bHVlKTsKICAgICAKLSAgICBib29sIHZhbGlkYXRlVHlwZShKU1ZhbHVlIHZhbHVlKSBjb25zdAot
ICAgIHsKLSAgICAgICAgaWYgKGlzSGVhcFRvcCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIAotICAgICAgICBpZiAobWVyZ2VTcGVjdWxhdGlvbnMobV90eXBlLCBzcGVjdWxh
dGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IG1fdHlwZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgCi0gICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IEFTU0VSVChtX3R5cGUgJiBTcGVjRW1wdHkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKICAg
ICBib29sIHZhbGlkYXRlKEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
aXNIZWFwVG9wKCkpCkBAIC0yNTEsNyArMjQ1LDExIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsK
ICAgICAgICAgICAgIHx8ICFhcnJheU1vZGVzQXJlQ2xlYXJPclRvcChtX2FycmF5TW9kZXMpOwog
ICAgIH0KICAgICAKKyNpZiBBU1NFUlRfRElTQUJMRUQKKyAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKSBjb25zdCB7IH0KKyNlbHNlCiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3Q7
CisjZW5kaWYKICAgICAKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1w
Q29udGV4dCopIGNvbnN0OwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwpAQCAt
MzYzLDYgKzM2MSwyOSBAQCBwcml2YXRlOgogICAgICAgICBtX2FycmF5TW9kZXMgPSBBTExfQVJS
QVlfTU9ERVM7CiAgICAgfQogICAgIAorICAgIGJvb2wgdmFsaWRhdGVUeXBlKEpTVmFsdWUgdmFs
dWUpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNIZWFwVG9wKCkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIC8vIENvbnN0YW50IGZvbGRpbmcgYWx3YXlz
IHJlcHJlc2VudHMgSW50NDgncyBpbiBhIGRvdWJsZSAoaS5lLiBJbnQ0OEFzRG91YmxlKS4KKyAg
ICAgICAgLy8gU28gc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpIGZvciBhbiBJbnQ0OCB2YWx1
ZSB3aWxsIHJldHVybiBJbnQ0OEFzRG91YmxlLAorICAgICAgICAvLyBhbmQgdGhhdCdzIGZpbmUg
LSB0aGUgdHlwZSB2YWxpZGF0ZXMganVzdCBmaW5lLgorICAgICAgICBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gbV90eXBlOworICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ0OCkKKyAgICAgICAgICAg
IHR5cGUgfD0gU3BlY0ludDQ4QXNEb3VibGU7CisgICAgICAgIAorICAgICAgICBpZiAobWVyZ2VT
cGVjdWxhdGlvbnModHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpKSAhPSB0eXBlKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgaWYgKHZhbHVlLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSAmIFNwZWNFbXB0eSk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIAogICAgIHZvaWQgbWFrZVRvcChTcGVjdWxhdGVkVHlwZSB0b3Ap
CiAgICAgewogICAgICAgICBtX3R5cGUgfD0gdG9wOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcs
MjEgKzE1NywyMSBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZpbmUoU3BlY3VsYXRlZFR5CiAg
ICAgICAgICAgICByZXR1cm4gd2l0aFR5cGUoQXJyYXk6OkZvcmNlRXhpdCk7CiAgICAgICAgIGlm
IChpc0ludDMyU3BlY3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHdpdGhUeXBl
QW5kQ29udmVyc2lvbihBcnJheTo6SW50MzIsIEFycmF5OjpDb252ZXJ0KTsKLSAgICAgICAgaWYg
KGlzTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQorICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3Bl
Y3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lv
bihBcnJheTo6RG91YmxlLCBBcnJheTo6Q29udmVydCk7CiAgICAgICAgIHJldHVybiB3aXRoVHlw
ZUFuZENvbnZlcnNpb24oQXJyYXk6OkNvbnRpZ3VvdXMsIEFycmF5OjpDb252ZXJ0KTsKICAgICAg
ICAgCiAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgIGlmICghdmFsdWUgfHwgaXNJbnQz
MlNwZWN1bGF0aW9uKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAg
aWYgKGlzTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQorICAgICAgICBpZiAoaXNGdWxsTnVtYmVy
U3BlY3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5kQ29udmVy
c2lvbihBcnJheTo6RG91YmxlLCBBcnJheTo6Q29udmVydCk7CiAgICAgICAgIHJldHVybiB3aXRo
VHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkNvbnRpZ3VvdXMsIEFycmF5OjpDb252ZXJ0KTsKICAg
ICAgICAgCiAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICBpZiAoZmxhZ3MgJiBOb2Rl
Qnl0ZWNvZGVVc2VzQXNJbnQpCiAgICAgICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJz
aW9uKEFycmF5OjpDb250aWd1b3VzLCBBcnJheTo6UmFnZUNvbnZlcnQpOwotICAgICAgICBpZiAo
IXZhbHVlIHx8IGlzTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQorICAgICAgICBpZiAoIXZhbHVl
IHx8IGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6Q29udGln
dW91cywgQXJyYXk6OkNvbnZlcnQpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMjEg
KzYzLDYgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICAKLSAgICBOb2RlKiBjYW5vbmlj
YWxpemUoTm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICAKLSAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gVmFsdWVUb0lu
dDMyKQotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKLSAgICAgICAg
Ci0gICAgICAgIHJldHVybiBub2RlOwotICAgIH0KLSAgICBOb2RlKiBjYW5vbmljYWxpemUoRWRn
ZSBlZGdlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbm9uaWNhbGl6ZShlZGdlLm5vZGUoKSk7
Ci0gICAgfQotICAgIAogICAgIHVuc2lnbmVkIGVuZEluZGV4Rm9yUHVyZUNTRSgpCiAgICAgewog
ICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2xhc3RTZWVuW21fY3VycmVudE5vZGUtPm9wKCld
OwpAQCAtOTQsOSArNzksOSBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogcHVyZUNTRShOb2RlKiBu
b2RlKQogICAgIHsKLSAgICAgICAgTm9kZSogY2hpbGQxID0gY2Fub25pY2FsaXplKG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgTm9kZSogY2hpbGQyID0gY2Fub25pY2FsaXplKG5vZGUtPmNoaWxk
MigpKTsKLSAgICAgICAgTm9kZSogY2hpbGQzID0gY2Fub25pY2FsaXplKG5vZGUtPmNoaWxkMygp
KTsKKyAgICAgICAgRWRnZSBjaGlsZDEgPSBub2RlLT5jaGlsZDEoKTsKKyAgICAgICAgRWRnZSBj
aGlsZDIgPSBub2RlLT5jaGlsZDIoKTsKKyAgICAgICAgRWRnZSBjaGlsZDMgPSBub2RlLT5jaGls
ZDMoKTsKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGVuZEluZGV4Rm9yUHVy
ZUNTRSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlKiBvdGhlck5vZGUgPSBtX2N1cnJlbnRC
bG9jay0+YXQoaSk7CkBAIC0xMDksMTkgKzk0LDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBp
ZiAobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSAhPSBvdGhlck5vZGUtPmFyaXRoTm9kZUZsYWdzKCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIE5v
ZGUqIG90aGVyQ2hpbGQgPSBjYW5vbmljYWxpemUob3RoZXJOb2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBFZGdlIG90aGVyQ2hpbGQgPSBvdGhlck5vZGUtPmNoaWxkMSgpOwogICAgICAgICAg
ICAgaWYgKCFvdGhlckNoaWxkKQogICAgICAgICAgICAgICAgIHJldHVybiBvdGhlck5vZGU7CiAg
ICAgICAgICAgICBpZiAob3RoZXJDaGlsZCAhPSBjaGlsZDEpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG90aGVyQ2hpbGQgPSBjYW5vbmljYWxp
emUob3RoZXJOb2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBvdGhlckNoaWxkID0gb3RoZXJO
b2RlLT5jaGlsZDIoKTsKICAgICAgICAgICAgIGlmICghb3RoZXJDaGlsZCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gb3RoZXJOb2RlOwogICAgICAgICAgICAgaWYgKG90aGVyQ2hpbGQgIT0gY2hp
bGQyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBvdGhlckNoaWxkID0gY2Fub25pY2FsaXplKG90aGVyTm9kZS0+Y2hpbGQzKCkpOworICAgICAg
ICAgICAgb3RoZXJDaGlsZCA9IG90aGVyTm9kZS0+Y2hpbGQzKCk7CiAgICAgICAgICAgICBpZiAo
IW90aGVyQ2hpbGQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyTm9kZTsKICAgICAgICAg
ICAgIGlmIChvdGhlckNoaWxkICE9IGNoaWxkMykKQEAgLTM3NywyMSArMzYyLDIxIEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0t
OykgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKLSAg
ICAgICAgICAgIGlmIChub2RlID09IGNoaWxkMSB8fCBub2RlID09IGNhbm9uaWNhbGl6ZShjaGls
ZDIpKSAKKyAgICAgICAgICAgIGlmIChub2RlID09IGNoaWxkMSB8fCBub2RlID09IGNoaWxkMikg
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3Ao
KSkgewogICAgICAgICAgICAgY2FzZSBHZXRCeVZhbDoKICAgICAgICAgICAgICAgICBpZiAoIW1f
Z3JhcGguYnlWYWxJc1B1cmUobm9kZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBjaGlsZDEgJiYgY2Fub25pY2Fs
aXplKG5vZGUtPmNoaWxkMigpKSA9PSBjYW5vbmljYWxpemUoY2hpbGQyKSkKKyAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gY2hpbGQxICYmIG5vZGUtPmNoaWxkMigpID09IGNo
aWxkMikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgY2FzZSBQdXRC
eVZhbEFsaWFzOiB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLmJ5VmFsSXNQdXJlKG5v
ZGUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBpZiAo
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSA9PSBjaGlsZDEgJiYgY2Fub25pY2FsaXplKG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpID09IGNhbm9uaWNhbGl6ZShjaGlsZDIpKQorICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApID09IGNoaWxkMSAm
JiBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpID09IGNoaWxkMikKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikubm9kZSgpOwogICAgICAg
ICAgICAgICAgIC8vIFdlIG11c3QgYXNzdW1lIHRoYXQgdGhlIFB1dEJ5VmFsIHdpbGwgY2xvYmJl
ciB0aGUgbG9jYXRpb24gd2UncmUgZ2V0dGluZyBmcm9tLgogICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBjYW4gZG8gYmV0dGVyOyBpZiB3ZSBrbm93IHRoYXQgdGhlIFB1dEJ5VmFsIGlzIGFj
Y2Vzc2luZyBhbiBhcnJheSBvZiBhCkBAIC0xMDkwLDYgKzEwNzUsOCBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50OgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoK
ICAgICAgICAgY2FzZSBNYWtlUm9wZToKKyAgICAgICAgY2FzZSBJbnQ0OFRvRG91YmxlOgorICAg
ICAgICBjYXNlIEludDQ4VG9WYWx1ZToKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3Jl
RWxpbWluYXRpb24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBzZXRSZXBs
YWNlbWVudChwdXJlQ1NFKG5vZGUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw4IEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIExvZ2lj
YWxOb3Q6CiAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5
TG9jYWw6CisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOgorICAgIGNhc2UgSW50NDhUb1ZhbHVlOgog
ICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgTW92SGludEFuZENoZWNrOgpAQCAt
MTgwLDYgKzE4Miw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUK
ICAgICAgICAgc3dpdGNoIChub2RlLT5iaW5hcnlVc2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBJ
bnQzMlVzZToKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2UgTWFjaGluZUlu
dFVzZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAg
ICAgICAgICAgcmVhZChXb3JsZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
bW9uLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMsMTUgQEAgaW5saW5lIGJvb2wg
ZW5hYmxlQ29uY3VycmVudEpJVCgpCiAjZW5kaWYKIH0KIAoraW5saW5lIGJvb2wgZW5hYmxlSW50
NDgoKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBlbnVtIFNwaWxsUmVnaXN0ZXJzTW9kZSB7IE5l
ZWRUb1NwaWxsLCBEb250U3BpbGwgfTsKIAogZW51bSBOb1Jlc3VsdFRhZyB7IE5vUmVzdWx0IH07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJl
dmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpIHsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgewogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xOTcsNiArMjAyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYg
bV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAg
ICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaXhFZGdlPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg
LTIwNyw2ICsyMTYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMy
VXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiBtX2dyYXBoLm11bFNob3VsZFNw
ZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0zMDAsNiArMzE0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkKKyAgICAg
ICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZU51bWJlcihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CkBAIC0zNTUs
NiArMzc1LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkKKyAgICAgICAgICAgICAgICAmJiBOb2RlOjpz
aG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLT5jaGlsZDEo
KS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8
TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CkBAIC00NzUsNyArNTAxLDEwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKICAgICAgICAgICAgICAgICBmaXhFZGdl
PEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNl
PihjaGlsZDIpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMyk7Cisg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+cHJlZGljdGlvbigpICYgU3BlY0ludDQ4KQorICAg
ICAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KGNoaWxkMyk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGls
ZDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91
YmxlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwpAQCAt
ODQ3LDYgKzg3Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6
CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICAgICAgY2FzZSBDaGVja1Rp
ZXJVcEFuZE9TUkVudGVyOgorICAgICAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIGNh
c2UgSW50NDhUb1ZhbHVlOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTEzNDcsMTIgKzEzNzgsODQgQEAg
cHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxVc2VLaW5kIHVzZUtpbmQ+CiAgICAgdm9pZCBmaXhFZGdl
KEVkZ2UmIGVkZ2UsIFNwZWN1bGF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEJhY2t3YXJkU3Bl
Y3VsYXRpb24pCiAgICAgewotICAgICAgICBpZiAoaXNEb3VibGUodXNlS2luZCkgJiYgZWRnZS0+
c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsKLSAgICAgICAgICAgIGluamVj
dEludDMyVG9Eb3VibGVOb2RlKGVkZ2UsIHVzZUtpbmQsIGRpcmVjdGlvbik7CisgICAgICAgIGlm
IChpc0RvdWJsZSh1c2VLaW5kKSkgeworICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1
bGF0ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7CisgICAgICAgICAgICAgICAgaW5qZWN0SW50MzJU
b0RvdWJsZU5vZGUoZWRnZSwgdXNlS2luZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChlbmFi
bGVJbnQ0OCgpICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgeworICAgICAg
ICAgICAgICAgIC8vIE1ha2UgYWxsIGRvdWJsZSB1c2VzIG9mIGludDQ4IHZhbHVlcyBoYXZlIGFu
IGludGVybWVkaWF0ZSBJbnQ0OFRvRG91YmxlLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMg
Zm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBJbnQ0OFRvVmFsdWUgKHNlZSBiZWxvdykgZXhjZXB0IHRo
YXQKKyAgICAgICAgICAgICAgICAvLyBJbnQ4VG9Eb3VibGUgd2lsbCBjb252ZXJ0IGludDQ4J3Mg
dGhhdCBmaXQgaW4gYW4gaW50MzIgaW50byBhIGRvdWJsZQorICAgICAgICAgICAgICAgIC8vIHJh
dGhlciB0aGFuIHRyeWluZyB0byBjcmVhdGUgYSBib3hlZCBpbnQzMiBsaWtlIEludDQ4VG9WYWx1
ZSBkb2VzLgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG9ic2VydmVVc2VLaW5k
T25Ob2RlPE1hY2hpbmVJbnRVc2U+KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAor
ICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4QXNEb3VibGUsIElu
dDQ4VG9Eb3VibGUsCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmln
aW4sIEVkZ2UoZWRnZS5ub2RlKCksIE1hY2hpbmVJbnRVc2UpKTsKKyAgICAgICAgICAgICAgICBl
ZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGVuYWJsZUludDQ4
KCkgJiYgdXNlS2luZCAhPSBNYWNoaW5lSW50VXNlCisgICAgICAgICAgICAmJiBlZGdlLT5zaG91
bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkgJiYgIWVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkp
IHsKKyAgICAgICAgICAgIC8vIFdlIG1ha2UgYWxsIG5vbi1pbnQ0OCB1c2VzIG9mIGludDQ4IHZh
bHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ0OFRvVmFsdWUKKyAgICAgICAgICAgIC8vIG5v
ZGUgdG8gZW5zdXJlIHRoYXQgd2UgaGFuZGxlIHRoaXMgcHJvcGVybHk6CisgICAgICAgICAgICAv
LworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0aEFk
ZChAYSwgLi4uKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIEBhKQorICAgICAgICAgICAg
Ly8gZDogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBX
aXRob3V0IGFuIGludGVybWVkaWF0ZSBub2RlIGFuZCBqdXN0IGxhYmVsaW5nIHRoZSB1c2VzLCB3
ZSB3aWxsIGdldDoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgK
KyAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAv
LyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAYSkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKElu
dDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQW5kIG5vdyB0aGUg
Yy0+VW50eXBlZDpAYSBlZGdlIHdpbGwgYm94IHRoZSB2YWx1ZSBvZiBAYSBpbnRvIGEgZG91Ymxl
LiBUaGlzCisgICAgICAgICAgICAvLyBpcyBiYWQsIGJlY2F1c2Ugbm93IHRoZSBkLT5JbnQ0ODpA
YSBlZGdlIHdpbGwgZWl0aGVyIGhhdmUgdG8gZG8gZG91YmxlLXRvLWludAorICAgICAgICAgICAg
Ly8gY29udmVyc2lvbnMsIG9yIHdpbGwgaGF2ZSB0byBPU1IgZXhpdCB1bmNvbmRpdGlvbmFsbHku
IEFsdGVybmF0aXZlbHkgd2UgY291bGQKKyAgICAgICAgICAgIC8vIGhhdmUgdGhlIGMtPlVudHlw
ZWQ6QGEgZWRnZSBib3ggdGhlIHZhbHVlIGJ5IGNvcHlpbmcgcmF0aGVyIHRoYW4gaW4tcGxhY2Uu
CisgICAgICAgICAgICAvLyBCdXQgdGhlc2UgYm94aW5ncyBhcmUgYWxzbyBjb3N0bHkgc28gdGhp
cyB3b3VsZG4ndCBiZSBncmVhdC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBUaGUg
c29sdXRpb24gd2UgdXNlIGlzIHRvIGFsd2F5cyBoYXZlIG5vbi1JbnQ0OCB1c2VzIG9mIHByZWRp
Y3RlZCBJbnQ0OCdzIHVzZQorICAgICAgICAgICAgLy8gYW4gaW50ZXJ2ZW5pbmcgSW50NDhUb1Zh
bHVlIG5vZGU6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4Cisg
ICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8g
eDogSW50NDhUb1ZhbHVlKEludDQ4OkBhKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVu
dHlwZWQ6QHgpCisgICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAg
ICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBldmVuIGlmIHdlIGhhZCBtdWx0
aXBsZSBub24taW50NDggdXNlcyBvZiBAYSwgdGhlIG11bHRpcGxlCisgICAgICAgICAgICAvLyBJ
bnQ0OFRvVmFsdWUncyB3b3VsZCBnZXQgQ1NFJ2QgdG9nZXRoZXIuIFNvIHRoZSBib3hpbmcgd291
bGQgb25seSBoYXBwZW4gb25jZS4KKyAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIEBh
IHdvdWxkIGNvbnRpbnVlIHRvIGJlIHJlcHJlc2VudGVkIGFzIGEgbmF0aXZlIGludDQ4LgorICAg
ICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHdvdWxkIGhhdmUgYmVl
biB0byBpbnNlcnQgVG9OYXRpdmVJbnQ0OCBub2RlcyBvbiBpbnQ0OCB1c2VzIG9mCisgICAgICAg
ICAgICAvLyBpbnQ0OCdzLiBUaGlzIHdvdWxkIGhhdmUgaGFuZGxlZCB0aGUgYWJvdmUgZXhhbXBs
ZSBidXQgd291bGQgZmFsbCBvdmVyIGZvcjoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAv
LyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IENhbGwoLi4uLCBAYSkKKyAgICAgICAg
ICAgIC8vIGM6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAg
Ly8gQnV0IHRoZSBzb2x1dGlvbiB3ZSB1c2UgaGFuZGxlcyB0aGUgYWJvdmUgZ3JhY2VmdWxseS4K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8TWFjaGluZUlu
dFVzZT4oZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBOb2RlKiByZXN1
bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1faW5kZXhJ
bkJsb2NrLCBTcGVjSW50NDgsIEludDQ4VG9WYWx1ZSwKKyAgICAgICAgICAgICAgICBtX2N1cnJl
bnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBNYWNoaW5lSW50VXNlKSk7Cisg
ICAgICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTx1
c2VLaW5kPihlZGdlLm5vZGUoKSk7CisgICAgICAgIAogICAgICAgICBlZGdlLnNldFVzZUtpbmQo
dXNlS2luZCk7CiAgICAgfQogICAgIApAQCAtMTM3OCw3ICsxNDgxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGluamVjdEludDMyVG9Eb3VibGVOb2RlKEVkZ2UmIGVkZ2UsIFVzZUtpbmQgdXNlS2lu
ZCA9IE51bWJlclVzZSwgU3BlY3VsYXRpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gQmFja3dhcmRT
cGVjdWxhdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4LCBJbnQz
MlRvRG91YmxlLAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0OEFzRG91Ymxl
LCBJbnQzMlRvRG91YmxlLAogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwg
RWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7CiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0g
Rm9yd2FyZFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgcmVzdWx0LT5tZXJnZUZsYWdzKE5vZGVF
eGl0c0ZvcndhcmQpOwpAQCAtMTQzNCwxMyArMTUzNywyMCBAQCBwcml2YXRlOgogICAgIGJvb2wg
YXR0ZW1wdFRvTWFrZUludGVnZXJBZGQoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFkZFNw
ZWN1bGF0aW9uTW9kZSBtb2RlID0gbV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1vZGUobm9kZSk7Ci0g
ICAgICAgIGlmIChtb2RlID09IERvbnRTcGVjdWxhdGVJbnQzMikKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKG1vZGUgIT0gRG9udFNwZWN1bGF0ZUludDMyKSB7CisgICAg
ICAgICAgICB0cnVuY2F0ZUNvbnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUsIG1vZGUpOworICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHRydW5jYXRlQ29uc3RhbnRzSWZOZWNlc3Nh
cnkobm9kZSwgbW9kZSk7Ci0gICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgbV9ncmFwaC5hZGRTaG91
bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUlu
dFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgYm9v
bCBhdHRlbXB0VG9NYWtlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCShyZXZpc2lvbiAxNTU4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgRmx1CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIG91dC5wcmludCgiRmx1
c2hlZEludDMyIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAg
ICAgICAgb3V0LnByaW50KCJGbHVzaGVkSW50MzIiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgRmx1c2hlZERvdWJsZToKICAgICAgICAgb3V0LnByaW50KCJGbHVzaGVkRG91YmxlIik7CiAg
ICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hG
b3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNo
Rm9ybWF0LmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRmx1c2hGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiBlbnVtIEZsdXNoRm9ybWF0IHsKICAgICBEZWFkRmx1
c2gsCiAgICAgRmx1c2hlZEludDMyLAorICAgIEZsdXNoZWRJbnQ0OCwKICAgICBGbHVzaGVkRG91
YmxlLAogICAgIEZsdXNoZWRDZWxsLAogICAgIEZsdXNoZWRCb29sZWFuLApAQCAtNTUsNiArNTYs
OCBAQCBpbmxpbmUgTm9kZUZsYWdzIHJlc3VsdEZvcihGbHVzaEZvcm1hdCBmCiAgICAgICAgIHJl
dHVybiBOb2RlUmVzdWx0SlM7CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVy
biBOb2RlUmVzdWx0SW50MzI7CisgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIHJldHVy
biBOb2RlUmVzdWx0SW50NDg7CiAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICByZXR1
cm4gTm9kZVJlc3VsdE51bWJlcjsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgpAQCAtNzQsNiAr
NzcsOCBAQCBpbmxpbmUgVXNlS2luZCB1c2VLaW5kRm9yKEZsdXNoRm9ybWF0IGZvCiAgICAgICAg
IHJldHVybiBDZWxsVXNlOwogICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICByZXR1cm4g
SW50MzJVc2U7CisgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIHJldHVybiBNYWNoaW5l
SW50VXNlOwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKICAgICAgICAgcmV0dXJuIE51bWJlclVz
ZTsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw2ICs4NiwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbml0R1BSKG5vZGUsIHVz
ZUNvdW50LCBncHIsIERhdGFGb3JtYXRJbnQzMik7CiAgICAgfQorICAgIHZvaWQgaW5pdEludDQ4
KE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgcmVnLCBEYXRhRm9ybWF0IGZv
cm1hdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChmb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8
IGZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICBpbml0R1BSKG5vZGUs
IHVzZUNvdW50LCByZWcsIGZvcm1hdCk7CisgICAgfQorICAgIHZvaWQgaW5pdEludDQ4KE5vZGUq
IG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgaW5p
dEdQUihub2RlLCB1c2VDb3VudCwgcmVnLCBEYXRhRm9ybWF0SW50NDgpOworICAgIH0KKyAgICB2
b2lkIGluaXRTdHJpY3RJbnQ0OChOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVn
IHJlZykKKyAgICB7CisgICAgICAgIGluaXRHUFIobm9kZSwgdXNlQ291bnQsIHJlZywgRGF0YUZv
cm1hdFN0cmljdEludDQ4KTsKKyAgICB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB2b2lkIGlu
aXRKU1ZhbHVlKE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgZ3ByLCBEYXRh
Rm9ybWF0IGZvcm1hdCA9IERhdGFGb3JtYXRKUykKICAgICB7CkBAIC0xODcsNiArMjAwLDExIEBA
IHB1YmxpYzoKICAgICAvLyBHZXQgdGhlIGZvcm1hdCBvZiB0aGUgdmFsdWUgYXMgaXQgaXMgc3Bp
bGxlZCBpbiB0aGUgSlNTdGFjayAob3IgJ25vbmUnKS4KICAgICBEYXRhRm9ybWF0IHNwaWxsRm9y
bWF0KCkgeyByZXR1cm4gbV9zcGlsbEZvcm1hdDsgfQogICAgIAorICAgIGJvb2wgaXNGb3JtYXQo
RGF0YUZvcm1hdCBleHBlY3RlZEZvcm1hdCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWdpc3Rl
ckZvcm1hdCgpID09IGV4cGVjdGVkRm9ybWF0IHx8IHNwaWxsRm9ybWF0KCkgPT0gZXhwZWN0ZWRG
b3JtYXQ7CisgICAgfQorICAgIAogICAgIGJvb2wgaXNKU0Zvcm1hdChEYXRhRm9ybWF0IGV4cGVj
dGVkRm9ybWF0KQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTQzo6aXNKU0Zvcm1hdChyZWdpc3Rl
ckZvcm1hdCgpLCBleHBlY3RlZEZvcm1hdCkgfHwgSlNDOjppc0pTRm9ybWF0KHNwaWxsRm9ybWF0
KCksIGV4cGVjdGVkRm9ybWF0KTsKQEAgLTE5Nyw2ICsyMTUsMTYgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gaXNKU0Zvcm1hdChEYXRhRm9ybWF0SlNJbnQzMik7CiAgICAgfQogICAgIAorICAg
IGJvb2wgaXNJbnQ0OCgpCisgICAgeworICAgICAgICByZXR1cm4gaXNGb3JtYXQoRGF0YUZvcm1h
dEludDQ4KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc1N0cmljdEludDQ4KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBpc0Zvcm1hdChEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgIH0KKyAg
ICAKICAgICBib29sIGlzSlNEb3VibGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSlNGb3Jt
YXQoRGF0YUZvcm1hdEpTRG91YmxlKTsKQEAgLTMxNCw2ICszNDIsMTkgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZvcm1hdEludDMyKTsKICAgICB9
CisgICAgdm9pZCBmaWxsSW50NDgoVmFyaWFibGVFdmVudFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcg
Z3ByLCBEYXRhRm9ybWF0IGZvcm1hdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChmb3JtYXQgPT0g
RGF0YUZvcm1hdEludDQ4IHx8IGZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAg
ICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBmb3JtYXQpOworICAgIH0KKyAgICB2b2lkIGZpbGxJ
bnQ0OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIpCisgICAgeworICAg
ICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SW50NDgpOworICAgIH0KKyAgICB2
b2lkIGZpbGxTdHJpY3RJbnQ0OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBn
cHIpCisgICAgeworICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0U3RyaWN0
SW50NDgpOworICAgIH0KICAgICB2b2lkIGZpbGxCb29sZWFuKFZhcmlhYmxlRXZlbnRTdHJlYW0m
IHN0cmVhbSwgR1BSUmVnIGdwcikKICAgICB7CiAgICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIs
IERhdGFGb3JtYXRCb29sZWFuKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxNTU4MjApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEzLDggKzMxMyw4IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3Rh
dGU6Om1lcmdlU3RhdGVBdFQKICAgICAgICAgICAgIC8vIGJlZm9yZSBhbmQgYWZ0ZXIgc2V0dGlu
ZyBpdC4KICAgICAgICAgICAgIHNvdXJjZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgaWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpID09
IEZsdXNoZWREb3VibGUpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIShzb3VyY2UubV90eXBl
ICYgflNwZWNOdW1iZXIpKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoISEoc291cmNlLm1fdHlw
ZSAmIH5TcGVjRG91YmxlKSA9PSAhIShzb3VyY2UubV90eXBlICYgU3BlY0ludDMyKSk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKCEoc291cmNlLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVCghIShzb3VyY2UubV90eXBlICYgflNwZWNEb3VibGUpID09
ICEhKHNvdXJjZS5tX3R5cGUgJiBTcGVjTWFjaGluZUludCkpOwogICAgICAgICAgICAgICAgIGlm
ICghKHNvdXJjZS5tX3R5cGUgJiB+U3BlY0RvdWJsZSkpIHsKICAgICAgICAgICAgICAgICAgICAg
c291cmNlLm1lcmdlKFNwZWNJbnQ0OEFzRG91YmxlKTsKICAgICAgICAgICAgICAgICAgICAgc291
cmNlLmZpbHRlcihTcGVjRG91YmxlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb2RlLmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw5IEBAIHZv
aWQgSklUQ29kZTo6cmVjb25zdHJ1Y3QoCiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZEludDMyOgogICAgICAgICAgICAgdmFsdWUgPSBqc051bWJlcihleGVjLT5yKG9wZXJh
bmQpLnVuYm94ZWRJbnQzMigpKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFs
cmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgICAgIHZhbHVlID0ganNOdW1i
ZXIoZXhlYy0+cihvcGVyYW5kKS51bmJveGVkSW50NDgoKSk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgogICAgICAgICAg
ICAgdmFsdWUgPSBqc0RvdWJsZU51bWJlcihleGVjLT5yKG9wZXJhbmQpLnVuYm94ZWREb3VibGUo
KSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI0MSwxMiArMTI0MSwxMiBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOdW1iZXIoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJu
IGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgc2hvdWxkU3BlY3VsYXRlTnVtYmVyRXhwZWN0aW5nRGVmaW5lZCgpCiAgICAgewotICAg
ICAgICByZXR1cm4gaXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocHJlZGljdGlv
bigpKTsKKyAgICAgICAgcmV0dXJuIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVm
aW5lZChwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0
ZUJvb2xlYW4oKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVG
bGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKICNkZWZpbmUgTm9kZVJlc3VsdEpTICAgICAgICAgICAgICAgICAgICAg
MHgwMDAxCiAjZGVmaW5lIE5vZGVSZXN1bHROdW1iZXIgICAgICAgICAgICAgICAgIDB4MDAwMgog
I2RlZmluZSBOb2RlUmVzdWx0SW50MzIgICAgICAgICAgICAgICAgICAweDAwMDMKLSNkZWZpbmUg
Tm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgwMDA0Ci0jZGVmaW5lIE5vZGVSZXN1
bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0SW50NDgg
ICAgICAgICAgICAgICAgICAweDAwMDQKKyNkZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAg
ICAgICAgICAgMHgwMDA1CisjZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAg
IDB4MDAwNgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICNkZWZpbmUgTm9kZU11
c3RHZW5lcmF0ZSAgICAgICAgICAgICAgICAgMHgwMDA4IC8vIHNldCBvbiBub2RlcyB0aGF0IGhh
dmUgc2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0cml2aWFsbHkgYmUgcmVtb3ZlZCBieSBEQ0Uu
CiAjZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAgICAgICAgICAgICAgIDB4MDAxMApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTU1ODIwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQsNiArMTE0LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhJbnQzMlRvRG91YmxlLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgLyogVXNlZCB0
byBzcGVjdWxhdGUgdGhhdCBhIGRvdWJsZSB2YWx1ZSBpcyBhY3R1YWxseSBhbiBpbnRlZ2VyLiAq
L1wKICAgICBtYWNybyhEb3VibGVBc0ludDMyLCBOb2RlUmVzdWx0SW50MzIgfCBOb2RlRXhpdHNG
b3J3YXJkKSBcCisgICAgLyogVXNlZCB0byBzZXBhcmF0ZSByZXByZXNlbnRhdGlvbiBhbmQgcmVn
aXN0ZXIgYWxsb2NhdGlvbiBvZiBJbnQ0OCdzIHJlcHJlc2VudGVkICovXAorICAgIC8qIGFzIHZh
bHVlcy4gKi9cCisgICAgbWFjcm8oSW50NDhUb1ZhbHVlLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBt
YWNybyhJbnQ0OFRvRG91YmxlLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgXAogICAgIC8qIE5v
ZGVzIGZvciBhcml0aG1ldGljIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKEFyaXRoQWRkLCBO
b2RlUmVzdWx0TnVtYmVyIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMzU2LDYgKzM2MCwxNyBA
QCBpbmxpbmUgdW5zaWduZWQgZm9yd2FyZFJld2lyaW5nU2VsZWN0aW9uCiAgICAgICAgIC8vIFRo
aXMgbG9zZXMgaW5mb3JtYXRpb24uIE9ubHkgdXNlIGl0IGlmIHRoZXJlIGFyZSBubyBiZXR0ZXIg
YWx0ZXJuYXRpdmVzLgogICAgICAgICByZXR1cm4gMjU7CiAgICAgICAgIAorICAgIGNhc2UgSW50
NDhUb1ZhbHVlOgorICAgICAgICAvLyBMb3NlcyBubyBpbmZvcm1hdGlvbi4gSXQganVzdCBib3hl
cyB0aGUgdmFsdWUsIHdoaWNoIGlzIHdoYXQgT1NSIHdhbnRzCisgICAgICAgIC8vIHRvIGRvIGFu
eXdheS4KKyAgICAgICAgcmV0dXJuIDEwMDsKKyAgICAgICAgCisgICAgY2FzZSBJbnQ0OFRvRG91
YmxlOgorICAgICAgICAvLyBUaGlzIGlzIGxpa2UgSW50MzJUb0RvdWJsZTsgd2UgY2FuIHVzZSBp
dCBiZWNhdXNlIGl0IGdpdmVzIGEgc2VtYW50aWNhbGx5CisgICAgICAgIC8vIGVxdWl2YWxlbnQg
dmFsdWUgYnV0IHRoYXQgdmFsdWUgbWF5IGJlIGFuIGludDMyIGluIGEgZG91YmxlLCBzbyB3ZSdk
CisgICAgICAgIC8vIHJhdGhlciBub3QgaWYgd2UgY2FuIGF2b2lkIGl0LgorICAgICAgICByZXR1
cm4gNzU7CisgICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyNjQuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDYgKzE5NSw4
IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgY2Fz
ZSBJbkdQUjoKICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKICAgICAgICAgY2FzZSBV
SW50MzJJbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVkSW50NDhJbkdQUjoKKyAgICAgICAgY2Fz
ZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQocmVj
b3ZlcnkuZ3ByKCksIHNjcmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIApAQCAtMjM1LDEyICsyMzcsMTUgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KGNvbnN0IAogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAg
Y2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFj
ZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAg
ICAgIGNhc2UgU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2pp
dC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdp
c3RlcigpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJ
bmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgogICAg
ICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU6CisgICAgICAgIGNhc2Ug
QWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OgogICAgICAgICAgICAgbV9qaXQubG9hZDY0
KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSwgR1BSSW5mbzo6cmVnVDApOwog
ICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc0LDM0ICsyNzksNTkgQEAgdm9pZCBPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChH
UFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZERvdWJsZToKLSAgICAgICAgY2FzZSBJbkZQUjoKLSAgICAgICAgY2FzZSBE
b3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpm
cFJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1Qw
LCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVk
SW50NDg6CisgICAgICAgIGNhc2UgVW5ib3hlZEludDQ4SW5HUFI6CisgICAgICAgIGNhc2UgVW5i
b3hlZFN0cmljdEludDQ4SW5HUFI6CisgICAgICAgIGNhc2UgSW50NDhEaXNwbGFjZWRJbkpTU3Rh
Y2s6CisgICAgICAgIGNhc2UgU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAg
IGNhc2UgVUludDMySW5HUFI6IHsKICAgICAgICAgICAgIG1faml0LmxvYWQ2NChzY3JhdGNoICsg
aW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRv
UHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwKLSAgICAgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwotICAgICAg
ICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86
OmZwUmVnVDApOwotICAgICAgICAgICAgbV9qaXQuYWRkRG91YmxlKAotICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZBc3NlbWJseUhlbHBlcnM6OnR3b1Rv
VGhlMzIpLAotICAgICAgICAgICAgICAgIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBDb252ZXJ0IGl0IHRvIGFuIGludDY0LgorICAgICAgICAgICAgc3dp
dGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgeworICAgICAgICAgICAgY2FzZSBBbHJlYWR5SW5K
U1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAgICAgICAgICBjYXNlIFVuYm94ZWRJbnQ0OEluR1BS
OgorICAgICAgICAgICAgY2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAg
ICAgICBtX2ppdC5yc2hpZnQ2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxNiksIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIGNhc2UgVUludDMySW5HUFI6CisgICAgICAgICAgICAgICAgbV9qaXQuemVy
b0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIC8vIElzIGl0IGFuIGludDMyPworICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMy
VG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6SnVtcCBpc0ludDMyID0gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpFcXVhbCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1Qx
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTm9wZSwgaXQncyBub3QsIGJ1dCByZWdU
MCBjb250YWlucyB0aGUgaW50NjQgdmFsdWUuCisgICAgICAgICAgICBtX2ppdC5jb252ZXJ0SW50
NjRUb0RvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAg
ICBtX2ppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOwogICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0gICAg
ICAgICAgICBwb3NpdGl2ZS5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlzSW50MzIubGluaygmbV9qaXQpOworICAgICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Q
dHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0Lm9y
NjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgICAgICAKICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU6
CisgICAgICAgIGNhc2UgSW5GUFI6CisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0
YWNrOgorICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgbV9qaXQu
bG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAg
ICBtX2ppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjph
ZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgQ29uc3RhbnQ6CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KAogICAgICAg
ICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShy
ZWNvdmVyeS5jb25zdGFudCgpKSksCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2
YXRlOgogICAgIAogICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0ZWREb3VibGVUeXBlRm9yUHJl
ZGljdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmICghaXNOdW1i
ZXJTcGVjdWxhdGlvbih2YWx1ZSkpCisgICAgICAgIGlmICghaXNGdWxsTnVtYmVyU3BlY3VsYXRp
b24odmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGU7CiAgICAgICAgIGlmICh2
YWx1ZSAmIFNwZWNEb3VibGVOYU4pCiAgICAgICAgICAgICByZXR1cm4gU3BlY0RvdWJsZTsKQEAg
LTIwMyw3ICsyMDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG5vZGVDYW5TcGVjdWxh
dGVJbnQzMihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNOdW1iZXIpOworICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCeXRlY29kZU51bWJlcik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yMTIsMTQgKzIxMiwxNCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQgPSBub2RlLT5jaGlsZDIo
KS0+cHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobGVmdCAmJiBy
aWdodCkgewotICAgICAgICAgICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5n
RGVmaW5lZChsZWZ0KSAmJiBpc051bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChyaWdo
dCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb25FeHBlY3Rp
bmdEZWZpbmVkKGxlZnQpICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5l
ZChyaWdodCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU3BlY3VsYXRp
b25Nb2RlKG5vZGUpICE9IERvbnRTcGVjdWxhdGVJbnQzMikKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2Rl
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNw
ZWNJbnQ0OCk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHNwZWN1bGF0ZWREb3VibGVUeXBlRm9yUHJl
ZGljdGlvbnMobGVmdCwgcmlnaHQpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEobGVm
dCAmIFNwZWNOdW1iZXIpIHx8ICEocmlnaHQgJiBTcGVjTnVtYmVyKSkgeworICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIShsZWZ0ICYgU3BlY0Z1bGxOdW1iZXIpIHx8ICEocmlnaHQgJiBTcGVj
RnVsbE51bWJlcikpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gbGVmdCBvciByaWdodCBpcyBk
ZWZpbml0ZWx5IHNvbWV0aGluZyBvdGhlciB0aGFuIGEgbnVtYmVyLgogICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3RyaW5nKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UKQEAgLTM2OCwxMCArMzY4LDIwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIEdldEJ5VmFsOiB7CisgICAgICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgp
LT5wcmVkaWN0aW9uKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAo
IW5vZGUtPnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVGbG9hdDMy
QXJyYXkoKQogICAgICAgICAgICAgICAgIHx8IG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVGbG9hdDY0QXJyYXkoKSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihTcGVjRG91YmxlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCisgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlv
bihTcGVjSW50NDgpOworICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTY2LDYgKzU3Niw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgogICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgog
ICAgICAgICBjYXNlIExvb3BIaW50OgorICAgICAgICBjYXNlIEludDQ4VG9WYWx1ZToKKyAgICAg
ICAgY2FzZSBJbnQ0OFRvRG91YmxlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
ICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBhbHJlYWR5IGhhcyBhIHBy
ZWRpY3Rpb24uCkBAIC02NDAsNyArNjUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIERvdWJsZUJhbGxvdCBiYWxsb3Q7CiAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQobGVmdCkgJiYg
aXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocmlnaHQpCisgICAgICAgICAgICBp
ZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpICYmIGlzRnVs
bE51bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChyaWdodCkKICAgICAgICAgICAgICAg
ICAmJiAhbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlKSkKICAgICAgICAgICAg
ICAgICBiYWxsb3QgPSBWb3RlRG91YmxlOwogICAgICAgICAgICAgZWxzZQpAQCAtNjU3LDcgKzY2
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBEb3VibGVCYWxs
b3QgYmFsbG90OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3Bl
Y3VsYXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKKyAgICAgICAgICAg
IGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxh
dGlvbihyaWdodCkKICAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5tdWxTaG91bGRTcGVjdWxh
dGVJbnQzMihub2RlKSkKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlRG91YmxlOwogICAg
ICAgICAgICAgZWxzZQpAQCAtNjc3LDcgKzY4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBEb3VibGVCYWxsb3QgYmFsbG90OwogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVj
dWxhdGlvbihyaWdodCkKKyAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihs
ZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKICAgICAgICAgICAgICAgICAm
JiAhKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRpYyhub2RlLT5jaGlsZDEo
KS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkgJiYgbm9kZS0+Y2FuU3BlY3VsYXRlSW50
MzIoKSkpCiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZURvdWJsZTsKICAgICAgICAgICAg
IGVsc2UKQEAgLTcwNiw3ICs3MTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CiAgICAgICAg
ICAgICBpZiAoaXNEb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAgICAg
ICBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+dm90ZShWb3RlRG91YmxlKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKCFpc051bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IGlzSW50MzJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKCFpc0Z1bGxOdW1i
ZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlv
bikpCiAgICAgICAgICAgICAgICAgbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnZvdGUoVm90
ZVZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTU1ODIwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFN0cmluZ09yU3Ry
aW5nT2JqZWN0VXNlOgogICAgICAgICBjYXNlIE5vdENlbGxVc2U6CiAgICAgICAgIGNhc2UgT3Ro
ZXJVc2U6CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6CkBAIC02OSw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAgICAgICBj
YXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdl
KS5tX3R5cGUgJiB+U3BlY051bWJlcikKKyAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUo
ZWRnZSkubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKQogICAgICAgICAgICAgICAgIG1fcmVzdWx0
ID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKQEAgLTIzOSw2ICsy
NDAsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2Fz
ZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoK
ICAgICBjYXNlIExvb3BIaW50OgorICAgIGNhc2UgSW50NDhUb0RvdWJsZToKKyAgICBjYXNlIElu
dDQ4VG9WYWx1ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgIGNhc2UgR2V0
QnlWYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVy
U2F2ZVBsYW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Np
bGVudFJlZ2lzdGVyU2F2ZVBsYW4uaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDggQEAgZW51bSBTaWxlbnRTcGlsbEFjdGlvbiB7CiBlbnVtIFNpbGVudEZp
bGxBY3Rpb24gewogICAgIERvTm90aGluZ0ZvckZpbGwsCiAgICAgU2V0SW50MzJDb25zdGFudCwK
KyAgICBTZXRJbnQ0OENvbnN0YW50LAorICAgIFNldFN0cmljdEludDQ4Q29uc3RhbnQsCiAgICAg
U2V0Qm9vbGVhbkNvbnN0YW50LAogICAgIFNldENlbGxDb25zdGFudCwKICAgICBTZXRUcnVzdGVk
SlNDb25zdGFudCwKQEAgLTYxLDggKzYzLDEyIEBAIGVudW0gU2lsZW50RmlsbEFjdGlvbiB7CiAg
ICAgTG9hZDMyVGFnLAogICAgIExvYWQzMlBheWxvYWQsCiAgICAgTG9hZDMyUGF5bG9hZEJveElu
dCwKKyAgICBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50NDgsCisgICAgTG9hZDMyUGF5bG9hZFNp
Z25FeHRlbmQsCiAgICAgTG9hZFB0ciwKICAgICBMb2FkNjQsCisgICAgTG9hZDY0U2hpZnRSaWdo
dDE2LAorICAgIExvYWQ2NFNoaWZ0TGVmdDE2LAogICAgIExvYWREb3VibGUsCiAgICAgTG9hZERv
dWJsZUJveERvdWJsZSwKICAgICBMb2FkSlNVbmJveERvdWJsZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAx
NTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw0MCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCit2b2lkIFNwZWN1bGF0aXZlSklU
Ojpib3hJbnQ0OChHUFJSZWcgc291cmNlR1BSLCBHUFJSZWcgdGFyZ2V0R1BSLCBEYXRhRm9ybWF0
IGZvcm1hdCkKK3sKKyAgICBHUFJSZWcgdGVtcEdQUjsKKyAgICBpZiAoc291cmNlR1BSID09IHRh
cmdldEdQUikKKyAgICAgICAgdGVtcEdQUiA9IGFsbG9jYXRlKCk7CisgICAgZWxzZQorICAgICAg
ICB0ZW1wR1BSID0gdGFyZ2V0R1BSOworICAgIAorICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0
ZSgpOworCisgICAgaWYgKGZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgIG1faml0
LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHNvdXJjZUdQUik7CisgICAgZWxzZQorICAgICAg
ICBBU1NFUlQoZm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgbV9qaXQuc2ln
bkV4dGVuZDMyVG9QdHIoc291cmNlR1BSLCB0ZW1wR1BSKTsKKyAgICAKKyAgICBKSVRDb21waWxl
cjo6SnVtcCBpc0RvdWJsZSA9IG1faml0LmJyYW5jaDY0KAorICAgICAgICBKSVRDb21waWxlcjo6
Tm90RXF1YWwsIHNvdXJjZUdQUiwgdGVtcEdQUik7CisgICAgCisgICAgbV9qaXQuemVyb0V4dGVu
ZDMyVG9QdHIoc291cmNlR1BSLCB0YXJnZXRHUFIpOworICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyLCB0YXJnZXRHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1w
IGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgCisgICAgaXNEb3VibGUubGluaygmbV9qaXQpOwor
ICAgIG1faml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHNvdXJjZUdQUiwgZnByKTsKKyAgICBib3hE
b3VibGUoZnByLCB0YXJnZXRHUFIpOworICAgIGRvbmUubGluaygmbV9qaXQpOworICAgIAorICAg
IGlmICh0ZW1wR1BSICE9IHRhcmdldEdQUikKKyAgICAgICAgdW5sb2NrKHRlbXBHUFIpOworICAg
IAorICAgIHVubG9jayhmcHIpOworfQorCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1Zh
bHVlKEVkZ2UgZWRnZSkKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0g
ZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CkBAIC02OSwxMSArMTAzLDIyIEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAgICAgICAg
ICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxl
ZCk7Ci0gICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHNwaWxsRm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIERhdGFG
b3JtYXRJbnQzMjogewogICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogICAgICAgICAgICAgICAgIG1faml0
Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBncHIpOwogICAgICAgICAgICAg
ICAgIHNwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdEpTSW50MzI7Ci0gICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgICAgICBjYXNlIERh
dGFGb3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRD
b21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAg
ICAgIGJveEludDQ4KGdwciwgZ3ByLCBzcGlsbEZvcm1hdCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdwcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAgICAgICAgICAgICAgICAgaWYgKHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXREb3VibGUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gTmVlZCB0
byBib3ggdGhlIGRvdWJsZSwgc2luY2Ugd2Ugd2FudCBhIEpTVmFsdWUuCkBAIC04MSw2ICsxMjYs
NyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgICAg
ICAgICAgICAgIHNwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdEpTRG91YmxlOwogICAgICAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1h
dCAmIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBzcGlsbEZvcm1h
dCk7CiAgICAgICAgIH0KQEAgLTExMyw2ICsxNTksMTYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsSlNWYWx1ZShFZGdlIAogCiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQorICAgICAg
ICAKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJ
bnQ0ODogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbG9jayhn
cHIpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gYWxsb2NhdGUoKTsKKyAgICAgICAgYm94
SW50NDgoZ3ByLCByZXN1bHRHUFIsIGluZm8ucmVnaXN0ZXJGb3JtYXQoKSk7CisgICAgICAgIHVu
bG9jayhncHIpOworICAgICAgICByZXR1cm4gcmVzdWx0R1BSOworICAgIH0KIAogICAgIGNhc2Ug
RGF0YUZvcm1hdENlbGw6CiAgICAgICAgIC8vIE5vIHJldGFnIHJlcXVpcmVkIG9uIEpTVkFMVUU2
NCEKQEAgLTc2OCw3ICs4MjQsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVJbnQzCiAgICAgICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5z
cGlsbEZvcm1hdCgpOwogICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9y
bWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
SW50NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKICAgICAgICAg
CiAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJT
cGlsbGVkKTsKICAgICAgICAgCkBAIC03ODksNiArODQ1LDM2IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFG
b3JtYXRKU0ludDMyOwogICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAgICAgICAgfQorICAgICAg
ICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERh
dGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgLy8gR2VuZXJhbGx5LCB0aGlzIGNh
biBvbmx5IGhhcHBlbiBpZiB3ZSd2ZSBhbHJlYWR5IHByb3ZlZCB0aGF0IHRoZQorICAgICAgICAg
ICAgLy8gdmFsdWUgaXMgYW4gaW50MzIuIFRoYXQncyBiZWNhdXNlIGlmIGEgdmFsdWUgb3JpZ2lu
YXRlZCBhcyBhIEpTVmFsdWUKKyAgICAgICAgICAgIC8vIHRoZW4gd2Ugd291bGQgc3BlY3VsYXRl
IHRoYXQgaXQncyBhbiBpbnQzMiBiZWZvcmUgcmVwcmVzZW50aW5nIGl0IGFzCisgICAgICAgICAg
ICAvLyBhbiBpbnQ0OC4gT3RoZXJ3aXNlLCBpZiB3ZSBrbm93aW5nbHkgcHJvZHVjZWQgYW4gaW50
NDgsIHRoZW4gd2Ugd291bGQKKyAgICAgICAgICAgIC8vIGJlIGJveGluZyBpdCBpbnRvIGEgdmFs
dWUgdXNpbmcgSW50NDhUb1ZhbHVlLiBUaGlzIGFzc2VydGlvbiBpcyB2YWxpZAorICAgICAgICAg
ICAgLy8gb25seSBiZWNhdXNlIEludDQ4IGlzIHNvbWV0aGluZyB0aGF0IHdlIGludHJvZHVjZSBh
dCBwcmVkaWN0aW9uIHRpbWUuCisgICAgICAgICAgICAvLyBIb3dldmVyOiB3ZSBtYXkgaGF2ZSBh
biBpbnQzMi1wcm9kdWNpbmcgbm9kZSByZXBsYWNlZCBieSBhbgorICAgICAgICAgICAgLy8gaW50
NDgtcHJvZHVjaW5nIG5vZGUgZHVlIHRvIENTRS4gU28gd2UgbXVzdCBkbyBhIGNoZWNrLgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAg
ICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ0OCkgeworICAgICAgICAgICAgICAgIEdQUlJlZyB0
ZW1wID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0
cihncHIsIHRlbXApOworICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qgc3Vw
cGx5IHZhbHVlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KKyAgICAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVl
UmVncygpLCAwLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIGdwciwgdGVtcCkpOworICAgICAgICAgICAgICAgIHVubG9jayh0ZW1w
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9y
bWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQo
VHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5k
MzJUb1B0cihncHIsIGdwcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmZvLmZpbGxJ
bnQzMigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9y
bWF0SW50MzI7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CiAgICAgICAgIG1f
aml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIp
OwogCiAgICAgICAgIC8vIEZpbGwgYXMgSlNWYWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KQEAgLTc5
Nyw2ICs4ODMsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAg
ICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ISh0eXBlICYgU3BlY0ludDQ4KSk7CiAgICAgICAgIC8vIENoZWNrIHRoZSB2YWx1ZSBpcyBhbiBp
bnRlZ2VyLgogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKICAgICAgICAgbV9ncHJz
LmxvY2soZ3ByKTsKQEAgLTg0Myw2ICs5MzAsMzUgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlSW50MwogICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7
CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIERhdGFGb3Jt
YXRTdHJpY3RJbnQ0ODoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODogeworICAgICAgICBHUFJS
ZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdDsKKyAgICAgICAgaWYg
KG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgp
OworICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBsb2NrKGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQzMigqbV9z
dHJlYW0sIGdwcik7CisgICAgICAgICAgICByZXN1bHQgPSBncHI7CisgICAgICAgIH0KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgICAgIGlm
IChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAg
bV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcmVzdWx0KTsKKyAgICAgICAgaWYgKHR5
cGUgJiBTcGVjSW50NDgpIHsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0gYWxsb2NhdGUoKTsK
KyAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgdGVtcCk7CisgICAg
ICAgICAgICAvLyBDdXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9maWxpbmcgaW5m
b3JtYXRpb24gaGVyZS4gOi0vCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAg
ICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1bHQsIHRlbXApKTsKKyAg
ICAgICAgICAgIHVubG9jayh0ZW1wKTsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC56ZXJvRXh0
ZW5kMzJUb1B0cihyZXN1bHQsIHJlc3VsdCk7CisgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFG
b3JtYXRJbnQzMjsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CiAKICAgICBjYXNlIERhdGFG
b3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKQEAgLTg4NSw2ICsx
MDAxLDE2NyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAorR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
SW50NDgoRWRnZSBlZGdlLCBEYXRhRm9ybWF0IGRlc2lyZWRGb3JtYXQpCit7CisgICAgQVNTRVJU
KGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IGRlc2lyZWRGb3JtYXQgPT0gRGF0
YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUu
Zm9yTm9kZShlZGdlKTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOwor
ICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjTWFjaGluZUludCk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOwor
ICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lz
dGVyKHZpcnR1YWxSZWdpc3Rlcik7CisKKyAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQo
KSkgeworICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKKyAgICAgICAgaWYgKChlZGdlLT5oYXND
b25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSkuaXNNYWNoaW5lSW50
KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAg
ICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgMCk7CisgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisKKyAgICAgICAgaWYgKGVk
Z2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUganNWYWx1ZSA9IHZhbHVl
T2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChqc1ZhbHVlLmlz
TWFjaGluZUludCgpKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVn
aXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7CisgICAgICAgICAgICBpbnQ2NF90IHZhbHVlID0g
anNWYWx1ZS5hc01hY2hpbmVJbnQoKTsKKyAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlIDw8IDE2Owor
ICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQodmFsdWUpLCBncHIp
OworICAgICAgICAgICAgaW5mby5maWxsR1BSKCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0
KTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CisgICAgICAgIAor
ICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
SW50NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAgICAg
CisgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJT
cGlsbGVkKTsKKyAgICAgICAgCisgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
SlNJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpIHsKKyAgICAgICAgICAg
IC8vIElmIHdlIGtub3cgdGhpcyB3YXMgc3BpbGxlZCBhcyBhbiBpbnRlZ2VyIHdlIGNhbiBmaWxs
IHdpdGhvdXQgY2hlY2tpbmcuCisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIG1faml0LnNp
Z25FeHRlbmQzMlRvUHRyKGdwciwgZ3ByKTsKKyAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0
ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgICAgIGluZm8uZmlsbFN0
cmljdEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2
KSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAg
ICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NDgpIHsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0g
RGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQo
VHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJ
bnQ0OCgqbV9zdHJlYW0sIGdwcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0
SW50NDgpCisgICAgICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwg
Z3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAg
ICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisKKyAgICAgICAgLy8g
RmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgorICAgICAgICBpbmZvLmZpbGxKU1Zh
bHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNJbnQzMik7CisgICAgICAgIG1fZ3Bycy51
bmxvY2soZ3ByKTsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRKUzogeworICAgICAgICAv
LyBDaGVjayB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlci4gTm90ZSB0aGF0IHdlIHdvdWxkICpsaWtl
KiB0byB1bmJveCBhbiBJbnQ0OAorICAgICAgICAvLyBhdCB0aGlzIHBvaW50IGJ1dCB0aGlzIGlz
IHRvbyBjb3N0bHkuIFdlIG9ubHkgKnByb3ZlKiB0aGF0IHRoaXMgaXMgYW4gSW50NDgKKyAgICAg
ICAgLy8gZXZlbiB0aG91Z2ggd2UgY2hlY2sgaWYgaXQncyBhbiBpbnQzMi4KKyAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHQ7CisgICAgICAgIGlm
IChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUo
KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbElu
dDQ4KCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IGdwcjsKKyAgICAgICAgfQorICAgICAgICBpZiAodHlwZSAmIH5TcGVjSW50MzIpCisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHJlc3VsdCksIGVkZ2Us
IG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcmVzdWx0LCBHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIo
cmVzdWx0LCByZXN1bHQpOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0
SW50NDgpCisgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCByZXN1
bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1h
dEludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6IHsKKyAgICAgICAgR1BSUmVnIGdw
ciA9IGluZm8uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHQ7CisgICAgICAgIGlmIChtX2dw
cnMuaXNMb2NrZWQoZ3ByKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUoKTsKKyAg
ICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEludDQ4KCpt
X3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGdwcjsK
KyAgICAgICAgfQorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHJlc3Vs
dCk7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAg
ICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6
IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIGJvb2wgd2FzTG9j
a2VkID0gbV9ncHJzLmlzTG9ja2VkKGdwcik7CisgICAgICAgIGxvY2soZ3ByKTsKKyAgICAgICAg
aWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAg
cmV0dXJuIGdwcjsKKyAgICAgICAgaWYgKHdhc0xvY2tlZCkgeworICAgICAgICAgICAgR1BSUmVn
IHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwgcmVzdWx0
KTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAgICAgZ3ByID0gcmVzdWx0Owor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KCptX3N0cmVh
bSwgZ3ByKTsKKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsK
KyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1h
dEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBib29s
IHdhc0xvY2tlZCA9IG1fZ3Bycy5pc0xvY2tlZChncHIpOworICAgICAgICBsb2NrKGdwcik7Cisg
ICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAg
IHJldHVybiBncHI7CisgICAgICAgIGlmICh3YXNMb2NrZWQpIHsKKyAgICAgICAgICAgIEdQUlJl
ZyByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3Vs
dCk7CisgICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGdwciA9IHJlc3VsdDsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9zdHJlYW0sIGdw
cik7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAg
ICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgorICAg
IGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CisgICAg
Y2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CisgICAg
Y2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOiB7CisgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZl
RXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAgICAgcmV0dXJu
IGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIElu
dmFsaWRHUFJSZWc7CisgICAgfQorfQorCiBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVEb3VibGUoRWRnZSBlZGdlKQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
QEAgLTg5Miw4ICsxMTY5LDggQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
RG91YgogI2VuZGlmCiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUo
ZWRnZSk7CiAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKLSAgICBBU1NF
UlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+
U3BlY051bWJlcikpOwotICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjTnVtYmVy
KTsKKyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwgISh2YWx1
ZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpKTsKKyAgICBtX2ludGVycHJldGVyLmZpbHRlcih2
YWx1ZSwgU3BlY0Z1bGxOdW1iZXIpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9
IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCkBA
IC05NDUsNiArMTIyMiwyNCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVE
b3ViCiAgICAgICAgICAgICB1bmxvY2soZ3ByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAg
ICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFp
bihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9zdHJlYW0sIGdwcik7CisgICAgICAg
ICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgICAg
IEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIs
IHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAgICAgICAgbV9qaXQu
bG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Cisg
ICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OCgqbV9zdHJlYW0sIGdwcik7CisgICAgICAg
ICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwpAQCAtOTc4
LDcgKzEyNzMsNyBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAK
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoNjQoTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKTsKIAotICAgICAgICBpZiAodHlwZSAmIH5TcGVjTnVtYmVyKQorICAgICAg
ICBpZiAodHlwZSAmIH5TcGVjRnVsbE51bWJlcikKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoanNWYWx1ZUdwciksIGVkZ2UsIG1faml0LmJyYW5jaFRl
c3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gRmlyc3QsIGlmIHdlIGdldCBoZXJlIHdlIGhh
dmUgYSBkb3VibGUgZW5jb2RlZCBhcyBhIEpTVmFsdWUKQEAgLTEwMDksNiArMTMwNCwyOCBAQCBG
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIG1fZ3Bycy51
bmxvY2soZ3ByKTsKICAgICAgICAgcmV0dXJuIGZwcjsKICAgICB9CisgICAgICAgIAorICAgIGNh
c2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgp
OworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2so
Z3ByKTsKKyAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOworICAgICAgICBtX2ppdC5t
b3ZlKGdwciwgdGVtcCk7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiks
IHRlbXApOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZSh0ZW1wLCBmcHIpOwor
ICAgICAgICB1bmxvY2sodGVtcCk7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKKyAgICAg
ICAgcmV0dXJuIGZwcjsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmlj
dEludDQ4OiB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOworICAgICAgICBH
UFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAg
ICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUoZ3ByLCBmcHIpOworICAgICAgICBtX2dwcnMu
dW5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBmcHI7CisgICAgfQogCiAgICAgLy8gVW5ib3gg
dGhlIGRvdWJsZQogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7CkBAIC0xMTExLDcgKzE0
MjgsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNh
c2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOiB7Cisg
ICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAg
ICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxh
dGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgIHJl
dHVybiBhbGxvY2F0ZSgpOwogICAgIH0KQEAgLTExOTQsNyArMTUxMyw5IEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJs
ZToKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxs
OgotICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6IHsKKyAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4
OiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQpAQCAt
MTUwMyw2ICsxODI0LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMkNvbXBh
cmUKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jdXJyZW50Tm9kZSwgRGF0YUZv
cm1hdEpTQm9vbGVhbik7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQ0OENv
bXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZGl0aW9uKQoreworICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDIo
dGhpcywgbm9kZS0+Y2hpbGQyKCksIG9wMSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCBSZXVzZSwgb3AxLCBvcDIpOworICAgIAorICAgIG1faml0LmNvbXBhcmU2NChjb25kaXRpb24s
IG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgIAorICAgIC8vIElmIHdl
IGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisgICAgbV9qaXQu
b3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAganNWYWx1
ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4p
OworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJbnQ0OEJyYW5jaChO
b2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRp
dGlvbiBjb25kaXRpb24pCit7CisgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT50
YWtlbkJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5ub3RU
YWtlbkJsb2NrKCk7CisKKyAgICAvLyBUaGUgYnJhbmNoIGluc3RydWN0aW9uIHdpbGwgYnJhbmNo
IHRvIHRoZSB0YWtlbiBibG9jay4KKyAgICAvLyBJZiB0YWtlbiBpcyBuZXh0LCBzd2l0Y2ggdGFr
ZW4gd2l0aCBub3RUYWtlbiAmIGludmVydCB0aGUgYnJhbmNoIGNvbmRpdGlvbiBzbyB3ZSBjYW4g
ZmFsbCB0aHJvdWdoLgorICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAgICAgICBj
b25kaXRpb24gPSBKSVRDb21waWxlcjo6aW52ZXJ0KGNvbmRpdGlvbik7CisgICAgICAgIEJhc2lj
QmxvY2sqIHRtcCA9IHRha2VuOworICAgICAgICB0YWtlbiA9IG5vdFRha2VuOworICAgICAgICBu
b3RUYWtlbiA9IHRtcDsKKyAgICB9CisgICAgCisgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlV2hpY2hldmVy
SW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDEoKSwgb3AxKTsKKyAgICAKKyAgICBi
cmFuY2g2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCB0YWtlbik7CisgICAganVt
cChub3RUYWtlbik7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVDb21w
YXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0aW9u
KQogewogICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKQEAgLTE5MDYsNiArMjI2MSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OiB7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKG5vZGUtPmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lz
dGVyKCk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKHJlc3VsdC5ncHIoKSwgdmlydHVhbFJl
Z2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICAgICAgZ2VuZXJhdGlvbkluZm9Gcm9tVmly
dHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlcikuaW5pdEludDQ4KG5vZGUsIG5vZGUtPnJlZkNv
dW50KCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKG5vZGUtPmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMTk4MSw2ICsyMzQ2LDE0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6
IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KHZhbHVlLmdwcigpLCBKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcihub2RlLT5sb2NhbCgpKSk7CisgICAgICAgICAgICBub1Jlc3VsdChu
b2RlKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291
cmNlKEludDQ4SW5KU1N0YWNrKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6IHsKICAgICAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
R1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwpAQCAtMjEwNCw2ICsyNDc3LDIyIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZTogeworICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFuZCk7CisgICAgICAgIG1faml0Lm1vdmUob3BlcmFu
ZC5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50
NDhUb0RvdWJsZTogeworICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9w
ZXJhbmQpOworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9wZXJhbmQuZnByKCksIHJlc3VsdC5m
cHIoKSk7CisgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBB
cml0aEFkZDoKICAgICAgICAgY29tcGlsZUFkZChub2RlKTsKQEAgLTI4ODksNyArMzI3OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEZQ
UlJlZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigpOwogCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVD
SygKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwgU3BlY1Jl
YWxOdW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hpbGQyKCks
IFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUo
TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlRlBSLCB2YWx1
ZUZQUikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0zMTA1LDcgKzM0OTQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBvcDEudXNl
KCk7CiAgICAgICAgIAotICAgICAgICBpZiAoIShtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLm1fdHlwZSAmIH4oU3BlY051bWJlciB8IFNwZWNCb29sZWFuKSkpCisgICAgICAgIGlmICgh
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjRnVsbE51bWJl
ciB8IFNwZWNCb29sZWFuKSkpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0
R1BSKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBh
bHJlYWR5UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CkBAIC0zMjAyLDcgKzM1OTEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCB1c2UpOwogICAg
ICAgICAgICAgICAgICAgICBGUFJSZWcgb3BGUFIgPSBvcGVyYW5kLmZwcigpOwogICAgICAgICAg
ICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKCksIHVzZSwgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncygpLCB1c2UsIFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaERvdWJsZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgb3BGUFIsIG9wRlBSKSk7
CiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKG9wRlBSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoZG91YmxlKSAqIG9wZXJhbmRJZHgpKTsK
QEAgLTMyNjcsNyArMzY1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgICAgICBGUFJSZWcgb3BGUFIgPSBvcGVyYW5kLmZwcigpOwogICAg
ICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAg
ICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
KSwgdXNlLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
KSwgdXNlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaERvdWJsZSgKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEb3Vi
bGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBvcEZQUiwgb3BGUFIpKTsKICAgICAgICAgICAgICAgICBt
X2ppdC5ib3hEb3VibGUob3BGUFIsIHNjcmF0Y2hHUFIpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1NTgyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDkgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVj
dWxhdGl2ZUpJVDo6cwogICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZTMyUGF5bG9hZDsK
ICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdENlbGwgfHwgcmVn
aXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0b3JhZ2UpCiAgICAgICAgICAgICBzcGlsbEFjdGlv
biA9IFN0b3JlUHRyOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJG
b3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRT
dHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZTY0OworICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1h
dEpTKTsKICAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmU2NDsKICAgICAgICAgfQpAQCAt
Mzg2LDYgKzM4OCw0MCBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpz
CiAgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RvcmFnZSkgewog
ICAgICAgICBBU1NFUlQoaW5mby5ncHIoKSA9PSBzb3VyY2UpOwogICAgICAgICBmaWxsQWN0aW9u
ID0gTG9hZFB0cjsKKyAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRJ
bnQ0OCkgeworICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIGZp
bGxBY3Rpb24gPSBTZXRJbnQ0OENvbnN0YW50OworICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIo
aW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpT
KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRDb252ZXJ0VG9JbnQ0ODsK
KyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQ0OCkK
KyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8u
c3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgICAgICBmaWxs
QWN0aW9uID0gTG9hZDY0U2hpZnRMZWZ0MTY7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2Fk
NjQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4g
QW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgorICAgICAgICAg
ICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRv
dWJsZSAodG8tZG91YmxlCisgICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2Vw
YXJhdGUgbm9kZSkuCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3Ry
aWN0SW50NDgpIHsKKyAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpCisgICAgICAgICAg
ICBmaWxsQWN0aW9uID0gU2V0U3RyaWN0SW50NDhDb25zdGFudDsKKyAgICAgICAgZWxzZSBpZiAo
aXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERh
dGFGb3JtYXRKUykKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2FkU2lnbkV4
dGVuZDsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJ
bnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlmdFJpZ2h0MTY7CisgICAg
ICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgp
CisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIGlmIChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCisgICAgICAgICAgICBmaWxsQWN0aW9u
ID0gTG9hZDY0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBo
YXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFuIGludDMyIHdpbGwgbmV2ZXIKKyAg
ICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkg
b3IgYSBkb3VibGUgKHRvLWRvdWJsZQorICAgICAgICAgICAgLy8gY29udmVyc2lvbnMgaW52b2x2
ZSBhIHNlcGFyYXRlIG5vZGUpLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChyZWdpc3RlckZv
cm1hdCAmIERhdGFGb3JtYXRKUyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTM5Myw3ICs0Mjks
NiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgIGlm
IChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICBpZiAodmFsdWVPZkpTQ29uc3Rh
bnQobm9kZSkuaXNDZWxsKCkpCiAgICAgICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldFRydXN0
ZWRKU0NvbnN0YW50OwotICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZpbGxBY3Rp
b24gPSBTZXRKU0NvbnN0YW50OwogICAgICAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0SW50MzIpIHsKICAgICAgICAgICAgIEFTU0VSVChyZWdpc3RlckZvcm1h
dCA9PSBEYXRhRm9ybWF0SlNJbnQzMik7CkBAIC01MTIsNiArNTQ3LDEyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICBjYXNlIFNldEludDMyQ29uc3RhbnQ6
CiAgICAgICAgIG1faml0Lm1vdmUoSW1tMzIodmFsdWVPZkludDMyQ29uc3RhbnQocGxhbi5ub2Rl
KCkpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2V0SW50NDhDb25z
dGFudDoKKyAgICAgICAgbV9qaXQubW92ZShJbW02NCh2YWx1ZU9mSlNDb25zdGFudChwbGFuLm5v
ZGUoKSkuYXNNYWNoaW5lSW50KCkgPDwgMTYpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTZXRTdHJpY3RJbnQ0OENvbnN0YW50OgorICAgICAgICBtX2ppdC5tb3ZlKElt
bTY0KHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS5hc01hY2hpbmVJbnQoKSksIHBsYW4u
Z3ByKCkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFNldEJvb2xlYW5Db25zdGFudDoKICAg
ICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIodmFsdWVPZkJvb2xlYW5Db25zdGFudChwbGFu
Lm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CkBAIC01MzMsNiArNTc0LDE1
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVn
aXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3RlciwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
TG9hZDMyUGF5bG9hZENvbnZlcnRUb0ludDQ4OgorICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5n
cHIoKSk7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHBsYW4uZ3ByKCksIHBsYW4u
Z3ByKCkpOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBwbGFuLmdw
cigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkMzJQYXlsb2FkU2lnbkV4dGVuZDoK
KyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4ubm9kZSgp
LT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5zaWduRXh0
ZW5kMzJUb1B0cihwbGFuLmdwcigpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBMb2FkRG91YmxlQm94RG91YmxlOgogICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIo
KSk7CiAgICAgICAgIG1faml0LnN1YjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwg
cGxhbi5ncHIoKSk7CkBAIC01NzQsNiArNjI0LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNp
bGVudEZpbGwoY29uc3QgU2kKICAgICBjYXNlIExvYWQ2NDoKICAgICAgICAgbV9qaXQubG9hZDY0
KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSks
IHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIExvYWQ2NFNoaWZ0UmlnaHQx
NjoKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9k
ZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5yc2hp
ZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMb2FkNjRTaGlmdExlZnQxNjoKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkp
OworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBwbGFuLmdwcigpKTsK
KyAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIExvYWREb3VibGU6CiAgICAgICAgIG1f
aml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1
YWxSZWdpc3RlcigpKSwgcGxhbi5mcHIoKSk7CkBAIC0xNDE2LDYgKzE0NzQsMTAgQEAgYm9vbCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbgogCiAgICAgICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50
MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkp
CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ0OEJyYW5jaChub2RlLCBicmFuY2hOb2Rl
LCBjb25kaXRpb24pOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGVsc2UgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBl
ZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAg
ICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ29tcGFyZUVxKSB7CkBAIC0xNTA3LDYgKzE1
NjksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5saW5lU3RhcnQoCiAgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZh
bHVlU291cmNlKEludDMySW5KU1N0YWNrKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0g
VmFsdWVTb3VyY2UoSW50NDhJbkpTU3RhY2spOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9
IFZhbHVlU291cmNlKENlbGxJbkpTU3RhY2spOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTg3Myw3ICsxOTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5
VgogICAgIEZQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmZwcigpOwogICAgIAogICAgIERGR19UWVBF
X0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncygpLCBjaGlsZDMsIFNwZWNSZWFsTnVtYmVyLAor
ICAgICAgICBKU1ZhbHVlUmVncygpLCBjaGlsZDMsIFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAg
ICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlUmVnLCB2YWx1ZVJlZykpOwogICAgIApAQCAtMjE0
OSw2ICsyMjE0LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIK
ICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBSZXVzZSwgb3AxKTsKKyAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsK
KyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgbV9qaXQu
emVyb0V4dGVuZDMyVG9QdHIob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBpbnQzMlJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUsIERhdGFGb3JtYXRJbnQzMik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKICAgICBjYXNlIE51bWJlclVzZToK
ICAgICBjYXNlIE5vdENlbGxVc2U6IHsKQEAgLTIxODcsNyArMjI2NCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsKICAgICAgICAgICAgICAgICBERkdfVFlQ
RV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hp
bGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGdwciks
IG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Olplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CiAgICAgICAgICAg
ICB9IGVsc2UgewpAQCAtMjI0Myw3ICsyMzIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlVG9JbnQzMgogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsKICAgICAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCi0gICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRH
UFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVs
bE51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHRhZ0dQ
UiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93
ZXN0VGFnKSkpOwpAQCAtMjM4OSwxNSArMjQ2NiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW50MzJUb0RvdWJsCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9q
aXQuYnJhbmNoNjQoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMUdQ
UiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICAKLSAgICBpZiAobmVlZHNU
eXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIpKSB7CisgICAgaWYgKG5lZWRzVHlw
ZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlcikpIHsKICAgICAgICAgaWYgKG5v
ZGUtPmZsYWdzKCkgJiBOb2RlRXhpdHNGb3J3YXJkKSB7CiAgICAgICAgICAgICBmb3J3YXJkVHlw
ZUNoZWNrKAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjTnVtYmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5v
ZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKSwKICAgICAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5OjppbkdQUihvcDFH
UFIsIERhdGFGb3JtYXRKUykpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYmFja3dh
cmRUeXBlQ2hlY2soCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+
Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxR1BS
KSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAgIG1faml0
LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI0MjAsMTUgKzI0OTcs
MTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyVG9Eb3VibAogICAgIEpJVENv
bXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFn
KSk7CiAgICAgCi0gICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjTnVt
YmVyKSkgeworICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxO
dW1iZXIpKSB7CiAgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUV4aXRzRm9yd2FyZCkg
ewogICAgICAgICAgICAgZm9yd2FyZFR5cGVDaGVjaygKLSAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJl
ciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIp
LCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCiAgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSksCiAgICAgICAgICAgICAgICAgVmFsdWVSZWNvdmVy
eTo6aW5QYWlyKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUikpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgYmFja3dhcmRUeXBlQ2hlY2soCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIs
CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwg
bm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1NDksNiAr
MjYyNiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkluCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCisgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZU1h
Y2hpbmVJbnQoKSkgeworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihyZXN1bHRSZWcs
IHJlc3VsdFJlZyk7CisgICAgICAgIHN0cmljdEludDQ4UmVzdWx0KHJlc3VsdFJlZywgbm9kZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAgRlBSVGVtcG9yYXJ5IGZyZXN1bHQo
dGhpcyk7CiAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUocmVzdWx0UmVnLCBmcmVzdWx0
LmZwcigpKTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBwb3NpdGl2ZSA9IG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIHJlc3VsdFJlZywgVHJ1c3RlZElt
bTMyKDApKTsKQEAgLTI2MDIsNiArMjY4NSwyOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0QnlWYWxGb3JJCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAgICAgU3BlY3VsYXRl
U3RyaWN0SW50NDhPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2UpOworICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFJl
ZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlT3AuZ3ByKCks
IHNjcmF0Y2hSZWcpOworICAgICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChlbGVtZW50U2l6ZSh0eXBlKSA9PSAxKTsKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpbkJvdW5kcyA9IG1faml0LmJyYW5jaDY0KAorICAgICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBzY3JhdGNoUmVnLCBK
SVRDb21waWxlcjo6VHJ1c3RlZEltbTY0KDB4ZmYpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCB0b29CaWcgPSBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuLCBzY3JhdGNoUmVnLCBKSVRDb21waWxlcjo6
VHJ1c3RlZEltbTY0KDB4ZmYpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW0zMigwKSwgc2NyYXRjaFJlZyk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgY2xhbXBlZCA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICB0b29CaWcubGluaygm
bV9qaXQpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJ
bW0zMigyNTUpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgICAgICAgICBjbGFtcGVkLmxpbmsoJm1f
aml0KTsKKyAgICAgICAgICAgICAgICBpbkJvdW5kcy5saW5rKCZtX2ppdCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB2YWx1ZS5hZG9wdChzY3JhdGNoKTsKKyAgICAgICAgICAgIHZhbHVl
R1BSID0gc2NyYXRjaFJlZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgICAgIGlmIChpc0NsYW1w
ZWQodHlwZSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudFNpemUodHlwZSkgPT0g
MSk7CkBAIC0yODcwLDcgKzI5NzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWRk
KE5vZGUqIG5vCiAgICAgICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisgICAgICAg
IAogICAgICAgICBpZiAoaXNOdW1iZXJDb25zdGFudChub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7
CiAgICAgICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGludDMyX3QgaW1tMiA9IHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5v
ZGUtPmNoaWxkMigpLm5vZGUoKSk7CkBAIC0yOTE1LDYgKzMwMjEsMzMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFkZChOb2RlKiBubwogICAgICAgICBpbnQzMlJlc3VsdChncHJSZXN1
bHQsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAgICAKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAvLyBXaWxsIHdlIG5l
ZWQgYW4gb3ZlcmZsb3cgY2hlY2s/IElmIHdlIGNhbiBwcm92ZSB0aGF0IG5laXRoZXIgaW5wdXQg
Y2FuIGJlCisgICAgICAgIC8vIEludDQ4IHRoZW4gdGhlIG92ZXJmbG93IGNoZWNrIHdpbGwgbm90
IGJlIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkKKyAgICAgICAgICAgICYmICFtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAgICAgICAg
IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0aGlzLCBu
b2RlLT5jaGlsZDIoKSwgb3AxKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIG9wMSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LmFkZDY0KG9wMi5ncHIoKSwgcmVzdWx0Lmdwcigp
KTsKKyAgICAgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgb3AxLmZvcm1h
dCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
U3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisgICAgICAgIG1f
aml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAg
ICAgICAgIG1faml0LmJyYW5jaEFkZDY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AyLmdw
cigpLCByZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQog
ICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTMwNjAsNiArMzE5MywzMyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9kCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBNYWNoaW5lSW50VXNl
OiB7CisgICAgICAgIC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxvdyBjaGVjaz8gSWYgd2UgY2Fu
IHByb3ZlIHRoYXQgbmVpdGhlciBpbnB1dCBjYW4gYmUKKyAgICAgICAgLy8gSW50NDggdGhlbiB0
aGUgb3ZlcmZsb3cgY2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5LgorICAgICAgICBpZiAoIW1f
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KQorICAg
ICAgICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuY291bGRCZVR5cGUo
U3BlY0ludDQ4KSkgeworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5k
IG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2
ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBvcDEpOworICAgICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKKyAgICAgICAgICAgIG1f
aml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgbV9qaXQuc3Vi
NjQob3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgaW50NDhSZXN1bHQocmVz
dWx0LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMih0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIo
KSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92ZXJmbG93
LCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3ViNjQoTWFjcm9B
c3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOworICAgICAgICBp
bnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKICAgICBjYXNlIE51bWJlclVzZTogewogICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKQEAg
LTMwODgsNiArMzI0OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0
ZSgKIAogICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKIAorICAg
ICAgICAvLyBOb3RlOiB0aGVyZSBpcyBubyBub3Rpb24gb2YgYmVpbmcgbm90IHVzZWQgYXMgYSBu
dW1iZXIsIGJ1dCBzb21lb25lCisgICAgICAgIC8vIGNhcmluZyBhYm91dCBuZWdhdGl2ZSB6ZXJv
LgorICAgICAgICAKICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUt
PmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgbV9qaXQubmVnMzIocmVzdWx0Lmdwcigp
KTsKICAgICAgICAgZWxzZSB7CkBAIC0zMDk5LDYgKzMyNjIsNDIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAogICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAgICAgICAgIFNw
ZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgIEdQUlJl
ZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOworICAgICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7Cisg
ICAgICAgICAgICBtX2ppdC5uZWc2NChyZXN1bHRHUFIpOworICAgICAgICAgICAgaWYgKCFieXRl
Y29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkgeworICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgICAgIE5lZ2F0
aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJh
bmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgb3AxLmZvcm1hdCgp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3Bl
Y3VsYXRlSW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3By
KCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIG1f
aml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAor
ICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAg
IG1faml0LmJyYW5jaE5lZzY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgcmVzdWx0R1BSKSk7
CisgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhO
b2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAg
ICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0R1BSKSk7CisgICAg
ICAgIH0KKyAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICAKICAgICBjYXNl
IE51bWJlclVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CkBAIC0zMTY0LDYgKzMzNjMsNjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFyaXRoTXVsKE5vZAogICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCks
IG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0
KSAgIAorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAvLyBUaGlzIGlzIHN1cGVy
IGNsZXZlci4gV2Ugd2FudCB0byBkbyBhbiBpbnQ0OCBtdWx0aXBsaWNhdGlvbiBhbmQgY2hlY2sg
dGhlCisgICAgICAgIC8vIGludDQ4IG92ZXJmbG93IGJpdC4gVGhlcmUgaXMgbm8gZGlyZWN0IGhh
cmR3YXJlIHN1cHBvcnQgZm9yIHRoaXMsIGJ1dCB3ZSBkbworICAgICAgICAvLyBoYXZlIHRoZSBh
YmlsaXR5IHRvIGRvIGFuIGludDY0IG11bHRpcGxpY2F0aW9uIGFuZCBjaGVjayB0aGUgaW50NjQg
b3ZlcmZsb3cKKyAgICAgICAgLy8gYml0LiBXZSBsZXZlcmFnZSB0aGF0LiBDb25zaWRlciB0aGF0
IGEsIGIgYXJlIGludDQ4IG51bWJlcnMgaW5zaWRlIGludDY0CisgICAgICAgIC8vIHJlZ2lzdGVy
cywgd2l0aCB0aGUgaGlnaCAxNiBiaXRzIGJlaW5nIHNpZ24tZXh0ZW5kZWQuIFdlIGNhbiBkbzoK
KyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIChhICogKGIgPDwgMTYpKQorICAgICAgICAvLwor
ICAgICAgICAvLyBUaGlzIHdpbGwgZ2l2ZSB1cyBhIGxlZnQtc2hpZnRlZCBpbnQ0OCAodmFsdWUg
aXMgaW4gaGlnaCA0OCBiaXRzLCBsb3cgMTYKKyAgICAgICAgLy8gYml0cyBhcmUgemVybykgcGx1
cyB0aGUgaW50NDggb3ZlcmZsb3cgYml0LiBJLmUuIHdoZXRoZXIgdGhpcyA2NC1iaXQKKyAgICAg
ICAgLy8gbXVsdGlwbGljYXRpb24gb3ZlcmZsb3dzIGlzIGlkZW50aWNhbCB0byB3aGV0aGVyIHRo
ZSAnYSAqIGInIDQ4LWJpdAorICAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBvdmVyZmxvd3MuCisg
ICAgICAgIC8vCisgICAgICAgIC8vIEluIG91ciBub21lbmNsYXR1cmUsIHRoaXMgaXM6CisgICAg
ICAgIC8vCisgICAgICAgIC8vICAgICBzdHJpY3RJbnQ0OChhKSAqIGludDQ4KGIpID0+IGludDQ4
CisgICAgICAgIC8vCisgICAgICAgIC8vIFRoYXQgaXMgInN0cmljdEludDQ4IiBtZWFucyB1bnNo
aWZ0ZWQgYW5kICJpbnQ0OCIgbWVhbnMgbGVmdC1zaGlmdGVkIGJ5IDE2CisgICAgICAgIC8vIGJp
dHMuCisgICAgICAgIC8vCisgICAgICAgIC8vIFdlIGRvbid0IGNhcmUgd2hpY2ggb2Ygb3AxIG9y
IG9wMiBzZXJ2ZXMgYXMgdGhlIGxlZnQtc2hpZnRlZCBvcGVyYW5kLCBzbworICAgICAgICAvLyB3
ZSBqdXN0IGRvIHdoYXRldmVyIGlzIG1vcmUgY29udmVuaWVudCBmb3Igb3AxIGFuZCBoYXZlIG9w
MiBkbyB0aGUKKyAgICAgICAgLy8gb3Bwb3NpdGUuIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGRvIGF0
IG1vc3Qgb25lIHNoaWZ0LgorCisgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFu
ZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJ
bnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBPcHBvc2l0ZVNoaWZ0LCBvcDEp
OworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAKKyAgICAgICAg
R1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIG9wMkdQUiA9IG9wMi5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
CisgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwK
KyAgICAgICAgICAgIG1faml0LmJyYW5jaE11bDY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywg
b3AyR1BSLCByZXN1bHRHUFIpKTsKKyAgICAgICAgCisgICAgICAgIGlmICghYnl0ZWNvZGVDYW5J
Z25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJlc3VsdE5vblplcm8gPSBtX2ppdC5icmFuY2hUZXN0NjQo
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVy
bywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMUdQUiwgVHJ1c3RlZEltbTY0KDApKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVybywgSlNW
YWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2Vt
Ymxlcjo6TGVzc1RoYW4sIG9wMkdQUiwgVHJ1c3RlZEltbTY0KDApKSk7CisgICAgICAgICAgICBy
ZXN1bHROb25aZXJvLmxpbmsoJm1faml0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
aW50NDhSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICAKICAgICBjYXNlIE51bWJlclVzZTogewog
ICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CkBAIC0zNTg3LDcgKzM4NDIsMTQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2Rl
KiBub2RlLAogICAgICAgICBjb21waWxlSW50MzJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KKyAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAgICAgICAg
Y29tcGlsZUludDQ4Q29tcGFyZShub2RlLCBjb25kaXRpb24pOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgCiAgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVEb3VibGVDb21w
YXJlKG5vZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3
MzcsNiArMzk5OSwyMyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9k
CiAgICAgICAgIGNvbXBpbGVJbnQzMkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICAgCisjaWYgVVNFKEpTVkFMVUU2
NCkgICAKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgdW5zaWduZWQgYnJhbmNo
SW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJyYW5j
aEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9k
ZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21waWxl
UGVlcEhvbGVJbnQ0OEJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHVzZShu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5jaEluZGV4
SW5CbG9jazsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUludDQ4Q29tcGFy
ZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAogICAgIGNhc2UgTnVtYmVy
VXNlOiB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBI
b2xlQnJhbmNoKCk7CkBAIC00NDk0LDcgKzQ3NzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVJbnQzMihFZGdlCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJl
cihFZGdlIGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTnVtYmVy
KSkKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsTnVtYmVyKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIChTcGVjdWxhdGVEb3VibGVPcGVyYW5kKHRoaXMsIGVkZ2Up
KS5mcHIoKTsKQEAgLTQ1MDIsMTMgKzQ3ODEsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlTnVtYmVyKEVkZwogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVSZWFsTnVt
YmVyKEVkZ2UgZWRnZSkKIHsKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNSZWFs
TnVtYmVyKSkKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsUmVhbE51bWJl
cikpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9w
ZXJhbmQodGhpcywgZWRnZSk7CiAgICAgRlBSUmVnIGZwciA9IG9wZXJhbmQuZnByKCk7CiAgICAg
REZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdzKCksIGVkZ2UsIFNwZWNSZWFsTnVt
YmVyLAorICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAg
ICAgICAgIG1faml0LmJyYW5jaERvdWJsZSgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
b3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBmcHIsIGZwcikpOwogfQpAQCAtNDc3MCw3ICs1MDQ5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgICAgICBB
U1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNJbnQzMikpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNr
KGVkZ2UsIFNwZWNOdW1iZXIpKTsKKyAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdl
LCBTcGVjRnVsbE51bWJlcikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEtub3duQ2VsbFVz
ZToKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2
aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOSArMTU5LDcgQEAgcHVibGljOgogICAgIC8v
IGFuZCBpdHMgbWFjaGluZSByZWdpc3RlcnMgbWF5IGJlIHJldXNlZC4KICAgICBib29sIGNhblJl
dXNlKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
Z2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZv
JiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rl
cik7Ci0gICAgICAgIHJldHVybiBpbmZvLmNhblJldXNlKCk7CisgICAgICAgIHJldHVybiBnZW5l
cmF0aW9uSW5mbyhub2RlKS5jYW5SZXVzZSgpOwogICAgIH0KICAgICBib29sIGNhblJldXNlKEVk
Z2Ugbm9kZVVzZSkKICAgICB7CkBAIC0yMzcsMTUgKzIzNSwxMSBAQCBwdWJsaWM6CiAgICAgLy8g
YXZvaWQgc3BpbGxpbmcgdmFsdWVzIHdlIHdpbGwgbmVlZCBpbW1lZGlhdGVseSkuCiAgICAgYm9v
bCBpc0ZpbGxlZChOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZp
cnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0
aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFs
UmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFG
b3JtYXROb25lOworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8obm9kZSkucmVnaXN0ZXJG
b3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9uZTsKICAgICB9CiAgICAgYm9vbCBpc0ZpbGxlZERvdWJs
ZShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdp
c3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYg
aW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIp
OwotICAgICAgICByZXR1cm4gaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3Vi
bGU7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5yZWdpc3RlckZvcm1hdCgp
ID09IERhdGFGb3JtYXREb3VibGU7CiAgICAgfQogCiAgICAgLy8gQ2FsbGVkIG9uIGFuIG9wZXJh
bmQgb25jZSBpdCBoYXMgYmVlbiBjb25zdW1lZCBieSBhIHBhcmVudCBub2RlLgpAQCAtMjUzLDgg
KzI0Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghbm9kZS0+aGFzUmVzdWx0KCkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVn
aXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8m
IGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVy
KTsKKyAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mbyhub2RlKTsK
IAogICAgICAgICAvLyB1c2UoKSByZXR1cm5zIHRydWUgd2hlbiB0aGUgdmFsdWUgYmVjb21lcyBk
ZWFkLCBhbmQgYW55CiAgICAgICAgIC8vIGFzc29jaWF0ZWQgcmVzb3VyY2VzIG1heSBiZSBmcmVl
ZC4KQEAgLTMzMyw2ICszMjYsNyBAQCBwdWJsaWM6CiAgICAgLy8gbWFjaGluZSByZWdpc3RlcnMs
IGltcGxpY2l0bHkgZ2VuZXJhdGluZyBzcGVjdWxhdGlvbiBjaGVja3MgYXMgbmVlZGVkLgogICAg
IEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50MzIoRWRnZSwgRGF0YUZvcm1hdCYgcmV0dXJuRm9ybWF0
KTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludDMyU3RyaWN0KEVkZ2UpOworICAgIEdQUlJl
ZyBmaWxsU3BlY3VsYXRlSW50NDgoRWRnZSwgRGF0YUZvcm1hdCBkZXNpcmVkRm9ybWF0KTsKICAg
ICBGUFJSZWcgZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlKTsKICAgICBHUFJSZWcgZmlsbFNwZWN1
bGF0ZUNlbGwoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVCb29sZWFuKEVkZ2UpOwpA
QCAtNDY4LDYgKzQ2Miw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBib3hEb3Vi
bGUoZnByLCBhbGxvY2F0ZSgpKTsKICAgICB9CisgICAgCisgICAgdm9pZCBib3hJbnQ0OChHUFJS
ZWcgc291cmNlR1BSLCBHUFJSZWcgdGFyZ2V0R1BSLCBEYXRhRm9ybWF0IGZvcm1hdCk7CiAjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIHZvaWQgYm94RG91YmxlKEZQUlJlZyBmcHIsIEdQUlJl
ZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2FkR1BSKQogICAgIHsKQEAgLTU1OSwxMSArNTU1LDExIEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBib29sIGlzS25vd25JbnRlZ2Vy
KE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH5T
cGVjSW50MzIpOyB9Ci0gICAgYm9vbCBpc0tub3duQ2VsbChOb2RlKiBub2RlKSB7IHJldHVybiAh
KG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiB+U3BlY0NlbGwpOyB9CisgICAgYm9vbCBp
c0tub3duSW50ZWdlcihOb2RlKiBub2RlKSB7IHJldHVybiAhbV9zdGF0ZS5mb3JOb2RlKG5vZGUp
LmlzVHlwZShTcGVjSW50MzIpOyB9CisgICAgYm9vbCBpc0tub3duQ2VsbChOb2RlKiBub2RlKSB7
IHJldHVybiAhbV9zdGF0ZS5mb3JOb2RlKG5vZGUpLmlzVHlwZShTcGVjQ2VsbCk7IH0KICAgICAK
ICAgICBib29sIGlzS25vd25Ob3RJbnRlZ2VyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0
ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNJbnQzMik7IH0KLSAgICBib29sIGlzS25vd25O
b3ROdW1iZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90
eXBlICYgU3BlY051bWJlcik7IH0KKyAgICBib29sIGlzS25vd25Ob3ROdW1iZXIoTm9kZSogbm9k
ZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0Z1bGxOdW1i
ZXIpOyB9CiAgICAgYm9vbCBpc0tub3duTm90Q2VsbChOb2RlKiBub2RlKSB7IHJldHVybiAhKG1f
c3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBTcGVjQ2VsbCk7IH0KICAgICAKICAgICAvLyBD
aGVja3MvYWNjZXNzb3JzIGZvciBjb25zdGFudCB2YWx1ZXMuCkBAIC04MTYsNiArODEyLDI1IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIGludDMyUmVzdWx0KHJlZywgbm9kZSwgRGF0YUZvcm1h
dEludDMyLCBtb2RlKTsKICAgICB9CisgICAgdm9pZCBpbnQ0OFJlc3VsdChHUFJSZWcgcmVnLCBO
b2RlKiBub2RlLCBEYXRhRm9ybWF0IGZvcm1hdCwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxs
VXNlQ2hpbGRyZW4pCisgICAgeworICAgICAgICBpZiAobW9kZSA9PSBDYWxsVXNlQ2hpbGRyZW4p
CisgICAgICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7CisKKyAgICAgICAgbV9ncHJzLnJldGFpbihyZWcsIHZpcnR1YWxSZWdp
c3RlciwgU3BpbGxPcmRlckpTKTsKKyAgICAgICAgaW5mby5pbml0SW50NDgobm9kZSwgbm9kZS0+
cmVmQ291bnQoKSwgcmVnLCBmb3JtYXQpOworICAgIH0KKyAgICB2b2lkIGludDQ4UmVzdWx0KEdQ
UlJlZyByZWcsIE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxk
cmVuKQorICAgIHsKKyAgICAgICAgaW50NDhSZXN1bHQocmVnLCBub2RlLCBEYXRhRm9ybWF0SW50
NDgsIG1vZGUpOworICAgIH0KKyAgICB2b2lkIHN0cmljdEludDQ4UmVzdWx0KEdQUlJlZyByZWcs
IE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQorICAg
IHsKKyAgICAgICAgaW50NDhSZXN1bHQocmVnLCBub2RlLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgs
IG1vZGUpOworICAgIH0KICAgICB2b2lkIG5vUmVzdWx0KE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVu
TW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQogICAgIHsKICAgICAgICAgaWYgKG1vZGUgPT0g
VXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KQpAQCAtOTAwLDcgKzkxNSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGluaXRDb25zdGFudEluZm8oTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVChpc0ludDMyQ29uc3RhbnQobm9kZSkgfHwgaXNOdW1iZXJDb25zdGFudChub2RlKSB8fCBp
c0pTQ29uc3RhbnQobm9kZSkpOwotICAgICAgICBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVn
aXN0ZXIobm9kZS0+dmlydHVhbFJlZ2lzdGVyKCkpLmluaXRDb25zdGFudChub2RlLCBub2RlLT5y
ZWZDb3VudCgpKTsKKyAgICAgICAgZ2VuZXJhdGlvbkluZm8obm9kZSkuaW5pdENvbnN0YW50KG5v
ZGUsIG5vZGUtPnJlZkNvdW50KCkpOwogICAgIH0KICAgICAKICAgICAvLyBUaGVzZSBtZXRob2Rz
IGFkZCBjYWxscyB0byBDKysgaGVscGVyIGZ1bmN0aW9ucy4KQEAgLTE4ODksMTUgKzE5MDQsMjIg
QEAgcHVibGljOgogICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KG5vZGUpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rl
ciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5m
byA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwot
ICAgICAgICAKLSAgICAgICAgcmV0dXJuIGluZm8uaXNKU0ludDMyKCk7CisgICAgICAgIHJldHVy
biBnZW5lcmF0aW9uSW5mbyhub2RlKS5pc0pTSW50MzIoKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICFnZW5lcmF0aW9uSW5mbyhub2RlKS5pc0ludDQ4KCk7CisgICAgfQorICAgIGJvb2wgYmV0dGVy
VXNlU3RyaWN0SW50NDgoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJldHRlclVz
ZVN0cmljdEludDQ4KGVkZ2Uubm9kZSgpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBjb21wYXJl
KE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiwgTWFjcm9Bc3NlbWJs
ZXI6OkRvdWJsZUNvbmRpdGlvbiwgU19ERkdPcGVyYXRpb25fRUpKKTsKICAgICBib29sIGNvbXBp
bGVQZWVwSG9sZUJyYW5jaChOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24sIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfREZHT3BlcmF0aW9uX0VKSik7
CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNo
Tm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworICAgIHZvaWQgY29tcGls
ZVBlZXBIb2xlSW50NDhCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVy
OjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUJvb2xlYW5C
cmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZURvdWJsZUJyYW5jaChOb2RlKiwgTm9k
ZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OkRvdWJsZUNvbmRpdGlvbik7CiAgICAgdm9pZCBj
b21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CkBA
IC0xOTQ1LDYgKzE5NjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJh
eShOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNy
b0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisgICAgdm9pZCBjb21waWxlSW50NDhD
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAg
dm9pZCBjb21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlv
bmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVEb3VibGVDb21wYXJlKE5vZGUqLCBNYWNy
b0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICAKQEAgLTIxOTUsNiArMjIxOCwxNiBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1tvcGVyYW5k
VG9Mb2NhbCh2aXJ0dWFsUmVnaXN0ZXIpXTsKICAgICB9CisgICAgCisgICAgR2VuZXJhdGlvbklu
Zm8mIGdlbmVyYXRpb25JbmZvKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gZ2Vu
ZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpKTsK
KyAgICB9CisgICAgCisgICAgR2VuZXJhdGlvbkluZm8mIGdlbmVyYXRpb25JbmZvKEVkZ2UgZWRn
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhlZGdlLm5vZGUoKSk7Cisg
ICAgfQogCiAgICAgLy8gVGhlIEpJVCwgd2hpbGUgYWxzbyBwcm92aWRlcyBNYWNyb0Fzc2VtYmxl
ciBmdW5jdGlvbmFsaXR5LgogICAgIEpJVENvbXBpbGVyJiBtX2ppdDsKQEAgLTI2NzYsNiArMjcw
OSwxNzkgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCisvLyBH
aXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NDggKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYs
IGxvdyBiaXRzIHplcm8pLgorY2xhc3MgU3BlY3VsYXRlSW50NDhPcGVyYW5kIHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwg
RWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5k
U3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdl
KQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAg
ICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8
IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0Zp
bGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIH5TcGVj
dWxhdGVJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlk
ICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlk
KTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAgIEdQUlJlZyBn
cHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcp
CisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlSW50NDgo
ZWRnZSgpLCBEYXRhRm9ybWF0SW50NDgpOworICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7
CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1faml0LT51c2Uo
bm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZlSklUKiBtX2pp
dDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7Cit9OworCisv
LyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NDggKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxv
dyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQpLgorY2xhc3MgU3BlY3Vs
YXRlU3RyaWN0SW50NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVT
dHJpY3RJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5k
U3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAg
ICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3By
T3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1v
ZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09
IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAg
ICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIH5TcGVjdWxhdGVTdHJpY3RJbnQ0OE9w
ZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRH
UFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9Cisg
ICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VkZ2U7
CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAgIEdQUlJlZyBncHIoKQorICAgIHsK
KyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlSW50NDgoZWRnZSgpLCBEYXRh
Rm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAg
fQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgp
KTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZlSklUKiBtX2ppdDsKKyAg
ICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7Cit9OworCitlbnVtIE9w
cG9zaXRlU2hpZnRUYWcgeyBPcHBvc2l0ZVNoaWZ0IH07CisKK2NsYXNzIFNwZWN1bGF0ZVdoaWNo
ZXZlckludDQ4T3BlcmFuZCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hl
dmVySW50NDhPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNw
ZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAg
ICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9y
SW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgICAgICAsIG1fc3RyaWN0KGppdC0+YmV0dGVyVXNl
U3RyaWN0SW50NDgoZWRnZSkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1v
ZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hp
bmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAg
ICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlcklu
dDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIGNvbnN0IFNwZWN1bGF0
ZVdoaWNoZXZlckludDQ4T3BlcmFuZCYgb3RoZXIsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9k
ZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisg
ICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgLCBtX3N0cmljdChvdGhlci5tX3N0cmljdCkKKyAgICB7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwg
ZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmls
bGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgZXhwbGlj
aXQgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVk
Z2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29uc3QgU3BlY3VsYXRlV2hpY2hldmVySW50NDhP
cGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3Bl
cmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2Uo
ZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgICAgICAs
IG1fc3RyaWN0KCFvdGhlci5tX3N0cmljdCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
bW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkg
PT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisg
ICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgflNwZWN1bGF0ZVdoaWNoZXZlcklu
dDQ4T3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52
YWxpZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOworICAg
IH0KKyAgICAKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZWRnZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVnIGdwcigpCisg
ICAgeworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykgeworICAg
ICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZUludDQ4KAorICAg
ICAgICAgICAgICAgIGVkZ2UoKSwgbV9zdHJpY3QgPyBEYXRhRm9ybWF0U3RyaWN0SW50NDggOiBE
YXRhRm9ybWF0SW50NDgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxp
ZDsKKyAgICB9CisgICAgCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVz
ZShub2RlKCkpOworICAgIH0KKyAgICAKKyAgICBEYXRhRm9ybWF0IGZvcm1hdCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9zdHJpY3QgPyBEYXRhRm9ybWF0U3RyaWN0SW50NDggOiBE
YXRhRm9ybWF0SW50NDg7CisgICAgfQorCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZlSklUKiBt
X2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CisgICAg
Ym9vbCBtX3N0cmljdDsKK307CisKIGNsYXNzIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgewogcHVi
bGljOgogICAgIGV4cGxpY2l0IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQq
IGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNP
cGVyYW5kU3BlY3VsYXRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNl
S2luZC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDkgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgS25vd25JbnQzMlVzZToK
ICAgICAgICAgb3V0LnByaW50KCJLbm93bkludDMyIik7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTWFjaGluZUludFVzZToKKyAgICAgICAgb3V0LnByaW50KCJNYWNoaW5lSW50Iik7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgUmVhbE51bWJlclVzZToKICAgICAgICAgb3V0LnByaW50KCJS
ZWFsTnVtYmVyIik7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdVc2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdVc2VLaW5kLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIGVudW0g
VXNlS2luZCB7CiAgICAgVW50eXBlZFVzZSwKICAgICBJbnQzMlVzZSwKICAgICBLbm93bkludDMy
VXNlLAorICAgIE1hY2hpbmVJbnRVc2UsCiAgICAgUmVhbE51bWJlclVzZSwKICAgICBOdW1iZXJV
c2UsCiAgICAgS25vd25OdW1iZXJVc2UsCkBAIC02NiwxMSArNjcsMTMgQEAgQUxXQVlTX0lOTElO
RSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRgogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgY2Fz
ZSBLbm93bkludDMyVXNlOgogICAgICAgICByZXR1cm4gU3BlY0ludDMyOworICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5lSW50OwogICAgIGNhc2UgUmVh
bE51bWJlclVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNSZWFsTnVtYmVyOworICAgICAgICByZXR1
cm4gU3BlY0Z1bGxSZWFsTnVtYmVyOwogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgS25v
d25OdW1iZXJVc2U6Ci0gICAgICAgIHJldHVybiBTcGVjTnVtYmVyOworICAgICAgICByZXR1cm4g
U3BlY0Z1bGxOdW1iZXI7CiAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICByZXR1cm4gU3Bl
Y0Jvb2xlYW47CiAgICAgY2FzZSBDZWxsVXNlOgpAQCAtMTI1LDYgKzEyOCw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAg
ICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKKyAgICBjYXNlIE1hY2hp
bmVJbnRVc2U6CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgIGNhc2UgTnVtYmVyVXNlOgog
ICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhbHVlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbHVlU291cmNlLmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDkgQEAgdm9pZCBWYWx1ZVNvdXJjZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogICAgIGNh
c2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgIG91dC5wcmludCgiSW50MzIiKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAgb3V0LnByaW50KCJJbnQ0
OCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAgIG91
dC5wcmludCgiQ2VsbCIpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsNyBAQCBlbnVtIFZhbHVlU291cmNlS2luZCB7CiAgICAgU291cmNlTm90U2V0LAogICAg
IFZhbHVlSW5KU1N0YWNrLAogICAgIEludDMySW5KU1N0YWNrLAorICAgIEludDQ4SW5KU1N0YWNr
LAogICAgIENlbGxJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkluSlNTdGFjaywKICAgICBEb3VibGVJ
bkpTU3RhY2ssCkBAIC01Niw2ICs1Nyw4IEBAIHN0YXRpYyBpbmxpbmUgVmFsdWVTb3VyY2VLaW5k
IGRhdGFGb3JtYXQKICAgICBzd2l0Y2ggKGRhdGFGb3JtYXQpIHsKICAgICBjYXNlIERhdGFGb3Jt
YXRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMySW5KU1N0YWNrOworICAgIGNhc2UgRGF0YUZv
cm1hdEludDQ4OgorICAgICAgICByZXR1cm4gSW50NDhJbkpTU3RhY2s7CiAgICAgY2FzZSBEYXRh
Rm9ybWF0RG91YmxlOgogICAgICAgICByZXR1cm4gRG91YmxlSW5KU1N0YWNrOwogICAgIGNhc2Ug
RGF0YUZvcm1hdEJvb2xlYW46CkBAIC03OSw2ICs4Miw4IEBAIHN0YXRpYyBpbmxpbmUgRGF0YUZv
cm1hdCB2YWx1ZVNvdXJjZUtpbmQKICAgICAgICAgcmV0dXJuIERhdGFGb3JtYXRKUzsKICAgICBj
YXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICByZXR1cm4gRGF0YUZvcm1hdEludDMyOworICAg
IGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgIHJldHVybiBEYXRhRm9ybWF0SW50NDg7CiAg
ICAgY2FzZSBDZWxsSW5KU1N0YWNrOgogICAgICAgICByZXR1cm4gRGF0YUZvcm1hdENlbGw7CiAg
ICAgY2FzZSBCb29sZWFuSW5KU1N0YWNrOgpAQCAtMTM5LDYgKzE0NCw4IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShEb3VibGVJbkpTU3RhY2spOwogICAgICAgICBj
YXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShJbnQzMklu
SlNTdGFjayk7CisgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICAgICAgcmV0dXJu
IFZhbHVlU291cmNlKEludDQ4SW5KU1N0YWNrKTsKICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoK
ICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShDZWxsSW5KU1N0YWNrKTsKICAgICAgICAg
Y2FzZSBGbHVzaGVkQm9vbGVhbjoKQEAgLTE4MSw2ICsxODgsOSBAQCBwdWJsaWM6CiAgICAgICAg
IGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6
YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyKCk7CiAgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5Ojph
bHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDgoKTsKKyAgICAgICAgICAgIAogICAgICAgICBj
YXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxy
ZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGwoKTsKICAgICAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCShyZXZp
c2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNj
ZXNzRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1LDcgQEAgcHVibGljOgogICAg
ICAgICAKICAgICAgICAgLy8gSWYgdGhlIHZhcmlhYmxlIGlzIG5vdCBhIG51bWJlciBwcmVkaWN0
aW9uLCB0aGVuIHRoaXMgZG9lc24ndAogICAgICAgICAvLyBtYWtlIGFueSBzZW5zZS4KLSAgICAg
ICAgaWYgKCFpc051bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgaWYg
KCFpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogd2UgbWF5IGVuZCB1cCBmb3JjaW5nIGEgbG9jYWwgaW4gaW5saW5lZCBhcmd1bWVu
dCBwb3NpdGlvbiB0byBiZSBhIGRvdWJsZSBldmVuCiAgICAgICAgICAgICAvLyBpZiBpdCBpcyBz
b21ldGltZXMgbm90IGV2ZW4gbnVtZXJpYywgc2luY2UgdGhpcyBuZXZlciBzaWduYWxzIHRoZSBm
YWN0IHRoYXQgaXQgZG9lc24ndAogICAgICAgICAgICAgLy8gd2FudCBkb3VibGVzLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTExCkBAIC0zMzMsNiArMzMzLDkg
QEAgcHVibGljOgogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQog
ICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRJbnQzMjsKICAgICAgICAgCisgICAgICAgIGlmIChl
bmFibGVJbnQ0OCgpICYmICFvcGVyYW5kSXNBcmd1bWVudChtX2xvY2FsKSAmJiBpc01hY2hpbmVJ
bnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBGbHVzaGVkSW50
NDg7CisgICAgICAgIAogICAgICAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGlvbikp
CiAgICAgICAgICAgICByZXR1cm4gRmx1c2hlZENlbGw7CiAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgJKHJldmlzaW9uIDE1NTgy
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw2ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJbnN0
cnVjdGlvbiogdlBDKCkgY29uc3Q7CiAgICAgICAgIElubGluZUNhbGxGcmFtZSogYXNJbmxpbmVD
YWxsRnJhbWUoKSBjb25zdDsKICAgICAgICAgaW50MzJfdCB1bmJveGVkSW50MzIoKSBjb25zdDsK
KyAgICAgICAgaW50NjRfdCB1bmJveGVkSW50NDgoKSBjb25zdDsKICAgICAgICAgYm9vbCB1bmJv
eGVkQm9vbGVhbigpIGNvbnN0OwogICAgICAgICBkb3VibGUgdW5ib3hlZERvdWJsZSgpIGNvbnN0
OwogICAgICAgICBKU0NlbGwqIHVuYm94ZWRDZWxsKCkgY29uc3Q7CkBAIC05OCw2ICs5OSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxs
RnJhbWU7CiAgICAgICAgICAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIGVuY29kZWRWYWx1ZTsK
ICAgICAgICAgICAgIGRvdWJsZSBudW1iZXI7CisgICAgICAgICAgICBpbnQ2NF90IGludGVnZXI7
CiAgICAgICAgIH0gdTsKICAgICB9OwogCkBAIC0xODUsNiArMTg3LDExIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICByZXR1cm4gcGF5bG9hZCgpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJ
TkUgaW50NjRfdCBSZWdpc3Rlcjo6dW5ib3hlZEludDQ4KCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiB1LmludGVnZXIgPj4gMTY7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSBib29s
IFJlZ2lzdGVyOjp1bmJveGVkQm9vbGVhbigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
ISFwYXlsb2FkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Myw2ICszODMsOSBAQCB2b2lk
IEFyZ3VtZW50czo6dGVhck9mZkZvcklubGluZUNhbGxGcmFtCiAgICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZEludDMyOgogICAgICAgICAgICAgdmFsdWUgPSBqc051bWJlcihs
b2NhdGlvbi0+dW5ib3hlZEludDMyKCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OgorICAgICAgICAgICAgdmFsdWUgPSBq
c051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDQ4KCkpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgICAgICB2
YWx1ZSA9IGxvY2F0aW9uLT51bmJveGVkQ2VsbCgpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGluZ1R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGV4aW5nVHlwZS5jcHAJKHJl
dmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGV4aW5n
VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDExICs1MCwxMSBAQCBJbmRleGluZ1R5cGUg
bGVhc3RVcHBlckJvdW5kT2ZJbmRleGluZ1R5CiAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdf
VFlQRVM6CiAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24odHlwZSkpCiAgICAgICAgICAg
ICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFzaykgfCBJbnQzMlNoYXBl
OwotICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbih0eXBlKSkKKyAgICAgICAgaWYgKGlz
RnVsbE51bWJlclNwZWN1bGF0aW9uKHR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIChpbmRleGlu
Z1R5cGUgJiB+SW5kZXhpbmdTaGFwZU1hc2spIHwgRG91YmxlU2hhcGU7CiAgICAgICAgIHJldHVy
biAoaW5kZXhpbmdUeXBlICYgfkluZGV4aW5nU2hhcGVNYXNrKSB8IENvbnRpZ3VvdXNTaGFwZTsK
ICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGlmIChpc051bWJl
clNwZWN1bGF0aW9uKHR5cGUpKQorICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24o
dHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gaW5kZXhpbmdUeXBlOwogICAgICAgICByZXR1cm4g
KGluZGV4aW5nVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFzaykgfCBDb250aWd1b3VzU2hhcGU7CiAg
ICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTkxLDYgKzE5MSw3IEBAIHB1YmxpYzoKIAogICAgIGludDMyX3QgYXNJbnQzMigpIGNvbnN0
OwogICAgIHVpbnQzMl90IGFzVUludDMyKCkgY29uc3Q7CisgICAgaW50NjRfdCBhc01hY2hpbmVJ
bnQoKSBjb25zdDsKICAgICBkb3VibGUgYXNEb3VibGUoKSBjb25zdDsKICAgICBib29sIGFzQm9v
bGVhbigpIGNvbnN0OwogICAgIGRvdWJsZSBhc051bWJlcigpIGNvbnN0OwpAQCAtMjAyLDYgKzIw
Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNVbmRl
ZmluZWRPck51bGwoKSBjb25zdDsKICAgICBib29sIGlzQm9vbGVhbigpIGNvbnN0OworICAgIGJv
b2wgaXNNYWNoaW5lSW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0OwogICAg
IGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzUHJpbWl0aXZlKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5NCw2ICs0OTQsMzUgQEAg
QUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIAogCiAjZW5kaWYgLy8gVVNF
KEpTVkFMVUU2NCkKIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNNYWNoaW5lSW50KCkgY29uc3QK
K3sKKyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIWlz
TnVtYmVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkb3VibGUgbnVtYmVyID0gYXNE
b3VibGUoKTsKKyAgICBpZiAobnVtYmVyICE9IG51bWJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGludDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7Cisg
ICAgaWYgKGFzSW50NjQgIT0gbnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFhc0ludDY0ICYmIHN0ZDo6c2lnbmJpdChudW1iZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKGFzSW50NjQgPj0gKHN0YXRpY19jYXN0PGludDY0X3Q+KDEpIDw8IDQ3KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhc0ludDY0IDwgLShzdGF0aWNfY2FzdDxpbnQ2
NF90PigxKSA8PCA0NykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworaW5saW5lIGludDY0X3QgSlNWYWx1ZTo6YXNNYWNoaW5lSW50KCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoaXNNYWNoaW5lSW50KCkpOworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJl
dHVybiBhc0ludDMyKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KGFzRG91Ymxl
KCkpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N0cmluZygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N0cmluZygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211732</attachid>
            <date>2013-09-15 15:52:22 -0700</date>
            <delta_ts>2013-09-15 20:24:30 -0700</delta_ts>
            <desc>it kind of passes some tests</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>138974</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtODIwLDYgKzgyMCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2
dHNpMnNkX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0SW50NjRUb0Rv
dWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBB
U1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2kyc2RxX3Jy
KHNyYywgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShBZGRy
ZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0Uy
UHJlc2VudCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMwLDYgKzIzMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LnNobHFfaThyKGltbS5tX3ZhbHVlLCBkZXN0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCByc2hp
ZnQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zYXJxX2k4cihpbW0ubV92YWx1ZSwgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbXVsNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmltdWxxX3JyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAogICAgIHZv
aWQgbmVnNjQoUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubmVn
cV9yKGRlc3QpOwpAQCAtNTMwLDYgKzU0MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaE11bDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbXVsNjQoc3JjLCBkZXN0KTsKKyAgICAgICAg
aWYgKGNvbmQgIT0gT3ZlcmZsb3cpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycihk
ZXN0LCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoU3ViNjQoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIHN1YjY0KGltbSwgZGVzdCk7CkBAIC01NDgsNiArNTY2LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJyYW5jaFN1YjY0KGNvbmQsIHNyYzIsIGRlc3QpOwogICAgIH0KIAorICAgIEp1
bXAgYnJhbmNoTmVnNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjRGVzdCkK
KyAgICB7CisgICAgICAgIG5lZzY0KHNyY0Rlc3QpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQorCiAgICAgQ29udmVydGli
bGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29u
dmVydGlibGVMb2FkTGFiZWwodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgzNiw2ICs4MzYsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3Ao
T1AyX0lNVUxfR3ZFdiwgZHN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgaW11bHFfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wNjQoT1AyX0lNVUxfR3ZFdiwgZHN0LCBzcmMpOworICAgIH0KKwogICAgIHZvaWQg
aW11bGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKICAg
ICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3QsIGJh
c2UsIG9mZnNldCk7CkBAIC0xNjExLDYgKzE2MTYsMTQgQEAgcHVibGljOgogICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNJMlNEX1ZzZEVkLCAoUmVnaXN0ZXJJRClkc3QsIHNy
Yyk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGN2dHNpMnNkcV9ycihSZWdp
c3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9Q
Ml9DVlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBzcmMpOworICAgIH0KKyNlbmRpZgor
CiAgICAgdm9pZCBjdnRzaTJzZF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0Vf
RjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0
YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiBlbnVtIERhdGFGb3JtYXQgewogICAgIERhdGFGb3JtYXROb25lID0gMCwKICAgICBEYXRh
Rm9ybWF0SW50MzIgPSAxLAotICAgIERhdGFGb3JtYXREb3VibGUgPSAyLAotICAgIERhdGFGb3Jt
YXRCb29sZWFuID0gMywKLSAgICBEYXRhRm9ybWF0Q2VsbCA9IDQsCi0gICAgRGF0YUZvcm1hdFN0
b3JhZ2UgPSA1LAorICAgIERhdGFGb3JtYXRJbnQ0OCA9IDIsIC8vIEludDQ4J3MgYXJlIGxlZnQt
c2hpZnRlZCBieSAxNiBieSBkZWZhdWx0LgorICAgIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA9IDMs
IC8vICJTdHJpY3QiIEludDQ4IG1lYW5zIGl0J3Mgbm90IHNoaWZ0ZWQuCisgICAgRGF0YUZvcm1h
dERvdWJsZSA9IDQsCisgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAorICAgIERhdGFGb3JtYXRD
ZWxsID0gNiwKKyAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCiAgICAgRGF0YUZvcm1hdEpTID0g
OCwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRJbnQz
MiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0RG91
YmxlLApAQCAtNjQsNiArNjYsMTAgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRUb1N0
cmluZyhEYQogICAgICAgICByZXR1cm4gIk5vbmUiOwogICAgIGNhc2UgRGF0YUZvcm1hdEludDMy
OgogICAgICAgICByZXR1cm4gIkludDMyIjsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAg
ICAgICAgcmV0dXJuICJJbnQ0OCI7CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6Cisg
ICAgICAgIHJldHVybiAiU3RyaWN0SW50NDgiOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToK
ICAgICAgICAgcmV0dXJuICJEb3VibGUiOwogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzSW5saW5lcy5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bl
cmFuZHNJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBPcGVy
YW5kczxULCBUcmFpdHM+OjpkdW1wSW5Db250ZXh0KAogICAgIGZvciAoc2l6ZV90IGxvY2FsSW5k
ZXggPSAwOyBsb2NhbEluZGV4IDwgbnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbEluZGV4KSB7CiAg
ICAgICAgIGlmIChUcmFpdHM6OmlzRW1wdHlGb3JEdW1wKGxvY2FsKGxvY2FsSW5kZXgpKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwgbG9jYWxJ
bmRleCwgIjoiLCBpbkNvbnRleHQobG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKKyAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgbG9jYWxJbmRleCwgIjoiLCBpbkNvbnRleHQobG9j
YWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNpb24g
MTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsMTMgQEAgdm9pZCBkdW1wU3BlY3Vs
YXRpb24oUHJpbnRTdHJlYW0mIG91dCwgUwogICAgIH0KICAgICAKICAgICBpZiAodmFsdWUgJiBT
cGVjSW50MzIpCi0gICAgICAgIG15T3V0LnByaW50KCJJbnQiKTsKKyAgICAgICAgbXlPdXQucHJp
bnQoIkludDMyIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAorICAg
IGlmICh2YWx1ZSAmIFNwZWNJbnQ0OCkKKyAgICAgICAgbXlPdXQucHJpbnQoIkludDQ4Iik7Cisg
ICAgICAgIAogICAgIGlmICgodmFsdWUgJiBTcGVjRG91YmxlKSA9PSBTcGVjRG91YmxlKQogICAg
ICAgICBteU91dC5wcmludCgiRG91YmxlIik7CiAgICAgZWxzZSB7CkBAIC0xNjYsMTEgKzE2OSw2
IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXQsIFMKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICh2YWx1
ZSAmIFNwZWNJbnQ0OCkKLSAgICAgICAgICAgIG15T3V0LnByaW50KCJJbnQ0OCIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgICAgICAKICAgICAgICAgaWYg
KHZhbHVlICYgU3BlY05vbkludEFzRG91YmxlKQogICAgICAgICAgICAgbXlPdXQucHJpbnQoIk5v
bmludGFzZG91YmxlIik7CiAgICAgICAgIGVsc2UKQEAgLTI0Nyw5ICsyNDUsMTEgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9BYmJyZXZpYQogICAgICAgICByZXR1cm4gIjxJbnQ0
OEFzRG91YmxlPiI7CiAgICAgaWYgKGlzSW50NDhTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAg
ICAgICAgcmV0dXJuICI8SW50NDg+IjsKKyAgICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRpb24o
cHJlZGljdGlvbikpCisgICAgICAgIHJldHVybiAiPE1hY2hpbmVJbnQ+IjsKICAgICBpZiAoaXNE
b3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8RG91YmxlPiI7
Ci0gICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgaWYgKGlzRnVs
bE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxOdW1iZXI+
IjsKICAgICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJl
dHVybiAiPEJvb2xlYW4+IjsKQEAgLTM0NSwxNiArMzQ1LDExIEBAIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmEKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKICAgICBp
ZiAodmFsdWUuaXNEb3VibGUoKSkgewogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUuYXNO
dW1iZXIoKTsKLSAgICAgICAgaWYgKG51bWJlciA9PSBudW1iZXIpIHsKLSAgICAgICAgICAgIGlu
dDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7Ci0gICAgICAgICAg
ICBpZiAoYXNJbnQ2NCA9PSBudW1iZXIgJiYgKGFzSW50NjQgfHwgIXN0ZDo6c2lnbmJpdChudW1i
ZXIpKQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPCAoc3RhdGljX2Nhc3Q8aW50NjRfdD4o
MSkgPDwgNDcpCi0gICAgICAgICAgICAgICAgJiYgYXNJbnQ2NCA+PSAtKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KDEpIDw8IDQ3KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTcGVjSW50NDhBc0Rv
dWJsZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3Vi
bGU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47CisgICAgICAgIGlm
IChudW1iZXIgIT0gbnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47Cisg
ICAgICAgIGlmICh2YWx1ZS5pc01hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBTcGVj
SW50NDhBc0RvdWJsZTsKKyAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9
CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9t
Q2VsbCh2YWx1ZS5hc0NlbGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDQ2ICszOCw0OCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cnVjdHVyZTsKIAogdHlw
ZWRlZiB1aW50MzJfdCBTcGVjdWxhdGVkVHlwZTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjTm9uZSAgICAgICAgICAgICAgPSAweDAwMDAwMDAwOyAvLyBXZSBkb24ndCBrbm93IGFu
eXRoaW5nIHlldC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmplY3Qg
ICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2JqZWN0Lgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICA9IDB4MDAw
MDAwMDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQXJyYXkuCi1zdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgID0gMHgwMDAwMDAwODsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAgICAgID0gMHgwMDAwMDAxMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1z
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAgID0gMHgwMDAw
MDAyMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJj
bGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMkFycmF5ICAgICAg
ICA9IDB4MDAwMDAwNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMkFycmF5IG9yIG9uZSBv
ZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDhB
cnJheSAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDhBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY1VpbnQ4Q2xhbXBlZEFycmF5ID0gMHgwMDAwMDEwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFu
IFVpbnQ4Q2xhbXBlZEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDE2QXJyYXkgICAgICAgPSAweDAwMDAwMjAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MzJBcnJheSAgICAgICA9IDB4MDAw
MDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBvciBvbmUgb2YgaXRzIHN1
YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Zsb2F0MzJBcnJheSAg
ICAgID0gMHgwMDAwMDgwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmxv
YXQ2NEFycmF5ICAgICAgPSAweDAwMDAxMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNUeXBlZEFycmF5VmlldyAgICA9IFNwZWNJbnQ4QXJyYXkgfCBTcGVjSW50MTZBcnJh
eSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkgfCBTcGVjVWludDhDbGFtcGVkQXJy
YXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJyYXkgfCBTcGVjRmxvYXQzMkFycmF5
IHwgU3BlY0Zsb2F0NjRBcnJheTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQXJn
dW1lbnRzICAgICAgICAgPSAweDAwMDAyMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gQXJndW1l
bnRzIG9iamVjdC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nT2JqZWN0
ICAgICAgPSAweDAwMDA0MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTdHJpbmdPYmplY3QuCi1z
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgID0gMHgwMDAw
ODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmplY3Qs
IEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y09iamVjdCAgICAgICAgICAgID0gMHgwMDAwZmZmZjsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0
aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjU3RyaW5nSWRlbnQgICAgICAgPSAweDAwMDEwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3MgYW4gaWRlbnRpZmllci4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nVmFyICAgICAgICAgPSAweDAwMDIwMDAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIuCi1z
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAgICAgICAgICAgID0gMHgwMDAz
MDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCi1zdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0NlbGxPdGhlciAgICAgICAgID0gMHgwMDA0MDAwMDsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgSlNDZWxsIGJ1dCBub3QgYSBzdWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVmaW5p
dGVseSBub3QgYSBKU1N0cmluZy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2Vs
bCAgICAgICAgICAgICAgPSAweDAwMDdmZmZmOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyICAgICAgICAgICAgID0gMHgw
MDgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgotc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNJbnQ0OCAgICAgICAgICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBJbnQ0OCwgaXQncyBpbnNpZGUgYSBkb3VibGUsIGJ1dCBpdCBkb2Vzbid0IG5l
ZWQgdG8gYmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hpbmVJbnQgICAg
ICAgID0gMHgwMTgwMDAwMDsgLy8gSXQncyBzb21ldGhpbmcgdGhhdCB3ZSBjYW4gZG8gbWFjaGlu
ZSBpbnQgYXJpdGhtZXRpYyBvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50
NDhBc0RvdWJsZSAgICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50NDgg
YW5kIGl0J3MgaW5zaWRlIGEgZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNJbnRlZ2VyICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBzb21l
IGtpbmQgb2YgaW50ZWdlci4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uSW50
QXNEb3VibGUgICAgPSAweDA0MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm90IGFuIEludDQ4
IGJ1dCBpdCdzIGEgcmVhbCBudW1iZXIgYW5kIGl0J3MgYSBkb3VibGUuCi1zdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgID0gMHgwNzAwMDAwMDsgLy8gSXQn
cyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0RvdWJsZU5hTiAgICAgICAgID0gMHgwODAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgTmFOLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAgICAg
ICA9IDB4MGYwMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3VibGUu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iZXIgICAgICAgID0gMHgw
NzgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVSZWFsLgotc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAgICAgICAgICA9IDB4MGY4MDAwMDA7
IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEJvb2xlYW4uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVy
ICAgICAgICAgICAgID0gMHgyMDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vbmUgb2YgdGhl
IGFib3ZlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAg
ICA9IDB4M2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4NDAwMDAwMDA7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2Fu
IGJlIGFueSBvZiB0aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1
bGxUb3AgICAgICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJv
dmUgcGx1cyBhbnl0aGluZyB0aGUgREZHIGNob29zZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY05vbmUgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDA7IC8vIFdlIGRvbid0IGtu
b3cgYW55dGhpbmcgeWV0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGaW5hbE9i
amVjdCAgICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2Jq
ZWN0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICAg
PSAweDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICAgPSAweDAwMDAwMDA4OyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50OEFycmF5ICAgICAgICAgID0gMHgwMDAw
MDAxMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNs
YXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAg
ICA9IDB4MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9uZSBv
ZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50MzJB
cnJheSAgICAgICAgID0gMHgwMDAwMDA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyQXJy
YXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNVaW50OEFycmF5ICAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YW4gVWludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ICA9IDB4MDAwMDAxMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMu
CitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgICA9IDB4
MDAwMDAyMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRz
IHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQzMkFycmF5
ICAgICAgICA9IDB4MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBv
ciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0Zsb2F0MzJBcnJheSAgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBV
aW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Zsb2F0NjRBcnJheSAgICAgICA9IDB4MDAwMDEwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1R5cGVkQXJyYXlWaWV3ICAgICA9IFNwZWNJbnQ4QXJy
YXkgfCBTcGVjSW50MTZBcnJheSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkgfCBT
cGVjVWludDhDbGFtcGVkQXJyYXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJyYXkg
fCBTcGVjRmxvYXQzMkFycmF5IHwgU3BlY0Zsb2F0NjRBcnJheTsKK3N0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjQXJndW1lbnRzICAgICAgICAgID0gMHgwMDAwMjAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBvYmplY3QuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY1N0cmluZ09iamVjdCAgICAgICA9IDB4MDAwMDQwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhIFN0cmluZ09iamVjdC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0
T3RoZXIgICAgICAgID0gMHgwMDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBi
dXQgbm90IEpTRmluYWxPYmplY3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCitzdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICA9IDB4MDAwMGZmZmY7IC8v
IEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rp
b24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAgICA9
IDB4MDAwMTAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBhbiBp
ZGVudGlmaWVyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIgICAg
ICAgICAgPSAweDAwMDIwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0
J3Mgbm90IGFuIGlkZW50aWZpZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0
cmluZyAgICAgICAgICAgICA9IDB4MDAwMzAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3Ry
aW5nLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAgICAgICAg
PSAweDAwMDQwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBhIHN1YmNs
YXNzIG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgPSAweDAwMDdmZmZmOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0ludDMyICAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBh
biBJbnQzMi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NDggICAgICAgICAg
ICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4IGFuZCB3ZSBpbnRl
bmQgaXQgdG8gdW5ib3ggaXQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hp
bmVJbnQgICAgICAgICA9IDB4MDE4MDAwMDA7IC8vIEl0J3Mgc29tZXRoaW5nIHRoYXQgd2UgY2Fu
IGRvIG1hY2hpbmUgaW50IGFyaXRobWV0aWMgb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0ludDQ4QXNEb3VibGUgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBzb21lIGtpbmQgb2YgaW50ZWdlci4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjTm9uSW50QXNEb3VibGUgICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IG5vdCBhbiBJbnQ0OCBidXQgaXQncyBhIHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91YmxlLgor
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICAgPSAweDA2
MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KK3N0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlTmFOICAgICAgICAgID0gMHgwODAwMDAwMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNE
b3VibGUgICAgICAgICAgICAgPSAweDBlMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4g
b3IgYSBOYU4gZG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29k
ZVJlYWxOdW1iZXIgPSAweDA2ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBhIERv
dWJsZVJlYWwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxSZWFsTnVtYmVy
ICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlUmVh
bCwgb3IgYSBJbnQ0OC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVO
dW1iZXIgICAgID0gMHgwZTgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3Vi
bGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxOdW1iZXIgICAgICAgICA9
IDB4MGY4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ0OCwgb3IgYSBEb3VibGUu
CitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAgICA9IDB4
MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICA9IDB4MjAwMDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBub25lIG9mIHRoZSBhYm92ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjSGVhcFRvcCAgICAgICAgICAgID0gMHgzZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBv
ZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNCeXRlY29kZVRvcCAgICAgICAgPSAweDdlZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9m
IHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NDguCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBh
bnkgb2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgogCiB0eXBlZGVm
IGJvb2wgKCpTcGVjdWxhdGVkVHlwZUNoZWNrZXIpKFNwZWN1bGF0ZWRUeXBlKTsKIApAQCAtMjQw
LDcgKzI0Miw3IEBAIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGUKIAog
aW5saW5lIGJvb2wgaXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIFNwZWNEb3VibGUpOworICAgIHJldHVy
biAhKHZhbHVlICYgKFNwZWNEb3VibGUgfCBTcGVjSW50NDgpKTsKIH0KIAogaW5saW5lIGJvb2wg
aXNJbnQzMlNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2YWx1ZSkK
QEAgLTI2NSw3ICsyNjcsNyBAQCBpbmxpbmUgYm9vbCBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbkV4
cGVjCiAKIGlubGluZSBib29sIGlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVjRG91Ymxl
ICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRG91YmxlKTsK
IH0KIAogaW5saW5lIGJvb2wgaXNJbnQ0OEFzRG91YmxlU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCkBAIC0yOTMsMTkgKzI5NSwzNCBAQCBpbmxpbmUgYm9vbCBpc0RvdWJsZVNwZWN1
bGF0aW9uRm9yQXJpdGhtCiAgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0RvdWJsZSk7CiB9CiAK
LWlubGluZSBib29sIGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQoraW5saW5lIGJvb2wgaXNCeXRlY29kZVJlYWxOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVk
VHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQnl0ZWNvZGVSZWFsTnVt
YmVyKSAmJiAhKHZhbHVlICYgflNwZWNCeXRlY29kZVJlYWxOdW1iZXIpOworfQorCitpbmxpbmUg
Ym9vbCBpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7
CisgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0Z1bGxSZWFsTnVtYmVyKSAmJiAhKHZhbHVlICYg
flNwZWNGdWxsUmVhbE51bWJlcik7Cit9CisKK2lubGluZSBib29sIGlzQnl0ZWNvZGVOdW1iZXJT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUg
JiBTcGVjQnl0ZWNvZGVOdW1iZXIpICYmICEodmFsdWUgJiB+U3BlY0J5dGVjb2RlTnVtYmVyKTsK
K30KKworaW5saW5lIGJvb2wgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY1JlYWxOdW1iZXIpICYmICEodmFs
dWUgJiB+U3BlY1JlYWxOdW1iZXIpOworICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNGdWxsTnVt
YmVyKSAmJiAhKHZhbHVlICYgflNwZWNGdWxsTnVtYmVyKTsKIH0KIAotaW5saW5lIGJvb2wgaXNO
dW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlzQnl0
ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY051bWJlcikgJiYgISh2YWx1ZSAmIH5T
cGVjTnVtYmVyKTsKKyAgICByZXR1cm4gaXNCeXRlY29kZU51bWJlclNwZWN1bGF0aW9uKHZhbHVl
ICYgflNwZWNPdGhlcik7CiB9CiAKLWlubGluZSBib29sIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBl
Y3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNGdWxsTnVt
YmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewot
ICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CisgICAg
cmV0dXJuIGlzQnl0ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbih2YWx1ZSAmIH5TcGVjT3RoZXIpOwog
fQogCiBpbmxpbmUgYm9vbCBpc0Jvb2xlYW5TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3Zl
cnkuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTIgKzQ0LDE1IEBAIGVudW0g
VmFsdWVSZWNvdmVyeVRlY2huaXF1ZSB7CiAgICAgQWxyZWFkeUluSlNTdGFjaywKICAgICAvLyBJ
dCdzIGFscmVhZHkgaW4gdGhlIHN0YWNrIGJ1dCB1bmJveGVkLgogICAgIEFscmVhZHlJbkpTU3Rh
Y2tBc1VuYm94ZWRJbnQzMiwKKyAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDgsCiAg
ICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGwsCiAgICAgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZEJvb2xlYW4sCiAgICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZSwKICAg
ICAvLyBJdCdzIGluIGEgcmVnaXN0ZXIuCiAgICAgSW5HUFIsCiAgICAgVW5ib3hlZEludDMySW5H
UFIsCisgICAgVW5ib3hlZEludDQ4SW5HUFIsCisgICAgVW5ib3hlZFN0cmljdEludDQ4SW5HUFIs
CiAgICAgVW5ib3hlZEJvb2xlYW5JbkdQUiwKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIElu
UGFpciwKQEAgLTYwLDYgKzYzLDggQEAgZW51bSBWYWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAg
ICBEaXNwbGFjZWRJbkpTU3RhY2ssCiAgICAgLy8gSXQncyBpbiB0aGUgc3RhY2ssIGF0IGEgZGlm
ZmVyZW50IGxvY2F0aW9uLCBhbmQgaXQncyB1bmJveGVkLgogICAgIEludDMyRGlzcGxhY2VkSW5K
U1N0YWNrLAorICAgIEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrLAorICAgIFN0cmljdEludDQ4RGlz
cGxhY2VkSW5KU1N0YWNrLAogICAgIERvdWJsZURpc3BsYWNlZEluSlNTdGFjaywKICAgICBDZWxs
RGlzcGxhY2VkSW5KU1N0YWNrLAogICAgIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2ssCkBAIC05
NSw2ICsxMDAsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAg
ICAKKyAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50
NDgoKQorICAgIHsKKyAgICAgICAgVmFsdWVSZWNvdmVyeSByZXN1bHQ7CisgICAgICAgIHJlc3Vs
dC5tX3RlY2huaXF1ZSA9IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0ODsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIFZhbHVlUmVjb3ZlcnkgYWxy
ZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGwoKQogICAgIHsKICAgICAgICAgVmFsdWVSZWNvdmVy
eSByZXN1bHQ7CkBAIC0xMjUsNiArMTM3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgVmFsdWVSZWNv
dmVyeSByZXN1bHQ7CiAgICAgICAgIGlmIChkYXRhRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikK
ICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IFVuYm94ZWRJbnQzMkluR1BSOworICAg
ICAgICBlbHNlIGlmIChkYXRhRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAg
IHJlc3VsdC5tX3RlY2huaXF1ZSA9IFVuYm94ZWRJbnQ0OEluR1BSOworICAgICAgICBlbHNlIGlm
IChkYXRhRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgICAgIHJlc3Vs
dC5tX3RlY2huaXF1ZSA9IFVuYm94ZWRTdHJpY3RJbnQ0OEluR1BSOwogICAgICAgICBlbHNlIGlm
IChkYXRhRm9ybWF0ID09IERhdGFGb3JtYXRCb29sZWFuKQogICAgICAgICAgICAgcmVzdWx0Lm1f
dGVjaG5pcXVlID0gVW5ib3hlZEJvb2xlYW5JbkdQUjsKICAgICAgICAgZWxzZQpAQCAtMTY4LDYg
KzE4NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBJbnQz
MkRpc3BsYWNlZEluSlNTdGFjazsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5p
cXVlID0gSW50NDhEaXNwbGFjZWRJbkpTU3RhY2s7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODoKKyAgICAgICAgICAg
IHJlc3VsdC5tX3RlY2huaXF1ZSA9IFN0cmljdEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBEYXRhRm9ybWF0RG91
YmxlOgogICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gRG91YmxlRGlzcGxhY2VkSW5K
U1N0YWNrOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjksNiArMjUzLDcgQEAgcHVibGljOgog
ICAgICAgICBzd2l0Y2ggKHRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNT
dGFjazoKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6CisgICAg
ICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OgogICAgICAgICBjYXNlIEFs
cmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsOgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3Rh
Y2tBc1VuYm94ZWRCb29sZWFuOgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWREb3VibGU6CkBAIC0yNDAsNyArMjY1LDcgQEAgcHVibGljOgogICAgIAogICAgIE1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklEIGdwcigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90
ZWNobmlxdWUgPT0gSW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZEludDMySW5HUFIgfHwg
bV90ZWNobmlxdWUgPT0gVW5ib3hlZEJvb2xlYW5JbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVSW50
MzJJbkdQUik7CisgICAgICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBJbkdQUiB8fCBtX3RlY2hu
aXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkQm9vbGVh
bkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVu
Ym94ZWRJbnQ0OEluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRTdHJpY3RJbnQ0OEluR1BS
KTsKICAgICAgICAgcmV0dXJuIG1fc291cmNlLmdwcjsKICAgICB9CiAgICAgCkBAIC0yNjYsNyAr
MjkxLDcgQEAgcHVibGljOgogICAgIAogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IERpc3BsYWNl
ZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjayB8fCBt
X3RlY2huaXF1ZSA9PSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0g
Q2VsbERpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBCb29sZWFuRGlzcGxhY2Vk
SW5KU1N0YWNrKTsKKyAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IERpc3BsYWNlZEluSlNT
dGFjayB8fCBtX3RlY2huaXF1ZSA9PSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2hu
aXF1ZSA9PSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0gQ2VsbERp
c3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0
YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5p
cXVlID09IFN0cmljdEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrKTsKICAgICAgICAgcmV0dXJuIG1f
c291cmNlLnZpcnR1YWxSZWc7CiAgICAgfQogICAgIApAQCAtMjg1LDYgKzMxMCw5IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6CiAgICAgICAg
ICAgICBvdXQucHJpbnRmKCIoaW50MzIpIik7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OgorICAgICAgICAgICAgb3V0LnBy
aW50ZigiKGludDQ4KSIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoY2VsbCki
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwMCw2ICszMjgsMTIgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiaW50
MzIoJSVyJWQpIiwgZ3ByKCkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVu
Ym94ZWRJbnQ0OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50ZigiaW50NDgoJSVyJWQpIiwg
Z3ByKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdElu
dDQ4SW5HUFI6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJzdHJpY3RJbnQ0OCglJXIlZCkiLCBn
cHIoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbklu
R1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiYm9vbCglJXIlZCkiLCBncHIoKSk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zMjAsNiArMzU0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgY2Fz
ZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIG91dC5wcmludGYoIippbnQz
MiglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNhc2UgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBvdXQucHJpbnRmKCIq
aW50NDgoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCIqc3RyaWN0SW50NDgoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAg
ICAgICAgb3V0LnByaW50ZigiKmRvdWJsZSglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAg
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgbmVlZHNUeXBlQ2hlY2so
Tm9kZSogbm9kZSwgU3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGZvck5vZGUobm9kZSkubV90eXBlICYgfnR5cGVzUGFzc2VkVGhyb3VnaDsK
KyAgICAgICAgcmV0dXJuICFmb3JOb2RlKG5vZGUpLmlzVHlwZSh0eXBlc1Bhc3NlZFRocm91Z2gp
OwogICAgIH0KICAgICAKICAgICBib29sIG5lZWRzVHlwZUNoZWNrKEVkZ2UgZWRnZSwgU3BlY3Vs
YXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoKQpAQCAtMTY4LDcgKzE2OCw3IEBAIHByaXZhdGU6
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbHRlckJ5VHlwZShOb2RlKiBub2RlLCBFZGdlJiBl
ZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYg
dmFsdWUgPSBmb3JOb2RlKGVkZ2UpOwotICAgICAgICBpZiAodmFsdWUubV90eXBlICYgfnR5cGUp
IHsKKyAgICAgICAgaWYgKCF2YWx1ZS5pc1R5cGUodHlwZSkpIHsKICAgICAgICAgICAgIG5vZGUt
PnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBlZGdlLnNldFByb29mU3RhdHVzKE5lZWRz
Q2hlY2spOwogICAgICAgICB9IGVsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9u
IDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDYgKzMxMCwyNiBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAgICAgCisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOiB7CisgICAgICAgIEpTVmFsdWUgY2hp
bGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQg
JiYgY2hpbGQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hp
bGQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNJbnQ0OEFzRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
ICAgICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZTogeworICAgICAgICBKU1ZhbHVlIGNoaWxkID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNo
aWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjSW50MzIgfCBTcGVjSW50NDhBc0RvdWJsZSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICAgICAgCiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOiB7CiAg
ICAgICAgIEpTVmFsdWUgbGVmdCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CkBA
IC0zMjQsOSArMzQ0LDE1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS0+YXJp
dGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIGlmICgh
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNJbnQzMikKKyAgICAgICAgICAgICAg
ICB8fCAhZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNJbnQzMikpCisgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIE51bWJlclVzZToKLSAgICAgICAgICAgIGlmIChpc1JlYWxOdW1iZXJTcGVjdWxh
dGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpCi0gICAgICAgICAgICAgICAgJiYg
aXNSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSkK
KyAgICAgICAgICAgIGlmIChpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlKQorICAgICAgICAgICAgICAgICYmIGlzRnVsbFJlYWxOdW1iZXJT
cGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQogICAgICAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlUmVhbCk7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpA
QCAtMzM0LDcgKzM2MCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm9w
KCkgPT0gVmFsdWVBZGQpOwogICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmln
aW4sIGNsb2JiZXJMaW1pdCk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3Bl
Y1N0cmluZyB8IFNwZWNJbnQzMiB8IFNwZWNOdW1iZXIpOworICAgICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNTdHJpbmcgfCBTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0zNTgsNiArMzg0LDEyIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlm
ICghYnl0ZWNvZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldFR5cGUoU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIGlmICghZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkuaXNUeXBlKFNwZWNJbnQzMikKKyAgICAgICAgICAgICAgICB8fCAhZm9yTm9kZShub2Rl
LT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNJbnQzMikpCisgICAgICAgICAgICAgICAgbm9kZS0+c2V0
Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51bWJlclVz
ZToKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMzgwLDYgKzQxMiwxMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1bmNhdGVJ
bnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNl
dENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5l
SW50VXNlOgorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7Cisg
ICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlw
ZShTcGVjSW50NDgpKQorICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7Cisg
ICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRo
Tm9kZUZsYWdzKCkpKQorICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTQwNCw5ICs0NDMsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgICAgIHx8ICFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2Rl
LT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRy
dWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAg
bm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IE51bWJlclVzZToKLSAgICAgICAgICAgIGlmIChpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpCi0gICAgICAgICAgICAgICAgfHwgaXNSZWFsTnVt
YmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSkKKyAgICAgICAg
ICAgIGlmIChpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV90eXBlKQorICAgICAgICAgICAgICAgIHx8IGlzRnVsbFJlYWxOdW1iZXJTcGVjdWxhdGlv
bihmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQogICAgICAgICAgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlUmVhbCk7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAtNTg2LDcg
KzYyOSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoaXNOdW1iZXJT
cGVjdWxhdGlvbihhYnN0cmFjdENoaWxkLm1fdHlwZSkpIHsKKyAgICAgICAgaWYgKGlzRnVsbE51
bWJlclNwZWN1bGF0aW9uKGFic3RyYWN0Q2hpbGQubV90eXBlKSkgewogICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwgdm0tPnNtYWxsU3RyaW5ncy5udW1iZXJTdHJpbmcoKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtODEyLDcgKzg1NSw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRT
cGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjSW50MzIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0ludDQ4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5
OjpGbG9hdDMyQXJyYXk6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0Rv
dWJsZSk7CkBAIC04NjMsNyArOTA2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgIGNhc2UgQXJyYXlQdXNoOgogICAgICAgICBub2RlLT5zZXRDYW5FeGl0
KHRydWUpOwogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxp
bWl0KTsKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNOdW1iZXIpOworICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0J5dGVjb2RlTnVtYmVyKTsKICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIEFycmF5UG9wOgpAQCAtOTM0LDggKzk3Nyw4IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgLy8gTkIu
IFRoZSBtb3JlIGNhbm9uaWNhbCB3YXkgb2Ygd3JpdGluZyB0aGlzIHdvdWxkIGhhdmUgYmVlbjoK
ICAgICAgICAgLy8KICAgICAgICAgLy8gZGVzdGluYXRpb24gPSBzb3VyY2U7Ci0gICAgICAgIC8v
IGlmIChkZXN0aW5hdGlvbi5tX3R5cGUgJiAhKFNwZWNOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3Bl
Y0Jvb2xlYW4pKSB7Ci0gICAgICAgIC8vICAgICBkZXN0aW5hdGlvbi5maWx0ZXIoU3BlY051bWJl
ciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbik7CisgICAgICAgIC8vIGlmIChkZXN0aW5hdGlv
bi5tX3R5cGUgJiAhKFNwZWNGdWxsTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNwZWNCb29sZWFuKSkg
eworICAgICAgICAvLyAgICAgZGVzdGluYXRpb24uZmlsdGVyKFNwZWNGdWxsTnVtYmVyIHwgU3Bl
Y1N0cmluZyB8IFNwZWNCb29sZWFuKTsKICAgICAgICAgLy8gICAgIEFic3RyYWN0VmFsdWUgc3Ry
aW5nOwogICAgICAgICAvLyAgICAgc3RyaW5nLnNldCh2bS0+c3RyaW5nU3RydWN0dXJlKTsKICAg
ICAgICAgLy8gICAgIGRlc3RpbmF0aW9uLm1lcmdlKHN0cmluZyk7CkBAIC05NTUsNyArOTk4LDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBjbG9i
YmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKICAgICAgICAgCiAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBzb3VyY2UubV90eXBlOwotICAgICAgICBpZiAodHlw
ZSAmIH4oU3BlY051bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpCisgICAgICAgIGlm
ICh0eXBlICYgfihTcGVjRnVsbE51bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpCiAg
ICAgICAgICAgICB0eXBlID0gKFNwZWNIZWFwVG9wICYgflNwZWNDZWxsKSB8IFNwZWNTdHJpbmc7
CiAKICAgICAgICAgZGVzdGluYXRpb24uc2V0VHlwZSh0eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkocmV2aXNpb24gMTU1ODIw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOCBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFw
aCYgZ3JhcGgsIEpTCiAgICAgfQogICAgICAgICAKICAgICBtX3R5cGUgPSBzcGVjdWxhdGlvbkZy
b21WYWx1ZSh2YWx1ZSk7CisgICAgaWYgKG1fdHlwZSA9PSBTcGVjSW50NDhBc0RvdWJsZSkKKyAg
ICAgICAgbV90eXBlID0gU3BlY0ludDQ4OwogICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAg
CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtMjI3LDYgKzIyOSw3IEBAIEZpbHRyYXRpb25S
ZXN1bHQgQWJzdHJhY3RWYWx1ZTo6bm9ybWFsaXoKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisj
aWYgIUFTU0VSVF9ESVNBQkxFRAogdm9pZCBBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5
KCkgY29uc3QKIHsKICAgICBpZiAoIShtX3R5cGUgJiBTcGVjQ2VsbCkpIHsKQEAgLTIzOCwxNCAr
MjQxLDE5IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSgpIGMKICAgICBp
ZiAoaXNDbGVhcigpKQogICAgICAgICBBU1NFUlQoIW1fdmFsdWUpOwogICAgIAotICAgIGlmICgh
IW1fdmFsdWUpCi0gICAgICAgIEFTU0VSVChtZXJnZVNwZWN1bGF0aW9ucyhtX3R5cGUsIHNwZWN1
bGF0aW9uRnJvbVZhbHVlKG1fdmFsdWUpKSA9PSBtX3R5cGUpOworICAgIGlmICghIW1fdmFsdWUp
IHsKKyAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fdHlwZTsKKyAgICAgICAgaWYgKHR5
cGUgJiBTcGVjSW50NDgpCisgICAgICAgICAgICB0eXBlIHw9IFNwZWNJbnQ0OEFzRG91YmxlOwor
ICAgICAgICBBU1NFUlQobWVyZ2VTcGVjdWxhdGlvbnModHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFs
dWUobV92YWx1ZSkpID09IHR5cGUpOworICAgIH0KICAgICAKICAgICAvLyBOb3RlIHRoYXQgaXQn
cyBwb3NzaWJsZSBmb3IgYSBwcmVkaWN0aW9uIGxpa2UgKEZpbmFsLCBbXSkuIFRoaXMgcmVhbGx5
IG1lYW5zIHRoYXQKICAgICAvLyB0aGUgdmFsdWUgaXMgYm90dG9tIGFuZCB0aGF0IGFueSBjb2Rl
IHRoYXQgdXNlcyB0aGUgdmFsdWUgaXMgdW5yZWFjaGFibGUuIEJ1dAogICAgIC8vIHdlIGRvbid0
IHdhbnQgdG8gZ2V0IHBlZGFudGljIGFib3V0IHRoaXMgYXMgaXQgd291bGQgb25seSBpbmNyZWFz
ZSB0aGUgY29tcHV0YXRpb25hbAogICAgIC8vIGNvbXBsZXhpdHkgb2YgdGhlIGNvZGUuCiB9Cisj
ZW5kaWYKIAogdm9pZCBBYnN0cmFjdFZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUu
aAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsMTYgQEAgc3RydWN0IEFi
c3RyYWN0VmFsdWUgewogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIAor
ICAgIGJvb2wgY291bGRCZVR5cGUoU3BlY3VsYXRlZFR5cGUgZGVzaXJlZFR5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gISEobV90eXBlICYgZGVzaXJlZFR5cGUpOworICAgIH0KKyAgICAKKyAg
ICBib29sIGlzVHlwZShTcGVjdWxhdGVkVHlwZSBkZXNpcmVkVHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiAhKG1fdHlwZSAmIH5kZXNpcmVkVHlwZSk7CisgICAgfQorICAgIAogICAgIEZpbHRy
YXRpb25SZXN1bHQgZmlsdGVyKEdyYXBoJiwgY29uc3QgU3RydWN0dXJlU2V0Jik7CiAgICAgCiAg
ICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMgYXJyYXlNb2Rl
cyk7CkBAIC0xOTMsMjIgKzIwMyw2IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAg
ICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckJ5VmFsdWUoSlNWYWx1ZSB2YWx1ZSk7CiAgICAgCi0g
ICAgYm9vbCB2YWxpZGF0ZVR5cGUoSlNWYWx1ZSB2YWx1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAg
IGlmIChpc0hlYXBUb3AoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAKLSAg
ICAgICAgaWYgKG1lcmdlU3BlY3VsYXRpb25zKG1fdHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUo
dmFsdWUpKSAhPSBtX3R5cGUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAot
ICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBl
ICYgU3BlY0VtcHR5KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCiAgICAgYm9vbCB2YWxpZGF0
ZShKU1ZhbHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzSGVhcFRvcCgpKQpA
QCAtMjUxLDcgKzI0NSwxMSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICB8
fCAhYXJyYXlNb2Rlc0FyZUNsZWFyT3JUb3AobV9hcnJheU1vZGVzKTsKICAgICB9CiAgICAgCisj
aWYgQVNTRVJUX0RJU0FCTEVECisgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QgeyB9
CisjZWxzZQogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OworI2VuZGlmCiAgICAg
CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25z
dDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKQEAgLTM2Myw2ICszNjEsMjkg
QEAgcHJpdmF0ZToKICAgICAgICAgbV9hcnJheU1vZGVzID0gQUxMX0FSUkFZX01PREVTOwogICAg
IH0KICAgICAKKyAgICBib29sIHZhbGlkYXRlVHlwZShKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKGlzSGVhcFRvcCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIAorICAgICAgICAvLyBDb25zdGFudCBmb2xkaW5nIGFsd2F5cyByZXByZXNlbnRzIElu
dDQ4J3MgaW4gYSBkb3VibGUgKGkuZS4gSW50NDhBc0RvdWJsZSkuCisgICAgICAgIC8vIFNvIHNw
ZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKSBmb3IgYW4gSW50NDggdmFsdWUgd2lsbCByZXR1cm4g
SW50NDhBc0RvdWJsZSwKKyAgICAgICAgLy8gYW5kIHRoYXQncyBmaW5lIC0gdGhlIHR5cGUgdmFs
aWRhdGVzIGp1c3QgZmluZS4KKyAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fdHlwZTsK
KyAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NDgpCisgICAgICAgICAgICB0eXBlIHw9IFNwZWNJ
bnQ0OEFzRG91YmxlOworICAgICAgICAKKyAgICAgICAgaWYgKG1lcmdlU3BlY3VsYXRpb25zKHR5
cGUsIHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKSkgIT0gdHlwZSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVChtX3R5cGUgJiBTcGVjRW1wdHkpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICAKICAgICB2b2lkIG1ha2VUb3AoU3BlY3VsYXRlZFR5cGUgdG9wKQogICAgIHsKICAgICAg
ICAgbV90eXBlIHw9IHRvcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlNb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDIxICsxNTcsMjEgQEAg
QXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKFNwZWN1bGF0ZWRUeQogICAgICAgICAgICAgcmV0
dXJuIHdpdGhUeXBlKEFycmF5OjpGb3JjZUV4aXQpOwogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1
bGF0aW9uKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24o
QXJyYXk6OkludDMyLCBBcnJheTo6Q29udmVydCk7Ci0gICAgICAgIGlmIChpc051bWJlclNwZWN1
bGF0aW9uKHZhbHVlKSkKKyAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVl
KSkKICAgICAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkRvdWJs
ZSwgQXJyYXk6OkNvbnZlcnQpOwogICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9u
KEFycmF5OjpDb250aWd1b3VzLCBBcnJheTo6Q29udmVydCk7CiAgICAgICAgIAogICAgIGNhc2Ug
QXJyYXk6OkludDMyOgogICAgICAgICBpZiAoIXZhbHVlIHx8IGlzSW50MzJTcGVjdWxhdGlvbih2
YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIGlmIChpc051bWJlclNw
ZWN1bGF0aW9uKHZhbHVlKSkKKyAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZh
bHVlKSkKICAgICAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkRv
dWJsZSwgQXJyYXk6OkNvbnZlcnQpOwogICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJz
aW9uKEFycmF5OjpDb250aWd1b3VzLCBBcnJheTo6Q29udmVydCk7CiAgICAgICAgIAogICAgIGNh
c2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgaWYgKGZsYWdzICYgTm9kZUJ5dGVjb2RlVXNlc0Fz
SW50KQogICAgICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6Q29u
dGlndW91cywgQXJyYXk6OlJhZ2VDb252ZXJ0KTsKLSAgICAgICAgaWYgKCF2YWx1ZSB8fCBpc051
bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKKyAgICAgICAgaWYgKCF2YWx1ZSB8fCBpc0Z1bGxOdW1i
ZXJTcGVjdWxhdGlvbih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAg
IHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkNvbnRpZ3VvdXMsIEFycmF5OjpD
b252ZXJ0KTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDIxICs2Myw2IEBAIHB1Ymxp
YzoKICAgICAKIHByaXZhdGU6CiAgICAgCi0gICAgTm9kZSogY2Fub25pY2FsaXplKE5vZGUqIG5v
ZGUpCi0gICAgewotICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChub2RlLT5vcCgpID09IFZhbHVlVG9JbnQzMikKLSAgICAgICAg
ICAgIG5vZGUgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7Ci0gICAgICAgIAotICAgICAgICByZXR1
cm4gbm9kZTsKLSAgICB9Ci0gICAgTm9kZSogY2Fub25pY2FsaXplKEVkZ2UgZWRnZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBjYW5vbmljYWxpemUoZWRnZS5ub2RlKCkpOwotICAgIH0KLSAgICAK
ICAgICB1bnNpZ25lZCBlbmRJbmRleEZvclB1cmVDU0UoKQogICAgIHsKICAgICAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gbV9sYXN0U2VlblttX2N1cnJlbnROb2RlLT5vcCgpXTsKQEAgLTk0LDkgKzc5
LDkgQEAgcHJpdmF0ZToKIAogICAgIE5vZGUqIHB1cmVDU0UoTm9kZSogbm9kZSkKICAgICB7Ci0g
ICAgICAgIE5vZGUqIGNoaWxkMSA9IGNhbm9uaWNhbGl6ZShub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgIE5vZGUqIGNoaWxkMiA9IGNhbm9uaWNhbGl6ZShub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAg
IE5vZGUqIGNoaWxkMyA9IGNhbm9uaWNhbGl6ZShub2RlLT5jaGlsZDMoKSk7CisgICAgICAgIEVk
Z2UgY2hpbGQxID0gbm9kZS0+Y2hpbGQxKCk7CisgICAgICAgIEVkZ2UgY2hpbGQyID0gbm9kZS0+
Y2hpbGQyKCk7CisgICAgICAgIEVkZ2UgY2hpbGQzID0gbm9kZS0+Y2hpbGQzKCk7CiAgICAgICAg
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBlbmRJbmRleEZvclB1cmVDU0UoKTsgaS0tOykg
ewogICAgICAgICAgICAgTm9kZSogb3RoZXJOb2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwpA
QCAtMTA5LDE5ICs5NCwxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG5vZGUtPmFyaXRo
Tm9kZUZsYWdzKCkgIT0gb3RoZXJOb2RlLT5hcml0aE5vZGVGbGFncygpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBOb2RlKiBvdGhlckNoaWxk
ID0gY2Fub25pY2FsaXplKG90aGVyTm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgRWRnZSBv
dGhlckNoaWxkID0gb3RoZXJOb2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgIGlmICghb3RoZXJD
aGlsZCkKICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXJOb2RlOwogICAgICAgICAgICAgaWYg
KG90aGVyQ2hpbGQgIT0gY2hpbGQxKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBvdGhlckNoaWxkID0gY2Fub25pY2FsaXplKG90aGVyTm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgb3RoZXJDaGlsZCA9IG90aGVyTm9kZS0+Y2hpbGQyKCk7
CiAgICAgICAgICAgICBpZiAoIW90aGVyQ2hpbGQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG90
aGVyTm9kZTsKICAgICAgICAgICAgIGlmIChvdGhlckNoaWxkICE9IGNoaWxkMikKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgb3RoZXJDaGlsZCA9
IGNhbm9uaWNhbGl6ZShvdGhlck5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgICAgIG90aGVyQ2hp
bGQgPSBvdGhlck5vZGUtPmNoaWxkMygpOwogICAgICAgICAgICAgaWYgKCFvdGhlckNoaWxkKQog
ICAgICAgICAgICAgICAgIHJldHVybiBvdGhlck5vZGU7CiAgICAgICAgICAgICBpZiAob3RoZXJD
aGlsZCAhPSBjaGlsZDMpCkBAIC0zNzcsMjEgKzM2MiwyMSBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKICAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAo
bm9kZSA9PSBjaGlsZDEgfHwgbm9kZSA9PSBjYW5vbmljYWxpemUoY2hpbGQyKSkgCisgICAgICAg
ICAgICBpZiAobm9kZSA9PSBjaGlsZDEgfHwgbm9kZSA9PSBjaGlsZDIpIAogICAgICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAg
ICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLmJ5VmFsSXNQ
dXJlKG5vZGUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gY2hpbGQxICYmIGNhbm9uaWNhbGl6ZShub2RlLT5jaGls
ZDIoKSkgPT0gY2Fub25pY2FsaXplKGNoaWxkMikpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpID09IGNoaWxkMSAmJiBub2RlLT5jaGlsZDIoKSA9PSBjaGlsZDIpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewog
ICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5ieVZhbElzUHVyZShub2RlKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMCkgPT0gY2hpbGQxICYmIGNhbm9uaWNhbGl6ZShtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEpKSA9PSBjYW5vbmljYWxpemUoY2hpbGQyKSkKKyAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSA9PSBjaGlsZDEgJiYgbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAxKSA9PSBjaGlsZDIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpLm5vZGUoKTsKICAgICAgICAgICAgICAgICAvLyBX
ZSBtdXN0IGFzc3VtZSB0aGF0IHRoZSBQdXRCeVZhbCB3aWxsIGNsb2JiZXIgdGhlIGxvY2F0aW9u
IHdlJ3JlIGdldHRpbmcgZnJvbS4KICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRv
IGJldHRlcjsgaWYgd2Uga25vdyB0aGF0IHRoZSBQdXRCeVZhbCBpcyBhY2Nlc3NpbmcgYW4gYXJy
YXkgb2YgYQpAQCAtMTA5MCw2ICsxMDc1LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21w
YXJlRXFDb25zdGFudDoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgICAgIGNhc2Ug
TWFrZVJvcGU6CisgICAgICAgIGNhc2UgSW50NDhUb0RvdWJsZToKKyAgICAgICAgY2FzZSBJbnQ0
OFRvVmFsdWU6CiAgICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNT
RShub2RlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsxMTIsOCBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNh
c2UgSW50MzJUb0RvdWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNh
c2UgSW50NDhUb0RvdWJsZToKKyAgICBjYXNlIEludDQ4VG9WYWx1ZToKICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKICAgICBjYXNlIE1vdkhpbnRBbmRDaGVjazoKQEAgLTE4MCw2ICsxODIsNyBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHN3aXRj
aCAobm9kZS0+YmluYXJ5VXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAg
ICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgICAgIHJlYWQo
V29ybGQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lv
biAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDE1IEBAIGlubGluZSBib29sIGVuYWJsZUNvbmN1cnJl
bnRKSVQoKQogI2VuZGlmCiB9CiAKK2lubGluZSBib29sIGVuYWJsZUludDQ4KCkKK3sKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKK30KKwogZW51bSBTcGlsbFJlZ2lzdGVyc01vZGUgeyBOZWVkVG9TcGlsbCwgRG9u
dFNwaWxsIH07CiAKIGVudW0gTm9SZXN1bHRUYWcgeyBOb1Jlc3VsdCB9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNTU4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjQsNiArMTI0LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpIHsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTk3LDYgKzIwMiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIG1fZ3JhcGgubmVnYXRl
U2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICAgICAgICAgIGZpeEVk
Z2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMDcsNiArMjE2LDEx
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hp
bGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgbV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
Zml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMzAwLDYgKzMxNCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAgICAgJiYg
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5v
ZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzU1LDYgKzM3NSwxMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAgICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRl
TWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
IHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2Rl
LT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQyKCkpOwpAQCAtNDc1LDcgKzUwMSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Y2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+
KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAg
IGlmIChjaGlsZDMtPnByZWRpY3Rpb24oKSAmIFNwZWNJbnQ0OCkKKyAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQzKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAg
ICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKQEAgLTg0Nyw2ICs4NzYsOCBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgICAgICBjYXNl
IENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRl
cjoKKyAgICAgICAgY2FzZSBJbnQ0OFRvRG91YmxlOgorICAgICAgICBjYXNlIEludDQ4VG9WYWx1
ZToKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgCkBAIC0xMzQ3LDEyICsxMzc4LDg0IEBAIHByaXZhdGU6CiAgICAg
dGVtcGxhdGU8VXNlS2luZCB1c2VLaW5kPgogICAgIHZvaWQgZml4RWRnZShFZGdlJiBlZGdlLCBT
cGVjdWxhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBCYWNrd2FyZFNwZWN1bGF0aW9uKQogICAg
IHsKLSAgICAgICAgaWYgKGlzRG91YmxlKHVzZUtpbmQpICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0
ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7Ci0gICAgICAgICAgICBpbmplY3RJbnQzMlRvRG91Ymxl
Tm9kZShlZGdlLCB1c2VLaW5kLCBkaXJlY3Rpb24pOworICAgICAgICBpZiAoaXNEb3VibGUodXNl
S2luZCkpIHsKKyAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFy
aXRobWV0aWMoKSkgeworICAgICAgICAgICAgICAgIGluamVjdEludDMyVG9Eb3VibGVOb2RlKGVk
Z2UsIHVzZUtpbmQsIGRpcmVjdGlvbik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiBl
ZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBN
YWtlIGFsbCBkb3VibGUgdXNlcyBvZiBpbnQ0OCB2YWx1ZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUg
SW50NDhUb0RvdWJsZS4KKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciB0aGUgc2FtZSBy
ZWFzb24gYXMgSW50NDhUb1ZhbHVlIChzZWUgYmVsb3cpIGV4Y2VwdCB0aGF0CisgICAgICAgICAg
ICAgICAgLy8gSW50OFRvRG91YmxlIHdpbGwgY29udmVydCBpbnQ0OCdzIHRoYXQgZml0IGluIGFu
IGludDMyIGludG8gYSBkb3VibGUKKyAgICAgICAgICAgICAgICAvLyByYXRoZXIgdGhhbiB0cnlp
bmcgdG8gY3JlYXRlIGEgYm94ZWQgaW50MzIgbGlrZSBJbnQ0OFRvVmFsdWUgZG9lcy4KKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxNYWNoaW5l
SW50VXNlPihlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
Tm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0OEFzRG91YmxlLCBJbnQ0OFRvRG91YmxlLAor
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uu
bm9kZSgpLCBNYWNoaW5lSW50VXNlKSk7CisgICAgICAgICAgICAgICAgZWRnZSA9IEVkZ2UocmVz
dWx0LCB1c2VLaW5kKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIHVzZUtpbmQg
IT0gTWFjaGluZUludFVzZQorICAgICAgICAgICAgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFj
aGluZUludCgpICYmICFlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7CisgICAgICAgICAg
ICAvLyBXZSBtYWtlIGFsbCBub24taW50NDggdXNlcyBvZiBpbnQ0OCB2YWx1ZXMgaGF2ZSBhbiBp
bnRlcm1lZGlhdGUgSW50NDhUb1ZhbHVlCisgICAgICAgICAgICAvLyBub2RlIHRvIGVuc3VyZSB0
aGF0IHdlIGhhbmRsZSB0aGlzIHByb3Blcmx5OgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAg
IC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoQGEsIC4uLikKKyAg
ICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBAYSkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRk
KEBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gV2l0aG91dCBhbiBpbnRl
cm1lZGlhdGUgbm9kZSBhbmQganVzdCBsYWJlbGluZyB0aGUgdXNlcywgd2Ugd2lsbCBnZXQ6Cisg
ICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAv
LyBiOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4s
IFVudHlwZWQ6QGEpCisgICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQor
ICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEFuZCBub3cgdGhlIGMtPlVudHlwZWQ6QGEg
ZWRnZSB3aWxsIGJveCB0aGUgdmFsdWUgb2YgQGEgaW50byBhIGRvdWJsZS4gVGhpcworICAgICAg
ICAgICAgLy8gaXMgYmFkLCBiZWNhdXNlIG5vdyB0aGUgZC0+SW50NDg6QGEgZWRnZSB3aWxsIGVp
dGhlciBoYXZlIHRvIGRvIGRvdWJsZS10by1pbnQKKyAgICAgICAgICAgIC8vIGNvbnZlcnNpb25z
LCBvciB3aWxsIGhhdmUgdG8gT1NSIGV4aXQgdW5jb25kaXRpb25hbGx5LiBBbHRlcm5hdGl2ZWx5
IHdlIGNvdWxkCisgICAgICAgICAgICAvLyBoYXZlIHRoZSBjLT5VbnR5cGVkOkBhIGVkZ2UgYm94
IHRoZSB2YWx1ZSBieSBjb3B5aW5nIHJhdGhlciB0aGFuIGluLXBsYWNlLgorICAgICAgICAgICAg
Ly8gQnV0IHRoZXNlIGJveGluZ3MgYXJlIGFsc28gY29zdGx5IHNvIHRoaXMgd291bGRuJ3QgYmUg
Z3JlYXQuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gVGhlIHNvbHV0aW9uIHdlIHVz
ZSBpcyB0byBhbHdheXMgaGF2ZSBub24tSW50NDggdXNlcyBvZiBwcmVkaWN0ZWQgSW50NDgncyB1
c2UKKyAgICAgICAgICAgIC8vIGFuIGludGVydmVuaW5nIEludDQ4VG9WYWx1ZSBub2RlOgorICAg
ICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8g
YjogQXJpdGhBZGQoSW50NDg6QGEsIC4uLikKKyAgICAgICAgICAgIC8vIHg6IEludDQ4VG9WYWx1
ZShJbnQ0ODpAYSkKKyAgICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBVbnR5cGVkOkB4KQorICAg
ICAgICAgICAgLy8gZDogQXJpdGhBZGQoSW50NDg6QGEsIC4uLikKKyAgICAgICAgICAgIC8vCisg
ICAgICAgICAgICAvLyBOb3RlIHRoYXQgZXZlbiBpZiB3ZSBoYWQgbXVsdGlwbGUgbm9uLWludDQ4
IHVzZXMgb2YgQGEsIHRoZSBtdWx0aXBsZQorICAgICAgICAgICAgLy8gSW50NDhUb1ZhbHVlJ3Mg
d291bGQgZ2V0IENTRSdkIHRvZ2V0aGVyLiBTbyB0aGUgYm94aW5nIHdvdWxkIG9ubHkgaGFwcGVu
IG9uY2UuCisgICAgICAgICAgICAvLyBBdCB0aGUgc2FtZSB0aW1lLCBAYSB3b3VsZCBjb250aW51
ZSB0byBiZSByZXByZXNlbnRlZCBhcyBhIG5hdGl2ZSBpbnQ0OC4KKyAgICAgICAgICAgIC8vCisg
ICAgICAgICAgICAvLyBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBoYXZlIGJlZW4gdG8gaW5zZXJ0IFRv
TmF0aXZlSW50NDggbm9kZXMgb24gaW50NDggdXNlcyBvZgorICAgICAgICAgICAgLy8gaW50NDgn
cy4gVGhpcyB3b3VsZCBoYXZlIGhhbmRsZWQgdGhlIGFib3ZlIGV4YW1wbGUgYnV0IHdvdWxkIGZh
bGwgb3ZlciBmb3I6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4
CisgICAgICAgICAgICAvLyBiOiBDYWxsKC4uLiwgQGEpCisgICAgICAgICAgICAvLyBjOiBBcml0
aEFkZChAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEJ1dCB0aGUgc29s
dXRpb24gd2UgdXNlIGhhbmRsZXMgdGhlIGFib3ZlIGdyYWNlZnVsbHkuCisgICAgICAgICAgICAK
KyAgICAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPE1hY2hpbmVJbnRVc2U+KGVkZ2Uubm9k
ZSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0lu
dDQ4LCBJbnQ0OFRvVmFsdWUsCisgICAgICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9y
aWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTWFjaGluZUludFVzZSkpOworICAgICAgICAgICAgZWRn
ZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8dXNlS2luZD4oZWRnZS5u
b2RlKCkpOworICAgICAgICAKICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKHVzZUtpbmQpOwogICAg
IH0KICAgICAKQEAgLTEzNzgsNyArMTQ4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmplY3RJ
bnQzMlRvRG91YmxlTm9kZShFZGdlJiBlZGdlLCBVc2VLaW5kIHVzZUtpbmQgPSBOdW1iZXJVc2Us
IFNwZWN1bGF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCiAg
ICAgewogICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAot
ICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0OCwgSW50MzJUb0RvdWJsZSwKKyAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDhBc0RvdWJsZSwgSW50MzJUb0RvdWJs
ZSwKICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2Rl
KCksIE51bWJlclVzZSkpOwogICAgICAgICBpZiAoZGlyZWN0aW9uID09IEZvcndhcmRTcGVjdWxh
dGlvbikKICAgICAgICAgICAgIHJlc3VsdC0+bWVyZ2VGbGFncyhOb2RlRXhpdHNGb3J3YXJkKTsK
QEAgLTE0MzQsMTMgKzE1MzcsMjAgQEAgcHJpdmF0ZToKICAgICBib29sIGF0dGVtcHRUb01ha2VJ
bnRlZ2VyQWRkKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBBZGRTcGVjdWxhdGlvbk1vZGUg
bW9kZSA9IG1fZ3JhcGguYWRkU3BlY3VsYXRpb25Nb2RlKG5vZGUpOwotICAgICAgICBpZiAobW9k
ZSA9PSBEb250U3BlY3VsYXRlSW50MzIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmIChtb2RlICE9IERvbnRTcGVjdWxhdGVJbnQzMikgeworICAgICAgICAgICAgdHJ1bmNh
dGVDb25zdGFudHNJZk5lY2Vzc2FyeShub2RlLCBtb2RlKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICB0cnVuY2F0ZUNvbnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUsIG1vZGUp
OwotICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFj
aGluZUludChub2RlKSkgeworICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGJvb2wgYXR0ZW1wdFRvTWFr
ZUdldEFycmF5TGVuZ3RoKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDYgKzQxLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEZsdQogICAg
IGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWRJbnQzMiIpOwog
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIG91dC5wcmlu
dCgiRmx1c2hlZEludDMyIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZsdXNoZWREb3Vi
bGU6CiAgICAgICAgIG91dC5wcmludCgiRmx1c2hlZERvdWJsZSIpOwogICAgICAgICByZXR1cm47
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZp
c2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogZW51bSBGbHVzaEZvcm1hdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNo
ZWRJbnQzMiwKKyAgICBGbHVzaGVkSW50NDgsCiAgICAgRmx1c2hlZERvdWJsZSwKICAgICBGbHVz
aGVkQ2VsbCwKICAgICBGbHVzaGVkQm9vbGVhbiwKQEAgLTU1LDYgKzU2LDggQEAgaW5saW5lIE5v
ZGVGbGFncyByZXN1bHRGb3IoRmx1c2hGb3JtYXQgZgogICAgICAgICByZXR1cm4gTm9kZVJlc3Vs
dEpTOwogICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdElu
dDMyOworICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICByZXR1cm4gTm9kZVJlc3VsdElu
dDQ4OwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRO
dW1iZXI7CiAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKQEAgLTc0LDYgKzc3LDggQEAgaW5saW5l
IFVzZUtpbmQgdXNlS2luZEZvcihGbHVzaEZvcm1hdCBmbwogICAgICAgICByZXR1cm4gQ2VsbFVz
ZTsKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMyVXNlOworICAg
IGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICByZXR1cm4gTWFjaGluZUludFVzZTsKICAgICBj
YXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAgIHJldHVybiBOdW1iZXJVc2U7CiAgICAgY2FzZSBG
bHVzaGVkQm9vbGVhbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJh
dGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dl
bmVyYXRpb25JbmZvLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsMTkg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBE
YXRhRm9ybWF0SW50MzIpOwogICAgIH0KKyAgICB2b2lkIGluaXRJbnQ0OChOb2RlKiBub2RlLCB1
aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHJlZywgRGF0YUZvcm1hdCBmb3JtYXQpCisgICAgewor
ICAgICAgICBBU1NFUlQoZm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBmb3JtYXQgPT0gRGF0
YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgcmVn
LCBmb3JtYXQpOworICAgIH0KKyAgICB2b2lkIGluaXRJbnQ0OChOb2RlKiBub2RlLCB1aW50MzJf
dCB1c2VDb3VudCwgR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIGluaXRHUFIobm9kZSwgdXNl
Q291bnQsIHJlZywgRGF0YUZvcm1hdEludDQ4KTsKKyAgICB9CisgICAgdm9pZCBpbml0U3RyaWN0
SW50NDgoTm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyByZWcpCisgICAgewor
ICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCByZWcsIERhdGFGb3JtYXRTdHJpY3RJbnQ0
OCk7CisgICAgfQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCBpbml0SlNWYWx1ZShOb2Rl
KiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIGdwciwgRGF0YUZvcm1hdCBmb3JtYXQg
PSBEYXRhRm9ybWF0SlMpCiAgICAgewpAQCAtMTg3LDYgKzIwMCwxMSBAQCBwdWJsaWM6CiAgICAg
Ly8gR2V0IHRoZSBmb3JtYXQgb2YgdGhlIHZhbHVlIGFzIGl0IGlzIHNwaWxsZWQgaW4gdGhlIEpT
U3RhY2sgKG9yICdub25lJykuCiAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCgpIHsgcmV0dXJu
IG1fc3BpbGxGb3JtYXQ7IH0KICAgICAKKyAgICBib29sIGlzRm9ybWF0KERhdGFGb3JtYXQgZXhw
ZWN0ZWRGb3JtYXQpCisgICAgeworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JtYXQoKSA9PSBl
eHBlY3RlZEZvcm1hdCB8fCBzcGlsbEZvcm1hdCgpID09IGV4cGVjdGVkRm9ybWF0OworICAgIH0K
KyAgICAKICAgICBib29sIGlzSlNGb3JtYXQoRGF0YUZvcm1hdCBleHBlY3RlZEZvcm1hdCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBKU0M6OmlzSlNGb3JtYXQocmVnaXN0ZXJGb3JtYXQoKSwgZXhw
ZWN0ZWRGb3JtYXQpIHx8IEpTQzo6aXNKU0Zvcm1hdChzcGlsbEZvcm1hdCgpLCBleHBlY3RlZEZv
cm1hdCk7CkBAIC0xOTcsNiArMjE1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlzSlNG
b3JtYXQoRGF0YUZvcm1hdEpTSW50MzIpOwogICAgIH0KICAgICAKKyAgICBib29sIGlzSW50NDgo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzRm9ybWF0KERhdGFGb3JtYXRJbnQ0OCk7CisgICAg
fQorICAgIAorICAgIGJvb2wgaXNTdHJpY3RJbnQ0OCgpCisgICAgeworICAgICAgICByZXR1cm4g
aXNGb3JtYXQoRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICB9CisgICAgCiAgICAgYm9vbCBp
c0pTRG91YmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBpc0pTRm9ybWF0KERhdGFGb3JtYXRK
U0RvdWJsZSk7CkBAIC0zMTQsNiArMzQyLDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGZp
bGxHUFIoc3RyZWFtLCBncHIsIERhdGFGb3JtYXRJbnQzMik7CiAgICAgfQorICAgIHZvaWQgZmls
bEludDQ4KFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwciwgRGF0YUZvcm1h
dCBmb3JtYXQpCisgICAgeworICAgICAgICBBU1NFUlQoZm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0
OCB8fCBmb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAgICAgZmlsbEdQUihz
dHJlYW0sIGdwciwgZm9ybWF0KTsKKyAgICB9CisgICAgdm9pZCBmaWxsSW50NDgoVmFyaWFibGVF
dmVudFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgZmlsbEdQUihz
dHJlYW0sIGdwciwgRGF0YUZvcm1hdEludDQ4KTsKKyAgICB9CisgICAgdm9pZCBmaWxsU3RyaWN0
SW50NDgoVmFyaWFibGVFdmVudFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByKQorICAgIHsKKyAg
ICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICB9
CiAgICAgdm9pZCBmaWxsQm9vbGVhbihWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJl
ZyBncHIpCiAgICAgewogICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0Qm9v
bGVhbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNp
b24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzNiwxNCArMjM2LDE0IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgaWYgKG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQp
KQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiYXJnIiwgb3BlcmFuZFRvQXJndW1lbnQo
b3BlcmFuZCksICIoIiwgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcCgqdGhpcywgdmFyaWFibGVBY2Nl
c3NEYXRhKSwgIikiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAiciIsIG9wZXJhbmQsICIoIiwgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcCgqdGhpcywgdmFyaWFi
bGVBY2Nlc3NEYXRhKSwgIikiKTsKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImxvYyIs
IG9wZXJhbmRUb0xvY2FsKG9wZXJhbmQpLCAiKCIsIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAoKnRo
aXMsIHZhcmlhYmxlQWNjZXNzRGF0YSksICIpIik7CiAgICAgfQogICAgIGlmIChub2RlLT5oYXNV
bmxpbmtlZExvY2FsKCkpIHsKICAgICAgICAgaW50IG9wZXJhbmQgPSBub2RlLT51bmxpbmtlZExv
Y2FsKCk7CiAgICAgICAgIGlmIChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKSkKICAgICAgICAg
ICAgIG91dC5wcmludChjb21tYSwgImFyZyIsIG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiciIsIG9wZXJhbmQp
OworICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgb3BlcmFuZFRvTG9jYWwob3Bl
cmFuZCkpOwogICAgIH0KICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnRCdWZmZXIoKSkgewogICAg
ICAgICBvdXQucHJpbnQoY29tbWEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDE1NTgyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsOCArMzEzLDggQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RT
dGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgICAgICAgICAgLy8gYmVmb3JlIGFuZCBhZnRlciBzZXR0
aW5nIGl0LgogICAgICAgICAgICAgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkg
PT0gRmx1c2hlZERvdWJsZSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCghKHNvdXJjZS5tX3R5
cGUgJiB+U3BlY051bWJlcikpOwotICAgICAgICAgICAgICAgIEFTU0VSVCghIShzb3VyY2UubV90
eXBlICYgflNwZWNEb3VibGUpID09ICEhKHNvdXJjZS5tX3R5cGUgJiBTcGVjSW50MzIpKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoIShzb3VyY2UubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKSk7
CisgICAgICAgICAgICAgICAgQVNTRVJUKCEhKHNvdXJjZS5tX3R5cGUgJiB+U3BlY0RvdWJsZSkg
PT0gISEoc291cmNlLm1fdHlwZSAmIFNwZWNNYWNoaW5lSW50KSk7CiAgICAgICAgICAgICAgICAg
aWYgKCEoc291cmNlLm1fdHlwZSAmIH5TcGVjRG91YmxlKSkgewogICAgICAgICAgICAgICAgICAg
ICBzb3VyY2UubWVyZ2UoU3BlY0ludDQ4QXNEb3VibGUpOwogICAgICAgICAgICAgICAgICAgICBz
b3VyY2UuZmlsdGVyKFNwZWNEb3VibGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDkgQEAg
dm9pZCBKSVRDb2RlOjpyZWNvbnN0cnVjdCgKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
QXNVbmJveGVkSW50MzI6CiAgICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGV4ZWMtPnIob3Bl
cmFuZCkudW5ib3hlZEludDMyKCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OgorICAgICAgICAgICAgdmFsdWUgPSBqc051
bWJlcihleGVjLT5yKG9wZXJhbmQpLnVuYm94ZWRJbnQ0OCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU6CiAgICAgICAg
ICAgICB2YWx1ZSA9IGpzRG91YmxlTnVtYmVyKGV4ZWMtPnIob3BlcmFuZCkudW5ib3hlZERvdWJs
ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQxLDEyICsxMjQxLDEyIEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZU51bWJlcigpCiAgICAgewotICAgICAg
ICByZXR1cm4gaXNOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgICAgICByZXR1
cm4gaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAg
ICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChwcmVkaWN0
aW9uKCkpOworICAgICAgICByZXR1cm4gaXNGdWxsTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdE
ZWZpbmVkKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3Vs
YXRlQm9vbGVhbigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFn
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdz
LmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZUZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogI2RlZmluZSBOb2RlUmVzdWx0SlMgICAgICAgICAgICAgICAgICAg
ICAweDAwMDEKICNkZWZpbmUgTm9kZVJlc3VsdE51bWJlciAgICAgICAgICAgICAgICAgMHgwMDAy
CiAjZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAgICAgICAgIDB4MDAwMwotI2RlZmlu
ZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAwMDQKLSNkZWZpbmUgTm9kZVJl
c3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA1CisjZGVmaW5lIE5vZGVSZXN1bHRJbnQ0
OCAgICAgICAgICAgICAgICAgIDB4MDAwNAorI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAg
ICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAg
ICAgMHgwMDA2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogI2RlZmluZSBOb2Rl
TXVzdEdlbmVyYXRlICAgICAgICAgICAgICAgICAweDAwMDggLy8gc2V0IG9uIG5vZGVzIHRoYXQg
aGF2ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxseSBiZSByZW1vdmVkIGJ5IERD
RS4KICNkZWZpbmUgTm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAgICAgICAgMHgwMDEwCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNTU4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExNCw2ICsxMTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKEludDMyVG9Eb3VibGUsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICAvKiBVc2Vk
IHRvIHNwZWN1bGF0ZSB0aGF0IGEgZG91YmxlIHZhbHVlIGlzIGFjdHVhbGx5IGFuIGludGVnZXIu
ICovXAogICAgIG1hY3JvKERvdWJsZUFzSW50MzIsIE5vZGVSZXN1bHRJbnQzMiB8IE5vZGVFeGl0
c0ZvcndhcmQpIFwKKyAgICAvKiBVc2VkIHRvIHNlcGFyYXRlIHJlcHJlc2VudGF0aW9uIGFuZCBy
ZWdpc3RlciBhbGxvY2F0aW9uIG9mIEludDQ4J3MgcmVwcmVzZW50ZWQgKi9cCisgICAgLyogYXMg
dmFsdWVzLiAqL1wKKyAgICBtYWNybyhJbnQ0OFRvVmFsdWUsIE5vZGVSZXN1bHRKUykgXAorICAg
IG1hY3JvKEludDQ4VG9Eb3VibGUsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBcCiAgICAgLyog
Tm9kZXMgZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCiAgICAgbWFjcm8oQXJpdGhBZGQs
IE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC0zNTYsNiArMzYwLDE3
IEBAIGlubGluZSB1bnNpZ25lZCBmb3J3YXJkUmV3aXJpbmdTZWxlY3Rpb24KICAgICAgICAgLy8g
VGhpcyBsb3NlcyBpbmZvcm1hdGlvbi4gT25seSB1c2UgaXQgaWYgdGhlcmUgYXJlIG5vIGJldHRl
ciBhbHRlcm5hdGl2ZXMuCiAgICAgICAgIHJldHVybiAyNTsKICAgICAgICAgCisgICAgY2FzZSBJ
bnQ0OFRvVmFsdWU6CisgICAgICAgIC8vIExvc2VzIG5vIGluZm9ybWF0aW9uLiBJdCBqdXN0IGJv
eGVzIHRoZSB2YWx1ZSwgd2hpY2ggaXMgd2hhdCBPU1Igd2FudHMKKyAgICAgICAgLy8gdG8gZG8g
YW55d2F5LgorICAgICAgICByZXR1cm4gMTAwOworICAgICAgICAKKyAgICBjYXNlIEludDQ4VG9E
b3VibGU6CisgICAgICAgIC8vIFRoaXMgaXMgbGlrZSBJbnQzMlRvRG91YmxlOyB3ZSBjYW4gdXNl
IGl0IGJlY2F1c2UgaXQgZ2l2ZXMgYSBzZW1hbnRpY2FsbHkKKyAgICAgICAgLy8gZXF1aXZhbGVu
dCB2YWx1ZSBidXQgdGhhdCB2YWx1ZSBtYXkgYmUgYW4gaW50MzIgaW4gYSBkb3VibGUsIHNvIHdl
J2QKKyAgICAgICAgLy8gcmF0aGVyIG5vdCBpZiB3ZSBjYW4gYXZvaWQgaXQuCisgICAgICAgIHJl
dHVybiA3NTsKKyAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXI2NC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNiArMTk1
LDggQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICBj
YXNlIEluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICBjYXNl
IFVJbnQzMkluR1BSOgorICAgICAgICBjYXNlIFVuYm94ZWRJbnQ0OEluR1BSOgorICAgICAgICBj
YXNlIFVuYm94ZWRTdHJpY3RJbnQ0OEluR1BSOgogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChy
ZWNvdmVyeS5ncHIoKSwgc2NyYXRjaCArIGluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgCkBAIC0yMzUsMTIgKzIzNywxNSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29t
cGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAg
ICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIERvdWJsZURpc3Bs
YWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAg
ICAgICAgY2FzZSBTdHJpY3RJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIG1f
aml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVjb3ZlcnkudmlydHVhbFJl
Z2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQ
UkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6CiAg
ICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKKyAgICAgICAgY2Fz
ZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAgICAgICAgICBtX2ppdC5sb2Fk
NjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpLCBHUFJJbmZvOjpyZWdUMCk7
CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5k
ZXgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzQsMzQgKzI3OSw1OSBAQCB2b2lkIE9TUkV4
aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0
KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBbHJlYWR5SW5K
U1N0YWNrQXNVbmJveGVkRG91YmxlOgotICAgICAgICBjYXNlIEluRlBSOgotICAgICAgICBjYXNl
IERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1Qw
KTsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86
OmZwUmVnVDApOwotICAgICAgICAgICAgbV9qaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAs
IEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVn
VDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWRJbnQ0ODoKKyAgICAgICAgY2FzZSBVbmJveGVkSW50NDhJbkdQUjoKKyAgICAgICAgY2FzZSBV
bmJveGVkU3RyaWN0SW50NDhJbkdQUjoKKyAgICAgICAgY2FzZSBJbnQ0OERpc3BsYWNlZEluSlNT
dGFjazoKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKICAgICAg
ICAgY2FzZSBVSW50MzJJbkdQUjogewogICAgICAgICAgICAgbV9qaXQubG9hZDY0KHNjcmF0Y2gg
KyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMy
VG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6SnVtcCBwb3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKAotICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6R3JlYXRlclRoYW5PckVxdWFsLAotICAgICAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7Ci0gICAg
ICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5m
bzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5hZGREb3VibGUoCi0gICAgICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJkFzc2VtYmx5SGVscGVyczo6dHdv
VG9UaGUzMiksCi0gICAgICAgICAgICAgICAgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIC8vIENvbnZlcnQgaXQgdG8gYW4gaW50NjQuCisgICAgICAgICAgICBz
d2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CisgICAgICAgICAgICBjYXNlIEFscmVhZHlJ
bkpTU3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgICAgIGNhc2UgVW5ib3hlZEludDQ4SW5H
UFI6CisgICAgICAgICAgICBjYXNlIEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAg
ICAgICAgIG1faml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDE2KSwg
R1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgY2FzZSBVSW50MzJJbkdQUjoKKyAgICAgICAgICAgICAgICBtX2ppdC56
ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgLy8gSXMgaXQgYW4gaW50MzI/CisgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5k
MzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpKdW1wIGlzSW50MzIgPSBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OkVxdWFsLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVn
VDEpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBOb3BlLCBpdCdzIG5vdCwgYnV0IHJl
Z1QwIGNvbnRhaW5zIHRoZSBpbnQ2NCB2YWx1ZS4KKyAgICAgICAgICAgIG1faml0LmNvbnZlcnRJ
bnQ2NFRvRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAg
ICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CiAg
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAg
ICAgICAgICAgIHBvc2l0aXZlLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaXNJbnQzMi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJU
b1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQu
b3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAgICAgICAgIAogICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAK
ICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJs
ZToKKyAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpT
U3RhY2s6CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBtX2pp
dC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAg
ICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Cisg
ICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoCiAgICAg
ICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2Rl
KHJlY292ZXJ5LmNvbnN0YW50KCkpKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQ
cmVkaWN0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKCFpc051
bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKKyAgICAgICAgaWYgKCFpc0Z1bGxOdW1iZXJTcGVjdWxh
dGlvbih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gU3BlY0RvdWJsZTsKICAgICAgICAgaWYg
KHZhbHVlICYgU3BlY0RvdWJsZU5hTikKICAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlOwpA
QCAtMjAzLDcgKzIwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobm9kZUNhblNwZWN1
bGF0ZUludDMyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY051bWJlcik7CisgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0J5dGVjb2RlTnVtYmVy
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIxMiwxNCArMjEyLDE0IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG5vZGUtPmNoaWxk
MigpLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChsZWZ0ICYm
IHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3Rp
bmdEZWZpbmVkKGxlZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHJp
Z2h0KSkgeworICAgICAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4cGVj
dGluZ0RlZmluZWQobGVmdCkgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZp
bmVkKHJpZ2h0KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5hZGRTcGVjdWxh
dGlvbk1vZGUobm9kZSkgIT0gRG9udFNwZWN1bGF0ZUludDMyKQogICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5v
ZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
U3BlY0ludDQ4KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oc3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQ
cmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIShs
ZWZ0ICYgU3BlY051bWJlcikgfHwgIShyaWdodCAmIFNwZWNOdW1iZXIpKSB7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICghKGxlZnQgJiBTcGVjRnVsbE51bWJlcikgfHwgIShyaWdodCAmIFNw
ZWNGdWxsTnVtYmVyKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBsZWZ0IG9yIHJpZ2h0IGlz
IGRlZmluaXRlbHkgc29tZXRoaW5nIG90aGVyIHRoYW4gYSBudW1iZXIuCiAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmcpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZQpAQCAtMzY4LDEwICszNjgsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6IHsKKyAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQx
KCktPnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlm
ICghbm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVGbG9hdDMyQXJyYXkoKQogICAgICAgICAgICAgICAgIHx8IG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihub2RlLT5nZXRIZWFwUHJl
ZGljdGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24oU3BlY0ludDMyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ0OCk7CisgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLT5nZXRI
ZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC01NjYs
NiArNTc2LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1dhdGNoZG9nVGltZXI6CiAg
ICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CisgICAgICAg
IGNhc2UgSW50NDhUb1ZhbHVlOgorICAgICAgICBjYXNlIEludDQ4VG9Eb3VibGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdldHMgaWdub3JlZCBi
ZWNhdXNlIGl0IGFscmVhZHkgaGFzIGEgcHJlZGljdGlvbi4KQEAgLTY0MCw3ICs2NTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgRG91YmxlQmFsbG90IGJhbGxv
dDsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9u
RXhwZWN0aW5nRGVmaW5lZChsZWZ0KSAmJiBpc051bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVm
aW5lZChyaWdodCkKKyAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4cGVj
dGluZ0RlZmluZWQobGVmdCkgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZp
bmVkKHJpZ2h0KQogICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0
ZUludDMyKG5vZGUpKQogICAgICAgICAgICAgICAgIGJhbGxvdCA9IFZvdGVEb3VibGU7CiAgICAg
ICAgICAgICBlbHNlCkBAIC02NTcsNyArNjY5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIERvdWJsZUJhbGxvdCBiYWxsb3Q7CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc051bWJlclNwZWN1
bGF0aW9uKHJpZ2h0KQorICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGxl
ZnQpICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQogICAgICAgICAgICAgICAgICYm
ICFtX2dyYXBoLm11bFNob3VsZFNwZWN1bGF0ZUludDMyKG5vZGUpKQogICAgICAgICAgICAgICAg
IGJhbGxvdCA9IFZvdGVEb3VibGU7CiAgICAgICAgICAgICBlbHNlCkBAIC02NzcsNyArNjg5LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIERvdWJsZUJhbGxvdCBi
YWxsb3Q7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxh
dGlvbihsZWZ0KSAmJiBpc051bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQorICAgICAgICAgICAgaWYg
KGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGxlZnQpICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9u
KHJpZ2h0KQogICAgICAgICAgICAgICAgICYmICEoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50MzJG
b3JBcml0aG1ldGljKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgp
KSAmJiBub2RlLT5jYW5TcGVjdWxhdGVJbnQzMigpKSkKICAgICAgICAgICAgICAgICBiYWxsb3Qg
PSBWb3RlRG91YmxlOwogICAgICAgICAgICAgZWxzZQpAQCAtNzA2LDcgKzcxOCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gbm9kZS0+Y2hpbGQx
KCktPnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGlmIChpc0RvdWJsZVNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24pKQogICAgICAgICAgICAgICAgIG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT52
b3RlKFZvdGVEb3VibGUpOwotICAgICAgICAgICAgZWxzZSBpZiAoIWlzTnVtYmVyU3BlY3VsYXRp
b24ocHJlZGljdGlvbikgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAg
ICAgICAgZWxzZSBpZiAoIWlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IGlz
SW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAgICAgICBub2RlLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKS0+dm90ZShWb3RlVmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAgICAgICAgIGNhc2UgTm90
Q2VsbFVzZToKICAgICAgICAgY2FzZSBPdGhlclVzZToKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50
VXNlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgS25v
d25JbnQzMlVzZToKQEAgLTY5LDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgICAg
ICBpZiAobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIH5TcGVjTnVtYmVyKQorICAgICAg
ICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIp
CiAgICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIApAQCAtMjM5LDYgKzI0MCw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0
cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2Fz
ZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgIGNhc2UgTG9vcEhpbnQ6CisgICAgY2FzZSBJ
bnQ0OFRvRG91YmxlOgorICAgIGNhc2UgSW50NDhUb1ZhbHVlOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgCiAgICAgY2FzZSBHZXRCeVZhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCShyZXZpc2lv
biAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVy
U2F2ZVBsYW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBlbnVtIFNpbGVudFNw
aWxsQWN0aW9uIHsKIGVudW0gU2lsZW50RmlsbEFjdGlvbiB7CiAgICAgRG9Ob3RoaW5nRm9yRmls
bCwKICAgICBTZXRJbnQzMkNvbnN0YW50LAorICAgIFNldEludDQ4Q29uc3RhbnQsCisgICAgU2V0
U3RyaWN0SW50NDhDb25zdGFudCwKICAgICBTZXRCb29sZWFuQ29uc3RhbnQsCiAgICAgU2V0Q2Vs
bENvbnN0YW50LAogICAgIFNldFRydXN0ZWRKU0NvbnN0YW50LApAQCAtNjEsOCArNjMsMTIgQEAg
ZW51bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBMb2FkMzJUYWcsCiAgICAgTG9hZDMyUGF5bG9h
ZCwKICAgICBMb2FkMzJQYXlsb2FkQm94SW50LAorICAgIExvYWQzMlBheWxvYWRDb252ZXJ0VG9J
bnQ0OCwKKyAgICBMb2FkMzJQYXlsb2FkU2lnbkV4dGVuZCwKICAgICBMb2FkUHRyLAogICAgIExv
YWQ2NCwKKyAgICBMb2FkNjRTaGlmdFJpZ2h0MTYsCisgICAgTG9hZDY0U2hpZnRMZWZ0MTYsCiAg
ICAgTG9hZERvdWJsZSwKICAgICBMb2FkRG91YmxlQm94RG91YmxlLAogICAgIExvYWRKU1VuYm94
RG91YmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQw
LDQwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogI2lmIFVTRShKU1ZBTFVF
NjQpCiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJveEludDQ4KEdQUlJlZyBzb3VyY2VHUFIsIEdQ
UlJlZyB0YXJnZXRHUFIsIERhdGFGb3JtYXQgZm9ybWF0KQoreworICAgIEdQUlJlZyB0ZW1wR1BS
OworICAgIGlmIChzb3VyY2VHUFIgPT0gdGFyZ2V0R1BSKQorICAgICAgICB0ZW1wR1BSID0gYWxs
b2NhdGUoKTsKKyAgICBlbHNlCisgICAgICAgIHRlbXBHUFIgPSB0YXJnZXRHUFI7CisgICAgCisg
ICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CisKKyAgICBpZiAoZm9ybWF0ID09IERhdGFG
b3JtYXRJbnQ0OCkKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgc291
cmNlR1BSKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVChmb3JtYXQgPT0gRGF0YUZvcm1hdFN0
cmljdEludDQ4KTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihzb3VyY2VHUFIsIHRlbXBH
UFIpOworICAgIAorICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzRG91YmxlID0gbV9qaXQuYnJhbmNo
NjQoCisgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc291cmNlR1BSLCB0ZW1wR1BSKTsK
KyAgICAKKyAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihzb3VyY2VHUFIsIHRhcmdldEdQUik7
CisgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRhcmdldEdQ
Uik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAKKyAg
ICBpc0RvdWJsZS5saW5rKCZtX2ppdCk7CisgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUo
c291cmNlR1BSLCBmcHIpOworICAgIGJveERvdWJsZShmcHIsIHRhcmdldEdQUik7CisgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CisgICAgCisgICAgaWYgKHRlbXBHUFIgIT0gdGFyZ2V0R1BSKQorICAg
ICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgCisgICAgdW5sb2NrKGZwcik7Cit9CisKIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogewogICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKQEAgLTY5
LDExICsxMDMsMjIgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGlu
Zm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFs
UmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAgIGlmIChzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0SW50MzIpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3BpbGxGb3JtYXQp
IHsKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7CiAgICAgICAgICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7CiAgICAgICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsIGdwcik7CiAgICAgICAgICAgICAgICAgc3BpbGxGb3JtYXQgPSBEYXRhRm9ybWF0SlNJ
bnQzMjsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIERhdGFGb3JtYXRJ
bnQ0ODoKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdp
c3RlciksIGdwcik7CisgICAgICAgICAgICAgICAgYm94SW50NDgoZ3ByLCBncHIsIHNwaWxsRm9y
bWF0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBtX2ppdC5s
b2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKICAg
ICAgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSkgewogICAg
ICAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGJveCB0aGUgZG91YmxlLCBzaW5jZSB3ZSB3YW50
IGEgSlNWYWx1ZS4KQEAgLTgxLDYgKzEyNiw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bEpTVmFsdWUoRWRnZSAKICAgICAgICAgICAgICAgICAgICAgc3BpbGxGb3JtYXQgPSBEYXRhRm9y
bWF0SlNEb3VibGU7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUo
Km1fc3RyZWFtLCBncHIsIHNwaWxsRm9ybWF0KTsKICAgICAgICAgfQpAQCAtMTEzLDYgKzE1OSwx
NiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAKICAgICAgICAg
cmV0dXJuIGdwcjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4Ogor
ICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBp
bmZvLmdwcigpOworICAgICAgICBsb2NrKGdwcik7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSBhbGxvY2F0ZSgpOworICAgICAgICBib3hJbnQ0OChncHIsIHJlc3VsdEdQUiwgaW5mby5yZWdp
c3RlckZvcm1hdCgpKTsKKyAgICAgICAgdW5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiByZXN1
bHRHUFI7CisgICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKICAgICAgICAgLy8gTm8g
cmV0YWcgcmVxdWlyZWQgb24gSlNWQUxVRTY0IQpAQCAtNzY4LDcgKzgyNCw3IEBAIEdQUlJlZyBT
cGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgCiAgICAgICAgIERhdGFG
b3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAgICAgICAgIAotICAgICAg
ICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRJbnQzMik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZv
cm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyIHx8
IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9y
bWF0U3RyaWN0SW50NDgpOwogICAgICAgICAKICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZp
cnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwogICAgICAgICAKQEAgLTc4OSw2ICs4
NDUsMzYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAg
ICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEpTSW50MzI7CiAgICAgICAgICAgICByZXR1
cm4gZ3ByOwogICAgICAgICB9CisgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
SW50NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAg
ICAgICAvLyBHZW5lcmFsbHksIHRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIHdlJ3ZlIGFscmVhZHkg
cHJvdmVkIHRoYXQgdGhlCisgICAgICAgICAgICAvLyB2YWx1ZSBpcyBhbiBpbnQzMi4gVGhhdCdz
IGJlY2F1c2UgaWYgYSB2YWx1ZSBvcmlnaW5hdGVkIGFzIGEgSlNWYWx1ZQorICAgICAgICAgICAg
Ly8gdGhlbiB3ZSB3b3VsZCBzcGVjdWxhdGUgdGhhdCBpdCdzIGFuIGludDMyIGJlZm9yZSByZXBy
ZXNlbnRpbmcgaXQgYXMKKyAgICAgICAgICAgIC8vIGFuIGludDQ4LiBPdGhlcndpc2UsIGlmIHdl
IGtub3dpbmdseSBwcm9kdWNlZCBhbiBpbnQ0OCwgdGhlbiB3ZSB3b3VsZAorICAgICAgICAgICAg
Ly8gYmUgYm94aW5nIGl0IGludG8gYSB2YWx1ZSB1c2luZyBJbnQ0OFRvVmFsdWUuIFRoaXMgYXNz
ZXJ0aW9uIGlzIHZhbGlkCisgICAgICAgICAgICAvLyBvbmx5IGJlY2F1c2UgSW50NDggaXMgc29t
ZXRoaW5nIHRoYXQgd2UgaW50cm9kdWNlIGF0IHByZWRpY3Rpb24gdGltZS4KKyAgICAgICAgICAg
IC8vIEhvd2V2ZXI6IHdlIG1heSBoYXZlIGFuIGludDMyLXByb2R1Y2luZyBub2RlIHJlcGxhY2Vk
IGJ5IGFuCisgICAgICAgICAgICAvLyBpbnQ0OC1wcm9kdWNpbmcgbm9kZSBkdWUgdG8gQ1NFLiBT
byB3ZSBtdXN0IGRvIGEgY2hlY2suCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5cGUg
JiB+U3BlY01hY2hpbmVJbnQpKTsKKyAgICAgICAgICAgIGlmICh0eXBlICYgU3BlY0ludDQ4KSB7
CisgICAgICAgICAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAg
ICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGdwciwgdGVtcCk7CisgICAgICAgICAgICAgICAg
Ly8gQ3VycmVudGx5LCB3ZSBjYW4ndCBzdXBwbHkgdmFsdWUgcHJvZmlsaW5nIGluZm9ybWF0aW9u
IGhlcmUuIDotLworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAg
ICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgZ3ByLCB0ZW1wKSk7Cisg
ICAgICAgICAgICAgICAgdW5sb2NrKHRlbXApOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIp
LCBncHIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
NjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAg
ICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAg
ICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwciwgZ3ByKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAg
ICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAgICAgICAgICAgIHJldHVybiBn
cHI7CisgICAgICAgIH0KICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAKICAgICAgICAgLy8gRmlsbCBhcyBKU1ZhbHVl
LCBhbmQgZmFsbCB0aHJvdWdoLgpAQCAtNzk3LDYgKzg4Myw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICB9CiAKICAgICBjYXNlIERhdGFGb3JtYXRKUzog
eworICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5cGUgJiBTcGVjSW50NDgpKTsKICAgICAgICAg
Ly8gQ2hlY2sgdGhlIHZhbHVlIGlzIGFuIGludGVnZXIuCiAgICAgICAgIEdQUlJlZyBncHIgPSBp
bmZvLmdwcigpOwogICAgICAgICBtX2dwcnMubG9jayhncHIpOwpAQCAtODQzLDYgKzkzMCwzNSBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIHJldHVy
bkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9Cisg
ICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OgorICAgIGNhc2UgRGF0YUZv
cm1hdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBH
UFJSZWcgcmVzdWx0OworICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwg
cmVzdWx0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvY2soZ3ByKTsKKyAgICAg
ICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IGdwcjsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5cGUgJiB+U3Bl
Y01hY2hpbmVJbnQpKTsKKyAgICAgICAgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRh
Rm9ybWF0SW50NDgpCisgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYp
LCByZXN1bHQpOworICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ0OCkgeworICAgICAgICAgICAg
R1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMy
VG9QdHIocmVzdWx0LCB0ZW1wKTsKKyAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qg
c3VwcGx5IHZhbHVlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
KSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIHJlc3VsdCwgdGVtcCkpOworICAgICAgICAgICAgdW5sb2NrKHRlbXApOworICAgICAg
ICB9CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOworICAgICAgICByZXR1cm4gZ3By
OworICAgIH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3Jt
YXRKU0RvdWJsZTogewpAQCAtODg1LDYgKzEwMDEsMTY3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitHUFJSZWcgU3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ0OChFZGdlIGVkZ2UsIERhdGFGb3JtYXQgZGVz
aXJlZEZvcm1hdCkKK3sKKyAgICBBU1NFUlQoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50
NDggfHwgZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgIEFic3Ry
YWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOworICAgIFNwZWN1bGF0ZWRU
eXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CisgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUs
IFNwZWNNYWNoaW5lSW50KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0g
ZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5l
cmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKworICAgIHN3
aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CisgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTog
eworICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYgIXZhbHVlT2ZKU0NvbnN0YW50
KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERh
dGFGb3JtYXREb3VibGUpIHsKKyAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0
aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBh
bGxvY2F0ZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBHUFJSZWcgZ3ByID0gYWxs
b2NhdGUoKTsKKworICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAg
ICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOworICAg
ICAgICAgICAgQVNTRVJUKGpzVmFsdWUuaXNNYWNoaW5lSW50KCkpOworICAgICAgICAgICAgbV9n
cHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKKyAg
ICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBqc1ZhbHVlLmFzTWFjaGluZUludCgpOworICAgICAg
ICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAg
ICAgIHZhbHVlID0gdmFsdWUgPDwgMTY7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNz
ZW1ibGVyOjpJbW02NCh2YWx1ZSksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxHUFIoKm1f
c3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8u
c3BpbGxGb3JtYXQoKTsKKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZv
cm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyIHx8
IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9y
bWF0U3RyaWN0SW50NDgpOworICAgICAgICAKKyAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZp
cnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAgICAKKyAgICAgICAgaWYg
KHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFG
b3JtYXRJbnQzMikgeworICAgICAgICAgICAgLy8gSWYgd2Uga25vdyB0aGlzIHdhcyBzcGlsbGVk
IGFzIGFuIGludGVnZXIgd2UgY2FuIGZpbGwgd2l0aG91dCBjaGVja2luZy4KKyAgICAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBn
cHIpOworICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoZ3ByLCBncHIpOworICAg
ICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7Cisg
ICAgICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NDgoKm1fc3RyZWFtLCBncHIpOworICAg
ICAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2pp
dC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxs
SW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAg
fQorICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9y
bWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgbV9qaXQubG9hZDY0
KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAg
ICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAg
ICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgICAgICAgICBtX2ppdC5s
c2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSW50
NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQor
ICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgZ3ByKTsKKworICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91
Z2guCisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRK
U0ludDMyKTsKKyAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOworICAgIH0KKworICAgIGNhc2Ug
RGF0YUZvcm1hdEpTOiB7CisgICAgICAgIC8vIENoZWNrIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2Vy
LiBOb3RlIHRoYXQgd2Ugd291bGQgKmxpa2UqIHRvIHVuYm94IGFuIEludDQ4CisgICAgICAgIC8v
IGF0IHRoaXMgcG9pbnQgYnV0IHRoaXMgaXMgdG9vIGNvc3RseS4gV2Ugb25seSAqcHJvdmUqIHRo
YXQgdGhpcyBpcyBhbiBJbnQ0OAorICAgICAgICAvLyBldmVuIHRob3VnaCB3ZSBjaGVjayBpZiBp
dCdzIGFuIGludDMyLgorICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIHJlc3VsdDsKKyAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7CisgICAg
ICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9qaXQubW92ZShncHIs
IHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2dwcnMubG9jayhncHIp
OworICAgICAgICAgICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3Jt
YXQpOworICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOworICAgICAgICB9CisgICAgICAgIGlmICh0
eXBlICYgflNwZWNJbnQzMikKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3MocmVzdWx0KSwgZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6
OkJlbG93LCByZXN1bHQsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAg
ICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHJlc3VsdCk7CisgICAgICAgIGlmIChk
ZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIG1faml0LmxzaGlm
dDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNJ
bnQzMjogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdDsKKyAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7CisgICAgICAgICAg
ICByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3Vs
dCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAg
ICAgICAgICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOworICAgICAgICB9CisgICAgICAgIG1faml0LnNpZ25F
eHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVzdWx0KTsKKyAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQg
PT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZElt
bTMyKDE2KSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBj
YXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5n
cHIoKTsKKyAgICAgICAgYm9vbCB3YXNMb2NrZWQgPSBtX2dwcnMuaXNMb2NrZWQoZ3ByKTsKKyAg
ICAgICAgbG9jayhncHIpOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0
U3RyaWN0SW50NDgpCisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICBpZiAod2FzTG9j
a2VkKSB7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0gYWxsb2NhdGUoKTsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICAgICAgdW5sb2NrKGdwcik7Cisg
ICAgICAgICAgICBncHIgPSByZXN1bHQ7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW5m
by5maWxsU3RyaWN0SW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICBtX2ppdC5sc2hpZnQ2
NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKyAg
ICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9
IGluZm8uZ3ByKCk7CisgICAgICAgIGJvb2wgd2FzTG9ja2VkID0gbV9ncHJzLmlzTG9ja2VkKGdw
cik7CisgICAgICAgIGxvY2soZ3ByKTsKKyAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0
YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgaWYgKHdhc0xv
Y2tlZCkgeworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAg
ICAgICBtX2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOwor
ICAgICAgICAgICAgZ3ByID0gcmVzdWx0OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGlu
Zm8uZmlsbEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1
c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBj
YXNlIERhdGFGb3JtYXREb3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CisgICAg
Y2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgorICAgIGNh
c2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46IHsKKyAg
ICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIDApOworICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICB9CisKKyAgICBjYXNl
IERhdGFGb3JtYXRTdG9yYWdlOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICB9Cit9CisKIEZQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlIGVkZ2UpCiB7CiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQpAQCAtODkyLDggKzExNjksOCBAQCBGUFJSZWcgU3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAjZW5kaWYKICAgICBBYnN0cmFjdFZhbHVl
JiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKICAgICBTcGVjdWxhdGVkVHlwZSB0eXBl
ID0gdmFsdWUubV90eXBlOwotICAgIEFTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bk51bWJl
clVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjTnVtYmVyKSk7Ci0gICAgbV9pbnRlcnByZXRl
ci5maWx0ZXIodmFsdWUsIFNwZWNOdW1iZXIpOworICAgIEFTU0VSVChlZGdlLnVzZUtpbmQoKSAh
PSBLbm93bk51bWJlclVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikpOwor
ICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjRnVsbE51bWJlcik7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOwog
ICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lz
dGVyKHZpcnR1YWxSZWdpc3Rlcik7CiAKQEAgLTk0NSw2ICsxMjIyLDI0IEBAIEZQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAgICAgIHVubG9jayhncHIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IERhdGFGb3JtYXRJbnQ0ODogeworICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7
CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9y
ZGVyU3BpbGxlZCk7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEludDQ4
KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERhdGFGb3JtYXRT
dHJpY3RJbnQ0ODogeworICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAg
ICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3Bp
bGxlZCk7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4
KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgR1BSUmVn
IGdwciA9IGFsbG9jYXRlKCk7CkBAIC05NzgsNyArMTI3Myw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0lu
dGVnZXIgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBqc1Zh
bHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogCi0gICAgICAgIGlmICh0
eXBlICYgflNwZWNOdW1iZXIpCisgICAgICAgIGlmICh0eXBlICYgflNwZWNGdWxsTnVtYmVyKQog
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhqc1ZhbHVl
R3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBqc1Zh
bHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKIAogICAgICAgICAvLyBG
aXJzdCwgaWYgd2UgZ2V0IGhlcmUgd2UgaGF2ZSBhIGRvdWJsZSBlbmNvZGVkIGFzIGEgSlNWYWx1
ZQpAQCAtMTAwOSw2ICsxMzA0LDI4IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZURvdWIKICAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZnBy
OwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAgICAg
RlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdw
cigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBHUFJSZWcgdGVtcCA9IGFs
bG9jYXRlKCk7CisgICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKKyAgICAgICAgbV9qaXQu
cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgdGVtcCk7CisgICAgICAgIG1faml0LmNvbnZlcnRJ
bnQ2NFRvRG91YmxlKHRlbXAsIGZwcik7CisgICAgICAgIHVubG9jayh0ZW1wKTsKKyAgICAgICAg
bV9ncHJzLnVubG9jayhncHIpOworICAgICAgICByZXR1cm4gZnByOworICAgIH0KKyAgICAgICAg
CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgRlBSUmVnIGZwciA9
IGZwckFsbG9jYXRlKCk7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAg
ICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShn
cHIsIGZwcik7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKKyAgICAgICAgcmV0dXJuIGZw
cjsKKyAgICB9CiAKICAgICAvLyBVbmJveCB0aGUgZG91YmxlCiAgICAgY2FzZSBEYXRhRm9ybWF0
SlNEb3VibGU6IHsKQEAgLTExMTEsNyArMTQyOCw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBjYXNl
IERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgotICAgIGNh
c2UgRGF0YUZvcm1hdEJvb2xlYW46IHsKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgorICAg
IGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7
CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQpAQCAtMTE5
NCw3ICsxNTEzLDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAog
ICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToK
ICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDogewor
ICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAg
Y2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRp
dmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICByZXR1
cm4gYWxsb2NhdGUoKTsKICAgICB9CkBAIC0xNTAzLDYgKzE4MjQsNDAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUludDMyQ29tcGFyZQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0Lmdw
cigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKIH0KIAordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUludDQ4Q29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxl
cjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgU3BlY3VsYXRlV2hpY2hl
dmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRl
V2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSwgb3AxKTsKKyAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisgICAgCisgICAg
bV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5n
cHIoKSk7CisgICAgCisgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3Vs
ZCB1c2UgaXQgaGVyZS4KKyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwg
cmVzdWx0LmdwcigpKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jdXJyZW50
Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQZWVwSG9sZUludDQ4QnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsIEpJ
VENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBCYXNpY0Js
b2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPnRha2VuQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBu
b3RUYWtlbiA9IGJyYW5jaE5vZGUtPm5vdFRha2VuQmxvY2soKTsKKworICAgIC8vIFRoZSBicmFu
Y2ggaW5zdHJ1Y3Rpb24gd2lsbCBicmFuY2ggdG8gdGhlIHRha2VuIGJsb2NrLgorICAgIC8vIElm
IHRha2VuIGlzIG5leHQsIHN3aXRjaCB0YWtlbiB3aXRoIG5vdFRha2VuICYgaW52ZXJ0IHRoZSBi
cmFuY2ggY29uZGl0aW9uIHNvIHdlIGNhbiBmYWxsIHRocm91Z2guCisgICAgaWYgKHRha2VuID09
IG5leHRCbG9jaygpKSB7CisgICAgICAgIGNvbmRpdGlvbiA9IEpJVENvbXBpbGVyOjppbnZlcnQo
Y29uZGl0aW9uKTsKKyAgICAgICAgQmFzaWNCbG9jayogdG1wID0gdGFrZW47CisgICAgICAgIHRh
a2VuID0gbm90VGFrZW47CisgICAgICAgIG5vdFRha2VuID0gdG1wOworICAgIH0KKyAgICAKKyAg
ICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNo
aWxkMSgpLCBvcDEpOworICAgIAorICAgIGJyYW5jaDY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBv
cDIuZ3ByKCksIHRha2VuKTsKKyAgICBqdW1wKG5vdFRha2VuKTsKK30KKwogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURvdWJsZUNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6
OkRvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24pCiB7CiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTkwNiw2ICsyMjYxLDE2IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6IHsKKyAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgICAgICBtX2ppdC5s
b2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSksIHJlc3VsdC5ncHIo
KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVn
aXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRh
aW4ocmVzdWx0LmdwcigpLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAgICAg
ICAgICBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKS5p
bml0SW50NDgobm9kZSwgbm9kZS0+cmVmQ291bnQoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5s
b2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSksIHJlc3VsdC5ncHIo
KSk7CkBAIC0xOTgxLDYgKzIzNDYsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIEZsdXNoZWRJbnQ0ODogeworICAgICAgICAgICAgU3BlY3VsYXRlSW50NDhP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG1faml0LnN0
b3JlNjQodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkp
KTsKKyAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICAgICAgcmVjb3JkU2V0TG9j
YWwobm9kZS0+bG9jYWwoKSwgVmFsdWVTb3VyY2UoSW50NDhJbkpTU3RhY2spKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBGbHVzaGVk
Q2VsbDogewogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CkBA
IC0yMTA0LDYgKzI0NzcsMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgSW50NDhUb1Zh
bHVlOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcGVyYW5kKTsK
KyAgICAgICAgbV9qaXQubW92ZShvcGVyYW5kLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICAgICAgCisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOiB7CisgICAgICAgIFNwZWN1bGF0
ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEZQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3BlcmFuZCk7CisgICAgICAgIG1faml0Lm1vdmVEb3Vi
bGUob3BlcmFuZC5mcHIoKSwgcmVzdWx0LmZwcigpKTsKKyAgICAgICAgZG91YmxlUmVzdWx0KHJl
c3VsdC5mcHIoKSwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAg
Y2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOgogICAgICAgICBjb21waWxlQWRkKG5v
ZGUpOwpAQCAtMjg4OSw3ICszMjc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWUuZnByKCk7CiAK
ICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KCksIG5vZGUtPmNoaWxkMigpLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxP
clVub3JkZXJlZCwgdmFsdWVGUFIsIHZhbHVlRlBSKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0
ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKQEAgLTMx
MDUsNyArMzQ5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgCiAgICAgICAgIG9wMS51c2UoKTsKICAgICAgICAgCi0gICAgICAgIGlmICghKG1f
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjTnVtYmVyIHwgU3Bl
Y0Jvb2xlYW4pKSkKKyAgICAgICAgaWYgKCEobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS5tX3R5cGUgJiB+KFNwZWNGdWxsTnVtYmVyIHwgU3BlY0Jvb2xlYW4pKSkKICAgICAgICAgICAg
IG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hU
ZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKTsKQEAgLTMyMDIsNyArMzU5MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCBvcGVyYW5kKHRoaXMsIHVzZSk7CiAgICAgICAgICAgICAgICAgICAgIEZQUlJlZyBvcEZQUiA9
IG9wZXJhbmQuZnByKCk7CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAg
ICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVjUmVhbE51bWJlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0Z1bGxSZWFs
TnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9y
VW5vcmRlcmVkLCBvcEZQUiwgb3BGUFIpKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3Rv
cmVEb3VibGUob3BGUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVv
Zihkb3VibGUpICogb3BlcmFuZElkeCkpOwpAQCAtMzI2Nyw3ICszNjU2LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEZQUlJlZyBv
cEZQUiA9IG9wZXJhbmQuZnByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIg
PSBzY3JhdGNoLmdwcigpOwogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNSZWFsTnVtYmVyLAorICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNGdWxsUmVhbE51bWJlciwKICAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIG9wRlBSLCBv
cEZQUikpOwogICAgICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShvcEZQUiwgc2NyYXRjaEdQ
Uik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsOSBAQCBT
aWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgICAgICBzcGls
bEFjdGlvbiA9IFN0b3JlMzJQYXlsb2FkOwogICAgICAgICBlbHNlIGlmIChyZWdpc3RlckZvcm1h
dCA9PSBEYXRhRm9ybWF0Q2VsbCB8fCByZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RvcmFn
ZSkKICAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmVQdHI7Ci0gICAgICAgIGVsc2Ugewor
ICAgICAgICBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgcmVn
aXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICBzcGls
bEFjdGlvbiA9IFN0b3JlNjQ7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQo
cmVnaXN0ZXJGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogICAgICAgICAgICAgc3BpbGxBY3Rpb24g
PSBTdG9yZTY0OwogICAgICAgICB9CkBAIC0zODYsNiArMzg4LDQwIEBAIFNpbGVudFJlZ2lzdGVy
U2F2ZVBsYW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0
ID09IERhdGFGb3JtYXRTdG9yYWdlKSB7CiAgICAgICAgIEFTU0VSVChpbmZvLmdwcigpID09IHNv
dXJjZSk7CiAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkUHRyOworICAgIH0gZWxzZSBpZiAocmVn
aXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KSB7CisgICAgICAgIGlmIChub2RlLT5oYXND
b25zdGFudCgpKQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldEludDQ4Q29uc3RhbnQ7Cisg
ICAgICAgIGVsc2UgaWYgKGlzSlNJbnQzMihpbmZvLnNwaWxsRm9ybWF0KCkpIHx8IGluZm8uc3Bp
bGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9h
ZDMyUGF5bG9hZENvbnZlcnRUb0ludDQ4OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9y
bWF0KCkgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2
NDsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRTdHJp
Y3RJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlmdExlZnQxNjsKKyAg
ICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXROb25lKQorICAg
ICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuLiBBbnl0aGluZyB0aGF0IHF1YWxpZmllcyBhcyBhbiBp
bnQzMiB3aWxsIG5ldmVyCisgICAgICAgICAgICAvLyBiZSB0dXJuZWQgaW50byBhIGNlbGwgKGlt
bWVkaWF0ZSBzcGVjIGZhaWwpIG9yIGEgZG91YmxlICh0by1kb3VibGUKKyAgICAgICAgICAgIC8v
IGNvbnZlcnNpb25zIGludm9sdmUgYSBzZXBhcmF0ZSBub2RlKS4KKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHJlZ2lz
dGVyRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICBpZiAobm9kZS0+
aGFzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRTdHJpY3RJbnQ0OENv
bnN0YW50OworICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8
fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQorICAgICAgICAgICAgZmlsbEFj
dGlvbiA9IExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOworICAgICAgICBlbHNlIGlmIChpbmZvLnNw
aWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9
IExvYWQ2NFNoaWZ0UmlnaHQxNjsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgp
ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2Fk
NjQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9u
ZSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMg
YXMgYW4gaW50MzIgd2lsbCBuZXZlcgorICAgICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBj
ZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCisgICAgICAg
ICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICNpZiBVU0Uo
SlNWQUxVRTY0KQpAQCAtMzkzLDcgKzQyOSw2IEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4gU3Bl
Y3VsYXRpdmVKSVQ6OnMKICAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpIHsKICAgICAg
ICAgICAgIGlmICh2YWx1ZU9mSlNDb25zdGFudChub2RlKS5pc0NlbGwoKSkKICAgICAgICAgICAg
ICAgICBmaWxsQWN0aW9uID0gU2V0VHJ1c3RlZEpTQ29uc3RhbnQ7Ci0gICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldEpTQ29uc3RhbnQ7CiAgICAgICAgIH0g
ZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikgewogICAgICAg
ICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyKTsKQEAgLTUx
Miw2ICs1NDcsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBTaQog
ICAgIGNhc2UgU2V0SW50MzJDb25zdGFudDoKICAgICAgICAgbV9qaXQubW92ZShJbW0zMih2YWx1
ZU9mSW50MzJDb25zdGFudChwbGFuLm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBTZXRJbnQ0OENvbnN0YW50OgorICAgICAgICBtX2ppdC5tb3ZlKEltbTY0
KHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS5hc01hY2hpbmVJbnQoKSA8PCAxNiksIHBs
YW4uZ3ByKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNldFN0cmljdEludDQ4Q29uc3Rh
bnQ6CisgICAgICAgIG1faml0Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29uc3RhbnQocGxhbi5ub2Rl
KCkpLmFzTWFjaGluZUludCgpKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU2V0Qm9vbGVhbkNvbnN0YW50OgogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMih2
YWx1ZU9mQm9vbGVhbkNvbnN0YW50KHBsYW4ubm9kZSgpKSksIHBsYW4uZ3ByKCkpOwogICAgICAg
ICBicmVhazsKQEAgLTUzMyw2ICs1NzQsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50
RmlsbChjb25zdCBTaQogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAg
IG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBwbGFuLmdwcigpKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50NDg6Cisg
ICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+
dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVu
ZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LmxzaGlmdDY0
KFRydXN0ZWRJbW0zMigxNiksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOgorICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIo
KSk7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHBsYW4uZ3ByKCksIHBsYW4uZ3By
KCkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIExvYWREb3VibGVCb3hEb3VibGU6CiAgICAg
ICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmly
dHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQuc3ViNjQoR1BSSW5m
bzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBwbGFuLmdwcigpKTsKQEAgLTU3NCw2ICs2MjQsMTQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBTaQogICAgIGNhc2UgTG9h
ZDY0OgogICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5u
b2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgTG9hZDY0U2hpZnRSaWdodDE2OgorICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29t
cGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5n
cHIoKSk7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHBsYW4uZ3By
KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExvYWQ2NFNoaWZ0TGVmdDE2OgorICAgICAg
ICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1
YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0
ZWRJbW0zMigxNiksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNh
c2UgTG9hZERvdWJsZToKICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRk
cmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmZwcigpKTsKQEAg
LTE0MTYsNiArMTQ3NCwxMCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVC
cmFuCiAKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAg
ICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25k
aXRpb24pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUlu
dDQ4QnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVz
ZSkpCiAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2gobm9kZSwgYnJhbmNo
Tm9kZSwgZG91YmxlQ29uZGl0aW9uKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBD
b21wYXJlRXEpIHsKQEAgLTE1MDcsNiArMTU2OSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbmxpbmVTdGFydCgKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAg
ICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoSW50MzJJbkpTU3RhY2spOwogICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAg
ICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShJbnQ0OEluSlNTdGFjayk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgogICAg
ICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoQ2VsbEluSlNTdGFjayk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xODczLDcgKzE5MzgsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRG91YmxlUHV0QnlWCiAgICAgRlBSUmVnIHZhbHVlUmVnID0gdmFsdWUu
ZnByKCk7CiAgICAgCiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdzKCks
IGNoaWxkMywgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKCksIGNoaWxkMywg
U3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoCiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgdmFsdWVSZWcs
IHZhbHVlUmVnKSk7CiAgICAgCkBAIC0yMTQ5LDYgKzIyMTQsMTggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUsIG9wMS5mb3JtYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgICAg
IAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAg
IFNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEpOworICAgICAgICBH
UFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihvcDFHUFIsIHJlc3Vs
dEdQUik7CisgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdElu
dDMyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQog
ICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgTm90Q2VsbFVzZTogewpAQCAtMjE4
Nyw3ICsyMjY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgog
CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE51bWJlclVzZSkg
ewogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhncHIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVy
LAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoCiAgICAgICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0yMjQzLDcgKzIzMjAsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAKICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE51bWJlclVzZSkgewogICAgICAg
ICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjTnVtYmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BS
KSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CkBAIC0yMzg5LDE1ICsyNDY2LDE1
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmwKICAgICBKSVRDb21w
aWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NCgKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOwogICAgIAotICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY051
bWJlcikpIHsKKyAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxs
TnVtYmVyKSkgewogICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVFeGl0c0ZvcndhcmQp
IHsKICAgICAgICAgICAgIGZvcndhcmRUeXBlQ2hlY2soCi0gICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAog
ICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywg
b3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpLAogICAgICAgICAgICAgICAg
IFZhbHVlUmVjb3Zlcnk6OmluR1BSKG9wMUdQUiwgRGF0YUZvcm1hdEpTKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBiYWNrd2FyZFR5cGVDaGVjaygKLSAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1i
ZXIsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAgICAgICB9
CiAgICAgfQpAQCAtMjQyMCwxNSArMjQ5NywxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW50MzJUb0RvdWJsCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQu
YnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKICAgICAKLSAgICBpZiAobmVlZHNUeXBlQ2hl
Y2sobm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIpKSB7CisgICAgaWYgKG5lZWRzVHlwZUNoZWNr
KG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlcikpIHsKICAgICAgICAgaWYgKG5vZGUtPmZs
YWdzKCkgJiBOb2RlRXhpdHNGb3J3YXJkKSB7CiAgICAgICAgICAgICBmb3J3YXJkVHlwZUNoZWNr
KAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiks
IG5vZGUtPmNoaWxkMSgpLCBTcGVjTnVtYmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJl
ciwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVP
ckVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSwKICAg
ICAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5OjppblBhaXIob3AxVGFnR1BSLCBvcDFQYXlsb2Fk
R1BSKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBiYWNrd2FyZFR5cGVDaGVjaygK
LSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBu
b2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhv
cDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIs
CiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMjU0OSw2ICsyNjI2LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uSW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICBp
ZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7CisgICAgICAgIG1faml0Lnpl
cm9FeHRlbmQzMlRvUHRyKHJlc3VsdFJlZywgcmVzdWx0UmVnKTsKKyAgICAgICAgc3RyaWN0SW50
NDhSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
ICAgICBGUFJUZW1wb3JhcnkgZnJlc3VsdCh0aGlzKTsKICAgICBtX2ppdC5jb252ZXJ0SW50MzJU
b0RvdWJsZShyZXN1bHRSZWcsIGZyZXN1bHQuZnByKCkpOwogICAgIEpJVENvbXBpbGVyOjpKdW1w
IHBvc2l0aXZlID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuT3JF
cXVhbCwgcmVzdWx0UmVnLCBUcnVzdGVkSW1tMzIoMCkpOwpAQCAtMjYwMiw2ICsyNjg1LDI5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNl
OiB7CisgICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQgdmFsdWVPcCh0aGlz
LCB2YWx1ZVVzZSk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgICAg
IG1faml0Lm1vdmUodmFsdWVPcC5ncHIoKSwgc2NyYXRjaFJlZyk7CisgICAgICAgICAgICBpZiAo
aXNDbGFtcGVkKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnRTaXplKHR5
cGUpID09IDEpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGluQm91bmRz
ID0gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpC
ZWxvd09yRXF1YWwsIHNjcmF0Y2hSZWcsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoMHhmZikp
OworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHRvb0JpZyA9IG1faml0LmJy
YW5jaDY0KAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW4s
IHNjcmF0Y2hSZWcsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoMHhmZikpOworICAgICAgICAg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBzY3JhdGNoUmVnKTsKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjbGFtcGVkID0gbV9qaXQuanVtcCgpOworICAg
ICAgICAgICAgICAgIHRvb0JpZy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgbV9qaXQu
bW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKDI1NSksIHNjcmF0Y2hSZWcpOworICAgICAg
ICAgICAgICAgIGNsYW1wZWQubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIGluQm91bmRz
LmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhbHVlLmFkb3B0KHNj
cmF0Y2gpOworICAgICAgICAgICAgdmFsdWVHUFIgPSBzY3JhdGNoUmVnOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIE51bWJlclVzZTog
ewogICAgICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewogICAgICAgICAgICAgICAgIEFT
U0VSVChlbGVtZW50U2l6ZSh0eXBlKSA9PSAxKTsKQEAgLTI4NzAsNyArMjk3Niw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICAgICAgICAgIGludDMyUmVz
dWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAKKyAgICAgICAgCiAgICAgICAgIGlmIChpc051bWJlckNvbnN0YW50
KG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUludDMyT3Bl
cmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgaW50MzJfdCBpbW0y
ID0gdmFsdWVPZkludDMyQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCkubm9kZSgpKTsKQEAgLTI5MTUs
NiArMzAyMSwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWRkKE5vZGUqIG5vCiAg
ICAgICAgIGludDMyUmVzdWx0KGdwclJlc3VsdCwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBNYWNoaW5lSW50VXNl
OiB7CisgICAgICAgIC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxvdyBjaGVjaz8gSWYgd2UgY2Fu
IHByb3ZlIHRoYXQgbmVpdGhlciBpbnB1dCBjYW4gYmUKKyAgICAgICAgLy8gSW50NDggdGhlbiB0
aGUgb3ZlcmZsb3cgY2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5LgorICAgICAgICBpZiAoIW1f
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KQorICAg
ICAgICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuY291bGRCZVR5cGUo
U3BlY0ludDQ4KSkgeworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5k
IG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2
ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBvcDEpOworICAgICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKKyAgICAgICAgICAgIG1f
aml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgbV9qaXQuYWRk
NjQob3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgaW50NDhSZXN1bHQocmVz
dWx0LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMih0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIo
KSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92ZXJmbG93
LCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoQWRkNjQoTWFjcm9B
c3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOworICAgICAgICBp
bnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAg
ICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpA
QCAtMzA2MCw2ICszMTkzLDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1
YihOb2QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgLy8gV2lsbCB3ZSBuZWVkIGFu
IG92ZXJmbG93IGNoZWNrPyBJZiB3ZSBjYW4gcHJvdmUgdGhhdCBuZWl0aGVyIGlucHV0IGNhbiBi
ZQorICAgICAgICAvLyBJbnQ0OCB0aGVuIHRoZSBvdmVyZmxvdyBjaGVjayB3aWxsIG5vdCBiZSBu
ZWNlc3NhcnkuCisgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5j
b3VsZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAgICAgICAmJiAhbV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpKSB7CisgICAgICAgICAgICBTcGVj
dWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+
Y2hpbGQyKCksIG9wMSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCBvcDEpOworICAgICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIo
KSk7CisgICAgICAgICAgICBtX2ppdC5zdWI2NChvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Cisg
ICAgICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG9wMS5mb3JtYXQoKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFNwZWN1
bGF0ZUludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVj
dWxhdGVJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIpOworICAgICAgICBtX2ppdC5t
b3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygK
KyAgICAgICAgICAgIEludDQ4T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAg
ICBtX2ppdC5icmFuY2hTdWI2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMi5ncHIoKSwg
cmVzdWx0LmdwcigpKSk7CisgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKwogICAg
IGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzA4OCw2ICszMjQ4LDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAogCiAgICAgICAgIG1faml0Lm1vdmUob3AxLmdw
cigpLCByZXN1bHQuZ3ByKCkpOwogCisgICAgICAgIC8vIE5vdGU6IHRoZXJlIGlzIG5vIG5vdGlv
biBvZiBiZWluZyBub3QgdXNlZCBhcyBhIG51bWJlciwgYnV0IHNvbWVvbmUKKyAgICAgICAgLy8g
Y2FyaW5nIGFib3V0IG5lZ2F0aXZlIHplcm8uCisgICAgICAgIAogICAgICAgICBpZiAoYnl0ZWNv
ZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAg
ICBtX2ppdC5uZWczMihyZXN1bHQuZ3ByKCkpOwogICAgICAgICBlbHNlIHsKQEAgLTMwOTksNiAr
MzI2Miw0MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUoCiAgICAg
ICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAg
ICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3Bl
Y0ludDQ4KSkgeworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOworICAgICAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgICAgICBtX2ppdC5t
b3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm5lZzY0KHJlc3VsdEdQ
Uik7CisgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUt
PmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygK
KyAgICAgICAgICAgICAgICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IHJlc3VsdEdQUikpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50NDhSZXN1bHQocmVz
dWx0R1BSLCBub2RlLCBvcDEuZm9ybWF0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7Cisg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92ZXJmbG93LCBKU1Zh
bHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoTmVnNjQoTWFjcm9Bc3NlbWJs
ZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIpKTsKKyAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9y
ZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkgeworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdz
KCksIDAsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCByZXN1bHRHUFIpKTsKKyAgICAgICAgfQorICAgICAgICBpbnQ0OFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0
ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTMxNjQsNiArMzM2
Myw2MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNdWwoTm9kCiAgICAgICAg
IGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpICAgCisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7
CisgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgY2xldmVyLiBXZSB3YW50IHRvIGRvIGFuIGludDQ4
IG11bHRpcGxpY2F0aW9uIGFuZCBjaGVjayB0aGUKKyAgICAgICAgLy8gaW50NDggb3ZlcmZsb3cg
Yml0LiBUaGVyZSBpcyBubyBkaXJlY3QgaGFyZHdhcmUgc3VwcG9ydCBmb3IgdGhpcywgYnV0IHdl
IGRvCisgICAgICAgIC8vIGhhdmUgdGhlIGFiaWxpdHkgdG8gZG8gYW4gaW50NjQgbXVsdGlwbGlj
YXRpb24gYW5kIGNoZWNrIHRoZSBpbnQ2NCBvdmVyZmxvdworICAgICAgICAvLyBiaXQuIFdlIGxl
dmVyYWdlIHRoYXQuIENvbnNpZGVyIHRoYXQgYSwgYiBhcmUgaW50NDggbnVtYmVycyBpbnNpZGUg
aW50NjQKKyAgICAgICAgLy8gcmVnaXN0ZXJzLCB3aXRoIHRoZSBoaWdoIDE2IGJpdHMgYmVpbmcg
c2lnbi1leHRlbmRlZC4gV2UgY2FuIGRvOgorICAgICAgICAvLworICAgICAgICAvLyAgICAgKGEg
KiAoYiA8PCAxNikpCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoaXMgd2lsbCBnaXZlIHVzIGEg
bGVmdC1zaGlmdGVkIGludDQ4ICh2YWx1ZSBpcyBpbiBoaWdoIDQ4IGJpdHMsIGxvdyAxNgorICAg
ICAgICAvLyBiaXRzIGFyZSB6ZXJvKSBwbHVzIHRoZSBpbnQ0OCBvdmVyZmxvdyBiaXQuIEkuZS4g
d2hldGhlciB0aGlzIDY0LWJpdAorICAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBvdmVyZmxvd3Mg
aXMgaWRlbnRpY2FsIHRvIHdoZXRoZXIgdGhlICdhICogYicgNDgtYml0CisgICAgICAgIC8vIG11
bHRpcGxpY2F0aW9uIG92ZXJmbG93cy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSW4gb3VyIG5v
bWVuY2xhdHVyZSwgdGhpcyBpczoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIHN0cmljdElu
dDQ4KGEpICogaW50NDgoYikgPT4gaW50NDgKKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhhdCBp
cyAic3RyaWN0SW50NDgiIG1lYW5zIHVuc2hpZnRlZCBhbmQgImludDQ4IiBtZWFucyBsZWZ0LXNo
aWZ0ZWQgYnkgMTYKKyAgICAgICAgLy8gYml0cy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gV2Ug
ZG9uJ3QgY2FyZSB3aGljaCBvZiBvcDEgb3Igb3AyIHNlcnZlcyBhcyB0aGUgbGVmdC1zaGlmdGVk
IG9wZXJhbmQsIHNvCisgICAgICAgIC8vIHdlIGp1c3QgZG8gd2hhdGV2ZXIgaXMgbW9yZSBjb252
ZW5pZW50IGZvciBvcDEgYW5kIGhhdmUgb3AyIGRvIHRoZQorICAgICAgICAvLyBvcHBvc2l0ZS4g
VGhpcyBlbnN1cmVzIHRoYXQgd2UgZG8gYXQgbW9zdCBvbmUgc2hpZnQuCisKKyAgICAgICAgU3Bl
Y3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hp
bGQyKCksIE9wcG9zaXRlU2hpZnQsIG9wMSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CisgICAgICAgIAorICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAg
ICAgICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOworICAgICAgICAKKyAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJl
c3VsdEdQUik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92
ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoTXVsNjQo
TWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDJHUFIsIHJlc3VsdEdQUikpOworICAgICAgICAK
KyAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5v
ZGVGbGFncygpKSkgeworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmVzdWx0Tm9u
WmVybyA9IG1faml0LmJyYW5jaFRlc3Q2NCgKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisg
ICAgICAgICAgICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgb3AxR1BSLCBU
cnVzdGVkSW1tNjQoMCkpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAg
ICAgICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgb3AyR1BSLCBUcnVzdGVk
SW1tNjQoMCkpKTsKKyAgICAgICAgICAgIHJlc3VsdE5vblplcm8ubGluaygmbV9qaXQpOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAg
IAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTM1ODcsNyArMzg0MiwxNCBAQCBib29sIFNw
ZWN1bGF0aXZlSklUOjpjb21wYXJlKE5vZGUqIG5vZGUsCiAgICAgICAgIGNvbXBpbGVJbnQzMkNv
bXBhcmUobm9kZSwgY29uZGl0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLQor
ICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChN
YWNoaW5lSW50VXNlKSkgeworICAgICAgICBjb21waWxlSW50NDhDb21wYXJlKG5vZGUsIGNvbmRp
dGlvbik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFM
VUU2NCkKKyAgICAKICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsK
ICAgICAgICAgY29tcGlsZURvdWJsZUNvbXBhcmUobm9kZSwgZG91YmxlQ29uZGl0aW9uKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzczNyw2ICszOTk5LDIzIEBAIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2QKICAgICAgICAgY29tcGlsZUludDMyQ29tcGFyZShu
b2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQorICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KSAgIAorICAgIGNhc2UgTWFjaGluZUludFVzZTog
eworICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJy
YW5jaCgpOworICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7Cisg
ICAgICAgICAgICBOb2RlKiBicmFuY2hOb2RlID0gbV9ibG9jay0+YXQoYnJhbmNoSW5kZXhJbkJs
b2NrKTsKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUludDQ4QnJhbmNoKG5vZGUsIGJyYW5j
aE5vZGUsIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCk7CisgICAgICAgICAgICB1c2Uobm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrID0gYnJhbmNoSW5kZXhJbkJsb2NrOworICAgICAgICAgICAgbV9jdXJyZW50
Tm9kZSA9IGJyYW5jaE5vZGU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICBjb21waWxlSW50NDhDb21wYXJlKG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNo
SW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKQEAgLTQ0OTQsNyArNDc3Myw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUludDMyKEVkZ2UKIAogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlTnVtYmVyKEVkZ2UgZWRnZSkKIHsKLSAgICBpZiAoIW5lZWRz
VHlwZUNoZWNrKGVkZ2UsIFNwZWNOdW1iZXIpKQorICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRn
ZSwgU3BlY0Z1bGxOdW1iZXIpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgKFNwZWN1bGF0
ZURvdWJsZU9wZXJhbmQodGhpcywgZWRnZSkpLmZwcigpOwpAQCAtNDUwMiwxMyArNDc4MSwxMyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOdW1iZXIoRWRnCiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSBlZGdlKQogewotICAgIGlmICghbmVl
ZHNUeXBlQ2hlY2soZWRnZSwgU3BlY1JlYWxOdW1iZXIpKQorICAgIGlmICghbmVlZHNUeXBlQ2hl
Y2soZWRnZSwgU3BlY0Z1bGxSZWFsTnVtYmVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKICAgICBGUFJSZWcg
ZnByID0gb3BlcmFuZC5mcHIoKTsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1
ZVJlZ3MoKSwgZWRnZSwgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKCksIGVk
Z2UsIFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZwciwg
ZnByKSk7CiB9CkBAIC00NzcwLDcgKzUwNDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGUoTm9kZSosIEVkCiAgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3Bl
Y0ludDMyKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAg
ICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY051bWJlcikpOworICAgICAgICBB
U1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsTnVtYmVyKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgS25vd25DZWxsVXNlOgogICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNo
ZWNrKGVkZ2UsIFNwZWNDZWxsKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw5
ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgLy8gYW5kIGl0cyBtYWNoaW5lIHJlZ2lzdGVycyBtYXkg
YmUgcmV1c2VkLgogICAgIGJvb2wgY2FuUmV1c2UoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAg
IFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIo
KTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0
dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGluZm8uY2FuUmV1
c2UoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKG5vZGUpLmNhblJldXNlKCk7CiAg
ICAgfQogICAgIGJvb2wgY2FuUmV1c2UoRWRnZSBub2RlVXNlKQogICAgIHsKQEAgLTIzNywxNSAr
MjM1LDExIEBAIHB1YmxpYzoKICAgICAvLyBhdm9pZCBzcGlsbGluZyB2YWx1ZXMgd2Ugd2lsbCBu
ZWVkIGltbWVkaWF0ZWx5KS4KICAgICBib29sIGlzRmlsbGVkKE5vZGUqIG5vZGUpCiAgICAgewot
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJl
Z2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9G
cm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBpbmZv
LnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdE5vbmU7CisgICAgICAgIHJldHVybiBnZW5l
cmF0aW9uSW5mbyhub2RlKS5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXROb25lOwogICAg
IH0KICAgICBib29sIGlzRmlsbGVkRG91YmxlKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7
Ci0gICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVh
bFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25J
bmZvKG5vZGUpLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZTsKICAgICB9CiAK
ICAgICAvLyBDYWxsZWQgb24gYW4gb3BlcmFuZCBvbmNlIGl0IGhhcyBiZWVuIGNvbnN1bWVkIGJ5
IGEgcGFyZW50IG5vZGUuCkBAIC0yNTMsOCArMjQ3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3Rlcigp
OwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1
YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5m
byA9IGdlbmVyYXRpb25JbmZvKG5vZGUpOwogCiAgICAgICAgIC8vIHVzZSgpIHJldHVybnMgdHJ1
ZSB3aGVuIHRoZSB2YWx1ZSBiZWNvbWVzIGRlYWQsIGFuZCBhbnkKICAgICAgICAgLy8gYXNzb2Np
YXRlZCByZXNvdXJjZXMgbWF5IGJlIGZyZWVkLgpAQCAtMzMzLDYgKzMyNiw3IEBAIHB1YmxpYzoK
ICAgICAvLyBtYWNoaW5lIHJlZ2lzdGVycywgaW1wbGljaXRseSBnZW5lcmF0aW5nIHNwZWN1bGF0
aW9uIGNoZWNrcyBhcyBuZWVkZWQuCiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVJbnQzMihFZGdl
LCBEYXRhRm9ybWF0JiByZXR1cm5Gb3JtYXQpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50
MzJTdHJpY3QoRWRnZSk7CisgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVJbnQ0OChFZGdlLCBEYXRh
Rm9ybWF0IGRlc2lyZWRGb3JtYXQpOwogICAgIEZQUlJlZyBmaWxsU3BlY3VsYXRlRG91YmxlKEVk
Z2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2VsbChFZGdlKTsKICAgICBHUFJSZWcgZmls
bFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CkBAIC00NjgsNiArNDYyLDggQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGJveERvdWJsZShmcHIsIGFsbG9jYXRlKCkpOwogICAgIH0KKyAg
ICAKKyAgICB2b2lkIGJveEludDQ4KEdQUlJlZyBzb3VyY2VHUFIsIEdQUlJlZyB0YXJnZXRHUFIs
IERhdGFGb3JtYXQgZm9ybWF0KTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdm9pZCBi
b3hEb3VibGUoRlBSUmVnIGZwciwgR1BSUmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRHUFIpCiAg
ICAgewpAQCAtNTU5LDExICs1NTUsMTEgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIGJvb2wgaXNLbm93bkludGVnZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRl
LmZvck5vZGUobm9kZSkubV90eXBlICYgflNwZWNJbnQzMik7IH0KLSAgICBib29sIGlzS25vd25D
ZWxsKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAm
IH5TcGVjQ2VsbCk7IH0KKyAgICBib29sIGlzS25vd25JbnRlZ2VyKE5vZGUqIG5vZGUpIHsgcmV0
dXJuIG1fc3RhdGUuZm9yTm9kZShub2RlKS5pc1R5cGUoU3BlY0ludDMyKTsgfQorICAgIGJvb2wg
aXNLbm93bkNlbGwoTm9kZSogbm9kZSkgeyByZXR1cm4gbV9zdGF0ZS5mb3JOb2RlKG5vZGUpLmlz
VHlwZShTcGVjQ2VsbCk7IH0KICAgICAKICAgICBib29sIGlzS25vd25Ob3RJbnRlZ2VyKE5vZGUq
IG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNJbnQz
Mik7IH0KLSAgICBib29sIGlzS25vd25Ob3ROdW1iZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gISht
X3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY051bWJlcik7IH0KKyAgICBib29sIGlz
S25vd25Ob3ROdW1iZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9k
ZSkubV90eXBlICYgU3BlY0Z1bGxOdW1iZXIpOyB9CiAgICAgYm9vbCBpc0tub3duTm90Q2VsbChO
b2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBTcGVj
Q2VsbCk7IH0KICAgICAKICAgICAvLyBDaGVja3MvYWNjZXNzb3JzIGZvciBjb25zdGFudCB2YWx1
ZXMuCkBAIC04MTYsNiArODEyLDI1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGludDMyUmVz
dWx0KHJlZywgbm9kZSwgRGF0YUZvcm1hdEludDMyLCBtb2RlKTsKICAgICB9CisgICAgdm9pZCBp
bnQ0OFJlc3VsdChHUFJSZWcgcmVnLCBOb2RlKiBub2RlLCBEYXRhRm9ybWF0IGZvcm1hdCwgVXNl
Q2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRyZW4pCisgICAgeworICAgICAgICBpZiAo
bW9kZSA9PSBDYWxsVXNlQ2hpbGRyZW4pCisgICAgICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsK
KworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVh
bFJlZ2lzdGVyKCk7CisgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisKKyAgICAgICAgbV9ncHJz
LnJldGFpbihyZWcsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpTKTsKKyAgICAgICAgaW5m
by5pbml0SW50NDgobm9kZSwgbm9kZS0+cmVmQ291bnQoKSwgcmVnLCBmb3JtYXQpOworICAgIH0K
KyAgICB2b2lkIGludDQ4UmVzdWx0KEdQUlJlZyByZWcsIE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVu
TW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQorICAgIHsKKyAgICAgICAgaW50NDhSZXN1bHQo
cmVnLCBub2RlLCBEYXRhRm9ybWF0SW50NDgsIG1vZGUpOworICAgIH0KKyAgICB2b2lkIHN0cmlj
dEludDQ4UmVzdWx0KEdQUlJlZyByZWcsIE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2Rl
ID0gQ2FsbFVzZUNoaWxkcmVuKQorICAgIHsKKyAgICAgICAgaW50NDhSZXN1bHQocmVnLCBub2Rl
LCBEYXRhRm9ybWF0U3RyaWN0SW50NDgsIG1vZGUpOworICAgIH0KICAgICB2b2lkIG5vUmVzdWx0
KE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQogICAg
IHsKICAgICAgICAgaWYgKG1vZGUgPT0gVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KQpAQCAt
OTAwLDcgKzkxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRDb25zdGFudEluZm8oTm9kZSog
bm9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0ludDMyQ29uc3RhbnQobm9kZSkgfHwgaXNO
dW1iZXJDb25zdGFudChub2RlKSB8fCBpc0pTQ29uc3RhbnQobm9kZSkpOwotICAgICAgICBnZW5l
cmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIobm9kZS0+dmlydHVhbFJlZ2lzdGVyKCkpLmlu
aXRDb25zdGFudChub2RlLCBub2RlLT5yZWZDb3VudCgpKTsKKyAgICAgICAgZ2VuZXJhdGlvbklu
Zm8obm9kZSkuaW5pdENvbnN0YW50KG5vZGUsIG5vZGUtPnJlZkNvdW50KCkpOwogICAgIH0KICAg
ICAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxscyB0byBDKysgaGVscGVyIGZ1bmN0aW9u
cy4KQEAgLTE4ODksMTUgKzE5MDQsMjIgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNJbnQzMkNv
bnN0YW50KG5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAg
ICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdp
c3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGluZm8uaXNK
U0ludDMyKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5pc0pTSW50MzIo
KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChOb2RlKiBub2Rl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICFnZW5lcmF0aW9uSW5mbyhub2RlKS5pc0ludDQ4KCk7
CisgICAgfQorICAgIGJvb2wgYmV0dGVyVXNlU3RyaWN0SW50NDgoRWRnZSBlZGdlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJldHRlclVzZVN0cmljdEludDQ4KGVkZ2Uubm9kZSgpKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBjb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiwgU19ERkdPcGVyYXRp
b25fRUpKKTsKICAgICBib29sIGNvbXBpbGVQZWVwSG9sZUJyYW5jaChOb2RlKiwgTWFjcm9Bc3Nl
bWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRp
b24sIFNfREZHT3BlcmF0aW9uX0VKSik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnQzMkJy
YW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24pOworICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50NDhCcmFuY2goTm9kZSosIE5vZGUq
IGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lk
IGNvbXBpbGVQZWVwSG9sZUJvb2xlYW5CcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJ
VENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9s
ZURvdWJsZUJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OkRvdWJs
ZUNvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShOb2Rl
KiwgTm9kZSogYnJhbmNoTm9kZSk7CkBAIC0xOTQ1LDYgKzE5NjcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxl
SW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7
CisgICAgdm9pZCBjb21waWxlSW50NDhDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVs
YXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSos
IE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVE
b3VibGVDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAg
ICAKQEAgLTIxOTUsNiArMjIxOCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4g
bV9nZW5lcmF0aW9uSW5mb1tvcGVyYW5kVG9Mb2NhbCh2aXJ0dWFsUmVnaXN0ZXIpXTsKICAgICB9
CisgICAgCisgICAgR2VuZXJhdGlvbkluZm8mIGdlbmVyYXRpb25JbmZvKE5vZGUqIG5vZGUpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKG5v
ZGUtPnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICB9CisgICAgCisgICAgR2VuZXJhdGlvbkluZm8m
IGdlbmVyYXRpb25JbmZvKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5lcmF0
aW9uSW5mbyhlZGdlLm5vZGUoKSk7CisgICAgfQogCiAgICAgLy8gVGhlIEpJVCwgd2hpbGUgYWxz
byBwcm92aWRlcyBNYWNyb0Fzc2VtYmxlciBmdW5jdGlvbmFsaXR5LgogICAgIEpJVENvbXBpbGVy
JiBtX2ppdDsKQEAgLTI2NzYsNiArMjcwOSwxNzkgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9n
cHJPckludmFsaWQ7CiB9OwogCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NDggKGkuZS4g
aXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorY2xhc3MgU3BlY3VsYXRl
SW50NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ0OE9wZXJh
bmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2Rl
IG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0
KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFs
aWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2Up
OworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7
CisgICAgfQorICAgIAorICAgIH5TcGVjdWxhdGVJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2pp
dC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5v
ZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7Cisg
ICAgfQorICAgIAorICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJ
bnZhbGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1f
aml0LT5maWxsU3BlY3VsYXRlSW50NDgoZWRnZSgpLCBEYXRhRm9ybWF0SW50NDgpOworICAgICAg
ICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAg
ICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgor
ICAgIFNwZWN1bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcg
bV9ncHJPckludmFsaWQ7Cit9OworCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NDggKGkuZS4g
dGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24t
ZXh0ZW5kZWQpLgorY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kIHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQq
IGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNP
cGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRn
ZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgewor
ICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0
LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAg
IH5TcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
Z3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1f
Z3ByT3JJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAor
ICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3Bl
Y3VsYXRlSW50NDgoZWRnZSgpLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICByZXR1
cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7Cisg
ICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNw
ZWN1bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJP
ckludmFsaWQ7Cit9OworCitlbnVtIE9wcG9zaXRlU2hpZnRUYWcgeyBPcHBvc2l0ZVNoaWZ0IH07
CisKK2NsYXNzIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBq
aXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3Bl
cmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2Uo
ZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgICAgICAs
IG1fc3RyaWN0KGppdC0+YmV0dGVyVXNlU3RyaWN0SW50NDgoZWRnZSkpCisgICAgeworICAgICAg
ICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8
IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0Zp
bGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIGV4cGxp
Y2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBF
ZGdlIGVkZ2UsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCYgb3RoZXIsIE9w
ZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikK
KyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwg
bV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICAgICAgLCBtX3N0cmljdChvdGhlci5t
X3N0cmljdCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7
CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsK
KyAgICB9CisgICAgCisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5k
KFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29uc3Qg
U3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9u
TW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0
KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJ
bnZhbGlkR1BSUmVnKQorICAgICAgICAsIG1fc3RyaWN0KCFvdGhlci5tX3N0cmljdCkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChq
aXQtPmlzRmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisg
ICAgflNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NF
UlQobV9ncHJPckludmFsaWQgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxv
Y2sobV9ncHJPckludmFsaWQpOworICAgIH0KKyAgICAKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogbm9k
ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9Cisg
ICAgCisgICAgR1BSUmVnIGdwcigpCisgICAgeworICAgICAgICBpZiAobV9ncHJPckludmFsaWQg
PT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+
ZmlsbFNwZWN1bGF0ZUludDQ4KAorICAgICAgICAgICAgICAgIGVkZ2UoKSwgbV9zdHJpY3QgPyBE
YXRhRm9ybWF0U3RyaWN0SW50NDggOiBEYXRhRm9ybWF0SW50NDgpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKKyAgICB9CisgICAgCisgICAgdm9pZCB1c2UoKQor
ICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKyAgICAKKyAgICBEYXRh
Rm9ybWF0IGZvcm1hdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zdHJpY3QgPyBE
YXRhRm9ybWF0U3RyaWN0SW50NDggOiBEYXRhRm9ybWF0SW50NDg7CisgICAgfQorCitwcml2YXRl
OgorICAgIFNwZWN1bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJS
ZWcgbV9ncHJPckludmFsaWQ7CisgICAgYm9vbCBtX3N0cmljdDsKK307CisKIGNsYXNzIFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQgewogcHVibGljOgogICAgIGV4cGxpY2l0IFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRp
b25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDYgKzQ0LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQog
ICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgb3V0LnByaW50KCJLbm93bkludDMyIik7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgb3V0LnBy
aW50KCJNYWNoaW5lSW50Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVhbE51bWJlclVz
ZToKICAgICAgICAgb3V0LnByaW50KCJSZWFsTnVtYmVyIik7CiAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHJldmlzaW9uIDE1NTgyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw2ICszOSw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAgVW50eXBlZFVzZSwKICAgICBJ
bnQzMlVzZSwKICAgICBLbm93bkludDMyVXNlLAorICAgIE1hY2hpbmVJbnRVc2UsCiAgICAgUmVh
bE51bWJlclVzZSwKICAgICBOdW1iZXJVc2UsCiAgICAgS25vd25OdW1iZXJVc2UsCkBAIC02Niwx
MSArNjcsMTMgQEAgQUxXQVlTX0lOTElORSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRgogICAg
IGNhc2UgSW50MzJVc2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAgICAgICByZXR1cm4g
U3BlY0ludDMyOworICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNN
YWNoaW5lSW50OwogICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNS
ZWFsTnVtYmVyOworICAgICAgICByZXR1cm4gU3BlY0Z1bGxSZWFsTnVtYmVyOwogICAgIGNhc2Ug
TnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgIHJldHVybiBTcGVj
TnVtYmVyOworICAgICAgICByZXR1cm4gU3BlY0Z1bGxOdW1iZXI7CiAgICAgY2FzZSBCb29sZWFu
VXNlOgogICAgICAgICByZXR1cm4gU3BlY0Jvb2xlYW47CiAgICAgY2FzZSBDZWxsVXNlOgpAQCAt
MTI1LDYgKzEyOCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGsK
ICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25J
bnQzMlVzZToKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNl
OgogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAkocmV2aXNpb24g
MTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgdm9pZCBWYWx1ZVNvdXJjZTo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KQogICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgIG91dC5w
cmludCgiSW50MzIiKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoK
KyAgICAgICAgb3V0LnByaW50KCJJbnQ0OCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENl
bGxJbkpTU3RhY2s6CiAgICAgICAgIG91dC5wcmludCgiQ2VsbCIpOwogICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHJldmlz
aW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBlbnVtIFZhbHVlU291cmNlS2luZCB7
CiAgICAgU291cmNlTm90U2V0LAogICAgIFZhbHVlSW5KU1N0YWNrLAogICAgIEludDMySW5KU1N0
YWNrLAorICAgIEludDQ4SW5KU1N0YWNrLAogICAgIENlbGxJbkpTU3RhY2ssCiAgICAgQm9vbGVh
bkluSlNTdGFjaywKICAgICBEb3VibGVJbkpTU3RhY2ssCkBAIC01Niw2ICs1Nyw4IEBAIHN0YXRp
YyBpbmxpbmUgVmFsdWVTb3VyY2VLaW5kIGRhdGFGb3JtYXQKICAgICBzd2l0Y2ggKGRhdGFGb3Jt
YXQpIHsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMySW5K
U1N0YWNrOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1cm4gSW50NDhJ
bkpTU3RhY2s7CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgICAgICByZXR1cm4gRG91
YmxlSW5KU1N0YWNrOwogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CkBAIC03OSw2ICs4Miw4
IEBAIHN0YXRpYyBpbmxpbmUgRGF0YUZvcm1hdCB2YWx1ZVNvdXJjZUtpbmQKICAgICAgICAgcmV0
dXJuIERhdGFGb3JtYXRKUzsKICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICByZXR1
cm4gRGF0YUZvcm1hdEludDMyOworICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgIHJl
dHVybiBEYXRhRm9ybWF0SW50NDg7CiAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgogICAgICAgICBy
ZXR1cm4gRGF0YUZvcm1hdENlbGw7CiAgICAgY2FzZSBCb29sZWFuSW5KU1N0YWNrOgpAQCAtMTM5
LDYgKzE0NCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShEb3Vi
bGVJbkpTU3RhY2spOwogICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgIHJl
dHVybiBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjayk7CisgICAgICAgIGNhc2UgRmx1c2hlZElu
dDQ4OgorICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEludDQ4SW5KU1N0YWNrKTsKICAg
ICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShD
ZWxsSW5KU1N0YWNrKTsKICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKQEAgLTE4MSw2ICsx
ODgsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgICAg
ICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyKCk7
CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAgICAg
IHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDgoKTsK
KyAgICAgICAgICAgIAogICAgICAgICBjYXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAgICAgICBy
ZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGwoKTsKICAg
ICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFj
Y2Vzc0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
cmlhYmxlQWNjZXNzRGF0YS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUs
NyArMjM1LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIHZhcmlhYmxl
IGlzIG5vdCBhIG51bWJlciBwcmVkaWN0aW9uLCB0aGVuIHRoaXMgZG9lc24ndAogICAgICAgICAv
LyBtYWtlIGFueSBzZW5zZS4KLSAgICAgICAgaWYgKCFpc051bWJlclNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24oKSkpIHsKKyAgICAgICAgaWYgKCFpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0
aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogd2UgbWF5IGVuZCB1cCBmb3JjaW5nIGEg
bG9jYWwgaW4gaW5saW5lZCBhcmd1bWVudCBwb3NpdGlvbiB0byBiZSBhIGRvdWJsZSBldmVuCiAg
ICAgICAgICAgICAvLyBpZiBpdCBpcyBzb21ldGltZXMgbm90IGV2ZW4gbnVtZXJpYywgc2luY2Ug
dGhpcyBuZXZlciBzaWduYWxzIHRoZSBmYWN0IHRoYXQgaXQgZG9lc24ndAogICAgICAgICAgICAg
Ly8gd2FudCBkb3VibGVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA5NTExCkBAIC0zMzMsNiArMzMzLDkgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNJbnQzMlNw
ZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRJbnQzMjsK
ICAgICAgICAgCisgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmICFvcGVyYW5kSXNBcmd1bWVu
dChtX2xvY2FsKSAmJiBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAg
ICAgICAgIHJldHVybiBGbHVzaGVkSW50NDg7CisgICAgICAgIAogICAgICAgICBpZiAoaXNDZWxs
U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gRmx1c2hlZENlbGw7
CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lz
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Jl
Z2lzdGVyLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9SZWdpc3Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBJbnN0cnVjdGlvbiogdlBDKCkgY29uc3Q7CiAgICAgICAgIElu
bGluZUNhbGxGcmFtZSogYXNJbmxpbmVDYWxsRnJhbWUoKSBjb25zdDsKICAgICAgICAgaW50MzJf
dCB1bmJveGVkSW50MzIoKSBjb25zdDsKKyAgICAgICAgaW50NjRfdCB1bmJveGVkSW50NDgoKSBj
b25zdDsKICAgICAgICAgYm9vbCB1bmJveGVkQm9vbGVhbigpIGNvbnN0OwogICAgICAgICBkb3Vi
bGUgdW5ib3hlZERvdWJsZSgpIGNvbnN0OwogICAgICAgICBKU0NlbGwqIHVuYm94ZWRDZWxsKCkg
Y29uc3Q7CkBAIC05OCw2ICs5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICBFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yIGVuY29kZWRWYWx1ZTsKICAgICAgICAgICAgIGRvdWJsZSBudW1iZXI7CisgICAg
ICAgICAgICBpbnQ2NF90IGludGVnZXI7CiAgICAgICAgIH0gdTsKICAgICB9OwogCkBAIC0xODUs
NiArMTg3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gcGF5bG9hZCgpOwog
ICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgaW50NjRfdCBSZWdpc3Rlcjo6dW5ib3hlZEludDQ4
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB1LmludGVnZXIgPj4gMTY7CisgICAgfQor
CiAgICAgQUxXQVlTX0lOTElORSBib29sIFJlZ2lzdGVyOjp1bmJveGVkQm9vbGVhbigpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gISFwYXlsb2FkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4Myw2ICszODMsOSBAQCB2b2lkIEFyZ3VtZW50czo6dGVhck9mZkZvcklubGluZUNhbGxG
cmFtCiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgogICAgICAg
ICAgICAgdmFsdWUgPSBqc051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDMyKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4
OgorICAgICAgICAgICAgdmFsdWUgPSBqc051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDQ4KCkp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5i
b3hlZENlbGw6CiAgICAgICAgICAgICB2YWx1ZSA9IGxvY2F0aW9uLT51bmJveGVkQ2VsbCgpOwog
ICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bmRleGluZ1R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luZGV4aW5nVHlwZS5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZGV4aW5nVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEx
ICs1MCwxMSBAQCBJbmRleGluZ1R5cGUgbGVhc3RVcHBlckJvdW5kT2ZJbmRleGluZ1R5CiAgICAg
Y2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGlmIChpc0ludDMyU3BlY3Vs
YXRpb24odHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIH5JbmRleGlu
Z1NoYXBlTWFzaykgfCBJbnQzMlNoYXBlOwotICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlv
bih0eXBlKSkKKyAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHR5cGUpKQogICAg
ICAgICAgICAgcmV0dXJuIChpbmRleGluZ1R5cGUgJiB+SW5kZXhpbmdTaGFwZU1hc2spIHwgRG91
YmxlU2hhcGU7CiAgICAgICAgIHJldHVybiAoaW5kZXhpbmdUeXBlICYgfkluZGV4aW5nU2hhcGVN
YXNrKSB8IENvbnRpZ3VvdXNTaGFwZTsKICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQ
RVM6Ci0gICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKHR5cGUpKQorICAgICAgICBpZiAo
aXNGdWxsTnVtYmVyU3BlY3VsYXRpb24odHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gaW5kZXhp
bmdUeXBlOwogICAgICAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFz
aykgfCBDb250aWd1b3VzU2hhcGU7CiAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19U
WVBFUzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJ
KHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDYgKzE5MSw3IEBAIHB1YmxpYzoKIAogICAg
IGludDMyX3QgYXNJbnQzMigpIGNvbnN0OwogICAgIHVpbnQzMl90IGFzVUludDMyKCkgY29uc3Q7
CisgICAgaW50NjRfdCBhc01hY2hpbmVJbnQoKSBjb25zdDsKICAgICBkb3VibGUgYXNEb3VibGUo
KSBjb25zdDsKICAgICBib29sIGFzQm9vbGVhbigpIGNvbnN0OwogICAgIGRvdWJsZSBhc051bWJl
cigpIGNvbnN0OwpAQCAtMjAyLDYgKzIwMyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVsbCgp
IGNvbnN0OwogICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdDsKICAgICBib29sIGlz
Qm9vbGVhbigpIGNvbnN0OworICAgIGJvb2wgaXNNYWNoaW5lSW50KCkgY29uc3Q7CiAgICAgYm9v
bCBpc051bWJlcigpIGNvbnN0OwogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29s
IGlzUHJpbWl0aXZlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5NCw2ICs0OTQsMzUgQEAgQUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFz
Q2VsbCgpIAogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAoraW5saW5lIGJvb2wgSlNWYWx1
ZTo6aXNNYWNoaW5lSW50KCkgY29uc3QKK3sKKyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIWlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBkb3VibGUgbnVtYmVyID0gYXNEb3VibGUoKTsKKyAgICBpZiAobnVtYmVyICE9IG51bWJl
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGludDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19j
YXN0PGludDY0X3Q+KG51bWJlcik7CisgICAgaWYgKGFzSW50NjQgIT0gbnVtYmVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFhc0ludDY0ICYmIHN0ZDo6c2lnbmJpdChudW1iZXIp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGFzSW50NjQgPj0gKHN0YXRpY19jYXN0
PGludDY0X3Q+KDEpIDw8IDQ3KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhc0lu
dDY0IDwgLShzdGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCA0NykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGludDY0X3QgSlNWYWx1ZTo6YXNN
YWNoaW5lSW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWNoaW5lSW50KCkpOworICAgIGlm
IChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiBhc0ludDMyKCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludDY0X3Q+KGFzRG91YmxlKCkpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c1N0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N0
cmluZygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211735</attachid>
            <date>2013-09-15 20:24:30 -0700</date>
            <delta_ts>2013-09-15 21:49:32 -0700</delta_ts>
            <desc>passes all DFG 64-bit tests</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>144264</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtODIwLDYgKzgyMCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2
dHNpMnNkX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0SW50NjRUb0Rv
dWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBB
U1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2kyc2RxX3Jy
KHNyYywgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShBZGRy
ZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0Uy
UHJlc2VudCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMwLDYgKzIzMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LnNobHFfaThyKGltbS5tX3ZhbHVlLCBkZXN0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCByc2hp
ZnQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zYXJxX2k4cihpbW0ubV92YWx1ZSwgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbXVsNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmltdWxxX3JyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAogICAgIHZv
aWQgbmVnNjQoUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubmVn
cV9yKGRlc3QpOwpAQCAtNTMwLDYgKzU0MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaE11bDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbXVsNjQoc3JjLCBkZXN0KTsKKyAgICAgICAg
aWYgKGNvbmQgIT0gT3ZlcmZsb3cpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycihk
ZXN0LCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoU3ViNjQoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIHN1YjY0KGltbSwgZGVzdCk7CkBAIC01NDgsNiArNTY2LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJyYW5jaFN1YjY0KGNvbmQsIHNyYzIsIGRlc3QpOwogICAgIH0KIAorICAgIEp1
bXAgYnJhbmNoTmVnNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjRGVzdCkK
KyAgICB7CisgICAgICAgIG5lZzY0KHNyY0Rlc3QpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQorCiAgICAgQ29udmVydGli
bGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29u
dmVydGlibGVMb2FkTGFiZWwodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgzNiw2ICs4MzYsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3Ao
T1AyX0lNVUxfR3ZFdiwgZHN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgaW11bHFfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wNjQoT1AyX0lNVUxfR3ZFdiwgZHN0LCBzcmMpOworICAgIH0KKwogICAgIHZvaWQg
aW11bGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKICAg
ICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3QsIGJh
c2UsIG9mZnNldCk7CkBAIC0xNjExLDYgKzE2MTYsMTQgQEAgcHVibGljOgogICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNJMlNEX1ZzZEVkLCAoUmVnaXN0ZXJJRClkc3QsIHNy
Yyk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGN2dHNpMnNkcV9ycihSZWdp
c3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9Q
Ml9DVlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBzcmMpOworICAgIH0KKyNlbmRpZgor
CiAgICAgdm9pZCBjdnRzaTJzZF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0Vf
RjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0
YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiBlbnVtIERhdGFGb3JtYXQgewogICAgIERhdGFGb3JtYXROb25lID0gMCwKICAgICBEYXRh
Rm9ybWF0SW50MzIgPSAxLAotICAgIERhdGFGb3JtYXREb3VibGUgPSAyLAotICAgIERhdGFGb3Jt
YXRCb29sZWFuID0gMywKLSAgICBEYXRhRm9ybWF0Q2VsbCA9IDQsCi0gICAgRGF0YUZvcm1hdFN0
b3JhZ2UgPSA1LAorICAgIERhdGFGb3JtYXRJbnQ0OCA9IDIsIC8vIEludDQ4J3MgYXJlIGxlZnQt
c2hpZnRlZCBieSAxNiBieSBkZWZhdWx0LgorICAgIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA9IDMs
IC8vICJTdHJpY3QiIEludDQ4IG1lYW5zIGl0J3Mgbm90IHNoaWZ0ZWQuCisgICAgRGF0YUZvcm1h
dERvdWJsZSA9IDQsCisgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAorICAgIERhdGFGb3JtYXRD
ZWxsID0gNiwKKyAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCiAgICAgRGF0YUZvcm1hdEpTID0g
OCwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRJbnQz
MiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0RG91
YmxlLApAQCAtNjQsNiArNjYsMTAgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRUb1N0
cmluZyhEYQogICAgICAgICByZXR1cm4gIk5vbmUiOwogICAgIGNhc2UgRGF0YUZvcm1hdEludDMy
OgogICAgICAgICByZXR1cm4gIkludDMyIjsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAg
ICAgICAgcmV0dXJuICJJbnQ0OCI7CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6Cisg
ICAgICAgIHJldHVybiAiU3RyaWN0SW50NDgiOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToK
ICAgICAgICAgcmV0dXJuICJEb3VibGUiOwogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzSW5saW5lcy5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bl
cmFuZHNJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBPcGVy
YW5kczxULCBUcmFpdHM+OjpkdW1wSW5Db250ZXh0KAogICAgIGZvciAoc2l6ZV90IGxvY2FsSW5k
ZXggPSAwOyBsb2NhbEluZGV4IDwgbnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbEluZGV4KSB7CiAg
ICAgICAgIGlmIChUcmFpdHM6OmlzRW1wdHlGb3JEdW1wKGxvY2FsKGxvY2FsSW5kZXgpKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwgbG9jYWxJ
bmRleCwgIjoiLCBpbkNvbnRleHQobG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKKyAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgbG9jYWxJbmRleCwgIjoiLCBpbkNvbnRleHQobG9j
YWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNpb24g
MTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsMTMgQEAgdm9pZCBkdW1wU3BlY3Vs
YXRpb24oUHJpbnRTdHJlYW0mIG91dCwgUwogICAgIH0KICAgICAKICAgICBpZiAodmFsdWUgJiBT
cGVjSW50MzIpCi0gICAgICAgIG15T3V0LnByaW50KCJJbnQiKTsKKyAgICAgICAgbXlPdXQucHJp
bnQoIkludDMyIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAorICAg
IGlmICh2YWx1ZSAmIFNwZWNJbnQ0OCkKKyAgICAgICAgbXlPdXQucHJpbnQoIkludDQ4Iik7Cisg
ICAgICAgIAogICAgIGlmICgodmFsdWUgJiBTcGVjRG91YmxlKSA9PSBTcGVjRG91YmxlKQogICAg
ICAgICBteU91dC5wcmludCgiRG91YmxlIik7CiAgICAgZWxzZSB7CkBAIC0xNjYsMTEgKzE2OSw2
IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXQsIFMKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICh2YWx1
ZSAmIFNwZWNJbnQ0OCkKLSAgICAgICAgICAgIG15T3V0LnByaW50KCJJbnQ0OCIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgICAgICAKICAgICAgICAgaWYg
KHZhbHVlICYgU3BlY05vbkludEFzRG91YmxlKQogICAgICAgICAgICAgbXlPdXQucHJpbnQoIk5v
bmludGFzZG91YmxlIik7CiAgICAgICAgIGVsc2UKQEAgLTI0Nyw5ICsyNDUsMTEgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9BYmJyZXZpYQogICAgICAgICByZXR1cm4gIjxJbnQ0
OEFzRG91YmxlPiI7CiAgICAgaWYgKGlzSW50NDhTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAg
ICAgICAgcmV0dXJuICI8SW50NDg+IjsKKyAgICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRpb24o
cHJlZGljdGlvbikpCisgICAgICAgIHJldHVybiAiPE1hY2hpbmVJbnQ+IjsKICAgICBpZiAoaXNE
b3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8RG91YmxlPiI7
Ci0gICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgaWYgKGlzRnVs
bE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxOdW1iZXI+
IjsKICAgICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJl
dHVybiAiPEJvb2xlYW4+IjsKQEAgLTM0NSwxNiArMzQ1LDExIEBAIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmEKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKICAgICBp
ZiAodmFsdWUuaXNEb3VibGUoKSkgewogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUuYXNO
dW1iZXIoKTsKLSAgICAgICAgaWYgKG51bWJlciA9PSBudW1iZXIpIHsKLSAgICAgICAgICAgIGlu
dDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7Ci0gICAgICAgICAg
ICBpZiAoYXNJbnQ2NCA9PSBudW1iZXIgJiYgKGFzSW50NjQgfHwgIXN0ZDo6c2lnbmJpdChudW1i
ZXIpKQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPCAoc3RhdGljX2Nhc3Q8aW50NjRfdD4o
MSkgPDwgNDcpCi0gICAgICAgICAgICAgICAgJiYgYXNJbnQ2NCA+PSAtKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KDEpIDw8IDQ3KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTcGVjSW50NDhBc0Rv
dWJsZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3Vi
bGU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47CisgICAgICAgIGlm
IChudW1iZXIgIT0gbnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47Cisg
ICAgICAgIGlmICh2YWx1ZS5pc01hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBTcGVj
SW50NDhBc0RvdWJsZTsKKyAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9
CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9t
Q2VsbCh2YWx1ZS5hc0NlbGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDQ2ICszOCw0OCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cnVjdHVyZTsKIAogdHlw
ZWRlZiB1aW50MzJfdCBTcGVjdWxhdGVkVHlwZTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjTm9uZSAgICAgICAgICAgICAgPSAweDAwMDAwMDAwOyAvLyBXZSBkb24ndCBrbm93IGFu
eXRoaW5nIHlldC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmplY3Qg
ICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2JqZWN0Lgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICA9IDB4MDAw
MDAwMDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQXJyYXkuCi1zdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgID0gMHgwMDAwMDAwODsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAgICAgID0gMHgwMDAwMDAxMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1z
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAgID0gMHgwMDAw
MDAyMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJj
bGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMkFycmF5ICAgICAg
ICA9IDB4MDAwMDAwNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMkFycmF5IG9yIG9uZSBv
ZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDhB
cnJheSAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDhBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY1VpbnQ4Q2xhbXBlZEFycmF5ID0gMHgwMDAwMDEwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFu
IFVpbnQ4Q2xhbXBlZEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDE2QXJyYXkgICAgICAgPSAweDAwMDAwMjAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MzJBcnJheSAgICAgICA9IDB4MDAw
MDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBvciBvbmUgb2YgaXRzIHN1
YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Zsb2F0MzJBcnJheSAg
ICAgID0gMHgwMDAwMDgwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmxv
YXQ2NEFycmF5ICAgICAgPSAweDAwMDAxMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNUeXBlZEFycmF5VmlldyAgICA9IFNwZWNJbnQ4QXJyYXkgfCBTcGVjSW50MTZBcnJh
eSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkgfCBTcGVjVWludDhDbGFtcGVkQXJy
YXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJyYXkgfCBTcGVjRmxvYXQzMkFycmF5
IHwgU3BlY0Zsb2F0NjRBcnJheTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQXJn
dW1lbnRzICAgICAgICAgPSAweDAwMDAyMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gQXJndW1l
bnRzIG9iamVjdC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nT2JqZWN0
ICAgICAgPSAweDAwMDA0MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTdHJpbmdPYmplY3QuCi1z
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgID0gMHgwMDAw
ODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmplY3Qs
IEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y09iamVjdCAgICAgICAgICAgID0gMHgwMDAwZmZmZjsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0
aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjU3RyaW5nSWRlbnQgICAgICAgPSAweDAwMDEwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3MgYW4gaWRlbnRpZmllci4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nVmFyICAgICAgICAgPSAweDAwMDIwMDAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIuCi1z
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAgICAgICAgICAgID0gMHgwMDAz
MDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCi1zdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0NlbGxPdGhlciAgICAgICAgID0gMHgwMDA0MDAwMDsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgSlNDZWxsIGJ1dCBub3QgYSBzdWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVmaW5p
dGVseSBub3QgYSBKU1N0cmluZy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2Vs
bCAgICAgICAgICAgICAgPSAweDAwMDdmZmZmOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyICAgICAgICAgICAgID0gMHgw
MDgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgotc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNJbnQ0OCAgICAgICAgICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBJbnQ0OCwgaXQncyBpbnNpZGUgYSBkb3VibGUsIGJ1dCBpdCBkb2Vzbid0IG5l
ZWQgdG8gYmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hpbmVJbnQgICAg
ICAgID0gMHgwMTgwMDAwMDsgLy8gSXQncyBzb21ldGhpbmcgdGhhdCB3ZSBjYW4gZG8gbWFjaGlu
ZSBpbnQgYXJpdGhtZXRpYyBvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50
NDhBc0RvdWJsZSAgICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50NDgg
YW5kIGl0J3MgaW5zaWRlIGEgZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNJbnRlZ2VyICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBzb21l
IGtpbmQgb2YgaW50ZWdlci4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uSW50
QXNEb3VibGUgICAgPSAweDA0MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm90IGFuIEludDQ4
IGJ1dCBpdCdzIGEgcmVhbCBudW1iZXIgYW5kIGl0J3MgYSBkb3VibGUuCi1zdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgID0gMHgwNzAwMDAwMDsgLy8gSXQn
cyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0RvdWJsZU5hTiAgICAgICAgID0gMHgwODAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgTmFOLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAgICAg
ICA9IDB4MGYwMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3VibGUu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iZXIgICAgICAgID0gMHgw
NzgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVSZWFsLgotc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAgICAgICAgICA9IDB4MGY4MDAwMDA7
IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEJvb2xlYW4uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVy
ICAgICAgICAgICAgID0gMHgyMDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vbmUgb2YgdGhl
IGFib3ZlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAg
ICA9IDB4M2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4NDAwMDAwMDA7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2Fu
IGJlIGFueSBvZiB0aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1
bGxUb3AgICAgICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJv
dmUgcGx1cyBhbnl0aGluZyB0aGUgREZHIGNob29zZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY05vbmUgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDA7IC8vIFdlIGRvbid0IGtu
b3cgYW55dGhpbmcgeWV0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGaW5hbE9i
amVjdCAgICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2Jq
ZWN0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICAg
PSAweDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICAgPSAweDAwMDAwMDA4OyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50OEFycmF5ICAgICAgICAgID0gMHgwMDAw
MDAxMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNs
YXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAg
ICA9IDB4MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9uZSBv
ZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50MzJB
cnJheSAgICAgICAgID0gMHgwMDAwMDA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyQXJy
YXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNVaW50OEFycmF5ICAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YW4gVWludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ICA9IDB4MDAwMDAxMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMu
CitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgICA9IDB4
MDAwMDAyMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRz
IHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQzMkFycmF5
ICAgICAgICA9IDB4MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBv
ciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0Zsb2F0MzJBcnJheSAgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBV
aW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Zsb2F0NjRBcnJheSAgICAgICA9IDB4MDAwMDEwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1R5cGVkQXJyYXlWaWV3ICAgICA9IFNwZWNJbnQ4QXJy
YXkgfCBTcGVjSW50MTZBcnJheSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkgfCBT
cGVjVWludDhDbGFtcGVkQXJyYXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJyYXkg
fCBTcGVjRmxvYXQzMkFycmF5IHwgU3BlY0Zsb2F0NjRBcnJheTsKK3N0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjQXJndW1lbnRzICAgICAgICAgID0gMHgwMDAwMjAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBvYmplY3QuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY1N0cmluZ09iamVjdCAgICAgICA9IDB4MDAwMDQwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhIFN0cmluZ09iamVjdC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0
T3RoZXIgICAgICAgID0gMHgwMDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBi
dXQgbm90IEpTRmluYWxPYmplY3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCitzdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICA9IDB4MDAwMGZmZmY7IC8v
IEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rp
b24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAgICA9
IDB4MDAwMTAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBhbiBp
ZGVudGlmaWVyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIgICAg
ICAgICAgPSAweDAwMDIwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0
J3Mgbm90IGFuIGlkZW50aWZpZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0
cmluZyAgICAgICAgICAgICA9IDB4MDAwMzAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3Ry
aW5nLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAgICAgICAg
PSAweDAwMDQwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBhIHN1YmNs
YXNzIG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgPSAweDAwMDdmZmZmOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0ludDMyICAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBh
biBJbnQzMi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NDggICAgICAgICAg
ICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4IGFuZCB3ZSBpbnRl
bmQgaXQgdG8gdW5ib3ggaXQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hp
bmVJbnQgICAgICAgICA9IDB4MDE4MDAwMDA7IC8vIEl0J3Mgc29tZXRoaW5nIHRoYXQgd2UgY2Fu
IGRvIG1hY2hpbmUgaW50IGFyaXRobWV0aWMgb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0ludDQ4QXNEb3VibGUgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBzb21lIGtpbmQgb2YgaW50ZWdlci4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjTm9uSW50QXNEb3VibGUgICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IG5vdCBhbiBJbnQ0OCBidXQgaXQncyBhIHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91YmxlLgor
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICAgPSAweDA2
MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KK3N0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlTmFOICAgICAgICAgID0gMHgwODAwMDAwMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNE
b3VibGUgICAgICAgICAgICAgPSAweDBlMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4g
b3IgYSBOYU4gZG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29k
ZVJlYWxOdW1iZXIgPSAweDA2ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBhIERv
dWJsZVJlYWwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxSZWFsTnVtYmVy
ICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlUmVh
bCwgb3IgYSBJbnQ0OC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVO
dW1iZXIgICAgID0gMHgwZTgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3Vi
bGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxOdW1iZXIgICAgICAgICA9
IDB4MGY4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ0OCwgb3IgYSBEb3VibGUu
CitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAgICA9IDB4
MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICA9IDB4MjAwMDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBub25lIG9mIHRoZSBhYm92ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjSGVhcFRvcCAgICAgICAgICAgID0gMHgzZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBv
ZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNCeXRlY29kZVRvcCAgICAgICAgPSAweDdlZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9m
IHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NDguCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBh
bnkgb2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgogCiB0eXBlZGVm
IGJvb2wgKCpTcGVjdWxhdGVkVHlwZUNoZWNrZXIpKFNwZWN1bGF0ZWRUeXBlKTsKIApAQCAtMjQw
LDcgKzI0Miw3IEBAIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGUKIAog
aW5saW5lIGJvb2wgaXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIFNwZWNEb3VibGUpOworICAgIHJldHVy
biAhKHZhbHVlICYgKFNwZWNEb3VibGUgfCBTcGVjSW50NDgpKTsKIH0KIAogaW5saW5lIGJvb2wg
aXNJbnQzMlNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2YWx1ZSkK
QEAgLTI2NSw3ICsyNjcsNyBAQCBpbmxpbmUgYm9vbCBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbkV4
cGVjCiAKIGlubGluZSBib29sIGlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVjRG91Ymxl
ICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRG91YmxlKTsK
IH0KIAogaW5saW5lIGJvb2wgaXNJbnQ0OEFzRG91YmxlU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCkBAIC0yOTMsMTkgKzI5NSwzNCBAQCBpbmxpbmUgYm9vbCBpc0RvdWJsZVNwZWN1
bGF0aW9uRm9yQXJpdGhtCiAgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0RvdWJsZSk7CiB9CiAK
LWlubGluZSBib29sIGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQoraW5saW5lIGJvb2wgaXNCeXRlY29kZVJlYWxOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVk
VHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQnl0ZWNvZGVSZWFsTnVt
YmVyKSAmJiAhKHZhbHVlICYgflNwZWNCeXRlY29kZVJlYWxOdW1iZXIpOworfQorCitpbmxpbmUg
Ym9vbCBpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7
CisgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0Z1bGxSZWFsTnVtYmVyKSAmJiAhKHZhbHVlICYg
flNwZWNGdWxsUmVhbE51bWJlcik7Cit9CisKK2lubGluZSBib29sIGlzQnl0ZWNvZGVOdW1iZXJT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUg
JiBTcGVjQnl0ZWNvZGVOdW1iZXIpICYmICEodmFsdWUgJiB+U3BlY0J5dGVjb2RlTnVtYmVyKTsK
K30KKworaW5saW5lIGJvb2wgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY1JlYWxOdW1iZXIpICYmICEodmFs
dWUgJiB+U3BlY1JlYWxOdW1iZXIpOworICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNGdWxsTnVt
YmVyKSAmJiAhKHZhbHVlICYgflNwZWNGdWxsTnVtYmVyKTsKIH0KIAotaW5saW5lIGJvb2wgaXNO
dW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlzQnl0
ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY051bWJlcikgJiYgISh2YWx1ZSAmIH5T
cGVjTnVtYmVyKTsKKyAgICByZXR1cm4gaXNCeXRlY29kZU51bWJlclNwZWN1bGF0aW9uKHZhbHVl
ICYgflNwZWNPdGhlcik7CiB9CiAKLWlubGluZSBib29sIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBl
Y3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNGdWxsTnVt
YmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewot
ICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CisgICAg
cmV0dXJuIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CiB9CiAK
IGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTUgQEAgZW51bSBWYWx1
ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBBbHJlYWR5SW5KU1N0YWNrLAogICAgIC8vIEl0J3Mg
YWxyZWFkeSBpbiB0aGUgc3RhY2sgYnV0IHVuYm94ZWQuCiAgICAgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZEludDMyLAorICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCwKICAgICBB
bHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJv
eGVkQm9vbGVhbiwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlLAogICAgIC8v
IEl0J3MgaW4gYSByZWdpc3Rlci4KICAgICBJbkdQUiwKICAgICBVbmJveGVkSW50MzJJbkdQUiwK
KyAgICBVbmJveGVkSW50NDhJbkdQUiwKKyAgICBVbmJveGVkU3RyaWN0SW50NDhJbkdQUiwKICAg
ICBVbmJveGVkQm9vbGVhbkluR1BSLAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgSW5QYWly
LApAQCAtNjAsNiArNjMsOCBAQCBlbnVtIFZhbHVlUmVjb3ZlcnlUZWNobmlxdWUgewogICAgIERp
c3BsYWNlZEluSlNTdGFjaywKICAgICAvLyBJdCdzIGluIHRoZSBzdGFjaywgYXQgYSBkaWZmZXJl
bnQgbG9jYXRpb24sIGFuZCBpdCdzIHVuYm94ZWQuCiAgICAgSW50MzJEaXNwbGFjZWRJbkpTU3Rh
Y2ssCisgICAgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2ssCisgICAgU3RyaWN0SW50NDhEaXNwbGFj
ZWRJbkpTU3RhY2ssCiAgICAgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrLAogICAgIENlbGxEaXNw
bGFjZWRJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjaywKQEAgLTk1LDYg
KzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAor
ICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCgp
CisgICAgeworICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1f
dGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpCiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJl
c3VsdDsKQEAgLTEyNSw2ICsxMzcsMTAgQEAgcHVibGljOgogICAgICAgICBWYWx1ZVJlY292ZXJ5
IHJlc3VsdDsKICAgICAgICAgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKQogICAg
ICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDMySW5HUFI7CisgICAgICAg
IGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgcmVz
dWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDQ4SW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRh
dGFGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0Lm1f
dGVjaG5pcXVlID0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFI7CiAgICAgICAgIGVsc2UgaWYgKGRh
dGFGb3JtYXQgPT0gRGF0YUZvcm1hdEJvb2xlYW4pCiAgICAgICAgICAgICByZXN1bHQubV90ZWNo
bmlxdWUgPSBVbmJveGVkQm9vbGVhbkluR1BSOwogICAgICAgICBlbHNlCkBAIC0xNjgsNiArMTg0
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDMyRGlz
cGxhY2VkSW5KU1N0YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUg
PSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OgorICAgICAgICAgICAgcmVz
dWx0Lm1fdGVjaG5pcXVlID0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6
CiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBEb3VibGVEaXNwbGFjZWRJbkpTU3Rh
Y2s7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyOSw2ICsyNTMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
OgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAgICAg
Y2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZEJvb2xlYW46CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERv
dWJsZToKQEAgLTI0MCw3ICsyNjUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgZ3ByKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RlY2hu
aXF1ZSA9PSBJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBtX3Rl
Y2huaXF1ZSA9PSBVbmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQzMklu
R1BSKTsKKyAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5pcXVl
ID09IFVuYm94ZWRJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFuSW5H
UFIgfHwgbV90ZWNobmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hl
ZEludDQ4SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFIpOwog
ICAgICAgICByZXR1cm4gbV9zb3VyY2UuZ3ByOwogICAgIH0KICAgICAKQEAgLTI2Niw3ICsyOTEs
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rlcigp
IGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5K
U1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVj
aG5pcXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxs
RGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpT
U3RhY2spOworICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNr
IHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVl
ID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxh
Y2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2sg
fHwgbV90ZWNobmlxdWUgPT0gSW50NDhEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUg
PT0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gbV9zb3Vy
Y2UudmlydHVhbFJlZzsKICAgICB9CiAgICAgCkBAIC0yODUsNiArMzEwLDkgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAg
IG91dC5wcmludGYoIihpbnQzMikiKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2Fz
ZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIoaW50NDgpIik7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoY2VsbCkiKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwMCw2ICszMjgsMTIgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiaW50MzIo
JSVyJWQpIiwgZ3ByKCkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVuYm94
ZWRJbnQ0OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50ZigiaW50NDgoJSVyJWQpIiwgZ3By
KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ0
OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50Zigic3RyaWN0SW50NDgoJSVyJWQpIiwgZ3By
KCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5H
UFI6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJib29sKCUlciVkKSIsIGdwcigpKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTMyMCw2ICszNTQsMTIgQEAgcHVibGljOgogICAgICAgICBjYXNl
IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKmludDMy
KCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Y2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG91dC5wcmludGYoIipp
bnQ0OCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGNhc2UgU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCIqc3RyaWN0SW50NDgoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAgICAg
ICAgICAgIG91dC5wcmludGYoIipkb3VibGUoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG5lZWRzVHlwZUNoZWNr
KE5vZGUqIG5vZGUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBmb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH50eXBlc1Bhc3NlZFRocm91Z2g7
CisgICAgICAgIHJldHVybiAhZm9yTm9kZShub2RlKS5pc1R5cGUodHlwZXNQYXNzZWRUaHJvdWdo
KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBuZWVkc1R5cGVDaGVjayhFZGdlIGVkZ2UsIFNwZWN1
bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKQEAgLTE2OCw3ICsxNjgsNyBAQCBwcml2YXRl
OgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJCeVR5cGUoTm9kZSogbm9kZSwgRWRnZSYg
ZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gZm9yTm9kZShlZGdlKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fdHlwZSAmIH50eXBl
KSB7CisgICAgICAgIGlmICghdmFsdWUuaXNUeXBlKHR5cGUpKSB7CiAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgZWRnZS5zZXRQcm9vZlN0YXR1cyhOZWVk
c0NoZWNrKTsKICAgICAgICAgfSBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lv
biAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2ICszMTAsMjYgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIAorICAgIGNhc2UgSW50NDhUb0RvdWJsZTogeworICAgICAgICBKU1ZhbHVlIGNo
aWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxk
ICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNo
aWxkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAK
KyAgICBjYXNlIEludDQ4VG9WYWx1ZTogeworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlz
TnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZSkgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBj
YXNlIFZhbHVlQWRkOgogICAgIGNhc2UgQXJpdGhBZGQ6IHsKICAgICAgICAgSlNWYWx1ZSBsZWZ0
ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKQEAgLTMyNCw5ICszNDQsMTUgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYg
KCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSku
c2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5pc1R5cGUoU3BlY0ludDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUt
PmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRD
YW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNl
OgotICAgICAgICAgICAgaWYgKGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICAmJiBpc1JlYWxOdW1iZXJTcGVjdWxh
dGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQorICAgICAgICAgICAgaWYgKGlz
RnVsbFJlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUp
CisgICAgICAgICAgICAgICAgJiYgaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUo
bm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC0zMzQsNyArMzYwLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBWYWx1ZUFkZCk7CiAg
ICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsK
LSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjU3RyaW5nIHwgU3BlY0ludDMy
IHwgU3BlY051bWJlcik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY1N0
cmluZyB8IFNwZWNCeXRlY29kZU51bWJlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBicmVhazsKQEAgLTM1OCw2ICszODQsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5j
YXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgp
OworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0lu
dDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUo
U3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0z
ODAsNiArNDEyLDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS0+YXJpdGhO
b2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIGlmIChtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpCisgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGlmICghYnl0
ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCisgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjRG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA0LDkgKzQ0MywxMyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAg
fHwgIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkp
KQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CisgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRy
dWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAg
ICAgICAgaWYgKGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdHlwZSkKLSAgICAgICAgICAgICAgICB8fCBpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JO
b2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQorICAgICAgICAgICAgaWYgKGlzRnVsbFJlYWxO
dW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpCisgICAgICAg
ICAgICAgICAgfHwgaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hp
bGQyKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNEb3VibGVSZWFsKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC01ODYsNyArNjI5LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKGFic3RyYWN0
Q2hpbGQubV90eXBlKSkgeworICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oYWJz
dHJhY3RDaGlsZC5tX3R5cGUpKSB7CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCB2bS0+
c21hbGxTdHJpbmdzLm51bWJlclN0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC04MTIsNyArODU1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3Vi
bGUpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKICAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTg2Myw3ICs5
MDYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2Fz
ZSBBcnJheVB1c2g6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGNs
b2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwotICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY051bWJlcik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAog
ICAgIGNhc2UgQXJyYXlQb3A6CkBAIC05MzQsOCArOTc3LDggQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBOQi4gVGhlIG1vcmUgY2Fub25pY2Fs
IHdheSBvZiB3cml0aW5nIHRoaXMgd291bGQgaGF2ZSBiZWVuOgogICAgICAgICAvLwogICAgICAg
ICAvLyBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKLSAgICAgICAgLy8gaWYgKGRlc3RpbmF0aW9uLm1f
dHlwZSAmICEoU3BlY051bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpIHsKLSAgICAg
ICAgLy8gICAgIGRlc3RpbmF0aW9uLmZpbHRlcihTcGVjTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNw
ZWNCb29sZWFuKTsKKyAgICAgICAgLy8gaWYgKGRlc3RpbmF0aW9uLm1fdHlwZSAmICEoU3BlY0Z1
bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4pKSB7CisgICAgICAgIC8vICAgICBk
ZXN0aW5hdGlvbi5maWx0ZXIoU3BlY0Z1bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xl
YW4pOwogICAgICAgICAvLyAgICAgQWJzdHJhY3RWYWx1ZSBzdHJpbmc7CiAgICAgICAgIC8vICAg
ICBzdHJpbmcuc2V0KHZtLT5zdHJpbmdTdHJ1Y3R1cmUpOwogICAgICAgICAvLyAgICAgZGVzdGlu
YXRpb24ubWVyZ2Uoc3RyaW5nKTsKQEAgLTk1NSw3ICs5OTgsNyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2Rl
T3JpZ2luLCBjbG9iYmVyTGltaXQpOwogICAgICAgICAKICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
dHlwZSA9IHNvdXJjZS5tX3R5cGU7Ci0gICAgICAgIGlmICh0eXBlICYgfihTcGVjTnVtYmVyIHwg
U3BlY1N0cmluZyB8IFNwZWNCb29sZWFuKSkKKyAgICAgICAgaWYgKHR5cGUgJiB+KFNwZWNGdWxs
TnVtYmVyIHwgU3BlY1N0cmluZyB8IFNwZWNCb29sZWFuKSkKICAgICAgICAgICAgIHR5cGUgPSAo
U3BlY0hlYXBUb3AgJiB+U3BlY0NlbGwpIHwgU3BlY1N0cmluZzsKIAogICAgICAgICBkZXN0aW5h
dGlvbi5zZXRUeXBlKHR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2
ICs2Nyw4IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgSlMKICAgICB9
CiAgICAgICAgIAogICAgIG1fdHlwZSA9IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKTsKKyAg
ICBpZiAobV90eXBlID09IFNwZWNJbnQ0OEFzRG91YmxlKQorICAgICAgICBtX3R5cGUgPSBTcGVj
SW50NDg7CiAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAgICAgICAKICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CkBAIC0yMjcsNiArMjI5LDcgQEAgRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVl
Ojpub3JtYWxpegogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CiB2b2lkIEFic3RyYWN0VmFsdWU6OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAgIGlm
ICghKG1fdHlwZSAmIFNwZWNDZWxsKSkgewpAQCAtMjM4LDE0ICsyNDEsMTkgQEAgdm9pZCBBYnN0
cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KCkgYwogICAgIGlmIChpc0NsZWFyKCkpCiAgICAg
ICAgIEFTU0VSVCghbV92YWx1ZSk7CiAgICAgCi0gICAgaWYgKCEhbV92YWx1ZSkKLSAgICAgICAg
QVNTRVJUKG1lcmdlU3BlY3VsYXRpb25zKG1fdHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUobV92
YWx1ZSkpID09IG1fdHlwZSk7CisgICAgaWYgKCEhbV92YWx1ZSkgeworICAgICAgICBTcGVjdWxh
dGVkVHlwZSB0eXBlID0gbV90eXBlOworICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ0OCkKKyAg
ICAgICAgICAgIHR5cGUgfD0gU3BlY0ludDQ4QXNEb3VibGU7CisgICAgICAgIEFTU0VSVChtZXJn
ZVNwZWN1bGF0aW9ucyh0eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gdHlw
ZSk7CisgICAgfQogICAgIAogICAgIC8vIE5vdGUgdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBhIHBy
ZWRpY3Rpb24gbGlrZSAoRmluYWwsIFtdKS4gVGhpcyByZWFsbHkgbWVhbnMgdGhhdAogICAgIC8v
IHRoZSB2YWx1ZSBpcyBib3R0b20gYW5kIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoZSB2YWx1
ZSBpcyB1bnJlYWNoYWJsZS4gQnV0CiAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBnZXQgcGVkYW50
aWMgYWJvdXQgdGhpcyBhcyBpdCB3b3VsZCBvbmx5IGluY3JlYXNlIHRoZSBjb21wdXRhdGlvbmFs
CiAgICAgLy8gY29tcGxleGl0eSBvZiB0aGUgY29kZS4KIH0KKyNlbmRpZgogCiB2b2lkIEFic3Ry
YWN0VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxNTU4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg1LDYgKzE4NSwxNiBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAg
ICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBjb3VsZEJlVHlw
ZShTcGVjdWxhdGVkVHlwZSBkZXNpcmVkVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhISht
X3R5cGUgJiBkZXNpcmVkVHlwZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNUeXBlKFNwZWN1
bGF0ZWRUeXBlIGRlc2lyZWRUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEobV90eXBlICYg
fmRlc2lyZWRUeXBlKTsKKyAgICB9CisgICAgCiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIo
R3JhcGgmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKICAgICAKICAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2RlcyBhcnJheU1vZGVzKTsKQEAgLTE5MywyMiArMjAz
LDYgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQg
ZmlsdGVyQnlWYWx1ZShKU1ZhbHVlIHZhbHVlKTsKICAgICAKLSAgICBib29sIHZhbGlkYXRlVHlw
ZShKU1ZhbHVlIHZhbHVlKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzSGVhcFRvcCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAotICAgICAgICBpZiAobWVyZ2VTcGVj
dWxhdGlvbnMobV90eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IG1fdHlwZSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGlmICh2YWx1ZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgJiBTcGVjRW1wdHkpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICAKICAgICBib29sIHZhbGlkYXRlKEpTVmFsdWUgdmFsdWUpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoaXNIZWFwVG9wKCkpCkBAIC0yNTEsNyArMjQ1LDExIEBA
IHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgICAgIHx8ICFhcnJheU1vZGVzQXJlQ2xl
YXJPclRvcChtX2FycmF5TW9kZXMpOwogICAgIH0KICAgICAKKyNpZiBBU1NFUlRfRElTQUJMRUQK
KyAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdCB7IH0KKyNlbHNlCiAgICAgdm9pZCBj
aGVja0NvbnNpc3RlbmN5KCkgY29uc3Q7CisjZW5kaWYKICAgICAKICAgICB2b2lkIGR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OwpAQCAtMzYzLDYgKzM2MSwyOSBAQCBwcml2YXRlOgogICAgICAg
ICBtX2FycmF5TW9kZXMgPSBBTExfQVJSQVlfTU9ERVM7CiAgICAgfQogICAgIAorICAgIGJvb2wg
dmFsaWRhdGVUeXBlKEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNI
ZWFwVG9wKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIC8v
IENvbnN0YW50IGZvbGRpbmcgYWx3YXlzIHJlcHJlc2VudHMgSW50NDgncyBpbiBhIGRvdWJsZSAo
aS5lLiBJbnQ0OEFzRG91YmxlKS4KKyAgICAgICAgLy8gU28gc3BlY3VsYXRpb25Gcm9tVmFsdWUo
dmFsdWUpIGZvciBhbiBJbnQ0OCB2YWx1ZSB3aWxsIHJldHVybiBJbnQ0OEFzRG91YmxlLAorICAg
ICAgICAvLyBhbmQgdGhhdCdzIGZpbmUgLSB0aGUgdHlwZSB2YWxpZGF0ZXMganVzdCBmaW5lLgor
ICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gbV90eXBlOworICAgICAgICBpZiAodHlwZSAm
IFNwZWNJbnQ0OCkKKyAgICAgICAgICAgIHR5cGUgfD0gU3BlY0ludDQ4QXNEb3VibGU7CisgICAg
ICAgIAorICAgICAgICBpZiAobWVyZ2VTcGVjdWxhdGlvbnModHlwZSwgc3BlY3VsYXRpb25Gcm9t
VmFsdWUodmFsdWUpKSAhPSB0eXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKKyAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgQVNTRVJUKG1f
dHlwZSAmIFNwZWNFbXB0eSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAogICAgIHZvaWQgbWFr
ZVRvcChTcGVjdWxhdGVkVHlwZSB0b3ApCiAgICAgewogICAgICAgICBtX3R5cGUgfD0gdG9wOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNp
b24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMjEgKzE1NywyMSBAQCBBcnJheU1vZGUgQXJyYXlNb2Rl
OjpyZWZpbmUoU3BlY3VsYXRlZFR5CiAgICAgICAgICAgICByZXR1cm4gd2l0aFR5cGUoQXJyYXk6
OkZvcmNlRXhpdCk7CiAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24odmFsdWUpKQogICAg
ICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6SW50MzIsIEFycmF5
OjpDb252ZXJ0KTsKLSAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQorICAg
ICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAgcmV0
dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6RG91YmxlLCBBcnJheTo6Q29udmVydCk7
CiAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkNvbnRpZ3VvdXMs
IEFycmF5OjpDb252ZXJ0KTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAg
ICAgIGlmICghdmFsdWUgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHZhbHVlKSkKICAgICAgICAgICAg
IHJldHVybiAqdGhpczsKLSAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQor
ICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAg
cmV0dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6RG91YmxlLCBBcnJheTo6Q29udmVy
dCk7CiAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkNvbnRpZ3Vv
dXMsIEFycmF5OjpDb252ZXJ0KTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJheTo6RG91YmxlOgog
ICAgICAgICBpZiAoZmxhZ3MgJiBOb2RlQnl0ZWNvZGVVc2VzQXNJbnQpCiAgICAgICAgICAgICBy
ZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpDb250aWd1b3VzLCBBcnJheTo6UmFn
ZUNvbnZlcnQpOwotICAgICAgICBpZiAoIXZhbHVlIHx8IGlzTnVtYmVyU3BlY3VsYXRpb24odmFs
dWUpKQorICAgICAgICBpZiAoIXZhbHVlIHx8IGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVl
KSkKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5k
Q29udmVyc2lvbihBcnJheTo6Q29udGlndW91cywgQXJyYXk6OkNvbnZlcnQpOwogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lv
biAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjMsMjEgKzYzLDYgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToK
ICAgICAKLSAgICBOb2RlKiBjYW5vbmljYWxpemUoTm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAg
IGlmICghbm9kZSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gVmFsdWVUb0ludDMyKQotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmNo
aWxkMSgpLm5vZGUoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBub2RlOwotICAgIH0KLSAg
ICBOb2RlKiBjYW5vbmljYWxpemUoRWRnZSBlZGdlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNh
bm9uaWNhbGl6ZShlZGdlLm5vZGUoKSk7Ci0gICAgfQotICAgIAogICAgIHVuc2lnbmVkIGVuZElu
ZGV4Rm9yUHVyZUNTRSgpCiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2xhc3RT
ZWVuW21fY3VycmVudE5vZGUtPm9wKCldOwpAQCAtOTQsOSArNzksOSBAQCBwcml2YXRlOgogCiAg
ICAgTm9kZSogcHVyZUNTRShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgTm9kZSogY2hpbGQx
ID0gY2Fub25pY2FsaXplKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTm9kZSogY2hpbGQyID0g
Y2Fub25pY2FsaXplKG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgTm9kZSogY2hpbGQzID0gY2Fu
b25pY2FsaXplKG5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgRWRnZSBjaGlsZDEgPSBub2RlLT5j
aGlsZDEoKTsKKyAgICAgICAgRWRnZSBjaGlsZDIgPSBub2RlLT5jaGlsZDIoKTsKKyAgICAgICAg
RWRnZSBjaGlsZDMgPSBub2RlLT5jaGlsZDMoKTsKICAgICAgICAgCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGVuZEluZGV4Rm9yUHVyZUNTRSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2Rl
KiBvdGhlck5vZGUgPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7CkBAIC0xMDksMTkgKzk0LDE5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSAhPSBvdGhl
ck5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIE5vZGUqIG90aGVyQ2hpbGQgPSBjYW5vbmljYWxpemUob3Ro
ZXJOb2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBFZGdlIG90aGVyQ2hpbGQgPSBvdGhlck5v
ZGUtPmNoaWxkMSgpOwogICAgICAgICAgICAgaWYgKCFvdGhlckNoaWxkKQogICAgICAgICAgICAg
ICAgIHJldHVybiBvdGhlck5vZGU7CiAgICAgICAgICAgICBpZiAob3RoZXJDaGlsZCAhPSBjaGls
ZDEpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IG90aGVyQ2hpbGQgPSBjYW5vbmljYWxpemUob3RoZXJOb2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICBvdGhlckNoaWxkID0gb3RoZXJOb2RlLT5jaGlsZDIoKTsKICAgICAgICAgICAgIGlmICgh
b3RoZXJDaGlsZCkKICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXJOb2RlOwogICAgICAgICAg
ICAgaWYgKG90aGVyQ2hpbGQgIT0gY2hpbGQyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBvdGhlckNoaWxkID0gY2Fub25pY2FsaXplKG90aGVy
Tm9kZS0+Y2hpbGQzKCkpOworICAgICAgICAgICAgb3RoZXJDaGlsZCA9IG90aGVyTm9kZS0+Y2hp
bGQzKCk7CiAgICAgICAgICAgICBpZiAoIW90aGVyQ2hpbGQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG90aGVyTm9kZTsKICAgICAgICAgICAgIGlmIChvdGhlckNoaWxkICE9IGNoaWxkMykKQEAg
LTM3NywyMSArMzYyLDIxIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1f
Y3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgIGlmIChub2RlID09IGNoaWxkMSB8fCBu
b2RlID09IGNhbm9uaWNhbGl6ZShjaGlsZDIpKSAKKyAgICAgICAgICAgIGlmIChub2RlID09IGNo
aWxkMSB8fCBub2RlID09IGNoaWxkMikgCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgY2FzZSBHZXRCeVZhbDoK
ICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGguYnlWYWxJc1B1cmUobm9kZSkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KSA9PSBjaGlsZDEgJiYgY2Fub25pY2FsaXplKG5vZGUtPmNoaWxkMigpKSA9PSBjYW5vbmljYWxp
emUoY2hpbGQyKSkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gY2hpbGQx
ICYmIG5vZGUtPmNoaWxkMigpID09IGNoaWxkMikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFs
OgogICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CiAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLmJ5VmFsSXNQdXJlKG5vZGUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSA9PSBj
aGlsZDEgJiYgY2Fub25pY2FsaXplKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpID09IGNh
bm9uaWNhbGl6ZShjaGlsZDIpKQorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDApID09IGNoaWxkMSAmJiBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpID09
IGNoaWxkMikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMikubm9kZSgpOwogICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgYXNzdW1lIHRoYXQg
dGhlIFB1dEJ5VmFsIHdpbGwgY2xvYmJlciB0aGUgbG9jYXRpb24gd2UncmUgZ2V0dGluZyBmcm9t
LgogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyOyBpZiB3ZSBrbm93
IHRoYXQgdGhlIFB1dEJ5VmFsIGlzIGFjY2Vzc2luZyBhbiBhcnJheSBvZiBhCkBAIC0xMDkwLDYg
KzEwNzUsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50OgogICAg
ICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAgY2FzZSBNYWtlUm9wZToKKyAgICAgICAg
Y2FzZSBJbnQ0OFRvRG91YmxlOgorICAgICAgICBjYXNlIEludDQ4VG9WYWx1ZToKICAgICAgICAg
ICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChwdXJlQ1NFKG5vZGUpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNTU4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTEyLDYgKzExMiw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgog
ICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOgor
ICAgIGNhc2UgSW50NDhUb1ZhbHVlOgogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNh
c2UgTW92SGludEFuZENoZWNrOgpAQCAtMTgwLDYgKzE4Miw3IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgc3dpdGNoIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6
CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAgcmVhZChXb3JsZCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2
ICsxNDMsMTUgQEAgaW5saW5lIGJvb2wgZW5hYmxlQ29uY3VycmVudEpJVCgpCiAjZW5kaWYKIH0K
IAoraW5saW5lIGJvb2wgZW5hYmxlSW50NDgoKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
cmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBlbnVt
IFNwaWxsUmVnaXN0ZXJzTW9kZSB7IE5lZWRUb1NwaWxsLCBEb250U3BpbGwgfTsKIAogZW51bSBO
b1Jlc3VsdFRhZyB7IE5vUmVzdWx0IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0
LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGZpeHVwU2V0TG9jYWxzSW5CbG9jayhtX2dy
YXBoLmJsb2NrKGJsb2NrSW5kZXgpKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgZm9y
IChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9j
a3MoKTsgKytibG9ja0luZGV4KQorICAgICAgICAgICAgZml4dXBVbnR5cGVkU2V0TG9jYWxzSW5C
bG9jayhtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpKTsKKyAgICAgICAgCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApAQCAtOTIsNyArOTUsNyBAQCBwcml2YXRlOgogICAgICAgICBzd2l0
Y2ggKG9wKSB7CiAgICAgICAgIGNhc2UgU2V0TG9jYWw6IHsKICAgICAgICAgICAgIC8vIFRoaXMg
Z2V0cyBoYW5kbGVkIGJ5IGZpeHVwU2V0TG9jYWxzSW5CbG9jaygpLgotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIEJpdEFuZDoKQEAgLTEyNCw2ICsxMjcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpIHsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgewogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xOTcsNiArMjA1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fZ3JhcGgubmVnYXRlU2hvdWxkU3Bl
Y3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGlu
ZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMDcsNiArMjE5LDExIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1f
Z3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5j
aGlsZDIoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMwMCw2ICszMTcsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5h
YmxlSW50NDgoKQorICAgICAgICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hp
bmVJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNo
aWxkMigpKTsKQEAgLTM1NSw2ICszNzgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKQorICAgICAgICAg
ICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCku
bm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVt
YmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKQEAgLTQ3NSw3ICs1
MDQsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5wcmVkaWN0aW9uKCkg
JiBTcGVjSW50NDgpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
Y2hpbGQzKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxV
c2U+KGNoaWxkMSk7CkBAIC04NDcsNiArODc5LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBD
aGVja1RpZXJVcEluTG9vcDoKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAg
ICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAgICAgIGNhc2UgSW50NDhUb0Rv
dWJsZToKKyAgICAgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIApAQCAtMTE4
OSw2ICsxMjIzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAgICAgICAg
ICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTEyMDMsNiArMTI0MCwyMyBAQCBwcml2YXRlOgogICAgICAgICBtX2luc2Vy
dGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBmaXh1cFVudHlw
ZWRTZXRMb2NhbHNJbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgaWYg
KCFibG9jaykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1Jl
YWNoYWJsZSk7CisgICAgICAgIG1fYmxvY2sgPSBibG9jazsKKyAgICAgICAgZm9yIChtX2luZGV4
SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKyttX2luZGV4SW5C
bG9jaykgeworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudE5vZGUgPSBibG9jay0+
YXQobV9pbmRleEluQmxvY2spOworICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9j
YWwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgfQorICAg
ICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgTm9k
ZSogY2hlY2tBcnJheShBcnJheU1vZGUgYXJyYXlNb2RlLCBjb25zdCBDb2RlT3JpZ2luJiBjb2Rl
T3JpZ2luLCBOb2RlKiBhcnJheSwgTm9kZSogaW5kZXgsIGJvb2wgKCpzdG9yYWdlQ2hlY2spKGNv
bnN0IEFycmF5TW9kZSYpID0gY2FuQ1NFU3RvcmFnZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChh
cnJheU1vZGUuaXNTcGVjaWZpYygpKTsKQEAgLTEzMjEsNiArMTM3NSwxMCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIHx8IGlzQm9vbGVhblNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0
aW9uKCkpKQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFi
bGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBpZiAoaXNNYWNoaW5lSW50
U3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICAgICAgbV9w
cm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94
KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2VsbFVzZToKICAgICAg
ICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgIGNhc2UgT2JqZWN0VXNlOgpAQCAtMTM0Nywx
MiArMTQwNSw4MCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPFVzZUtpbmQgdXNlS2luZD4KICAg
ICB2b2lkIGZpeEVkZ2UoRWRnZSYgZWRnZSwgU3BlY3VsYXRpb25EaXJlY3Rpb24gZGlyZWN0aW9u
ID0gQmFja3dhcmRTcGVjdWxhdGlvbikKICAgICB7Ci0gICAgICAgIGlmIChpc0RvdWJsZSh1c2VL
aW5kKSAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgewotICAg
ICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoZWRnZSwgdXNlS2luZCwgZGlyZWN0aW9u
KTsKKyAgICAgICAgaWYgKGlzRG91YmxlKHVzZUtpbmQpKSB7CisgICAgICAgICAgICBpZiAoZWRn
ZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsKKyAgICAgICAgICAgICAg
ICBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShlZGdlLCB1c2VLaW5kLCBkaXJlY3Rpb24pOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUlu
dCgpKSB7CisgICAgICAgICAgICAgICAgLy8gTWFrZSBhbGwgZG91YmxlIHVzZXMgb2YgaW50NDgg
dmFsdWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDQ4VG9Eb3VibGUuCisgICAgICAgICAgICAg
ICAgLy8gVGhpcyBpcyBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIEludDQ4VG9WYWx1ZSAoc2VlIGJl
bG93KSBleGNlcHQgdGhhdAorICAgICAgICAgICAgICAgIC8vIEludDhUb0RvdWJsZSB3aWxsIGNv
bnZlcnQgaW50NDgncyB0aGF0IGZpdCBpbiBhbiBpbnQzMiBpbnRvIGEgZG91YmxlCisgICAgICAg
ICAgICAgICAgLy8gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGNyZWF0ZSBhIGJveGVkIGludDMyIGxp
a2UgSW50NDhUb1ZhbHVlIGRvZXMuCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
Tm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0OEFzRG91YmxlLCBJbnQ0OFRvRG91YmxlLAor
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uu
bm9kZSgpLCBOdW1iZXJVc2UpKTsKKyAgICAgICAgICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQs
IHVzZUtpbmQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgdXNlS2luZCAhPSBN
YWNoaW5lSW50VXNlCisgICAgICAgICAgICAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KCkgJiYgIWVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKKyAgICAgICAgICAgIC8v
IFdlIG1ha2UgYWxsIG5vbi1pbnQ0OCB1c2VzIG9mIGludDQ4IHZhbHVlcyBoYXZlIGFuIGludGVy
bWVkaWF0ZSBJbnQ0OFRvVmFsdWUKKyAgICAgICAgICAgIC8vIG5vZGUgdG8gZW5zdXJlIHRoYXQg
d2UgaGFuZGxlIHRoaXMgcHJvcGVybHk6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8g
YTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0aEFkZChAYSwgLi4uKQorICAgICAg
ICAgICAgLy8gYzogQ2FsbCguLi4sIEBhKQorICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoQGEs
IC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBXaXRob3V0IGFuIGludGVybWVk
aWF0ZSBub2RlIGFuZCBqdXN0IGxhYmVsaW5nIHRoZSB1c2VzLCB3ZSB3aWxsIGdldDoKKyAgICAg
ICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6
IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50
eXBlZDpAYSkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAg
ICAgICAgICAvLworICAgICAgICAgICAgLy8gQW5kIG5vdyB0aGUgYy0+VW50eXBlZDpAYSBlZGdl
IHdpbGwgYm94IHRoZSB2YWx1ZSBvZiBAYSBpbnRvIGEgZG91YmxlLiBUaGlzCisgICAgICAgICAg
ICAvLyBpcyBiYWQsIGJlY2F1c2Ugbm93IHRoZSBkLT5JbnQ0ODpAYSBlZGdlIHdpbGwgZWl0aGVy
IGhhdmUgdG8gZG8gZG91YmxlLXRvLWludAorICAgICAgICAgICAgLy8gY29udmVyc2lvbnMsIG9y
IHdpbGwgaGF2ZSB0byBPU1IgZXhpdCB1bmNvbmRpdGlvbmFsbHkuIEFsdGVybmF0aXZlbHkgd2Ug
Y291bGQKKyAgICAgICAgICAgIC8vIGhhdmUgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSBib3ggdGhl
IHZhbHVlIGJ5IGNvcHlpbmcgcmF0aGVyIHRoYW4gaW4tcGxhY2UuCisgICAgICAgICAgICAvLyBC
dXQgdGhlc2UgYm94aW5ncyBhcmUgYWxzbyBjb3N0bHkgc28gdGhpcyB3b3VsZG4ndCBiZSBncmVh
dC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBUaGUgc29sdXRpb24gd2UgdXNlIGlz
IHRvIGFsd2F5cyBoYXZlIG5vbi1JbnQ0OCB1c2VzIG9mIHByZWRpY3RlZCBJbnQ0OCdzIHVzZQor
ICAgICAgICAgICAgLy8gYW4gaW50ZXJ2ZW5pbmcgSW50NDhUb1ZhbHVlIG5vZGU6CisgICAgICAg
ICAgICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBB
cml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8geDogSW50NDhUb1ZhbHVlKElu
dDQ4OkBhKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QHgpCisgICAgICAg
ICAgICAvLyBkOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAg
ICAgICAgIC8vIE5vdGUgdGhhdCBldmVuIGlmIHdlIGhhZCBtdWx0aXBsZSBub24taW50NDggdXNl
cyBvZiBAYSwgdGhlIG11bHRpcGxlCisgICAgICAgICAgICAvLyBJbnQ0OFRvVmFsdWUncyB3b3Vs
ZCBnZXQgQ1NFJ2QgdG9nZXRoZXIuIFNvIHRoZSBib3hpbmcgd291bGQgb25seSBoYXBwZW4gb25j
ZS4KKyAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIEBhIHdvdWxkIGNvbnRpbnVlIHRv
IGJlIHJlcHJlc2VudGVkIGFzIGEgbmF0aXZlIGludDQ4LgorICAgICAgICAgICAgLy8KKyAgICAg
ICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHdvdWxkIGhhdmUgYmVlbiB0byBpbnNlcnQgVG9OYXRp
dmVJbnQ0OCBub2RlcyBvbiBpbnQ0OCB1c2VzIG9mCisgICAgICAgICAgICAvLyBpbnQ0OCdzLiBU
aGlzIHdvdWxkIGhhdmUgaGFuZGxlZCB0aGUgYWJvdmUgZXhhbXBsZSBidXQgd291bGQgZmFsbCBv
dmVyIGZvcjoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAg
ICAgICAgICAgIC8vIGI6IENhbGwoLi4uLCBAYSkKKyAgICAgICAgICAgIC8vIGM6IEFyaXRoQWRk
KEBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQnV0IHRoZSBzb2x1dGlv
biB3ZSB1c2UgaGFuZGxlcyB0aGUgYWJvdmUgZ3JhY2VmdWxseS4KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4LCBJbnQ0OFRvVmFsdWUsCisgICAg
ICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwg
VW50eXBlZFVzZSkpOworICAgICAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgb2JzZXJ2
ZVVzZUtpbmRPbk5vZGU8dXNlS2luZD4oZWRnZS5ub2RlKCkpOworICAgICAgICAKICAgICAgICAg
ZWRnZS5zZXRVc2VLaW5kKHVzZUtpbmQpOwogICAgIH0KICAgICAKQEAgLTEzNzgsNyArMTUwNCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShFZGdlJiBlZGdl
LCBVc2VLaW5kIHVzZUtpbmQgPSBOdW1iZXJVc2UsIFNwZWN1bGF0aW9uRGlyZWN0aW9uIGRpcmVj
dGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBOb2RlKiByZXN1bHQg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNJbnQ0OCwgSW50MzJUb0RvdWJsZSwKKyAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjSW50NDhBc0RvdWJsZSwgSW50MzJUb0RvdWJsZSwKICAgICAgICAgICAgIG1fY3VycmVudE5v
ZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwogICAgICAgICBp
ZiAoZGlyZWN0aW9uID09IEZvcndhcmRTcGVjdWxhdGlvbikKICAgICAgICAgICAgIHJlc3VsdC0+
bWVyZ2VGbGFncyhOb2RlRXhpdHNGb3J3YXJkKTsKQEAgLTE0MzQsMTMgKzE1NjAsMjAgQEAgcHJp
dmF0ZToKICAgICBib29sIGF0dGVtcHRUb01ha2VJbnRlZ2VyQWRkKE5vZGUqIG5vZGUpCiAgICAg
ewogICAgICAgICBBZGRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IG1fZ3JhcGguYWRkU3BlY3VsYXRp
b25Nb2RlKG5vZGUpOwotICAgICAgICBpZiAobW9kZSA9PSBEb250U3BlY3VsYXRlSW50MzIpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtb2RlICE9IERvbnRTcGVjdWxh
dGVJbnQzMikgeworICAgICAgICAgICAgdHJ1bmNhdGVDb25zdGFudHNJZk5lY2Vzc2FyeShub2Rl
LCBtb2RlKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB0cnVuY2F0ZUNv
bnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUsIG1vZGUpOwotICAgICAgICBmaXhFZGdlPEludDMyVXNl
Pihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3Vs
ZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGlu
ZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBib29s
IGF0dGVtcHRUb01ha2VHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAJKHJldmlzaW9uIDE1NTgyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBGbHUKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgb3V0LnByaW50KCJGbHVz
aGVkSW50MzIiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAg
ICAgICBvdXQucHJpbnQoIkZsdXNoZWRJbnQ0OCIpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBGbHVzaGVkRG91YmxlOgogICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWREb3VibGUiKTsKICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZv
cm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hG
b3JtYXQuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIGVudW0gRmx1c2hGb3JtYXQgewogICAgIERlYWRGbHVz
aCwKICAgICBGbHVzaGVkSW50MzIsCisgICAgRmx1c2hlZEludDQ4LAogICAgIEZsdXNoZWREb3Vi
bGUsCiAgICAgRmx1c2hlZENlbGwsCiAgICAgRmx1c2hlZEJvb2xlYW4sCkBAIC01NSw2ICs1Niw4
IEBAIGlubGluZSBOb2RlRmxhZ3MgcmVzdWx0Rm9yKEZsdXNoRm9ybWF0IGYKICAgICAgICAgcmV0
dXJuIE5vZGVSZXN1bHRKUzsKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJu
IE5vZGVSZXN1bHRJbnQzMjsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgcmV0dXJu
IE5vZGVSZXN1bHRJbnQ0ODsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAgIHJldHVy
biBOb2RlUmVzdWx0TnVtYmVyOwogICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CkBAIC03NCw2ICs3
Nyw4IEBAIGlubGluZSBVc2VLaW5kIHVzZUtpbmRGb3IoRmx1c2hGb3JtYXQgZm8KICAgICAgICAg
cmV0dXJuIENlbGxVc2U7CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVybiBJ
bnQzMlVzZTsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgcmV0dXJuIE1hY2hpbmVJ
bnRVc2U7CiAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICByZXR1cm4gTnVtYmVyVXNl
OwogICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg2LDYgKzg2LDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGluaXRHUFIobm9kZSwgdXNl
Q291bnQsIGdwciwgRGF0YUZvcm1hdEludDMyKTsKICAgICB9CisgICAgdm9pZCBpbml0SW50NDgo
Tm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyByZWcsIERhdGFGb3JtYXQgZm9y
bWF0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwg
Zm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgICAgIGluaXRHUFIobm9kZSwg
dXNlQ291bnQsIHJlZywgZm9ybWF0KTsKKyAgICB9CisgICAgdm9pZCBpbml0SW50NDgoTm9kZSog
bm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBpbml0
R1BSKG5vZGUsIHVzZUNvdW50LCByZWcsIERhdGFGb3JtYXRJbnQ0OCk7CisgICAgfQorICAgIHZv
aWQgaW5pdFN0cmljdEludDQ4KE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcg
cmVnKQorICAgIHsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgcmVnLCBEYXRhRm9y
bWF0U3RyaWN0SW50NDgpOworICAgIH0KICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgaW5p
dEpTVmFsdWUoTm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyBncHIsIERhdGFG
b3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTKQogICAgIHsKQEAgLTE4Nyw2ICsyMDAsMTEgQEAg
cHVibGljOgogICAgIC8vIEdldCB0aGUgZm9ybWF0IG9mIHRoZSB2YWx1ZSBhcyBpdCBpcyBzcGls
bGVkIGluIHRoZSBKU1N0YWNrIChvciAnbm9uZScpLgogICAgIERhdGFGb3JtYXQgc3BpbGxGb3Jt
YXQoKSB7IHJldHVybiBtX3NwaWxsRm9ybWF0OyB9CiAgICAgCisgICAgYm9vbCBpc0Zvcm1hdChE
YXRhRm9ybWF0IGV4cGVjdGVkRm9ybWF0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVy
Rm9ybWF0KCkgPT0gZXhwZWN0ZWRGb3JtYXQgfHwgc3BpbGxGb3JtYXQoKSA9PSBleHBlY3RlZEZv
cm1hdDsKKyAgICB9CisgICAgCiAgICAgYm9vbCBpc0pTRm9ybWF0KERhdGFGb3JtYXQgZXhwZWN0
ZWRGb3JtYXQpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjppc0pTRm9ybWF0KHJlZ2lzdGVy
Rm9ybWF0KCksIGV4cGVjdGVkRm9ybWF0KSB8fCBKU0M6OmlzSlNGb3JtYXQoc3BpbGxGb3JtYXQo
KSwgZXhwZWN0ZWRGb3JtYXQpOwpAQCAtMTk3LDYgKzIxNSwxNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBpc0pTRm9ybWF0KERhdGFGb3JtYXRKU0ludDMyKTsKICAgICB9CiAgICAgCisgICAg
Ym9vbCBpc0ludDQ4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0Zvcm1hdChEYXRhRm9ybWF0
SW50NDgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzU3RyaWN0SW50NDgoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGlzRm9ybWF0KERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgfQorICAg
IAogICAgIGJvb2wgaXNKU0RvdWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gaXNKU0Zvcm1h
dChEYXRhRm9ybWF0SlNEb3VibGUpOwpAQCAtMzE0LDYgKzM0MiwxOSBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SW50MzIpOwogICAgIH0K
KyAgICB2b2lkIGZpbGxJbnQ0OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBn
cHIsIERhdGFGb3JtYXQgZm9ybWF0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZvcm1hdCA9PSBE
YXRhRm9ybWF0SW50NDggfHwgZm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAg
ICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIGZvcm1hdCk7CisgICAgfQorICAgIHZvaWQgZmlsbElu
dDQ4KFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwcikKKyAgICB7CisgICAg
ICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERhdGFGb3JtYXRJbnQ0OCk7CisgICAgfQorICAgIHZv
aWQgZmlsbFN0cmljdEludDQ4KFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdw
cikKKyAgICB7CisgICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERhdGFGb3JtYXRTdHJpY3RJ
bnQ0OCk7CisgICAgfQogICAgIHZvaWQgZmlsbEJvb2xlYW4oVmFyaWFibGVFdmVudFN0cmVhbSYg
c3RyZWFtLCBHUFJSZWcgZ3ByKQogICAgIHsKICAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwg
RGF0YUZvcm1hdEJvb2xlYW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsMTQgKzIzNiwxNCBAQCB2b2lkIEdyYXBo
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgIGlmIChvcGVyYW5kSXNBcmd1
bWVudChvcGVyYW5kKSkKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImFyZyIsIG9wZXJh
bmRUb0FyZ3VtZW50KG9wZXJhbmQpLCAiKCIsIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAoKnRoaXMs
IHZhcmlhYmxlQWNjZXNzRGF0YSksICIpIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91
dC5wcmludChjb21tYSwgInIiLCBvcGVyYW5kLCAiKCIsIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAo
KnRoaXMsIHZhcmlhYmxlQWNjZXNzRGF0YSksICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJsb2MiLCBvcGVyYW5kVG9Mb2NhbChvcGVyYW5kKSwgIigiLCBWYXJpYWJsZUFjY2Vz
c0RhdGFEdW1wKCp0aGlzLCB2YXJpYWJsZUFjY2Vzc0RhdGEpLCAiKSIpOwogICAgIH0KICAgICBp
ZiAobm9kZS0+aGFzVW5saW5rZWRMb2NhbCgpKSB7CiAgICAgICAgIGludCBvcGVyYW5kID0gbm9k
ZS0+dW5saW5rZWRMb2NhbCgpOwogICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFu
ZCkpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJhcmciLCBvcGVyYW5kVG9Bcmd1bWVu
dChvcGVyYW5kKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
InIiLCBvcGVyYW5kKTsKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImxvYyIsIG9wZXJh
bmRUb0xvY2FsKG9wZXJhbmQpKTsKICAgICB9CiAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50QnVm
ZmVyKCkpIHsKICAgICAgICAgb3V0LnByaW50KGNvbW1hKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMjMwLDYgKzIzMCw5IEBAIHB1
YmxpYzoKICAgICAKICAgICBib29sIGFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoTm9kZSog
YWRkKQogICAgIHsKKyAgICAgICAgaWYgKCFlbmFibGVJbnQ0OCgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAKICAgICAgICAgTm9kZSogbGVmdCA9IGFkZC0+Y2hpbGQxKCku
bm9kZSgpOwogICAgICAgICBOb2RlKiByaWdodCA9IGFkZC0+Y2hpbGQyKCkubm9kZSgpOwogCkBA
IC0yNTcsNiArMjYwLDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKG11bC0+b3Ao
KSA9PSBBcml0aE11bCk7CiAgICAgICAgIAorICAgICAgICBpZiAoIWVuYWJsZUludDQ4KCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICBOb2RlKiBsZWZ0ID0g
bXVsLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgIE5vZGUqIHJpZ2h0ID0gbXVsLT5jaGlsZDIo
KS5ub2RlKCk7CiAKQEAgLTI3NCw2ICsyODAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWdhdGVT
aG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KE5vZGUqIG5lZ2F0ZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVChuZWdhdGUtPm9wKCkgPT0gQXJpdGhOZWdhdGUpOworICAgICAgICBpZiAoIWVuYWJsZUlu
dDQ4KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBuZWdhdGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50Rm9yQXJpdGhtZXRpYygpCiAgICAg
ICAgICAgICAmJiAhaGFzRXhpdFNpdGUobmVnYXRlLCBJbnQ0OE92ZXJmbG93KQogICAgICAgICAg
ICAgJiYgbmVnYXRlLT5jYW5TcGVjdWxhdGVJbnQ0OCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlz
aW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsOCArMzEzLDggQEAgYm9vbCBJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgICAgICAgICAgLy8gYmVmb3JlIGFu
ZCBhZnRlciBzZXR0aW5nIGl0LgogICAgICAgICAgICAgc291cmNlID0gZm9yTm9kZShub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZs
dXNoRm9ybWF0KCkgPT0gRmx1c2hlZERvdWJsZSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCgh
KHNvdXJjZS5tX3R5cGUgJiB+U3BlY051bWJlcikpOwotICAgICAgICAgICAgICAgIEFTU0VSVCgh
IShzb3VyY2UubV90eXBlICYgflNwZWNEb3VibGUpID09ICEhKHNvdXJjZS5tX3R5cGUgJiBTcGVj
SW50MzIpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIShzb3VyY2UubV90eXBlICYgflNwZWNG
dWxsTnVtYmVyKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCEhKHNvdXJjZS5tX3R5cGUgJiB+
U3BlY0RvdWJsZSkgPT0gISEoc291cmNlLm1fdHlwZSAmIFNwZWNNYWNoaW5lSW50KSk7CiAgICAg
ICAgICAgICAgICAgaWYgKCEoc291cmNlLm1fdHlwZSAmIH5TcGVjRG91YmxlKSkgewogICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UubWVyZ2UoU3BlY0ludDQ4QXNEb3VibGUpOwogICAgICAgICAg
ICAgICAgICAgICBzb3VyY2UuZmlsdGVyKFNwZWNEb3VibGUpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMs
NiArMTAzLDkgQEAgdm9pZCBKSVRDb2RlOjpyZWNvbnN0cnVjdCgKICAgICAgICAgY2FzZSBBbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6CiAgICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVy
KGV4ZWMtPnIob3BlcmFuZCkudW5ib3hlZEludDMyKCkpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OgorICAgICAgICAgICAg
dmFsdWUgPSBqc051bWJlcihleGVjLT5yKG9wZXJhbmQpLnVuYm94ZWRJbnQ0OCgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3Vi
bGU6CiAgICAgICAgICAgICB2YWx1ZSA9IGpzRG91YmxlTnVtYmVyKGV4ZWMtPnIob3BlcmFuZCku
dW5ib3hlZERvdWJsZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCw4IEBAIGlubGluZSBib29sIGJlbG9uZ3NJbk1pbmlmaWVkR3JhcGgoTm9k
ZVQKICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgogICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKICAg
ICBjYXNlIFBoYW50b21Bcmd1bWVudHM6CisgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CisgICAgY2Fz
ZSBJbnQ0OFRvRG91YmxlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBBU1NFUlQoIXBlcm1pdHNPU1JCYWNrd2FyZFJld2lyaW5nKHR5cGUpICYmICFwZXJtaXRz
T1NSRm9yd2FyZFJld2lyaW5nKHR5cGUpKTsKQEAgLTEwNCw2ICsxMDYsOCBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6
CiAgICAgICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKKyAgICAgICAgY2FzZSBJbnQ0OFRvRG91Ymxl
OgorICAgICAgICBjYXNlIEludDQ4VG9WYWx1ZToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQxLDEyICsxMjQx
LDEyIEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZU51bWJl
cigpCiAgICAgewotICAgICAgICByZXR1cm4gaXNOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KCkpOworICAgICAgICByZXR1cm4gaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigp
KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOdW1iZXJFeHBlY3RpbmdE
ZWZpbmVkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uRXhwZWN0
aW5nRGVmaW5lZChwcmVkaWN0aW9uKCkpOworICAgICAgICByZXR1cm4gaXNGdWxsTnVtYmVyU3Bl
Y3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgc2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDkg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogI2RlZmluZSBOb2RlUmVzdWx0SlMg
ICAgICAgICAgICAgICAgICAgICAweDAwMDEKICNkZWZpbmUgTm9kZVJlc3VsdE51bWJlciAgICAg
ICAgICAgICAgICAgMHgwMDAyCiAjZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAgICAg
ICAgIDB4MDAwMwotI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAw
MDQKLSNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA1CisjZGVm
aW5lIE5vZGVSZXN1bHRJbnQ0OCAgICAgICAgICAgICAgICAgIDB4MDAwNAorI2RlZmluZSBOb2Rl
UmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUgTm9kZVJlc3VsdFN0
b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogI2RlZmluZSBOb2RlTXVzdEdlbmVyYXRlICAgICAgICAgICAgICAgICAweDAwMDggLy8g
c2V0IG9uIG5vZGVzIHRoYXQgaGF2ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxs
eSBiZSByZW1vdmVkIGJ5IERDRS4KICNkZWZpbmUgTm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAg
ICAgICAgMHgwMDEwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEludDMyVG9Eb3VibGUsIE5vZGVSZXN1bHROdW1i
ZXIpIFwKICAgICAvKiBVc2VkIHRvIHNwZWN1bGF0ZSB0aGF0IGEgZG91YmxlIHZhbHVlIGlzIGFj
dHVhbGx5IGFuIGludGVnZXIuICovXAogICAgIG1hY3JvKERvdWJsZUFzSW50MzIsIE5vZGVSZXN1
bHRJbnQzMiB8IE5vZGVFeGl0c0ZvcndhcmQpIFwKKyAgICAvKiBVc2VkIHRvIHNlcGFyYXRlIHJl
cHJlc2VudGF0aW9uIGFuZCByZWdpc3RlciBhbGxvY2F0aW9uIG9mIEludDQ4J3MgcmVwcmVzZW50
ZWQgKi9cCisgICAgLyogYXMgdmFsdWVzLiAqL1wKKyAgICBtYWNybyhJbnQ0OFRvVmFsdWUsIE5v
ZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKEludDQ4VG9Eb3VibGUsIE5vZGVSZXN1bHROdW1iZXIp
IFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCiAg
ICAgbWFjcm8oQXJpdGhBZGQsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CkBAIC0zNTYsNiArMzYwLDE3IEBAIGlubGluZSB1bnNpZ25lZCBmb3J3YXJkUmV3aXJpbmdTZWxl
Y3Rpb24KICAgICAgICAgLy8gVGhpcyBsb3NlcyBpbmZvcm1hdGlvbi4gT25seSB1c2UgaXQgaWYg
dGhlcmUgYXJlIG5vIGJldHRlciBhbHRlcm5hdGl2ZXMuCiAgICAgICAgIHJldHVybiAyNTsKICAg
ICAgICAgCisgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CisgICAgICAgIC8vIExvc2VzIG5vIGluZm9y
bWF0aW9uLiBJdCBqdXN0IGJveGVzIHRoZSB2YWx1ZSwgd2hpY2ggaXMgd2hhdCBPU1Igd2FudHMK
KyAgICAgICAgLy8gdG8gZG8gYW55d2F5LgorICAgICAgICByZXR1cm4gMTAwOworICAgICAgICAK
KyAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIC8vIFRoaXMgaXMgbGlrZSBJbnQzMlRv
RG91YmxlOyB3ZSBjYW4gdXNlIGl0IGJlY2F1c2UgaXQgZ2l2ZXMgYSBzZW1hbnRpY2FsbHkKKyAg
ICAgICAgLy8gZXF1aXZhbGVudCB2YWx1ZSBidXQgdGhhdCB2YWx1ZSBtYXkgYmUgYW4gaW50MzIg
aW4gYSBkb3VibGUsIHNvIHdlJ2QKKyAgICAgICAgLy8gcmF0aGVyIG5vdCBpZiB3ZSBjYW4gYXZv
aWQgaXQuCisgICAgICAgIHJldHVybiA3NTsKKyAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTUsNiArMTk1LDggQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0
KGNvbnN0IAogICAgICAgICBjYXNlIEluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMklu
R1BSOgogICAgICAgICBjYXNlIFVJbnQzMkluR1BSOgorICAgICAgICBjYXNlIFVuYm94ZWRJbnQ0
OEluR1BSOgorICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ0OEluR1BSOgogICAgICAgICAg
ICAgbV9qaXQuc3RvcmU2NChyZWNvdmVyeS5ncHIoKSwgc2NyYXRjaCArIGluZGV4KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkBAIC0yMzUsMTIgKzIzNywxNSBAQCB2b2lkIE9T
UkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2UgRGlzcGxhY2Vk
SW5KU1N0YWNrOgogICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAg
ICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBJbnQ0OERpc3Bs
YWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0OERpc3BsYWNlZEluSlNTdGFj
azoKICAgICAgICAgICAgIG1faml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
cmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAg
ICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
QXNVbmJveGVkSW50MzI6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERv
dWJsZToKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAg
ICAgICAgICBtX2ppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQp
LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJl
Z1QwLCBzY3JhdGNoICsgaW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzQsMzQgKzI3
OSw1OSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAg
ICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgotICAgICAgICBjYXNlIElu
RlBSOgotICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAg
IG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRl
eCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoR1BSSW5m
bzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgbV9qaXQuYm94RG91Ymxl
KEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LnN0
b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5k
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFscmVh
ZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgY2FzZSBVbmJveGVkSW50NDhJbkdQ
UjoKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKKyAgICAgICAgY2FzZSBJ
bnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0OERpc3BsYWNl
ZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBVSW50MzJJbkdQUjogewogICAgICAgICAgICAgbV9q
aXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAg
bV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsK
LSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBwb3NpdGl2ZSA9IG1faml0LmJyYW5j
aDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6R3JlYXRlclRoYW5PckVxdWFs
LAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW0zMigwKSk7Ci0gICAgICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShHUFJJ
bmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5hZGREb3Vi
bGUoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJkFz
c2VtYmx5SGVscGVyczo6dHdvVG9UaGUzMiksCi0gICAgICAgICAgICAgICAgRlBSSW5mbzo6ZnBS
ZWdUMCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIENvbnZlcnQgaXQgdG8gYW4gaW50
NjQuCisgICAgICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CisgICAgICAg
ICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgICAgIGNh
c2UgVW5ib3hlZEludDQ4SW5HUFI6CisgICAgICAgICAgICBjYXNlIEludDQ4RGlzcGxhY2VkSW5K
U1N0YWNrOgorICAgICAgICAgICAgICAgIG1faml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBVSW50MzJJbkdQUjoKKyAgICAg
ICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6cmVnVDApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gSXMgaXQgYW4gaW50MzI/CisgICAgICAgICAg
ICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEp
OworICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGlzSW50MzIgPSBtX2ppdC5icmFu
Y2g2NCgKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkVxdWFsLCBHUFJJbmZvOjpy
ZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBOb3Bl
LCBpdCdzIG5vdCwgYnV0IHJlZ1QwIGNvbnRhaW5zIHRoZSBpbnQ2NCB2YWx1ZS4KKyAgICAgICAg
ICAgIG1faml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpm
cFJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZG9uZSA9
IG1faml0Lmp1bXAoKTsKLSAgICAgICAgICAgIHBvc2l0aXZlLmxpbmsoJm1faml0KTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaXNJbnQzMi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICBt
X2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDApOwog
ICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CisgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVn
VDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZERvdWJsZToKKyAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAgICAgY2FzZSBE
b3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpm
cFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1Qw
LCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgICAgIG1f
aml0LnN0b3JlNjQoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKHJlY292ZXJ5LmNvbnN0YW50KCkpKSwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE2LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3Vs
YXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgIHsK
LSAgICAgICAgaWYgKCFpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKKyAgICAgICAgaWYgKCFp
c0Z1bGxOdW1iZXJTcGVjdWxhdGlvbih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gU3BlY0Rv
dWJsZTsKICAgICAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZU5hTikKICAgICAgICAgICAgIHJl
dHVybiBTcGVjRG91YmxlOwpAQCAtMjAzLDcgKzIwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBpZiAobm9kZUNhblNwZWN1bGF0ZUludDMyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
U3BlY051bWJlcik7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
U3BlY0J5dGVjb2RlTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAg
LTIxMiwxNCArMjEyLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBy
aWdodCA9IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVy
U3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb25F
eHBlY3RpbmdEZWZpbmVkKHJpZ2h0KSkgeworICAgICAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1i
ZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQobGVmdCkgJiYgaXNGdWxsTnVtYmVyU3BlY3Vs
YXRpb25FeHBlY3RpbmdEZWZpbmVkKHJpZ2h0KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
bV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1vZGUobm9kZSkgIT0gRG9udFNwZWN1bGF0ZUludDMyKQog
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0lu
dDMyKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVj
dWxhdGVNYWNoaW5lSW50KG5vZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDQ4KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oc3BlY3Vs
YXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIShsZWZ0ICYgU3BlY051bWJlcikgfHwgIShyaWdodCAmIFNwZWNOdW1i
ZXIpKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKGxlZnQgJiBTcGVjRnVsbE51bWJl
cikgfHwgIShyaWdodCAmIFNwZWNGdWxsTnVtYmVyKSkgewogICAgICAgICAgICAgICAgICAgICAv
LyBsZWZ0IG9yIHJpZ2h0IGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIG90aGVyIHRoYW4gYSBudW1i
ZXIuCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNT
dHJpbmcpOwogICAgICAgICAgICAgICAgIH0gZWxzZQpAQCAtMzY4LDEwICszNjgsMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgR2V0QnlWYWw6IHsKKyAgICAgICAgICAg
IGlmICghbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGlmICghbm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKQogICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKSkKICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsKLSAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVVaW50MzJBcnJheSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlv
bihub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ0OCk7
CisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC01NjYsNiArNTc2LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVj
a1dhdGNoZG9nVGltZXI6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2Ug
TG9vcEhpbnQ6CisgICAgICAgIGNhc2UgSW50NDhUb1ZhbHVlOgorICAgICAgICBjYXNlIEludDQ4
VG9Eb3VibGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBU
aGlzIGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IGFscmVhZHkgaGFzIGEgcHJlZGljdGlvbi4KQEAg
LTY0MCw4ICs2NTIsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
RG91YmxlQmFsbG90IGJhbGxvdDsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChp
c051bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChsZWZ0KSAmJiBpc051bWJlclNwZWN1
bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChyaWdodCkKLSAgICAgICAgICAgICAgICAmJiAhbV9ncmFw
aC5hZGRTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlKSkKKyAgICAgICAgICAgIGlmIChpc0Z1bGxO
dW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQobGVmdCkgJiYgaXNGdWxsTnVtYmVyU3Bl
Y3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHJpZ2h0KQorICAgICAgICAgICAgICAgICYmICFtX2dy
YXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludDMyKG5vZGUpCisgICAgICAgICAgICAgICAgJiYgIW1f
Z3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkKICAgICAgICAgICAgICAg
ICBiYWxsb3QgPSBWb3RlRG91YmxlOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IGJhbGxvdCA9IFZvdGVWYWx1ZTsKQEAgLTY1Nyw4ICs2NzAsOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgRG91YmxlQmFsbG90IGJhbGxvdDsKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKGxlZnQpICYmIGlzTnVt
YmVyU3BlY3VsYXRpb24ocmlnaHQpCi0gICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGgubXVsU2hv
dWxkU3BlY3VsYXRlSW50MzIobm9kZSkpCisgICAgICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3Bl
Y3VsYXRpb24obGVmdCkgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24ocmlnaHQpCisgICAgICAg
ICAgICAgICAgJiYgIW1fZ3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSkKKyAgICAg
ICAgICAgICAgICAmJiAhbV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUp
KQogICAgICAgICAgICAgICAgIGJhbGxvdCA9IFZvdGVEb3VibGU7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZVZhbHVlOwpAQCAtNjc3LDcgKzY5MSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBEb3VibGVCYWxsb3QgYmFs
bG90OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRp
b24obGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKKyAgICAgICAgICAgIGlmIChp
c0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihy
aWdodCkKICAgICAgICAgICAgICAgICAmJiAhKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludDMyRm9y
QXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkg
JiYgbm9kZS0+Y2FuU3BlY3VsYXRlSW50MzIoKSkpCiAgICAgICAgICAgICAgICAgYmFsbG90ID0g
Vm90ZURvdWJsZTsKICAgICAgICAgICAgIGVsc2UKQEAgLTcwNiw3ICs3MjAsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUtPmNoaWxkMSgp
LT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBpZiAoaXNEb3VibGVTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKSkKICAgICAgICAgICAgICAgICBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+dm90
ZShWb3RlRG91YmxlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFpc051bWJlclNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pIHx8IGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAg
ICAgIGVsc2UgaWYgKAorICAgICAgICAgICAgICAgICFpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihw
cmVkaWN0aW9uKQorICAgICAgICAgICAgICAgIHx8IGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0
aW9uKSB8fCBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAg
ICAgICBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+dm90ZShWb3RlVmFsdWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiAr
NjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAg
ICAgICAgIGNhc2UgTm90Q2VsbFVzZToKICAgICAgICAgY2FzZSBPdGhlclVzZToKKyAgICAgICAg
Y2FzZSBNYWNoaW5lSW50VXNlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgS25vd25JbnQzMlVzZToKQEAgLTY5LDcgKzcwLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgS25vd25OdW1iZXJV
c2U6Ci0gICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIH5TcGVj
TnVtYmVyKQorICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiB+
U3BlY0Z1bGxOdW1iZXIpCiAgICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBmYWxzZTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIApAQCAtMjM5LDYgKzI0MCw4IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrVGllclVwQXRS
ZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgIGNhc2UgTG9vcEhp
bnQ6CisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOgorICAgIGNhc2UgSW50NDhUb1ZhbHVlOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBHZXRCeVZhbDoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZl
UGxhbi5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBA
QCBlbnVtIFNpbGVudFNwaWxsQWN0aW9uIHsKIGVudW0gU2lsZW50RmlsbEFjdGlvbiB7CiAgICAg
RG9Ob3RoaW5nRm9yRmlsbCwKICAgICBTZXRJbnQzMkNvbnN0YW50LAorICAgIFNldEludDQ4Q29u
c3RhbnQsCisgICAgU2V0U3RyaWN0SW50NDhDb25zdGFudCwKICAgICBTZXRCb29sZWFuQ29uc3Rh
bnQsCiAgICAgU2V0Q2VsbENvbnN0YW50LAogICAgIFNldFRydXN0ZWRKU0NvbnN0YW50LApAQCAt
NjEsOCArNjMsMTIgQEAgZW51bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBMb2FkMzJUYWcsCiAg
ICAgTG9hZDMyUGF5bG9hZCwKICAgICBMb2FkMzJQYXlsb2FkQm94SW50LAorICAgIExvYWQzMlBh
eWxvYWRDb252ZXJ0VG9JbnQ0OCwKKyAgICBMb2FkMzJQYXlsb2FkU2lnbkV4dGVuZCwKICAgICBM
b2FkUHRyLAogICAgIExvYWQ2NCwKKyAgICBMb2FkNjRTaGlmdFJpZ2h0MTYsCisgICAgTG9hZDY0
U2hpZnRMZWZ0MTYsCiAgICAgTG9hZERvdWJsZSwKICAgICBMb2FkRG91YmxlQm94RG91YmxlLAog
ICAgIExvYWRKU1VuYm94RG91YmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDYgKzQwLDQwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAog
I2lmIFVTRShKU1ZBTFVFNjQpCiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJveEludDQ4KEdQUlJl
ZyBzb3VyY2VHUFIsIEdQUlJlZyB0YXJnZXRHUFIsIERhdGFGb3JtYXQgZm9ybWF0KQoreworICAg
IEdQUlJlZyB0ZW1wR1BSOworICAgIGlmIChzb3VyY2VHUFIgPT0gdGFyZ2V0R1BSKQorICAgICAg
ICB0ZW1wR1BSID0gYWxsb2NhdGUoKTsKKyAgICBlbHNlCisgICAgICAgIHRlbXBHUFIgPSB0YXJn
ZXRHUFI7CisgICAgCisgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CisKKyAgICBpZiAo
Zm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKDE2KSwgc291cmNlR1BSKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVChmb3JtYXQg
PT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihz
b3VyY2VHUFIsIHRlbXBHUFIpOworICAgIAorICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzRG91Ymxl
ID0gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc291cmNl
R1BSLCB0ZW1wR1BSKTsKKyAgICAKKyAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihzb3VyY2VH
UFIsIHRhcmdldEdQUik7CisgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsIHRhcmdldEdQUik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKKyAgICAKKyAgICBpc0RvdWJsZS5saW5rKCZtX2ppdCk7CisgICAgbV9qaXQuY29udmVy
dEludDY0VG9Eb3VibGUoc291cmNlR1BSLCBmcHIpOworICAgIGJveERvdWJsZShmcHIsIHRhcmdl
dEdQUik7CisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgCisgICAgaWYgKHRlbXBHUFIgIT0g
dGFyZ2V0R1BSKQorICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgCisgICAgdW5sb2NrKGZw
cik7Cit9CisKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQog
ewogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVn
aXN0ZXIoKTsKQEAgLTY5LDExICsxMDMsMjIgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
SlNWYWx1ZShFZGdlIAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgRGF0YUZvcm1hdCBz
cGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgICAgIG1fZ3Bycy5yZXRh
aW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAg
IGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoc3BpbGxGb3JtYXQpIHsKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7CiAg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIGdwcik7CiAgICAgICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGdwcik7CiAgICAgICAgICAgICAgICAgc3BpbGxGb3JtYXQg
PSBEYXRhRm9ybWF0SlNJbnQzMjsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBj
YXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdElu
dDQ4OiB7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICAgICAgYm94SW50NDgoZ3By
LCBncHIsIHNwaWxsRm9ybWF0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgZ3ByKTsKICAgICAgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1h
dERvdWJsZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGJveCB0aGUgZG91Ymxl
LCBzaW5jZSB3ZSB3YW50IGEgSlNWYWx1ZS4KQEAgLTgxLDYgKzEyNiw3IEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgICAgICAgICAgICAgc3BpbGxG
b3JtYXQgPSBEYXRhRm9ybWF0SlNEb3VibGU7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpT
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlu
Zm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIHNwaWxsRm9ybWF0KTsKICAgICAgICAgfQpA
QCAtMTEzLDYgKzE1OSwxNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVk
Z2UgCiAKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0
YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAg
IEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBsb2NrKGdwcik7CisgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSBhbGxvY2F0ZSgpOworICAgICAgICBib3hJbnQ0OChncHIsIHJlc3Vs
dEdQUiwgaW5mby5yZWdpc3RlckZvcm1hdCgpKTsKKyAgICAgICAgdW5sb2NrKGdwcik7CisgICAg
ICAgIHJldHVybiByZXN1bHRHUFI7CisgICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoK
ICAgICAgICAgLy8gTm8gcmV0YWcgcmVxdWlyZWQgb24gSlNWQUxVRTY0IQpAQCAtNzY4LDcgKzgy
NCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAg
CiAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAg
ICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0
SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMik7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0
YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZv
cm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOwogICAgICAgICAKICAgICAgICAgbV9ncHJz
LnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwogICAgICAg
ICAKQEAgLTc4OSw2ICs4NDUsMzYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlSW50MwogICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEpTSW50MzI7CiAg
ICAgICAgICAgICByZXR1cm4gZ3ByOwogICAgICAgICB9CisgICAgICAgIGlmIChzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0SW50NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdElu
dDQ4KSB7CisgICAgICAgICAgICAvLyBHZW5lcmFsbHksIHRoaXMgY2FuIG9ubHkgaGFwcGVuIGlm
IHdlJ3ZlIGFscmVhZHkgcHJvdmVkIHRoYXQgdGhlCisgICAgICAgICAgICAvLyB2YWx1ZSBpcyBh
biBpbnQzMi4gVGhhdCdzIGJlY2F1c2UgaWYgYSB2YWx1ZSBvcmlnaW5hdGVkIGFzIGEgSlNWYWx1
ZQorICAgICAgICAgICAgLy8gdGhlbiB3ZSB3b3VsZCBzcGVjdWxhdGUgdGhhdCBpdCdzIGFuIGlu
dDMyIGJlZm9yZSByZXByZXNlbnRpbmcgaXQgYXMKKyAgICAgICAgICAgIC8vIGFuIGludDQ4LiBP
dGhlcndpc2UsIGlmIHdlIGtub3dpbmdseSBwcm9kdWNlZCBhbiBpbnQ0OCwgdGhlbiB3ZSB3b3Vs
ZAorICAgICAgICAgICAgLy8gYmUgYm94aW5nIGl0IGludG8gYSB2YWx1ZSB1c2luZyBJbnQ0OFRv
VmFsdWUuIFRoaXMgYXNzZXJ0aW9uIGlzIHZhbGlkCisgICAgICAgICAgICAvLyBvbmx5IGJlY2F1
c2UgSW50NDggaXMgc29tZXRoaW5nIHRoYXQgd2UgaW50cm9kdWNlIGF0IHByZWRpY3Rpb24gdGlt
ZS4KKyAgICAgICAgICAgIC8vIEhvd2V2ZXI6IHdlIG1heSBoYXZlIGFuIGludDMyLXByb2R1Y2lu
ZyBub2RlIHJlcGxhY2VkIGJ5IGFuCisgICAgICAgICAgICAvLyBpbnQ0OC1wcm9kdWNpbmcgbm9k
ZSBkdWUgdG8gQ1NFLiBTbyB3ZSBtdXN0IGRvIGEgY2hlY2suCisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCghKHR5cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsKKyAgICAgICAgICAgIGlmICh0eXBl
ICYgU3BlY0ludDQ4KSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgp
OworICAgICAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGdwciwgdGVtcCk7Cisg
ICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBjYW4ndCBzdXBwbHkgdmFsdWUgcHJvZmls
aW5nIGluZm9ybWF0aW9uIGhlcmUuIDotLworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soCisgICAgICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsCisgICAg
ICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
Z3ByLCB0ZW1wKSk7CisgICAgICAgICAgICAgICAgdW5sb2NrKHRlbXApOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkg
eworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYp
LCBncHIpOworICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwciwgZ3By
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwg
Z3ByKTsKKyAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAgICAg
ICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAKICAgICAgICAgLy8g
RmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgpAQCAtNzk3LDYgKzg4Myw3IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICB9CiAKICAgICBjYXNl
IERhdGFGb3JtYXRKUzogeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5cGUgJiBTcGVjSW50
NDgpKTsKICAgICAgICAgLy8gQ2hlY2sgdGhlIHZhbHVlIGlzIGFuIGludGVnZXIuCiAgICAgICAg
IEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dwcnMubG9jayhncHIpOwpAQCAt
ODQzLDYgKzkzMCwzNSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQz
CiAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKICAgICAgICAgcmV0dXJu
IGdwcjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4Ogor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdw
cigpOworICAgICAgICBHUFJSZWcgcmVzdWx0OworICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2Vk
KGdwcikpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBt
X2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxv
Y2soZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IGdwcjsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VS
VCghKHR5cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsKKyAgICAgICAgaWYgKGluZm8ucmVnaXN0ZXJG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChU
cnVzdGVkSW1tMzIoMTYpLCByZXN1bHQpOworICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ0OCkg
eworICAgICAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9q
aXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0LCB0ZW1wKTsKKyAgICAgICAgICAgIC8vIEN1cnJl
bnRseSwgd2UgY2FuJ3Qgc3VwcGx5IHZhbHVlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6
LS8KKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgQmFkVHlw
ZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHJlc3VsdCwgdGVtcCkpOworICAgICAgICAgICAgdW5sb2Nr
KHRlbXApOworICAgICAgICB9CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHJlc3Vs
dCwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOworICAg
ICAgICByZXR1cm4gZ3ByOworICAgIH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAg
ICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewpAQCAtODg1LDYgKzEwMDEsMTY4IEBAIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ0OChFZGdlIGVkZ2Us
IERhdGFGb3JtYXQgZGVzaXJlZEZvcm1hdCkKK3sKKyAgICBBU1NFUlQoZGVzaXJlZEZvcm1hdCA9
PSBEYXRhRm9ybWF0SW50NDggfHwgZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NDgpOworICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwor
ICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CisgICAgbV9pbnRlcnByZXRl
ci5maWx0ZXIodmFsdWUsIFNwZWNNYWNoaW5lSW50KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZ2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgR2VuZXJhdGlvbklu
Zm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lz
dGVyKTsKKworICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CisgICAgY2FzZSBE
YXRhRm9ybWF0Tm9uZTogeworICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYgIXZh
bHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkgfHwgaW5mby5zcGls
bEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKKyAgICAgICAgICAgIHRlcm1pbmF0ZVNw
ZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBH
UFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKworICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQo
KSkgeworICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQoZWRn
ZS5ub2RlKCkpOworICAgICAgICAgICAgQVNTRVJUKGpzVmFsdWUuaXNNYWNoaW5lSW50KCkpOwor
ICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRl
ckNvbnN0YW50KTsKKyAgICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBqc1ZhbHVlLmFzTWFjaGlu
ZUludCgpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4
KQorICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgMTY7CisgICAgICAgICAgICBtX2pp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NCh2YWx1ZSksIGdwcik7CisgICAgICAgICAgICBp
bmZvLmZpbGxHUFIoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOworICAgICAgICAgICAg
cmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgRGF0YUZvcm1hdCBzcGls
bEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKKyAgICAgICAgCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0
YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZv
cm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICAKKyAgICAgICAgbV9ncHJz
LnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAg
ICAKKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyIHx8IHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikgeworICAgICAgICAgICAgLy8gSWYgd2Uga25vdyB0
aGlzIHdhcyBzcGlsbGVkIGFzIGFuIGludGVnZXIgd2UgY2FuIGZpbGwgd2l0aG91dCBjaGVja2lu
Zy4KKyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIo
Z3ByLCBncHIpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0
cmljdEludDQ4KSB7CisgICAgICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NDgoKm1fc3Ry
ZWFtLCBncHIpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAg
ICAgICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJu
IGdwcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdElu
dDQ4IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAg
ICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IGdwcik7CisgICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0
SW50NDgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdElu
dDQ4KQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYp
LCBncHIpOworICAgICAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KCptX3N0cmVhbSwg
Z3ByKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAg
ICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAg
ICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJuIGdw
cjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKworICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUs
IGFuZCBmYWxsIHRocm91Z2guCisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBn
cHIsIERhdGFGb3JtYXRKU0ludDMyKTsKKyAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOworICAg
IH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIC8vIENoZWNrIHRoZSB2YWx1
ZSBpcyBhbiBpbnRlZ2VyLiBOb3RlIHRoYXQgd2Ugd291bGQgKmxpa2UqIHRvIHVuYm94IGFuIElu
dDQ4CisgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgYnV0IHRoaXMgaXMgdG9vIGNvc3RseS4gV2Ug
b25seSAqcHJvdmUqIHRoYXQgdGhpcyBpcyBhbiBJbnQ0OAorICAgICAgICAvLyBldmVuIHRob3Vn
aCB3ZSBjaGVjayBpZiBpdCdzIGFuIGludDMyLgorICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdDsKKyAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tl
ZChncHIpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAg
bV9qaXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBt
X2dwcnMubG9jayhncHIpOworICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOworICAgICAgICB9Cisg
ICAgICAgIGlmICh0eXBlICYgflNwZWNJbnQzMikKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MocmVzdWx0KSwgZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFj
cm9Bc3NlbWJsZXI6OkJlbG93LCByZXN1bHQsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cikpOworICAgICAgICBpZiAocmVzdWx0ID09IGdwcikgLy8gVGhlIG5vdC1hbHJlYWR5LWxvY2tl
ZCwgc28gZmlsbCBpbi1wbGFjZSwgY2FzZS4KKyAgICAgICAgICAgIGluZm8uZmlsbEludDQ4KCpt
X3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMy
VG9QdHIocmVzdWx0LCByZXN1bHQpOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRh
Rm9ybWF0SW50NDgpCisgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYp
LCByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGNhc2UgRGF0
YUZvcm1hdEludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6IHsKKyAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHQ7CisgICAgICAgIGlm
IChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUo
KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbElu
dDQ4KCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IGdwcjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQs
IHJlc3VsdCk7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkK
KyAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0
SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIGJvb2wg
d2FzTG9ja2VkID0gbV9ncHJzLmlzTG9ja2VkKGdwcik7CisgICAgICAgIGxvY2soZ3ByKTsKKyAg
ICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAg
ICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgaWYgKHdhc0xvY2tlZCkgeworICAgICAgICAgICAg
R1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwg
cmVzdWx0KTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAgICAgZ3ByID0gcmVz
dWx0OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KCpt
X3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwg
Z3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0
YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAg
ICBib29sIHdhc0xvY2tlZCA9IG1fZ3Bycy5pc0xvY2tlZChncHIpOworICAgICAgICBsb2NrKGdw
cik7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAg
ICAgICAgIHJldHVybiBncHI7CisgICAgICAgIGlmICh3YXNMb2NrZWQpIHsKKyAgICAgICAgICAg
IEdQUlJlZyByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9qaXQubW92ZShncHIs
IHJlc3VsdCk7CisgICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGdwciA9IHJl
c3VsdDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9zdHJl
YW0sIGdwcik7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7
CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0RG91Ymxl
OgorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6
CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6
CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOiB7CisgICAgICAgIHRlcm1pbmF0ZVNwZWN1
bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAgICAg
cmV0dXJuIGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIEludmFsaWRHUFJSZWc7CisgICAgfQorfQorCiBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVEb3VibGUoRWRnZSBlZGdlKQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKQEAgLTg5Miw4ICsxMTcwLDggQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlRG91YgogI2VuZGlmCiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZv
ck5vZGUoZWRnZSk7CiAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKLSAg
ICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwgISh2YWx1ZS5tX3R5
cGUgJiB+U3BlY051bWJlcikpOwotICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVj
TnVtYmVyKTsKKyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwg
ISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpKTsKKyAgICBtX2ludGVycHJldGVyLmZp
bHRlcih2YWx1ZSwgU3BlY0Z1bGxOdW1iZXIpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYg
aW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIp
OwogCkBAIC05NDUsNiArMTIyMywyNCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVEb3ViCiAgICAgICAgICAgICB1bmxvY2soZ3ByKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsK
KyAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9ncHJz
LnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAg
ICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9zdHJlYW0sIGdwcik7Cisg
ICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAg
ICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFp
bihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7CisgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OCgqbV9zdHJlYW0sIGdwcik7Cisg
ICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwpA
QCAtOTc4LDcgKzEyNzQsNyBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVE
b3ViCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNo
NjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKTsKIAotICAgICAgICBpZiAodHlwZSAmIH5TcGVjTnVtYmVyKQor
ICAgICAgICBpZiAodHlwZSAmIH5TcGVjRnVsbE51bWJlcikKICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoanNWYWx1ZUdwciksIGVkZ2UsIG1faml0LmJy
YW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gRmlyc3QsIGlmIHdlIGdldCBoZXJl
IHdlIGhhdmUgYSBkb3VibGUgZW5jb2RlZCBhcyBhIEpTVmFsdWUKQEAgLTEwMDksNiArMTMwNSwy
OCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIG1f
Z3Bycy51bmxvY2soZ3ByKTsKICAgICAgICAgcmV0dXJuIGZwcjsKICAgICB9CisgICAgICAgIAor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxv
Y2F0ZSgpOworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJz
LmxvY2soZ3ByKTsKKyAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOworICAgICAgICBt
X2ppdC5tb3ZlKGdwciwgdGVtcCk7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0z
MigxNiksIHRlbXApOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZSh0ZW1wLCBm
cHIpOworICAgICAgICB1bmxvY2sodGVtcCk7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsK
KyAgICAgICAgcmV0dXJuIGZwcjsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1h
dFN0cmljdEludDQ4OiB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOworICAg
ICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsK
KyAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUoZ3ByLCBmcHIpOworICAgICAgICBt
X2dwcnMudW5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBmcHI7CisgICAgfQogCiAgICAgLy8g
VW5ib3ggdGhlIGRvdWJsZQogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7CkBAIC0xMTEx
LDcgKzE0MjksOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAg
ICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgog
ICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFu
OiB7CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0
ODoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogewogICAgICAgICB0ZXJtaW5hdGVT
cGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAg
ICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KQEAgLTExOTQsNyArMTUxNCw5IEBAIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICBjYXNlIERhdGFGb3JtYXRK
U0RvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0
SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6IHsKKyAgICBjYXNlIERhdGFGb3JtYXRD
ZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmlj
dEludDQ4OiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAg
fQpAQCAtMTUwMyw2ICsxODI1LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQz
MkNvbXBhcmUKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jdXJyZW50Tm9kZSwg
RGF0YUZvcm1hdEpTQm9vbGVhbik7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnQ0OENvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24gY29uZGl0aW9uKQoreworICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFu
ZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCksIG9wMSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIpOworICAgIAorICAgIG1faml0LmNvbXBhcmU2NChjb25k
aXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgIAorICAgIC8v
IElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisgICAg
bV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jv
b2xlYW4pOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJbnQ0OEJy
YW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hO
b2RlLT50YWtlbkJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2Rl
LT5ub3RUYWtlbkJsb2NrKCk7CisKKyAgICAvLyBUaGUgYnJhbmNoIGluc3RydWN0aW9uIHdpbGwg
YnJhbmNoIHRvIHRoZSB0YWtlbiBibG9jay4KKyAgICAvLyBJZiB0YWtlbiBpcyBuZXh0LCBzd2l0
Y2ggdGFrZW4gd2l0aCBub3RUYWtlbiAmIGludmVydCB0aGUgYnJhbmNoIGNvbmRpdGlvbiBzbyB3
ZSBjYW4gZmFsbCB0aHJvdWdoLgorICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAg
ICAgICBjb25kaXRpb24gPSBKSVRDb21waWxlcjo6aW52ZXJ0KGNvbmRpdGlvbik7CisgICAgICAg
IEJhc2ljQmxvY2sqIHRtcCA9IHRha2VuOworICAgICAgICB0YWtlbiA9IG5vdFRha2VuOworICAg
ICAgICBub3RUYWtlbiA9IHRtcDsKKyAgICB9CisgICAgCisgICAgU3BlY3VsYXRlV2hpY2hldmVy
SW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlV2hp
Y2hldmVySW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDEoKSwgb3AxKTsKKyAgICAK
KyAgICBicmFuY2g2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCB0YWtlbik7Cisg
ICAganVtcChub3RUYWtlbik7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3Vi
bGVDb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29u
ZGl0aW9uKQogewogICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTE5MDYsNiArMjI2MiwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OiB7CisgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVh
bFJlZ2lzdGVyKCk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKHJlc3VsdC5ncHIoKSwgdmly
dHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICAgICAgZ2VuZXJhdGlvbkluZm9G
cm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlcikuaW5pdEludDQ4KG5vZGUsIG5vZGUt
PnJlZkNvdW50KCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMTk4MSw2ICsyMzQ3
LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVk
SW50NDg6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KHZhbHVlLmdwcigpLCBK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLT5sb2NhbCgpKSk7CisgICAgICAgICAgICBub1Jl
c3VsdChub2RlKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZh
bHVlU291cmNlKEludDQ4SW5KU1N0YWNrKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6IHsKICAgICAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwpAQCAtMjEwNCw2ICsyNDc4LDIyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZTogeworICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcGVy
YW5kKTsKKyAgICAgICAgbV9qaXQubW92ZShvcGVyYW5kLmdwcigpLCByZXN1bHQuZ3ByKCkpOwor
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOiB7CisgICAgICAgIFNw
ZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBv
cGVyYW5kKTsKKyAgICAgICAgbV9qaXQubW92ZURvdWJsZShvcGVyYW5kLmZwcigpLCByZXN1bHQu
ZnByKCkpOworICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIFZhbHVlQWRkOgogICAgIGNhc2Ug
QXJpdGhBZGQ6CiAgICAgICAgIGNvbXBpbGVBZGQobm9kZSk7CkBAIC0yODg5LDcgKzMyNzksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBG
UFJSZWcgdmFsdWVGUFIgPSB2YWx1ZS5mcHIoKTsKIAogICAgICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNS
ZWFsTnVtYmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIG5vZGUtPmNoaWxkMigp
LCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCB2YWx1ZUZQUiwgdmFs
dWVGUFIpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5n
dGgoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwpAQCAtMzEwNSw3ICszNDk1LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgb3AxLnVz
ZSgpOwogICAgICAgICAKLSAgICAgICAgaWYgKCEobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3R5cGUgJiB+KFNwZWNOdW1iZXIgfCBTcGVjQm9vbGVhbikpKQorICAgICAgICBpZiAo
IShtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH4oU3BlY0Z1bGxOdW1i
ZXIgfCBTcGVjQm9vbGVhbikpKQogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3Vs
dEdQUik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
YWxyZWFkeVByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwpAQCAtMzIwMiw3ICszNTky
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhpcywgdXNlKTsKICAg
ICAgICAgICAgICAgICAgICAgRlBSUmVnIG9wRlBSID0gb3BlcmFuZC5mcHIoKTsKICAgICAgICAg
ICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncygpLCB1c2UsIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
SlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIG9wRlBSLCBvcEZQUikp
OwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShvcEZQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgc2l6ZW9mKGRvdWJsZSkgKiBvcGVyYW5kSWR4KSk7
CkBAIC0zMjY3LDcgKzM2NTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICAgICAgRlBSUmVnIG9wRlBSID0gb3BlcmFuZC5mcHIoKTsKICAg
ICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAg
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KCksIHVzZSwgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KCksIHVzZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2hEb3VibGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlTm90RXF1YWxPclVub3JkZXJlZCwgb3BGUFIsIG9wRlBSKSk7CiAgICAgICAgICAgICAgICAg
bV9qaXQuYm94RG91YmxlKG9wRlBSLCBzY3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTU4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzM1LDcgKzMzNSw5IEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4gU3Bl
Y3VsYXRpdmVKSVQ6OnMKICAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmUzMlBheWxvYWQ7
CiAgICAgICAgIGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRDZWxsIHx8IHJl
Z2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRTdG9yYWdlKQogICAgICAgICAgICAgc3BpbGxBY3Rp
b24gPSBTdG9yZVB0cjsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGVsc2UgaWYgKHJlZ2lzdGVy
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCByZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0
U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmU2NDsKKyAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZWdpc3RlckZvcm1hdCAmIERhdGFGb3Jt
YXRKUyk7CiAgICAgICAgICAgICBzcGlsbEFjdGlvbiA9IFN0b3JlNjQ7CiAgICAgICAgIH0KQEAg
LTM4Niw2ICszODgsNDAgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6
cwogICAgIH0gZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0b3JhZ2UpIHsK
ICAgICAgICAgQVNTRVJUKGluZm8uZ3ByKCkgPT0gc291cmNlKTsKICAgICAgICAgZmlsbEFjdGlv
biA9IExvYWRQdHI7CisgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0
SW50NDgpIHsKKyAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpCisgICAgICAgICAgICBm
aWxsQWN0aW9uID0gU2V0SW50NDhDb25zdGFudDsKKyAgICAgICAgZWxzZSBpZiAoaXNKU0ludDMy
KGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRK
UykKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50NDg7
CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50NDgp
CisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIGlmIChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgZmls
bEFjdGlvbiA9IExvYWQ2NFNoaWZ0TGVmdDE2OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxs
Rm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9h
ZDY0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4u
IEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFuIGludDMyIHdpbGwgbmV2ZXIKKyAgICAgICAg
ICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBk
b3VibGUgKHRvLWRvdWJsZQorICAgICAgICAgICAgLy8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNl
cGFyYXRlIG5vZGUpLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0
cmljdEludDQ4KSB7CisgICAgICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKQorICAgICAgICAg
ICAgZmlsbEFjdGlvbiA9IFNldFN0cmljdEludDQ4Q29uc3RhbnQ7CisgICAgICAgIGVsc2UgaWYg
KGlzSlNJbnQzMihpbmZvLnNwaWxsRm9ybWF0KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBE
YXRhRm9ybWF0SlMpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDMyUGF5bG9hZFNpZ25F
eHRlbmQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0
SW50NDgpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0U2hpZnRSaWdodDE2OworICAg
ICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4
KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAgICAgZWxzZSBpZiAoaW5m
by5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXROb25lKQorICAgICAgICAgICAgZmlsbEFjdGlv
biA9IExvYWQ2NDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIg
aGFwcGVuLiBBbnl0aGluZyB0aGF0IHF1YWxpZmllcyBhcyBhbiBpbnQzMiB3aWxsIG5ldmVyCisg
ICAgICAgICAgICAvLyBiZSB0dXJuZWQgaW50byBhIGNlbGwgKGltbWVkaWF0ZSBzcGVjIGZhaWwp
IG9yIGEgZG91YmxlICh0by1kb3VibGUKKyAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zIGludm9s
dmUgYSBzZXBhcmF0ZSBub2RlKS4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQocmVnaXN0ZXJG
b3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0zOTMsNyArNDI5
LDYgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICBp
ZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgaWYgKHZhbHVlT2ZKU0NvbnN0
YW50KG5vZGUpLmlzQ2VsbCgpKQogICAgICAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRUcnVz
dGVkSlNDb25zdGFudDsKLSAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmaWxsQWN0
aW9uID0gU2V0SlNDb25zdGFudDsKICAgICAgICAgfSBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0
KCkgPT0gRGF0YUZvcm1hdEludDMyKSB7CiAgICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3Jt
YXQgPT0gRGF0YUZvcm1hdEpTSW50MzIpOwpAQCAtNTEyLDYgKzU0NywxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgY2FzZSBTZXRJbnQzMkNvbnN0YW50
OgogICAgICAgICBtX2ppdC5tb3ZlKEltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0YW50KHBsYW4ubm9k
ZSgpKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNldEludDQ4Q29u
c3RhbnQ6CisgICAgICAgIG1faml0Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29uc3RhbnQocGxhbi5u
b2RlKCkpLmFzTWFjaGluZUludCgpIDw8IDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU2V0U3RyaWN0SW50NDhDb25zdGFudDoKKyAgICAgICAgbV9qaXQubW92ZShJ
bW02NCh2YWx1ZU9mSlNDb25zdGFudChwbGFuLm5vZGUoKSkuYXNNYWNoaW5lSW50KCkpLCBwbGFu
LmdwcigpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXRCb29sZWFuQ29uc3RhbnQ6CiAg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKHZhbHVlT2ZCb29sZWFuQ29uc3RhbnQocGxh
bi5ub2RlKCkpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTMzLDYgKzU3NCwx
NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1f
aml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJl
Z2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IExvYWQzMlBheWxvYWRDb252ZXJ0VG9JbnQ0ODoKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENv
bXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4u
Z3ByKCkpOworICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihwbGFuLmdwcigpLCBwbGFu
LmdwcigpKTsKKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcGxhbi5n
cHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTG9hZDMyUGF5bG9hZFNpZ25FeHRlbmQ6
CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUo
KS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4
dGVuZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTG9hZERvdWJsZUJveERvdWJsZToKICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3By
KCkpOwogICAgICAgICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IHBsYW4uZ3ByKCkpOwpAQCAtNTc0LDYgKzYyNCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
aWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgY2FzZSBMb2FkNjQ6CiAgICAgICAgIG1faml0LmxvYWQ2
NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkp
LCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkNjRTaGlmdFJpZ2h0
MTY6CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5v
ZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQucnNo
aWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTG9hZDY0U2hpZnRMZWZ0MTY6CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxl
cjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigp
KTsKKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7
CisgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBMb2FkRG91YmxlOgogICAgICAgICBt
X2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0
dWFsUmVnaXN0ZXIoKSksIHBsYW4uZnByKCkpOwpAQCAtMTQxNiw2ICsxNDc0LDEwIEBAIGJvb2wg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW4KIAogICAgICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUlu
dDMyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2Up
KQorICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50NDhCcmFuY2gobm9kZSwgYnJhbmNoTm9k
ZSwgY29uZGl0aW9uKTsKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICBlbHNlIGlm
IChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQ
ZWVwSG9sZURvdWJsZUJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBkb3VibGVDb25kaXRpb24pOwog
ICAgICAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IENvbXBhcmVFcSkgewpAQCAtMTUwNyw2ICsx
NTY5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KAogICAgICAg
ICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBW
YWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjayk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9
IFZhbHVlU291cmNlKEludDQ4SW5KU1N0YWNrKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CiAgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2Ug
PSBWYWx1ZVNvdXJjZShDZWxsSW5KU1N0YWNrKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTE4NzMsNyArMTkzOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRC
eVYKICAgICBGUFJSZWcgdmFsdWVSZWcgPSB2YWx1ZS5mcHIoKTsKICAgICAKICAgICBERkdfVFlQ
RV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgY2hpbGQzLCBTcGVjUmVhbE51bWJlciwK
KyAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgY2hpbGQzLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAg
ICAgIG1faml0LmJyYW5jaERvdWJsZSgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEb3Vi
bGVOb3RFcXVhbE9yVW5vcmRlcmVkLCB2YWx1ZVJlZywgdmFsdWVSZWcpKTsKICAgICAKQEAgLTIx
NDksNiArMjIxNCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMy
CiAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgb3AxLmZvcm1hdCgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIG9wMSk7CisgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7
CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIG1faml0
Lnplcm9FeHRlbmQzMlRvUHRyKG9wMUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgaW50MzJSZXN1
bHQocmVzdWx0R1BSLCBub2RlLCBEYXRhRm9ybWF0SW50MzIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6
CiAgICAgY2FzZSBOb3RDZWxsVXNlOiB7CkBAIC0yMTg3LDcgKzIyNjQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAKICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gTnVtYmVyVXNlKSB7CiAgICAgICAgICAgICAgICAgREZHX1RZ
UEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGdwciksIG5vZGUtPmNo
aWxkMSgpLCBTcGVjTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhncHIp
LCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKQEAgLTIyNDMsNyArMjMyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZVRvSW50MzIKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gTnVtYmVyVXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2Fk
R1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1
bGxOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0YWdH
UFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxv
d2VzdFRhZykpKTsKQEAgLTIzODksMTUgKzI0NjYsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUludDMyVG9Eb3VibAogICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1f
aml0LmJyYW5jaDY0KAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFH
UFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgCi0gICAgaWYgKG5lZWRz
VHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjTnVtYmVyKSkgeworICAgIGlmIChuZWVkc1R5
cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIpKSB7CiAgICAgICAgIGlmIChu
b2RlLT5mbGFncygpICYgTm9kZUV4aXRzRm9yd2FyZCkgewogICAgICAgICAgICAgZm9yd2FyZFR5
cGVDaGVjaygKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGls
ZDEoKSwgU3BlY051bWJlciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBu
b2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJh
bmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlciksCiAgICAgICAgICAgICAgICAgVmFsdWVSZWNvdmVyeTo6aW5HUFIob3Ax
R1BSLCBEYXRhRm9ybWF0SlMpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJhY2t3
YXJkVHlwZUNoZWNrKAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUt
PmNoaWxkMSgpLCBTcGVjTnVtYmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQ
UiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2pp
dC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDIwLDE1ICsyNDk3
LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmwKICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRh
ZykpOwogICAgIAotICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY051
bWJlcikpIHsKKyAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxs
TnVtYmVyKSkgewogICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVFeGl0c0ZvcndhcmQp
IHsKICAgICAgICAgICAgIGZvcndhcmRUeXBlQ2hlY2soCi0gICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1i
ZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BS
KSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAgIG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpLAogICAgICAgICAgICAgICAgIFZhbHVlUmVjb3Zl
cnk6OmluUGFpcihvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGJhY2t3YXJkVHlwZUNoZWNrKAotICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjTnVtYmVy
LAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiks
IG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTQ5LDYg
KzI2MjYsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbgogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAorICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVN
YWNoaW5lSW50KCkpIHsKKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIocmVzdWx0UmVn
LCByZXN1bHRSZWcpOworICAgICAgICBzdHJpY3RJbnQ0OFJlc3VsdChyZXN1bHRSZWcsIG5vZGUp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIEZQUlRlbXBvcmFyeSBmcmVzdWx0
KHRoaXMpOwogICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHJlc3VsdFJlZywgZnJlc3Vs
dC5mcHIoKSk7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCByZXN1bHRSZWcsIFRydXN0ZWRJ
bW0zMigwKSk7CkBAIC0yNjAyLDYgKzI2ODUsMjkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5VmFsRm9ySQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0
ZVN0cmljdEludDQ4T3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKKyAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hS
ZWcgPSBzY3JhdGNoLmdwcigpOworICAgICAgICAgICAgbV9qaXQubW92ZSh2YWx1ZU9wLmdwcigp
LCBzY3JhdGNoUmVnKTsKKyAgICAgICAgICAgIGlmIChpc0NsYW1wZWQodHlwZSkpIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoZWxlbWVudFNpemUodHlwZSkgPT0gMSk7CisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaW5Cb3VuZHMgPSBtX2ppdC5icmFuY2g2NCgKKyAgICAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgc2NyYXRjaFJlZywg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NCgweGZmKSk7CisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgdG9vQmlnID0gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbiwgc2NyYXRjaFJlZywgSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW02NCgweGZmKSk7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tMzIoMCksIHNjcmF0Y2hSZWcpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGNsYW1wZWQgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgdG9vQmlnLmxpbmso
Jm1faml0KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tMzIoMjU1KSwgc2NyYXRjaFJlZyk7CisgICAgICAgICAgICAgICAgY2xhbXBlZC5saW5rKCZt
X2ppdCk7CisgICAgICAgICAgICAgICAgaW5Cb3VuZHMubGluaygmbV9qaXQpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgdmFsdWUuYWRvcHQoc2NyYXRjaCk7CisgICAgICAgICAgICB2YWx1
ZUdQUiA9IHNjcmF0Y2hSZWc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgICAgICBpZiAoaXNDbGFt
cGVkKHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnRTaXplKHR5cGUpID09
IDEpOwpAQCAtMjg3MCw3ICsyOTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFk
ZChOb2RlKiBubwogICAgICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorICAgICAg
ICAKICAgICAgICAgaWYgKGlzTnVtYmVyQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
ewogICAgICAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBpbnQzMl90IGltbTIgPSB2YWx1ZU9mSW50MzJDb25zdGFudChu
b2RlLT5jaGlsZDIoKS5ub2RlKCkpOwpAQCAtMjkxNSw2ICszMDIxLDMzIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICAgICAgaW50MzJSZXN1bHQoZ3ByUmVz
dWx0LCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAgICAgCisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgLy8gV2lsbCB3ZSBu
ZWVkIGFuIG92ZXJmbG93IGNoZWNrPyBJZiB3ZSBjYW4gcHJvdmUgdGhhdCBuZWl0aGVyIGlucHV0
IGNhbiBiZQorICAgICAgICAvLyBJbnQ0OCB0aGVuIHRoZSBvdmVyZmxvdyBjaGVjayB3aWxsIG5v
dCBiZSBuZWNlc3NhcnkuCisgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAgICAgICAmJiAhbV9zdGF0ZS5mb3JO
b2RlKG5vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpKSB7CisgICAgICAgICAg
ICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDIodGhpcywg
bm9kZS0+Y2hpbGQyKCksIG9wMSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIFJldXNlLCBvcDEpOworICAgICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3Vs
dC5ncHIoKSk7CisgICAgICAgICAgICBtX2ppdC5hZGQ2NChvcDIuZ3ByKCksIHJlc3VsdC5ncHIo
KSk7CisgICAgICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG9wMS5mb3Jt
YXQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIpOworICAgICAgICBt
X2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjaygKKyAgICAgICAgICAgIEludDQ4T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAg
ICAgICAgICBtX2ppdC5icmFuY2hBZGQ2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMi5n
cHIoKSwgcmVzdWx0LmdwcigpKSk7CisgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdC5ncHIoKSwg
bm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkK
ICAgICAKICAgICBjYXNlIE51bWJlclVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0zMDYwLDYgKzMxOTMsMzMgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZAogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVz
ZTogeworICAgICAgICAvLyBXaWxsIHdlIG5lZWQgYW4gb3ZlcmZsb3cgY2hlY2s/IElmIHdlIGNh
biBwcm92ZSB0aGF0IG5laXRoZXIgaW5wdXQgY2FuIGJlCisgICAgICAgIC8vIEludDQ4IHRoZW4g
dGhlIG92ZXJmbG93IGNoZWNrIHdpbGwgbm90IGJlIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKCFt
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkKKyAg
ICAgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBl
KFNwZWNJbnQ0OCkpIHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFu
ZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hl
dmVySW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSwgb3AxKTsKKyAgICAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wMSk7CisgICAgICAgICAgICBt
X2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LnN1
YjY0KG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIGludDQ4UmVzdWx0KHJl
c3VsdC5ncHIoKSwgbm9kZSwgb3AxLmZvcm1hdCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDIodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCBvcDEsIG9wMik7CisgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3By
KCkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxv
dywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFN1YjY0KE1hY3Jv
QXNzZW1ibGVyOjpPdmVyZmxvdywgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAg
aW50NDhSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAg
ICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CkBA
IC0zMDg4LDYgKzMyNDgsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdh
dGUoCiAKICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAKKyAg
ICAgICAgLy8gTm90ZTogdGhlcmUgaXMgbm8gbm90aW9uIG9mIGJlaW5nIG5vdCB1c2VkIGFzIGEg
bnVtYmVyLCBidXQgc29tZW9uZQorICAgICAgICAvLyBjYXJpbmcgYWJvdXQgbmVnYXRpdmUgemVy
by4KKyAgICAgICAgCiAgICAgICAgIGlmIChieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2Rl
LT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgIG1faml0Lm5lZzMyKHJlc3VsdC5ncHIo
KSk7CiAgICAgICAgIGVsc2UgewpAQCAtMzA5OSw2ICszMjYyLDQyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSgKICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0Lmdw
cigpLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpKSB7CisgICAgICAgICAgICBT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgICAgICBHUFJS
ZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwor
ICAgICAgICAgICAgbV9qaXQubmVnNjQocmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGlmICghYnl0
ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgICAgICBOZWdh
dGl2ZVplcm8sIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0R1BSKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIG9wMS5mb3JtYXQo
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFNw
ZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdw
cigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBt
X2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygK
KyAgICAgICAgICAgIEludDQ4T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAg
ICBtX2ppdC5icmFuY2hOZWc2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUikp
OworICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRo
Tm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAg
ICAgICAgIE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdEdQUikpOworICAg
ICAgICB9CisgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgCiAgICAgY2Fz
ZSBOdW1iZXJVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwpAQCAtMzE2NCw2ICszMzYzLDYyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBcml0aE11bChOb2QKICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0Lmdwcigp
LCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAgCisjaWYgVVNFKEpTVkFMVUU2
NCkgICAKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgLy8gVGhpcyBpcyBzdXBl
ciBjbGV2ZXIuIFdlIHdhbnQgdG8gZG8gYW4gaW50NDggbXVsdGlwbGljYXRpb24gYW5kIGNoZWNr
IHRoZQorICAgICAgICAvLyBpbnQ0OCBvdmVyZmxvdyBiaXQuIFRoZXJlIGlzIG5vIGRpcmVjdCBo
YXJkd2FyZSBzdXBwb3J0IGZvciB0aGlzLCBidXQgd2UgZG8KKyAgICAgICAgLy8gaGF2ZSB0aGUg
YWJpbGl0eSB0byBkbyBhbiBpbnQ2NCBtdWx0aXBsaWNhdGlvbiBhbmQgY2hlY2sgdGhlIGludDY0
IG92ZXJmbG93CisgICAgICAgIC8vIGJpdC4gV2UgbGV2ZXJhZ2UgdGhhdC4gQ29uc2lkZXIgdGhh
dCBhLCBiIGFyZSBpbnQ0OCBudW1iZXJzIGluc2lkZSBpbnQ2NAorICAgICAgICAvLyByZWdpc3Rl
cnMsIHdpdGggdGhlIGhpZ2ggMTYgYml0cyBiZWluZyBzaWduLWV4dGVuZGVkLiBXZSBjYW4gZG86
CisgICAgICAgIC8vCisgICAgICAgIC8vICAgICAoYSAqIChiIDw8IDE2KSkKKyAgICAgICAgLy8K
KyAgICAgICAgLy8gVGhpcyB3aWxsIGdpdmUgdXMgYSBsZWZ0LXNoaWZ0ZWQgaW50NDggKHZhbHVl
IGlzIGluIGhpZ2ggNDggYml0cywgbG93IDE2CisgICAgICAgIC8vIGJpdHMgYXJlIHplcm8pIHBs
dXMgdGhlIGludDQ4IG92ZXJmbG93IGJpdC4gSS5lLiB3aGV0aGVyIHRoaXMgNjQtYml0CisgICAg
ICAgIC8vIG11bHRpcGxpY2F0aW9uIG92ZXJmbG93cyBpcyBpZGVudGljYWwgdG8gd2hldGhlciB0
aGUgJ2EgKiBiJyA0OC1iaXQKKyAgICAgICAgLy8gbXVsdGlwbGljYXRpb24gb3ZlcmZsb3dzLgor
ICAgICAgICAvLworICAgICAgICAvLyBJbiBvdXIgbm9tZW5jbGF0dXJlLCB0aGlzIGlzOgorICAg
ICAgICAvLworICAgICAgICAvLyAgICAgc3RyaWN0SW50NDgoYSkgKiBpbnQ0OChiKSA9PiBpbnQ0
OAorICAgICAgICAvLworICAgICAgICAvLyBUaGF0IGlzICJzdHJpY3RJbnQ0OCIgbWVhbnMgdW5z
aGlmdGVkIGFuZCAiaW50NDgiIG1lYW5zIGxlZnQtc2hpZnRlZCBieSAxNgorICAgICAgICAvLyBi
aXRzLgorICAgICAgICAvLworICAgICAgICAvLyBXZSBkb24ndCBjYXJlIHdoaWNoIG9mIG9wMSBv
ciBvcDIgc2VydmVzIGFzIHRoZSBsZWZ0LXNoaWZ0ZWQgb3BlcmFuZCwgc28KKyAgICAgICAgLy8g
d2UganVzdCBkbyB3aGF0ZXZlciBpcyBtb3JlIGNvbnZlbmllbnQgZm9yIG9wMSBhbmQgaGF2ZSBv
cDIgZG8gdGhlCisgICAgICAgIC8vIG9wcG9zaXRlLiBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBkbyBh
dCBtb3N0IG9uZSBzaGlmdC4KKworICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVy
SW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSwgT3Bwb3NpdGVTaGlmdCwgb3Ax
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAg
IEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBvcDJHUFIgPSBvcDIu
Z3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAg
IAorICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3BlY3Vs
YXRpb25DaGVjaygKKyAgICAgICAgICAgIEludDQ4T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAs
CisgICAgICAgICAgICBtX2ppdC5icmFuY2hNdWw2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3cs
IG9wMkdQUiwgcmVzdWx0R1BSKSk7CisgICAgICAgIAorICAgICAgICBpZiAoIWJ5dGVjb2RlQ2Fu
SWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByZXN1bHROb25aZXJvID0gbV9qaXQuYnJhbmNoVGVzdDY0
KAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCByZXN1bHRHUFIpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBOZWdhdGl2ZVpl
cm8sIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFj
cm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBvcDFHUFIsIFRydXN0ZWRJbW02NCgwKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpT
VmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3Nl
bWJsZXI6Okxlc3NUaGFuLCBvcDJHUFIsIFRydXN0ZWRJbW02NCgwKSkpOworICAgICAgICAgICAg
cmVzdWx0Tm9uWmVyby5saW5rKCZtX2ppdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGludDQ4UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsK
ICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwpAQCAtMzU4Nyw3ICszODQyLDE0IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9k
ZSogbm9kZSwKICAgICAgICAgY29tcGlsZUludDMyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCisgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAgICAg
IGNvbXBpbGVJbnQ0OENvbXBhcmUobm9kZSwgY29uZGl0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorICAgIAogICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgewogICAgICAgICBjb21waWxlRG91YmxlQ29t
cGFyZShub2RlLCBkb3VibGVDb25kaXRpb24pOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0z
NzM3LDYgKzM5OTksMjMgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5v
ZAogICAgICAgICBjb21waWxlSW50MzJDb21wYXJlKG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgIAorI2lmIFVTRShKU1ZBTFVF
NjQpICAgCisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIHVuc2lnbmVkIGJyYW5j
aEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChicmFu
Y2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5v
ZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOworICAgICAgICAgICAgY29tcGls
ZVBlZXBIb2xlSW50NDhCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICB1c2Uo
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJbmRl
eEluQmxvY2s7CisgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVJbnQ0OENvbXBh
cmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICAKICAgICBjYXNlIE51bWJl
clVzZTogewogICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVw
SG9sZUJyYW5jaCgpOwpAQCAtNDQ5Miw5ICs0NzcxLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZUludDMyKEVkZ2UKICAgICAoU3BlY3VsYXRlSW50MzJPcGVyYW5kKHRoaXMsIGVk
Z2UpKS5ncHIoKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWFjaGluZUlu
dChFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTWFjaGlu
ZUludCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAoU3BlY3VsYXRlV2hpY2hldmVySW50
NDhPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlTnVtYmVyKEVkZ2UgZWRnZSkKIHsKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVk
Z2UsIFNwZWNOdW1iZXIpKQorICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxO
dW1iZXIpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgKFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQodGhpcywgZWRnZSkpLmZwcigpOwpAQCAtNDUwMiwxMyArNDc4OSwxMyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVOdW1iZXIoRWRnCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSBlZGdlKQogewotICAgIGlmICghbmVlZHNUeXBlQ2hlY2so
ZWRnZSwgU3BlY1JlYWxOdW1iZXIpKQorICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3Bl
Y0Z1bGxSZWFsTnVtYmVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKICAgICBGUFJSZWcgZnByID0gb3BlcmFu
ZC5mcHIoKTsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgZWRn
ZSwgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKCksIGVkZ2UsIFNwZWNGdWxs
UmVhbE51bWJlciwKICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZwciwgZnByKSk7CiB9CkBA
IC00NzcwLDcgKzUwNTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSos
IEVkCiAgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludDMyKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgIEFTU0VSVCgh
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY051bWJlcikpOworICAgICAgICBBU1NFUlQoIW5lZWRz
VHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsTnVtYmVyKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgS25vd25DZWxsVXNlOgogICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNw
ZWNDZWxsKSk7CkBAIC00NzgxLDYgKzUwNjgsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGUoTm9kZSosIEVkCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgc3BlY3VsYXRlSW50
MzIoZWRnZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAg
ICAgc3BlY3VsYXRlTWFjaGluZUludChlZGdlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBS
ZWFsTnVtYmVyVXNlOgogICAgICAgICBzcGVjdWxhdGVSZWFsTnVtYmVyKGVkZ2UpOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDkgKzE1OSw3IEBAIHB1
YmxpYzoKICAgICAvLyBhbmQgaXRzIG1hY2hpbmUgcmVnaXN0ZXJzIG1heSBiZSByZXVzZWQuCiAg
ICAgYm9vbCBjYW5SZXVzZShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBH
ZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2
aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gaW5mby5jYW5SZXVzZSgpOworICAgICAg
ICByZXR1cm4gZ2VuZXJhdGlvbkluZm8obm9kZSkuY2FuUmV1c2UoKTsKICAgICB9CiAgICAgYm9v
bCBjYW5SZXVzZShFZGdlIG5vZGVVc2UpCiAgICAgewpAQCAtMjM3LDE1ICsyMzUsMTEgQEAgcHVi
bGljOgogICAgIC8vIGF2b2lkIHNwaWxsaW5nIHZhbHVlcyB3ZSB3aWxsIG5lZWQgaW1tZWRpYXRl
bHkpLgogICAgIGJvb2wgaXNGaWxsZWQoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIFZpcnR1
YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAg
ICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVn
aXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGluZm8ucmVnaXN0ZXJGb3Jt
YXQoKSAhPSBEYXRhRm9ybWF0Tm9uZTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKG5v
ZGUpLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdE5vbmU7CiAgICAgfQogICAgIGJvb2wg
aXNGaWxsZWREb3VibGUoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2Vu
ZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmly
dHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBE
YXRhRm9ybWF0RG91YmxlOworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8obm9kZSkucmVn
aXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlOwogICAgIH0KIAogICAgIC8vIENhbGxl
ZCBvbiBhbiBvcGVyYW5kIG9uY2UgaXQgaGFzIGJlZW4gY29uc3VtZWQgYnkgYSBwYXJlbnQgbm9k
ZS4KQEAgLTI1Myw4ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIW5vZGUt
Pmhhc1Jlc3VsdCgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7CisgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlv
bkluZm8obm9kZSk7CiAKICAgICAgICAgLy8gdXNlKCkgcmV0dXJucyB0cnVlIHdoZW4gdGhlIHZh
bHVlIGJlY29tZXMgZGVhZCwgYW5kIGFueQogICAgICAgICAvLyBhc3NvY2lhdGVkIHJlc291cmNl
cyBtYXkgYmUgZnJlZWQuCkBAIC0zMzMsNiArMzI2LDcgQEAgcHVibGljOgogICAgIC8vIG1hY2hp
bmUgcmVnaXN0ZXJzLCBpbXBsaWNpdGx5IGdlbmVyYXRpbmcgc3BlY3VsYXRpb24gY2hlY2tzIGFz
IG5lZWRlZC4KICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludDMyKEVkZ2UsIERhdGFGb3JtYXQm
IHJldHVybkZvcm1hdCk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVJbnQzMlN0cmljdChFZGdl
KTsKKyAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludDQ4KEVkZ2UsIERhdGFGb3JtYXQgZGVzaXJl
ZEZvcm1hdCk7CiAgICAgRlBSUmVnIGZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSk7CiAgICAgR1BS
UmVnIGZpbGxTcGVjdWxhdGVDZWxsKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQm9v
bGVhbihFZGdlKTsKQEAgLTQ2OCw2ICs0NjIsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4gYm94RG91YmxlKGZwciwgYWxsb2NhdGUoKSk7CiAgICAgfQorICAgIAorICAgIHZvaWQg
Ym94SW50NDgoR1BSUmVnIHNvdXJjZUdQUiwgR1BSUmVnIHRhcmdldEdQUiwgRGF0YUZvcm1hdCBm
b3JtYXQpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lkIGJveERvdWJsZShGUFJS
ZWcgZnByLCBHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUikKICAgICB7CkBAIC01NTks
MTEgKzU1NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYm9vbCBp
c0tub3duSW50ZWdlcihOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2Rl
KS5tX3R5cGUgJiB+U3BlY0ludDMyKTsgfQotICAgIGJvb2wgaXNLbm93bkNlbGwoTm9kZSogbm9k
ZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgflNwZWNDZWxsKTsg
fQorICAgIGJvb2wgaXNLbm93bkludGVnZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gbV9zdGF0ZS5m
b3JOb2RlKG5vZGUpLmlzVHlwZShTcGVjSW50MzIpOyB9CisgICAgYm9vbCBpc0tub3duQ2VsbChO
b2RlKiBub2RlKSB7IHJldHVybiBtX3N0YXRlLmZvck5vZGUobm9kZSkuaXNUeXBlKFNwZWNDZWxs
KTsgfQogICAgIAogICAgIGJvb2wgaXNLbm93bk5vdEludGVnZXIoTm9kZSogbm9kZSkgeyByZXR1
cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0ludDMyKTsgfQotICAgIGJv
b2wgaXNLbm93bk5vdE51bWJlcihOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9k
ZShub2RlKS5tX3R5cGUgJiBTcGVjTnVtYmVyKTsgfQorICAgIGJvb2wgaXNLbm93bk5vdE51bWJl
cihOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBT
cGVjRnVsbE51bWJlcik7IH0KICAgICBib29sIGlzS25vd25Ob3RDZWxsKE5vZGUqIG5vZGUpIHsg
cmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNDZWxsKTsgfQogICAg
IAogICAgIC8vIENoZWNrcy9hY2Nlc3NvcnMgZm9yIGNvbnN0YW50IHZhbHVlcy4KQEAgLTgxNiw2
ICs4MTIsMjUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaW50MzJSZXN1bHQocmVnLCBub2Rl
LCBEYXRhRm9ybWF0SW50MzIsIG1vZGUpOwogICAgIH0KKyAgICB2b2lkIGludDQ4UmVzdWx0KEdQ
UlJlZyByZWcsIE5vZGUqIG5vZGUsIERhdGFGb3JtYXQgZm9ybWF0LCBVc2VDaGlsZHJlbk1vZGUg
bW9kZSA9IENhbGxVc2VDaGlsZHJlbikKKyAgICB7CisgICAgICAgIGlmIChtb2RlID09IENhbGxV
c2VDaGlsZHJlbikKKyAgICAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOworCisgICAgICAgIFZp
cnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsK
KyAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFs
UmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKworICAgICAgICBtX2dwcnMucmV0YWluKHJlZywg
dmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICBpbmZvLmluaXRJbnQ0OChu
b2RlLCBub2RlLT5yZWZDb3VudCgpLCByZWcsIGZvcm1hdCk7CisgICAgfQorICAgIHZvaWQgaW50
NDhSZXN1bHQoR1BSUmVnIHJlZywgTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBD
YWxsVXNlQ2hpbGRyZW4pCisgICAgeworICAgICAgICBpbnQ0OFJlc3VsdChyZWcsIG5vZGUsIERh
dGFGb3JtYXRJbnQ0OCwgbW9kZSk7CisgICAgfQorICAgIHZvaWQgc3RyaWN0SW50NDhSZXN1bHQo
R1BSUmVnIHJlZywgTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hp
bGRyZW4pCisgICAgeworICAgICAgICBpbnQ0OFJlc3VsdChyZWcsIG5vZGUsIERhdGFGb3JtYXRT
dHJpY3RJbnQ0OCwgbW9kZSk7CisgICAgfQogICAgIHZvaWQgbm9SZXN1bHQoTm9kZSogbm9kZSwg
VXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRyZW4pCiAgICAgewogICAgICAgICBp
ZiAobW9kZSA9PSBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpCkBAIC05MDAsNyArOTE1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgaW5pdENvbnN0YW50SW5mbyhOb2RlKiBub2RlKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzSW50MzJDb25zdGFudChub2RlKSB8fCBpc051bWJlckNvbnN0YW50
KG5vZGUpIHx8IGlzSlNDb25zdGFudChub2RlKSk7Ci0gICAgICAgIGdlbmVyYXRpb25JbmZvRnJv
bVZpcnR1YWxSZWdpc3Rlcihub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKSkuaW5pdENvbnN0YW50KG5v
ZGUsIG5vZGUtPnJlZkNvdW50KCkpOworICAgICAgICBnZW5lcmF0aW9uSW5mbyhub2RlKS5pbml0
Q29uc3RhbnQobm9kZSwgbm9kZS0+cmVmQ291bnQoKSk7CiAgICAgfQogICAgIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYWRkIGNhbGxzIHRvIEMrKyBoZWxwZXIgZnVuY3Rpb25zLgpAQCAtMTg4OSwx
NSArMTkwNCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc0ludDMyQ29uc3RhbnQobm9kZSkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRp
b25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxS
ZWdpc3Rlcik7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gaW5mby5pc0pTSW50MzIoKTsKKyAg
ICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKG5vZGUpLmlzSlNJbnQzMigpOworICAgIH0KKyAg
ICAKKyAgICBib29sIGJldHRlclVzZVN0cmljdEludDQ4KE5vZGUqIG5vZGUpCisgICAgeworICAg
ICAgICByZXR1cm4gIWdlbmVyYXRpb25JbmZvKG5vZGUpLmlzSW50NDgoKTsKKyAgICB9CisgICAg
Ym9vbCBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICByZXR1
cm4gYmV0dGVyVXNlU3RyaWN0SW50NDgoZWRnZS5ub2RlKCkpOwogICAgIH0KICAgICAKICAgICBi
b29sIGNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0RGR09wZXJhdGlvbl9FSkopOwogICAg
IGJvb2wgY29tcGlsZVBlZXBIb2xlQnJhbmNoKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiwgU19ERkdPcGVy
YXRpb25fRUpKKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUludDMyQnJhbmNoKE5vZGUqLCBO
b2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisgICAg
dm9pZCBjb21waWxlUGVlcEhvbGVJbnQ0OEJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwg
SklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBI
b2xlQm9vbGVhbkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNo
KE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6RG91YmxlQ29uZGl0aW9uKTsK
ICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFu
Y2hOb2RlKTsKQEAgLTE5NDUsNiArMTk2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVO
ZXdUeXBlZEFycmF5KE5vZGUqKTsKICAgICAKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBhcmUo
Tm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyAgICB2b2lkIGNv
bXBpbGVJbnQ0OENvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uKTsKICAgICB2b2lkIGNvbXBpbGVCb29sZWFuQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJs
ZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZURvdWJsZUNvbXBhcmUo
Tm9kZSosIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24pOwogICAgIApAQCAtMjExOCw2
ICsyMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9yd2FyZFR5cGVDaGVjayhKU1ZhbHVlU291
cmNlLCBFZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gsIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNvbnN0IFZhbHVlUmVjb3ZlcnkmKTsKIAogICAgIHZvaWQg
c3BlY3VsYXRlSW50MzIoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVNYWNoaW5lSW50KEVkZ2Up
OwogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlUmVh
bE51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CkBAIC0yMTk1
LDYgKzIyMTksMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdGlv
bkluZm9bb3BlcmFuZFRvTG9jYWwodmlydHVhbFJlZ2lzdGVyKV07CiAgICAgfQorICAgIAorICAg
IEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mbyhOb2RlKiBub2RlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcihub2RlLT52aXJ0dWFs
UmVnaXN0ZXIoKSk7CisgICAgfQorICAgIAorICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9u
SW5mbyhFZGdlIGVkZ2UpCisgICAgeworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8oZWRn
ZS5ub2RlKCkpOworICAgIH0KIAogICAgIC8vIFRoZSBKSVQsIHdoaWxlIGFsc28gcHJvdmlkZXMg
TWFjcm9Bc3NlbWJsZXIgZnVuY3Rpb25hbGl0eS4KICAgICBKSVRDb21waWxlciYgbV9qaXQ7CkBA
IC0yNjc2LDYgKzI3MTAsMTc5IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlk
OwogfTsKIAorLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDQ4IChpLmUuIGl0J3MgbGVmdC1z
aGlmdGVkIGJ5IDE2LCBsb3cgYml0cyB6ZXJvKS4KK2NsYXNzIFNwZWN1bGF0ZUludDQ4T3BlcmFu
ZCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU3BlY3VsYXRlSW50NDhPcGVyYW5kKFNwZWN1bGF0
aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAg
LCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAg
aWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAg
ICAKKyAgICB+U3BlY3VsYXRlSW50NDhPcGVyYW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X2dwck9ySW52YWxpZCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayht
X2dwck9ySW52YWxpZCk7CisgICAgfQorICAgIAorICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9lZGdlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBub2RlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKyAgICAK
KyAgICBHUFJSZWcgZ3ByKCkKKyAgICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9PSBJ
bnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNw
ZWN1bGF0ZUludDQ4KGVkZ2UoKSwgRGF0YUZvcm1hdEludDQ4KTsKKyAgICAgICAgcmV0dXJuIG1f
Z3ByT3JJbnZhbGlkOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVzZSgpCisgICAgeworICAgICAg
ICBtX2ppdC0+dXNlKG5vZGUoKSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBTcGVjdWxh
dGl2ZUpJVCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJbnZh
bGlkOworfTsKKworLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDQ4IChpLmUuIHRoZSBwYXlsb2Fk
IGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4K
K2NsYXNzIFNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2Ug
ZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1
bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAg
ICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdl
LnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQo
bm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICB+U3BlY3VsYXRl
U3RyaWN0SW50NDhPcGVyYW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dwck9ySW52YWxp
ZCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayhtX2dwck9ySW52YWxp
ZCk7CisgICAgfQorICAgIAorICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9lZGdlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcg
Z3ByKCkKKyAgICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVn
KQorICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZUludDQ4
KGVkZ2UoKSwgRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJ
bnZhbGlkOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVzZSgpCisgICAgeworICAgICAgICBtX2pp
dC0+dXNlKG5vZGUoKSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBTcGVjdWxhdGl2ZUpJ
VCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwor
fTsKKworZW51bSBPcHBvc2l0ZVNoaWZ0VGFnIHsgT3Bwb3NpdGVTaGlmdCB9OworCitjbGFzcyBT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNw
ZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVk
Z2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxh
dGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAg
ICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICAgICAgLCBtX3N0cmljdChq
aXQtPmJldHRlclVzZVN0cmljdEludDQ4KGVkZ2UpKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtp
bmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgp
KSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBTcGVjdWxh
dGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBj
b25zdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQmIG90aGVyLCBPcGVyYW5kU3BlY3Vs
YXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDog
bV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZh
bGlkKEludmFsaWRHUFJSZWcpCisgICAgICAgICwgbV9zdHJpY3Qob3RoZXIubV9zdHJpY3QpCisg
ICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBp
ZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAg
IAorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZChTcGVjdWxhdGl2
ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wcG9zaXRlU2hpZnRUYWcsIGNvbnN0IFNwZWN1bGF0ZVdo
aWNoZXZlckludDQ4T3BlcmFuZCYgb3RoZXIsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9
IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAg
ICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJl
ZykKKyAgICAgICAgLCBtX3N0cmljdCghb3RoZXIubV9zdHJpY3QpCisgICAgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVk
Z2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxl
ZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIH5TcGVjdWxh
dGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJ
bnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJ
bnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAgIEdQ
UlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRH
UFJSZWcpIHsKKyAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxh
dGVJbnQ0OCgKKyAgICAgICAgICAgICAgICBlZGdlKCksIG1fc3RyaWN0ID8gRGF0YUZvcm1hdFN0
cmljdEludDQ4IDogRGF0YUZvcm1hdEludDQ4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bV9ncHJPckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAg
ICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCisgICAgRGF0YUZvcm1hdCBmb3Jt
YXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RyaWN0ID8gRGF0YUZvcm1hdFN0
cmljdEludDQ4IDogRGF0YUZvcm1hdEludDQ4OworICAgIH0KKworcHJpdmF0ZToKKyAgICBTcGVj
dWxhdGl2ZUpJVCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJ
bnZhbGlkOworICAgIGJvb2wgbV9zdHJpY3Q7Cit9OworCiBjbGFzcyBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTcGVjdWxhdGVEb3VibGVPcGVyYW5kKFNw
ZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2Rl
ID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdVc2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw5
IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2UKICAgICBjYXNlIEtu
b3duSW50MzJVc2U6CiAgICAgICAgIG91dC5wcmludCgiS25vd25JbnQzMiIpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiTWFjaGlu
ZUludCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgICAg
IG91dC5wcmludCgiUmVhbE51bWJlciIpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiAr
MzksNyBAQCBlbnVtIFVzZUtpbmQgewogICAgIFVudHlwZWRVc2UsCiAgICAgSW50MzJVc2UsCiAg
ICAgS25vd25JbnQzMlVzZSwKKyAgICBNYWNoaW5lSW50VXNlLAogICAgIFJlYWxOdW1iZXJVc2Us
CiAgICAgTnVtYmVyVXNlLAogICAgIEtub3duTnVtYmVyVXNlLApAQCAtNjYsMTEgKzY3LDEzIEBA
IEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckYKICAgICBjYXNlIEludDMy
VXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsK
KyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIHJldHVybiBTcGVjTWFjaGluZUludDsK
ICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6Ci0gICAgICAgIHJldHVybiBTcGVjUmVhbE51bWJlcjsK
KyAgICAgICAgcmV0dXJuIFNwZWNGdWxsUmVhbE51bWJlcjsKICAgICBjYXNlIE51bWJlclVzZToK
ICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICByZXR1cm4gU3BlY051bWJlcjsKKyAg
ICAgICAgcmV0dXJuIFNwZWNGdWxsTnVtYmVyOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAg
ICAgcmV0dXJuIFNwZWNCb29sZWFuOwogICAgIGNhc2UgQ2VsbFVzZToKQEAgLTEyNSw2ICsxMjgs
NyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBrCiAgICAgc3dpdGNo
IChraW5kKSB7CiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNlIEtub3duSW50MzJVc2U6Cisg
ICAgY2FzZSBNYWNoaW5lSW50VXNlOgogICAgIGNhc2UgUmVhbE51bWJlclVzZToKICAgICBjYXNl
IE51bWJlclVzZToKICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw2ICs0NSw5IEBAIHZvaWQgVmFsdWVTb3VyY2U6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkKICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICBvdXQucHJpbnQoIkludDMy
Iik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgIG91
dC5wcmludCgiSW50NDgiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDZWxsSW5KU1N0YWNr
OgogICAgICAgICBvdXQucHJpbnQoIkNlbGwiKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCShyZXZpc2lvbiAxNTU4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDcgQEAgZW51bSBWYWx1ZVNvdXJjZUtpbmQgewogICAgIFNvdXJj
ZU5vdFNldCwKICAgICBWYWx1ZUluSlNTdGFjaywKICAgICBJbnQzMkluSlNTdGFjaywKKyAgICBJ
bnQ0OEluSlNTdGFjaywKICAgICBDZWxsSW5KU1N0YWNrLAogICAgIEJvb2xlYW5JbkpTU3RhY2ss
CiAgICAgRG91YmxlSW5KU1N0YWNrLApAQCAtNTYsNiArNTcsOCBAQCBzdGF0aWMgaW5saW5lIFZh
bHVlU291cmNlS2luZCBkYXRhRm9ybWF0CiAgICAgc3dpdGNoIChkYXRhRm9ybWF0KSB7CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SW50MzI6CiAgICAgICAgIHJldHVybiBJbnQzMkluSlNTdGFjazsKKyAg
ICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICAgICAgcmV0dXJuIEludDQ4SW5KU1N0YWNrOwog
ICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICAgICAgcmV0dXJuIERvdWJsZUluSlNTdGFj
azsKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgpAQCAtNzksNiArODIsOCBAQCBzdGF0aWMg
aW5saW5lIERhdGFGb3JtYXQgdmFsdWVTb3VyY2VLaW5kCiAgICAgICAgIHJldHVybiBEYXRhRm9y
bWF0SlM7CiAgICAgY2FzZSBJbnQzMkluSlNTdGFjazoKICAgICAgICAgcmV0dXJuIERhdGFGb3Jt
YXRJbnQzMjsKKyAgICBjYXNlIEludDQ4SW5KU1N0YWNrOgorICAgICAgICByZXR1cm4gRGF0YUZv
cm1hdEludDQ4OwogICAgIGNhc2UgQ2VsbEluSlNTdGFjazoKICAgICAgICAgcmV0dXJuIERhdGFG
b3JtYXRDZWxsOwogICAgIGNhc2UgQm9vbGVhbkluSlNTdGFjazoKQEAgLTEzOSw2ICsxNDQsOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoRG91YmxlSW5KU1N0YWNr
KTsKICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVT
b3VyY2UoSW50MzJJbkpTU3RhY2spOworICAgICAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAg
ICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShJbnQ0OEluSlNTdGFjayk7CiAgICAgICAgIGNhc2Ug
Rmx1c2hlZENlbGw6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoQ2VsbEluSlNTdGFj
ayk7CiAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CkBAIC0xODEsNiArMTg4LDkgQEAgcHVi
bGljOgogICAgICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICAgICAgcmV0dXJuIFZh
bHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMigpOwogICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgICAgICByZXR1cm4gVmFs
dWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4KCk7CisgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVl
UmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsKCk7CiAgICAgICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vz
c0RhdGEuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDcgKzIzNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSB2YXJpYWJsZSBpcyBub3QgYSBu
dW1iZXIgcHJlZGljdGlvbiwgdGhlbiB0aGlzIGRvZXNuJ3QKICAgICAgICAgLy8gbWFrZSBhbnkg
c2Vuc2UuCi0gICAgICAgIGlmICghaXNOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpKSB7
CisgICAgICAgIGlmICghaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IHdlIG1heSBlbmQgdXAgZm9yY2luZyBhIGxvY2FsIGluIGlu
bGluZWQgYXJndW1lbnQgcG9zaXRpb24gdG8gYmUgYSBkb3VibGUgZXZlbgogICAgICAgICAgICAg
Ly8gaWYgaXQgaXMgc29tZXRpbWVzIG5vdCBldmVuIG51bWVyaWMsIHNpbmNlIHRoaXMgbmV2ZXIg
c2lnbmFscyB0aGUgZmFjdCB0aGF0IGl0IGRvZXNuJ3QKICAgICAgICAgICAgIC8vIHdhbnQgZG91
Ymxlcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTUxMQpAQCAt
MzMzLDYgKzMzMyw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihw
cmVkaWN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBGbHVzaGVkSW50MzI7CiAgICAgICAgIAor
ICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiAhb3BlcmFuZElzQXJndW1lbnQobV9sb2NhbCkg
JiYgaXNNYWNoaW5lSW50U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByZXR1
cm4gRmx1c2hlZEludDQ4OworICAgICAgICAKICAgICAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRDZWxsOwogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCShy
ZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSW5zdHJ1Y3Rpb24qIHZQQygpIGNvbnN0OwogICAgICAgICBJbmxpbmVDYWxsRnJh
bWUqIGFzSW5saW5lQ2FsbEZyYW1lKCkgY29uc3Q7CiAgICAgICAgIGludDMyX3QgdW5ib3hlZElu
dDMyKCkgY29uc3Q7CisgICAgICAgIGludDY0X3QgdW5ib3hlZEludDQ4KCkgY29uc3Q7CiAgICAg
ICAgIGJvb2wgdW5ib3hlZEJvb2xlYW4oKSBjb25zdDsKICAgICAgICAgZG91YmxlIHVuYm94ZWRE
b3VibGUoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiB1bmJveGVkQ2VsbCgpIGNvbnN0OwpAQCAt
OTgsNiArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRvciBl
bmNvZGVkVmFsdWU7CiAgICAgICAgICAgICBkb3VibGUgbnVtYmVyOworICAgICAgICAgICAgaW50
NjRfdCBpbnRlZ2VyOwogICAgICAgICB9IHU7CiAgICAgfTsKIApAQCAtMTg1LDYgKzE4NywxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHBheWxvYWQoKTsKICAgICB9CiAKKyAg
ICBBTFdBWVNfSU5MSU5FIGludDY0X3QgUmVnaXN0ZXI6OnVuYm94ZWRJbnQ0OCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gdS5pbnRlZ2VyID4+IDE2OworICAgIH0KKwogICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBSZWdpc3Rlcjo6dW5ib3hlZEJvb2xlYW4oKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuICEhcGF5bG9hZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bcmd1bWVudHMuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODMsNiAr
MzgzLDkgQEAgdm9pZCBBcmd1bWVudHM6OnRlYXJPZmZGb3JJbmxpbmVDYWxsRnJhbQogICAgICAg
ICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAgIHZhbHVl
ID0ganNOdW1iZXIobG9jYXRpb24tPnVuYm94ZWRJbnQzMigpKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAg
ICAgIHZhbHVlID0ganNOdW1iZXIobG9jYXRpb24tPnVuYm94ZWRJbnQ0OCgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsOgog
ICAgICAgICAgICAgdmFsdWUgPSBsb2NhdGlvbi0+dW5ib3hlZENlbGwoKTsKICAgICAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGlu
Z1R5cGUuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbmRleGluZ1R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMSArNTAsMTEgQEAg
SW5kZXhpbmdUeXBlIGxlYXN0VXBwZXJCb3VuZE9mSW5kZXhpbmdUeQogICAgIGNhc2UgQUxMX0lO
VDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHR5cGUp
KQogICAgICAgICAgICAgcmV0dXJuIChpbmRleGluZ1R5cGUgJiB+SW5kZXhpbmdTaGFwZU1hc2sp
IHwgSW50MzJTaGFwZTsKLSAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24odHlwZSkpCisg
ICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbih0eXBlKSkKICAgICAgICAgICAgIHJl
dHVybiAoaW5kZXhpbmdUeXBlICYgfkluZGV4aW5nU2hhcGVNYXNrKSB8IERvdWJsZVNoYXBlOwog
ICAgICAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFzaykgfCBDb250
aWd1b3VzU2hhcGU7CiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgotICAgICAg
ICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbih0eXBlKSkKKyAgICAgICAgaWYgKGlzRnVsbE51bWJl
clNwZWN1bGF0aW9uKHR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIGluZGV4aW5nVHlwZTsKICAg
ICAgICAgcmV0dXJuIChpbmRleGluZ1R5cGUgJiB+SW5kZXhpbmdTaGFwZU1hc2spIHwgQ29udGln
dW91c1NoYXBlOwogICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCShyZXZpc2lvbiAx
NTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE5MSw2ICsxOTEsNyBAQCBwdWJsaWM6CiAKICAgICBpbnQzMl90IGFz
SW50MzIoKSBjb25zdDsKICAgICB1aW50MzJfdCBhc1VJbnQzMigpIGNvbnN0OworICAgIGludDY0
X3QgYXNNYWNoaW5lSW50KCkgY29uc3Q7CiAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7CiAg
ICAgYm9vbCBhc0Jvb2xlYW4oKSBjb25zdDsKICAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25zdDsK
QEAgLTIwMiw2ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAg
ICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Jvb2xlYW4oKSBj
b25zdDsKKyAgICBib29sIGlzTWFjaGluZUludCgpIGNvbnN0OwogICAgIGJvb2wgaXNOdW1iZXIo
KSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2
ZSgpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTQs
NiArNDk0LDM1IEBAIEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSAKIAog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKK2lubGluZSBib29sIEpTVmFsdWU6OmlzTWFjaGlu
ZUludCgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKCFpc051bWJlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZG91Ymxl
IG51bWJlciA9IGFzRG91YmxlKCk7CisgICAgaWYgKG51bWJlciAhPSBudW1iZXIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90
PihudW1iZXIpOworICAgIGlmIChhc0ludDY0ICE9IG51bWJlcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghYXNJbnQ2NCAmJiBzdGQ6OnNpZ25iaXQobnVtYmVyKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChhc0ludDY0ID49IChzdGF0aWNfY2FzdDxpbnQ2NF90Pigx
KSA8PCA0NykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXNJbnQ2NCA8IC0oc3Rh
dGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgNDcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBpbnQ2NF90IEpTVmFsdWU6OmFzTWFjaGluZUludCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFjaGluZUludCgpKTsKKyAgICBpZiAoaXNJbnQzMigp
KQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2
NF90Pihhc0RvdWJsZSgpKTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBj
b25zdAogewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTdHJpbmcoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211736</attachid>
            <date>2013-09-15 21:49:32 -0700</date>
            <delta_ts>2013-09-15 22:13:22 -0700</delta_ts>
            <desc>starting on FTL</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>158845</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtODIwLDYgKzgyMCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2
dHNpMnNkX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0SW50NjRUb0Rv
dWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBB
U1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2kyc2RxX3Jy
KHNyYywgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShBZGRy
ZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0Uy
UHJlc2VudCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMwLDYgKzIzMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LnNobHFfaThyKGltbS5tX3ZhbHVlLCBkZXN0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCByc2hp
ZnQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zYXJxX2k4cihpbW0ubV92YWx1ZSwgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbXVsNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmltdWxxX3JyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAogICAgIHZv
aWQgbmVnNjQoUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubmVn
cV9yKGRlc3QpOwpAQCAtNTMwLDYgKzU0MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaE11bDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbXVsNjQoc3JjLCBkZXN0KTsKKyAgICAgICAg
aWYgKGNvbmQgIT0gT3ZlcmZsb3cpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycihk
ZXN0LCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoU3ViNjQoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIHN1YjY0KGltbSwgZGVzdCk7CkBAIC01NDgsNiArNTY2LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJyYW5jaFN1YjY0KGNvbmQsIHNyYzIsIGRlc3QpOwogICAgIH0KIAorICAgIEp1
bXAgYnJhbmNoTmVnNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjRGVzdCkK
KyAgICB7CisgICAgICAgIG5lZzY0KHNyY0Rlc3QpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQorCiAgICAgQ29udmVydGli
bGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29u
dmVydGlibGVMb2FkTGFiZWwodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgzNiw2ICs4MzYsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3Ao
T1AyX0lNVUxfR3ZFdiwgZHN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgaW11bHFfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wNjQoT1AyX0lNVUxfR3ZFdiwgZHN0LCBzcmMpOworICAgIH0KKwogICAgIHZvaWQg
aW11bGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKICAg
ICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3QsIGJh
c2UsIG9mZnNldCk7CkBAIC0xNjExLDYgKzE2MTYsMTQgQEAgcHVibGljOgogICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNJMlNEX1ZzZEVkLCAoUmVnaXN0ZXJJRClkc3QsIHNy
Yyk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGN2dHNpMnNkcV9ycihSZWdp
c3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9Q
Ml9DVlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBzcmMpOworICAgIH0KKyNlbmRpZgor
CiAgICAgdm9pZCBjdnRzaTJzZF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0Vf
RjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0
YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiBlbnVtIERhdGFGb3JtYXQgewogICAgIERhdGFGb3JtYXROb25lID0gMCwKICAgICBEYXRh
Rm9ybWF0SW50MzIgPSAxLAotICAgIERhdGFGb3JtYXREb3VibGUgPSAyLAotICAgIERhdGFGb3Jt
YXRCb29sZWFuID0gMywKLSAgICBEYXRhRm9ybWF0Q2VsbCA9IDQsCi0gICAgRGF0YUZvcm1hdFN0
b3JhZ2UgPSA1LAorICAgIERhdGFGb3JtYXRJbnQ0OCA9IDIsIC8vIEludDQ4J3MgYXJlIGxlZnQt
c2hpZnRlZCBieSAxNiBieSBkZWZhdWx0LgorICAgIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA9IDMs
IC8vICJTdHJpY3QiIEludDQ4IG1lYW5zIGl0J3Mgbm90IHNoaWZ0ZWQuCisgICAgRGF0YUZvcm1h
dERvdWJsZSA9IDQsCisgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAorICAgIERhdGFGb3JtYXRD
ZWxsID0gNiwKKyAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCiAgICAgRGF0YUZvcm1hdEpTID0g
OCwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRJbnQz
MiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0RG91
YmxlLApAQCAtNjQsNiArNjYsMTAgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRUb1N0
cmluZyhEYQogICAgICAgICByZXR1cm4gIk5vbmUiOwogICAgIGNhc2UgRGF0YUZvcm1hdEludDMy
OgogICAgICAgICByZXR1cm4gIkludDMyIjsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAg
ICAgICAgcmV0dXJuICJJbnQ0OCI7CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6Cisg
ICAgICAgIHJldHVybiAiU3RyaWN0SW50NDgiOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToK
ICAgICAgICAgcmV0dXJuICJEb3VibGUiOwogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzSW5saW5lcy5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bl
cmFuZHNJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBPcGVy
YW5kczxULCBUcmFpdHM+OjpkdW1wSW5Db250ZXh0KAogICAgIGZvciAoc2l6ZV90IGxvY2FsSW5k
ZXggPSAwOyBsb2NhbEluZGV4IDwgbnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbEluZGV4KSB7CiAg
ICAgICAgIGlmIChUcmFpdHM6OmlzRW1wdHlGb3JEdW1wKGxvY2FsKGxvY2FsSW5kZXgpKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwgbG9jYWxJ
bmRleCwgIjoiLCBpbkNvbnRleHQobG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKKyAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgbG9jYWxJbmRleCwgIjoiLCBpbkNvbnRleHQobG9j
YWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNpb24g
MTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsMTMgQEAgdm9pZCBkdW1wU3BlY3Vs
YXRpb24oUHJpbnRTdHJlYW0mIG91dCwgUwogICAgIH0KICAgICAKICAgICBpZiAodmFsdWUgJiBT
cGVjSW50MzIpCi0gICAgICAgIG15T3V0LnByaW50KCJJbnQiKTsKKyAgICAgICAgbXlPdXQucHJp
bnQoIkludDMyIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAorICAg
IGlmICh2YWx1ZSAmIFNwZWNJbnQ0OCkKKyAgICAgICAgbXlPdXQucHJpbnQoIkludDQ4Iik7Cisg
ICAgICAgIAogICAgIGlmICgodmFsdWUgJiBTcGVjRG91YmxlKSA9PSBTcGVjRG91YmxlKQogICAg
ICAgICBteU91dC5wcmludCgiRG91YmxlIik7CiAgICAgZWxzZSB7CkBAIC0xNjYsMTEgKzE2OSw2
IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXQsIFMKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICh2YWx1
ZSAmIFNwZWNJbnQ0OCkKLSAgICAgICAgICAgIG15T3V0LnByaW50KCJJbnQ0OCIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgICAgICAKICAgICAgICAgaWYg
KHZhbHVlICYgU3BlY05vbkludEFzRG91YmxlKQogICAgICAgICAgICAgbXlPdXQucHJpbnQoIk5v
bmludGFzZG91YmxlIik7CiAgICAgICAgIGVsc2UKQEAgLTI0Nyw5ICsyNDUsMTEgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9BYmJyZXZpYQogICAgICAgICByZXR1cm4gIjxJbnQ0
OEFzRG91YmxlPiI7CiAgICAgaWYgKGlzSW50NDhTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAg
ICAgICAgcmV0dXJuICI8SW50NDg+IjsKKyAgICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRpb24o
cHJlZGljdGlvbikpCisgICAgICAgIHJldHVybiAiPE1hY2hpbmVJbnQ+IjsKICAgICBpZiAoaXNE
b3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8RG91YmxlPiI7
Ci0gICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgaWYgKGlzRnVs
bE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxOdW1iZXI+
IjsKICAgICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJl
dHVybiAiPEJvb2xlYW4+IjsKQEAgLTM0NSwxNiArMzQ1LDExIEBAIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmEKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKICAgICBp
ZiAodmFsdWUuaXNEb3VibGUoKSkgewogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUuYXNO
dW1iZXIoKTsKLSAgICAgICAgaWYgKG51bWJlciA9PSBudW1iZXIpIHsKLSAgICAgICAgICAgIGlu
dDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7Ci0gICAgICAgICAg
ICBpZiAoYXNJbnQ2NCA9PSBudW1iZXIgJiYgKGFzSW50NjQgfHwgIXN0ZDo6c2lnbmJpdChudW1i
ZXIpKQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPCAoc3RhdGljX2Nhc3Q8aW50NjRfdD4o
MSkgPDwgNDcpCi0gICAgICAgICAgICAgICAgJiYgYXNJbnQ2NCA+PSAtKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KDEpIDw8IDQ3KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTcGVjSW50NDhBc0Rv
dWJsZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3Vi
bGU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47CisgICAgICAgIGlm
IChudW1iZXIgIT0gbnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47Cisg
ICAgICAgIGlmICh2YWx1ZS5pc01hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBTcGVj
SW50NDhBc0RvdWJsZTsKKyAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9
CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9t
Q2VsbCh2YWx1ZS5hc0NlbGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDQ2ICszOCw0OCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cnVjdHVyZTsKIAogdHlw
ZWRlZiB1aW50MzJfdCBTcGVjdWxhdGVkVHlwZTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjTm9uZSAgICAgICAgICAgICAgPSAweDAwMDAwMDAwOyAvLyBXZSBkb24ndCBrbm93IGFu
eXRoaW5nIHlldC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmplY3Qg
ICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2JqZWN0Lgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICA9IDB4MDAw
MDAwMDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQXJyYXkuCi1zdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgID0gMHgwMDAwMDAwODsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAgICAgID0gMHgwMDAwMDAxMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1z
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAgID0gMHgwMDAw
MDAyMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJj
bGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMkFycmF5ICAgICAg
ICA9IDB4MDAwMDAwNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMkFycmF5IG9yIG9uZSBv
ZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDhB
cnJheSAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDhBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY1VpbnQ4Q2xhbXBlZEFycmF5ID0gMHgwMDAwMDEwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFu
IFVpbnQ4Q2xhbXBlZEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDE2QXJyYXkgICAgICAgPSAweDAwMDAwMjAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MzJBcnJheSAgICAgICA9IDB4MDAw
MDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBvciBvbmUgb2YgaXRzIHN1
YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Zsb2F0MzJBcnJheSAg
ICAgID0gMHgwMDAwMDgwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmxv
YXQ2NEFycmF5ICAgICAgPSAweDAwMDAxMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNUeXBlZEFycmF5VmlldyAgICA9IFNwZWNJbnQ4QXJyYXkgfCBTcGVjSW50MTZBcnJh
eSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkgfCBTcGVjVWludDhDbGFtcGVkQXJy
YXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJyYXkgfCBTcGVjRmxvYXQzMkFycmF5
IHwgU3BlY0Zsb2F0NjRBcnJheTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQXJn
dW1lbnRzICAgICAgICAgPSAweDAwMDAyMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gQXJndW1l
bnRzIG9iamVjdC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nT2JqZWN0
ICAgICAgPSAweDAwMDA0MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTdHJpbmdPYmplY3QuCi1z
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgID0gMHgwMDAw
ODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmplY3Qs
IEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y09iamVjdCAgICAgICAgICAgID0gMHgwMDAwZmZmZjsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0
aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjU3RyaW5nSWRlbnQgICAgICAgPSAweDAwMDEwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3MgYW4gaWRlbnRpZmllci4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nVmFyICAgICAgICAgPSAweDAwMDIwMDAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIuCi1z
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAgICAgICAgICAgID0gMHgwMDAz
MDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCi1zdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0NlbGxPdGhlciAgICAgICAgID0gMHgwMDA0MDAwMDsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgSlNDZWxsIGJ1dCBub3QgYSBzdWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVmaW5p
dGVseSBub3QgYSBKU1N0cmluZy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2Vs
bCAgICAgICAgICAgICAgPSAweDAwMDdmZmZmOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyICAgICAgICAgICAgID0gMHgw
MDgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgotc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNJbnQ0OCAgICAgICAgICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBJbnQ0OCwgaXQncyBpbnNpZGUgYSBkb3VibGUsIGJ1dCBpdCBkb2Vzbid0IG5l
ZWQgdG8gYmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hpbmVJbnQgICAg
ICAgID0gMHgwMTgwMDAwMDsgLy8gSXQncyBzb21ldGhpbmcgdGhhdCB3ZSBjYW4gZG8gbWFjaGlu
ZSBpbnQgYXJpdGhtZXRpYyBvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50
NDhBc0RvdWJsZSAgICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50NDgg
YW5kIGl0J3MgaW5zaWRlIGEgZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNJbnRlZ2VyICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBzb21l
IGtpbmQgb2YgaW50ZWdlci4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uSW50
QXNEb3VibGUgICAgPSAweDA0MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm90IGFuIEludDQ4
IGJ1dCBpdCdzIGEgcmVhbCBudW1iZXIgYW5kIGl0J3MgYSBkb3VibGUuCi1zdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgID0gMHgwNzAwMDAwMDsgLy8gSXQn
cyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0RvdWJsZU5hTiAgICAgICAgID0gMHgwODAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgTmFOLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAgICAg
ICA9IDB4MGYwMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3VibGUu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iZXIgICAgICAgID0gMHgw
NzgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVSZWFsLgotc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAgICAgICAgICA9IDB4MGY4MDAwMDA7
IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEJvb2xlYW4uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVy
ICAgICAgICAgICAgID0gMHgyMDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vbmUgb2YgdGhl
IGFib3ZlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAg
ICA9IDB4M2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4NDAwMDAwMDA7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2Fu
IGJlIGFueSBvZiB0aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1
bGxUb3AgICAgICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJv
dmUgcGx1cyBhbnl0aGluZyB0aGUgREZHIGNob29zZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY05vbmUgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDA7IC8vIFdlIGRvbid0IGtu
b3cgYW55dGhpbmcgeWV0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGaW5hbE9i
amVjdCAgICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2Jq
ZWN0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICAg
PSAweDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICAgPSAweDAwMDAwMDA4OyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50OEFycmF5ICAgICAgICAgID0gMHgwMDAw
MDAxMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNs
YXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAg
ICA9IDB4MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9uZSBv
ZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50MzJB
cnJheSAgICAgICAgID0gMHgwMDAwMDA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyQXJy
YXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNVaW50OEFycmF5ICAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YW4gVWludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ICA9IDB4MDAwMDAxMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMu
CitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgICA9IDB4
MDAwMDAyMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRz
IHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQzMkFycmF5
ICAgICAgICA9IDB4MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBv
ciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0Zsb2F0MzJBcnJheSAgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBV
aW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Zsb2F0NjRBcnJheSAgICAgICA9IDB4MDAwMDEwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1R5cGVkQXJyYXlWaWV3ICAgICA9IFNwZWNJbnQ4QXJy
YXkgfCBTcGVjSW50MTZBcnJheSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkgfCBT
cGVjVWludDhDbGFtcGVkQXJyYXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJyYXkg
fCBTcGVjRmxvYXQzMkFycmF5IHwgU3BlY0Zsb2F0NjRBcnJheTsKK3N0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjQXJndW1lbnRzICAgICAgICAgID0gMHgwMDAwMjAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBvYmplY3QuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY1N0cmluZ09iamVjdCAgICAgICA9IDB4MDAwMDQwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhIFN0cmluZ09iamVjdC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0
T3RoZXIgICAgICAgID0gMHgwMDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBi
dXQgbm90IEpTRmluYWxPYmplY3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCitzdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICA9IDB4MDAwMGZmZmY7IC8v
IEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rp
b24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAgICA9
IDB4MDAwMTAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBhbiBp
ZGVudGlmaWVyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIgICAg
ICAgICAgPSAweDAwMDIwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0
J3Mgbm90IGFuIGlkZW50aWZpZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0
cmluZyAgICAgICAgICAgICA9IDB4MDAwMzAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3Ry
aW5nLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAgICAgICAg
PSAweDAwMDQwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBhIHN1YmNs
YXNzIG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgPSAweDAwMDdmZmZmOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0ludDMyICAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBh
biBJbnQzMi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NDggICAgICAgICAg
ICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4IGFuZCB3ZSBpbnRl
bmQgaXQgdG8gdW5ib3ggaXQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hp
bmVJbnQgICAgICAgICA9IDB4MDE4MDAwMDA7IC8vIEl0J3Mgc29tZXRoaW5nIHRoYXQgd2UgY2Fu
IGRvIG1hY2hpbmUgaW50IGFyaXRobWV0aWMgb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0ludDQ4QXNEb3VibGUgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBzb21lIGtpbmQgb2YgaW50ZWdlci4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjTm9uSW50QXNEb3VibGUgICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IG5vdCBhbiBJbnQ0OCBidXQgaXQncyBhIHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91YmxlLgor
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICAgPSAweDA2
MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KK3N0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlTmFOICAgICAgICAgID0gMHgwODAwMDAwMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNE
b3VibGUgICAgICAgICAgICAgPSAweDBlMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4g
b3IgYSBOYU4gZG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29k
ZVJlYWxOdW1iZXIgPSAweDA2ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBhIERv
dWJsZVJlYWwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxSZWFsTnVtYmVy
ICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlUmVh
bCwgb3IgYSBJbnQ0OC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVO
dW1iZXIgICAgID0gMHgwZTgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3Vi
bGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxOdW1iZXIgICAgICAgICA9
IDB4MGY4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ0OCwgb3IgYSBEb3VibGUu
CitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAgICA9IDB4
MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICA9IDB4MjAwMDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBub25lIG9mIHRoZSBhYm92ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjSGVhcFRvcCAgICAgICAgICAgID0gMHgzZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBv
ZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNCeXRlY29kZVRvcCAgICAgICAgPSAweDdlZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9m
IHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NDguCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBh
bnkgb2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgogCiB0eXBlZGVm
IGJvb2wgKCpTcGVjdWxhdGVkVHlwZUNoZWNrZXIpKFNwZWN1bGF0ZWRUeXBlKTsKIApAQCAtMjQw
LDcgKzI0Miw3IEBAIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGUKIAog
aW5saW5lIGJvb2wgaXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIFNwZWNEb3VibGUpOworICAgIHJldHVy
biAhKHZhbHVlICYgKFNwZWNEb3VibGUgfCBTcGVjSW50NDgpKTsKIH0KIAogaW5saW5lIGJvb2wg
aXNJbnQzMlNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2YWx1ZSkK
QEAgLTI2NSw3ICsyNjcsNyBAQCBpbmxpbmUgYm9vbCBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbkV4
cGVjCiAKIGlubGluZSBib29sIGlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVjRG91Ymxl
ICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRG91YmxlKTsK
IH0KIAogaW5saW5lIGJvb2wgaXNJbnQ0OEFzRG91YmxlU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCkBAIC0yOTMsMTkgKzI5NSwzNCBAQCBpbmxpbmUgYm9vbCBpc0RvdWJsZVNwZWN1
bGF0aW9uRm9yQXJpdGhtCiAgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0RvdWJsZSk7CiB9CiAK
LWlubGluZSBib29sIGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQoraW5saW5lIGJvb2wgaXNCeXRlY29kZVJlYWxOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVk
VHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQnl0ZWNvZGVSZWFsTnVt
YmVyKSAmJiAhKHZhbHVlICYgflNwZWNCeXRlY29kZVJlYWxOdW1iZXIpOworfQorCitpbmxpbmUg
Ym9vbCBpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7
CisgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0Z1bGxSZWFsTnVtYmVyKSAmJiAhKHZhbHVlICYg
flNwZWNGdWxsUmVhbE51bWJlcik7Cit9CisKK2lubGluZSBib29sIGlzQnl0ZWNvZGVOdW1iZXJT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUg
JiBTcGVjQnl0ZWNvZGVOdW1iZXIpICYmICEodmFsdWUgJiB+U3BlY0J5dGVjb2RlTnVtYmVyKTsK
K30KKworaW5saW5lIGJvb2wgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY1JlYWxOdW1iZXIpICYmICEodmFs
dWUgJiB+U3BlY1JlYWxOdW1iZXIpOworICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNGdWxsTnVt
YmVyKSAmJiAhKHZhbHVlICYgflNwZWNGdWxsTnVtYmVyKTsKIH0KIAotaW5saW5lIGJvb2wgaXNO
dW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlzQnl0
ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY051bWJlcikgJiYgISh2YWx1ZSAmIH5T
cGVjTnVtYmVyKTsKKyAgICByZXR1cm4gaXNCeXRlY29kZU51bWJlclNwZWN1bGF0aW9uKHZhbHVl
ICYgflNwZWNPdGhlcik7CiB9CiAKLWlubGluZSBib29sIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBl
Y3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNGdWxsTnVt
YmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewot
ICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CisgICAg
cmV0dXJuIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CiB9CiAK
IGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTUgQEAgZW51bSBWYWx1
ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBBbHJlYWR5SW5KU1N0YWNrLAogICAgIC8vIEl0J3Mg
YWxyZWFkeSBpbiB0aGUgc3RhY2sgYnV0IHVuYm94ZWQuCiAgICAgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZEludDMyLAorICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCwKICAgICBB
bHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJv
eGVkQm9vbGVhbiwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlLAogICAgIC8v
IEl0J3MgaW4gYSByZWdpc3Rlci4KICAgICBJbkdQUiwKICAgICBVbmJveGVkSW50MzJJbkdQUiwK
KyAgICBVbmJveGVkSW50NDhJbkdQUiwKKyAgICBVbmJveGVkU3RyaWN0SW50NDhJbkdQUiwKICAg
ICBVbmJveGVkQm9vbGVhbkluR1BSLAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgSW5QYWly
LApAQCAtNjAsNiArNjMsOCBAQCBlbnVtIFZhbHVlUmVjb3ZlcnlUZWNobmlxdWUgewogICAgIERp
c3BsYWNlZEluSlNTdGFjaywKICAgICAvLyBJdCdzIGluIHRoZSBzdGFjaywgYXQgYSBkaWZmZXJl
bnQgbG9jYXRpb24sIGFuZCBpdCdzIHVuYm94ZWQuCiAgICAgSW50MzJEaXNwbGFjZWRJbkpTU3Rh
Y2ssCisgICAgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2ssCisgICAgU3RyaWN0SW50NDhEaXNwbGFj
ZWRJbkpTU3RhY2ssCiAgICAgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrLAogICAgIENlbGxEaXNw
bGFjZWRJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjaywKQEAgLTk1LDYg
KzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAor
ICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCgp
CisgICAgeworICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1f
dGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpCiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJl
c3VsdDsKQEAgLTEyNSw2ICsxMzcsMTAgQEAgcHVibGljOgogICAgICAgICBWYWx1ZVJlY292ZXJ5
IHJlc3VsdDsKICAgICAgICAgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKQogICAg
ICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDMySW5HUFI7CisgICAgICAg
IGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgcmVz
dWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDQ4SW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRh
dGFGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0Lm1f
dGVjaG5pcXVlID0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFI7CiAgICAgICAgIGVsc2UgaWYgKGRh
dGFGb3JtYXQgPT0gRGF0YUZvcm1hdEJvb2xlYW4pCiAgICAgICAgICAgICByZXN1bHQubV90ZWNo
bmlxdWUgPSBVbmJveGVkQm9vbGVhbkluR1BSOwogICAgICAgICBlbHNlCkBAIC0xNjgsNiArMTg0
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDMyRGlz
cGxhY2VkSW5KU1N0YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUg
PSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OgorICAgICAgICAgICAgcmVz
dWx0Lm1fdGVjaG5pcXVlID0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6
CiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBEb3VibGVEaXNwbGFjZWRJbkpTU3Rh
Y2s7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyOSw2ICsyNTMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
OgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAgICAg
Y2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZEJvb2xlYW46CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERv
dWJsZToKQEAgLTI0MCw3ICsyNjUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgZ3ByKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RlY2hu
aXF1ZSA9PSBJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBtX3Rl
Y2huaXF1ZSA9PSBVbmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQzMklu
R1BSKTsKKyAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5pcXVl
ID09IFVuYm94ZWRJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFuSW5H
UFIgfHwgbV90ZWNobmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hl
ZEludDQ4SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFIpOwog
ICAgICAgICByZXR1cm4gbV9zb3VyY2UuZ3ByOwogICAgIH0KICAgICAKQEAgLTI2Niw3ICsyOTEs
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rlcigp
IGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5K
U1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVj
aG5pcXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxs
RGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpT
U3RhY2spOworICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNr
IHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVl
ID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxh
Y2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2sg
fHwgbV90ZWNobmlxdWUgPT0gSW50NDhEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUg
PT0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gbV9zb3Vy
Y2UudmlydHVhbFJlZzsKICAgICB9CiAgICAgCkBAIC0yODUsNiArMzEwLDkgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAg
IG91dC5wcmludGYoIihpbnQzMikiKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2Fz
ZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIoaW50NDgpIik7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoY2VsbCkiKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwMCw2ICszMjgsMTIgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiaW50MzIo
JSVyJWQpIiwgZ3ByKCkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVuYm94
ZWRJbnQ0OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50ZigiaW50NDgoJSVyJWQpIiwgZ3By
KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ0
OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50Zigic3RyaWN0SW50NDgoJSVyJWQpIiwgZ3By
KCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5H
UFI6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJib29sKCUlciVkKSIsIGdwcigpKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTMyMCw2ICszNTQsMTIgQEAgcHVibGljOgogICAgICAgICBjYXNl
IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKmludDMy
KCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Y2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG91dC5wcmludGYoIipp
bnQ0OCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGNhc2UgU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCIqc3RyaWN0SW50NDgoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAgICAg
ICAgICAgIG91dC5wcmludGYoIipkb3VibGUoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG5lZWRzVHlwZUNoZWNr
KE5vZGUqIG5vZGUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBmb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH50eXBlc1Bhc3NlZFRocm91Z2g7
CisgICAgICAgIHJldHVybiAhZm9yTm9kZShub2RlKS5pc1R5cGUodHlwZXNQYXNzZWRUaHJvdWdo
KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBuZWVkc1R5cGVDaGVjayhFZGdlIGVkZ2UsIFNwZWN1
bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKQEAgLTE2OCw3ICsxNjgsNyBAQCBwcml2YXRl
OgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJCeVR5cGUoTm9kZSogbm9kZSwgRWRnZSYg
ZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gZm9yTm9kZShlZGdlKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fdHlwZSAmIH50eXBl
KSB7CisgICAgICAgIGlmICghdmFsdWUuaXNUeXBlKHR5cGUpKSB7CiAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgZWRnZS5zZXRQcm9vZlN0YXR1cyhOZWVk
c0NoZWNrKTsKICAgICAgICAgfSBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lv
biAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2ICszMTAsMjYgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIAorICAgIGNhc2UgSW50NDhUb0RvdWJsZTogeworICAgICAgICBKU1ZhbHVlIGNo
aWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxk
ICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNo
aWxkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAK
KyAgICBjYXNlIEludDQ4VG9WYWx1ZTogeworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlz
TnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZSkgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBj
YXNlIFZhbHVlQWRkOgogICAgIGNhc2UgQXJpdGhBZGQ6IHsKICAgICAgICAgSlNWYWx1ZSBsZWZ0
ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKQEAgLTMyNCw5ICszNDQsMTUgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYg
KCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSku
c2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5pc1R5cGUoU3BlY0ludDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUt
PmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRD
YW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNl
OgotICAgICAgICAgICAgaWYgKGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICAmJiBpc1JlYWxOdW1iZXJTcGVjdWxh
dGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQorICAgICAgICAgICAgaWYgKGlz
RnVsbFJlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUp
CisgICAgICAgICAgICAgICAgJiYgaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUo
bm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC0zMzQsNyArMzYwLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBWYWx1ZUFkZCk7CiAg
ICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsK
LSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjU3RyaW5nIHwgU3BlY0ludDMy
IHwgU3BlY051bWJlcik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY1N0
cmluZyB8IFNwZWNCeXRlY29kZU51bWJlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBicmVhazsKQEAgLTM1OCw2ICszODQsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5j
YXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgp
OworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0lu
dDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUo
U3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0z
ODAsNiArNDEyLDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS0+YXJpdGhO
b2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIGlmIChtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpCisgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGlmICghYnl0
ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCisgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjRG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA0LDkgKzQ0MywxMyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAg
fHwgIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkp
KQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CisgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRy
dWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAg
ICAgICAgaWYgKGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdHlwZSkKLSAgICAgICAgICAgICAgICB8fCBpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JO
b2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQorICAgICAgICAgICAgaWYgKGlzRnVsbFJlYWxO
dW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpCisgICAgICAg
ICAgICAgICAgfHwgaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hp
bGQyKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNEb3VibGVSZWFsKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC01ODYsNyArNjI5LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKGFic3RyYWN0
Q2hpbGQubV90eXBlKSkgeworICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oYWJz
dHJhY3RDaGlsZC5tX3R5cGUpKSB7CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCB2bS0+
c21hbGxTdHJpbmdzLm51bWJlclN0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC04MTIsNyArODU1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3Vi
bGUpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKICAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTg2Myw3ICs5
MDYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2Fz
ZSBBcnJheVB1c2g6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGNs
b2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwotICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY051bWJlcik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAog
ICAgIGNhc2UgQXJyYXlQb3A6CkBAIC05MzQsOCArOTc3LDggQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBOQi4gVGhlIG1vcmUgY2Fub25pY2Fs
IHdheSBvZiB3cml0aW5nIHRoaXMgd291bGQgaGF2ZSBiZWVuOgogICAgICAgICAvLwogICAgICAg
ICAvLyBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKLSAgICAgICAgLy8gaWYgKGRlc3RpbmF0aW9uLm1f
dHlwZSAmICEoU3BlY051bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpIHsKLSAgICAg
ICAgLy8gICAgIGRlc3RpbmF0aW9uLmZpbHRlcihTcGVjTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNw
ZWNCb29sZWFuKTsKKyAgICAgICAgLy8gaWYgKGRlc3RpbmF0aW9uLm1fdHlwZSAmICEoU3BlY0Z1
bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4pKSB7CisgICAgICAgIC8vICAgICBk
ZXN0aW5hdGlvbi5maWx0ZXIoU3BlY0Z1bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xl
YW4pOwogICAgICAgICAvLyAgICAgQWJzdHJhY3RWYWx1ZSBzdHJpbmc7CiAgICAgICAgIC8vICAg
ICBzdHJpbmcuc2V0KHZtLT5zdHJpbmdTdHJ1Y3R1cmUpOwogICAgICAgICAvLyAgICAgZGVzdGlu
YXRpb24ubWVyZ2Uoc3RyaW5nKTsKQEAgLTk1NSw3ICs5OTgsNyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2Rl
T3JpZ2luLCBjbG9iYmVyTGltaXQpOwogICAgICAgICAKICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
dHlwZSA9IHNvdXJjZS5tX3R5cGU7Ci0gICAgICAgIGlmICh0eXBlICYgfihTcGVjTnVtYmVyIHwg
U3BlY1N0cmluZyB8IFNwZWNCb29sZWFuKSkKKyAgICAgICAgaWYgKHR5cGUgJiB+KFNwZWNGdWxs
TnVtYmVyIHwgU3BlY1N0cmluZyB8IFNwZWNCb29sZWFuKSkKICAgICAgICAgICAgIHR5cGUgPSAo
U3BlY0hlYXBUb3AgJiB+U3BlY0NlbGwpIHwgU3BlY1N0cmluZzsKIAogICAgICAgICBkZXN0aW5h
dGlvbi5zZXRUeXBlKHR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2
ICs2Nyw4IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgSlMKICAgICB9
CiAgICAgICAgIAogICAgIG1fdHlwZSA9IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKTsKKyAg
ICBpZiAobV90eXBlID09IFNwZWNJbnQ0OEFzRG91YmxlKQorICAgICAgICBtX3R5cGUgPSBTcGVj
SW50NDg7CiAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAgICAgICAKICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CkBAIC0yMjcsNiArMjI5LDcgQEAgRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVl
Ojpub3JtYWxpegogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CiB2b2lkIEFic3RyYWN0VmFsdWU6OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAgIGlm
ICghKG1fdHlwZSAmIFNwZWNDZWxsKSkgewpAQCAtMjM4LDE0ICsyNDEsMTkgQEAgdm9pZCBBYnN0
cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KCkgYwogICAgIGlmIChpc0NsZWFyKCkpCiAgICAg
ICAgIEFTU0VSVCghbV92YWx1ZSk7CiAgICAgCi0gICAgaWYgKCEhbV92YWx1ZSkKLSAgICAgICAg
QVNTRVJUKG1lcmdlU3BlY3VsYXRpb25zKG1fdHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUobV92
YWx1ZSkpID09IG1fdHlwZSk7CisgICAgaWYgKCEhbV92YWx1ZSkgeworICAgICAgICBTcGVjdWxh
dGVkVHlwZSB0eXBlID0gbV90eXBlOworICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ0OCkKKyAg
ICAgICAgICAgIHR5cGUgfD0gU3BlY0ludDQ4QXNEb3VibGU7CisgICAgICAgIEFTU0VSVChtZXJn
ZVNwZWN1bGF0aW9ucyh0eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gdHlw
ZSk7CisgICAgfQogICAgIAogICAgIC8vIE5vdGUgdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBhIHBy
ZWRpY3Rpb24gbGlrZSAoRmluYWwsIFtdKS4gVGhpcyByZWFsbHkgbWVhbnMgdGhhdAogICAgIC8v
IHRoZSB2YWx1ZSBpcyBib3R0b20gYW5kIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoZSB2YWx1
ZSBpcyB1bnJlYWNoYWJsZS4gQnV0CiAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBnZXQgcGVkYW50
aWMgYWJvdXQgdGhpcyBhcyBpdCB3b3VsZCBvbmx5IGluY3JlYXNlIHRoZSBjb21wdXRhdGlvbmFs
CiAgICAgLy8gY29tcGxleGl0eSBvZiB0aGUgY29kZS4KIH0KKyNlbmRpZgogCiB2b2lkIEFic3Ry
YWN0VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxNTU4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg1LDYgKzE4NSwxNiBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAg
ICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBjb3VsZEJlVHlw
ZShTcGVjdWxhdGVkVHlwZSBkZXNpcmVkVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhISht
X3R5cGUgJiBkZXNpcmVkVHlwZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNUeXBlKFNwZWN1
bGF0ZWRUeXBlIGRlc2lyZWRUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEobV90eXBlICYg
fmRlc2lyZWRUeXBlKTsKKyAgICB9CisgICAgCiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIo
R3JhcGgmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKICAgICAKICAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2RlcyBhcnJheU1vZGVzKTsKQEAgLTE5MywyMiArMjAz
LDYgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQg
ZmlsdGVyQnlWYWx1ZShKU1ZhbHVlIHZhbHVlKTsKICAgICAKLSAgICBib29sIHZhbGlkYXRlVHlw
ZShKU1ZhbHVlIHZhbHVlKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzSGVhcFRvcCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAotICAgICAgICBpZiAobWVyZ2VTcGVj
dWxhdGlvbnMobV90eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IG1fdHlwZSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGlmICh2YWx1ZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgJiBTcGVjRW1wdHkpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICAKICAgICBib29sIHZhbGlkYXRlKEpTVmFsdWUgdmFsdWUpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoaXNIZWFwVG9wKCkpCkBAIC0yNTEsNyArMjQ1LDExIEBA
IHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgICAgIHx8ICFhcnJheU1vZGVzQXJlQ2xl
YXJPclRvcChtX2FycmF5TW9kZXMpOwogICAgIH0KICAgICAKKyNpZiBBU1NFUlRfRElTQUJMRUQK
KyAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdCB7IH0KKyNlbHNlCiAgICAgdm9pZCBj
aGVja0NvbnNpc3RlbmN5KCkgY29uc3Q7CisjZW5kaWYKICAgICAKICAgICB2b2lkIGR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OwpAQCAtMzYzLDYgKzM2MSwyOSBAQCBwcml2YXRlOgogICAgICAg
ICBtX2FycmF5TW9kZXMgPSBBTExfQVJSQVlfTU9ERVM7CiAgICAgfQogICAgIAorICAgIGJvb2wg
dmFsaWRhdGVUeXBlKEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNI
ZWFwVG9wKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIC8v
IENvbnN0YW50IGZvbGRpbmcgYWx3YXlzIHJlcHJlc2VudHMgSW50NDgncyBpbiBhIGRvdWJsZSAo
aS5lLiBJbnQ0OEFzRG91YmxlKS4KKyAgICAgICAgLy8gU28gc3BlY3VsYXRpb25Gcm9tVmFsdWUo
dmFsdWUpIGZvciBhbiBJbnQ0OCB2YWx1ZSB3aWxsIHJldHVybiBJbnQ0OEFzRG91YmxlLAorICAg
ICAgICAvLyBhbmQgdGhhdCdzIGZpbmUgLSB0aGUgdHlwZSB2YWxpZGF0ZXMganVzdCBmaW5lLgor
ICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gbV90eXBlOworICAgICAgICBpZiAodHlwZSAm
IFNwZWNJbnQ0OCkKKyAgICAgICAgICAgIHR5cGUgfD0gU3BlY0ludDQ4QXNEb3VibGU7CisgICAg
ICAgIAorICAgICAgICBpZiAobWVyZ2VTcGVjdWxhdGlvbnModHlwZSwgc3BlY3VsYXRpb25Gcm9t
VmFsdWUodmFsdWUpKSAhPSB0eXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKKyAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgQVNTRVJUKG1f
dHlwZSAmIFNwZWNFbXB0eSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAogICAgIHZvaWQgbWFr
ZVRvcChTcGVjdWxhdGVkVHlwZSB0b3ApCiAgICAgewogICAgICAgICBtX3R5cGUgfD0gdG9wOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNp
b24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMjEgKzE1NywyMSBAQCBBcnJheU1vZGUgQXJyYXlNb2Rl
OjpyZWZpbmUoU3BlY3VsYXRlZFR5CiAgICAgICAgICAgICByZXR1cm4gd2l0aFR5cGUoQXJyYXk6
OkZvcmNlRXhpdCk7CiAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24odmFsdWUpKQogICAg
ICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6SW50MzIsIEFycmF5
OjpDb252ZXJ0KTsKLSAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQorICAg
ICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAgcmV0
dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6RG91YmxlLCBBcnJheTo6Q29udmVydCk7
CiAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkNvbnRpZ3VvdXMs
IEFycmF5OjpDb252ZXJ0KTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAg
ICAgIGlmICghdmFsdWUgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHZhbHVlKSkKICAgICAgICAgICAg
IHJldHVybiAqdGhpczsKLSAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQor
ICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAg
cmV0dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6RG91YmxlLCBBcnJheTo6Q29udmVy
dCk7CiAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkNvbnRpZ3Vv
dXMsIEFycmF5OjpDb252ZXJ0KTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJheTo6RG91YmxlOgog
ICAgICAgICBpZiAoZmxhZ3MgJiBOb2RlQnl0ZWNvZGVVc2VzQXNJbnQpCiAgICAgICAgICAgICBy
ZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpDb250aWd1b3VzLCBBcnJheTo6UmFn
ZUNvbnZlcnQpOwotICAgICAgICBpZiAoIXZhbHVlIHx8IGlzTnVtYmVyU3BlY3VsYXRpb24odmFs
dWUpKQorICAgICAgICBpZiAoIXZhbHVlIHx8IGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVl
KSkKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5k
Q29udmVyc2lvbihBcnJheTo6Q29udGlndW91cywgQXJyYXk6OkNvbnZlcnQpOwogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lv
biAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjMsMjEgKzYzLDYgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToK
ICAgICAKLSAgICBOb2RlKiBjYW5vbmljYWxpemUoTm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAg
IGlmICghbm9kZSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gVmFsdWVUb0ludDMyKQotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmNo
aWxkMSgpLm5vZGUoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBub2RlOwotICAgIH0KLSAg
ICBOb2RlKiBjYW5vbmljYWxpemUoRWRnZSBlZGdlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNh
bm9uaWNhbGl6ZShlZGdlLm5vZGUoKSk7Ci0gICAgfQotICAgIAogICAgIHVuc2lnbmVkIGVuZElu
ZGV4Rm9yUHVyZUNTRSgpCiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2xhc3RT
ZWVuW21fY3VycmVudE5vZGUtPm9wKCldOwpAQCAtOTQsOSArNzksOSBAQCBwcml2YXRlOgogCiAg
ICAgTm9kZSogcHVyZUNTRShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgTm9kZSogY2hpbGQx
ID0gY2Fub25pY2FsaXplKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTm9kZSogY2hpbGQyID0g
Y2Fub25pY2FsaXplKG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgTm9kZSogY2hpbGQzID0gY2Fu
b25pY2FsaXplKG5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgRWRnZSBjaGlsZDEgPSBub2RlLT5j
aGlsZDEoKTsKKyAgICAgICAgRWRnZSBjaGlsZDIgPSBub2RlLT5jaGlsZDIoKTsKKyAgICAgICAg
RWRnZSBjaGlsZDMgPSBub2RlLT5jaGlsZDMoKTsKICAgICAgICAgCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGVuZEluZGV4Rm9yUHVyZUNTRSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2Rl
KiBvdGhlck5vZGUgPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7CkBAIC0xMDksMTkgKzk0LDE5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSAhPSBvdGhl
ck5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIE5vZGUqIG90aGVyQ2hpbGQgPSBjYW5vbmljYWxpemUob3Ro
ZXJOb2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBFZGdlIG90aGVyQ2hpbGQgPSBvdGhlck5v
ZGUtPmNoaWxkMSgpOwogICAgICAgICAgICAgaWYgKCFvdGhlckNoaWxkKQogICAgICAgICAgICAg
ICAgIHJldHVybiBvdGhlck5vZGU7CiAgICAgICAgICAgICBpZiAob3RoZXJDaGlsZCAhPSBjaGls
ZDEpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IG90aGVyQ2hpbGQgPSBjYW5vbmljYWxpemUob3RoZXJOb2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICBvdGhlckNoaWxkID0gb3RoZXJOb2RlLT5jaGlsZDIoKTsKICAgICAgICAgICAgIGlmICgh
b3RoZXJDaGlsZCkKICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXJOb2RlOwogICAgICAgICAg
ICAgaWYgKG90aGVyQ2hpbGQgIT0gY2hpbGQyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBvdGhlckNoaWxkID0gY2Fub25pY2FsaXplKG90aGVy
Tm9kZS0+Y2hpbGQzKCkpOworICAgICAgICAgICAgb3RoZXJDaGlsZCA9IG90aGVyTm9kZS0+Y2hp
bGQzKCk7CiAgICAgICAgICAgICBpZiAoIW90aGVyQ2hpbGQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG90aGVyTm9kZTsKICAgICAgICAgICAgIGlmIChvdGhlckNoaWxkICE9IGNoaWxkMykKQEAg
LTM3NywyMSArMzYyLDIxIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1f
Y3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgIGlmIChub2RlID09IGNoaWxkMSB8fCBu
b2RlID09IGNhbm9uaWNhbGl6ZShjaGlsZDIpKSAKKyAgICAgICAgICAgIGlmIChub2RlID09IGNo
aWxkMSB8fCBub2RlID09IGNoaWxkMikgCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgY2FzZSBHZXRCeVZhbDoK
ICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGguYnlWYWxJc1B1cmUobm9kZSkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KSA9PSBjaGlsZDEgJiYgY2Fub25pY2FsaXplKG5vZGUtPmNoaWxkMigpKSA9PSBjYW5vbmljYWxp
emUoY2hpbGQyKSkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gY2hpbGQx
ICYmIG5vZGUtPmNoaWxkMigpID09IGNoaWxkMikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFs
OgogICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CiAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLmJ5VmFsSXNQdXJlKG5vZGUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSA9PSBj
aGlsZDEgJiYgY2Fub25pY2FsaXplKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpID09IGNh
bm9uaWNhbGl6ZShjaGlsZDIpKQorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDApID09IGNoaWxkMSAmJiBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpID09
IGNoaWxkMikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMikubm9kZSgpOwogICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgYXNzdW1lIHRoYXQg
dGhlIFB1dEJ5VmFsIHdpbGwgY2xvYmJlciB0aGUgbG9jYXRpb24gd2UncmUgZ2V0dGluZyBmcm9t
LgogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyOyBpZiB3ZSBrbm93
IHRoYXQgdGhlIFB1dEJ5VmFsIGlzIGFjY2Vzc2luZyBhbiBhcnJheSBvZiBhCkBAIC0xMDkwLDYg
KzEwNzUsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50OgogICAg
ICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAgY2FzZSBNYWtlUm9wZToKKyAgICAgICAg
Y2FzZSBJbnQ0OFRvRG91YmxlOgorICAgICAgICBjYXNlIEludDQ4VG9WYWx1ZToKICAgICAgICAg
ICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChwdXJlQ1NFKG5vZGUpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNTU4MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTEyLDYgKzExMiw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgog
ICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOgor
ICAgIGNhc2UgSW50NDhUb1ZhbHVlOgogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNh
c2UgTW92SGludEFuZENoZWNrOgpAQCAtMTgwLDYgKzE4Miw3IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgc3dpdGNoIChub2RlLT5iaW5hcnlVc2VL
aW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6
CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAgcmVhZChXb3JsZCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2
ICsxNDMsMTUgQEAgaW5saW5lIGJvb2wgZW5hYmxlQ29uY3VycmVudEpJVCgpCiAjZW5kaWYKIH0K
IAoraW5saW5lIGJvb2wgZW5hYmxlSW50NDgoKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
cmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBlbnVt
IFNwaWxsUmVnaXN0ZXJzTW9kZSB7IE5lZWRUb1NwaWxsLCBEb250U3BpbGwgfTsKIAogZW51bSBO
b1Jlc3VsdFRhZyB7IE5vUmVzdWx0IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0
LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGZpeHVwU2V0TG9jYWxzSW5CbG9jayhtX2dy
YXBoLmJsb2NrKGJsb2NrSW5kZXgpKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgZm9y
IChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9j
a3MoKTsgKytibG9ja0luZGV4KQorICAgICAgICAgICAgZml4dXBVbnR5cGVkU2V0TG9jYWxzSW5C
bG9jayhtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpKTsKKyAgICAgICAgCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApAQCAtOTIsNyArOTUsNyBAQCBwcml2YXRlOgogICAgICAgICBzd2l0
Y2ggKG9wKSB7CiAgICAgICAgIGNhc2UgU2V0TG9jYWw6IHsKICAgICAgICAgICAgIC8vIFRoaXMg
Z2V0cyBoYW5kbGVkIGJ5IGZpeHVwU2V0TG9jYWxzSW5CbG9jaygpLgotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIEJpdEFuZDoKQEAgLTEyNCw2ICsxMjcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpIHsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgewogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xOTcsNiArMjA1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fZ3JhcGgubmVnYXRlU2hvdWxkU3Bl
Y3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGlu
ZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMDcsNiArMjE5LDExIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1f
Z3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5j
aGlsZDIoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMwMCw2ICszMTcsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5h
YmxlSW50NDgoKQorICAgICAgICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hp
bmVJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNo
aWxkMigpKTsKQEAgLTM1NSw2ICszNzgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKQorICAgICAgICAg
ICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCku
bm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRn
ZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVt
YmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKQEAgLTQ3NSw3ICs1
MDQsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMik7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQz
MlVzZT4oY2hpbGQzKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5wcmVkaWN0aW9uKCkg
JiBTcGVjSW50NDgpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
Y2hpbGQzKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxV
c2U+KGNoaWxkMSk7CkBAIC04NDcsNiArODc5LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBD
aGVja1RpZXJVcEluTG9vcDoKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAg
ICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAgICAgIGNhc2UgSW50NDhUb0Rv
dWJsZToKKyAgICAgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIApAQCAtMTE4
OSw2ICsxMjIzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAgICAgICAg
ICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTEyMDMsNiArMTI0MCwyMyBAQCBwcml2YXRlOgogICAgICAgICBtX2luc2Vy
dGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBmaXh1cFVudHlw
ZWRTZXRMb2NhbHNJbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgaWYg
KCFibG9jaykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1Jl
YWNoYWJsZSk7CisgICAgICAgIG1fYmxvY2sgPSBibG9jazsKKyAgICAgICAgZm9yIChtX2luZGV4
SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKyttX2luZGV4SW5C
bG9jaykgeworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudE5vZGUgPSBibG9jay0+
YXQobV9pbmRleEluQmxvY2spOworICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9j
YWwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgfQorICAg
ICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgTm9k
ZSogY2hlY2tBcnJheShBcnJheU1vZGUgYXJyYXlNb2RlLCBjb25zdCBDb2RlT3JpZ2luJiBjb2Rl
T3JpZ2luLCBOb2RlKiBhcnJheSwgTm9kZSogaW5kZXgsIGJvb2wgKCpzdG9yYWdlQ2hlY2spKGNv
bnN0IEFycmF5TW9kZSYpID0gY2FuQ1NFU3RvcmFnZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChh
cnJheU1vZGUuaXNTcGVjaWZpYygpKTsKQEAgLTEzMjEsNiArMTM3NSwxMCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIHx8IGlzQm9vbGVhblNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0
aW9uKCkpKQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFi
bGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBpZiAoaXNNYWNoaW5lSW50
U3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICAgICAgbV9w
cm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94
KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2VsbFVzZToKICAgICAg
ICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgIGNhc2UgT2JqZWN0VXNlOgpAQCAtMTM0Nywx
MiArMTQwNSw4MCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPFVzZUtpbmQgdXNlS2luZD4KICAg
ICB2b2lkIGZpeEVkZ2UoRWRnZSYgZWRnZSwgU3BlY3VsYXRpb25EaXJlY3Rpb24gZGlyZWN0aW9u
ID0gQmFja3dhcmRTcGVjdWxhdGlvbikKICAgICB7Ci0gICAgICAgIGlmIChpc0RvdWJsZSh1c2VL
aW5kKSAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgewotICAg
ICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoZWRnZSwgdXNlS2luZCwgZGlyZWN0aW9u
KTsKKyAgICAgICAgaWYgKGlzRG91YmxlKHVzZUtpbmQpKSB7CisgICAgICAgICAgICBpZiAoZWRn
ZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsKKyAgICAgICAgICAgICAg
ICBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShlZGdlLCB1c2VLaW5kLCBkaXJlY3Rpb24pOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUlu
dCgpKSB7CisgICAgICAgICAgICAgICAgLy8gTWFrZSBhbGwgZG91YmxlIHVzZXMgb2YgaW50NDgg
dmFsdWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDQ4VG9Eb3VibGUuCisgICAgICAgICAgICAg
ICAgLy8gVGhpcyBpcyBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIEludDQ4VG9WYWx1ZSAoc2VlIGJl
bG93KSBleGNlcHQgdGhhdAorICAgICAgICAgICAgICAgIC8vIEludDhUb0RvdWJsZSB3aWxsIGNv
bnZlcnQgaW50NDgncyB0aGF0IGZpdCBpbiBhbiBpbnQzMiBpbnRvIGEgZG91YmxlCisgICAgICAg
ICAgICAgICAgLy8gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGNyZWF0ZSBhIGJveGVkIGludDMyIGxp
a2UgSW50NDhUb1ZhbHVlIGRvZXMuCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
Tm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0OEFzRG91YmxlLCBJbnQ0OFRvRG91YmxlLAor
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uu
bm9kZSgpLCBOdW1iZXJVc2UpKTsKKyAgICAgICAgICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQs
IHVzZUtpbmQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGVuYWJsZUludDQ4KCkgJiYgdXNlS2luZCAhPSBN
YWNoaW5lSW50VXNlCisgICAgICAgICAgICAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KCkgJiYgIWVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKKyAgICAgICAgICAgIC8v
IFdlIG1ha2UgYWxsIG5vbi1pbnQ0OCB1c2VzIG9mIGludDQ4IHZhbHVlcyBoYXZlIGFuIGludGVy
bWVkaWF0ZSBJbnQ0OFRvVmFsdWUKKyAgICAgICAgICAgIC8vIG5vZGUgdG8gZW5zdXJlIHRoYXQg
d2UgaGFuZGxlIHRoaXMgcHJvcGVybHk6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8g
YTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0aEFkZChAYSwgLi4uKQorICAgICAg
ICAgICAgLy8gYzogQ2FsbCguLi4sIEBhKQorICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoQGEs
IC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBXaXRob3V0IGFuIGludGVybWVk
aWF0ZSBub2RlIGFuZCBqdXN0IGxhYmVsaW5nIHRoZSB1c2VzLCB3ZSB3aWxsIGdldDoKKyAgICAg
ICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6
IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50
eXBlZDpAYSkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAg
ICAgICAgICAvLworICAgICAgICAgICAgLy8gQW5kIG5vdyB0aGUgYy0+VW50eXBlZDpAYSBlZGdl
IHdpbGwgYm94IHRoZSB2YWx1ZSBvZiBAYSBpbnRvIGEgZG91YmxlLiBUaGlzCisgICAgICAgICAg
ICAvLyBpcyBiYWQsIGJlY2F1c2Ugbm93IHRoZSBkLT5JbnQ0ODpAYSBlZGdlIHdpbGwgZWl0aGVy
IGhhdmUgdG8gZG8gZG91YmxlLXRvLWludAorICAgICAgICAgICAgLy8gY29udmVyc2lvbnMsIG9y
IHdpbGwgaGF2ZSB0byBPU1IgZXhpdCB1bmNvbmRpdGlvbmFsbHkuIEFsdGVybmF0aXZlbHkgd2Ug
Y291bGQKKyAgICAgICAgICAgIC8vIGhhdmUgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSBib3ggdGhl
IHZhbHVlIGJ5IGNvcHlpbmcgcmF0aGVyIHRoYW4gaW4tcGxhY2UuCisgICAgICAgICAgICAvLyBC
dXQgdGhlc2UgYm94aW5ncyBhcmUgYWxzbyBjb3N0bHkgc28gdGhpcyB3b3VsZG4ndCBiZSBncmVh
dC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBUaGUgc29sdXRpb24gd2UgdXNlIGlz
IHRvIGFsd2F5cyBoYXZlIG5vbi1JbnQ0OCB1c2VzIG9mIHByZWRpY3RlZCBJbnQ0OCdzIHVzZQor
ICAgICAgICAgICAgLy8gYW4gaW50ZXJ2ZW5pbmcgSW50NDhUb1ZhbHVlIG5vZGU6CisgICAgICAg
ICAgICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBB
cml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8geDogSW50NDhUb1ZhbHVlKElu
dDQ4OkBhKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QHgpCisgICAgICAg
ICAgICAvLyBkOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAg
ICAgICAgIC8vIE5vdGUgdGhhdCBldmVuIGlmIHdlIGhhZCBtdWx0aXBsZSBub24taW50NDggdXNl
cyBvZiBAYSwgdGhlIG11bHRpcGxlCisgICAgICAgICAgICAvLyBJbnQ0OFRvVmFsdWUncyB3b3Vs
ZCBnZXQgQ1NFJ2QgdG9nZXRoZXIuIFNvIHRoZSBib3hpbmcgd291bGQgb25seSBoYXBwZW4gb25j
ZS4KKyAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIEBhIHdvdWxkIGNvbnRpbnVlIHRv
IGJlIHJlcHJlc2VudGVkIGFzIGEgbmF0aXZlIGludDQ4LgorICAgICAgICAgICAgLy8KKyAgICAg
ICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHdvdWxkIGhhdmUgYmVlbiB0byBpbnNlcnQgVG9OYXRp
dmVJbnQ0OCBub2RlcyBvbiBpbnQ0OCB1c2VzIG9mCisgICAgICAgICAgICAvLyBpbnQ0OCdzLiBU
aGlzIHdvdWxkIGhhdmUgaGFuZGxlZCB0aGUgYWJvdmUgZXhhbXBsZSBidXQgd291bGQgZmFsbCBv
dmVyIGZvcjoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAg
ICAgICAgICAgIC8vIGI6IENhbGwoLi4uLCBAYSkKKyAgICAgICAgICAgIC8vIGM6IEFyaXRoQWRk
KEBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQnV0IHRoZSBzb2x1dGlv
biB3ZSB1c2UgaGFuZGxlcyB0aGUgYWJvdmUgZ3JhY2VmdWxseS4KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4LCBJbnQ0OFRvVmFsdWUsCisgICAg
ICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwg
VW50eXBlZFVzZSkpOworICAgICAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgb2JzZXJ2
ZVVzZUtpbmRPbk5vZGU8dXNlS2luZD4oZWRnZS5ub2RlKCkpOworICAgICAgICAKICAgICAgICAg
ZWRnZS5zZXRVc2VLaW5kKHVzZUtpbmQpOwogICAgIH0KICAgICAKQEAgLTEzNzgsNyArMTUwNCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShFZGdlJiBlZGdl
LCBVc2VLaW5kIHVzZUtpbmQgPSBOdW1iZXJVc2UsIFNwZWN1bGF0aW9uRGlyZWN0aW9uIGRpcmVj
dGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBOb2RlKiByZXN1bHQg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNJbnQ0OCwgSW50MzJUb0RvdWJsZSwKKyAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjSW50NDhBc0RvdWJsZSwgSW50MzJUb0RvdWJsZSwKICAgICAgICAgICAgIG1fY3VycmVudE5v
ZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOwogICAgICAgICBp
ZiAoZGlyZWN0aW9uID09IEZvcndhcmRTcGVjdWxhdGlvbikKICAgICAgICAgICAgIHJlc3VsdC0+
bWVyZ2VGbGFncyhOb2RlRXhpdHNGb3J3YXJkKTsKQEAgLTE0MzQsMTMgKzE1NjAsMjAgQEAgcHJp
dmF0ZToKICAgICBib29sIGF0dGVtcHRUb01ha2VJbnRlZ2VyQWRkKE5vZGUqIG5vZGUpCiAgICAg
ewogICAgICAgICBBZGRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IG1fZ3JhcGguYWRkU3BlY3VsYXRp
b25Nb2RlKG5vZGUpOwotICAgICAgICBpZiAobW9kZSA9PSBEb250U3BlY3VsYXRlSW50MzIpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtb2RlICE9IERvbnRTcGVjdWxh
dGVJbnQzMikgeworICAgICAgICAgICAgdHJ1bmNhdGVDb25zdGFudHNJZk5lY2Vzc2FyeShub2Rl
LCBtb2RlKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB0cnVuY2F0ZUNv
bnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUsIG1vZGUpOwotICAgICAgICBmaXhFZGdlPEludDMyVXNl
Pihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3Vs
ZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGlu
ZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBib29s
IGF0dGVtcHRUb01ha2VHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAJKHJldmlzaW9uIDE1NTgyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBGbHUKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgb3V0LnByaW50KCJGbHVz
aGVkSW50MzIiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAg
ICAgICBvdXQucHJpbnQoIkZsdXNoZWRJbnQ0OCIpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBGbHVzaGVkRG91YmxlOgogICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWREb3VibGUiKTsKICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZv
cm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hG
b3JtYXQuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIGVudW0gRmx1c2hGb3JtYXQgewogICAgIERlYWRGbHVz
aCwKICAgICBGbHVzaGVkSW50MzIsCisgICAgRmx1c2hlZEludDQ4LAogICAgIEZsdXNoZWREb3Vi
bGUsCiAgICAgRmx1c2hlZENlbGwsCiAgICAgRmx1c2hlZEJvb2xlYW4sCkBAIC01NSw2ICs1Niw4
IEBAIGlubGluZSBOb2RlRmxhZ3MgcmVzdWx0Rm9yKEZsdXNoRm9ybWF0IGYKICAgICAgICAgcmV0
dXJuIE5vZGVSZXN1bHRKUzsKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJu
IE5vZGVSZXN1bHRJbnQzMjsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgcmV0dXJu
IE5vZGVSZXN1bHRJbnQ0ODsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAgIHJldHVy
biBOb2RlUmVzdWx0TnVtYmVyOwogICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CkBAIC03NCw2ICs3
Nyw4IEBAIGlubGluZSBVc2VLaW5kIHVzZUtpbmRGb3IoRmx1c2hGb3JtYXQgZm8KICAgICAgICAg
cmV0dXJuIENlbGxVc2U7CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVybiBJ
bnQzMlVzZTsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgcmV0dXJuIE1hY2hpbmVJ
bnRVc2U7CiAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICByZXR1cm4gTnVtYmVyVXNl
OwogICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg2LDYgKzg2LDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGluaXRHUFIobm9kZSwgdXNl
Q291bnQsIGdwciwgRGF0YUZvcm1hdEludDMyKTsKICAgICB9CisgICAgdm9pZCBpbml0SW50NDgo
Tm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyByZWcsIERhdGFGb3JtYXQgZm9y
bWF0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwg
Zm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgICAgIGluaXRHUFIobm9kZSwg
dXNlQ291bnQsIHJlZywgZm9ybWF0KTsKKyAgICB9CisgICAgdm9pZCBpbml0SW50NDgoTm9kZSog
bm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBpbml0
R1BSKG5vZGUsIHVzZUNvdW50LCByZWcsIERhdGFGb3JtYXRJbnQ0OCk7CisgICAgfQorICAgIHZv
aWQgaW5pdFN0cmljdEludDQ4KE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcg
cmVnKQorICAgIHsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgcmVnLCBEYXRhRm9y
bWF0U3RyaWN0SW50NDgpOworICAgIH0KICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgaW5p
dEpTVmFsdWUoTm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyBncHIsIERhdGFG
b3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTKQogICAgIHsKQEAgLTE4Nyw2ICsyMDAsMTEgQEAg
cHVibGljOgogICAgIC8vIEdldCB0aGUgZm9ybWF0IG9mIHRoZSB2YWx1ZSBhcyBpdCBpcyBzcGls
bGVkIGluIHRoZSBKU1N0YWNrIChvciAnbm9uZScpLgogICAgIERhdGFGb3JtYXQgc3BpbGxGb3Jt
YXQoKSB7IHJldHVybiBtX3NwaWxsRm9ybWF0OyB9CiAgICAgCisgICAgYm9vbCBpc0Zvcm1hdChE
YXRhRm9ybWF0IGV4cGVjdGVkRm9ybWF0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVy
Rm9ybWF0KCkgPT0gZXhwZWN0ZWRGb3JtYXQgfHwgc3BpbGxGb3JtYXQoKSA9PSBleHBlY3RlZEZv
cm1hdDsKKyAgICB9CisgICAgCiAgICAgYm9vbCBpc0pTRm9ybWF0KERhdGFGb3JtYXQgZXhwZWN0
ZWRGb3JtYXQpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjppc0pTRm9ybWF0KHJlZ2lzdGVy
Rm9ybWF0KCksIGV4cGVjdGVkRm9ybWF0KSB8fCBKU0M6OmlzSlNGb3JtYXQoc3BpbGxGb3JtYXQo
KSwgZXhwZWN0ZWRGb3JtYXQpOwpAQCAtMTk3LDYgKzIxNSwxNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBpc0pTRm9ybWF0KERhdGFGb3JtYXRKU0ludDMyKTsKICAgICB9CiAgICAgCisgICAg
Ym9vbCBpc0ludDQ4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0Zvcm1hdChEYXRhRm9ybWF0
SW50NDgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzU3RyaWN0SW50NDgoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGlzRm9ybWF0KERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgfQorICAg
IAogICAgIGJvb2wgaXNKU0RvdWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gaXNKU0Zvcm1h
dChEYXRhRm9ybWF0SlNEb3VibGUpOwpAQCAtMzE0LDYgKzM0MiwxOSBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SW50MzIpOwogICAgIH0K
KyAgICB2b2lkIGZpbGxJbnQ0OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBn
cHIsIERhdGFGb3JtYXQgZm9ybWF0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZvcm1hdCA9PSBE
YXRhRm9ybWF0SW50NDggfHwgZm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAg
ICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIGZvcm1hdCk7CisgICAgfQorICAgIHZvaWQgZmlsbElu
dDQ4KFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwcikKKyAgICB7CisgICAg
ICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERhdGFGb3JtYXRJbnQ0OCk7CisgICAgfQorICAgIHZv
aWQgZmlsbFN0cmljdEludDQ4KFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdw
cikKKyAgICB7CisgICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERhdGFGb3JtYXRTdHJpY3RJ
bnQ0OCk7CisgICAgfQogICAgIHZvaWQgZmlsbEJvb2xlYW4oVmFyaWFibGVFdmVudFN0cmVhbSYg
c3RyZWFtLCBHUFJSZWcgZ3ByKQogICAgIHsKICAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwg
RGF0YUZvcm1hdEJvb2xlYW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsMTQgKzIzNiwxNCBAQCB2b2lkIEdyYXBo
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAgIGlmIChvcGVyYW5kSXNBcmd1
bWVudChvcGVyYW5kKSkKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImFyZyIsIG9wZXJh
bmRUb0FyZ3VtZW50KG9wZXJhbmQpLCAiKCIsIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAoKnRoaXMs
IHZhcmlhYmxlQWNjZXNzRGF0YSksICIpIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91
dC5wcmludChjb21tYSwgInIiLCBvcGVyYW5kLCAiKCIsIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAo
KnRoaXMsIHZhcmlhYmxlQWNjZXNzRGF0YSksICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJsb2MiLCBvcGVyYW5kVG9Mb2NhbChvcGVyYW5kKSwgIigiLCBWYXJpYWJsZUFjY2Vz
c0RhdGFEdW1wKCp0aGlzLCB2YXJpYWJsZUFjY2Vzc0RhdGEpLCAiKSIpOwogICAgIH0KICAgICBp
ZiAobm9kZS0+aGFzVW5saW5rZWRMb2NhbCgpKSB7CiAgICAgICAgIGludCBvcGVyYW5kID0gbm9k
ZS0+dW5saW5rZWRMb2NhbCgpOwogICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFu
ZCkpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJhcmciLCBvcGVyYW5kVG9Bcmd1bWVu
dChvcGVyYW5kKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
InIiLCBvcGVyYW5kKTsKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImxvYyIsIG9wZXJh
bmRUb0xvY2FsKG9wZXJhbmQpKTsKICAgICB9CiAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50QnVm
ZmVyKCkpIHsKICAgICAgICAgb3V0LnByaW50KGNvbW1hKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMjMwLDYgKzIzMCw5IEBAIHB1
YmxpYzoKICAgICAKICAgICBib29sIGFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoTm9kZSog
YWRkKQogICAgIHsKKyAgICAgICAgaWYgKCFlbmFibGVJbnQ0OCgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAKICAgICAgICAgTm9kZSogbGVmdCA9IGFkZC0+Y2hpbGQxKCku
bm9kZSgpOwogICAgICAgICBOb2RlKiByaWdodCA9IGFkZC0+Y2hpbGQyKCkubm9kZSgpOwogCkBA
IC0yNTcsNiArMjYwLDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKG11bC0+b3Ao
KSA9PSBBcml0aE11bCk7CiAgICAgICAgIAorICAgICAgICBpZiAoIWVuYWJsZUludDQ4KCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICBOb2RlKiBsZWZ0ID0g
bXVsLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgIE5vZGUqIHJpZ2h0ID0gbXVsLT5jaGlsZDIo
KS5ub2RlKCk7CiAKQEAgLTI3NCw2ICsyODAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWdhdGVT
aG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KE5vZGUqIG5lZ2F0ZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVChuZWdhdGUtPm9wKCkgPT0gQXJpdGhOZWdhdGUpOworICAgICAgICBpZiAoIWVuYWJsZUlu
dDQ4KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBuZWdhdGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50Rm9yQXJpdGhtZXRpYygpCiAgICAg
ICAgICAgICAmJiAhaGFzRXhpdFNpdGUobmVnYXRlLCBJbnQ0OE92ZXJmbG93KQogICAgICAgICAg
ICAgJiYgbmVnYXRlLT5jYW5TcGVjdWxhdGVJbnQ0OCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlz
aW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsOCArMzEzLDggQEAgYm9vbCBJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgICAgICAgICAgLy8gYmVmb3JlIGFu
ZCBhZnRlciBzZXR0aW5nIGl0LgogICAgICAgICAgICAgc291cmNlID0gZm9yTm9kZShub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZs
dXNoRm9ybWF0KCkgPT0gRmx1c2hlZERvdWJsZSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCgh
KHNvdXJjZS5tX3R5cGUgJiB+U3BlY051bWJlcikpOwotICAgICAgICAgICAgICAgIEFTU0VSVCgh
IShzb3VyY2UubV90eXBlICYgflNwZWNEb3VibGUpID09ICEhKHNvdXJjZS5tX3R5cGUgJiBTcGVj
SW50MzIpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIShzb3VyY2UubV90eXBlICYgflNwZWNG
dWxsTnVtYmVyKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCEhKHNvdXJjZS5tX3R5cGUgJiB+
U3BlY0RvdWJsZSkgPT0gISEoc291cmNlLm1fdHlwZSAmIFNwZWNNYWNoaW5lSW50KSk7CiAgICAg
ICAgICAgICAgICAgaWYgKCEoc291cmNlLm1fdHlwZSAmIH5TcGVjRG91YmxlKSkgewogICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UubWVyZ2UoU3BlY0ludDQ4QXNEb3VibGUpOwogICAgICAgICAg
ICAgICAgICAgICBzb3VyY2UuZmlsdGVyKFNwZWNEb3VibGUpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMs
NiArMTAzLDkgQEAgdm9pZCBKSVRDb2RlOjpyZWNvbnN0cnVjdCgKICAgICAgICAgY2FzZSBBbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6CiAgICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVy
KGV4ZWMtPnIob3BlcmFuZCkudW5ib3hlZEludDMyKCkpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OgorICAgICAgICAgICAg
dmFsdWUgPSBqc051bWJlcihleGVjLT5yKG9wZXJhbmQpLnVuYm94ZWRJbnQ0OCgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3Vi
bGU6CiAgICAgICAgICAgICB2YWx1ZSA9IGpzRG91YmxlTnVtYmVyKGV4ZWMtPnIob3BlcmFuZCku
dW5ib3hlZERvdWJsZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCw4IEBAIGlubGluZSBib29sIGJlbG9uZ3NJbk1pbmlmaWVkR3JhcGgoTm9k
ZVQKICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgogICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKICAg
ICBjYXNlIFBoYW50b21Bcmd1bWVudHM6CisgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CisgICAgY2Fz
ZSBJbnQ0OFRvRG91YmxlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBBU1NFUlQoIXBlcm1pdHNPU1JCYWNrd2FyZFJld2lyaW5nKHR5cGUpICYmICFwZXJtaXRz
T1NSRm9yd2FyZFJld2lyaW5nKHR5cGUpKTsKQEAgLTEwNCw2ICsxMDYsOCBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6
CiAgICAgICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKKyAgICAgICAgY2FzZSBJbnQ0OFRvRG91Ymxl
OgorICAgICAgICBjYXNlIEludDQ4VG9WYWx1ZToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQxLDEyICsxMjQx
LDEyIEBAIHN0cnVjdCBOb2RlIHsKICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZU51bWJl
cigpCiAgICAgewotICAgICAgICByZXR1cm4gaXNOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KCkpOworICAgICAgICByZXR1cm4gaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigp
KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVOdW1iZXJFeHBlY3RpbmdE
ZWZpbmVkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uRXhwZWN0
aW5nRGVmaW5lZChwcmVkaWN0aW9uKCkpOworICAgICAgICByZXR1cm4gaXNGdWxsTnVtYmVyU3Bl
Y3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgc2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZUZsYWdzLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDkg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogI2RlZmluZSBOb2RlUmVzdWx0SlMg
ICAgICAgICAgICAgICAgICAgICAweDAwMDEKICNkZWZpbmUgTm9kZVJlc3VsdE51bWJlciAgICAg
ICAgICAgICAgICAgMHgwMDAyCiAjZGVmaW5lIE5vZGVSZXN1bHRJbnQzMiAgICAgICAgICAgICAg
ICAgIDB4MDAwMwotI2RlZmluZSBOb2RlUmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAw
MDQKLSNkZWZpbmUgTm9kZVJlc3VsdFN0b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA1CisjZGVm
aW5lIE5vZGVSZXN1bHRJbnQ0OCAgICAgICAgICAgICAgICAgIDB4MDAwNAorI2RlZmluZSBOb2Rl
UmVzdWx0Qm9vbGVhbiAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUgTm9kZVJlc3VsdFN0
b3JhZ2UgICAgICAgICAgICAgICAgMHgwMDA2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogI2RlZmluZSBOb2RlTXVzdEdlbmVyYXRlICAgICAgICAgICAgICAgICAweDAwMDggLy8g
c2V0IG9uIG5vZGVzIHRoYXQgaGF2ZSBzaWRlIGVmZmVjdHMsIGFuZCBtYXkgbm90IHRyaXZpYWxs
eSBiZSByZW1vdmVkIGJ5IERDRS4KICNkZWZpbmUgTm9kZUhhc1ZhckFyZ3MgICAgICAgICAgICAg
ICAgICAgMHgwMDEwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEludDMyVG9Eb3VibGUsIE5vZGVSZXN1bHROdW1i
ZXIpIFwKICAgICAvKiBVc2VkIHRvIHNwZWN1bGF0ZSB0aGF0IGEgZG91YmxlIHZhbHVlIGlzIGFj
dHVhbGx5IGFuIGludGVnZXIuICovXAogICAgIG1hY3JvKERvdWJsZUFzSW50MzIsIE5vZGVSZXN1
bHRJbnQzMiB8IE5vZGVFeGl0c0ZvcndhcmQpIFwKKyAgICAvKiBVc2VkIHRvIHNlcGFyYXRlIHJl
cHJlc2VudGF0aW9uIGFuZCByZWdpc3RlciBhbGxvY2F0aW9uIG9mIEludDQ4J3MgcmVwcmVzZW50
ZWQgKi9cCisgICAgLyogYXMgdmFsdWVzLiAqL1wKKyAgICBtYWNybyhJbnQ0OFRvVmFsdWUsIE5v
ZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKEludDQ4VG9Eb3VibGUsIE5vZGVSZXN1bHROdW1iZXIp
IFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCiAg
ICAgbWFjcm8oQXJpdGhBZGQsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CkBAIC0zNTYsNiArMzYwLDE3IEBAIGlubGluZSB1bnNpZ25lZCBmb3J3YXJkUmV3aXJpbmdTZWxl
Y3Rpb24KICAgICAgICAgLy8gVGhpcyBsb3NlcyBpbmZvcm1hdGlvbi4gT25seSB1c2UgaXQgaWYg
dGhlcmUgYXJlIG5vIGJldHRlciBhbHRlcm5hdGl2ZXMuCiAgICAgICAgIHJldHVybiAyNTsKICAg
ICAgICAgCisgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CisgICAgICAgIC8vIExvc2VzIG5vIGluZm9y
bWF0aW9uLiBJdCBqdXN0IGJveGVzIHRoZSB2YWx1ZSwgd2hpY2ggaXMgd2hhdCBPU1Igd2FudHMK
KyAgICAgICAgLy8gdG8gZG8gYW55d2F5LgorICAgICAgICByZXR1cm4gMTAwOworICAgICAgICAK
KyAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIC8vIFRoaXMgaXMgbGlrZSBJbnQzMlRv
RG91YmxlOyB3ZSBjYW4gdXNlIGl0IGJlY2F1c2UgaXQgZ2l2ZXMgYSBzZW1hbnRpY2FsbHkKKyAg
ICAgICAgLy8gZXF1aXZhbGVudCB2YWx1ZSBidXQgdGhhdCB2YWx1ZSBtYXkgYmUgYW4gaW50MzIg
aW4gYSBkb3VibGUsIHNvIHdlJ2QKKyAgICAgICAgLy8gcmF0aGVyIG5vdCBpZiB3ZSBjYW4gYXZv
aWQgaXQuCisgICAgICAgIHJldHVybiA3NTsKKyAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTUsNiArMTk1LDggQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0
KGNvbnN0IAogICAgICAgICBjYXNlIEluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMklu
R1BSOgogICAgICAgICBjYXNlIFVJbnQzMkluR1BSOgorICAgICAgICBjYXNlIFVuYm94ZWRJbnQ0
OEluR1BSOgorICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ0OEluR1BSOgogICAgICAgICAg
ICAgbV9qaXQuc3RvcmU2NChyZWNvdmVyeS5ncHIoKSwgc2NyYXRjaCArIGluZGV4KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkBAIC0yMzUsMTIgKzIzNywxNSBAQCB2b2lkIE9T
UkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2UgRGlzcGxhY2Vk
SW5KU1N0YWNrOgogICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAg
ICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBJbnQ0OERpc3Bs
YWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0OERpc3BsYWNlZEluSlNTdGFj
azoKICAgICAgICAgICAgIG1faml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
cmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAg
ICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
QXNVbmJveGVkSW50MzI6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERv
dWJsZToKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAg
ICAgICAgICBtX2ppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQp
LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJl
Z1QwLCBzY3JhdGNoICsgaW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzQsMzQgKzI3
OSw1OSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAg
ICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgotICAgICAgICBjYXNlIElu
RlBSOgotICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAg
IG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRl
eCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoR1BSSW5m
bzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgbV9qaXQuYm94RG91Ymxl
KEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LnN0
b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5k
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFscmVh
ZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgY2FzZSBVbmJveGVkSW50NDhJbkdQ
UjoKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKKyAgICAgICAgY2FzZSBJ
bnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0OERpc3BsYWNl
ZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBVSW50MzJJbkdQUjogewogICAgICAgICAgICAgbV9q
aXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAg
bV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsK
LSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBwb3NpdGl2ZSA9IG1faml0LmJyYW5j
aDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6R3JlYXRlclRoYW5PckVxdWFs
LAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW0zMigwKSk7Ci0gICAgICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShHUFJJ
bmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5hZGREb3Vi
bGUoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJkFz
c2VtYmx5SGVscGVyczo6dHdvVG9UaGUzMiksCi0gICAgICAgICAgICAgICAgRlBSSW5mbzo6ZnBS
ZWdUMCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIENvbnZlcnQgaXQgdG8gYW4gaW50
NjQuCisgICAgICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CisgICAgICAg
ICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgICAgIGNh
c2UgVW5ib3hlZEludDQ4SW5HUFI6CisgICAgICAgICAgICBjYXNlIEludDQ4RGlzcGxhY2VkSW5K
U1N0YWNrOgorICAgICAgICAgICAgICAgIG1faml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBVSW50MzJJbkdQUjoKKyAgICAg
ICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6cmVnVDApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gSXMgaXQgYW4gaW50MzI/CisgICAgICAgICAg
ICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEp
OworICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGlzSW50MzIgPSBtX2ppdC5icmFu
Y2g2NCgKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkVxdWFsLCBHUFJJbmZvOjpy
ZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBOb3Bl
LCBpdCdzIG5vdCwgYnV0IHJlZ1QwIGNvbnRhaW5zIHRoZSBpbnQ2NCB2YWx1ZS4KKyAgICAgICAg
ICAgIG1faml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpm
cFJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZG9uZSA9
IG1faml0Lmp1bXAoKTsKLSAgICAgICAgICAgIHBvc2l0aXZlLmxpbmsoJm1faml0KTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaXNJbnQzMi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICBt
X2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDApOwog
ICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CisgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVn
VDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZERvdWJsZToKKyAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAgICAgY2FzZSBE
b3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpm
cFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1Qw
LCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgICAgIG1f
aml0LnN0b3JlNjQoCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKHJlY292ZXJ5LmNvbnN0YW50KCkpKSwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE2LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3Vs
YXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgIHsK
LSAgICAgICAgaWYgKCFpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKKyAgICAgICAgaWYgKCFp
c0Z1bGxOdW1iZXJTcGVjdWxhdGlvbih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gU3BlY0Rv
dWJsZTsKICAgICAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZU5hTikKICAgICAgICAgICAgIHJl
dHVybiBTcGVjRG91YmxlOwpAQCAtMjAzLDcgKzIwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBpZiAobm9kZUNhblNwZWN1bGF0ZUludDMyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
U3BlY051bWJlcik7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
U3BlY0J5dGVjb2RlTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAg
LTIxMiwxNCArMjEyLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBy
aWdodCA9IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVy
U3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb25F
eHBlY3RpbmdEZWZpbmVkKHJpZ2h0KSkgeworICAgICAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1i
ZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQobGVmdCkgJiYgaXNGdWxsTnVtYmVyU3BlY3Vs
YXRpb25FeHBlY3RpbmdEZWZpbmVkKHJpZ2h0KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
bV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1vZGUobm9kZSkgIT0gRG9udFNwZWN1bGF0ZUludDMyKQog
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0lu
dDMyKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVj
dWxhdGVNYWNoaW5lSW50KG5vZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDQ4KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oc3BlY3Vs
YXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIShsZWZ0ICYgU3BlY051bWJlcikgfHwgIShyaWdodCAmIFNwZWNOdW1i
ZXIpKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKGxlZnQgJiBTcGVjRnVsbE51bWJl
cikgfHwgIShyaWdodCAmIFNwZWNGdWxsTnVtYmVyKSkgewogICAgICAgICAgICAgICAgICAgICAv
LyBsZWZ0IG9yIHJpZ2h0IGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIG90aGVyIHRoYW4gYSBudW1i
ZXIuCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNT
dHJpbmcpOwogICAgICAgICAgICAgICAgIH0gZWxzZQpAQCAtMzY4LDEwICszNjgsMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgR2V0QnlWYWw6IHsKKyAgICAgICAgICAg
IGlmICghbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGlmICghbm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKQogICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKSkKICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsKLSAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVVaW50MzJBcnJheSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlv
bihub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ0OCk7
CisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC01NjYsNiArNTc2LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVj
a1dhdGNoZG9nVGltZXI6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2Ug
TG9vcEhpbnQ6CisgICAgICAgIGNhc2UgSW50NDhUb1ZhbHVlOgorICAgICAgICBjYXNlIEludDQ4
VG9Eb3VibGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBU
aGlzIGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IGFscmVhZHkgaGFzIGEgcHJlZGljdGlvbi4KQEAg
LTY0MCw4ICs2NTIsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
RG91YmxlQmFsbG90IGJhbGxvdDsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChp
c051bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChsZWZ0KSAmJiBpc051bWJlclNwZWN1
bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChyaWdodCkKLSAgICAgICAgICAgICAgICAmJiAhbV9ncmFw
aC5hZGRTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlKSkKKyAgICAgICAgICAgIGlmIChpc0Z1bGxO
dW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQobGVmdCkgJiYgaXNGdWxsTnVtYmVyU3Bl
Y3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHJpZ2h0KQorICAgICAgICAgICAgICAgICYmICFtX2dy
YXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludDMyKG5vZGUpCisgICAgICAgICAgICAgICAgJiYgIW1f
Z3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkKICAgICAgICAgICAgICAg
ICBiYWxsb3QgPSBWb3RlRG91YmxlOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IGJhbGxvdCA9IFZvdGVWYWx1ZTsKQEAgLTY1Nyw4ICs2NzAsOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgRG91YmxlQmFsbG90IGJhbGxvdDsKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKGxlZnQpICYmIGlzTnVt
YmVyU3BlY3VsYXRpb24ocmlnaHQpCi0gICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGgubXVsU2hv
dWxkU3BlY3VsYXRlSW50MzIobm9kZSkpCisgICAgICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3Bl
Y3VsYXRpb24obGVmdCkgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24ocmlnaHQpCisgICAgICAg
ICAgICAgICAgJiYgIW1fZ3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSkKKyAgICAg
ICAgICAgICAgICAmJiAhbV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUp
KQogICAgICAgICAgICAgICAgIGJhbGxvdCA9IFZvdGVEb3VibGU7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZVZhbHVlOwpAQCAtNjc3LDcgKzY5MSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBEb3VibGVCYWxsb3QgYmFs
bG90OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRp
b24obGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKKyAgICAgICAgICAgIGlmIChp
c0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihy
aWdodCkKICAgICAgICAgICAgICAgICAmJiAhKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludDMyRm9y
QXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkg
JiYgbm9kZS0+Y2FuU3BlY3VsYXRlSW50MzIoKSkpCiAgICAgICAgICAgICAgICAgYmFsbG90ID0g
Vm90ZURvdWJsZTsKICAgICAgICAgICAgIGVsc2UKQEAgLTcwNiw3ICs3MjAsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUtPmNoaWxkMSgp
LT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBpZiAoaXNEb3VibGVTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKSkKICAgICAgICAgICAgICAgICBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+dm90
ZShWb3RlRG91YmxlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFpc051bWJlclNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pIHx8IGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAg
ICAgIGVsc2UgaWYgKAorICAgICAgICAgICAgICAgICFpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihw
cmVkaWN0aW9uKQorICAgICAgICAgICAgICAgIHx8IGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0
aW9uKSB8fCBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAg
ICAgICBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+dm90ZShWb3RlVmFsdWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiAr
NjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CiAg
ICAgICAgIGNhc2UgTm90Q2VsbFVzZToKICAgICAgICAgY2FzZSBPdGhlclVzZToKKyAgICAgICAg
Y2FzZSBNYWNoaW5lSW50VXNlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgS25vd25JbnQzMlVzZToKQEAgLTY5LDcgKzcwLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgS25vd25OdW1iZXJV
c2U6Ci0gICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIH5TcGVj
TnVtYmVyKQorICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiB+
U3BlY0Z1bGxOdW1iZXIpCiAgICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBmYWxzZTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIApAQCAtMjM5LDYgKzI0MCw4IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrVGllclVwQXRS
ZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgIGNhc2UgTG9vcEhp
bnQ6CisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOgorICAgIGNhc2UgSW50NDhUb1ZhbHVlOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBHZXRCeVZhbDoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZl
UGxhbi5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBA
QCBlbnVtIFNpbGVudFNwaWxsQWN0aW9uIHsKIGVudW0gU2lsZW50RmlsbEFjdGlvbiB7CiAgICAg
RG9Ob3RoaW5nRm9yRmlsbCwKICAgICBTZXRJbnQzMkNvbnN0YW50LAorICAgIFNldEludDQ4Q29u
c3RhbnQsCisgICAgU2V0U3RyaWN0SW50NDhDb25zdGFudCwKICAgICBTZXRCb29sZWFuQ29uc3Rh
bnQsCiAgICAgU2V0Q2VsbENvbnN0YW50LAogICAgIFNldFRydXN0ZWRKU0NvbnN0YW50LApAQCAt
NjEsOCArNjMsMTIgQEAgZW51bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBMb2FkMzJUYWcsCiAg
ICAgTG9hZDMyUGF5bG9hZCwKICAgICBMb2FkMzJQYXlsb2FkQm94SW50LAorICAgIExvYWQzMlBh
eWxvYWRDb252ZXJ0VG9JbnQ0OCwKKyAgICBMb2FkMzJQYXlsb2FkU2lnbkV4dGVuZCwKICAgICBM
b2FkUHRyLAogICAgIExvYWQ2NCwKKyAgICBMb2FkNjRTaGlmdFJpZ2h0MTYsCisgICAgTG9hZDY0
U2hpZnRMZWZ0MTYsCiAgICAgTG9hZERvdWJsZSwKICAgICBMb2FkRG91YmxlQm94RG91YmxlLAog
ICAgIExvYWRKU1VuYm94RG91YmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDYgKzQwLDQwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAog
I2lmIFVTRShKU1ZBTFVFNjQpCiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJveEludDQ4KEdQUlJl
ZyBzb3VyY2VHUFIsIEdQUlJlZyB0YXJnZXRHUFIsIERhdGFGb3JtYXQgZm9ybWF0KQoreworICAg
IEdQUlJlZyB0ZW1wR1BSOworICAgIGlmIChzb3VyY2VHUFIgPT0gdGFyZ2V0R1BSKQorICAgICAg
ICB0ZW1wR1BSID0gYWxsb2NhdGUoKTsKKyAgICBlbHNlCisgICAgICAgIHRlbXBHUFIgPSB0YXJn
ZXRHUFI7CisgICAgCisgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CisKKyAgICBpZiAo
Zm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKDE2KSwgc291cmNlR1BSKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVChmb3JtYXQg
PT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihz
b3VyY2VHUFIsIHRlbXBHUFIpOworICAgIAorICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzRG91Ymxl
ID0gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc291cmNl
R1BSLCB0ZW1wR1BSKTsKKyAgICAKKyAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihzb3VyY2VH
UFIsIHRhcmdldEdQUik7CisgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsIHRhcmdldEdQUik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKKyAgICAKKyAgICBpc0RvdWJsZS5saW5rKCZtX2ppdCk7CisgICAgbV9qaXQuY29udmVy
dEludDY0VG9Eb3VibGUoc291cmNlR1BSLCBmcHIpOworICAgIGJveERvdWJsZShmcHIsIHRhcmdl
dEdQUik7CisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgCisgICAgaWYgKHRlbXBHUFIgIT0g
dGFyZ2V0R1BSKQorICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgCisgICAgdW5sb2NrKGZw
cik7Cit9CisKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQog
ewogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVn
aXN0ZXIoKTsKQEAgLTY5LDExICsxMDMsMjIgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
SlNWYWx1ZShFZGdlIAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgRGF0YUZvcm1hdCBz
cGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgICAgIG1fZ3Bycy5yZXRh
aW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKLSAgICAgICAgICAg
IGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoc3BpbGxGb3JtYXQpIHsKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOiB7CiAg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIGdwcik7CiAgICAgICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGdwcik7CiAgICAgICAgICAgICAgICAgc3BpbGxGb3JtYXQg
PSBEYXRhRm9ybWF0SlNJbnQzMjsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBj
YXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdElu
dDQ4OiB7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICAgICAgYm94SW50NDgoZ3By
LCBncHIsIHNwaWxsRm9ybWF0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgZ3ByKTsKICAgICAgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1h
dERvdWJsZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGJveCB0aGUgZG91Ymxl
LCBzaW5jZSB3ZSB3YW50IGEgSlNWYWx1ZS4KQEAgLTgxLDYgKzEyNiw3IEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgICAgICAgICAgICAgc3BpbGxG
b3JtYXQgPSBEYXRhRm9ybWF0SlNEb3VibGU7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpT
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlu
Zm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIsIHNwaWxsRm9ybWF0KTsKICAgICAgICAgfQpA
QCAtMTEzLDYgKzE1OSwxNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVk
Z2UgCiAKICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0
YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAg
IEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBsb2NrKGdwcik7CisgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSBhbGxvY2F0ZSgpOworICAgICAgICBib3hJbnQ0OChncHIsIHJlc3Vs
dEdQUiwgaW5mby5yZWdpc3RlckZvcm1hdCgpKTsKKyAgICAgICAgdW5sb2NrKGdwcik7CisgICAg
ICAgIHJldHVybiByZXN1bHRHUFI7CisgICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoK
ICAgICAgICAgLy8gTm8gcmV0YWcgcmVxdWlyZWQgb24gSlNWQUxVRTY0IQpAQCAtNzY4LDcgKzgy
NCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAg
CiAgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAg
ICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0
SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMik7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0
YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZv
cm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOwogICAgICAgICAKICAgICAgICAgbV9ncHJz
LnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwogICAgICAg
ICAKQEAgLTc4OSw2ICs4NDUsMzYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlSW50MwogICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEpTSW50MzI7CiAg
ICAgICAgICAgICByZXR1cm4gZ3ByOwogICAgICAgICB9CisgICAgICAgIGlmIChzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0SW50NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdElu
dDQ4KSB7CisgICAgICAgICAgICAvLyBHZW5lcmFsbHksIHRoaXMgY2FuIG9ubHkgaGFwcGVuIGlm
IHdlJ3ZlIGFscmVhZHkgcHJvdmVkIHRoYXQgdGhlCisgICAgICAgICAgICAvLyB2YWx1ZSBpcyBh
biBpbnQzMi4gVGhhdCdzIGJlY2F1c2UgaWYgYSB2YWx1ZSBvcmlnaW5hdGVkIGFzIGEgSlNWYWx1
ZQorICAgICAgICAgICAgLy8gdGhlbiB3ZSB3b3VsZCBzcGVjdWxhdGUgdGhhdCBpdCdzIGFuIGlu
dDMyIGJlZm9yZSByZXByZXNlbnRpbmcgaXQgYXMKKyAgICAgICAgICAgIC8vIGFuIGludDQ4LiBP
dGhlcndpc2UsIGlmIHdlIGtub3dpbmdseSBwcm9kdWNlZCBhbiBpbnQ0OCwgdGhlbiB3ZSB3b3Vs
ZAorICAgICAgICAgICAgLy8gYmUgYm94aW5nIGl0IGludG8gYSB2YWx1ZSB1c2luZyBJbnQ0OFRv
VmFsdWUuIFRoaXMgYXNzZXJ0aW9uIGlzIHZhbGlkCisgICAgICAgICAgICAvLyBvbmx5IGJlY2F1
c2UgSW50NDggaXMgc29tZXRoaW5nIHRoYXQgd2UgaW50cm9kdWNlIGF0IHByZWRpY3Rpb24gdGlt
ZS4KKyAgICAgICAgICAgIC8vIEhvd2V2ZXI6IHdlIG1heSBoYXZlIGFuIGludDMyLXByb2R1Y2lu
ZyBub2RlIHJlcGxhY2VkIGJ5IGFuCisgICAgICAgICAgICAvLyBpbnQ0OC1wcm9kdWNpbmcgbm9k
ZSBkdWUgdG8gQ1NFLiBTbyB3ZSBtdXN0IGRvIGEgY2hlY2suCisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCghKHR5cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsKKyAgICAgICAgICAgIGlmICh0eXBl
ICYgU3BlY0ludDQ4KSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgp
OworICAgICAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGdwciwgdGVtcCk7Cisg
ICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBjYW4ndCBzdXBwbHkgdmFsdWUgcHJvZmls
aW5nIGluZm9ybWF0aW9uIGhlcmUuIDotLworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soCisgICAgICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsCisgICAg
ICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
Z3ByLCB0ZW1wKSk7CisgICAgICAgICAgICAgICAgdW5sb2NrKHRlbXApOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkg
eworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYp
LCBncHIpOworICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwciwgZ3By
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwg
Z3ByKTsKKyAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAgICAg
ICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAKICAgICAgICAgLy8g
RmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgpAQCAtNzk3LDYgKzg4Myw3IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICB9CiAKICAgICBjYXNl
IERhdGFGb3JtYXRKUzogeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHR5cGUgJiBTcGVjSW50
NDgpKTsKICAgICAgICAgLy8gQ2hlY2sgdGhlIHZhbHVlIGlzIGFuIGludGVnZXIuCiAgICAgICAg
IEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dwcnMubG9jayhncHIpOwpAQCAt
ODQzLDYgKzkzMCwzNSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQz
CiAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKICAgICAgICAgcmV0dXJu
IGdwcjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4Ogor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdw
cigpOworICAgICAgICBHUFJSZWcgcmVzdWx0OworICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2Vk
KGdwcikpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBt
X2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxv
Y2soZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0cmVhbSwgZ3ByKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IGdwcjsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VS
VCghKHR5cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsKKyAgICAgICAgaWYgKGluZm8ucmVnaXN0ZXJG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChU
cnVzdGVkSW1tMzIoMTYpLCByZXN1bHQpOworICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ0OCkg
eworICAgICAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9q
aXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0LCB0ZW1wKTsKKyAgICAgICAgICAgIC8vIEN1cnJl
bnRseSwgd2UgY2FuJ3Qgc3VwcGx5IHZhbHVlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6
LS8KKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgQmFkVHlw
ZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHJlc3VsdCwgdGVtcCkpOworICAgICAgICAgICAgdW5sb2Nr
KHRlbXApOworICAgICAgICB9CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHJlc3Vs
dCwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOworICAg
ICAgICByZXR1cm4gZ3ByOworICAgIH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAg
ICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZTogewpAQCAtODg1LDYgKzEwMDEsMTY4IEBAIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ0OChFZGdlIGVkZ2Us
IERhdGFGb3JtYXQgZGVzaXJlZEZvcm1hdCkKK3sKKyAgICBBU1NFUlQoZGVzaXJlZEZvcm1hdCA9
PSBEYXRhRm9ybWF0SW50NDggfHwgZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NDgpOworICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwor
ICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CisgICAgbV9pbnRlcnByZXRl
ci5maWx0ZXIodmFsdWUsIFNwZWNNYWNoaW5lSW50KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZ2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgR2VuZXJhdGlvbklu
Zm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lz
dGVyKTsKKworICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CisgICAgY2FzZSBE
YXRhRm9ybWF0Tm9uZTogeworICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYgIXZh
bHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkgfHwgaW5mby5zcGls
bEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKKyAgICAgICAgICAgIHRlcm1pbmF0ZVNw
ZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBH
UFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKworICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQo
KSkgeworICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQoZWRn
ZS5ub2RlKCkpOworICAgICAgICAgICAgQVNTRVJUKGpzVmFsdWUuaXNNYWNoaW5lSW50KCkpOwor
ICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRl
ckNvbnN0YW50KTsKKyAgICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBqc1ZhbHVlLmFzTWFjaGlu
ZUludCgpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4
KQorICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgMTY7CisgICAgICAgICAgICBtX2pp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NCh2YWx1ZSksIGdwcik7CisgICAgICAgICAgICBp
bmZvLmZpbGxHUFIoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOworICAgICAgICAgICAg
cmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgRGF0YUZvcm1hdCBzcGls
bEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKKyAgICAgICAgCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0
YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZv
cm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICAKKyAgICAgICAgbV9ncHJz
LnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAg
ICAKKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyIHx8IHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikgeworICAgICAgICAgICAgLy8gSWYgd2Uga25vdyB0
aGlzIHdhcyBzcGlsbGVkIGFzIGFuIGludGVnZXIgd2UgY2FuIGZpbGwgd2l0aG91dCBjaGVja2lu
Zy4KKyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIo
Z3ByLCBncHIpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0
cmljdEludDQ4KSB7CisgICAgICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NDgoKm1fc3Ry
ZWFtLCBncHIpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAg
ICAgICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJu
IGdwcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdElu
dDQ4IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAg
ICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IGdwcik7CisgICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0
SW50NDgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdElu
dDQ4KQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYp
LCBncHIpOworICAgICAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KCptX3N0cmVhbSwg
Z3ByKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAg
ICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAg
ICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJuIGdw
cjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKworICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUs
IGFuZCBmYWxsIHRocm91Z2guCisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBn
cHIsIERhdGFGb3JtYXRKU0ludDMyKTsKKyAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOworICAg
IH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIC8vIENoZWNrIHRoZSB2YWx1
ZSBpcyBhbiBpbnRlZ2VyLiBOb3RlIHRoYXQgd2Ugd291bGQgKmxpa2UqIHRvIHVuYm94IGFuIElu
dDQ4CisgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgYnV0IHRoaXMgaXMgdG9vIGNvc3RseS4gV2Ug
b25seSAqcHJvdmUqIHRoYXQgdGhpcyBpcyBhbiBJbnQ0OAorICAgICAgICAvLyBldmVuIHRob3Vn
aCB3ZSBjaGVjayBpZiBpdCdzIGFuIGludDMyLgorICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdDsKKyAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tl
ZChncHIpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAg
bV9qaXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBt
X2dwcnMubG9jayhncHIpOworICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOworICAgICAgICB9Cisg
ICAgICAgIGlmICh0eXBlICYgflNwZWNJbnQzMikKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MocmVzdWx0KSwgZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFj
cm9Bc3NlbWJsZXI6OkJlbG93LCByZXN1bHQsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cikpOworICAgICAgICBpZiAocmVzdWx0ID09IGdwcikgLy8gVGhlIG5vdC1hbHJlYWR5LWxvY2tl
ZCwgc28gZmlsbCBpbi1wbGFjZSwgY2FzZS4KKyAgICAgICAgICAgIGluZm8uZmlsbEludDQ4KCpt
X3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMy
VG9QdHIocmVzdWx0LCByZXN1bHQpOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRh
Rm9ybWF0SW50NDgpCisgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYp
LCByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGNhc2UgRGF0
YUZvcm1hdEludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6IHsKKyAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHQ7CisgICAgICAgIGlm
IChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUo
KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbElu
dDQ4KCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IGdwcjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQs
IHJlc3VsdCk7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkK
KyAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0
SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIGJvb2wg
d2FzTG9ja2VkID0gbV9ncHJzLmlzTG9ja2VkKGdwcik7CisgICAgICAgIGxvY2soZ3ByKTsKKyAg
ICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAg
ICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgaWYgKHdhc0xvY2tlZCkgeworICAgICAgICAgICAg
R1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwg
cmVzdWx0KTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAgICAgZ3ByID0gcmVz
dWx0OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KCpt
X3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwg
Z3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0
YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAg
ICBib29sIHdhc0xvY2tlZCA9IG1fZ3Bycy5pc0xvY2tlZChncHIpOworICAgICAgICBsb2NrKGdw
cik7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAg
ICAgICAgIHJldHVybiBncHI7CisgICAgICAgIGlmICh3YXNMb2NrZWQpIHsKKyAgICAgICAgICAg
IEdQUlJlZyByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9qaXQubW92ZShncHIs
IHJlc3VsdCk7CisgICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGdwciA9IHJl
c3VsdDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9zdHJl
YW0sIGdwcik7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7
CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0RG91Ymxl
OgorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6
CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6
CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOiB7CisgICAgICAgIHRlcm1pbmF0ZVNwZWN1
bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAgICAg
cmV0dXJuIGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIEludmFsaWRHUFJSZWc7CisgICAgfQorfQorCiBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVEb3VibGUoRWRnZSBlZGdlKQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKQEAgLTg5Miw4ICsxMTcwLDggQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlRG91YgogI2VuZGlmCiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZv
ck5vZGUoZWRnZSk7CiAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKLSAg
ICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwgISh2YWx1ZS5tX3R5
cGUgJiB+U3BlY051bWJlcikpOwotICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVj
TnVtYmVyKTsKKyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwg
ISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpKTsKKyAgICBtX2ludGVycHJldGVyLmZp
bHRlcih2YWx1ZSwgU3BlY0Z1bGxOdW1iZXIpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYg
aW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIp
OwogCkBAIC05NDUsNiArMTIyMywyNCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVEb3ViCiAgICAgICAgICAgICB1bmxvY2soZ3ByKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsK
KyAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9ncHJz
LnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAg
ICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9zdHJlYW0sIGdwcik7Cisg
ICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAg
ICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFp
bihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7CisgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OCgqbV9zdHJlYW0sIGdwcik7Cisg
ICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwpA
QCAtOTc4LDcgKzEyNzQsNyBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVE
b3ViCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNo
NjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKTsKIAotICAgICAgICBpZiAodHlwZSAmIH5TcGVjTnVtYmVyKQor
ICAgICAgICBpZiAodHlwZSAmIH5TcGVjRnVsbE51bWJlcikKICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoanNWYWx1ZUdwciksIGVkZ2UsIG1faml0LmJy
YW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gRmlyc3QsIGlmIHdlIGdldCBoZXJl
IHdlIGhhdmUgYSBkb3VibGUgZW5jb2RlZCBhcyBhIEpTVmFsdWUKQEAgLTEwMDksNiArMTMwNSwy
OCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIG1f
Z3Bycy51bmxvY2soZ3ByKTsKICAgICAgICAgcmV0dXJuIGZwcjsKICAgICB9CisgICAgICAgIAor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxv
Y2F0ZSgpOworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJz
LmxvY2soZ3ByKTsKKyAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOworICAgICAgICBt
X2ppdC5tb3ZlKGdwciwgdGVtcCk7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0z
MigxNiksIHRlbXApOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZSh0ZW1wLCBm
cHIpOworICAgICAgICB1bmxvY2sodGVtcCk7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsK
KyAgICAgICAgcmV0dXJuIGZwcjsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1h
dFN0cmljdEludDQ4OiB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOworICAg
ICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsK
KyAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUoZ3ByLCBmcHIpOworICAgICAgICBt
X2dwcnMudW5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBmcHI7CisgICAgfQogCiAgICAgLy8g
VW5ib3ggdGhlIGRvdWJsZQogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7CkBAIC0xMTEx
LDcgKzE0MjksOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAg
ICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgog
ICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFu
OiB7CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0
ODoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogewogICAgICAgICB0ZXJtaW5hdGVT
cGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAg
ICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KQEAgLTExOTQsNyArMTUxNCw5IEBAIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICBjYXNlIERhdGFGb3JtYXRK
U0RvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0
SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6IHsKKyAgICBjYXNlIERhdGFGb3JtYXRD
ZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmlj
dEludDQ4OiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAg
fQpAQCAtMTUwMyw2ICsxODI1LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQz
MkNvbXBhcmUKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jdXJyZW50Tm9kZSwg
RGF0YUZvcm1hdEpTQm9vbGVhbik7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnQ0OENvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24gY29uZGl0aW9uKQoreworICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFu
ZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCksIG9wMSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIpOworICAgIAorICAgIG1faml0LmNvbXBhcmU2NChjb25k
aXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgIAorICAgIC8v
IElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisgICAg
bV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jv
b2xlYW4pOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJbnQ0OEJy
YW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hO
b2RlLT50YWtlbkJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2Rl
LT5ub3RUYWtlbkJsb2NrKCk7CisKKyAgICAvLyBUaGUgYnJhbmNoIGluc3RydWN0aW9uIHdpbGwg
YnJhbmNoIHRvIHRoZSB0YWtlbiBibG9jay4KKyAgICAvLyBJZiB0YWtlbiBpcyBuZXh0LCBzd2l0
Y2ggdGFrZW4gd2l0aCBub3RUYWtlbiAmIGludmVydCB0aGUgYnJhbmNoIGNvbmRpdGlvbiBzbyB3
ZSBjYW4gZmFsbCB0aHJvdWdoLgorICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAg
ICAgICBjb25kaXRpb24gPSBKSVRDb21waWxlcjo6aW52ZXJ0KGNvbmRpdGlvbik7CisgICAgICAg
IEJhc2ljQmxvY2sqIHRtcCA9IHRha2VuOworICAgICAgICB0YWtlbiA9IG5vdFRha2VuOworICAg
ICAgICBub3RUYWtlbiA9IHRtcDsKKyAgICB9CisgICAgCisgICAgU3BlY3VsYXRlV2hpY2hldmVy
SW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlV2hp
Y2hldmVySW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDEoKSwgb3AxKTsKKyAgICAK
KyAgICBicmFuY2g2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCB0YWtlbik7Cisg
ICAganVtcChub3RUYWtlbik7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3Vi
bGVDb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29u
ZGl0aW9uKQogewogICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTE5MDYsNiArMjI2MiwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OiB7CisgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVh
bFJlZ2lzdGVyKCk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKHJlc3VsdC5ncHIoKSwgdmly
dHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICAgICAgZ2VuZXJhdGlvbkluZm9G
cm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlcikuaW5pdEludDQ4KG5vZGUsIG5vZGUt
PnJlZkNvdW50KCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMTk4MSw2ICsyMzQ3
LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVk
SW50NDg6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KHZhbHVlLmdwcigpLCBK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLT5sb2NhbCgpKSk7CisgICAgICAgICAgICBub1Jl
c3VsdChub2RlKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZh
bHVlU291cmNlKEludDQ4SW5KU1N0YWNrKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6IHsKICAgICAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwpAQCAtMjEwNCw2ICsyNDc4LDIyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZTogeworICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFuZCk7CisgICAgICAgIG1faml0Lm1vdmUo
b3BlcmFuZC5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNh
c2UgSW50NDhUb0RvdWJsZTogeworICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJh
bmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIG9wZXJhbmQpOworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9wZXJhbmQuZnByKCksIHJl
c3VsdC5mcHIoKSk7CisgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAg
Y2FzZSBBcml0aEFkZDoKICAgICAgICAgY29tcGlsZUFkZChub2RlKTsKQEAgLTI4ODksNyArMzI3
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigpOwogCiAgICAgICAgICAgICBERkdfVFlQ
RV9DSEVDSygKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwg
U3BlY1JlYWxOdW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hp
bGQyKCksIFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hE
b3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlRlBS
LCB2YWx1ZUZQUikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1Ymxp
Y0xlbmd0aCgpKSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0zMTA1LDcgKzM0OTUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBv
cDEudXNlKCk7CiAgICAgICAgIAotICAgICAgICBpZiAoIShtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdHlwZSAmIH4oU3BlY051bWJlciB8IFNwZWNCb29sZWFuKSkpCisgICAgICAg
IGlmICghKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjRnVs
bE51bWJlciB8IFNwZWNCb29sZWFuKSkpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwg
cmVzdWx0R1BSKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBhbHJlYWR5UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CkBAIC0zMjAyLDcg
KzM1OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCB1c2Up
OwogICAgICAgICAgICAgICAgICAgICBGUFJSZWcgb3BGUFIgPSBvcGVyYW5kLmZwcigpOwogICAg
ICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaERvdWJsZSgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgb3BGUFIsIG9w
RlBSKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKG9wRlBSLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoZG91YmxlKSAqIG9wZXJhbmRJ
ZHgpKTsKQEAgLTMyNjcsNyArMzY1Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBGUFJSZWcgb3BGUFIgPSBvcGVyYW5kLmZwcigp
OwogICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAg
ICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MoKSwgdXNlLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MoKSwgdXNlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaERvdWJsZSgKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBvcEZQUiwgb3BGUFIpKTsKICAgICAgICAgICAg
ICAgICBtX2ppdC5ib3hEb3VibGUob3BGUFIsIHNjcmF0Y2hHUFIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1
NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDkgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxh
biBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZTMyUGF5
bG9hZDsKICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdENlbGwg
fHwgcmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0b3JhZ2UpCiAgICAgICAgICAgICBzcGls
bEFjdGlvbiA9IFN0b3JlUHRyOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAocmVn
aXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHJlZ2lzdGVyRm9ybWF0ID09IERhdGFG
b3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZTY0Owor
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0
YUZvcm1hdEpTKTsKICAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmU2NDsKICAgICAgICAg
fQpAQCAtMzg2LDYgKzM4OCw0MCBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZl
SklUOjpzCiAgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RvcmFn
ZSkgewogICAgICAgICBBU1NFUlQoaW5mby5ncHIoKSA9PSBzb3VyY2UpOwogICAgICAgICBmaWxs
QWN0aW9uID0gTG9hZFB0cjsKKyAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFG
b3JtYXRJbnQ0OCkgeworICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkKKyAgICAgICAg
ICAgIGZpbGxBY3Rpb24gPSBTZXRJbnQ0OENvbnN0YW50OworICAgICAgICBlbHNlIGlmIChpc0pT
SW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZv
cm1hdEpTKQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRDb252ZXJ0VG9J
bnQ0ODsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJ
bnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2UgaWYg
KGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgICAg
ICBmaWxsQWN0aW9uID0gTG9hZDY0U2hpZnRMZWZ0MTY7CisgICAgICAgIGVsc2UgaWYgKGluZm8u
c3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24g
PSBMb2FkNjQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhh
cHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgorICAg
ICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBv
ciBhIGRvdWJsZSAodG8tZG91YmxlCisgICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZl
IGEgc2VwYXJhdGUgbm9kZSkuCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9y
bWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpCisgICAg
ICAgICAgICBmaWxsQWN0aW9uID0gU2V0U3RyaWN0SW50NDhDb25zdGFudDsKKyAgICAgICAgZWxz
ZSBpZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgp
ID09IERhdGFGb3JtYXRKUykKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2Fk
U2lnbkV4dGVuZDsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFG
b3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlmdFJpZ2h0MTY7
CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0
SW50NDgpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIGlm
IChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCisgICAgICAgICAgICBmaWxs
QWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNob3VsZCBu
ZXZlciBoYXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFuIGludDMyIHdpbGwgbmV2
ZXIKKyAgICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAoaW1tZWRpYXRlIHNwZWMg
ZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRvdWJsZQorICAgICAgICAgICAgLy8gY29udmVyc2lvbnMg
aW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChyZWdp
c3RlckZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTM5Myw3
ICs0MjksNiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAg
ICAgIGlmIChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICBpZiAodmFsdWVPZkpT
Q29uc3RhbnQobm9kZSkuaXNDZWxsKCkpCiAgICAgICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNl
dFRydXN0ZWRKU0NvbnN0YW50OwotICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZp
bGxBY3Rpb24gPSBTZXRKU0NvbnN0YW50OwogICAgICAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50MzIpIHsKICAgICAgICAgICAgIEFTU0VSVChyZWdpc3Rl
ckZvcm1hdCA9PSBEYXRhRm9ybWF0SlNJbnQzMik7CkBAIC01MTIsNiArNTQ3LDEyIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICBjYXNlIFNldEludDMyQ29u
c3RhbnQ6CiAgICAgICAgIG1faml0Lm1vdmUoSW1tMzIodmFsdWVPZkludDMyQ29uc3RhbnQocGxh
bi5ub2RlKCkpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2V0SW50
NDhDb25zdGFudDoKKyAgICAgICAgbV9qaXQubW92ZShJbW02NCh2YWx1ZU9mSlNDb25zdGFudChw
bGFuLm5vZGUoKSkuYXNNYWNoaW5lSW50KCkgPDwgMTYpLCBwbGFuLmdwcigpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTZXRTdHJpY3RJbnQ0OENvbnN0YW50OgorICAgICAgICBtX2ppdC5t
b3ZlKEltbTY0KHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS5hc01hY2hpbmVJbnQoKSks
IHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFNldEJvb2xlYW5Db25zdGFu
dDoKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIodmFsdWVPZkJvb2xlYW5Db25zdGFu
dChwbGFuLm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CkBAIC01MzMsNiAr
NTc0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0
dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTG9hZDMyUGF5bG9hZENvbnZlcnRUb0ludDQ4OgorICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwg
cGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHBsYW4uZ3ByKCks
IHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBw
bGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkMzJQYXlsb2FkU2lnbkV4
dGVuZDoKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4u
bm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5z
aWduRXh0ZW5kMzJUb1B0cihwbGFuLmdwcigpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBMb2FkRG91YmxlQm94RG91YmxlOgogICAgICAgICBtX2ppdC5sb2FkNjQoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxh
bi5ncHIoKSk7CiAgICAgICAgIG1faml0LnN1YjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3RlciwgcGxhbi5ncHIoKSk7CkBAIC01NzQsNiArNjI0LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICBjYXNlIExvYWQ2NDoKICAgICAgICAgbV9qaXQu
bG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0
ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIExvYWQ2NFNoaWZ0
UmlnaHQxNjoKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBs
YW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2pp
dC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBMb2FkNjRTaGlmdExlZnQxNjoKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4u
Z3ByKCkpOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBwbGFuLmdw
cigpKTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIExvYWREb3VibGU6CiAgICAg
ICAgIG1faml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCkt
PnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5mcHIoKSk7CkBAIC0xNDE2LDYgKzE0NzQsMTAgQEAg
Ym9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbgogCiAgICAgICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBI
b2xlSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUlu
dFVzZSkpCisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ0OEJyYW5jaChub2RlLCBicmFu
Y2hOb2RlLCBjb25kaXRpb24pOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQogICAgICAgICAgICAgY29t
cGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGRvdWJsZUNvbmRpdGlv
bik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ29tcGFyZUVxKSB7CkBAIC0xNTA3
LDYgKzE1NjksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5saW5lU3RhcnQoCiAg
ICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJj
ZSA9IFZhbHVlU291cmNlKEludDMySW5KU1N0YWNrKTsKICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICAgICAgICAgIHZhbHVlU291
cmNlID0gVmFsdWVTb3VyY2UoSW50NDhJbkpTU3RhY2spOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAgICAgICAgICAgICAgICB2YWx1ZVNv
dXJjZSA9IFZhbHVlU291cmNlKENlbGxJbkpTU3RhY2spOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTg3Myw3ICsxOTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJs
ZVB1dEJ5VgogICAgIEZQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmZwcigpOwogICAgIAogICAgIERG
R19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncygpLCBjaGlsZDMsIFNwZWNSZWFsTnVt
YmVyLAorICAgICAgICBKU1ZhbHVlUmVncygpLCBjaGlsZDMsIFNwZWNGdWxsUmVhbE51bWJlciwK
ICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlUmVnLCB2YWx1ZVJlZykpOwogICAgIApA
QCAtMjE0OSw2ICsyMjE0LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRv
SW50MzIKICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ0
OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKKyAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
bV9qaXQuemVyb0V4dGVuZDMyVG9QdHIob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBpbnQz
MlJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIERhdGFGb3JtYXRJbnQzMik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKICAgICBjYXNlIE51bWJl
clVzZToKICAgICBjYXNlIE5vdENlbGxVc2U6IHsKQEAgLTIxODcsNyArMjI2NCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKIAogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsKICAgICAgICAgICAgICAgICBE
RkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9k
ZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KGdwciksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewpAQCAtMjI0Myw3ICsyMzIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsKICAgICAgICAgICAgICAgICAgICAgREZHX1RZ
UEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdHUFIsIHBh
eWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBT
cGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IHRhZ0dQUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6TG93ZXN0VGFnKSkpOwpAQCAtMjM4OSwxNSArMjQ2NiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW50MzJUb0RvdWJsCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2Vy
ID0gbV9qaXQuYnJhbmNoNjQoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICAKLSAgICBpZiAo
bmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIpKSB7CisgICAgaWYgKG5l
ZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlcikpIHsKICAgICAgICAg
aWYgKG5vZGUtPmZsYWdzKCkgJiBOb2RlRXhpdHNGb3J3YXJkKSB7CiAgICAgICAgICAgICBmb3J3
YXJkVHlwZUNoZWNrKAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUt
PmNoaWxkMSgpLCBTcGVjTnVtYmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQ
UiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2pp
dC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKSwKICAgICAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5OjppbkdQ
UihvcDFHUFIsIERhdGFGb3JtYXRKUykpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
YmFja3dhcmRUeXBlQ2hlY2soCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwg
bm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
b3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgb3AxR1BSLCBHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI0MjAsMTUg
KzI0OTcsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyVG9Eb3VibAogICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Oklu
dDMyVGFnKSk7CiAgICAgCi0gICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBT
cGVjTnVtYmVyKSkgeworICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3Bl
Y0Z1bGxOdW1iZXIpKSB7CiAgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUV4aXRzRm9y
d2FyZCkgewogICAgICAgICAgICAgZm9yd2FyZFR5cGVDaGVjaygKLSAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3Bl
Y051bWJlciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxv
YWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCiAgICAgICAgICAgICAgICAg
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxVGFnR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSksCiAgICAgICAgICAgICAgICAgVmFsdWVS
ZWNvdmVyeTo6aW5QYWlyKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUikpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgYmFja3dhcmRUeXBlQ2hlY2soCi0gICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNO
dW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2Fk
R1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1
NDksNiArMjYyNiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbklu
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1
bGF0ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihyZXN1
bHRSZWcsIHJlc3VsdFJlZyk7CisgICAgICAgIHN0cmljdEludDQ4UmVzdWx0KHJlc3VsdFJlZywg
bm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAgRlBSVGVtcG9yYXJ5IGZy
ZXN1bHQodGhpcyk7CiAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUocmVzdWx0UmVnLCBm
cmVzdWx0LmZwcigpKTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBwb3NpdGl2ZSA9IG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIHJlc3VsdFJlZywgVHJ1
c3RlZEltbTMyKDApKTsKQEAgLTI2MDIsNiArMjY4NSwyOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlWYWxGb3JJCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAgICAgU3Bl
Y3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2UpOworICAgICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgc2Ny
YXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlT3Au
Z3ByKCksIHNjcmF0Y2hSZWcpOworICAgICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewor
ICAgICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50U2l6ZSh0eXBlKSA9PSAxKTsKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpbkJvdW5kcyA9IG1faml0LmJyYW5jaDY0KAor
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBzY3JhdGNo
UmVnLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTY0KDB4ZmYpKTsKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29CaWcgPSBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuLCBzY3JhdGNoUmVnLCBKSVRDb21w
aWxlcjo6VHJ1c3RlZEltbTY0KDB4ZmYpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW0zMigwKSwgc2NyYXRjaFJlZyk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgY2xhbXBlZCA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICB0b29CaWcu
bGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRy
dXN0ZWRJbW0zMigyNTUpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgICAgICAgICBjbGFtcGVkLmxp
bmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICBpbkJvdW5kcy5saW5rKCZtX2ppdCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB2YWx1ZS5hZG9wdChzY3JhdGNoKTsKKyAgICAgICAgICAg
IHZhbHVlR1BSID0gc2NyYXRjaFJlZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgICAgIGlmIChp
c0NsYW1wZWQodHlwZSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudFNpemUodHlw
ZSkgPT0gMSk7CkBAIC0yODcwLDcgKzI5NzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQWRkKE5vZGUqIG5vCiAgICAgICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5v
ZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisg
ICAgICAgIAogICAgICAgICBpZiAoaXNOdW1iZXJDb25zdGFudChub2RlLT5jaGlsZDIoKS5ub2Rl
KCkpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgIGludDMyX3QgaW1tMiA9IHZhbHVlT2ZJbnQzMkNvbnN0
YW50KG5vZGUtPmNoaWxkMigpLm5vZGUoKSk7CkBAIC0yOTE1LDYgKzMwMjEsMzMgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFkZChOb2RlKiBubwogICAgICAgICBpbnQzMlJlc3VsdChn
cHJSZXN1bHQsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAgICAKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAvLyBXaWxs
IHdlIG5lZWQgYW4gb3ZlcmZsb3cgY2hlY2s/IElmIHdlIGNhbiBwcm92ZSB0aGF0IG5laXRoZXIg
aW5wdXQgY2FuIGJlCisgICAgICAgIC8vIEludDQ4IHRoZW4gdGhlIG92ZXJmbG93IGNoZWNrIHdp
bGwgbm90IGJlIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkKKyAgICAgICAgICAgICYmICFtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0
aGlzLCBub2RlLT5jaGlsZDIoKSwgb3AxKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIG9wMSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwg
cmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LmFkZDY0KG9wMi5ncHIoKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgb3Ax
LmZvcm1hdCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisgICAg
ICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwK
KyAgICAgICAgICAgIG1faml0LmJyYW5jaEFkZDY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywg
b3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0Lmdw
cigpLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxV
RTY0KQogICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTMwNjAsNiArMzE5MywzMyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9kCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBNYWNoaW5l
SW50VXNlOiB7CisgICAgICAgIC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxvdyBjaGVjaz8gSWYg
d2UgY2FuIHByb3ZlIHRoYXQgbmVpdGhlciBpbnB1dCBjYW4gYmUKKyAgICAgICAgLy8gSW50NDgg
dGhlbiB0aGUgb3ZlcmZsb3cgY2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5LgorICAgICAgICBp
ZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4
KQorICAgICAgICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuY291bGRC
ZVR5cGUoU3BlY0ludDQ4KSkgeworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVX
aGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBvcDEpOworICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgbV9q
aXQuc3ViNjQob3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgaW50NDhSZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0KCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9w
Mih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3Vs
dC5ncHIoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92
ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3ViNjQo
TWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOworICAg
ICAgICBpbnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKICAgICBjYXNlIE51bWJlclVzZTogewog
ICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKQEAgLTMwODgsNiArMzI0OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0
aE5lZ2F0ZSgKIAogICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsK
IAorICAgICAgICAvLyBOb3RlOiB0aGVyZSBpcyBubyBub3Rpb24gb2YgYmVpbmcgbm90IHVzZWQg
YXMgYSBudW1iZXIsIGJ1dCBzb21lb25lCisgICAgICAgIC8vIGNhcmluZyBhYm91dCBuZWdhdGl2
ZSB6ZXJvLgorICAgICAgICAKICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2Vy
KG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgbV9qaXQubmVnMzIocmVzdWx0
LmdwcigpKTsKICAgICAgICAgZWxzZSB7CkBAIC0zMDk5LDYgKzMyNjIsNDIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAogICAgICAgICBpbnQzMlJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgaWYgKCFtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAgICAg
ICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAg
IEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOworICAgICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQ
Uik7CisgICAgICAgICAgICBtX2ppdC5uZWc2NChyZXN1bHRHUFIpOworICAgICAgICAgICAgaWYg
KCFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkg
eworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgICAg
IE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgb3AxLmZv
cm1hdCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBv
cDEuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAg
ICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAg
ICAgICAgIG1faml0LmJyYW5jaE5lZzY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgcmVzdWx0
R1BSKSk7CisgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+
YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAg
ICAgICAgICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0R1BSKSk7
CisgICAgICAgIH0KKyAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICAKICAg
ICBjYXNlIE51bWJlclVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0zMTY0LDYgKzMzNjMsNjIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFyaXRoTXVsKE5vZAogICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQu
Z3ByKCksIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAKKyNpZiBVU0UoSlNW
QUxVRTY0KSAgIAorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAvLyBUaGlzIGlz
IHN1cGVyIGNsZXZlci4gV2Ugd2FudCB0byBkbyBhbiBpbnQ0OCBtdWx0aXBsaWNhdGlvbiBhbmQg
Y2hlY2sgdGhlCisgICAgICAgIC8vIGludDQ4IG92ZXJmbG93IGJpdC4gVGhlcmUgaXMgbm8gZGly
ZWN0IGhhcmR3YXJlIHN1cHBvcnQgZm9yIHRoaXMsIGJ1dCB3ZSBkbworICAgICAgICAvLyBoYXZl
IHRoZSBhYmlsaXR5IHRvIGRvIGFuIGludDY0IG11bHRpcGxpY2F0aW9uIGFuZCBjaGVjayB0aGUg
aW50NjQgb3ZlcmZsb3cKKyAgICAgICAgLy8gYml0LiBXZSBsZXZlcmFnZSB0aGF0LiBDb25zaWRl
ciB0aGF0IGEsIGIgYXJlIGludDQ4IG51bWJlcnMgaW5zaWRlIGludDY0CisgICAgICAgIC8vIHJl
Z2lzdGVycywgd2l0aCB0aGUgaGlnaCAxNiBiaXRzIGJlaW5nIHNpZ24tZXh0ZW5kZWQuIFdlIGNh
biBkbzoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIChhICogKGIgPDwgMTYpKQorICAgICAg
ICAvLworICAgICAgICAvLyBUaGlzIHdpbGwgZ2l2ZSB1cyBhIGxlZnQtc2hpZnRlZCBpbnQ0OCAo
dmFsdWUgaXMgaW4gaGlnaCA0OCBiaXRzLCBsb3cgMTYKKyAgICAgICAgLy8gYml0cyBhcmUgemVy
bykgcGx1cyB0aGUgaW50NDggb3ZlcmZsb3cgYml0LiBJLmUuIHdoZXRoZXIgdGhpcyA2NC1iaXQK
KyAgICAgICAgLy8gbXVsdGlwbGljYXRpb24gb3ZlcmZsb3dzIGlzIGlkZW50aWNhbCB0byB3aGV0
aGVyIHRoZSAnYSAqIGInIDQ4LWJpdAorICAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBvdmVyZmxv
d3MuCisgICAgICAgIC8vCisgICAgICAgIC8vIEluIG91ciBub21lbmNsYXR1cmUsIHRoaXMgaXM6
CisgICAgICAgIC8vCisgICAgICAgIC8vICAgICBzdHJpY3RJbnQ0OChhKSAqIGludDQ4KGIpID0+
IGludDQ4CisgICAgICAgIC8vCisgICAgICAgIC8vIFRoYXQgaXMgInN0cmljdEludDQ4IiBtZWFu
cyB1bnNoaWZ0ZWQgYW5kICJpbnQ0OCIgbWVhbnMgbGVmdC1zaGlmdGVkIGJ5IDE2CisgICAgICAg
IC8vIGJpdHMuCisgICAgICAgIC8vCisgICAgICAgIC8vIFdlIGRvbid0IGNhcmUgd2hpY2ggb2Yg
b3AxIG9yIG9wMiBzZXJ2ZXMgYXMgdGhlIGxlZnQtc2hpZnRlZCBvcGVyYW5kLCBzbworICAgICAg
ICAvLyB3ZSBqdXN0IGRvIHdoYXRldmVyIGlzIG1vcmUgY29udmVuaWVudCBmb3Igb3AxIGFuZCBo
YXZlIG9wMiBkbyB0aGUKKyAgICAgICAgLy8gb3Bwb3NpdGUuIFRoaXMgZW5zdXJlcyB0aGF0IHdl
IGRvIGF0IG1vc3Qgb25lIHNoaWZ0LgorCisgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4
T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVXaGlj
aGV2ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBPcHBvc2l0ZVNoaWZ0
LCBvcDEpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAKKyAg
ICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIG9wMkdQUiA9
IG9wMi5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAg
ICAgICAgCisgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3Mo
KSwgMCwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaE11bDY0KE1hY3JvQXNzZW1ibGVyOjpPdmVy
Zmxvdywgb3AyR1BSLCByZXN1bHRHUFIpKTsKKyAgICAgICAgCisgICAgICAgIGlmICghYnl0ZWNv
ZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJlc3VsdE5vblplcm8gPSBtX2ppdC5icmFuY2hU
ZXN0NjQoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHJlc3VsdEdQ
Uik7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0
aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2
NChNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMUdQUiwgVHJ1c3RlZEltbTY0KDApKSk7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVy
bywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMkdQUiwgVHJ1c3RlZEltbTY0KDApKSk7CisgICAgICAg
ICAgICByZXN1bHROb25aZXJvLmxpbmsoJm1faml0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgaW50NDhSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICAKICAgICBjYXNlIE51bWJlclVz
ZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CkBAIC0zNTg3LDcgKzM4NDIsMTQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFy
ZShOb2RlKiBub2RlLAogICAgICAgICBjb21waWxlSW50MzJDb21wYXJlKG5vZGUsIGNvbmRpdGlv
bik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KKyAgICAKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAg
ICAgICAgY29tcGlsZUludDQ4Q29tcGFyZShub2RlLCBjb25kaXRpb24pOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgCiAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVEb3Vi
bGVDb21wYXJlKG5vZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTM3MzcsNiArMzk5OSwyMyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0
RXEoTm9kCiAgICAgICAgIGNvbXBpbGVJbnQzMkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICAgCisjaWYgVVNFKEpT
VkFMVUU2NCkgICAKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgdW5zaWduZWQg
YnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYg
KGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJh
bmNoTm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBj
b21waWxlUGVlcEhvbGVJbnQ0OEJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IHVzZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5j
aEluZGV4SW5CbG9jazsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUludDQ4
Q29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAogICAgIGNhc2Ug
TnVtYmVyVXNlOiB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVj
dFBlZXBIb2xlQnJhbmNoKCk7CkBAIC00NDkyLDkgKzQ3NzEsMTcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlSW50MzIoRWRnZQogICAgIChTcGVjdWxhdGVJbnQzMk9wZXJhbmQodGhp
cywgZWRnZSkpLmdwcigpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVNYWNo
aW5lSW50KEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNN
YWNoaW5lSW50KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIChTcGVjdWxhdGVXaGljaGV2
ZXJJbnQ0OE9wZXJhbmQodGhpcywgZWRnZSkpLmdwcigpOworfQorCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGVOdW1iZXIoRWRnZSBlZGdlKQogewotICAgIGlmICghbmVlZHNUeXBlQ2hl
Y2soZWRnZSwgU3BlY051bWJlcikpCisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVj
RnVsbE51bWJlcikpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAoU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCh0aGlzLCBlZGdlKSkuZnByKCk7CkBAIC00NTAyLDEzICs0Nzg5LDEzIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcihFZGcKIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlUmVhbE51bWJlcihFZGdlIGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVD
aGVjayhlZGdlLCBTcGVjUmVhbE51bWJlcikpCisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdl
LCBTcGVjRnVsbFJlYWxOdW1iZXIpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgU3BlY3Vs
YXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwogICAgIEZQUlJlZyBmcHIgPSBv
cGVyYW5kLmZwcigpOwogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncygp
LCBlZGdlLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3Bl
Y0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoCiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgZnByLCBmcHIpKTsK
IH0KQEAgLTQ3NzAsNyArNTA1Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShO
b2RlKiwgRWQKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgQVNT
RVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTnVtYmVyKSk7CisgICAgICAgIEFTU0VSVCgh
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxOdW1iZXIpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRn
ZSwgU3BlY0NlbGwpKTsKQEAgLTQ3ODEsNiArNTA2OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZShOb2RlKiwgRWQKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBzcGVjdWxh
dGVJbnQzMihlZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNYWNoaW5lSW50VXNlOgor
ICAgICAgICBzcGVjdWxhdGVNYWNoaW5lSW50KGVkZ2UpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVJlYWxOdW1iZXIoZWRnZSk7CiAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOSArMTU5LDcg
QEAgcHVibGljOgogICAgIC8vIGFuZCBpdHMgbWFjaGluZSByZWdpc3RlcnMgbWF5IGJlIHJldXNl
ZC4KICAgICBib29sIGNhblJldXNlKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAg
ICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lz
dGVyKHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBpbmZvLmNhblJldXNlKCk7Cisg
ICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5jYW5SZXVzZSgpOwogICAgIH0KICAg
ICBib29sIGNhblJldXNlKEVkZ2Ugbm9kZVVzZSkKICAgICB7CkBAIC0yMzcsMTUgKzIzNSwxMSBA
QCBwdWJsaWM6CiAgICAgLy8gYXZvaWQgc3BpbGxpbmcgdmFsdWVzIHdlIHdpbGwgbmVlZCBpbW1l
ZGlhdGVseSkuCiAgICAgYm9vbCBpc0ZpbGxlZChOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3Rlcigp
OwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1
YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gaW5mby5yZWdpc3Rl
ckZvcm1hdCgpICE9IERhdGFGb3JtYXROb25lOworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbklu
Zm8obm9kZSkucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9uZTsKICAgICB9CiAgICAg
Ym9vbCBpc0ZpbGxlZERvdWJsZShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAg
ICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rl
cih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gaW5mby5yZWdpc3RlckZvcm1hdCgp
ID09IERhdGFGb3JtYXREb3VibGU7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2Rl
KS5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGU7CiAgICAgfQogCiAgICAgLy8g
Q2FsbGVkIG9uIGFuIG9wZXJhbmQgb25jZSBpdCBoYXMgYmVlbiBjb25zdW1lZCBieSBhIHBhcmVu
dCBub2RlLgpAQCAtMjUzLDggKzI0Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICgh
bm9kZS0+aGFzUmVzdWx0KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAg
ICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0
ZXIodmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5l
cmF0aW9uSW5mbyhub2RlKTsKIAogICAgICAgICAvLyB1c2UoKSByZXR1cm5zIHRydWUgd2hlbiB0
aGUgdmFsdWUgYmVjb21lcyBkZWFkLCBhbmQgYW55CiAgICAgICAgIC8vIGFzc29jaWF0ZWQgcmVz
b3VyY2VzIG1heSBiZSBmcmVlZC4KQEAgLTMzMyw2ICszMjYsNyBAQCBwdWJsaWM6CiAgICAgLy8g
bWFjaGluZSByZWdpc3RlcnMsIGltcGxpY2l0bHkgZ2VuZXJhdGluZyBzcGVjdWxhdGlvbiBjaGVj
a3MgYXMgbmVlZGVkLgogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50MzIoRWRnZSwgRGF0YUZv
cm1hdCYgcmV0dXJuRm9ybWF0KTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludDMyU3RyaWN0
KEVkZ2UpOworICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50NDgoRWRnZSwgRGF0YUZvcm1hdCBk
ZXNpcmVkRm9ybWF0KTsKICAgICBGUFJSZWcgZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlKTsKICAg
ICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxh
dGVCb29sZWFuKEVkZ2UpOwpAQCAtNDY4LDYgKzQ2Miw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBib3hEb3VibGUoZnByLCBhbGxvY2F0ZSgpKTsKICAgICB9CisgICAgCisgICAg
dm9pZCBib3hJbnQ0OChHUFJSZWcgc291cmNlR1BSLCBHUFJSZWcgdGFyZ2V0R1BSLCBEYXRhRm9y
bWF0IGZvcm1hdCk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIHZvaWQgYm94RG91Ymxl
KEZQUlJlZyBmcHIsIEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2FkR1BSKQogICAgIHsKQEAg
LTU1OSwxMSArNTU1LDExIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBi
b29sIGlzS25vd25JbnRlZ2VyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2Rl
KG5vZGUpLm1fdHlwZSAmIH5TcGVjSW50MzIpOyB9Ci0gICAgYm9vbCBpc0tub3duQ2VsbChOb2Rl
KiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiB+U3BlY0Nl
bGwpOyB9CisgICAgYm9vbCBpc0tub3duSW50ZWdlcihOb2RlKiBub2RlKSB7IHJldHVybiBtX3N0
YXRlLmZvck5vZGUobm9kZSkuaXNUeXBlKFNwZWNJbnQzMik7IH0KKyAgICBib29sIGlzS25vd25D
ZWxsKE5vZGUqIG5vZGUpIHsgcmV0dXJuIG1fc3RhdGUuZm9yTm9kZShub2RlKS5pc1R5cGUoU3Bl
Y0NlbGwpOyB9CiAgICAgCiAgICAgYm9vbCBpc0tub3duTm90SW50ZWdlcihOb2RlKiBub2RlKSB7
IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBTcGVjSW50MzIpOyB9Ci0g
ICAgYm9vbCBpc0tub3duTm90TnVtYmVyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5m
b3JOb2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNOdW1iZXIpOyB9CisgICAgYm9vbCBpc0tub3duTm90
TnVtYmVyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlw
ZSAmIFNwZWNGdWxsTnVtYmVyKTsgfQogICAgIGJvb2wgaXNLbm93bk5vdENlbGwoTm9kZSogbm9k
ZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0NlbGwpOyB9
CiAgICAgCiAgICAgLy8gQ2hlY2tzL2FjY2Vzc29ycyBmb3IgY29uc3RhbnQgdmFsdWVzLgpAQCAt
ODE2LDYgKzgxMiwyNSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbnQzMlJlc3VsdChyZWcs
IG5vZGUsIERhdGFGb3JtYXRJbnQzMiwgbW9kZSk7CiAgICAgfQorICAgIHZvaWQgaW50NDhSZXN1
bHQoR1BSUmVnIHJlZywgTm9kZSogbm9kZSwgRGF0YUZvcm1hdCBmb3JtYXQsIFVzZUNoaWxkcmVu
TW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQorICAgIHsKKyAgICAgICAgaWYgKG1vZGUgPT0g
Q2FsbFVzZUNoaWxkcmVuKQorICAgICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisKKyAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3Rl
cigpOworICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZp
cnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworCisgICAgICAgIG1fZ3Bycy5yZXRhaW4o
cmVnLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAgICAgIGluZm8uaW5pdElu
dDQ4KG5vZGUsIG5vZGUtPnJlZkNvdW50KCksIHJlZywgZm9ybWF0KTsKKyAgICB9CisgICAgdm9p
ZCBpbnQ0OFJlc3VsdChHUFJSZWcgcmVnLCBOb2RlKiBub2RlLCBVc2VDaGlsZHJlbk1vZGUgbW9k
ZSA9IENhbGxVc2VDaGlsZHJlbikKKyAgICB7CisgICAgICAgIGludDQ4UmVzdWx0KHJlZywgbm9k
ZSwgRGF0YUZvcm1hdEludDQ4LCBtb2RlKTsKKyAgICB9CisgICAgdm9pZCBzdHJpY3RJbnQ0OFJl
c3VsdChHUFJSZWcgcmVnLCBOb2RlKiBub2RlLCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9IENhbGxV
c2VDaGlsZHJlbikKKyAgICB7CisgICAgICAgIGludDQ4UmVzdWx0KHJlZywgbm9kZSwgRGF0YUZv
cm1hdFN0cmljdEludDQ4LCBtb2RlKTsKKyAgICB9CiAgICAgdm9pZCBub1Jlc3VsdChOb2RlKiBu
b2RlLCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9IENhbGxVc2VDaGlsZHJlbikKICAgICB7CiAgICAg
ICAgIGlmIChtb2RlID09IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSkKQEAgLTkwMCw3ICs5
MTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0Q29uc3RhbnRJbmZvKE5vZGUqIG5vZGUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50KG5vZGUpIHx8IGlzTnVtYmVyQ29u
c3RhbnQobm9kZSkgfHwgaXNKU0NvbnN0YW50KG5vZGUpKTsKLSAgICAgICAgZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpKS5pbml0Q29uc3Rh
bnQobm9kZSwgbm9kZS0+cmVmQ291bnQoKSk7CisgICAgICAgIGdlbmVyYXRpb25JbmZvKG5vZGUp
LmluaXRDb25zdGFudChub2RlLCBub2RlLT5yZWZDb3VudCgpKTsKICAgICB9CiAgICAgCiAgICAg
Ly8gVGhlc2UgbWV0aG9kcyBhZGQgY2FsbHMgdG8gQysrIGhlbHBlciBmdW5jdGlvbnMuCkBAIC0x
ODg5LDE1ICsxOTA0LDIyIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChu
b2RlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2Vu
ZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmly
dHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBpbmZvLmlzSlNJbnQzMigp
OworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8obm9kZSkuaXNKU0ludDMyKCk7CisgICAg
fQorICAgIAorICAgIGJvb2wgYmV0dGVyVXNlU3RyaWN0SW50NDgoTm9kZSogbm9kZSkKKyAgICB7
CisgICAgICAgIHJldHVybiAhZ2VuZXJhdGlvbkluZm8obm9kZSkuaXNJbnQ0OCgpOworICAgIH0K
KyAgICBib29sIGJldHRlclVzZVN0cmljdEludDQ4KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChlZGdlLm5vZGUoKSk7CiAgICAgfQogICAgIAog
ICAgIGJvb2wgY29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24sIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfREZHT3BlcmF0aW9uX0VKSik7
CiAgICAgYm9vbCBjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpS
ZWxhdGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0RG
R09wZXJhdGlvbl9FSkopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2goTm9k
ZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsK
KyAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUludDQ4QnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hO
b2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxl
UGVlcEhvbGVCb29sZWFuQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxl
cjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVC
cmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRp
b24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSosIE5vZGUq
IGJyYW5jaE5vZGUpOwpAQCAtMTk0NSw2ICsxOTY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29t
cGlsZU5ld1R5cGVkQXJyYXkoTm9kZSopOwogICAgIAogICAgIHZvaWQgY29tcGlsZUludDMyQ29t
cGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworICAgIHZv
aWQgY29tcGlsZUludDQ4Q29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxD
b25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZUJvb2xlYW5Db21wYXJlKE5vZGUqLCBNYWNyb0Fz
c2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlRG91YmxlQ29t
cGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbik7CiAgICAgCkBAIC0y
MTE4LDYgKzIxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3J3YXJkVHlwZUNoZWNrKEpTVmFs
dWVTb3VyY2UsIEVkZ2UsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCwgTWFjcm9B
c3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCwgY29uc3QgVmFsdWVSZWNvdmVyeSYpOwogCiAgICAg
dm9pZCBzcGVjdWxhdGVJbnQzMihFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZU1hY2hpbmVJbnQo
RWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVOdW1iZXIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxh
dGVSZWFsTnVtYmVyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlQm9vbGVhbihFZGdlKTsKQEAg
LTIxOTUsNiArMjIxOSwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9nZW5l
cmF0aW9uSW5mb1tvcGVyYW5kVG9Mb2NhbCh2aXJ0dWFsUmVnaXN0ZXIpXTsKICAgICB9CisgICAg
CisgICAgR2VuZXJhdGlvbkluZm8mIGdlbmVyYXRpb25JbmZvKE5vZGUqIG5vZGUpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKG5vZGUtPnZp
cnR1YWxSZWdpc3RlcigpKTsKKyAgICB9CisgICAgCisgICAgR2VuZXJhdGlvbkluZm8mIGdlbmVy
YXRpb25JbmZvKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5m
byhlZGdlLm5vZGUoKSk7CisgICAgfQogCiAgICAgLy8gVGhlIEpJVCwgd2hpbGUgYWxzbyBwcm92
aWRlcyBNYWNyb0Fzc2VtYmxlciBmdW5jdGlvbmFsaXR5LgogICAgIEpJVENvbXBpbGVyJiBtX2pp
dDsKQEAgLTI2NzYsNiArMjcxMCwxNzkgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPcklu
dmFsaWQ7CiB9OwogCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NDggKGkuZS4gaXQncyBs
ZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorY2xhc3MgU3BlY3VsYXRlSW50NDhP
cGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQoU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUg
PSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAg
ICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJS
ZWcpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAg
ICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAg
fQorICAgIAorICAgIH5TcGVjdWxhdGVJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5s
b2NrKG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5v
ZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQor
ICAgIAorICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlk
ID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5m
aWxsU3BlY3VsYXRlSW50NDgoZWRnZSgpLCBEYXRhRm9ybWF0SW50NDgpOworICAgICAgICByZXR1
cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7Cisg
ICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNw
ZWN1bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJP
ckludmFsaWQ7Cit9OworCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NDggKGkuZS4gdGhlIHBh
eWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24tZXh0ZW5k
ZWQpLgorY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwg
RWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5k
U3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdl
KQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAg
ICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8
IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0Zp
bGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIH5TcGVj
dWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJ
bnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJ
bnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAgIEdQ
UlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRH
UFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRl
SW50NDgoZWRnZSgpLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICByZXR1cm4gbV9n
cHJPckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAg
IG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1bGF0
aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFs
aWQ7Cit9OworCitlbnVtIE9wcG9zaXRlU2hpZnRUYWcgeyBPcHBvc2l0ZVNoaWZ0IH07CisKK2Ns
YXNzIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVk
Z2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNw
ZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkK
KyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgICAgICAsIG1fc3Ry
aWN0KGppdC0+YmV0dGVyVXNlU3RyaWN0SW50NDgoZWRnZSkpCisgICAgeworICAgICAgICBBU1NF
UlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2Uu
dXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChu
b2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IFNw
ZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVk
Z2UsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCYgb3RoZXIsIE9wZXJhbmRT
cGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAg
ICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJP
ckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICAgICAgLCBtX3N0cmljdChvdGhlci5tX3N0cmlj
dCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAg
ICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9
CisgICAgCisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kKFNwZWN1
bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29uc3QgU3BlY3Vs
YXRlV2hpY2hldmVySW50NDhPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBt
b2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkK
KyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlk
R1BSUmVnKQorICAgICAgICAsIG1fc3RyaWN0KCFvdGhlci5tX3N0cmljdCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24g
fHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlz
RmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgflNw
ZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9n
cHJPckludmFsaWQgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9n
cHJPckludmFsaWQpOworICAgIH0KKyAgICAKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9CisgICAgCisg
ICAgR1BSUmVnIGdwcigpCisgICAgeworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52
YWxpZEdQUlJlZykgeworICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNw
ZWN1bGF0ZUludDQ4KAorICAgICAgICAgICAgICAgIGVkZ2UoKSwgbV9zdHJpY3QgPyBEYXRhRm9y
bWF0U3RyaWN0SW50NDggOiBEYXRhRm9ybWF0SW50NDgpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBtX2dwck9ySW52YWxpZDsKKyAgICB9CisgICAgCisgICAgdm9pZCB1c2UoKQorICAgIHsK
KyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKyAgICAKKyAgICBEYXRhRm9ybWF0
IGZvcm1hdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zdHJpY3QgPyBEYXRhRm9y
bWF0U3RyaWN0SW50NDggOiBEYXRhRm9ybWF0SW50NDg7CisgICAgfQorCitwcml2YXRlOgorICAg
IFNwZWN1bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9n
cHJPckludmFsaWQ7CisgICAgYm9vbCBtX3N0cmljdDsKK307CisKIGNsYXNzIFNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQgewogcHVibGljOgogICAgIGV4cGxpY2l0IFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2Rl
IG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNh
c2UgS25vd25JbnQzMlVzZToKICAgICAgICAgb3V0LnByaW50KCJLbm93bkludDMyIik7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgb3V0LnByaW50KCJN
YWNoaW5lSW50Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVhbE51bWJlclVzZToKICAg
ICAgICAgb3V0LnByaW50KCJSZWFsTnVtYmVyIik7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw2ICszOSw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAgVW50eXBlZFVzZSwKICAgICBJbnQzMlVz
ZSwKICAgICBLbm93bkludDMyVXNlLAorICAgIE1hY2hpbmVJbnRVc2UsCiAgICAgUmVhbE51bWJl
clVzZSwKICAgICBOdW1iZXJVc2UsCiAgICAgS25vd25OdW1iZXJVc2UsCkBAIC02NiwxMSArNjcs
MTMgQEAgQUxXQVlTX0lOTElORSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRgogICAgIGNhc2Ug
SW50MzJVc2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAgICAgICByZXR1cm4gU3BlY0lu
dDMyOworICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5l
SW50OwogICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNSZWFsTnVt
YmVyOworICAgICAgICByZXR1cm4gU3BlY0Z1bGxSZWFsTnVtYmVyOwogICAgIGNhc2UgTnVtYmVy
VXNlOgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgIHJldHVybiBTcGVjTnVtYmVy
OworICAgICAgICByZXR1cm4gU3BlY0Z1bGxOdW1iZXI7CiAgICAgY2FzZSBCb29sZWFuVXNlOgog
ICAgICAgICByZXR1cm4gU3BlY0Jvb2xlYW47CiAgICAgY2FzZSBDZWxsVXNlOgpAQCAtMTI1LDYg
KzEyOCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGsKICAgICBz
d2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVz
ZToKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAg
IGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAkocmV2aXNpb24gMTU1ODIw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgdm9pZCBWYWx1ZVNvdXJjZTo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KQogICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgIG91dC5wcmludCgi
SW50MzIiKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAg
ICAgb3V0LnByaW50KCJJbnQ0OCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENlbGxJbkpT
U3RhY2s6CiAgICAgICAgIG91dC5wcmludCgiQ2VsbCIpOwogICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHJldmlzaW9uIDE1
NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBlbnVtIFZhbHVlU291cmNlS2luZCB7CiAgICAg
U291cmNlTm90U2V0LAogICAgIFZhbHVlSW5KU1N0YWNrLAogICAgIEludDMySW5KU1N0YWNrLAor
ICAgIEludDQ4SW5KU1N0YWNrLAogICAgIENlbGxJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkluSlNT
dGFjaywKICAgICBEb3VibGVJbkpTU3RhY2ssCkBAIC01Niw2ICs1Nyw4IEBAIHN0YXRpYyBpbmxp
bmUgVmFsdWVTb3VyY2VLaW5kIGRhdGFGb3JtYXQKICAgICBzd2l0Y2ggKGRhdGFGb3JtYXQpIHsK
ICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMySW5KU1N0YWNr
OworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1cm4gSW50NDhJbkpTU3Rh
Y2s7CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgICAgICByZXR1cm4gRG91YmxlSW5K
U1N0YWNrOwogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CkBAIC03OSw2ICs4Miw4IEBAIHN0
YXRpYyBpbmxpbmUgRGF0YUZvcm1hdCB2YWx1ZVNvdXJjZUtpbmQKICAgICAgICAgcmV0dXJuIERh
dGFGb3JtYXRKUzsKICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICByZXR1cm4gRGF0
YUZvcm1hdEludDMyOworICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgIHJldHVybiBE
YXRhRm9ybWF0SW50NDg7CiAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgogICAgICAgICByZXR1cm4g
RGF0YUZvcm1hdENlbGw7CiAgICAgY2FzZSBCb29sZWFuSW5KU1N0YWNrOgpAQCAtMTM5LDYgKzE0
NCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShEb3VibGVJbkpT
U3RhY2spOwogICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgIHJldHVybiBW
YWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjayk7CisgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4Ogor
ICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEludDQ4SW5KU1N0YWNrKTsKICAgICAgICAg
Y2FzZSBGbHVzaGVkQ2VsbDoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShDZWxsSW5K
U1N0YWNrKTsKICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKQEAgLTE4MSw2ICsxODgsOSBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgICAgICByZXR1
cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyKCk7CiAgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAgICAgIHJldHVy
biBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDgoKTsKKyAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAgICAgICByZXR1cm4g
VmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGwoKTsKICAgICAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0Rh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxl
QWNjZXNzRGF0YS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1
LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIHZhcmlhYmxlIGlzIG5v
dCBhIG51bWJlciBwcmVkaWN0aW9uLCB0aGVuIHRoaXMgZG9lc24ndAogICAgICAgICAvLyBtYWtl
IGFueSBzZW5zZS4KLSAgICAgICAgaWYgKCFpc051bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24o
KSkpIHsKKyAgICAgICAgaWYgKCFpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkp
KSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogd2UgbWF5IGVuZCB1cCBmb3JjaW5nIGEgbG9jYWwg
aW4gaW5saW5lZCBhcmd1bWVudCBwb3NpdGlvbiB0byBiZSBhIGRvdWJsZSBldmVuCiAgICAgICAg
ICAgICAvLyBpZiBpdCBpcyBzb21ldGltZXMgbm90IGV2ZW4gbnVtZXJpYywgc2luY2UgdGhpcyBu
ZXZlciBzaWduYWxzIHRoZSBmYWN0IHRoYXQgaXQgZG9lc24ndAogICAgICAgICAgICAgLy8gd2Fu
dCBkb3VibGVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTEx
CkBAIC0zMzMsNiArMzMzLDkgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRJbnQzMjsKICAgICAg
ICAgCisgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmICFvcGVyYW5kSXNBcmd1bWVudChtX2xv
Y2FsKSAmJiBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAg
IHJldHVybiBGbHVzaGVkSW50NDg7CisgICAgICAgIAogICAgICAgICBpZiAoaXNDZWxsU3BlY3Vs
YXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gRmx1c2hlZENlbGw7CiAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0LDggQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29tcGFyZVN0cmlj
dEVxOgogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJ
bnRVc2UpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoTnVtYmVyVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkpCkBAIC0xNzUsNiArMTc3LDggQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJF
cToKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50
VXNlKSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE51bWJlclVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcmV0dXJuIENhbm5v
dENvbXBpbGU7CkBAIC0yMzYsNiArMjQwLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
R3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAg
ICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25JbnQzMlVz
ZToKKyAgICAgICAgICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgICAgICAgICAgICAg
Y2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBLbm93bk51bWJlclVzZToKICAg
ICAgICAgICAgICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDYgKzUzLDkgQEAgdm9pZCBFeGl0VmFsdWU6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYQogICAg
IGNhc2UgRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQzMjoKICAgICAgICAgb3V0LnByaW50KCJJbkpT
U3RhY2tBc0ludDMyIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRWYWx1ZUluSlNT
dGFja0FzSW50NDg6CisgICAgICAgIG91dC5wcmludCgiSW5KU1N0YWNrQXNJbnQ0OCIpOworICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBFeGl0VmFsdWVJbkpTU3RhY2tBc0RvdWJsZToKICAgICAg
ICAgb3V0LnByaW50KCJJbkpTU3RhY2tBc0RvdWJsZSIpOwogICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmgJKHJldmlzaW9uIDE1NTgy
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSBFeGl0VmFsdWVLaW5kIHsKICAgICBFeGl0VmFs
dWVDb25zdGFudCwKICAgICBFeGl0VmFsdWVJbkpTU3RhY2ssCiAgICAgRXhpdFZhbHVlSW5KU1N0
YWNrQXNJbnQzMiwKKyAgICBFeGl0VmFsdWVJbkpTU1RhY2tBc0ludDQ4LAogICAgIEV4aXRWYWx1
ZUluSlNTdGFja0FzRG91YmxlCiB9OwogCkBAIC04Miw2ICs4MywxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBFeGl0VmFsdWUgaW5K
U1N0YWNrQXNJbnQ0OCgpCisgICAgeworICAgICAgICBFeGl0VmFsdWUgcmVzdWx0OworICAgICAg
ICByZXN1bHQubV9raW5kID0gRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQ0ODsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIEV4aXRWYWx1ZSBpbkpTU3RhY2tB
c0RvdWJsZSgpCiAgICAgewogICAgICAgICBFeGl0VmFsdWUgcmVzdWx0OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9u
IDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzU0LDYgKzIzNTQsMTQgQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKGlzVmFsaWQodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlKCk7
CiAgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NDhWYWx1ZXMuZ2V0KGVkZ2Uu
bm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJu
IHN0cmljdEludDQ4VG9JbnQzMihlZGdlLCB2YWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgCisgICAg
ICAgIHZhbHVlID0gbV9pbnQ0OFZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAo
aXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gc3RyaWN0SW50NDhUb0ludDMyKGVk
Z2UsIGludDQ4VG9TdHJpY3RJbnQ0OCh2YWx1ZS52YWx1ZSgpKSk7CisgICAgICAgIAogICAgICAg
ICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAo
aXNWYWxpZCh2YWx1ZSkpIHsKICAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IHZhbHVl
LnZhbHVlKCk7CkBAIC0yMzY5LDYgKzIzNzcsMTIwIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biBtX291dC5pbnQzMlplcm87CiAgICAgfQogICAgIAorICAgIGVudW0gSW50NDhLaW5kIHsgU3Ry
aWN0SW50NDgsIEludDQ4IH07CisgICAgTFZhbHVlIGxvd0ludDQ4KEVkZ2UgZWRnZSwgSW50NDhL
aW5kIGtpbmQsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRT
cGVjdWxhdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVz
ZSk7CisgICAgICAgIAorICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlOworICAgICAgICAK
KyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgSW50NDg6CisgICAgICAgICAg
ICB2YWx1ZSA9IG1faW50NDhWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIGlm
IChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDQ4VmFsdWVzLmdl
dChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0cmljdEludDQ4VG9JbnQ0OCh2YWx1ZS52YWx1ZSgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgU3RyaWN0SW50NDg6Cisg
ICAgICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NDhWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsK
KyAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFsdWUgPSBtX2ludDQ4
VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGludDQ4VG9TdHJpY3RJbnQ0OCh2YWx1ZS52YWx1ZSgp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2YWx1
ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQo
dmFsdWUpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0SW50NDhXaXRoU3RyaWN0VmFsdWUoCisg
ICAgICAgICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0LnNpZ25FeHQodmFsdWUsIG1fb3V0Lmlu
dDY0KSwga2luZCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNJbnQ0OCkpOworICAgICAgICAK
KyAgICAgICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAg
ICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQg
PSB2YWx1ZS52YWx1ZSgpOworICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCisgICAgICAgICAg
ICAgICAganNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY01hY2hpbmVJbnQsIGlz
Tm90SW50MzIoYm94ZWRSZXN1bHQpKTsKKyAgICAgICAgICAgIHJldHVybiBzZXRJbnQ0OFdpdGhT
dHJpY3RWYWx1ZSgKKyAgICAgICAgICAgICAgICBlZGdlLm5vZGUoKSwgbV9vdXQuc2lnbkV4dCh1
bmJveEludDMyKGJveGVkUmVzdWx0KSwgbV9vdXQuaW50NjQpLCBraW5kKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSku
bV90eXBlICYgU3BlY01hY2hpbmVJbnQpKTsKKyAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxl
KTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmludDY0WmVybzsKKyAgICB9CisgICAgCisgICAgTFZh
bHVlIGxvd0ludDQ4KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxvd0ludDQ4
KGVkZ2UsIEludDQ4LCBtb2RlKTsKKyAgICB9CisgICAgCisgICAgTFZhbHVlIGxvd1N0cmljdElu
dDQ4KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3Bl
cmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxvd0ludDQ4KGVkZ2UsIFN0
cmljdEludDQ4LCBtb2RlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBiZXR0ZXJVc2VTdHJpY3RJ
bnQ0OChOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFpc1ZhbGlkKG1faW50NDhW
YWx1ZXMuZ2V0KG5vZGUpKTsKKyAgICB9CisgICAgYm9vbCBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChF
ZGdlIGVkZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYmV0dGVyVXNlU3RyaWN0SW50NDgoZWRn
ZS5ub2RlKCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEludDQ4S2lu
ZCBiZXN0SW50NDhLaW5kKFQgbm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBiZXR0ZXJVc2VT
dHJpY3RJbnQ0OChub2RlKSA/IFN0cmljdEludDQ4IDogSW50NDg7CisgICAgfQorICAgIEludDQ4
S2luZCBvcHBvc2l0ZShJbnQ0OEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoa2lu
ZCkgeworICAgICAgICBjYXNlIEludDQ4OgorICAgICAgICAgICAgcmV0dXJuIFN0cmljdEludDQ4
OworICAgICAgICBjYXNlIFN0cmljdEludDQ4OgorICAgICAgICAgICAgcmV0dXJuIEludDQ4Owor
ICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
ICAgIAorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNvdW50PgorICAgIHN0cnVjdCBJbnQ0OHMgewor
ICAgICAgICBJbnQ0OEtpbmQga2luZDsKKyAgICAgICAgRml4ZWRBcnJheTxMVmFsdWUsIGNvdW50
PiB2YWx1ZXM7CisgICAgfTsKKyAgICBJbnQ0OHM8MT4gbG93V2hpY2hldmVySW50NDgoRWRnZSBl
ZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3Vs
YXRpb24pCisgICAgeworICAgICAgICBJbnQ0OHM8MT4gcmVzdWx0OworICAgICAgICByZXN1bHQu
a2luZCA9IGJlc3RJbnQ0OEtpbmQoZWRnZSk7CisgICAgICAgIHJlc3VsdC52YWx1ZXNbMF0gPSBs
b3dJbnQ0OChlZGdlLCByZXN1bHQua2luZCwgbW9kZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorICAgIEludDQ4czwyPiBsb3dXaGljaGV2ZXJJbnQ0OHMoRWRnZSBlZGdlMSwgRWRn
ZSBlZGdlMiwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNw
ZWN1bGF0aW9uKQorICAgIHsKKyAgICAgICAgSW50NDhzPDI+IHJlc3VsdDsKKyAgICAgICAgcmVz
dWx0LmtpbmQgPSBiZXN0SW50NDhLaW5kKGVkZ2UxKTsKKyAgICAgICAgcmVzdWx0LnZhbHVlc1sw
XSA9IGxvd0ludDQ4KGVkZ2UxLCByZXN1bHQua2luZCwgbW9kZSk7CisgICAgICAgIHJlc3VsdC52
YWx1ZXNbMV0gPSBsb3dJbnQ0OChlZGdlMiwgcmVzdWx0LmtpbmQsIG1vZGUpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBJbnQ0OHM8Mj4gbG93T3Bwb3NpbmdJbnQ0OHMoRWRn
ZSBlZGdlMSwgRWRnZSBlZGdlMiwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21h
dGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAgICAgSW50NDhzPDI+IHJlc3VsdDsK
KyAgICAgICAgcmVzdWx0LmtpbmQgPSBiZXN0SW50NDhLaW5kKGVkZ2UxKTsKKyAgICAgICAgcmVz
dWx0LnZhbHVlc1swXSA9IGxvd0ludDQ4KGVkZ2UxLCByZXN1bHQua2luZCwgbW9kZSk7CisgICAg
ICAgIHJlc3VsdC52YWx1ZXNbMV0gPSBsb3dJbnQ0OChlZGdlMiwgb3Bwb3NpdGUocmVzdWx0Lmtp
bmQpLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgTFZh
bHVlIGxvd0NlbGwoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRv
bWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1v
ZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGlzQ2VsbChlZGdlLnVzZUtp
bmQoKSkpOwpAQCAtMjQ1MSw2ICsyNTczLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0
SW50NDhWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUp
KQorICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDQ4VG9Eb3VibGUoZWRnZSwgdmFsdWUudmFs
dWUoKSk7CisgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1faW50NDhWYWx1ZXMuZ2V0KGVkZ2Uu
bm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJu
IHN0cmljdEludDQ4VG9Eb3VibGUoZWRnZSwgaW50NDhUb1N0cmljdEludDQ4KHZhbHVlLnZhbHVl
KCkpKTsKKyAgICAgICAgCiAgICAgICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdl
Lm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewogICAgICAgICAgICAgTFZh
bHVlIGJveGVkUmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKQEAgLTI1MDMsNiArMjYzMywxNCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAK
KyAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Cisg
ICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ0
OFRvSlNWYWx1ZShlZGdlLCB2YWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgCisgICAgICAgIHZhbHVl
ID0gbV9pbnQ0OFZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAoaXNWYWxpZCh2
YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gc3RyaWN0SW50NDhUb0pTVmFsdWUoZWRnZSwgaW50
NDhUb1N0cmljdEludDQ4KHZhbHVlLnZhbHVlKCkpKTsKKyAgICAgICAgCiAgICAgICAgIHZhbHVl
ID0gbV9ib29sZWFuVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlk
KHZhbHVlKSkgewogICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGJveEJvb2xlYW4odmFsdWUu
dmFsdWUoKSk7CkBAIC0yNTMyLDYgKzI2NzAsNzUgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCisgICAgTFZhbHVlIHN0cmljdEludDQ4VG9JbnQzMihFZGdl
IGVkZ2UsIExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291
dC5jYXN0VG9JbnQzMih2YWx1ZSk7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKAorICAgICAgICAg
ICAgbm9WYWx1ZSgpLCAwLCBTcGVjSW50MzIsCisgICAgICAgICAgICBtX291dC5ub3RFcXVhbCht
X291dC5zaWduRXh0KHJlc3VsdCwgbV9vdXQuaW50NjQpLCB2YWx1ZSkpOworICAgICAgICBzZXRJ
bnQzMihlZGdlLm5vZGUoKSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisgICAgCisgICAgTFZhbHVlIHN0cmljdEludDQ4VG9Eb3VibGUoRWRnZSBlZGdlLCBMVmFsdWUg
dmFsdWUpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuaW50VG9Eb3VibGUo
dmFsdWUpOworICAgICAgICBzZXREb3VibGUoZWRnZS5ub2RlKCksIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIExWYWx1ZSBzdHJpY3RJbnQ0OFRvSlNW
YWx1ZShFZGdlIGVkZ2UsIExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2Nr
IGlzSW50MzIgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoInN0cmljdEludDQ4VG9KU1ZhbHVlIGlz
SW50MzIgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNEb3VibGUgPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoInN0cmljdEludDQ4VG9KU1ZhbHVlIGlzRG91YmxlIGNhc2UiKSk7CisgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3Ry
aWN0SW50NDhUb0pTVmFsdWUgY29udGludWF0aW9uIikpOworICAgICAgICAKKyAgICAgICAgVmVj
dG9yPFZhbHVlRnJvbUJsb2NrLCAyPiByZXN1bHRzOworICAgICAgICAgICAgCisgICAgICAgIExW
YWx1ZSBpbnQzMlZhbHVlID0gbV9vdXQuY2FzdFRvSW50MzIodmFsdWUpOworICAgICAgICBtX291
dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5lcXVhbChtX291dC5zaWduRXh0KGludDMyVmFs
dWUsIG1fb3V0LmludDY0KSwgdmFsdWUpLAorICAgICAgICAgICAgaXNJbnQzMiwgaXNEb3VibGUp
OworICAgICAgICAKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhpc0ludDMyLCBpc0RvdWJsZSk7CisgICAgICAgIAorICAgICAgICByZXN1bHRzLmFwcGVuZCht
X291dC5hbmNob3IoYm94SW50MzIoaW50MzJWYWx1ZSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNEb3VibGUs
IGNvbnRpbnVhdGlvbik7CisgICAgICAgIAorICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5h
bmNob3IoYm94RG91YmxlKG1fb3V0LmludFRvRG91YmxlKHZhbHVlKSkpKTsKKyAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHJldHVybiBtX291dC5waGkobV9vdXQu
aW50NjQsIHJlc3VsdHMpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldEludDQ4V2l0aFN0cmlj
dFZhbHVlKE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSwgSW50NDhLaW5kIGtpbmQpCisgICAgewor
ICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0ODoKKyAgICAg
ICAgICAgIHNldFN0cmljdEludDQ4KG5vZGUsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEludDQ4OgorICAgICAgICAgICAgc2V0SW50NDgo
bm9kZSwgc3RyaWN0SW50NDhUb0ludDQ4KHZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorCisgICAgTFZhbHVlIHN0cmljdEludDQ4VG9JbnQ0OChMVmFsdWUgdmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9vdXQuc2hsKHZhbHVlLCBtX291dC5jb25zdEludDY0KDE2
KSk7CisgICAgfQorICAgIAorICAgIExWYWx1ZSBpbnQ0OFRvU3RyaWN0SW50NDgoTFZhbHVlIHZh
bHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmFTaHIodmFsdWUsIG1fb3V0LmNvbnN0
SW50NjQoMTYpKTsKKyAgICB9CisgICAgCiAgICAgTFZhbHVlIGlzTm90SW50MzIoTFZhbHVlIGpz
VmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuYmVsb3coanNWYWx1ZSwgbV90YWdU
eXBlTnVtYmVyKTsKQEAgLTI4MDAsNyArMzAwNyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAg
ICBsb3dCb29sZWFuKGVkZ2UpOwogICAgIH0KLQorICAgIAogICAgIGJvb2wgbWFzcXVlcmFkZXNB
c1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fZ3JhcGgubWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQobV9u
b2RlLT5jb2RlT3JpZ2luKTsKQEAgLTMyNDAsNiArMzQ0NywyOCBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgbV9pbnQzMlZhbHVlcy5zZXQobm9kZSwgTG93ZXJlZE5vZGVWYWx1ZSh2YWx1ZSwg
bV9oaWdoQmxvY2spKTsKICAgICB9CisgICAgdm9pZCBzZXRJbnQ0OChOb2RlKiBub2RlLCBMVmFs
dWUgdmFsdWUpCisgICAgeworICAgICAgICBtX2ludDQ4VmFsdWVzLnNldChub2RlLCBMb3dlcmVk
Tm9kZVZhbHVlKHZhbHVlLCBtX2hpZ2hCbG9jaykpOworICAgIH0KKyAgICB2b2lkIHNldFN0cmlj
dEludDQ4KE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fc3RyaWN0
SW50NDhWYWx1ZXMuc2V0KG5vZGUsIExvd2VyZWROb2RlVmFsdWUodmFsdWUsIG1faGlnaEJsb2Nr
KSk7CisgICAgfQorICAgIHZvaWQgc2V0SW50NDgoTm9kZSogbm9kZSwgTFZhbHVlIHZhbHVlLCBJ
bnQ0OEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBj
YXNlIEludDQ4OgorICAgICAgICAgICAgc2V0SW50NDgobm9kZSwgdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgU3RyaWN0SW50NDg6CisgICAg
ICAgICAgICBzZXRTdHJpY3RJbnQ0OChub2RlLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQogICAgIHZvaWQgc2V0SlNWYWx1ZShOb2RlKiBub2RlLCBMVmFsdWUgdmFsdWUp
CiAgICAgewogICAgICAgICBtX2pzVmFsdWVWYWx1ZXMuc2V0KG5vZGUsIExvd2VyZWROb2RlVmFs
dWUodmFsdWUsIG1faGlnaEJsb2NrKSk7CkBAIC0zMzQwLDYgKzM1NjksOCBAQCBwcml2YXRlOgog
ICAgIExWYWx1ZSBtX3RhZ01hc2s7CiAgICAgCiAgICAgSGFzaE1hcDxOb2RlKiwgTG93ZXJlZE5v
ZGVWYWx1ZT4gbV9pbnQzMlZhbHVlczsKKyAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZh
bHVlPiBtX3N0cmljdEludDQ4VmFsdWVzOworICAgIEhhc2hNYXA8Tm9kZSosIExvd2VyZWROb2Rl
VmFsdWU+IG1faW50NDhWYWx1ZXM7CiAgICAgSGFzaE1hcDxOb2RlKiwgTG93ZXJlZE5vZGVWYWx1
ZT4gbV9qc1ZhbHVlVmFsdWVzOwogICAgIEhhc2hNYXA8Tm9kZSosIExvd2VyZWROb2RlVmFsdWU+
IG1fYm9vbGVhblZhbHVlczsKICAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBt
X3N0b3JhZ2VWYWx1ZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVl
Rm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZh
bHVlRm9ybWF0LmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExWYWx1ZUZvcm1hdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDEyIEBA
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBWYWwKICAgICBjYXNlIFZhbHVl
Rm9ybWF0VUludDMyOgogICAgICAgICBvdXQucHJpbnQoIlVJbnQzMiIpOwogICAgICAgICByZXR1
cm47CisgICAgY2FzZSBWYWx1ZUZvcm1hdEludDQ4OgorICAgICAgICBvdXQucHJpbnQoIkludDQ4
Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZhbHVlRm9ybWF0U3RyaWN0SW50NDg6Cisg
ICAgICAgIG91dC5wcmludCgiU3RyaWN0SW50NDgiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgVmFsdWVGb3JtYXRCb29sZWFuOgogICAgICAgICBvdXQucHJpbnQoIkJvb2xlYW4iKTsKICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZv
cm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVG
b3JtYXQuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExWYWx1ZUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIGVudW0gVmFs
dWVGb3JtYXQgewogICAgIEludmFsaWRWYWx1ZUZvcm1hdCwKICAgICBWYWx1ZUZvcm1hdEludDMy
LAogICAgIFZhbHVlRm9ybWF0VUludDMyLAorICAgIFZhbHVlRm9ybWF0SW50NDgsCisgICAgVmFs
dWVGb3JtYXRTdHJpY3RJbnQ0OCwKICAgICBWYWx1ZUZvcm1hdEJvb2xlYW4sCiAgICAgVmFsdWVG
b3JtYXRKU1ZhbHVlLAogICAgIFZhbHVlRm9ybWF0RG91YmxlCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFZhbHVlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlU291cmNlLmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVNvdXJjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDYgKzQyLDkgQEAgdm9pZCBWYWx1ZVNvdXJjZTo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KQogICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgIG91dC5wcmludCgiSW50MzJJ
bkpTU3RhY2siKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6Cisg
ICAgICAgIG91dC5wcmludCgiSW50NDhJbkpTU3RhY2siKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRG91YmxlSW5KU1N0YWNrOgogICAgICAgICBvdXQucHJpbnQoIkRvdWJsZUluSlNTdGFj
ayIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFZhbHVlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExWYWx1ZVNvdXJjZS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFZhbHVlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAg
ZW51bSBWYWx1ZVNvdXJjZUtpbmQgewogICAgIFNvdXJjZU5vdFNldCwKICAgICBWYWx1ZUluSlNT
dGFjaywKICAgICBJbnQzMkluSlNTdGFjaywKKyAgICBJbnQ0OEluSlNTdGFjaywKICAgICBEb3Vi
bGVJbkpTU3RhY2ssCiAgICAgU291cmNlSXNEZWFkLAogICAgIEhhdmVOb2RlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAkocmV2aXNpb24gMTU1
ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIElu
c3RydWN0aW9uKiB2UEMoKSBjb25zdDsKICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBhc0lubGlu
ZUNhbGxGcmFtZSgpIGNvbnN0OwogICAgICAgICBpbnQzMl90IHVuYm94ZWRJbnQzMigpIGNvbnN0
OworICAgICAgICBpbnQ2NF90IHVuYm94ZWRJbnQ0OCgpIGNvbnN0OwogICAgICAgICBib29sIHVu
Ym94ZWRCb29sZWFuKCkgY29uc3Q7CiAgICAgICAgIGRvdWJsZSB1bmJveGVkRG91YmxlKCkgY29u
c3Q7CiAgICAgICAgIEpTQ2VsbCogdW5ib3hlZENlbGwoKSBjb25zdDsKQEAgLTk4LDYgKzk5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNh
bGxGcmFtZTsKICAgICAgICAgICAgIEVuY29kZWRWYWx1ZURlc2NyaXB0b3IgZW5jb2RlZFZhbHVl
OwogICAgICAgICAgICAgZG91YmxlIG51bWJlcjsKKyAgICAgICAgICAgIGludDY0X3QgaW50ZWdl
cjsKICAgICAgICAgfSB1OwogICAgIH07CiAKQEAgLTE4NSw2ICsxODcsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHJldHVybiBwYXlsb2FkKCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lO
TElORSBpbnQ2NF90IFJlZ2lzdGVyOjp1bmJveGVkSW50NDgoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHUuaW50ZWdlciA+PiAxNjsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgUmVnaXN0ZXI6OnVuYm94ZWRCb29sZWFuKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biAhIXBheWxvYWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgzLDYgKzM4Myw5IEBAIHZv
aWQgQXJndW1lbnRzOjp0ZWFyT2ZmRm9ySW5saW5lQ2FsbEZyYW0KICAgICAgICAgY2FzZSBBbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6CiAgICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVy
KGxvY2F0aW9uLT51bmJveGVkSW50MzIoKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAgICAgICAgICB2YWx1ZSA9
IGpzTnVtYmVyKGxvY2F0aW9uLT51bmJveGVkSW50NDgoKSk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbDoKICAgICAgICAgICAg
IHZhbHVlID0gbG9jYXRpb24tPnVuYm94ZWRDZWxsKCk7CiAgICAgICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGV4aW5nVHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcAko
cmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhp
bmdUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTEgKzUwLDExIEBAIEluZGV4aW5nVHlw
ZSBsZWFzdFVwcGVyQm91bmRPZkluZGV4aW5nVHkKICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElO
R19UWVBFUzoKICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbih0eXBlKSkKICAgICAgICAg
ICAgIHJldHVybiAoaW5kZXhpbmdUeXBlICYgfkluZGV4aW5nU2hhcGVNYXNrKSB8IEludDMyU2hh
cGU7Ci0gICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKHR5cGUpKQorICAgICAgICBpZiAo
aXNGdWxsTnVtYmVyU3BlY3VsYXRpb24odHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gKGluZGV4
aW5nVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFzaykgfCBEb3VibGVTaGFwZTsKICAgICAgICAgcmV0
dXJuIChpbmRleGluZ1R5cGUgJiB+SW5kZXhpbmdTaGFwZU1hc2spIHwgQ29udGlndW91c1NoYXBl
OwogICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgaWYgKGlzTnVt
YmVyU3BlY3VsYXRpb24odHlwZSkpCisgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlv
bih0eXBlKSkKICAgICAgICAgICAgIHJldHVybiBpbmRleGluZ1R5cGU7CiAgICAgICAgIHJldHVy
biAoaW5kZXhpbmdUeXBlICYgfkluZGV4aW5nU2hhcGVNYXNrKSB8IENvbnRpZ3VvdXNTaGFwZTsK
ICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTU1ODIwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTEsNiArMTkxLDcgQEAgcHVibGljOgogCiAgICAgaW50MzJfdCBhc0ludDMyKCkgY29u
c3Q7CiAgICAgdWludDMyX3QgYXNVSW50MzIoKSBjb25zdDsKKyAgICBpbnQ2NF90IGFzTWFjaGlu
ZUludCgpIGNvbnN0OwogICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0OwogICAgIGJvb2wgYXNC
b29sZWFuKCkgY29uc3Q7CiAgICAgZG91YmxlIGFzTnVtYmVyKCkgY29uc3Q7CkBAIC0yMDIsNiAr
MjAzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Vu
ZGVmaW5lZE9yTnVsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNCb29sZWFuKCkgY29uc3Q7CisgICAg
Ym9vbCBpc01hY2hpbmVJbnQoKSBjb25zdDsKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwogICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDk0LDYgKzQ5NCwzNSBA
QCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgCiAKICNlbmRpZiAvLyBV
U0UoSlNWQUxVRTY0KQogCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc01hY2hpbmVJbnQoKSBjb25z
dAoreworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICgh
aXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRvdWJsZSBudW1iZXIgPSBh
c0RvdWJsZSgpOworICAgIGlmIChudW1iZXIgIT0gbnVtYmVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaW50NjRfdCBhc0ludDY0ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obnVtYmVyKTsK
KyAgICBpZiAoYXNJbnQ2NCAhPSBudW1iZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWFzSW50NjQgJiYgc3RkOjpzaWduYml0KG51bWJlcikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoYXNJbnQ2NCA+PSAoc3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgNDcpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGFzSW50NjQgPCAtKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KDEpIDw8IDQ3KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OworfQorCitpbmxpbmUgaW50NjRfdCBKU1ZhbHVlOjphc01hY2hpbmVJbnQoKSBjb25zdAorewor
ICAgIEFTU0VSVChpc01hY2hpbmVJbnQoKSk7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIGFzSW50MzIoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4oYXNEb3Vi
bGUoKSk7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211737</attachid>
            <date>2013-09-15 22:13:22 -0700</date>
            <delta_ts>2013-09-16 16:32:01 -0700</delta_ts>
            <desc>more FTL</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>166120</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtODIwLDYgKzgyMCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2
dHNpMnNkX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0SW50NjRUb0Rv
dWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBB
U1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2kyc2RxX3Jy
KHNyYywgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShBZGRy
ZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0Uy
UHJlc2VudCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMwLDYgKzIzMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LnNobHFfaThyKGltbS5tX3ZhbHVlLCBkZXN0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCByc2hp
ZnQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zYXJxX2k4cihpbW0ubV92YWx1ZSwgZGVzdCk7CisgICAgfQorICAgIAorICAg
IHZvaWQgbXVsNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmltdWxxX3JyKHNyYywgZGVzdCk7CisgICAgfQorICAgIAogICAgIHZv
aWQgbmVnNjQoUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubmVn
cV9yKGRlc3QpOwpAQCAtNTMwLDYgKzU0MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaE11bDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbXVsNjQoc3JjLCBkZXN0KTsKKyAgICAgICAg
aWYgKGNvbmQgIT0gT3ZlcmZsb3cpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycihk
ZXN0LCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoU3ViNjQoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIHN1YjY0KGltbSwgZGVzdCk7CkBAIC01NDgsNiArNTY2LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJyYW5jaFN1YjY0KGNvbmQsIHNyYzIsIGRlc3QpOwogICAgIH0KIAorICAgIEp1
bXAgYnJhbmNoTmVnNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjRGVzdCkK
KyAgICB7CisgICAgICAgIG5lZzY0KHNyY0Rlc3QpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQorCiAgICAgQ29udmVydGli
bGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0ID0gQ29u
dmVydGlibGVMb2FkTGFiZWwodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgzNiw2ICs4MzYsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3Ao
T1AyX0lNVUxfR3ZFdiwgZHN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgaW11bHFfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wNjQoT1AyX0lNVUxfR3ZFdiwgZHN0LCBzcmMpOworICAgIH0KKwogICAgIHZvaWQg
aW11bGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKICAg
ICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3QsIGJh
c2UsIG9mZnNldCk7CkBAIC0xNjExLDYgKzE2MTYsMTQgQEAgcHVibGljOgogICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNJMlNEX1ZzZEVkLCAoUmVnaXN0ZXJJRClkc3QsIHNy
Yyk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGN2dHNpMnNkcV9ycihSZWdp
c3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9Q
Ml9DVlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBzcmMpOworICAgIH0KKyNlbmRpZgor
CiAgICAgdm9pZCBjdnRzaTJzZF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0Vf
RjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0
YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiBlbnVtIERhdGFGb3JtYXQgewogICAgIERhdGFGb3JtYXROb25lID0gMCwKICAgICBEYXRh
Rm9ybWF0SW50MzIgPSAxLAotICAgIERhdGFGb3JtYXREb3VibGUgPSAyLAotICAgIERhdGFGb3Jt
YXRCb29sZWFuID0gMywKLSAgICBEYXRhRm9ybWF0Q2VsbCA9IDQsCi0gICAgRGF0YUZvcm1hdFN0
b3JhZ2UgPSA1LAorICAgIERhdGFGb3JtYXRJbnQ0OCA9IDIsIC8vIEludDQ4J3MgYXJlIGxlZnQt
c2hpZnRlZCBieSAxNiBieSBkZWZhdWx0LgorICAgIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA9IDMs
IC8vICJTdHJpY3QiIEludDQ4IG1lYW5zIGl0J3Mgbm90IHNoaWZ0ZWQuCisgICAgRGF0YUZvcm1h
dERvdWJsZSA9IDQsCisgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAorICAgIERhdGFGb3JtYXRD
ZWxsID0gNiwKKyAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCiAgICAgRGF0YUZvcm1hdEpTID0g
OCwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRJbnQz
MiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0RG91
YmxlLApAQCAtNjQsNiArNjYsMTAgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRUb1N0
cmluZyhEYQogICAgICAgICByZXR1cm4gIk5vbmUiOwogICAgIGNhc2UgRGF0YUZvcm1hdEludDMy
OgogICAgICAgICByZXR1cm4gIkludDMyIjsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAg
ICAgICAgcmV0dXJuICJJbnQ0OCI7CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6Cisg
ICAgICAgIHJldHVybiAiU3RyaWN0SW50NDgiOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToK
ICAgICAgICAgcmV0dXJuICJEb3VibGUiOwogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzSW5saW5lcy5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bl
cmFuZHNJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBPcGVy
YW5kczxULCBUcmFpdHM+OjpkdW1wSW5Db250ZXh0KAogICAgIGZvciAoc2l6ZV90IGxvY2FsSW5k
ZXggPSAwOyBsb2NhbEluZGV4IDwgbnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbEluZGV4KSB7CiAg
ICAgICAgIGlmIChUcmFpdHM6OmlzRW1wdHlGb3JEdW1wKGxvY2FsKGxvY2FsSW5kZXgpKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwgbG9jYWxJ
bmRleCwgIjoiLCBpbkNvbnRleHQobG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKKyAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgbG9jYWxJbmRleCwgIjoiLCBpbkNvbnRleHQobG9j
YWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNpb24g
MTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsMTMgQEAgdm9pZCBkdW1wU3BlY3Vs
YXRpb24oUHJpbnRTdHJlYW0mIG91dCwgUwogICAgIH0KICAgICAKICAgICBpZiAodmFsdWUgJiBT
cGVjSW50MzIpCi0gICAgICAgIG15T3V0LnByaW50KCJJbnQiKTsKKyAgICAgICAgbXlPdXQucHJp
bnQoIkludDMyIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAorICAg
IGlmICh2YWx1ZSAmIFNwZWNJbnQ0OCkKKyAgICAgICAgbXlPdXQucHJpbnQoIkludDQ4Iik7Cisg
ICAgICAgIAogICAgIGlmICgodmFsdWUgJiBTcGVjRG91YmxlKSA9PSBTcGVjRG91YmxlKQogICAg
ICAgICBteU91dC5wcmludCgiRG91YmxlIik7CiAgICAgZWxzZSB7CkBAIC0xNjYsMTEgKzE2OSw2
IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXQsIFMKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICh2YWx1
ZSAmIFNwZWNJbnQ0OCkKLSAgICAgICAgICAgIG15T3V0LnByaW50KCJJbnQ0OCIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgICAgICAKICAgICAgICAgaWYg
KHZhbHVlICYgU3BlY05vbkludEFzRG91YmxlKQogICAgICAgICAgICAgbXlPdXQucHJpbnQoIk5v
bmludGFzZG91YmxlIik7CiAgICAgICAgIGVsc2UKQEAgLTI0Nyw5ICsyNDUsMTEgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9BYmJyZXZpYQogICAgICAgICByZXR1cm4gIjxJbnQ0
OEFzRG91YmxlPiI7CiAgICAgaWYgKGlzSW50NDhTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAg
ICAgICAgcmV0dXJuICI8SW50NDg+IjsKKyAgICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRpb24o
cHJlZGljdGlvbikpCisgICAgICAgIHJldHVybiAiPE1hY2hpbmVJbnQ+IjsKICAgICBpZiAoaXNE
b3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8RG91YmxlPiI7
Ci0gICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgaWYgKGlzRnVs
bE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxOdW1iZXI+
IjsKICAgICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJl
dHVybiAiPEJvb2xlYW4+IjsKQEAgLTM0NSwxNiArMzQ1LDExIEBAIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmEKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKICAgICBp
ZiAodmFsdWUuaXNEb3VibGUoKSkgewogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUuYXNO
dW1iZXIoKTsKLSAgICAgICAgaWYgKG51bWJlciA9PSBudW1iZXIpIHsKLSAgICAgICAgICAgIGlu
dDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7Ci0gICAgICAgICAg
ICBpZiAoYXNJbnQ2NCA9PSBudW1iZXIgJiYgKGFzSW50NjQgfHwgIXN0ZDo6c2lnbmJpdChudW1i
ZXIpKQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPCAoc3RhdGljX2Nhc3Q8aW50NjRfdD4o
MSkgPDwgNDcpCi0gICAgICAgICAgICAgICAgJiYgYXNJbnQ2NCA+PSAtKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KDEpIDw8IDQ3KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTcGVjSW50NDhBc0Rv
dWJsZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3Vi
bGU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47CisgICAgICAgIGlm
IChudW1iZXIgIT0gbnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47Cisg
ICAgICAgIGlmICh2YWx1ZS5pc01hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBTcGVj
SW50NDhBc0RvdWJsZTsKKyAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAgICB9
CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9t
Q2VsbCh2YWx1ZS5hc0NlbGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDQ2ICszOCw0OCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cnVjdHVyZTsKIAogdHlw
ZWRlZiB1aW50MzJfdCBTcGVjdWxhdGVkVHlwZTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjTm9uZSAgICAgICAgICAgICAgPSAweDAwMDAwMDAwOyAvLyBXZSBkb24ndCBrbm93IGFu
eXRoaW5nIHlldC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmplY3Qg
ICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2JqZWN0Lgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICA9IDB4MDAw
MDAwMDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQXJyYXkuCi1zdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgID0gMHgwMDAwMDAwODsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAgICAgID0gMHgwMDAwMDAxMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1z
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAgID0gMHgwMDAw
MDAyMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJj
bGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMkFycmF5ICAgICAg
ICA9IDB4MDAwMDAwNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMkFycmF5IG9yIG9uZSBv
ZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDhB
cnJheSAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDhBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY1VpbnQ4Q2xhbXBlZEFycmF5ID0gMHgwMDAwMDEwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFu
IFVpbnQ4Q2xhbXBlZEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDE2QXJyYXkgICAgICAgPSAweDAwMDAwMjAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MzJBcnJheSAgICAgICA9IDB4MDAw
MDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBvciBvbmUgb2YgaXRzIHN1
YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Zsb2F0MzJBcnJheSAg
ICAgID0gMHgwMDAwMDgwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmxv
YXQ2NEFycmF5ICAgICAgPSAweDAwMDAxMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNUeXBlZEFycmF5VmlldyAgICA9IFNwZWNJbnQ4QXJyYXkgfCBTcGVjSW50MTZBcnJh
eSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkgfCBTcGVjVWludDhDbGFtcGVkQXJy
YXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJyYXkgfCBTcGVjRmxvYXQzMkFycmF5
IHwgU3BlY0Zsb2F0NjRBcnJheTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQXJn
dW1lbnRzICAgICAgICAgPSAweDAwMDAyMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gQXJndW1l
bnRzIG9iamVjdC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nT2JqZWN0
ICAgICAgPSAweDAwMDA0MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTdHJpbmdPYmplY3QuCi1z
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgID0gMHgwMDAw
ODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmplY3Qs
IEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y09iamVjdCAgICAgICAgICAgID0gMHgwMDAwZmZmZjsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0
aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjU3RyaW5nSWRlbnQgICAgICAgPSAweDAwMDEwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3MgYW4gaWRlbnRpZmllci4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nVmFyICAgICAgICAgPSAweDAwMDIwMDAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIuCi1z
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAgICAgICAgICAgID0gMHgwMDAz
MDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCi1zdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0NlbGxPdGhlciAgICAgICAgID0gMHgwMDA0MDAwMDsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgSlNDZWxsIGJ1dCBub3QgYSBzdWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVmaW5p
dGVseSBub3QgYSBKU1N0cmluZy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2Vs
bCAgICAgICAgICAgICAgPSAweDAwMDdmZmZmOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyICAgICAgICAgICAgID0gMHgw
MDgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgotc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNJbnQ0OCAgICAgICAgICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBJbnQ0OCwgaXQncyBpbnNpZGUgYSBkb3VibGUsIGJ1dCBpdCBkb2Vzbid0IG5l
ZWQgdG8gYmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hpbmVJbnQgICAg
ICAgID0gMHgwMTgwMDAwMDsgLy8gSXQncyBzb21ldGhpbmcgdGhhdCB3ZSBjYW4gZG8gbWFjaGlu
ZSBpbnQgYXJpdGhtZXRpYyBvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50
NDhBc0RvdWJsZSAgICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50NDgg
YW5kIGl0J3MgaW5zaWRlIGEgZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNJbnRlZ2VyICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBzb21l
IGtpbmQgb2YgaW50ZWdlci4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9uSW50
QXNEb3VibGUgICAgPSAweDA0MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm90IGFuIEludDQ4
IGJ1dCBpdCdzIGEgcmVhbCBudW1iZXIgYW5kIGl0J3MgYSBkb3VibGUuCi1zdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgID0gMHgwNzAwMDAwMDsgLy8gSXQn
cyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0RvdWJsZU5hTiAgICAgICAgID0gMHgwODAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgTmFOLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAgICAg
ICA9IDB4MGYwMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3VibGUu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iZXIgICAgICAgID0gMHgw
NzgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVSZWFsLgotc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAgICAgICAgICA9IDB4MGY4MDAwMDA7
IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEJvb2xlYW4uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVy
ICAgICAgICAgICAgID0gMHgyMDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vbmUgb2YgdGhl
IGFib3ZlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAg
ICA9IDB4M2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4NDAwMDAwMDA7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2Fu
IGJlIGFueSBvZiB0aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1
bGxUb3AgICAgICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJv
dmUgcGx1cyBhbnl0aGluZyB0aGUgREZHIGNob29zZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY05vbmUgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDA7IC8vIFdlIGRvbid0IGtu
b3cgYW55dGhpbmcgeWV0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGaW5hbE9i
amVjdCAgICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2Jq
ZWN0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICAg
PSAweDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICAgPSAweDAwMDAwMDA4OyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50OEFycmF5ICAgICAgICAgID0gMHgwMDAw
MDAxMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNs
YXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAg
ICA9IDB4MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9uZSBv
ZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50MzJB
cnJheSAgICAgICAgID0gMHgwMDAwMDA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyQXJy
YXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNVaW50OEFycmF5ICAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YW4gVWludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ICA9IDB4MDAwMDAxMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMu
CitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgICA9IDB4
MDAwMDAyMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRz
IHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQzMkFycmF5
ICAgICAgICA9IDB4MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBv
ciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0Zsb2F0MzJBcnJheSAgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBV
aW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Zsb2F0NjRBcnJheSAgICAgICA9IDB4MDAwMDEwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1R5cGVkQXJyYXlWaWV3ICAgICA9IFNwZWNJbnQ4QXJy
YXkgfCBTcGVjSW50MTZBcnJheSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkgfCBT
cGVjVWludDhDbGFtcGVkQXJyYXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJyYXkg
fCBTcGVjRmxvYXQzMkFycmF5IHwgU3BlY0Zsb2F0NjRBcnJheTsKK3N0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjQXJndW1lbnRzICAgICAgICAgID0gMHgwMDAwMjAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBvYmplY3QuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY1N0cmluZ09iamVjdCAgICAgICA9IDB4MDAwMDQwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhIFN0cmluZ09iamVjdC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0
T3RoZXIgICAgICAgID0gMHgwMDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBi
dXQgbm90IEpTRmluYWxPYmplY3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCitzdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICA9IDB4MDAwMGZmZmY7IC8v
IEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rp
b24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAgICA9
IDB4MDAwMTAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBhbiBp
ZGVudGlmaWVyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIgICAg
ICAgICAgPSAweDAwMDIwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0
J3Mgbm90IGFuIGlkZW50aWZpZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0
cmluZyAgICAgICAgICAgICA9IDB4MDAwMzAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3Ry
aW5nLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAgICAgICAg
PSAweDAwMDQwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBhIHN1YmNs
YXNzIG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgPSAweDAwMDdmZmZmOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0ludDMyICAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBh
biBJbnQzMi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NDggICAgICAgICAg
ICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4IGFuZCB3ZSBpbnRl
bmQgaXQgdG8gdW5ib3ggaXQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hp
bmVJbnQgICAgICAgICA9IDB4MDE4MDAwMDA7IC8vIEl0J3Mgc29tZXRoaW5nIHRoYXQgd2UgY2Fu
IGRvIG1hY2hpbmUgaW50IGFyaXRobWV0aWMgb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0ludDQ4QXNEb3VibGUgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBzb21lIGtpbmQgb2YgaW50ZWdlci4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjTm9uSW50QXNEb3VibGUgICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IG5vdCBhbiBJbnQ0OCBidXQgaXQncyBhIHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91YmxlLgor
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICAgPSAweDA2
MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KK3N0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlTmFOICAgICAgICAgID0gMHgwODAwMDAwMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNE
b3VibGUgICAgICAgICAgICAgPSAweDBlMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4g
b3IgYSBOYU4gZG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29k
ZVJlYWxOdW1iZXIgPSAweDA2ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBhIERv
dWJsZVJlYWwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxSZWFsTnVtYmVy
ICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlUmVh
bCwgb3IgYSBJbnQ0OC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVO
dW1iZXIgICAgID0gMHgwZTgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3Vi
bGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxOdW1iZXIgICAgICAgICA9
IDB4MGY4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ0OCwgb3IgYSBEb3VibGUu
CitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAgICA9IDB4
MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICA9IDB4MjAwMDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBub25lIG9mIHRoZSBhYm92ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjSGVhcFRvcCAgICAgICAgICAgID0gMHgzZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBv
ZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNCeXRlY29kZVRvcCAgICAgICAgPSAweDdlZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9m
IHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NDguCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBh
bnkgb2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgogCiB0eXBlZGVm
IGJvb2wgKCpTcGVjdWxhdGVkVHlwZUNoZWNrZXIpKFNwZWN1bGF0ZWRUeXBlKTsKIApAQCAtMjQw
LDcgKzI0Miw3IEBAIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGUKIAog
aW5saW5lIGJvb2wgaXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIFNwZWNEb3VibGUpOworICAgIHJldHVy
biAhKHZhbHVlICYgKFNwZWNEb3VibGUgfCBTcGVjSW50NDgpKTsKIH0KIAogaW5saW5lIGJvb2wg
aXNJbnQzMlNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2YWx1ZSkK
QEAgLTI2NSw3ICsyNjcsNyBAQCBpbmxpbmUgYm9vbCBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbkV4
cGVjCiAKIGlubGluZSBib29sIGlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVjRG91Ymxl
ICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRG91YmxlKTsK
IH0KIAogaW5saW5lIGJvb2wgaXNJbnQ0OEFzRG91YmxlU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCkBAIC0yOTMsMTkgKzI5NSwzNCBAQCBpbmxpbmUgYm9vbCBpc0RvdWJsZVNwZWN1
bGF0aW9uRm9yQXJpdGhtCiAgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0RvdWJsZSk7CiB9CiAK
LWlubGluZSBib29sIGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQoraW5saW5lIGJvb2wgaXNCeXRlY29kZVJlYWxOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVk
VHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQnl0ZWNvZGVSZWFsTnVt
YmVyKSAmJiAhKHZhbHVlICYgflNwZWNCeXRlY29kZVJlYWxOdW1iZXIpOworfQorCitpbmxpbmUg
Ym9vbCBpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCit7
CisgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0Z1bGxSZWFsTnVtYmVyKSAmJiAhKHZhbHVlICYg
flNwZWNGdWxsUmVhbE51bWJlcik7Cit9CisKK2lubGluZSBib29sIGlzQnl0ZWNvZGVOdW1iZXJT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUg
JiBTcGVjQnl0ZWNvZGVOdW1iZXIpICYmICEodmFsdWUgJiB+U3BlY0J5dGVjb2RlTnVtYmVyKTsK
K30KKworaW5saW5lIGJvb2wgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY1JlYWxOdW1iZXIpICYmICEodmFs
dWUgJiB+U3BlY1JlYWxOdW1iZXIpOworICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNGdWxsTnVt
YmVyKSAmJiAhKHZhbHVlICYgflNwZWNGdWxsTnVtYmVyKTsKIH0KIAotaW5saW5lIGJvb2wgaXNO
dW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlzQnl0
ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY051bWJlcikgJiYgISh2YWx1ZSAmIH5T
cGVjTnVtYmVyKTsKKyAgICByZXR1cm4gaXNCeXRlY29kZU51bWJlclNwZWN1bGF0aW9uKHZhbHVl
ICYgflNwZWNPdGhlcik7CiB9CiAKLWlubGluZSBib29sIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBl
Y3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNGdWxsTnVt
YmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewot
ICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CisgICAg
cmV0dXJuIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CiB9CiAK
IGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5o
CShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTUgQEAgZW51bSBWYWx1
ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBBbHJlYWR5SW5KU1N0YWNrLAogICAgIC8vIEl0J3Mg
YWxyZWFkeSBpbiB0aGUgc3RhY2sgYnV0IHVuYm94ZWQuCiAgICAgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZEludDMyLAorICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCwKICAgICBB
bHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJv
eGVkQm9vbGVhbiwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlLAogICAgIC8v
IEl0J3MgaW4gYSByZWdpc3Rlci4KICAgICBJbkdQUiwKICAgICBVbmJveGVkSW50MzJJbkdQUiwK
KyAgICBVbmJveGVkSW50NDhJbkdQUiwKKyAgICBVbmJveGVkU3RyaWN0SW50NDhJbkdQUiwKICAg
ICBVbmJveGVkQm9vbGVhbkluR1BSLAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgSW5QYWly
LApAQCAtNjAsNiArNjMsOCBAQCBlbnVtIFZhbHVlUmVjb3ZlcnlUZWNobmlxdWUgewogICAgIERp
c3BsYWNlZEluSlNTdGFjaywKICAgICAvLyBJdCdzIGluIHRoZSBzdGFjaywgYXQgYSBkaWZmZXJl
bnQgbG9jYXRpb24sIGFuZCBpdCdzIHVuYm94ZWQuCiAgICAgSW50MzJEaXNwbGFjZWRJbkpTU3Rh
Y2ssCisgICAgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2ssCisgICAgU3RyaWN0SW50NDhEaXNwbGFj
ZWRJbkpTU3RhY2ssCiAgICAgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrLAogICAgIENlbGxEaXNw
bGFjZWRJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjaywKQEAgLTk1LDYg
KzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAor
ICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCgp
CisgICAgeworICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1f
dGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpCiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5IHJl
c3VsdDsKQEAgLTEyNSw2ICsxMzcsMTAgQEAgcHVibGljOgogICAgICAgICBWYWx1ZVJlY292ZXJ5
IHJlc3VsdDsKICAgICAgICAgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKQogICAg
ICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDMySW5HUFI7CisgICAgICAg
IGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgcmVz
dWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDQ4SW5HUFI7CisgICAgICAgIGVsc2UgaWYgKGRh
dGFGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0Lm1f
dGVjaG5pcXVlID0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFI7CiAgICAgICAgIGVsc2UgaWYgKGRh
dGFGb3JtYXQgPT0gRGF0YUZvcm1hdEJvb2xlYW4pCiAgICAgICAgICAgICByZXN1bHQubV90ZWNo
bmlxdWUgPSBVbmJveGVkQm9vbGVhbkluR1BSOwogICAgICAgICBlbHNlCkBAIC0xNjgsNiArMTg0
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDMyRGlz
cGxhY2VkSW5KU1N0YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUg
PSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OgorICAgICAgICAgICAgcmVz
dWx0Lm1fdGVjaG5pcXVlID0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6
CiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBEb3VibGVEaXNwbGFjZWRJbkpTU3Rh
Y2s7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyOSw2ICsyNTMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
OgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAgICAg
Y2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0Fz
VW5ib3hlZEJvb2xlYW46CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERv
dWJsZToKQEAgLTI0MCw3ICsyNjUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgZ3ByKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RlY2hu
aXF1ZSA9PSBJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBtX3Rl
Y2huaXF1ZSA9PSBVbmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQzMklu
R1BSKTsKKyAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5pcXVl
ID09IFVuYm94ZWRJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFuSW5H
UFIgfHwgbV90ZWNobmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hl
ZEludDQ4SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFIpOwog
ICAgICAgICByZXR1cm4gbV9zb3VyY2UuZ3ByOwogICAgIH0KICAgICAKQEAgLTI2Niw3ICsyOTEs
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rlcigp
IGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5K
U1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVj
aG5pcXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxs
RGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpT
U3RhY2spOworICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNr
IHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVl
ID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxh
Y2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2sg
fHwgbV90ZWNobmlxdWUgPT0gSW50NDhEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUg
PT0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gbV9zb3Vy
Y2UudmlydHVhbFJlZzsKICAgICB9CiAgICAgCkBAIC0yODUsNiArMzEwLDkgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAg
IG91dC5wcmludGYoIihpbnQzMikiKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2Fz
ZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIoaW50NDgpIik7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQWxyZWFkeUlu
SlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoY2VsbCkiKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwMCw2ICszMjgsMTIgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiaW50MzIo
JSVyJWQpIiwgZ3ByKCkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVuYm94
ZWRJbnQ0OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50ZigiaW50NDgoJSVyJWQpIiwgZ3By
KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ0
OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50Zigic3RyaWN0SW50NDgoJSVyJWQpIiwgZ3By
KCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5H
UFI6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJib29sKCUlciVkKSIsIGdwcigpKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTMyMCw2ICszNTQsMTIgQEAgcHVibGljOgogICAgICAgICBjYXNl
IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKmludDMy
KCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Y2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG91dC5wcmludGYoIipp
bnQ0OCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGNhc2UgU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCIqc3RyaWN0SW50NDgoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAgICAg
ICAgICAgIG91dC5wcmludGYoIipkb3VibGUoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG5lZWRzVHlwZUNoZWNr
KE5vZGUqIG5vZGUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBmb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH50eXBlc1Bhc3NlZFRocm91Z2g7
CisgICAgICAgIHJldHVybiAhZm9yTm9kZShub2RlKS5pc1R5cGUodHlwZXNQYXNzZWRUaHJvdWdo
KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBuZWVkc1R5cGVDaGVjayhFZGdlIGVkZ2UsIFNwZWN1
bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKQEAgLTE2OCw3ICsxNjgsNyBAQCBwcml2YXRl
OgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJCeVR5cGUoTm9kZSogbm9kZSwgRWRnZSYg
ZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gZm9yTm9kZShlZGdlKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fdHlwZSAmIH50eXBl
KSB7CisgICAgICAgIGlmICghdmFsdWUuaXNUeXBlKHR5cGUpKSB7CiAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgZWRnZS5zZXRQcm9vZlN0YXR1cyhOZWVk
c0NoZWNrKTsKICAgICAgICAgfSBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lv
biAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2ICszMTAsMjYgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIAorICAgIGNhc2UgSW50NDhUb0RvdWJsZTogeworICAgICAgICBKU1ZhbHVlIGNo
aWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxk
ICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNo
aWxkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAK
KyAgICBjYXNlIEludDQ4VG9WYWx1ZTogeworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlz
TnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZSkgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBj
YXNlIFZhbHVlQWRkOgogICAgIGNhc2UgQXJpdGhBZGQ6IHsKICAgICAgICAgSlNWYWx1ZSBsZWZ0
ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKQEAgLTMyNCw5ICszNDQsMTUgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYg
KCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAg
ICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSku
c2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5pc1R5cGUoU3BlY0ludDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUt
PmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRD
YW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNl
OgotICAgICAgICAgICAgaWYgKGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICAmJiBpc1JlYWxOdW1iZXJTcGVjdWxh
dGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQorICAgICAgICAgICAgaWYgKGlz
RnVsbFJlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUp
CisgICAgICAgICAgICAgICAgJiYgaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUo
bm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC0zMzQsNyArMzYwLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBWYWx1ZUFkZCk7CiAg
ICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsK
LSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjU3RyaW5nIHwgU3BlY0ludDMy
IHwgU3BlY051bWJlcik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY1N0
cmluZyB8IFNwZWNCeXRlY29kZU51bWJlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBicmVhazsKQEAgLTM1OCw2ICszODQsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRydW5j
YXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2Rl
LT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NDgp
OworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3BlY0lu
dDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUo
U3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0z
ODAsNiArNDEyLDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS0+YXJpdGhO
b2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIGlmIChtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpCisgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGlmICghYnl0
ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCisgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjRG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA0LDkgKzQ0MywxMyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAg
fHwgIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkp
KQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CisgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRy
dWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAgICAg
ICAgICAgaWYgKGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdHlwZSkKLSAgICAgICAgICAgICAgICB8fCBpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JO
b2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQorICAgICAgICAgICAgaWYgKGlzRnVsbFJlYWxO
dW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpCisgICAgICAg
ICAgICAgICAgfHwgaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hp
bGQyKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNEb3VibGVSZWFsKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC01ODYsNyArNjI5LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKGFic3RyYWN0
Q2hpbGQubV90eXBlKSkgeworICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oYWJz
dHJhY3RDaGlsZC5tX3R5cGUpKSB7CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCB2bS0+
c21hbGxTdHJpbmdzLm51bWJlclN0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC04MTEsNiArODU0LDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToKICAgICAgICAgICAgIGlm
IChub2RlLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOworICAgICAgICAgICAgZWxzZSBpZiAoZW5hYmxlSW50
NDgoKSAmJiBub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCisgICAgICAgICAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC04NjMsNyArOTA4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQXJyYXlQdXNoOgogICAgICAgICBub2RlLT5zZXRD
YW5FeGl0KHRydWUpOwogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xv
YmJlckxpbWl0KTsKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNOdW1iZXIpOwor
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0J5dGVjb2RlTnVtYmVyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIEFycmF5UG9wOgpAQCAtOTM0LDggKzk3
OSw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAg
Ly8gTkIuIFRoZSBtb3JlIGNhbm9uaWNhbCB3YXkgb2Ygd3JpdGluZyB0aGlzIHdvdWxkIGhhdmUg
YmVlbjoKICAgICAgICAgLy8KICAgICAgICAgLy8gZGVzdGluYXRpb24gPSBzb3VyY2U7Ci0gICAg
ICAgIC8vIGlmIChkZXN0aW5hdGlvbi5tX3R5cGUgJiAhKFNwZWNOdW1iZXIgfCBTcGVjU3RyaW5n
IHwgU3BlY0Jvb2xlYW4pKSB7Ci0gICAgICAgIC8vICAgICBkZXN0aW5hdGlvbi5maWx0ZXIoU3Bl
Y051bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbik7CisgICAgICAgIC8vIGlmIChkZXN0
aW5hdGlvbi5tX3R5cGUgJiAhKFNwZWNGdWxsTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNwZWNCb29s
ZWFuKSkgeworICAgICAgICAvLyAgICAgZGVzdGluYXRpb24uZmlsdGVyKFNwZWNGdWxsTnVtYmVy
IHwgU3BlY1N0cmluZyB8IFNwZWNCb29sZWFuKTsKICAgICAgICAgLy8gICAgIEFic3RyYWN0VmFs
dWUgc3RyaW5nOwogICAgICAgICAvLyAgICAgc3RyaW5nLnNldCh2bS0+c3RyaW5nU3RydWN0dXJl
KTsKICAgICAgICAgLy8gICAgIGRlc3RpbmF0aW9uLm1lcmdlKHN0cmluZyk7CkBAIC05NTUsNyAr
MTAwMCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CiAgICAgICAg
IAogICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gc291cmNlLm1fdHlwZTsKLSAgICAgICAg
aWYgKHR5cGUgJiB+KFNwZWNOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4pKQorICAg
ICAgICBpZiAodHlwZSAmIH4oU3BlY0Z1bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xl
YW4pKQogICAgICAgICAgICAgdHlwZSA9IChTcGVjSGVhcFRvcCAmIH5TcGVjQ2VsbCkgfCBTcGVj
U3RyaW5nOwogCiAgICAgICAgIGRlc3RpbmF0aW9uLnNldFR5cGUodHlwZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9u
IDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDggQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpz
ZXQoR3JhcGgmIGdyYXBoLCBKUwogICAgIH0KICAgICAgICAgCiAgICAgbV90eXBlID0gc3BlY3Vs
YXRpb25Gcm9tVmFsdWUodmFsdWUpOworICAgIGlmIChtX3R5cGUgPT0gU3BlY0ludDQ4QXNEb3Vi
bGUpCisgICAgICAgIG1fdHlwZSA9IFNwZWNJbnQ0ODsKICAgICBtX3ZhbHVlID0gdmFsdWU7CiAg
ICAgICAgIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTIyNyw2ICsyMjksNyBAQCBGaWx0
cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6Om5vcm1hbGl6CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAorI2lmICFBU1NFUlRfRElTQUJMRUQKIHZvaWQgQWJzdHJhY3RWYWx1ZTo6Y2hlY2tDb25z
aXN0ZW5jeSgpIGNvbnN0CiB7CiAgICAgaWYgKCEobV90eXBlICYgU3BlY0NlbGwpKSB7CkBAIC0y
MzgsMTQgKzI0MSwxOSBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OmNoZWNrQ29uc2lzdGVuY3koKSBj
CiAgICAgaWYgKGlzQ2xlYXIoKSkKICAgICAgICAgQVNTRVJUKCFtX3ZhbHVlKTsKICAgICAKLSAg
ICBpZiAoISFtX3ZhbHVlKQotICAgICAgICBBU1NFUlQobWVyZ2VTcGVjdWxhdGlvbnMobV90eXBl
LCBzcGVjdWxhdGlvbkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gbV90eXBlKTsKKyAgICBpZiAoISFt
X3ZhbHVlKSB7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBtX3R5cGU7CisgICAgICAg
IGlmICh0eXBlICYgU3BlY0ludDQ4KQorICAgICAgICAgICAgdHlwZSB8PSBTcGVjSW50NDhBc0Rv
dWJsZTsKKyAgICAgICAgQVNTRVJUKG1lcmdlU3BlY3VsYXRpb25zKHR5cGUsIHNwZWN1bGF0aW9u
RnJvbVZhbHVlKG1fdmFsdWUpKSA9PSB0eXBlKTsKKyAgICB9CiAgICAgCiAgICAgLy8gTm90ZSB0
aGF0IGl0J3MgcG9zc2libGUgZm9yIGEgcHJlZGljdGlvbiBsaWtlIChGaW5hbCwgW10pLiBUaGlz
IHJlYWxseSBtZWFucyB0aGF0CiAgICAgLy8gdGhlIHZhbHVlIGlzIGJvdHRvbSBhbmQgdGhhdCBh
bnkgY29kZSB0aGF0IHVzZXMgdGhlIHZhbHVlIGlzIHVucmVhY2hhYmxlLiBCdXQKICAgICAvLyB3
ZSBkb24ndCB3YW50IHRvIGdldCBwZWRhbnRpYyBhYm91dCB0aGlzIGFzIGl0IHdvdWxkIG9ubHkg
aW5jcmVhc2UgdGhlIGNvbXB1dGF0aW9uYWwKICAgICAvLyBjb21wbGV4aXR5IG9mIHRoZSBjb2Rl
LgogfQorI2VuZGlmCiAKIHZvaWQgQWJzdHJhY3RWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDE2IEBAIHN0
cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0K
ICAgICAKKyAgICBib29sIGNvdWxkQmVUeXBlKFNwZWN1bGF0ZWRUeXBlIGRlc2lyZWRUeXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICEhKG1fdHlwZSAmIGRlc2lyZWRUeXBlKTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBpc1R5cGUoU3BlY3VsYXRlZFR5cGUgZGVzaXJlZFR5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gIShtX3R5cGUgJiB+ZGVzaXJlZFR5cGUpOworICAgIH0KKyAgICAKICAg
ICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0IFN0cnVjdHVyZVNldCYpOwog
ICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJyYXlNb2RlcyhBcnJheU1vZGVzIGFy
cmF5TW9kZXMpOwpAQCAtMTkzLDIyICsyMDMsNiBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAg
ICAgCiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJCeVZhbHVlKEpTVmFsdWUgdmFsdWUpOwog
ICAgIAotICAgIGJvb2wgdmFsaWRhdGVUeXBlKEpTVmFsdWUgdmFsdWUpIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAoaXNIZWFwVG9wKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgCi0gICAgICAgIGlmIChtZXJnZVNwZWN1bGF0aW9ucyhtX3R5cGUsIHNwZWN1bGF0aW9uRnJv
bVZhbHVlKHZhbHVlKSkgIT0gbV90eXBlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAKLSAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgQVNTRVJU
KG1fdHlwZSAmIFNwZWNFbXB0eSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAogICAgIGJvb2wg
dmFsaWRhdGUoSlNWYWx1ZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0hlYXBU
b3AoKSkKQEAgLTI1MSw3ICsyNDUsMTEgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAg
ICAgICAgfHwgIWFycmF5TW9kZXNBcmVDbGVhck9yVG9wKG1fYXJyYXlNb2Rlcyk7CiAgICAgfQog
ICAgIAorI2lmIEFTU0VSVF9ESVNBQkxFRAorICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNv
bnN0IHsgfQorI2Vsc2UKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKKyNlbmRp
ZgogICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0
KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkBAIC0zNjMsNiAr
MzYxLDI5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fYXJyYXlNb2RlcyA9IEFMTF9BUlJBWV9NT0RF
UzsKICAgICB9CiAgICAgCisgICAgYm9vbCB2YWxpZGF0ZVR5cGUoSlNWYWx1ZSB2YWx1ZSkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIChpc0hlYXBUb3AoKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAKKyAgICAgICAgLy8gQ29uc3RhbnQgZm9sZGluZyBhbHdheXMgcmVwcmVz
ZW50cyBJbnQ0OCdzIGluIGEgZG91YmxlIChpLmUuIEludDQ4QXNEb3VibGUpLgorICAgICAgICAv
LyBTbyBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkgZm9yIGFuIEludDQ4IHZhbHVlIHdpbGwg
cmV0dXJuIEludDQ4QXNEb3VibGUsCisgICAgICAgIC8vIGFuZCB0aGF0J3MgZmluZSAtIHRoZSB0
eXBlIHZhbGlkYXRlcyBqdXN0IGZpbmUuCisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBt
X3R5cGU7CisgICAgICAgIGlmICh0eXBlICYgU3BlY0ludDQ4KQorICAgICAgICAgICAgdHlwZSB8
PSBTcGVjSW50NDhBc0RvdWJsZTsKKyAgICAgICAgCisgICAgICAgIGlmIChtZXJnZVNwZWN1bGF0
aW9ucyh0eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IHR5cGUpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlICYgU3BlY0VtcHR5KTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgCiAgICAgdm9pZCBtYWtlVG9wKFNwZWN1bGF0ZWRUeXBlIHRvcCkKICAgICB7
CiAgICAgICAgIG1fdHlwZSB8PSB0b3A7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NywyMSArMTU3
LDIxIEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZShTcGVjdWxhdGVkVHkKICAgICAgICAg
ICAgIHJldHVybiB3aXRoVHlwZShBcnJheTo6Rm9yY2VFeGl0KTsKICAgICAgICAgaWYgKGlzSW50
MzJTcGVjdWxhdGlvbih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252
ZXJzaW9uKEFycmF5OjpJbnQzMiwgQXJyYXk6OkNvbnZlcnQpOwotICAgICAgICBpZiAoaXNOdW1i
ZXJTcGVjdWxhdGlvbih2YWx1ZSkpCisgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlv
bih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5
OjpEb3VibGUsIEFycmF5OjpDb252ZXJ0KTsKICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5kQ29u
dmVyc2lvbihBcnJheTo6Q29udGlndW91cywgQXJyYXk6OkNvbnZlcnQpOwogICAgICAgICAKICAg
ICBjYXNlIEFycmF5OjpJbnQzMjoKICAgICAgICAgaWYgKCF2YWx1ZSB8fCBpc0ludDMyU3BlY3Vs
YXRpb24odmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICBpZiAoaXNO
dW1iZXJTcGVjdWxhdGlvbih2YWx1ZSkpCisgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxh
dGlvbih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFy
cmF5OjpEb3VibGUsIEFycmF5OjpDb252ZXJ0KTsKICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5k
Q29udmVyc2lvbihBcnJheTo6Q29udGlndW91cywgQXJyYXk6OkNvbnZlcnQpOwogICAgICAgICAK
ICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgIGlmIChmbGFncyAmIE5vZGVCeXRlY29k
ZVVzZXNBc0ludCkKICAgICAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJy
YXk6OkNvbnRpZ3VvdXMsIEFycmF5OjpSYWdlQ29udmVydCk7Ci0gICAgICAgIGlmICghdmFsdWUg
fHwgaXNOdW1iZXJTcGVjdWxhdGlvbih2YWx1ZSkpCisgICAgICAgIGlmICghdmFsdWUgfHwgaXNG
dWxsTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuICp0aGlzOwog
ICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpDb250aWd1b3VzLCBB
cnJheTo6Q29udmVydCk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywyMSArNjMsNiBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIAotICAgIE5vZGUqIGNhbm9uaWNhbGl6ZShO
b2RlKiBub2RlKQotICAgIHsKLSAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIAotICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBWYWx1ZVRvSW50MzIpCi0g
ICAgICAgICAgICBub2RlID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIG5vZGU7Ci0gICAgfQotICAgIE5vZGUqIGNhbm9uaWNhbGl6ZShFZGdlIGVkZ2Up
Ci0gICAgewotICAgICAgICByZXR1cm4gY2Fub25pY2FsaXplKGVkZ2Uubm9kZSgpKTsKLSAgICB9
Ci0gICAgCiAgICAgdW5zaWduZWQgZW5kSW5kZXhGb3JQdXJlQ1NFKCkKICAgICB7CiAgICAgICAg
IHVuc2lnbmVkIHJlc3VsdCA9IG1fbGFzdFNlZW5bbV9jdXJyZW50Tm9kZS0+b3AoKV07CkBAIC05
NCw5ICs3OSw5IEBAIHByaXZhdGU6CiAKICAgICBOb2RlKiBwdXJlQ1NFKE5vZGUqIG5vZGUpCiAg
ICAgewotICAgICAgICBOb2RlKiBjaGlsZDEgPSBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBOb2RlKiBjaGlsZDIgPSBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQyKCkpOwot
ICAgICAgICBOb2RlKiBjaGlsZDMgPSBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQzKCkpOworICAg
ICAgICBFZGdlIGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBFZGdlIGNoaWxkMiA9
IG5vZGUtPmNoaWxkMigpOworICAgICAgICBFZGdlIGNoaWxkMyA9IG5vZGUtPmNoaWxkMygpOwog
ICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZW5kSW5kZXhGb3JQdXJlQ1NFKCk7
IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIG90aGVyTm9kZSA9IG1fY3VycmVudEJsb2NrLT5h
dChpKTsKQEAgLTEwOSwxOSArOTQsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChub2Rl
LT5hcml0aE5vZGVGbGFncygpICE9IG90aGVyTm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZSogb3Ro
ZXJDaGlsZCA9IGNhbm9uaWNhbGl6ZShvdGhlck5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IEVkZ2Ugb3RoZXJDaGlsZCA9IG90aGVyTm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgICAgICBpZiAo
IW90aGVyQ2hpbGQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyTm9kZTsKICAgICAgICAg
ICAgIGlmIChvdGhlckNoaWxkICE9IGNoaWxkMSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgb3RoZXJDaGlsZCA9IGNhbm9uaWNhbGl6ZShvdGhl
ck5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG90aGVyQ2hpbGQgPSBvdGhlck5vZGUtPmNo
aWxkMigpOwogICAgICAgICAgICAgaWYgKCFvdGhlckNoaWxkKQogICAgICAgICAgICAgICAgIHJl
dHVybiBvdGhlck5vZGU7CiAgICAgICAgICAgICBpZiAob3RoZXJDaGlsZCAhPSBjaGlsZDIpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG90aGVy
Q2hpbGQgPSBjYW5vbmljYWxpemUob3RoZXJOb2RlLT5jaGlsZDMoKSk7CisgICAgICAgICAgICBv
dGhlckNoaWxkID0gb3RoZXJOb2RlLT5jaGlsZDMoKTsKICAgICAgICAgICAgIGlmICghb3RoZXJD
aGlsZCkKICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXJOb2RlOwogICAgICAgICAgICAgaWYg
KG90aGVyQ2hpbGQgIT0gY2hpbGQzKQpAQCAtMzc3LDIxICszNjIsMjEgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CiAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwotICAgICAgICAg
ICAgaWYgKG5vZGUgPT0gY2hpbGQxIHx8IG5vZGUgPT0gY2Fub25pY2FsaXplKGNoaWxkMikpIAor
ICAgICAgICAgICAgaWYgKG5vZGUgPT0gY2hpbGQxIHx8IG5vZGUgPT0gY2hpbGQyKSAKICAgICAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAg
ICAgICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5i
eVZhbElzUHVyZShub2RlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IGNoaWxkMSAmJiBjYW5vbmljYWxpemUobm9k
ZS0+Y2hpbGQyKCkpID09IGNhbm9uaWNhbGl6ZShjaGlsZDIpKQorICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKSA9PSBjaGlsZDEgJiYgbm9kZS0+Y2hpbGQyKCkgPT0gY2hpbGQyKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxp
YXM6IHsKICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGguYnlWYWxJc1B1cmUobm9kZSkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDApID09IGNoaWxkMSAmJiBjYW5vbmljYWxpemUobV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAxKSkgPT0gY2Fub25pY2FsaXplKGNoaWxkMikpCisgICAgICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkgPT0gY2hpbGQxICYmIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMSkgPT0gY2hpbGQyKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKS5ub2RlKCk7CiAgICAgICAgICAgICAg
ICAgLy8gV2UgbXVzdCBhc3N1bWUgdGhhdCB0aGUgUHV0QnlWYWwgd2lsbCBjbG9iYmVyIHRoZSBs
b2NhdGlvbiB3ZSdyZSBnZXR0aW5nIGZyb20uCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdl
IGNhbiBkbyBiZXR0ZXI7IGlmIHdlIGtub3cgdGhhdCB0aGUgUHV0QnlWYWwgaXMgYWNjZXNzaW5n
IGFuIGFycmF5IG9mIGEKQEAgLTEwOTAsNiArMTA3NSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgQ29tcGFyZUVxQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAg
ICBjYXNlIE1ha2VSb3BlOgorICAgICAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIGNh
c2UgSW50NDhUb1ZhbHVlOgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5h
dGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50
KHB1cmVDU0Uobm9kZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDggQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgTG9naWNhbE5vdDoK
ICAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoK
KyAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CiAgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBNb3ZIaW50QW5kQ2hlY2s6CkBAIC0xODAsNiAr
MTgyLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAg
ICBzd2l0Y2ggKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNl
OgogICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAg
ICByZWFkKFdvcmxkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAko
cmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0MywxNSBAQCBpbmxpbmUgYm9vbCBlbmFibGVD
b25jdXJyZW50SklUKCkKICNlbmRpZgogfQogCitpbmxpbmUgYm9vbCBlbmFibGVJbnQ0OCgpCit7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCit9CisKIGVudW0gU3BpbGxSZWdpc3RlcnNNb2RlIHsgTmVlZFRvU3Bp
bGwsIERvbnRTcGlsbCB9OwogCiBlbnVtIE5vUmVzdWx0VGFnIHsgTm9SZXN1bHQgfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24g
MTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
Zml4dXBTZXRMb2NhbHNJbkJsb2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkpOwogICAgICAg
ICB9CiAgICAgICAgIAorICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJs
b2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpCisgICAgICAgICAg
ICBmaXh1cFVudHlwZWRTZXRMb2NhbHNJbkJsb2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkp
OworICAgICAgICAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC05Miw3ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBTZXRMb2Nh
bDogewogICAgICAgICAgICAgLy8gVGhpcyBnZXRzIGhhbmRsZWQgYnkgZml4dXBTZXRMb2NhbHNJ
bkJsb2NrKCkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQml0QW5kOgpAQCAtMTI0LDYgKzEyNywx
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZU51bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE5Nyw2ICsyMDUsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaXhFZGdlPE51
bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTIwNyw2ICsyMTksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
Zml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMzAwLDYgKzMxNywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAgICAgJiYg
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5v
ZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzU1LDYgKzM3OCwxMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAgICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRl
TWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
IHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2Rl
LT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQyKCkpOwpAQCAtNDc1LDcgKzUwNCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Y2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+
KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAg
IGlmIChjaGlsZDMtPnByZWRpY3Rpb24oKSAmIFNwZWNJbnQ0OCkKKyAgICAgICAgICAgICAgICAg
ICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQzKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAg
ICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKQEAgLTg0Nyw2ICs4NzksOCBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgICAgICBjYXNl
IENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRl
cjoKKyAgICAgICAgY2FzZSBJbnQ0OFRvRG91YmxlOgorICAgICAgICBjYXNlIEludDQ4VG9WYWx1
ZToKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgCkBAIC0xMTg5LDYgKzEyMjMsOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIEZsdXNoZWRDZWxsOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIwMyw2ICsxMjQwLDIzIEBA
IHByaXZhdGU6CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgIH0K
ICAgICAKKyAgICB2b2lkIGZpeHVwVW50eXBlZFNldExvY2Fsc0luQmxvY2soQmFzaWNCbG9jayog
YmxvY2spCisgICAgeworICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsKKyAgICAgICAgbV9ibG9jayA9IGJs
b2NrOworICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0gMDsgbV9pbmRleEluQmxvY2sgPCBi
bG9jay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2NrKSB7CisgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5hdChtX2luZGV4SW5CbG9jayk7CisgICAgICAgICAg
ICBpZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICB9CisgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxv
Y2spOworICAgIH0KKyAgICAKICAgICBOb2RlKiBjaGVja0FycmF5KEFycmF5TW9kZSBhcnJheU1v
ZGUsIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIE5vZGUqIGFycmF5LCBOb2RlKiBpbmRl
eCwgYm9vbCAoKnN0b3JhZ2VDaGVjaykoY29uc3QgQXJyYXlNb2RlJikgPSBjYW5DU0VTdG9yYWdl
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGFycmF5TW9kZS5pc1NwZWNpZmljKCkpOwpAQCAtMTMy
MSw2ICsxMzc1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfHwgaXNCb29sZWFuU3Bl
Y3VsYXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgbV9wcm9m
aXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRy
dWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAg
ICAgICAgICAgIGlmIChpc01hY2hpbmVJbnRTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlv
bigpKSkKKyAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxl
LT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDZWxsVXNlOgogICAgICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICAgICAg
Y2FzZSBPYmplY3RVc2U6CkBAIC0xMzQ3LDEyICsxNDA1LDgwIEBAIHByaXZhdGU6CiAgICAgdGVt
cGxhdGU8VXNlS2luZCB1c2VLaW5kPgogICAgIHZvaWQgZml4RWRnZShFZGdlJiBlZGdlLCBTcGVj
dWxhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBCYWNrd2FyZFNwZWN1bGF0aW9uKQogICAgIHsK
LSAgICAgICAgaWYgKGlzRG91YmxlKHVzZUtpbmQpICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUlu
dDMyRm9yQXJpdGhtZXRpYygpKSB7Ci0gICAgICAgICAgICBpbmplY3RJbnQzMlRvRG91YmxlTm9k
ZShlZGdlLCB1c2VLaW5kLCBkaXJlY3Rpb24pOworICAgICAgICBpZiAoaXNEb3VibGUodXNlS2lu
ZCkpIHsKKyAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRo
bWV0aWMoKSkgeworICAgICAgICAgICAgICAgIGluamVjdEludDMyVG9Eb3VibGVOb2RlKGVkZ2Us
IHVzZUtpbmQsIGRpcmVjdGlvbik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiBlZGdl
LT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBNYWtl
IGFsbCBkb3VibGUgdXNlcyBvZiBpbnQ0OCB2YWx1ZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgSW50
NDhUb0RvdWJsZS4KKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciB0aGUgc2FtZSByZWFz
b24gYXMgSW50NDhUb1ZhbHVlIChzZWUgYmVsb3cpIGV4Y2VwdCB0aGF0CisgICAgICAgICAgICAg
ICAgLy8gSW50OFRvRG91YmxlIHdpbGwgY29udmVydCBpbnQ0OCdzIHRoYXQgZml0IGluIGFuIGlu
dDMyIGludG8gYSBkb3VibGUKKyAgICAgICAgICAgICAgICAvLyByYXRoZXIgdGhhbiB0cnlpbmcg
dG8gY3JlYXRlIGEgYm94ZWQgaW50MzIgbGlrZSBJbnQ0OFRvVmFsdWUgZG9lcy4KKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4
QXNEb3VibGUsIEludDQ4VG9Eb3VibGUsCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudE5v
ZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJlclVzZSkpOworICAgICAgICAg
ICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoZW5h
YmxlSW50NDgoKSAmJiB1c2VLaW5kICE9IE1hY2hpbmVJbnRVc2UKKyAgICAgICAgICAgICYmIGVk
Z2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSAmJiAhZWRnZS0+c2hvdWxkU3BlY3VsYXRl
SW50MzIoKSkgeworICAgICAgICAgICAgLy8gV2UgbWFrZSBhbGwgbm9uLWludDQ4IHVzZXMgb2Yg
aW50NDggdmFsdWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDQ4VG9WYWx1ZQorICAgICAgICAg
ICAgLy8gbm9kZSB0byBlbnN1cmUgdGhhdCB3ZSBoYW5kbGUgdGhpcyBwcm9wZXJseToKKyAgICAg
ICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6
IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgQGEpCisgICAg
ICAgICAgICAvLyBkOiBBcml0aEFkZChAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAgICAg
ICAgIC8vIFdpdGhvdXQgYW4gaW50ZXJtZWRpYXRlIG5vZGUgYW5kIGp1c3QgbGFiZWxpbmcgdGhl
IHVzZXMsIHdlIHdpbGwgZ2V0OgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNv
bWVJbnQ0OAorICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoSW50NDg6QGEsIC4uLikKKyAgICAg
ICAgICAgIC8vIGM6IENhbGwoLi4uLCBVbnR5cGVkOkBhKQorICAgICAgICAgICAgLy8gZDogQXJp
dGhBZGQoSW50NDg6QGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBBbmQg
bm93IHRoZSBjLT5VbnR5cGVkOkBhIGVkZ2Ugd2lsbCBib3ggdGhlIHZhbHVlIG9mIEBhIGludG8g
YSBkb3VibGUuIFRoaXMKKyAgICAgICAgICAgIC8vIGlzIGJhZCwgYmVjYXVzZSBub3cgdGhlIGQt
PkludDQ4OkBhIGVkZ2Ugd2lsbCBlaXRoZXIgaGF2ZSB0byBkbyBkb3VibGUtdG8taW50CisgICAg
ICAgICAgICAvLyBjb252ZXJzaW9ucywgb3Igd2lsbCBoYXZlIHRvIE9TUiBleGl0IHVuY29uZGl0
aW9uYWxseS4gQWx0ZXJuYXRpdmVseSB3ZSBjb3VsZAorICAgICAgICAgICAgLy8gaGF2ZSB0aGUg
Yy0+VW50eXBlZDpAYSBlZGdlIGJveCB0aGUgdmFsdWUgYnkgY29weWluZyByYXRoZXIgdGhhbiBp
bi1wbGFjZS4KKyAgICAgICAgICAgIC8vIEJ1dCB0aGVzZSBib3hpbmdzIGFyZSBhbHNvIGNvc3Rs
eSBzbyB0aGlzIHdvdWxkbid0IGJlIGdyZWF0LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAg
IC8vIFRoZSBzb2x1dGlvbiB3ZSB1c2UgaXMgdG8gYWx3YXlzIGhhdmUgbm9uLUludDQ4IHVzZXMg
b2YgcHJlZGljdGVkIEludDQ4J3MgdXNlCisgICAgICAgICAgICAvLyBhbiBpbnRlcnZlbmluZyBJ
bnQ0OFRvVmFsdWUgbm9kZToKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21l
SW50NDgKKyAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAg
ICAgICAvLyB4OiBJbnQ0OFRvVmFsdWUoSW50NDg6QGEpCisgICAgICAgICAgICAvLyBjOiBDYWxs
KC4uLiwgVW50eXBlZDpAeCkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEludDQ4OkBhLCAu
Li4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGV2ZW4gaWYgd2Ug
aGFkIG11bHRpcGxlIG5vbi1pbnQ0OCB1c2VzIG9mIEBhLCB0aGUgbXVsdGlwbGUKKyAgICAgICAg
ICAgIC8vIEludDQ4VG9WYWx1ZSdzIHdvdWxkIGdldCBDU0UnZCB0b2dldGhlci4gU28gdGhlIGJv
eGluZyB3b3VsZCBvbmx5IGhhcHBlbiBvbmNlLgorICAgICAgICAgICAgLy8gQXQgdGhlIHNhbWUg
dGltZSwgQGEgd291bGQgY29udGludWUgdG8gYmUgcmVwcmVzZW50ZWQgYXMgYSBuYXRpdmUgaW50
NDguCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQW4gYWx0ZXJuYXRpdmUgd291bGQg
aGF2ZSBiZWVuIHRvIGluc2VydCBUb05hdGl2ZUludDQ4IG5vZGVzIG9uIGludDQ4IHVzZXMgb2YK
KyAgICAgICAgICAgIC8vIGludDQ4J3MuIFRoaXMgd291bGQgaGF2ZSBoYW5kbGVkIHRoZSBhYm92
ZSBleGFtcGxlIGJ1dCB3b3VsZCBmYWxsIG92ZXIgZm9yOgorICAgICAgICAgICAgLy8KKyAgICAg
ICAgICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8gYjogQ2FsbCguLi4sIEBhKQor
ICAgICAgICAgICAgLy8gYzogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAg
ICAgICAgICAvLyBCdXQgdGhlIHNvbHV0aW9uIHdlIHVzZSBoYW5kbGVzIHRoZSBhYm92ZSBncmFj
ZWZ1bGx5LgorICAgICAgICAgICAgCisgICAgICAgICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVj
SW50NDgsIEludDQ4VG9WYWx1ZSwKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2Rl
T3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICBlZGdl
ID0gRWRnZShyZXN1bHQsIHVzZUtpbmQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTx1c2VLaW5kPihlZGdlLm5v
ZGUoKSk7CisgICAgICAgIAogICAgICAgICBlZGdlLnNldFVzZUtpbmQodXNlS2luZCk7CiAgICAg
fQogICAgIApAQCAtMTM3OCw3ICsxNTA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluamVjdElu
dDMyVG9Eb3VibGVOb2RlKEVkZ2UmIGVkZ2UsIFVzZUtpbmQgdXNlS2luZCA9IE51bWJlclVzZSwg
U3BlY3VsYXRpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gQmFja3dhcmRTcGVjdWxhdGlvbikKICAg
ICB7CiAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0g
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4LCBJbnQzMlRvRG91YmxlLAorICAg
ICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0OEFzRG91YmxlLCBJbnQzMlRvRG91Ymxl
LAogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUo
KSwgTnVtYmVyVXNlKSk7CiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yd2FyZFNwZWN1bGF0
aW9uKQogICAgICAgICAgICAgcmVzdWx0LT5tZXJnZUZsYWdzKE5vZGVFeGl0c0ZvcndhcmQpOwpA
QCAtMTQzNCwxMyArMTU2MCwyMCBAQCBwcml2YXRlOgogICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUlu
dGVnZXJBZGQoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFkZFNwZWN1bGF0aW9uTW9kZSBt
b2RlID0gbV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1vZGUobm9kZSk7Ci0gICAgICAgIGlmIChtb2Rl
ID09IERvbnRTcGVjdWxhdGVJbnQzMikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKG1vZGUgIT0gRG9udFNwZWN1bGF0ZUludDMyKSB7CisgICAgICAgICAgICB0cnVuY2F0
ZUNvbnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUsIG1vZGUpOworICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIHRydW5jYXRlQ29uc3RhbnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9kZSk7
Ci0gICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgewor
ICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIAogICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUdldEFycmF5TGVuZ3RoKE5v
ZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9y
bWF0LmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGbHVzaEZvcm1hdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDkgQEAgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEZsdQogICAgIGNhc2UgRmx1c2hlZEludDMy
OgogICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWRJbnQzMiIpOwogICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIG91dC5wcmludCgiRmx1c2hlZEludDQ4Iik7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAgIG91dC5w
cmludCgiRmx1c2hlZERvdWJsZSIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogZW51bSBG
bHVzaEZvcm1hdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJbnQzMiwKKyAgICBGbHVz
aGVkSW50NDgsCiAgICAgRmx1c2hlZERvdWJsZSwKICAgICBGbHVzaGVkQ2VsbCwKICAgICBGbHVz
aGVkQm9vbGVhbiwKQEAgLTU1LDYgKzU2LDggQEAgaW5saW5lIE5vZGVGbGFncyByZXN1bHRGb3Io
Rmx1c2hGb3JtYXQgZgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEpTOwogICAgIGNhc2UgRmx1
c2hlZEludDMyOgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEludDMyOworICAgIGNhc2UgRmx1
c2hlZEludDQ4OgorICAgICAgICByZXR1cm4gTm9kZVJlc3VsdEludDQ4OwogICAgIGNhc2UgRmx1
c2hlZERvdWJsZToKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHROdW1iZXI7CiAgICAgY2FzZSBG
bHVzaGVkQm9vbGVhbjoKQEAgLTc0LDYgKzc3LDggQEAgaW5saW5lIFVzZUtpbmQgdXNlS2luZEZv
cihGbHVzaEZvcm1hdCBmbwogICAgICAgICByZXR1cm4gQ2VsbFVzZTsKICAgICBjYXNlIEZsdXNo
ZWRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMyVXNlOworICAgIGNhc2UgRmx1c2hlZEludDQ4
OgorICAgICAgICByZXR1cm4gTWFjaGluZUludFVzZTsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6
CiAgICAgICAgIHJldHVybiBOdW1iZXJVc2U7CiAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHJl
dmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlv
bkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsMTkgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgZ3ByLCBEYXRhRm9ybWF0SW50MzIpOwog
ICAgIH0KKyAgICB2b2lkIGluaXRJbnQ0OChOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwg
R1BSUmVnIHJlZywgRGF0YUZvcm1hdCBmb3JtYXQpCisgICAgeworICAgICAgICBBU1NFUlQoZm9y
bWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBmb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4
KTsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgcmVnLCBmb3JtYXQpOworICAgIH0K
KyAgICB2b2lkIGluaXRJbnQ0OChOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVn
IHJlZykKKyAgICB7CisgICAgICAgIGluaXRHUFIobm9kZSwgdXNlQ291bnQsIHJlZywgRGF0YUZv
cm1hdEludDQ4KTsKKyAgICB9CisgICAgdm9pZCBpbml0U3RyaWN0SW50NDgoTm9kZSogbm9kZSwg
dWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBpbml0R1BSKG5v
ZGUsIHVzZUNvdW50LCByZWcsIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgfQogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgdm9pZCBpbml0SlNWYWx1ZShOb2RlKiBub2RlLCB1aW50MzJfdCB1
c2VDb3VudCwgR1BSUmVnIGdwciwgRGF0YUZvcm1hdCBmb3JtYXQgPSBEYXRhRm9ybWF0SlMpCiAg
ICAgewpAQCAtMTg3LDYgKzIwMCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gR2V0IHRoZSBmb3JtYXQg
b2YgdGhlIHZhbHVlIGFzIGl0IGlzIHNwaWxsZWQgaW4gdGhlIEpTU3RhY2sgKG9yICdub25lJyku
CiAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCgpIHsgcmV0dXJuIG1fc3BpbGxGb3JtYXQ7IH0K
ICAgICAKKyAgICBib29sIGlzRm9ybWF0KERhdGFGb3JtYXQgZXhwZWN0ZWRGb3JtYXQpCisgICAg
eworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JtYXQoKSA9PSBleHBlY3RlZEZvcm1hdCB8fCBz
cGlsbEZvcm1hdCgpID09IGV4cGVjdGVkRm9ybWF0OworICAgIH0KKyAgICAKICAgICBib29sIGlz
SlNGb3JtYXQoRGF0YUZvcm1hdCBleHBlY3RlZEZvcm1hdCkKICAgICB7CiAgICAgICAgIHJldHVy
biBKU0M6OmlzSlNGb3JtYXQocmVnaXN0ZXJGb3JtYXQoKSwgZXhwZWN0ZWRGb3JtYXQpIHx8IEpT
Qzo6aXNKU0Zvcm1hdChzcGlsbEZvcm1hdCgpLCBleHBlY3RlZEZvcm1hdCk7CkBAIC0xOTcsNiAr
MjE1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlzSlNGb3JtYXQoRGF0YUZvcm1hdEpT
SW50MzIpOwogICAgIH0KICAgICAKKyAgICBib29sIGlzSW50NDgoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGlzRm9ybWF0KERhdGFGb3JtYXRJbnQ0OCk7CisgICAgfQorICAgIAorICAgIGJvb2wg
aXNTdHJpY3RJbnQ0OCgpCisgICAgeworICAgICAgICByZXR1cm4gaXNGb3JtYXQoRGF0YUZvcm1h
dFN0cmljdEludDQ4KTsKKyAgICB9CisgICAgCiAgICAgYm9vbCBpc0pTRG91YmxlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBpc0pTRm9ybWF0KERhdGFGb3JtYXRKU0RvdWJsZSk7CkBAIC0zMTQs
NiArMzQyLDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIs
IERhdGFGb3JtYXRJbnQzMik7CiAgICAgfQorICAgIHZvaWQgZmlsbEludDQ4KFZhcmlhYmxlRXZl
bnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwciwgRGF0YUZvcm1hdCBmb3JtYXQpCisgICAgewor
ICAgICAgICBBU1NFUlQoZm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBmb3JtYXQgPT0gRGF0
YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgZm9ybWF0
KTsKKyAgICB9CisgICAgdm9pZCBmaWxsSW50NDgoVmFyaWFibGVFdmVudFN0cmVhbSYgc3RyZWFt
LCBHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZv
cm1hdEludDQ4KTsKKyAgICB9CisgICAgdm9pZCBmaWxsU3RyaWN0SW50NDgoVmFyaWFibGVFdmVu
dFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgZmlsbEdQUihzdHJl
YW0sIGdwciwgRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICB9CiAgICAgdm9pZCBmaWxsQm9v
bGVhbihWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIpCiAgICAgewogICAg
ICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0Qm9vbGVhbik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
NiwxNCArMjM2LDE0IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QK
ICAgICAgICAgaWYgKG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKQogICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAiYXJnIiwgb3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCksICIoIiwgVmFy
aWFibGVBY2Nlc3NEYXRhRHVtcCgqdGhpcywgdmFyaWFibGVBY2Nlc3NEYXRhKSwgIikiKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiciIsIG9wZXJhbmQsICIo
IiwgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcCgqdGhpcywgdmFyaWFibGVBY2Nlc3NEYXRhKSwgIiki
KTsKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImxvYyIsIG9wZXJhbmRUb0xvY2FsKG9w
ZXJhbmQpLCAiKCIsIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAoKnRoaXMsIHZhcmlhYmxlQWNjZXNz
RGF0YSksICIpIik7CiAgICAgfQogICAgIGlmIChub2RlLT5oYXNVbmxpbmtlZExvY2FsKCkpIHsK
ICAgICAgICAgaW50IG9wZXJhbmQgPSBub2RlLT51bmxpbmtlZExvY2FsKCk7CiAgICAgICAgIGlm
IChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKSkKICAgICAgICAgICAgIG91dC5wcmludChjb21t
YSwgImFyZyIsIG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQpKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiciIsIG9wZXJhbmQpOworICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAibG9jIiwgb3BlcmFuZFRvTG9jYWwob3BlcmFuZCkpOwogICAgIH0KICAg
ICBpZiAobm9kZS0+aGFzQ29uc3RhbnRCdWZmZXIoKSkgewogICAgICAgICBvdXQucHJpbnQoY29t
bWEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTU1
ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzAsNiArMjMwLDkgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgYWRkU2hvdWxk
U3BlY3VsYXRlTWFjaGluZUludChOb2RlKiBhZGQpCiAgICAgeworICAgICAgICBpZiAoIWVuYWJs
ZUludDQ4KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICBO
b2RlKiBsZWZ0ID0gYWRkLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgIE5vZGUqIHJpZ2h0ID0g
YWRkLT5jaGlsZDIoKS5ub2RlKCk7CiAKQEAgLTI1Nyw2ICsyNjAsOSBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBBU1NFUlQobXVsLT5vcCgpID09IEFyaXRoTXVsKTsKICAgICAgICAgCisgICAg
ICAgIGlmICghZW5hYmxlSW50NDgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCiAgICAgICAgIE5vZGUqIGxlZnQgPSBtdWwtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAg
Tm9kZSogcmlnaHQgPSBtdWwtPmNoaWxkMigpLm5vZGUoKTsKIApAQCAtMjc0LDYgKzI4MCw4IEBA
IHB1YmxpYzoKICAgICBib29sIG5lZ2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoTm9kZSog
bmVnYXRlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5lZ2F0ZS0+b3AoKSA9PSBBcml0aE5lZ2F0
ZSk7CisgICAgICAgIGlmICghZW5hYmxlSW50NDgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgcmV0dXJuIG5lZ2F0ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU1hY2hp
bmVJbnRGb3JBcml0aG1ldGljKCkKICAgICAgICAgICAgICYmICFoYXNFeGl0U2l0ZShuZWdhdGUs
IEludDQ4T3ZlcmZsb3cpCiAgICAgICAgICAgICAmJiBuZWdhdGUtPmNhblNwZWN1bGF0ZUludDQ4
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxMyw4ICszMTMsOCBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRU
CiAgICAgICAgICAgICAvLyBiZWZvcmUgYW5kIGFmdGVyIHNldHRpbmcgaXQuCiAgICAgICAgICAg
ICBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGlmIChub2Rl
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKSA9PSBGbHVzaGVkRG91YmxlKSB7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCEoc291cmNlLm1fdHlwZSAmIH5TcGVjTnVtYmVyKSk7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCEhKHNvdXJjZS5tX3R5cGUgJiB+U3BlY0RvdWJsZSkg
PT0gISEoc291cmNlLm1fdHlwZSAmIFNwZWNJbnQzMikpOworICAgICAgICAgICAgICAgIEFTU0VS
VCghKHNvdXJjZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoISEoc291cmNlLm1fdHlwZSAmIH5TcGVjRG91YmxlKSA9PSAhIShzb3VyY2UubV90eXBl
ICYgU3BlY01hY2hpbmVJbnQpKTsKICAgICAgICAgICAgICAgICBpZiAoIShzb3VyY2UubV90eXBl
ICYgflNwZWNEb3VibGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5tZXJnZShTcGVj
SW50NDhBc0RvdWJsZSk7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5maWx0ZXIoU3BlY0Rv
dWJsZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJl
dmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsOSBAQCB2b2lkIEpJVENvZGU6OnJlY29u
c3RydWN0KAogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAg
ICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIoZXhlYy0+cihvcGVyYW5kKS51bmJveGVkSW50MzIo
KSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNV
bmJveGVkSW50NDg6CisgICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGV4ZWMtPnIob3BlcmFu
ZCkudW5ib3hlZEludDQ4KCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWxy
ZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKICAgICAgICAgICAgIHZhbHVlID0ganNEb3Vi
bGVOdW1iZXIoZXhlYy0+cihvcGVyYW5kKS51bmJveGVkRG91YmxlKCkpOwogICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2Rl
LmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWlu
aWZpZWROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgaW5saW5lIGJvb2wg
YmVsb25nc0luTWluaWZpZWRHcmFwaChOb2RlVAogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAg
ICAgY2FzZSBEb3VibGVBc0ludDMyOgogICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKKyAgICBj
YXNlIEludDQ4VG9WYWx1ZToKKyAgICBjYXNlIEludDQ4VG9Eb3VibGU6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVCghcGVybWl0c09TUkJhY2t3YXJk
UmV3aXJpbmcodHlwZSkgJiYgIXBlcm1pdHNPU1JGb3J3YXJkUmV3aXJpbmcodHlwZSkpOwpAQCAt
MTA0LDYgKzEwNiw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAg
ICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKICAgICAgICAgY2FzZSBEb3VibGVBc0ludDMyOgor
ICAgICAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIGNhc2UgSW50NDhUb1ZhbHVlOgog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNp
b24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyNDEsMTIgKzEyNDEsMTIgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAg
IGJvb2wgc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc051
bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0Z1bGxOdW1i
ZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3Vs
ZFNwZWN1bGF0ZU51bWJlckV4cGVjdGluZ0RlZmluZWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHByZWRpY3Rpb24oKSk7CisgICAg
ICAgIHJldHVybiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocHJlZGlj
dGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVCb29sZWFuKCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNpb24g
MTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAjZGVmaW5lIE5vZGVSZXN1bHRKUyAgICAgICAgICAgICAgICAgICAgIDB4MDAwMQogI2Rl
ZmluZSBOb2RlUmVzdWx0TnVtYmVyICAgICAgICAgICAgICAgICAweDAwMDIKICNkZWZpbmUgTm9k
ZVJlc3VsdEludDMyICAgICAgICAgICAgICAgICAgMHgwMDAzCi0jZGVmaW5lIE5vZGVSZXN1bHRC
b29sZWFuICAgICAgICAgICAgICAgIDB4MDAwNAotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAg
ICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUgTm9kZVJlc3VsdEludDQ4ICAgICAgICAgICAg
ICAgICAgMHgwMDA0CisjZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4
MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDYKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAjZGVmaW5lIE5vZGVNdXN0R2VuZXJhdGUg
ICAgICAgICAgICAgICAgIDB4MDAwOCAvLyBzZXQgb24gbm9kZXMgdGhhdCBoYXZlIHNpZGUgZWZm
ZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92ZWQgYnkgRENFLgogI2RlZmluZSBO
b2RlSGFzVmFyQXJncyAgICAgICAgICAgICAgICAgICAweDAwMTAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYg
KzExNCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSW50
MzJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRl
IHRoYXQgYSBkb3VibGUgdmFsdWUgaXMgYWN0dWFsbHkgYW4gaW50ZWdlci4gKi9cCiAgICAgbWFj
cm8oRG91YmxlQXNJbnQzMiwgTm9kZVJlc3VsdEludDMyIHwgTm9kZUV4aXRzRm9yd2FyZCkgXAor
ICAgIC8qIFVzZWQgdG8gc2VwYXJhdGUgcmVwcmVzZW50YXRpb24gYW5kIHJlZ2lzdGVyIGFsbG9j
YXRpb24gb2YgSW50NDgncyByZXByZXNlbnRlZCAqL1wKKyAgICAvKiBhcyB2YWx1ZXMuICovXAor
ICAgIG1hY3JvKEludDQ4VG9WYWx1ZSwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oSW50NDhU
b0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJp
dGhtZXRpYyBvcGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51
bWJlciB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTM1Niw2ICszNjAsMTcgQEAgaW5saW5lIHVu
c2lnbmVkIGZvcndhcmRSZXdpcmluZ1NlbGVjdGlvbgogICAgICAgICAvLyBUaGlzIGxvc2VzIGlu
Zm9ybWF0aW9uLiBPbmx5IHVzZSBpdCBpZiB0aGVyZSBhcmUgbm8gYmV0dGVyIGFsdGVybmF0aXZl
cy4KICAgICAgICAgcmV0dXJuIDI1OwogICAgICAgICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZToK
KyAgICAgICAgLy8gTG9zZXMgbm8gaW5mb3JtYXRpb24uIEl0IGp1c3QgYm94ZXMgdGhlIHZhbHVl
LCB3aGljaCBpcyB3aGF0IE9TUiB3YW50cworICAgICAgICAvLyB0byBkbyBhbnl3YXkuCisgICAg
ICAgIHJldHVybiAxMDA7CisgICAgICAgIAorICAgIGNhc2UgSW50NDhUb0RvdWJsZToKKyAgICAg
ICAgLy8gVGhpcyBpcyBsaWtlIEludDMyVG9Eb3VibGU7IHdlIGNhbiB1c2UgaXQgYmVjYXVzZSBp
dCBnaXZlcyBhIHNlbWFudGljYWxseQorICAgICAgICAvLyBlcXVpdmFsZW50IHZhbHVlIGJ1dCB0
aGF0IHZhbHVlIG1heSBiZSBhbiBpbnQzMiBpbiBhIGRvdWJsZSwgc28gd2UnZAorICAgICAgICAv
LyByYXRoZXIgbm90IGlmIHdlIGNhbiBhdm9pZCBpdC4KKyAgICAgICAgcmV0dXJuIDc1OworICAg
ICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gMDsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAko
cmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw2ICsxOTUsOCBAQCB2b2lkIE9T
UkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2UgSW5HUFI6CiAg
ICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgIGNhc2UgVUludDMySW5HUFI6
CisgICAgICAgIGNhc2UgVW5ib3hlZEludDQ4SW5HUFI6CisgICAgICAgIGNhc2UgVW5ib3hlZFN0
cmljdEludDQ4SW5HUFI6CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KHJlY292ZXJ5Lmdwcigp
LCBzY3JhdGNoICsgaW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAg
LTIzNSwxMiArMjM3LDE1IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25z
dCAKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgSW50MzJE
aXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNr
OgorICAgICAgICBjYXNlIEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIFN0
cmljdEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQ
UkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAs
IHNjcmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgY2FzZSBB
bHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgorICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRJbnQ0ODoKICAgICAgICAgICAgIG1faml0LmxvYWQ2NChBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAg
IG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTI3NCwzNCArMjc5LDU5IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpj
b21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVn
VDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWREb3VibGU6Ci0gICAgICAgIGNhc2UgSW5GUFI6Ci0gICAgICAgIGNhc2UgRG91YmxlRGlzcGxh
Y2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAg
ICAgbV9qaXQubG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0g
ICAgICAgICAgICBtX2ppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVn
VDApOwotICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OgorICAg
ICAgICBjYXNlIFVuYm94ZWRJbnQ0OEluR1BSOgorICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJ
bnQ0OEluR1BSOgorICAgICAgICBjYXNlIEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAg
ICBjYXNlIFN0cmljdEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIFVJbnQz
MkluR1BSOiB7CiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJ
bmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZv
OjpyZWdUMCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpK
dW1wIHBvc2l0aXZlID0gbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpHcmVhdGVyVGhhbk9yRXF1YWwsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDAsIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDApKTsKLSAgICAgICAgICAgIG1faml0
LmNvbnZlcnRJbnQzMlRvRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsK
LSAgICAgICAgICAgIG1faml0LmFkZERvdWJsZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OkFic29sdXRlQWRkcmVzcygmQXNzZW1ibHlIZWxwZXJzOjp0d29Ub1RoZTMyKSwKLSAg
ICAgICAgICAgICAgICBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gQ29udmVydCBpdCB0byBhbiBpbnQ2NC4KKyAgICAgICAgICAgIHN3aXRjaCAocmVjb3Zl
cnkudGVjaG5pcXVlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5i
b3hlZEludDQ4OgorICAgICAgICAgICAgY2FzZSBVbmJveGVkSW50NDhJbkdQUjoKKyAgICAgICAg
ICAgIGNhc2UgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICAgICAgbV9qaXQu
cnNoaWZ0NjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTYpLCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICBjYXNlIFVJbnQzMkluR1BSOgorICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRv
UHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBJ
cyBpdCBhbiBpbnQzMj8KKyAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKEdQUklu
Zm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
Okp1bXAgaXNJbnQzMiA9IG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6RXF1YWwsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIE5vcGUsIGl0J3Mgbm90LCBidXQgcmVnVDAgY29udGFpbnMg
dGhlIGludDY0IHZhbHVlLgorICAgICAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUo
R1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAgICAgbV9qaXQuYm94
RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotICAgICAgICAgICAgcG9z
aXRpdmUubGluaygmbV9qaXQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpc0ludDMyLmxp
bmsoJm1faml0KTsKKyAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQUkluZm86
OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgCiAg
ICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAg
bV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgorICAgICAgICBj
YXNlIEluRlBSOgorICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKKyAgICAg
ICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2gg
KyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUo
R1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgbV9qaXQuYm94
RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG1f
aml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihv
cGVyYW5kKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNl
IENvbnN0YW50OgogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NCgKICAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29u
c3RhbnQoKSkpLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1NTgyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICAK
ICAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkRG91YmxlVHlwZUZvclByZWRpY3Rpb24oU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBpZiAoIWlzTnVtYmVyU3BlY3VsYXRp
b24odmFsdWUpKQorICAgICAgICBpZiAoIWlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkK
ICAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlOwogICAgICAgICBpZiAodmFsdWUgJiBTcGVj
RG91YmxlTmFOKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGU7CkBAIC0yMDMsNyArMjAz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50MzIobm9k
ZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjEyLDE0ICsyMTIsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0ID0gbm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rp
b24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQobGVm
dCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocmlnaHQpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChs
ZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocmlnaHQpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShub2Rl
KSAhPSBEb250U3BlY3VsYXRlSW50MzIpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwogICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NDgpOwog
ICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihzcGVjdWxhdGVkRG91YmxlVHlwZUZvclByZWRpY3Rpb25zKGxl
ZnQsIHJpZ2h0KSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKGxlZnQgJiBTcGVjTnVt
YmVyKSB8fCAhKHJpZ2h0ICYgU3BlY051bWJlcikpIHsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCEobGVmdCAmIFNwZWNGdWxsTnVtYmVyKSB8fCAhKHJpZ2h0ICYgU3BlY0Z1bGxOdW1iZXIp
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIGxlZnQgb3IgcmlnaHQgaXMgZGVmaW5pdGVseSBz
b21ldGhpbmcgb3RoZXIgdGhhbiBhIG51bWJlci4KICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZyk7CiAgICAgICAgICAgICAgICAgfSBlbHNl
CkBAIC0zNjgsMTAgKzM2OCwyMCBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBHZXRCeVZhbDogeworICAgICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlv
bigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFub2RlLT5nZXRI
ZWFwUHJlZGljdGlvbigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJh
eSgpCiAgICAgICAgICAgICAgICAgfHwgbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUZs
b2F0NjRBcnJheSgpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KFNwZWNEb3VibGUpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgZWxzZSBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpKQor
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUtPmdldEhlYXBQcmVkaWN0aW9u
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU2Niw2ICs1NzYsOCBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIENoZWNrV2F0Y2hkb2dUaW1lcjoKICAgICAgICAgY2FzZSBV
bnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBMb29wSGludDoKKyAgICAgICAgY2FzZSBJbnQ0OFRv
VmFsdWU6CisgICAgICAgIGNhc2UgSW50NDhUb0RvdWJsZToKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgYWxy
ZWFkeSBoYXMgYSBwcmVkaWN0aW9uLgpAQCAtNjQwLDggKzY1Miw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICBEb3VibGVCYWxsb3QgYmFsbG90OwogICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZp
bmVkKGxlZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHJpZ2h0KQot
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludDMyKG5vZGUp
KQorICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5l
ZChsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocmlnaHQp
CisgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50MzIobm9k
ZSkKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KG5vZGUpKQogICAgICAgICAgICAgICAgIGJhbGxvdCA9IFZvdGVEb3VibGU7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZVZhbHVlOwpAQCAtNjU3LDgg
KzY3MCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBEb3VibGVC
YWxsb3QgYmFsbG90OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzTnVtYmVy
U3BlY3VsYXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKLSAgICAgICAg
ICAgICAgICAmJiAhbV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlKSkKKyAgICAg
ICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbihyaWdodCkKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5tdWxTaG91bGRT
cGVjdWxhdGVJbnQzMihub2RlKQorICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLm11bFNob3Vs
ZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpCiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90
ZURvdWJsZTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3Rl
VmFsdWU7CkBAIC02NzcsNyArNjkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgIERvdWJsZUJhbGxvdCBiYWxsb3Q7CiAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc051bWJlclNwZWN1bGF0aW9u
KHJpZ2h0KQorICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGxlZnQpICYm
IGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQogICAgICAgICAgICAgICAgICYmICEoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSAmJiBub2RlLT5jYW5TcGVjdWxhdGVJbnQzMigpKSkK
ICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlRG91YmxlOwogICAgICAgICAgICAgZWxzZQpA
QCAtNzA2LDcgKzcyMCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uID0gbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGlm
IChpc0RvdWJsZVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAgICAgIG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT52b3RlKFZvdGVEb3VibGUpOwotICAgICAgICAgICAgZWxz
ZSBpZiAoIWlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikgfHwgaXNJbnQzMlNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgZWxzZSBpZiAoCisgICAgICAgICAgICAgICAg
IWlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pCisgICAgICAgICAgICAgICAgfHwg
aXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IGlzTWFjaGluZUludFNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pKQogICAgICAgICAgICAgICAgIG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
LT52b3RlKFZvdGVWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9u
IDE1NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBT
dHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBOb3RDZWxsVXNlOgogICAgICAg
ICBjYXNlIE90aGVyVXNlOgorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgpAQCAt
NjksNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgICAgIGlmIChtX3N0YXRlLmZv
ck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNOdW1iZXIpCisgICAgICAgICAgICBpZiAobV9zdGF0
ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikKICAgICAgICAgICAgICAg
ICBtX3Jlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCkBA
IC0yMzksNiArMjQwLDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dAogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBjYXNlIENoZWNrVGllclVwQW5k
T1NSRW50ZXI6CiAgICAgY2FzZSBMb29wSGludDoKKyAgICBjYXNlIEludDQ4VG9Eb3VibGU6Cisg
ICAgY2FzZSBJbnQ0OFRvVmFsdWU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAg
ICBjYXNlIEdldEJ5VmFsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxl
bnRSZWdpc3RlclNhdmVQbGFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIGVudW0gU2lsZW50U3BpbGxBY3Rpb24gewogZW51
bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBEb05vdGhpbmdGb3JGaWxsLAogICAgIFNldEludDMy
Q29uc3RhbnQsCisgICAgU2V0SW50NDhDb25zdGFudCwKKyAgICBTZXRTdHJpY3RJbnQ0OENvbnN0
YW50LAogICAgIFNldEJvb2xlYW5Db25zdGFudCwKICAgICBTZXRDZWxsQ29uc3RhbnQsCiAgICAg
U2V0VHJ1c3RlZEpTQ29uc3RhbnQsCkBAIC02MSw4ICs2MywxMiBAQCBlbnVtIFNpbGVudEZpbGxB
Y3Rpb24gewogICAgIExvYWQzMlRhZywKICAgICBMb2FkMzJQYXlsb2FkLAogICAgIExvYWQzMlBh
eWxvYWRCb3hJbnQsCisgICAgTG9hZDMyUGF5bG9hZENvbnZlcnRUb0ludDQ4LAorICAgIExvYWQz
MlBheWxvYWRTaWduRXh0ZW5kLAogICAgIExvYWRQdHIsCiAgICAgTG9hZDY0LAorICAgIExvYWQ2
NFNoaWZ0UmlnaHQxNiwKKyAgICBMb2FkNjRTaGlmdExlZnQxNiwKICAgICBMb2FkRG91YmxlLAog
ICAgIExvYWREb3VibGVCb3hEb3VibGUsCiAgICAgTG9hZEpTVW5ib3hEb3VibGUKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAko
cmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNDAgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Ym94SW50NDgoR1BSUmVnIHNvdXJjZUdQUiwgR1BSUmVnIHRhcmdldEdQUiwg
RGF0YUZvcm1hdCBmb3JtYXQpCit7CisgICAgR1BSUmVnIHRlbXBHUFI7CisgICAgaWYgKHNvdXJj
ZUdQUiA9PSB0YXJnZXRHUFIpCisgICAgICAgIHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAgIGVs
c2UKKyAgICAgICAgdGVtcEdQUiA9IHRhcmdldEdQUjsKKyAgICAKKyAgICBGUFJSZWcgZnByID0g
ZnByQWxsb2NhdGUoKTsKKworICAgIGlmIChmb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAg
ICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBzb3VyY2VHUFIpOworICAgIGVs
c2UKKyAgICAgICAgQVNTRVJUKGZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAg
IG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNvdXJjZUdQUiwgdGVtcEdQUik7CisgICAgCisgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNEb3VibGUgPSBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBzb3VyY2VHUFIsIHRlbXBHUFIpOworICAgIAorICAgIG1faml0
Lnplcm9FeHRlbmQzMlRvUHRyKHNvdXJjZUdQUiwgdGFyZ2V0R1BSKTsKKyAgICBtX2ppdC5vcjY0
KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgdGFyZ2V0R1BSKTsKKyAgICBKSVRDb21w
aWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworICAgIAorICAgIGlzRG91YmxlLmxpbmso
Jm1faml0KTsKKyAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShzb3VyY2VHUFIsIGZwcik7
CisgICAgYm94RG91YmxlKGZwciwgdGFyZ2V0R1BSKTsKKyAgICBkb25lLmxpbmsoJm1faml0KTsK
KyAgICAKKyAgICBpZiAodGVtcEdQUiAhPSB0YXJnZXRHUFIpCisgICAgICAgIHVubG9jayh0ZW1w
R1BSKTsKKyAgICAKKyAgICB1bmxvY2soZnByKTsKK30KKwogR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UpCiB7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOwpAQCAtNjksMTEgKzEwMywyMiBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgp
OwogICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxP
cmRlclNwaWxsZWQpOwotICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJ
bnQzMikgeworICAgICAgICAgICAgc3dpdGNoIChzcGlsbEZvcm1hdCkgeworICAgICAgICAgICAg
Y2FzZSBEYXRhRm9ybWF0SW50MzI6IHsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKICAgICAgICAgICAg
ICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByKTsKICAg
ICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFGb3JtYXRKU0ludDMyOwotICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICAg
ICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgICAgICAgICBtX2ppdC5s
b2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAg
ICAgICAgICAgICAgICBib3hJbnQ0OChncHIsIGdwciwgc3BpbGxGb3JtYXQpOworICAgICAgICAg
ICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogICAgICAgICAgICAgICAgIGlm
IChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIE5lZWQgdG8gYm94IHRoZSBkb3VibGUsIHNpbmNlIHdlIHdhbnQgYSBKU1ZhbHVlLgpAQCAt
ODEsNiArMTI2LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAog
ICAgICAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFGb3JtYXRKU0RvdWJsZTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
c3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwg
c3BpbGxGb3JtYXQpOwogICAgICAgICB9CkBAIC0xMTMsNiArMTU5LDE2IEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKIAogICAgICAgICByZXR1cm4gZ3ByOwogICAg
IH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgY2FzZSBEYXRhRm9y
bWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAg
ICAgIGxvY2soZ3ByKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IGFsbG9jYXRlKCk7Cisg
ICAgICAgIGJveEludDQ4KGdwciwgcmVzdWx0R1BSLCBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpOwor
ICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdEdQUjsKKyAgICB9CiAK
ICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgogICAgICAgICAvLyBObyByZXRhZyByZXF1aXJlZCBv
biBKU1ZBTFVFNjQhCkBAIC03NjgsNyArODI0LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlSW50MwogICAgICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1h
dCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1h
dEludDMyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1h
dEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIgfHwgc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7
CiAgICAgICAgIAogICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBT
cGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAgIApAQCAtNzg5LDYgKzg0NSwzNiBAQCBHUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgICAgICByZXR1cm5Gb3Jt
YXQgPSBEYXRhRm9ybWF0SlNJbnQzMjsKICAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAg
IH0KKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZv
cm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgIC8vIEdlbmVyYWxs
eSwgdGhpcyBjYW4gb25seSBoYXBwZW4gaWYgd2UndmUgYWxyZWFkeSBwcm92ZWQgdGhhdCB0aGUK
KyAgICAgICAgICAgIC8vIHZhbHVlIGlzIGFuIGludDMyLiBUaGF0J3MgYmVjYXVzZSBpZiBhIHZh
bHVlIG9yaWdpbmF0ZWQgYXMgYSBKU1ZhbHVlCisgICAgICAgICAgICAvLyB0aGVuIHdlIHdvdWxk
IHNwZWN1bGF0ZSB0aGF0IGl0J3MgYW4gaW50MzIgYmVmb3JlIHJlcHJlc2VudGluZyBpdCBhcwor
ICAgICAgICAgICAgLy8gYW4gaW50NDguIE90aGVyd2lzZSwgaWYgd2Uga25vd2luZ2x5IHByb2R1
Y2VkIGFuIGludDQ4LCB0aGVuIHdlIHdvdWxkCisgICAgICAgICAgICAvLyBiZSBib3hpbmcgaXQg
aW50byBhIHZhbHVlIHVzaW5nIEludDQ4VG9WYWx1ZS4gVGhpcyBhc3NlcnRpb24gaXMgdmFsaWQK
KyAgICAgICAgICAgIC8vIG9ubHkgYmVjYXVzZSBJbnQ0OCBpcyBzb21ldGhpbmcgdGhhdCB3ZSBp
bnRyb2R1Y2UgYXQgcHJlZGljdGlvbiB0aW1lLgorICAgICAgICAgICAgLy8gSG93ZXZlcjogd2Ug
bWF5IGhhdmUgYW4gaW50MzItcHJvZHVjaW5nIG5vZGUgcmVwbGFjZWQgYnkgYW4KKyAgICAgICAg
ICAgIC8vIGludDQ4LXByb2R1Y2luZyBub2RlIGR1ZSB0byBDU0UuIFNvIHdlIG11c3QgZG8gYSBj
aGVjay4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIH5TcGVjTWFjaGluZUlu
dCkpOworICAgICAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NDgpIHsKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4
dGVuZDMyVG9QdHIoZ3ByLCB0ZW1wKTsKKyAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIHdl
IGNhbid0IHN1cHBseSB2YWx1ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gaGVyZS4gOi0vCisgICAg
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICAgICAgQmFkVHlw
ZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBncHIsIHRlbXApKTsKKyAgICAgICAgICAgICAgICB1
bmxvY2sodGVtcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQg
PT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMy
KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgICAgIG1faml0
LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgICAgICAgICAgbV9qaXQu
emVyb0V4dGVuZDMyVG9QdHIoZ3ByLCBncHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aW5mby5maWxsSW50MzIoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJuRm9ybWF0
ID0gRGF0YUZvcm1hdEludDMyOworICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQog
ICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgZ3ByKTsKIAogICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91
Z2guCkBAIC03OTcsNiArODgzLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlSW50MwogICAgIH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCEodHlwZSAmIFNwZWNJbnQ0OCkpOwogICAgICAgICAvLyBDaGVjayB0aGUgdmFs
dWUgaXMgYW4gaW50ZWdlci4KICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAg
ICAgIG1fZ3Bycy5sb2NrKGdwcik7CkBAIC04NDMsNiArOTMwLDM1IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZv
cm1hdEludDMyOwogICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0KKyAgICAgICAgCisgICAgY2Fz
ZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAg
ICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHQ7Cisg
ICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgeworICAgICAgICAgICAgcmVzdWx0ID0g
YWxsb2NhdGUoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbG9jayhncHIpOworICAgICAgICAgICAgaW5mby5maWxs
SW50MzIoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOworICAgICAg
ICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIH5TcGVjTWFjaGluZUludCkpOwor
ICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQ0OCkKKyAg
ICAgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3VsdCk7CisgICAg
ICAgIGlmICh0eXBlICYgU3BlY0ludDQ4KSB7CisgICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFs
bG9jYXRlKCk7CisgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHRl
bXApOworICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBjYW4ndCBzdXBwbHkgdmFsdWUgcHJv
ZmlsaW5nIGluZm9ybWF0aW9uIGhlcmUuIDotLworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKKyAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgcmVzdWx0LCB0
ZW1wKSk7CisgICAgICAgICAgICB1bmxvY2sodGVtcCk7CisgICAgICAgIH0KKyAgICAgICAgbV9q
aXQuemVyb0V4dGVuZDMyVG9QdHIocmVzdWx0LCByZXN1bHQpOworICAgICAgICByZXR1cm5Gb3Jt
YXQgPSBEYXRhRm9ybWF0SW50MzI7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQogCiAgICAg
Y2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7CkBA
IC04ODUsNiArMTAwMSwxNjggQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
SW50MwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0dQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUludDQ4KEVkZ2UgZWRnZSwgRGF0YUZvcm1hdCBkZXNpcmVkRm9ybWF0KQorewor
ICAgIEFTU0VSVChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBkZXNpcmVkRm9y
bWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUg
PSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7CisgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVl
Lm1fdHlwZTsKKyAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY01hY2hpbmVJbnQp
OworICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVn
aXN0ZXIoKTsKKyAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZp
cnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworCisgICAgc3dpdGNoIChpbmZvLnJlZ2lz
dGVyRm9ybWF0KCkpIHsKKyAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7CisgICAgICAgIGlmICgo
ZWRnZS0+aGFzQ29uc3RhbnQoKSAmJiAhdmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpLmlz
TWFjaGluZUludCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkg
eworICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIDApOworICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworCisgICAg
ICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIGpzVmFs
dWUgPSB2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBBU1NFUlQo
anNWYWx1ZS5pc01hY2hpbmVJbnQoKSk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwg
dmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyQ29uc3RhbnQpOworICAgICAgICAgICAgaW50NjRf
dCB2YWx1ZSA9IGpzVmFsdWUuYXNNYWNoaW5lSW50KCk7CisgICAgICAgICAgICBpZiAoZGVzaXJl
ZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1
ZSA8PCAxNjsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHZh
bHVlKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEdQUigqbV9zdHJlYW0sIGdwciwgZGVz
aXJlZEZvcm1hdCk7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwor
ICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1h
dEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIgfHwgc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7
CisgICAgICAgIAorICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBT
cGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAgIAorICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEpTSW50MzIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKSB7Cisg
ICAgICAgICAgICAvLyBJZiB3ZSBrbm93IHRoaXMgd2FzIHNwaWxsZWQgYXMgYW4gaW50ZWdlciB3
ZSBjYW4gZmlsbCB3aXRob3V0IGNoZWNraW5nLgorICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAg
ICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihncHIsIGdwcik7CisgICAgICAgICAgICBpZiAoZGVz
aXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgICAgICBp
bmZvLmZpbGxTdHJpY3RJbnQ0OCgqbV9zdHJlYW0sIGdwcik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdwcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0
ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9zdHJlYW0s
IGdwcik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisgICAgICAgIGlmIChz
cGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1h
dFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGlmIChkZXNpcmVk
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgICAgIGlmIChz
cGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICAgICAgICAgIG1faml0
LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgICAgICAgICAgaW5mby5m
aWxsU3RyaWN0SW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgICAgIHJldHVybiBn
cHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZv
cm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJ
bW0zMigxNiksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9zdHJlYW0sIGdw
cik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisgICAgICAgIG1faml0Lmxv
YWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworCisg
ICAgICAgIC8vIEZpbGwgYXMgSlNWYWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KKyAgICAgICAgaW5m
by5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTSW50MzIpOworICAgICAg
ICBtX2dwcnMudW5sb2NrKGdwcik7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsK
KyAgICAgICAgLy8gQ2hlY2sgdGhlIHZhbHVlIGlzIGFuIGludGVnZXIuIE5vdGUgdGhhdCB3ZSB3
b3VsZCAqbGlrZSogdG8gdW5ib3ggYW4gSW50NDgKKyAgICAgICAgLy8gYXQgdGhpcyBwb2ludCBi
dXQgdGhpcyBpcyB0b28gY29zdGx5LiBXZSBvbmx5ICpwcm92ZSogdGhhdCB0aGlzIGlzIGFuIElu
dDQ4CisgICAgICAgIC8vIGV2ZW4gdGhvdWdoIHdlIGNoZWNrIGlmIGl0J3MgYW4gaW50MzIuCisg
ICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0Owor
ICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9
IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgICAgICBy
ZXN1bHQgPSBncHI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0ludDMyKQor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhyZXN1bHQp
LCBlZGdlLCBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIHJlc3VsdCwgR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gZ3By
KSAvLyBUaGUgbm90LWFscmVhZHktbG9ja2VkLCBzbyBmaWxsIGluLXBsYWNlLCBjYXNlLgorICAg
ICAgICAgICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOwor
ICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHJlc3VsdCk7CisgICAgICAg
IGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIG1faml0
LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CisgICAgY2FzZSBEYXRhRm9y
bWF0SlNJbnQzMjogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIHJlc3VsdDsKKyAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7CisgICAg
ICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9qaXQubW92ZShncHIs
IHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2dwcnMubG9jayhncHIp
OworICAgICAgICAgICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3Jt
YXQpOworICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOworICAgICAgICB9CisgICAgICAgIG1faml0
LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVzdWx0KTsKKyAgICAgICAgaWYgKGRlc2lyZWRG
b3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1
c3RlZEltbTMyKDE2KSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAgICBHUFJSZWcgZ3ByID0g
aW5mby5ncHIoKTsKKyAgICAgICAgYm9vbCB3YXNMb2NrZWQgPSBtX2dwcnMuaXNMb2NrZWQoZ3By
KTsKKyAgICAgICAgbG9jayhncHIpOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRh
Rm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICBpZiAo
d2FzTG9ja2VkKSB7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0gYWxsb2NhdGUoKTsKKyAg
ICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICAgICAgdW5sb2NrKGdw
cik7CisgICAgICAgICAgICBncHIgPSByZXN1bHQ7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgaW5mby5maWxsU3RyaWN0SW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICBtX2ppdC5s
c2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAg
IH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAgICAgR1BSUmVn
IGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIGJvb2wgd2FzTG9ja2VkID0gbV9ncHJzLmlzTG9j
a2VkKGdwcik7CisgICAgICAgIGxvY2soZ3ByKTsKKyAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQg
PT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgaWYg
KHdhc0xvY2tlZCkgeworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKCk7Cisg
ICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsKKyAgICAgICAgICAgIHVubG9jayhn
cHIpOworICAgICAgICAgICAgZ3ByID0gcmVzdWx0OworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGluZm8uZmlsbEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0
NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisK
KyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6
CisgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgor
ICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46
IHsKKyAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIDApOworICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICB9CisKKyAg
ICBjYXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICB9Cit9CisK
IEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlIGVkZ2UpCiB7
CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQpAQCAtODkyLDggKzExNzAsOCBAQCBGUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAjZW5kaWYKICAgICBBYnN0cmFj
dFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKICAgICBTcGVjdWxhdGVkVHlw
ZSB0eXBlID0gdmFsdWUubV90eXBlOwotICAgIEFTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBLbm93
bk51bWJlclVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjTnVtYmVyKSk7Ci0gICAgbV9pbnRl
cnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNOdW1iZXIpOworICAgIEFTU0VSVChlZGdlLnVzZUtp
bmQoKSAhPSBLbm93bk51bWJlclVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJl
cikpOworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjRnVsbE51bWJlcik7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3Rl
cigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVh
bFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CiAKQEAgLTk0NSw2ICsxMjIzLDI0IEBAIEZQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAgICAgIHVubG9jayhn
cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIERhdGFGb3JtYXRJbnQ0ODogeworICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9j
YXRlKCk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBT
cGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmls
bEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERhdGFG
b3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7
CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9y
ZGVyU3BpbGxlZCk7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmlj
dEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
R1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CkBAIC05NzgsNyArMTI3NCw3IEBAIEZQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFs
LCBqc1ZhbHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogCi0gICAgICAg
IGlmICh0eXBlICYgflNwZWNOdW1iZXIpCisgICAgICAgIGlmICh0eXBlICYgflNwZWNGdWxsTnVt
YmVyKQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhq
c1ZhbHVlR3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJv
LCBqc1ZhbHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKIAogICAgICAg
ICAvLyBGaXJzdCwgaWYgd2UgZ2V0IGhlcmUgd2UgaGF2ZSBhIGRvdWJsZSBlbmNvZGVkIGFzIGEg
SlNWYWx1ZQpAQCAtMTAwOSw2ICsxMzA1LDI4IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZURvdWIKICAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwogICAgICAgICByZXR1
cm4gZnByOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAg
ICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CisgICAgICAgIEdQUlJlZyBncHIgPSBp
bmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBHUFJSZWcgdGVt
cCA9IGFsbG9jYXRlKCk7CisgICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKKyAgICAgICAg
bV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgdGVtcCk7CisgICAgICAgIG1faml0LmNv
bnZlcnRJbnQ2NFRvRG91YmxlKHRlbXAsIGZwcik7CisgICAgICAgIHVubG9jayh0ZW1wKTsKKyAg
ICAgICAgbV9ncHJzLnVubG9jayhncHIpOworICAgICAgICByZXR1cm4gZnByOworICAgIH0KKyAg
ICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgRlBSUmVn
IGZwciA9IGZwckFsbG9jYXRlKCk7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwor
ICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0Rv
dWJsZShncHIsIGZwcik7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKKyAgICAgICAgcmV0
dXJuIGZwcjsKKyAgICB9CiAKICAgICAvLyBVbmJveCB0aGUgZG91YmxlCiAgICAgY2FzZSBEYXRh
Rm9ybWF0SlNEb3VibGU6IHsKQEAgLTExMTEsNyArMTQyOSw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAg
ICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgot
ICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46IHsKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFu
OgorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdElu
dDQ4OiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQpA
QCAtMTE5NCw3ICsxNTE0LDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
Qm9vbAogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdERv
dWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0Q2Vs
bDogeworICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6
CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKICAgICAgICAgdGVybWluYXRlU3Bl
Y3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAg
ICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CkBAIC0xNTAzLDYgKzE4MjUsNDAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyQ29tcGFyZQogICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKIH0KIAordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDQ4Q29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fz
c2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgU3BlY3VsYXRl
V2hpY2hldmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3Bl
Y3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSwgb3Ax
KTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisgICAg
CisgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJl
c3VsdC5ncHIoKSk7CisgICAgCisgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdl
IHNob3VsZCB1c2UgaXQgaGVyZS4KKyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZh
bHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9j
dXJyZW50Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQZWVwSG9sZUludDQ4QnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5v
ZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBC
YXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPnRha2VuQmxvY2soKTsKKyAgICBCYXNpY0Js
b2NrKiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPm5vdFRha2VuQmxvY2soKTsKKworICAgIC8vIFRo
ZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2lsbCBicmFuY2ggdG8gdGhlIHRha2VuIGJsb2NrLgorICAg
IC8vIElmIHRha2VuIGlzIG5leHQsIHN3aXRjaCB0YWtlbiB3aXRoIG5vdFRha2VuICYgaW52ZXJ0
IHRoZSBicmFuY2ggY29uZGl0aW9uIHNvIHdlIGNhbiBmYWxsIHRocm91Z2guCisgICAgaWYgKHRh
a2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGNvbmRpdGlvbiA9IEpJVENvbXBpbGVyOjpp
bnZlcnQoY29uZGl0aW9uKTsKKyAgICAgICAgQmFzaWNCbG9jayogdG1wID0gdGFrZW47CisgICAg
ICAgIHRha2VuID0gbm90VGFrZW47CisgICAgICAgIG5vdFRha2VuID0gdG1wOworICAgIH0KKyAg
ICAKKyAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpLCBvcDEpOworICAgIAorICAgIGJyYW5jaDY0KGNvbmRpdGlvbiwgb3AxLmdw
cigpLCBvcDIuZ3ByKCksIHRha2VuKTsKKyAgICBqdW1wKG5vdFRha2VuKTsKK30KKwogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24pCiB7CiAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTkwNiw2ICsyMjYyLDE2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6
IHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgICAgICBt
X2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSksIHJlc3Vs
dC5ncHIoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIG1fZ3By
cy5yZXRhaW4ocmVzdWx0LmdwcigpLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7Cisg
ICAgICAgICAgICBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lz
dGVyKS5pbml0SW50NDgobm9kZSwgbm9kZS0+cmVmQ291bnQoKSwgcmVzdWx0LmdwcigpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBt
X2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSksIHJlc3Vs
dC5ncHIoKSk7CkBAIC0xOTgxLDYgKzIzNDcsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIEZsdXNoZWRJbnQ0ODogeworICAgICAgICAgICAgU3BlY3VsYXRl
SW50NDhPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG1f
aml0LnN0b3JlNjQodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUtPmxv
Y2FsKCkpKTsKKyAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICAgICAgcmVjb3Jk
U2V0TG9jYWwobm9kZS0+bG9jYWwoKSwgVmFsdWVTb3VyY2UoSW50NDhJbkpTU3RhY2spKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBG
bHVzaGVkQ2VsbDogewogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3By
KCk7CkBAIC0yMTA0LDYgKzI0NzgsMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgSW50
NDhUb1ZhbHVlOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcGVy
YW5kKTsKKyAgICAgICAgbV9qaXQubW92ZShvcGVyYW5kLmdwcigpLCByZXN1bHQuZ3ByKCkpOwor
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOiB7CisgICAgICAgIFNw
ZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3BlcmFuZCk7CisgICAgICAgIG1faml0Lm1v
dmVEb3VibGUob3BlcmFuZC5mcHIoKSwgcmVzdWx0LmZwcigpKTsKKyAgICAgICAgZG91YmxlUmVz
dWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAg
CiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOgogICAgICAgICBjb21waWxl
QWRkKG5vZGUpOwpAQCAtMjg4OSw3ICszMjc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWUuZnBy
KCk7CiAKICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKCksIG5vZGUtPmNoaWxkMigpLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90
RXF1YWxPclVub3JkZXJlZCwgdmFsdWVGUFIsIHZhbHVlRlBSKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsK
QEAgLTMxMDUsNyArMzQ5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgCiAgICAgICAgIG9wMS51c2UoKTsKICAgICAgICAgCi0gICAgICAgIGlm
ICghKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjTnVtYmVy
IHwgU3BlY0Jvb2xlYW4pKSkKKyAgICAgICAgaWYgKCEobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNGdWxsTnVtYmVyIHwgU3BlY0Jvb2xlYW4pKSkKICAgICAg
ICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5i
cmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFn
TWFza1JlZ2lzdGVyKTsKQEAgLTMyMDIsNyArMzU5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcGVyYW5kKHRoaXMsIHVzZSk7CiAgICAgICAgICAgICAgICAgICAgIEZQUlJlZyBv
cEZQUiA9IG9wZXJhbmQuZnByKCk7CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNL
KAotICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVjUmVhbE51
bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0Z1
bGxSZWFsTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoRG91Ymxl
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RF
cXVhbE9yVW5vcmRlcmVkLCBvcEZQUiwgb3BGUFIpKTsKICAgICAgICAgICAgICAgICAgICAgbV9q
aXQuc3RvcmVEb3VibGUob3BGUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIs
IHNpemVvZihkb3VibGUpICogb3BlcmFuZElkeCkpOwpAQCAtMzI2Nyw3ICszNjU3LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEZQ
UlJlZyBvcEZQUiA9IG9wZXJhbmQuZnByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAot
ICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNSZWFsTnVtYmVyLAor
ICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNGdWxsUmVhbE51bWJl
ciwKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIG9w
RlBSLCBvcEZQUikpOwogICAgICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShvcEZQUiwgc2Ny
YXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUs
OSBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgICAg
ICBzcGlsbEFjdGlvbiA9IFN0b3JlMzJQYXlsb2FkOwogICAgICAgICBlbHNlIGlmIChyZWdpc3Rl
ckZvcm1hdCA9PSBEYXRhRm9ybWF0Q2VsbCB8fCByZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0
U3RvcmFnZSkKICAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmVQdHI7Ci0gICAgICAgIGVs
c2UgeworICAgICAgICBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgg
fHwgcmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAg
ICBzcGlsbEFjdGlvbiA9IFN0b3JlNjQ7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBB
U1NFUlQocmVnaXN0ZXJGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogICAgICAgICAgICAgc3BpbGxB
Y3Rpb24gPSBTdG9yZTY0OwogICAgICAgICB9CkBAIC0zODYsNiArMzg4LDQwIEBAIFNpbGVudFJl
Z2lzdGVyU2F2ZVBsYW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVy
Rm9ybWF0ID09IERhdGFGb3JtYXRTdG9yYWdlKSB7CiAgICAgICAgIEFTU0VSVChpbmZvLmdwcigp
ID09IHNvdXJjZSk7CiAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkUHRyOworICAgIH0gZWxzZSBp
ZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KSB7CisgICAgICAgIGlmIChub2Rl
LT5oYXNDb25zdGFudCgpKQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldEludDQ4Q29uc3Rh
bnQ7CisgICAgICAgIGVsc2UgaWYgKGlzSlNJbnQzMihpbmZvLnNwaWxsRm9ybWF0KCkpIHx8IGlu
Zm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpCisgICAgICAgICAgICBmaWxsQWN0aW9u
ID0gTG9hZDMyUGF5bG9hZENvbnZlcnRUb0ludDQ4OworICAgICAgICBlbHNlIGlmIChpbmZvLnNw
aWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9
IExvYWQ2NDsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3Jt
YXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlmdExlZnQx
NjsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXROb25l
KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuLiBBbnl0aGluZyB0aGF0IHF1YWxpZmllcyBh
cyBhbiBpbnQzMiB3aWxsIG5ldmVyCisgICAgICAgICAgICAvLyBiZSB0dXJuZWQgaW50byBhIGNl
bGwgKGltbWVkaWF0ZSBzcGVjIGZhaWwpIG9yIGEgZG91YmxlICh0by1kb3VibGUKKyAgICAgICAg
ICAgIC8vIGNvbnZlcnNpb25zIGludm9sdmUgYSBzZXBhcmF0ZSBub2RlKS4KKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYg
KHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICBpZiAo
bm9kZS0+aGFzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRTdHJpY3RJ
bnQ0OENvbnN0YW50OworICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1h
dCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQorICAgICAgICAgICAg
ZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOworICAgICAgICBlbHNlIGlmIChp
bmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgZmlsbEFj
dGlvbiA9IExvYWQ2NFNoaWZ0UmlnaHQxNjsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZv
cm1hdCgpID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24g
PSBMb2FkNjQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0Tm9uZSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFs
aWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgorICAgICAgICAgICAgLy8gYmUgdHVybmVkIGlu
dG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCisg
ICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICNp
ZiBVU0UoSlNWQUxVRTY0KQpAQCAtMzkzLDcgKzQyOSw2IEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBs
YW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpIHsK
ICAgICAgICAgICAgIGlmICh2YWx1ZU9mSlNDb25zdGFudChub2RlKS5pc0NlbGwoKSkKICAgICAg
ICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0VHJ1c3RlZEpTQ29uc3RhbnQ7Ci0gICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldEpTQ29uc3RhbnQ7CiAgICAg
ICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikgewog
ICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyKTsK
QEAgLTUxMiw2ICs1NDcsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25z
dCBTaQogICAgIGNhc2UgU2V0SW50MzJDb25zdGFudDoKICAgICAgICAgbV9qaXQubW92ZShJbW0z
Mih2YWx1ZU9mSW50MzJDb25zdGFudChwbGFuLm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBTZXRJbnQ0OENvbnN0YW50OgorICAgICAgICBtX2ppdC5tb3Zl
KEltbTY0KHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS5hc01hY2hpbmVJbnQoKSA8PCAx
NiksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNldFN0cmljdEludDQ4
Q29uc3RhbnQ6CisgICAgICAgIG1faml0Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29uc3RhbnQocGxh
bi5ub2RlKCkpLmFzTWFjaGluZUludCgpKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgU2V0Qm9vbGVhbkNvbnN0YW50OgogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW0zMih2YWx1ZU9mQm9vbGVhbkNvbnN0YW50KHBsYW4ubm9kZSgpKSksIHBsYW4uZ3ByKCkpOwog
ICAgICAgICBicmVhazsKQEAgLTUzMyw2ICs1NzQsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c2lsZW50RmlsbChjb25zdCBTaQogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBh
eWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAg
ICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBwbGFuLmdw
cigpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50
NDg6CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5v
ZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQuc2ln
bkV4dGVuZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0Lmxz
aGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOgorICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxh
bi5ncHIoKSk7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHBsYW4uZ3ByKCksIHBs
YW4uZ3ByKCkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIExvYWREb3VibGVCb3hEb3VibGU6
CiAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUo
KS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQuc3ViNjQo
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBwbGFuLmdwcigpKTsKQEAgLTU3NCw2ICs2
MjQsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBTaQogICAgIGNh
c2UgTG9hZDY0OgogICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
cGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTG9hZDY0U2hpZnRSaWdodDE2OgorICAgICAgICBtX2ppdC5sb2FkNjQo
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwg
cGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHBs
YW4uZ3ByKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExvYWQ2NFNoaWZ0TGVmdDE2Ogor
ICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCkt
PnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LmxzaGlmdDY0
KFRydXN0ZWRJbW0zMigxNiksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKICNlbmRpZgog
ICAgIGNhc2UgTG9hZERvdWJsZToKICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxl
cjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmZwcigp
KTsKQEAgLTE0MTYsNiArMTQ3NCwxMCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVl
cEhvbGVCcmFuCiAKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkp
CiAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2Rl
LCBjb25kaXRpb24pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGVsc2UgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgICAgIGNvbXBpbGVQZWVw
SG9sZUludDQ4QnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51
bWJlclVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2gobm9kZSwg
YnJhbmNoTm9kZSwgZG91YmxlQ29uZGl0aW9uKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3Ao
KSA9PSBDb21wYXJlRXEpIHsKQEAgLTE1MDcsNiArMTU2OSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbmxpbmVTdGFydCgKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgog
ICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoSW50MzJJbkpTU3RhY2sp
OwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6
CisgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShJbnQ0OEluSlNTdGFj
ayk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxs
OgogICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoQ2VsbEluSlNTdGFj
ayk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xODczLDcgKzE5MzgsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUHV0QnlWCiAgICAgRlBSUmVnIHZhbHVlUmVnID0g
dmFsdWUuZnByKCk7CiAgICAgCiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVS
ZWdzKCksIGNoaWxkMywgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKCksIGNo
aWxkMywgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoCiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgdmFs
dWVSZWcsIHZhbHVlUmVnKSk7CiAgICAgCkBAIC0yMTQ5LDYgKzIyMTQsMTggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgICAgICBpbnQzMlJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUsIG9wMS5mb3JtYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cisg
ICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7Cisg
ICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEpOworICAg
ICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihvcDFHUFIs
IHJlc3VsdEdQUik7CisgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgRGF0YUZv
cm1hdEludDMyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxV
RTY0KQogICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgTm90Q2VsbFVzZTogewpA
QCAtMjE4Nyw3ICsyMjY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9J
bnQzMgogCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE51bWJl
clVzZSkgewogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyhncHIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAgICAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxs
TnVtYmVyLAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoCiAgICAgICAg
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgZ3ByLCBHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0yMjQzLDcgKzIz
MjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAKICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE51bWJlclVzZSkgewog
ICAgICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVj
TnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXls
b2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CkBAIC0yMzg5LDE1ICsy
NDY2LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmwKICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NCgKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpOwogICAgIAotICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwg
U3BlY051bWJlcikpIHsKKyAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNw
ZWNGdWxsTnVtYmVyKSkgewogICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVFeGl0c0Zv
cndhcmQpIHsKICAgICAgICAgICAgIGZvcndhcmRUeXBlQ2hlY2soCi0gICAgICAgICAgICAgICAg
SlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVt
YmVyLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6
WmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpLAogICAgICAgICAg
ICAgICAgIFZhbHVlUmVjb3Zlcnk6OmluR1BSKG9wMUdQUiwgRGF0YUZvcm1hdEpTKSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBiYWNrd2FyZFR5cGVDaGVjaygKLSAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1
bGxOdW1iZXIsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1i
bGVyOjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMjQyMCwxNSArMjQ5NywxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW50MzJUb0RvdWJsCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0g
bV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxVGFnR1BS
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKICAgICAKLSAgICBpZiAobmVlZHNU
eXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIpKSB7CisgICAgaWYgKG5lZWRzVHlw
ZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlcikpIHsKICAgICAgICAgaWYgKG5v
ZGUtPmZsYWdzKCkgJiBOb2RlRXhpdHNGb3J3YXJkKSB7CiAgICAgICAgICAgICBmb3J3YXJkVHlw
ZUNoZWNrKAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9h
ZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjTnVtYmVyLAorICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVs
bE51bWJlciwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcp
KSwKICAgICAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5OjppblBhaXIob3AxVGFnR1BSLCBvcDFQ
YXlsb2FkR1BSKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBiYWNrd2FyZFR5cGVD
aGVjaygKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRH
UFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxO
dW1iZXIsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlT3JFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjU0OSw2ICsyNjI2LDE0IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KCkpIHsKKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIocmVzdWx0UmVnLCByZXN1
bHRSZWcpOworICAgICAgICBzdHJpY3RJbnQ0OFJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgCiAgICAgRlBSVGVtcG9yYXJ5IGZyZXN1
bHQodGhpcyk7CiAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUocmVzdWx0UmVnLCBmcmVz
dWx0LmZwcigpKTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBwb3NpdGl2ZSA9IG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIHJlc3VsdFJlZywgVHJ1c3Rl
ZEltbTMyKDApKTsKQEAgLTI2MDIsNiArMjY4NywyOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlWYWxGb3JJCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAgICAgU3BlY3Vs
YXRlU3RyaWN0SW50NDhPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2UpOworICAgICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRj
aFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlT3AuZ3By
KCksIHNjcmF0Y2hSZWcpOworICAgICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgeworICAg
ICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50U2l6ZSh0eXBlKSA9PSAxKTsKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpbkJvdW5kcyA9IG1faml0LmJyYW5jaDY0KAorICAg
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBzY3JhdGNoUmVn
LCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTY0KDB4ZmYpKTsKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCB0b29CaWcgPSBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuLCBzY3JhdGNoUmVnLCBKSVRDb21waWxl
cjo6VHJ1c3RlZEltbTY0KDB4ZmYpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW0zMigwKSwgc2NyYXRjaFJlZyk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgY2xhbXBlZCA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICB0b29CaWcubGlu
aygmbV9qaXQpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0
ZWRJbW0zMigyNTUpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgICAgICAgICBjbGFtcGVkLmxpbmso
Jm1faml0KTsKKyAgICAgICAgICAgICAgICBpbkJvdW5kcy5saW5rKCZtX2ppdCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB2YWx1ZS5hZG9wdChzY3JhdGNoKTsKKyAgICAgICAgICAgIHZh
bHVlR1BSID0gc2NyYXRjaFJlZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgICAgIGlmIChpc0Ns
YW1wZWQodHlwZSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudFNpemUodHlwZSkg
PT0gMSk7CkBAIC0yODcwLDcgKzI5NzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QWRkKE5vZGUqIG5vCiAgICAgICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisgICAg
ICAgIAogICAgICAgICBpZiAoaXNOdW1iZXJDb25zdGFudChub2RlLT5jaGlsZDIoKS5ub2RlKCkp
KSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIGludDMyX3QgaW1tMiA9IHZhbHVlT2ZJbnQzMkNvbnN0YW50
KG5vZGUtPmNoaWxkMigpLm5vZGUoKSk7CkBAIC0yOTE1LDYgKzMwMjMsMzMgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFkZChOb2RlKiBubwogICAgICAgICBpbnQzMlJlc3VsdChncHJS
ZXN1bHQsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAgICAKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAvLyBXaWxsIHdl
IG5lZWQgYW4gb3ZlcmZsb3cgY2hlY2s/IElmIHdlIGNhbiBwcm92ZSB0aGF0IG5laXRoZXIgaW5w
dXQgY2FuIGJlCisgICAgICAgIC8vIEludDQ4IHRoZW4gdGhlIG92ZXJmbG93IGNoZWNrIHdpbGwg
bm90IGJlIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkKKyAgICAgICAgICAgICYmICFtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAgICAg
ICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0aGlz
LCBub2RlLT5jaGlsZDIoKSwgb3AxKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgUmV1c2UsIG9wMSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVz
dWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LmFkZDY0KG9wMi5ncHIoKSwgcmVzdWx0Lmdw
cigpKTsKKyAgICAgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgb3AxLmZv
cm1hdCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisgICAgICAg
IG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAg
ICAgICAgICAgIG1faml0LmJyYW5jaEFkZDY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3Ay
LmdwcigpLCByZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0Lmdwcigp
LCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQogICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9w
ZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTMwNjAsNiArMzE5NSwzMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9kCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBNYWNoaW5lSW50
VXNlOiB7CisgICAgICAgIC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxvdyBjaGVjaz8gSWYgd2Ug
Y2FuIHByb3ZlIHRoYXQgbmVpdGhlciBpbnB1dCBjYW4gYmUKKyAgICAgICAgLy8gSW50NDggdGhl
biB0aGUgb3ZlcmZsb3cgY2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5LgorICAgICAgICBpZiAo
IW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KQor
ICAgICAgICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuY291bGRCZVR5
cGUoU3BlY0ludDQ4KSkgeworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVXaGlj
aGV2ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBvcDEpOworICAgICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKKyAgICAgICAgICAg
IG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgbV9qaXQu
c3ViNjQob3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgaW50NDhSZXN1bHQo
cmVzdWx0LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0KCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AxKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMih0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywg
UmV1c2UsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5n
cHIoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92ZXJm
bG93LCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3ViNjQoTWFj
cm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOworICAgICAg
ICBpbnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKICAgICBjYXNlIE51bWJlclVzZTogewogICAg
ICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
QEAgLTMwODgsNiArMzI1MCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5l
Z2F0ZSgKIAogICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKIAor
ICAgICAgICAvLyBOb3RlOiB0aGVyZSBpcyBubyBub3Rpb24gb2YgYmVpbmcgbm90IHVzZWQgYXMg
YSBudW1iZXIsIGJ1dCBzb21lb25lCisgICAgICAgIC8vIGNhcmluZyBhYm91dCBuZWdhdGl2ZSB6
ZXJvLgorICAgICAgICAKICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5v
ZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgbV9qaXQubmVnMzIocmVzdWx0Lmdw
cigpKTsKICAgICAgICAgZWxzZSB7CkBAIC0zMDk5LDYgKzMyNjQsNDIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAogICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQu
Z3ByKCksIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAgICAgICAg
IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgIEdQ
UlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworICAgICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7
CisgICAgICAgICAgICBtX2ppdC5uZWc2NChyZXN1bHRHUFIpOworICAgICAgICAgICAgaWYgKCFi
eXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkgewor
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgICAgIE5l
Z2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgb3AxLmZvcm1h
dCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
U3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEu
Z3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAg
IG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAg
ICAgIG1faml0LmJyYW5jaE5lZzY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgcmVzdWx0R1BS
KSk7CisgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJp
dGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAg
ICAgICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0R1BSKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICAKICAgICBj
YXNlIE51bWJlclVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CkBAIC0zMTY0LDYgKzMzNjUsNjIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUFyaXRoTXVsKE5vZAogICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAKKyNpZiBVU0UoSlNWQUxV
RTY0KSAgIAorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAvLyBUaGlzIGlzIHN1
cGVyIGNsZXZlci4gV2Ugd2FudCB0byBkbyBhbiBpbnQ0OCBtdWx0aXBsaWNhdGlvbiBhbmQgY2hl
Y2sgdGhlCisgICAgICAgIC8vIGludDQ4IG92ZXJmbG93IGJpdC4gVGhlcmUgaXMgbm8gZGlyZWN0
IGhhcmR3YXJlIHN1cHBvcnQgZm9yIHRoaXMsIGJ1dCB3ZSBkbworICAgICAgICAvLyBoYXZlIHRo
ZSBhYmlsaXR5IHRvIGRvIGFuIGludDY0IG11bHRpcGxpY2F0aW9uIGFuZCBjaGVjayB0aGUgaW50
NjQgb3ZlcmZsb3cKKyAgICAgICAgLy8gYml0LiBXZSBsZXZlcmFnZSB0aGF0LiBDb25zaWRlciB0
aGF0IGEsIGIgYXJlIGludDQ4IG51bWJlcnMgaW5zaWRlIGludDY0CisgICAgICAgIC8vIHJlZ2lz
dGVycywgd2l0aCB0aGUgaGlnaCAxNiBiaXRzIGJlaW5nIHNpZ24tZXh0ZW5kZWQuIFdlIGNhbiBk
bzoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIChhICogKGIgPDwgMTYpKQorICAgICAgICAv
LworICAgICAgICAvLyBUaGlzIHdpbGwgZ2l2ZSB1cyBhIGxlZnQtc2hpZnRlZCBpbnQ0OCAodmFs
dWUgaXMgaW4gaGlnaCA0OCBiaXRzLCBsb3cgMTYKKyAgICAgICAgLy8gYml0cyBhcmUgemVybykg
cGx1cyB0aGUgaW50NDggb3ZlcmZsb3cgYml0LiBJLmUuIHdoZXRoZXIgdGhpcyA2NC1iaXQKKyAg
ICAgICAgLy8gbXVsdGlwbGljYXRpb24gb3ZlcmZsb3dzIGlzIGlkZW50aWNhbCB0byB3aGV0aGVy
IHRoZSAnYSAqIGInIDQ4LWJpdAorICAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBvdmVyZmxvd3Mu
CisgICAgICAgIC8vCisgICAgICAgIC8vIEluIG91ciBub21lbmNsYXR1cmUsIHRoaXMgaXM6Cisg
ICAgICAgIC8vCisgICAgICAgIC8vICAgICBzdHJpY3RJbnQ0OChhKSAqIGludDQ4KGIpID0+IGlu
dDQ4CisgICAgICAgIC8vCisgICAgICAgIC8vIFRoYXQgaXMgInN0cmljdEludDQ4IiBtZWFucyB1
bnNoaWZ0ZWQgYW5kICJpbnQ0OCIgbWVhbnMgbGVmdC1zaGlmdGVkIGJ5IDE2CisgICAgICAgIC8v
IGJpdHMuCisgICAgICAgIC8vCisgICAgICAgIC8vIFdlIGRvbid0IGNhcmUgd2hpY2ggb2Ygb3Ax
IG9yIG9wMiBzZXJ2ZXMgYXMgdGhlIGxlZnQtc2hpZnRlZCBvcGVyYW5kLCBzbworICAgICAgICAv
LyB3ZSBqdXN0IGRvIHdoYXRldmVyIGlzIG1vcmUgY29udmVuaWVudCBmb3Igb3AxIGFuZCBoYXZl
IG9wMiBkbyB0aGUKKyAgICAgICAgLy8gb3Bwb3NpdGUuIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGRv
IGF0IG1vc3Qgb25lIHNoaWZ0LgorCisgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3Bl
cmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVXaGljaGV2
ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBPcHBvc2l0ZVNoaWZ0LCBv
cDEpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAKKyAgICAg
ICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIG9wMkdQUiA9IG9w
Mi5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAg
ICAgCisgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwg
MCwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaE11bDY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxv
dywgb3AyR1BSLCByZXN1bHRHUFIpKTsKKyAgICAgICAgCisgICAgICAgIGlmICghYnl0ZWNvZGVD
YW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJlc3VsdE5vblplcm8gPSBtX2ppdC5icmFuY2hUZXN0
NjQoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHJlc3VsdEdQUik7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0aXZl
WmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChN
YWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMUdQUiwgVHJ1c3RlZEltbTY0KDApKSk7CisgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVybywg
SlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fz
c2VtYmxlcjo6TGVzc1RoYW4sIG9wMkdQUiwgVHJ1c3RlZEltbTY0KDApKSk7CisgICAgICAgICAg
ICByZXN1bHROb25aZXJvLmxpbmsoJm1faml0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaW50NDhSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICAKICAgICBjYXNlIE51bWJlclVzZTog
ewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CkBAIC0zNTg3LDcgKzM4NDQsMTQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShO
b2RlKiBub2RlLAogICAgICAgICBjb21waWxlSW50MzJDb21wYXJlKG5vZGUsIGNvbmRpdGlvbik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KKyAgICAKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAgICAg
ICAgY29tcGlsZUludDQ4Q29tcGFyZShub2RlLCBjb25kaXRpb24pOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgCiAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVEb3VibGVD
b21wYXJlKG5vZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTM3MzcsNiArNDAwMSwyMyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEo
Tm9kCiAgICAgICAgIGNvbXBpbGVJbnQzMkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICAgCisjaWYgVVNFKEpTVkFM
VUU2NCkgICAKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgdW5zaWduZWQgYnJh
bmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJy
YW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNo
Tm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21w
aWxlUGVlcEhvbGVJbnQ0OEJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHVz
ZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5jaElu
ZGV4SW5CbG9jazsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUludDQ4Q29t
cGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAogICAgIGNhc2UgTnVt
YmVyVXNlOiB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBl
ZXBIb2xlQnJhbmNoKCk7CkBAIC00NDkyLDkgKzQ3NzMsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlSW50MzIoRWRnZQogICAgIChTcGVjdWxhdGVJbnQzMk9wZXJhbmQodGhpcywg
ZWRnZSkpLmdwcigpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVNYWNoaW5l
SW50KEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNNYWNo
aW5lSW50KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIChTcGVjdWxhdGVXaGljaGV2ZXJJ
bnQ0OE9wZXJhbmQodGhpcywgZWRnZSkpLmdwcigpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVOdW1iZXIoRWRnZSBlZGdlKQogewotICAgIGlmICghbmVlZHNUeXBlQ2hlY2so
ZWRnZSwgU3BlY051bWJlcikpCisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVs
bE51bWJlcikpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAoU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCh0aGlzLCBlZGdlKSkuZnByKCk7CkBAIC00NTAyLDEzICs0NzkxLDEzIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcihFZGcKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlUmVhbE51bWJlcihFZGdlIGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVDaGVj
ayhlZGdlLCBTcGVjUmVhbE51bWJlcikpCisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBT
cGVjRnVsbFJlYWxOdW1iZXIpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgU3BlY3VsYXRl
RG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwogICAgIEZQUlJlZyBmcHIgPSBvcGVy
YW5kLmZwcigpOwogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncygpLCBl
ZGdlLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0Z1
bGxSZWFsTnVtYmVyLAogICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoCiAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgZnByLCBmcHIpKTsKIH0K
QEAgLTQ3NzAsNyArNTA1OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2Rl
KiwgRWQKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgQVNTRVJU
KCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTnVtYmVyKSk7CisgICAgICAgIEFTU0VSVCghbmVl
ZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxOdW1iZXIpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwg
U3BlY0NlbGwpKTsKQEAgLTQ3ODEsNiArNTA3MCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZShOb2RlKiwgRWQKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBzcGVjdWxhdGVJ
bnQzMihlZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAg
ICAgICBzcGVjdWxhdGVNYWNoaW5lSW50KGVkZ2UpOworICAgICAgICBicmVhazsKICAgICBjYXNl
IFJlYWxOdW1iZXJVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVJlYWxOdW1iZXIoZWRnZSk7CiAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOSArMTU5LDcgQEAg
cHVibGljOgogICAgIC8vIGFuZCBpdHMgbWFjaGluZSByZWdpc3RlcnMgbWF5IGJlIHJldXNlZC4K
ICAgICBib29sIGNhblJldXNlKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAg
IEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVy
KHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBpbmZvLmNhblJldXNlKCk7CisgICAg
ICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5jYW5SZXVzZSgpOwogICAgIH0KICAgICBi
b29sIGNhblJldXNlKEVkZ2Ugbm9kZVVzZSkKICAgICB7CkBAIC0yMzcsMTUgKzIzNSwxMSBAQCBw
dWJsaWM6CiAgICAgLy8gYXZvaWQgc3BpbGxpbmcgdmFsdWVzIHdlIHdpbGwgbmVlZCBpbW1lZGlh
dGVseSkuCiAgICAgYm9vbCBpc0ZpbGxlZChOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwot
ICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxS
ZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gaW5mby5yZWdpc3RlckZv
cm1hdCgpICE9IERhdGFGb3JtYXROb25lOworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8o
bm9kZSkucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9uZTsKICAgICB9CiAgICAgYm9v
bCBpc0ZpbGxlZERvdWJsZShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBH
ZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2
aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gaW5mby5yZWdpc3RlckZvcm1hdCgpID09
IERhdGFGb3JtYXREb3VibGU7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5y
ZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGU7CiAgICAgfQogCiAgICAgLy8gQ2Fs
bGVkIG9uIGFuIG9wZXJhbmQgb25jZSBpdCBoYXMgYmVlbiBjb25zdW1lZCBieSBhIHBhcmVudCBu
b2RlLgpAQCAtMjUzLDggKzI0Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghbm9k
ZS0+aGFzUmVzdWx0KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFZpcnR1YWxSZWdp
c3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAg
R2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIo
dmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0
aW9uSW5mbyhub2RlKTsKIAogICAgICAgICAvLyB1c2UoKSByZXR1cm5zIHRydWUgd2hlbiB0aGUg
dmFsdWUgYmVjb21lcyBkZWFkLCBhbmQgYW55CiAgICAgICAgIC8vIGFzc29jaWF0ZWQgcmVzb3Vy
Y2VzIG1heSBiZSBmcmVlZC4KQEAgLTMzMyw2ICszMjYsNyBAQCBwdWJsaWM6CiAgICAgLy8gbWFj
aGluZSByZWdpc3RlcnMsIGltcGxpY2l0bHkgZ2VuZXJhdGluZyBzcGVjdWxhdGlvbiBjaGVja3Mg
YXMgbmVlZGVkLgogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50MzIoRWRnZSwgRGF0YUZvcm1h
dCYgcmV0dXJuRm9ybWF0KTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludDMyU3RyaWN0KEVk
Z2UpOworICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50NDgoRWRnZSwgRGF0YUZvcm1hdCBkZXNp
cmVkRm9ybWF0KTsKICAgICBGUFJSZWcgZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlKTsKICAgICBH
UFJSZWcgZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVC
b29sZWFuKEVkZ2UpOwpAQCAtNDY4LDYgKzQ2Miw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IHJldHVybiBib3hEb3VibGUoZnByLCBhbGxvY2F0ZSgpKTsKICAgICB9CisgICAgCisgICAgdm9p
ZCBib3hJbnQ0OChHUFJSZWcgc291cmNlR1BSLCBHUFJSZWcgdGFyZ2V0R1BSLCBEYXRhRm9ybWF0
IGZvcm1hdCk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIHZvaWQgYm94RG91YmxlKEZQ
UlJlZyBmcHIsIEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2FkR1BSKQogICAgIHsKQEAgLTU1
OSwxMSArNTU1LDExIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBib29s
IGlzS25vd25JbnRlZ2VyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5v
ZGUpLm1fdHlwZSAmIH5TcGVjSW50MzIpOyB9Ci0gICAgYm9vbCBpc0tub3duQ2VsbChOb2RlKiBu
b2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiB+U3BlY0NlbGwp
OyB9CisgICAgYm9vbCBpc0tub3duSW50ZWdlcihOb2RlKiBub2RlKSB7IHJldHVybiBtX3N0YXRl
LmZvck5vZGUobm9kZSkuaXNUeXBlKFNwZWNJbnQzMik7IH0KKyAgICBib29sIGlzS25vd25DZWxs
KE5vZGUqIG5vZGUpIHsgcmV0dXJuIG1fc3RhdGUuZm9yTm9kZShub2RlKS5pc1R5cGUoU3BlY0Nl
bGwpOyB9CiAgICAgCiAgICAgYm9vbCBpc0tub3duTm90SW50ZWdlcihOb2RlKiBub2RlKSB7IHJl
dHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBTcGVjSW50MzIpOyB9Ci0gICAg
Ym9vbCBpc0tub3duTm90TnVtYmVyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JO
b2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNOdW1iZXIpOyB9CisgICAgYm9vbCBpc0tub3duTm90TnVt
YmVyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAm
IFNwZWNGdWxsTnVtYmVyKTsgfQogICAgIGJvb2wgaXNLbm93bk5vdENlbGwoTm9kZSogbm9kZSkg
eyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0NlbGwpOyB9CiAg
ICAgCiAgICAgLy8gQ2hlY2tzL2FjY2Vzc29ycyBmb3IgY29uc3RhbnQgdmFsdWVzLgpAQCAtODE2
LDYgKzgxMiwyNSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbnQzMlJlc3VsdChyZWcsIG5v
ZGUsIERhdGFGb3JtYXRJbnQzMiwgbW9kZSk7CiAgICAgfQorICAgIHZvaWQgaW50NDhSZXN1bHQo
R1BSUmVnIHJlZywgTm9kZSogbm9kZSwgRGF0YUZvcm1hdCBmb3JtYXQsIFVzZUNoaWxkcmVuTW9k
ZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQorICAgIHsKKyAgICAgICAgaWYgKG1vZGUgPT0gQ2Fs
bFVzZUNoaWxkcmVuKQorICAgICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisKKyAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3Rlcigp
OworICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1
YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworCisgICAgICAgIG1fZ3Bycy5yZXRhaW4ocmVn
LCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAgICAgIGluZm8uaW5pdEludDQ4
KG5vZGUsIG5vZGUtPnJlZkNvdW50KCksIHJlZywgZm9ybWF0KTsKKyAgICB9CisgICAgdm9pZCBp
bnQ0OFJlc3VsdChHUFJSZWcgcmVnLCBOb2RlKiBub2RlLCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9
IENhbGxVc2VDaGlsZHJlbikKKyAgICB7CisgICAgICAgIGludDQ4UmVzdWx0KHJlZywgbm9kZSwg
RGF0YUZvcm1hdEludDQ4LCBtb2RlKTsKKyAgICB9CisgICAgdm9pZCBzdHJpY3RJbnQ0OFJlc3Vs
dChHUFJSZWcgcmVnLCBOb2RlKiBub2RlLCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9IENhbGxVc2VD
aGlsZHJlbikKKyAgICB7CisgICAgICAgIGludDQ4UmVzdWx0KHJlZywgbm9kZSwgRGF0YUZvcm1h
dFN0cmljdEludDQ4LCBtb2RlKTsKKyAgICB9CiAgICAgdm9pZCBub1Jlc3VsdChOb2RlKiBub2Rl
LCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9IENhbGxVc2VDaGlsZHJlbikKICAgICB7CiAgICAgICAg
IGlmIChtb2RlID09IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSkKQEAgLTkwMCw3ICs5MTUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0Q29uc3RhbnRJbmZvKE5vZGUqIG5vZGUpCiAgICAg
ewogICAgICAgICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50KG5vZGUpIHx8IGlzTnVtYmVyQ29uc3Rh
bnQobm9kZSkgfHwgaXNKU0NvbnN0YW50KG5vZGUpKTsKLSAgICAgICAgZ2VuZXJhdGlvbkluZm9G
cm9tVmlydHVhbFJlZ2lzdGVyKG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpKS5pbml0Q29uc3RhbnQo
bm9kZSwgbm9kZS0+cmVmQ291bnQoKSk7CisgICAgICAgIGdlbmVyYXRpb25JbmZvKG5vZGUpLmlu
aXRDb25zdGFudChub2RlLCBub2RlLT5yZWZDb3VudCgpKTsKICAgICB9CiAgICAgCiAgICAgLy8g
VGhlc2UgbWV0aG9kcyBhZGQgY2FsbHMgdG8gQysrIGhlbHBlciBmdW5jdGlvbnMuCkBAIC0xODg5
LDE1ICsxOTA0LDIyIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2Rl
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJh
dGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVh
bFJlZ2lzdGVyKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBpbmZvLmlzSlNJbnQzMigpOwor
ICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8obm9kZSkuaXNKU0ludDMyKCk7CisgICAgfQor
ICAgIAorICAgIGJvb2wgYmV0dGVyVXNlU3RyaWN0SW50NDgoTm9kZSogbm9kZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiAhZ2VuZXJhdGlvbkluZm8obm9kZSkuaXNJbnQ0OCgpOworICAgIH0KKyAg
ICBib29sIGJldHRlclVzZVN0cmljdEludDQ4KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChlZGdlLm5vZGUoKSk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgY29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24s
IE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfREZHT3BlcmF0aW9uX0VKSik7CiAg
ICAgYm9vbCBjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxh
dGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0RGR09w
ZXJhdGlvbl9FSkopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2goTm9kZSos
IE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyAg
ICB2b2lkIGNvbXBpbGVQZWVwSG9sZUludDQ4QnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2Rl
LCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVl
cEhvbGVCb29sZWFuQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFu
Y2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpEb3VibGVDb25kaXRpb24p
OwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSosIE5vZGUqIGJy
YW5jaE5vZGUpOwpAQCAtMTk0NSw2ICsxOTY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGls
ZU5ld1R5cGVkQXJyYXkoTm9kZSopOwogICAgIAogICAgIHZvaWQgY29tcGlsZUludDMyQ29tcGFy
ZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworICAgIHZvaWQg
Y29tcGlsZUludDQ4Q29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24pOwogICAgIHZvaWQgY29tcGlsZUJvb2xlYW5Db21wYXJlKE5vZGUqLCBNYWNyb0Fzc2Vt
Ymxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlRG91YmxlQ29tcGFy
ZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbik7CiAgICAgCkBAIC0yMTE4
LDYgKzIxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3J3YXJkVHlwZUNoZWNrKEpTVmFsdWVT
b3VyY2UsIEVkZ2UsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAganVtcFRvRmFpbCwgY29uc3QgVmFsdWVSZWNvdmVyeSYpOwogCiAgICAgdm9p
ZCBzcGVjdWxhdGVJbnQzMihFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRn
ZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVOdW1iZXIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVS
ZWFsTnVtYmVyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlQm9vbGVhbihFZGdlKTsKQEAgLTIx
OTUsNiArMjIxOSwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9nZW5lcmF0
aW9uSW5mb1tvcGVyYW5kVG9Mb2NhbCh2aXJ0dWFsUmVnaXN0ZXIpXTsKICAgICB9CisgICAgCisg
ICAgR2VuZXJhdGlvbkluZm8mIGdlbmVyYXRpb25JbmZvKE5vZGUqIG5vZGUpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKG5vZGUtPnZpcnR1
YWxSZWdpc3RlcigpKTsKKyAgICB9CisgICAgCisgICAgR2VuZXJhdGlvbkluZm8mIGdlbmVyYXRp
b25JbmZvKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhl
ZGdlLm5vZGUoKSk7CisgICAgfQogCiAgICAgLy8gVGhlIEpJVCwgd2hpbGUgYWxzbyBwcm92aWRl
cyBNYWNyb0Fzc2VtYmxlciBmdW5jdGlvbmFsaXR5LgogICAgIEpJVENvbXBpbGVyJiBtX2ppdDsK
QEAgLTI2NzYsNiArMjcxMCwxNzkgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9ncHJPckludmFs
aWQ7CiB9OwogCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50NDggKGkuZS4gaXQncyBsZWZ0
LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorY2xhc3MgU3BlY3VsYXRlSW50NDhPcGVy
YW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQoU3BlY3Vs
YXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBB
dXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAg
ICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcp
CisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAg
ICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQor
ICAgIAorICAgIH5TcGVjdWxhdGVJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2Nr
KG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAg
IAorICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09
IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxs
U3BlY3VsYXRlSW50NDgoZWRnZSgpLCBEYXRhRm9ybWF0SW50NDgpOworICAgICAgICByZXR1cm4g
bV9ncHJPckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAg
ICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1
bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPcklu
dmFsaWQ7Cit9OworCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50NDggKGkuZS4gdGhlIHBheWxv
YWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMgYXJlIHNpZ24tZXh0ZW5kZWQp
LgorY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRn
ZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3Bl
Y3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQor
ICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVk
Z2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxl
ZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIH5TcGVjdWxh
dGVTdHJpY3RJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZh
bGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZh
bGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAgIEdQUlJl
ZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJS
ZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlSW50
NDgoZWRnZSgpLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICByZXR1cm4gbV9ncHJP
ckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1f
aml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZl
SklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7
Cit9OworCitlbnVtIE9wcG9zaXRlU2hpZnRUYWcgeyBPcHBvc2l0ZVNoaWZ0IH07CisKK2NsYXNz
IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
U3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2Ug
ZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1
bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAg
ICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgICAgICAsIG1fc3RyaWN0
KGppdC0+YmV0dGVyVXNlU3RyaWN0SW50NDgoZWRnZSkpCisgICAgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNl
S2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2Rl
KCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IFNwZWN1
bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2Us
IGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCYgb3RoZXIsIE9wZXJhbmRTcGVj
dWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAg
OiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPcklu
dmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICAgICAgLCBtX3N0cmljdChvdGhlci5tX3N0cmljdCkK
KyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAg
IGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9Cisg
ICAgCisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kKFNwZWN1bGF0
aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRhZywgY29uc3QgU3BlY3VsYXRl
V2hpY2hldmVySW50NDhPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2Rl
ID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAg
ICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BS
UmVnKQorICAgICAgICAsIG1fc3RyaWN0KCFvdGhlci5tX3N0cmljdCkKKyAgICB7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwg
ZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmls
bGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgflNwZWN1
bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJP
ckludmFsaWQgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJP
ckludmFsaWQpOworICAgIH0KKyAgICAKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9CisgICAgCisgICAg
R1BSUmVnIGdwcigpCisgICAgeworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxp
ZEdQUlJlZykgeworICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNwZWN1
bGF0ZUludDQ4KAorICAgICAgICAgICAgICAgIGVkZ2UoKSwgbV9zdHJpY3QgPyBEYXRhRm9ybWF0
U3RyaWN0SW50NDggOiBEYXRhRm9ybWF0SW50NDgpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBtX2dwck9ySW52YWxpZDsKKyAgICB9CisgICAgCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAg
ICAgICAgbV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKyAgICAKKyAgICBEYXRhRm9ybWF0IGZv
cm1hdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zdHJpY3QgPyBEYXRhRm9ybWF0
U3RyaWN0SW50NDggOiBEYXRhRm9ybWF0SW50NDg7CisgICAgfQorCitwcml2YXRlOgorICAgIFNw
ZWN1bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJSZWcgbV9ncHJP
ckludmFsaWQ7CisgICAgYm9vbCBtX3N0cmljdDsKK307CisKIGNsYXNzIFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQgewogcHVibGljOgogICAgIGV4cGxpY2l0IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQo
U3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1v
ZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0
LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2Ug
S25vd25JbnQzMlVzZToKICAgICAgICAgb3V0LnByaW50KCJLbm93bkludDMyIik7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgb3V0LnByaW50KCJNYWNo
aW5lSW50Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVhbE51bWJlclVzZToKICAgICAg
ICAgb3V0LnByaW50KCJSZWFsTnVtYmVyIik7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHJldmlzaW9uIDE1NTgyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAgVW50eXBlZFVzZSwKICAgICBJbnQzMlVzZSwK
ICAgICBLbm93bkludDMyVXNlLAorICAgIE1hY2hpbmVJbnRVc2UsCiAgICAgUmVhbE51bWJlclVz
ZSwKICAgICBOdW1iZXJVc2UsCiAgICAgS25vd25OdW1iZXJVc2UsCkBAIC02NiwxMSArNjcsMTMg
QEAgQUxXQVlTX0lOTElORSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRgogICAgIGNhc2UgSW50
MzJVc2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAgICAgICByZXR1cm4gU3BlY0ludDMy
OworICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5lSW50
OwogICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNSZWFsTnVtYmVy
OworICAgICAgICByZXR1cm4gU3BlY0Z1bGxSZWFsTnVtYmVyOwogICAgIGNhc2UgTnVtYmVyVXNl
OgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgIHJldHVybiBTcGVjTnVtYmVyOwor
ICAgICAgICByZXR1cm4gU3BlY0Z1bGxOdW1iZXI7CiAgICAgY2FzZSBCb29sZWFuVXNlOgogICAg
ICAgICByZXR1cm4gU3BlY0Jvb2xlYW47CiAgICAgY2FzZSBDZWxsVXNlOgpAQCAtMTI1LDYgKzEy
OCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVyaWNhbChVc2VLaW5kIGsKICAgICBzd2l0
Y2ggKGtpbmQpIHsKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToK
KyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgIGNh
c2UgTnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAkocmV2aXNpb24gMTU1ODIwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgdm9pZCBWYWx1ZVNvdXJjZTo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KQogICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgIG91dC5wcmludCgiSW50
MzIiKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAg
b3V0LnByaW50KCJJbnQ0OCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENlbGxJbkpTU3Rh
Y2s6CiAgICAgICAgIG91dC5wcmludCgiQ2VsbCIpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHJldmlzaW9uIDE1NTgy
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBlbnVtIFZhbHVlU291cmNlS2luZCB7CiAgICAgU291
cmNlTm90U2V0LAogICAgIFZhbHVlSW5KU1N0YWNrLAogICAgIEludDMySW5KU1N0YWNrLAorICAg
IEludDQ4SW5KU1N0YWNrLAogICAgIENlbGxJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkluSlNTdGFj
aywKICAgICBEb3VibGVJbkpTU3RhY2ssCkBAIC01Niw2ICs1Nyw4IEBAIHN0YXRpYyBpbmxpbmUg
VmFsdWVTb3VyY2VLaW5kIGRhdGFGb3JtYXQKICAgICBzd2l0Y2ggKGRhdGFGb3JtYXQpIHsKICAg
ICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMySW5KU1N0YWNrOwor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1cm4gSW50NDhJbkpTU3RhY2s7
CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgICAgICByZXR1cm4gRG91YmxlSW5KU1N0
YWNrOwogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CkBAIC03OSw2ICs4Miw4IEBAIHN0YXRp
YyBpbmxpbmUgRGF0YUZvcm1hdCB2YWx1ZVNvdXJjZUtpbmQKICAgICAgICAgcmV0dXJuIERhdGFG
b3JtYXRKUzsKICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICByZXR1cm4gRGF0YUZv
cm1hdEludDMyOworICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgIHJldHVybiBEYXRh
Rm9ybWF0SW50NDg7CiAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgogICAgICAgICByZXR1cm4gRGF0
YUZvcm1hdENlbGw7CiAgICAgY2FzZSBCb29sZWFuSW5KU1N0YWNrOgpAQCAtMTM5LDYgKzE0NCw4
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShEb3VibGVJbkpTU3Rh
Y2spOwogICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgIHJldHVybiBWYWx1
ZVNvdXJjZShJbnQzMkluSlNTdGFjayk7CisgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAg
ICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEludDQ4SW5KU1N0YWNrKTsKICAgICAgICAgY2Fz
ZSBGbHVzaGVkQ2VsbDoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShDZWxsSW5KU1N0
YWNrKTsKICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKQEAgLTE4MSw2ICsxODgsOSBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgICAgICByZXR1cm4g
VmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyKCk7CiAgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAgICAgIHJldHVybiBW
YWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDgoKTsKKyAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAgICAgICByZXR1cm4gVmFs
dWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGwoKTsKICAgICAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNj
ZXNzRGF0YS5oCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1LDcg
QEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIHZhcmlhYmxlIGlzIG5vdCBh
IG51bWJlciBwcmVkaWN0aW9uLCB0aGVuIHRoaXMgZG9lc24ndAogICAgICAgICAvLyBtYWtlIGFu
eSBzZW5zZS4KLSAgICAgICAgaWYgKCFpc051bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSkp
IHsKKyAgICAgICAgaWYgKCFpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogd2UgbWF5IGVuZCB1cCBmb3JjaW5nIGEgbG9jYWwgaW4g
aW5saW5lZCBhcmd1bWVudCBwb3NpdGlvbiB0byBiZSBhIGRvdWJsZSBldmVuCiAgICAgICAgICAg
ICAvLyBpZiBpdCBpcyBzb21ldGltZXMgbm90IGV2ZW4gbnVtZXJpYywgc2luY2UgdGhpcyBuZXZl
ciBzaWduYWxzIHRoZSBmYWN0IHRoYXQgaXQgZG9lc24ndAogICAgICAgICAgICAgLy8gd2FudCBk
b3VibGVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTExCkBA
IC0zMzMsNiArMzMzLDkgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRJbnQzMjsKICAgICAgICAg
CisgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmICFvcGVyYW5kSXNBcmd1bWVudChtX2xvY2Fs
KSAmJiBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHJl
dHVybiBGbHVzaGVkSW50NDg7CisgICAgICAgIAogICAgICAgICBpZiAoaXNDZWxsU3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gRmx1c2hlZENlbGw7CiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0LDggQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVx
OgogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRV
c2UpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoTnVtYmVyVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKE9iamVjdFVzZSkpCkBAIC0xNzUsNiArMTc3LDggQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToK
ICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNl
KSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE51bWJlclVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcmV0dXJuIENhbm5vdENv
bXBpbGU7CkBAIC0yMzYsNiArMjQwLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoR3Jh
cGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgICAg
ICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25JbnQzMlVzZToK
KyAgICAgICAgICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBLbm93bk51bWJlclVzZToKICAgICAg
ICAgICAgICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCShyZXZpc2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYg
KzUzLDkgQEAgdm9pZCBFeGl0VmFsdWU6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYQogICAgIGNh
c2UgRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQzMjoKICAgICAgICAgb3V0LnByaW50KCJJbkpTU3Rh
Y2tBc0ludDMyIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRWYWx1ZUluSlNTdGFj
a0FzSW50NDg6CisgICAgICAgIG91dC5wcmludCgiSW5KU1N0YWNrQXNJbnQ0OCIpOworICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBFeGl0VmFsdWVJbkpTU3RhY2tBc0RvdWJsZToKICAgICAgICAg
b3V0LnByaW50KCJJbkpTU3RhY2tBc0RvdWJsZSIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmgJKHJldmlzaW9uIDE1NTgyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSBFeGl0VmFsdWVLaW5kIHsKICAgICBFeGl0VmFsdWVD
b25zdGFudCwKICAgICBFeGl0VmFsdWVJbkpTU3RhY2ssCiAgICAgRXhpdFZhbHVlSW5KU1N0YWNr
QXNJbnQzMiwKKyAgICBFeGl0VmFsdWVJbkpTU1RhY2tBc0ludDQ4LAogICAgIEV4aXRWYWx1ZUlu
SlNTdGFja0FzRG91YmxlCiB9OwogCkBAIC04Miw2ICs4MywxMyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBFeGl0VmFsdWUgaW5KU1N0
YWNrQXNJbnQ0OCgpCisgICAgeworICAgICAgICBFeGl0VmFsdWUgcmVzdWx0OworICAgICAgICBy
ZXN1bHQubV9raW5kID0gRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQ0ODsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIEV4aXRWYWx1ZSBpbkpTU3RhY2tBc0Rv
dWJsZSgpCiAgICAgewogICAgICAgICBFeGl0VmFsdWUgcmVzdWx0OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE1
NTgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNiArMTUxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG1f
b3V0LmludDMyOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIE5vZGVSZXN1bHRJbnQ0ODoKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG1fb3V0Lmlu
dDY0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5v
ZGVSZXN1bHRCb29sZWFuOgogICAgICAgICAgICAgICAgICAgICB0eXBlID0gbV9vdXQuYm9vbGVh
bjsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00NjEsNiArNDY0LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgIG1fb3V0LnNldChsb3dJbnQz
MihtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIG1fb3V0LnNldChsb3dJbnQ0
OChtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIG1fb3V0LnNldChsb3dCb29sZWFu
KG1fbm9kZS0+Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTQ4Nyw2ICs0OTMsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQzMjoK
ICAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmdldChzb3VyY2UpKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQ0ODoKKyAgICAgICAgICAgIHNldEludDQ4
KG1fb3V0LmdldChzb3VyY2UpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5v
ZGVSZXN1bHRCb29sZWFuOgogICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5nZXQoc291cmNl
KSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU5MSw2ICs2MDAsMTMgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
Rmx1c2hlZEludDQ4OiB7CisgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dJbnQ0OChtX25v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWUsIGFkZHJlc3NG
b3IodmFyaWFibGUtPmxvY2FsKCkpKTsKKyAgICAgICAgICAgIG1fdmFsdWVTb3VyY2VzLm9wZXJh
bmQodmFyaWFibGUtPmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoSW50NDhJbkpTU3RhY2spOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBG
bHVzaGVkQ2VsbDogewogICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWUsIGFkZHJlc3NGb3Io
dmFyaWFibGUtPmxvY2FsKCkpKTsKQEAgLTY1NSw2ICs2NzEsMjIgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBNYWNo
aW5lSW50VXNlOiB7CisgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNo
aWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAgICAgICAgICAgJiYgIW1fc3Rh
dGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpKSB7Cisg
ICAgICAgICAgICAgICAgSW50NDhzPDI+IGludDQ4cyA9IGxvd1doaWNoZXZlckludDQ4cyhtX25v
ZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBzZXRJbnQ0
OChtX291dC5hZGQoaW50NDhzWzBdLCBpbnQ0OHNbMV0pLCBpbnQ0OHMua2luZCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IExWYWx1ZSBsZWZ0ID0gbG93SW50NDgobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBM
VmFsdWUgcmlnaHQgPSBsb3dJbnQ0OChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSBtX291dC5hZGRXaXRoT3ZlcmZsb3c2NChsZWZ0LCByaWdodCk7CisgICAg
ICAgICAgICBzcGVjdWxhdGUoSW50NDhPdmVyZmxvdywgbm9WYWx1ZSgpLCAwLCBtX291dC5leHRy
YWN0VmFsdWUocmVzdWx0LCAxKSk7CisgICAgICAgICAgICBzZXRJbnQ0OChtX291dC5leHRyYWN0
VmFsdWUocmVzdWx0LCAwKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUo
CiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlQWRkKGxvd0RvdWJsZShtX25vZGUtPmNoaWxk
MSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC02ODUsNiArNzE3LDIyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmZv
ck5vZGUobV9ub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KQorICAgICAgICAg
ICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDIoKSkuY291bGRCZVR5cGUo
U3BlY0ludDQ4KSkgeworICAgICAgICAgICAgICAgIEludDQ4czwyPiBpbnQ0OHMgPSBsb3dXaGlj
aGV2ZXJJbnQ0OHMobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICAgICAgc2V0SW50NDgobV9vdXQuc3ViKGludDQ4c1swXSwgaW50NDhzWzFdKSwgaW50NDhz
LmtpbmQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0ludDQ4KG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NDgobV9ub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuc3ViV2l0aE92ZXJmbG93NjQobGVm
dCwgcmlnaHQpOworICAgICAgICAgICAgc3BlY3VsYXRlKEludDQ4T3ZlcmZsb3csIG5vVmFsdWUo
KSwgMCwgbV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMSkpOworICAgICAgICAgICAgc2V0SW50
NDgobV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIE51bWJlclVzZTogewogICAgICAg
ICAgICAgc2V0RG91YmxlKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZVN1Yihsb3dEb3Vi
bGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOwpAQCAt
NzMwLDYgKzc3OCwzMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgICAg
IEludDQ4czwyPiBpbnQ0OHMgPSBsb3dPcHBvc2l0ZUludDQ4cyhtX25vZGUtPmNoaWxkMSgpLCBt
X25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIG92ZXJm
bG93UmVzdWx0ID0gbV9vdXQubXVsV2l0aE92ZXJmbG93NjQoaW50NDhzWzBdLCBpbnQ0OHNbMV0p
OworICAgICAgICAgICAgc3BlY3VsYXRlKEludDQ4T3ZlcmZsb3csIG5vVmFsdWUoKSwgMCwgbV9v
dXQuZXh0cmFjdFZhbHVlKG92ZXJmbG93UmVzdWx0LCAxKSk7CisgICAgICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gbV9vdXQuZXh0cmFjdFZhbHVlKG92ZXJmbG93UmVzdWx0LCAwKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhtX25v
ZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xv
d0Nhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoTXVsIHNsb3cgY2FzZSIpKTsKKyAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1f
b3V0LCAoIkFyaXRoTXVsIGNvbnRpbnVhdGlvbiIpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90WmVybzY0KHJlc3VsdCksIGNvbnRpbnVh
dGlvbiwgc2xvd0Nhc2UpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7
CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE5lZ2F0aXZlWmVybywgbm9WYWx1ZSgpLCAwLCBt
X291dC5sZXNzVGhhbihsZWZ0LCBtX291dC5pbnQ2NFplcm8pKTsKKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIDAsIG1fb3V0Lmxlc3NUaGFuKHJpZ2h0
LCBtX291dC5pbnQ2NFplcm8pKTsKKyAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNldEludDQ4
KHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUoCiAgICAgICAg
ICAgICAgICAgbV9vdXQuZG91YmxlTXVsKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93
RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC0xMDMwLDYgKzExMDIsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gRklYTUUKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIE51bWJlclVzZTogewogICAg
ICAgICAgICAgc2V0RG91YmxlKG1fb3V0LmRvdWJsZU5lZyhsb3dEb3VibGUobV9ub2RlLT5jaGls
ZDEoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM1NCw2ICsyNDI4LDE0IEBAIHByaXZh
dGU6CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1
ZS52YWx1ZSgpOwogICAgICAgICAKKyAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDQ4VmFsdWVz
LmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAg
ICAgIHJldHVybiBzdHJpY3RJbnQ0OFRvSW50MzIoZWRnZSwgdmFsdWUudmFsdWUoKSk7CisgICAg
ICAgIAorICAgICAgICB2YWx1ZSA9IG1faW50NDhWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAg
ICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDQ4
VG9JbnQzMihlZGdlLCBpbnQ0OFRvU3RyaWN0SW50NDgodmFsdWUudmFsdWUoKSkpOworICAgICAg
ICAKICAgICAgICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAg
ICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CiAgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1
bHQgPSB2YWx1ZS52YWx1ZSgpOwpAQCAtMjM2OSw2ICsyNDUxLDEyMyBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gbV9vdXQuaW50MzJaZXJvOwogICAgIH0KICAgICAKKyAgICBlbnVtIEludDQ4
S2luZCB7IFN0cmljdEludDQ4LCBJbnQ0OCB9OworICAgIExWYWx1ZSBsb3dJbnQ0OChFZGdlIGVk
Z2UsIEludDQ4S2luZCBraW5kLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0
aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUs
IG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1h
Y2hpbmVJbnRVc2UpOworICAgICAgICAKKyAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZTsK
KyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIEludDQ4Ogor
ICAgICAgICAgICAgdmFsdWUgPSBtX2ludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAg
ICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVl
LnZhbHVlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhbHVlID0gbV9zdHJpY3RJbnQ0
OFZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUp
KQorICAgICAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ0OFRvSW50NDgodmFsdWUudmFsdWUo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFN0cmlj
dEludDQ4OgorICAgICAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDQ4VmFsdWVzLmdldChlZGdl
Lm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlLnZhbHVlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhbHVl
ID0gbV9pbnQ0OFZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBpbnQ0OFRvU3RyaWN0SW50NDgodmFs
dWUudmFsdWUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgdmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlm
IChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAgICAgICAgcmV0dXJuIHNldEludDQ4V2l0aFN0cmlj
dFZhbHVlKAorICAgICAgICAgICAgICAgIGVkZ2Uubm9kZSgpLCBtX291dC5zaWduRXh0KHZhbHVl
LCBtX291dC5pbnQ2NCksIGtpbmQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxF
QVNFX0FTU0VSVCghKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjSW50NDgpKTsK
KyAgICAgICAgCisgICAgICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUo
KSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAgICAgICAgTFZhbHVlIGJv
eGVkUmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAor
ICAgICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFJlc3VsdCksIGVkZ2UsIFNwZWNNYWNo
aW5lSW50LCBpc05vdEludDMyKGJveGVkUmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm4gc2V0
SW50NDhXaXRoU3RyaWN0VmFsdWUoCisgICAgICAgICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0
LnNpZ25FeHQodW5ib3hJbnQzMihib3hlZFJlc3VsdCksIG1fb3V0LmludDY0KSwga2luZCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JO
b2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNNYWNoaW5lSW50KSk7CisgICAgICAgIHRlcm1pbmF0ZShV
bmNvdW50YWJsZSk7CisgICAgICAgIHJldHVybiBtX291dC5pbnQ2NFplcm87CisgICAgfQorICAg
IAorICAgIExWYWx1ZSBsb3dJbnQ0OChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUg
bW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVy
biBsb3dJbnQ0OChlZGdlLCBJbnQ0OCwgbW9kZSk7CisgICAgfQorICAgIAorICAgIExWYWx1ZSBs
b3dTdHJpY3RJbnQ0OChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1
dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBsb3dJbnQ0
OChlZGdlLCBTdHJpY3RJbnQ0OCwgbW9kZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgYmV0dGVy
VXNlU3RyaWN0SW50NDgoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhaXNWYWxp
ZChtX2ludDQ4VmFsdWVzLmdldChub2RlKSk7CisgICAgfQorICAgIGJvb2wgYmV0dGVyVXNlU3Ry
aWN0SW50NDgoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJldHRlclVzZVN0cmlj
dEludDQ4KGVkZ2Uubm9kZSgpKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBJbnQ0OEtpbmQgYmVzdEludDQ4S2luZChUIG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4g
YmV0dGVyVXNlU3RyaWN0SW50NDgobm9kZSkgPyBTdHJpY3RJbnQ0OCA6IEludDQ4OworICAgIH0K
KyAgICBJbnQ0OEtpbmQgb3Bwb3NpdGUoSW50NDhLaW5kIGtpbmQpCisgICAgeworICAgICAgICBz
d2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBJbnQ0ODoKKyAgICAgICAgICAgIHJldHVybiBT
dHJpY3RJbnQ0ODsKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0ODoKKyAgICAgICAgICAgIHJldHVy
biBJbnQ0ODsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjb3VudD4KKyAgICBzdHJ1Y3Qg
SW50NDhzIHsKKyAgICAgICAgTFZhbHVlIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIHZhbHVlc1tpbmRleF07IH0KKyAgICAgICAgTFZhbHVlJiBvcGVyYXRvcltdKHVu
c2lnbmVkIGluZGV4KSB7IHJldHVybiB2YWx1ZXNbaW5kZXhdOyB9CisgICAgICAgIAorICAgICAg
ICBJbnQ0OEtpbmQga2luZDsKKyAgICAgICAgRml4ZWRBcnJheTxMVmFsdWUsIGNvdW50PiB2YWx1
ZXM7CisgICAgfTsKKyAgICBJbnQ0OHM8MT4gbG93V2hpY2hldmVySW50NDgoRWRnZSBlZGdlLCBP
cGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24p
CisgICAgeworICAgICAgICBJbnQ0OHM8MT4gcmVzdWx0OworICAgICAgICByZXN1bHQua2luZCA9
IGJlc3RJbnQ0OEtpbmQoZWRnZSk7CisgICAgICAgIHJlc3VsdFswXSA9IGxvd0ludDQ4KGVkZ2Us
IHJlc3VsdC5raW5kLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAg
SW50NDhzPDI+IGxvd1doaWNoZXZlckludDQ4cyhFZGdlIGVkZ2UxLCBFZGdlIGVkZ2UyLCBPcGVy
YW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisg
ICAgeworICAgICAgICBJbnQ0OHM8Mj4gcmVzdWx0OworICAgICAgICByZXN1bHQua2luZCA9IGJl
c3RJbnQ0OEtpbmQoZWRnZTEpOworICAgICAgICByZXN1bHRbMF0gPSBsb3dJbnQ0OChlZGdlMSwg
cmVzdWx0LmtpbmQsIG1vZGUpOworICAgICAgICByZXN1bHRbMV0gPSBsb3dJbnQ0OChlZGdlMiwg
cmVzdWx0LmtpbmQsIG1vZGUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBJ
bnQ0OHM8Mj4gbG93T3Bwb3NpbmdJbnQ0OHMoRWRnZSBlZGdlMSwgRWRnZSBlZGdlMiwgT3BlcmFu
ZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAg
IHsKKyAgICAgICAgSW50NDhzPDI+IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmtpbmQgPSBiZXN0
SW50NDhLaW5kKGVkZ2UxKTsKKyAgICAgICAgcmVzdWx0WzBdID0gbG93SW50NDgoZWRnZTEsIHJl
c3VsdC5raW5kLCBtb2RlKTsKKyAgICAgICAgcmVzdWx0WzFdID0gbG93SW50NDgoZWRnZTIsIG9w
cG9zaXRlKHJlc3VsdC5raW5kKSwgbW9kZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIAogICAgIExWYWx1ZSBsb3dDZWxsKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9u
TW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKICAgICAgICAg
QVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBp
c0NlbGwoZWRnZS51c2VLaW5kKCkpKTsKQEAgLTI0NTEsNiArMjY1MCwxNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAg
dmFsdWUgPSBtX3N0cmljdEludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlm
IChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ0OFRvRG91Ymxl
KGVkZ2UsIHZhbHVlLnZhbHVlKCkpOworICAgICAgICAKKyAgICAgICAgdmFsdWUgPSBtX2ludDQ4
VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAg
ICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ0OFRvRG91YmxlKGVkZ2UsIGludDQ4VG9TdHJpY3RJ
bnQ0OCh2YWx1ZS52YWx1ZSgpKSk7CisgICAgICAgIAogICAgICAgICB2YWx1ZSA9IG1fanNWYWx1
ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsK
ICAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IHZhbHVlLnZhbHVlKCk7CkBAIC0yNTAz
LDYgKzI3MTAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KICAgICAgICAgCisgICAgICAgIHZhbHVlID0gbV9zdHJpY3RJbnQ0OFZhbHVlcy5nZXQo
ZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICBy
ZXR1cm4gc3RyaWN0SW50NDhUb0pTVmFsdWUoZWRnZSwgdmFsdWUudmFsdWUoKSk7CisgICAgICAg
IAorICAgICAgICB2YWx1ZSA9IG1faW50NDhWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAg
ICAgaWYgKGlzVmFsaWQodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDQ4VG9K
U1ZhbHVlKGVkZ2UsIGludDQ4VG9TdHJpY3RJbnQ0OCh2YWx1ZS52YWx1ZSgpKSk7CisgICAgICAg
IAogICAgICAgICB2YWx1ZSA9IG1fYm9vbGVhblZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAg
ICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBi
b3hCb29sZWFuKHZhbHVlLnZhbHVlKCkpOwpAQCAtMjUzMiw2ICsyNzQ3LDc1IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIExWYWx1ZSBzdHJpY3RJ
bnQ0OFRvSW50MzIoRWRnZSBlZGdlLCBMVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBMVmFs
dWUgcmVzdWx0ID0gbV9vdXQuY2FzdFRvSW50MzIodmFsdWUpOworICAgICAgICBGVExfVFlQRV9D
SEVDSygKKyAgICAgICAgICAgIG5vVmFsdWUoKSwgMCwgU3BlY0ludDMyLAorICAgICAgICAgICAg
bV9vdXQubm90RXF1YWwobV9vdXQuc2lnbkV4dChyZXN1bHQsIG1fb3V0LmludDY0KSwgdmFsdWUp
KTsKKyAgICAgICAgc2V0SW50MzIoZWRnZS5ub2RlKCksIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorICAgIAorICAgIExWYWx1ZSBzdHJpY3RJbnQ0OFRvRG91YmxlKEVk
Z2UgZWRnZSwgTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1f
b3V0LmludFRvRG91YmxlKHZhbHVlKTsKKyAgICAgICAgc2V0RG91YmxlKGVkZ2Uubm9kZSgpLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBMVmFsdWUg
c3RyaWN0SW50NDhUb0pTVmFsdWUoRWRnZSBlZGdlLCBMVmFsdWUgdmFsdWUpCisgICAgeworICAg
ICAgICBMQmFzaWNCbG9jayBpc0ludDMyID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJzdHJpY3RJ
bnQ0OFRvSlNWYWx1ZSBpc0ludDMyIGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzRG91
YmxlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJzdHJpY3RJbnQ0OFRvSlNWYWx1ZSBpc0RvdWJs
ZSBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoInN0cmljdEludDQ4VG9KU1ZhbHVlIGNvbnRpbnVhdGlvbiIpKTsKKyAgICAg
ICAgCisgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywgMj4gcmVzdWx0czsKKyAgICAgICAg
ICAgIAorICAgICAgICBMVmFsdWUgaW50MzJWYWx1ZSA9IG1fb3V0LmNhc3RUb0ludDMyKHZhbHVl
KTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQuZXF1YWwobV9vdXQu
c2lnbkV4dChpbnQzMlZhbHVlLCBtX291dC5pbnQ2NCksIHZhbHVlKSwKKyAgICAgICAgICAgIGlz
SW50MzIsIGlzRG91YmxlKTsKKyAgICAgICAgCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuYXBwZW5kVG8oaXNJbnQzMiwgaXNEb3VibGUpOworICAgICAgICAKKyAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKGJveEludDMyKGludDMyVmFsdWUpKSk7CisgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGlzRG91YmxlLCBjb250aW51YXRpb24pOworICAgICAgICAKKyAgICAgICAgcmVzdWx0
cy5hcHBlbmQobV9vdXQuYW5jaG9yKGJveERvdWJsZShtX291dC5pbnRUb0RvdWJsZSh2YWx1ZSkp
KSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICByZXR1cm4g
bV9vdXQucGhpKG1fb3V0LmludDY0LCByZXN1bHRzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBz
ZXRJbnQ0OFdpdGhTdHJpY3RWYWx1ZShOb2RlKiBub2RlLCBMVmFsdWUgdmFsdWUsIEludDQ4S2lu
ZCBraW5kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgU3Ry
aWN0SW50NDg6CisgICAgICAgICAgICBzZXRTdHJpY3RJbnQ0OChub2RlLCB2YWx1ZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ0ODoKKyAgICAg
ICAgICAgIHNldEludDQ4KG5vZGUsIHN0cmljdEludDQ4VG9JbnQ0OCh2YWx1ZSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIExWYWx1ZSBzdHJpY3RJbnQ0OFRvSW50NDgo
TFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnNobCh2YWx1ZSwgbV9v
dXQuY29uc3RJbnQ2NCgxNikpOworICAgIH0KKyAgICAKKyAgICBMVmFsdWUgaW50NDhUb1N0cmlj
dEludDQ4KExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dC5hU2hyKHZh
bHVlLCBtX291dC5jb25zdEludDY0KDE2KSk7CisgICAgfQorICAgIAogICAgIExWYWx1ZSBpc05v
dEludDMyKExWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmJlbG93
KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CkBAIC0yODAwLDcgKzMwODQsNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgbG93Qm9vbGVhbihlZGdlKTsKICAgICB9Ci0KKyAgICAKICAgICBi
b29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2dyYXBoLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50
SXNTdGlsbFZhbGlkKG1fbm9kZS0+Y29kZU9yaWdpbik7CkBAIC0yOTMxLDYgKzMyMTUsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX3ZhbHVlU291cmNlc1tpXSA9IFZhbHVlU291cmNl
KEludDMySW5KU1N0YWNrKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICAgICAgICAgIG1fdmFs
dWVTb3VyY2VzW2ldID0gVmFsdWVTb3VyY2UoSW50NDhJbkpTU3RhY2spOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBGbHVzaGVkRG91
YmxlOgogICAgICAgICAgICAgICAgIG1fdmFsdWVTb3VyY2VzW2ldID0gVmFsdWVTb3VyY2UoRG91
YmxlSW5KU1N0YWNrKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMwMzQsNiArMzMyMiw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICAg
ICAgICAgIGV4aXQubV92YWx1ZXNbaV0gPSBFeGl0VmFsdWU6OmluSlNTdGFja0FzSW50MzIoKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6
CisgICAgICAgICAgICAgICAgZXhpdC5tX3ZhbHVlc1tpXSA9IEV4aXRWYWx1ZTo6aW5KU1N0YWNr
QXNJbnQ0OCgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBEb3Vi
bGVJbkpTU3RhY2s6CiAgICAgICAgICAgICAgICAgZXhpdC5tX3ZhbHVlc1tpXSA9IEV4aXRWYWx1
ZTo6aW5KU1N0YWNrQXNEb3VibGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMxMzcs
NiArMzQyOCwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1faW50NDhWYWx1ZXMuZ2V0KG5vZGUpOworICAgICAg
ICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAgICAgICAgIGFkZEV4aXRBcmd1bWVudChleGl0
LCBhcmd1bWVudHMsIGluZGV4LCBWYWx1ZUZvcm1hdEludDQ4LCB2YWx1ZS52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdmFsdWUgPSBt
X3N0cmljdEludDQ4VmFsdWVzLmdldChub2RlKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUp
KSB7CisgICAgICAgICAgICBhZGRFeGl0QXJndW1lbnQoZXhpdCwgYXJndW1lbnRzLCBpbmRleCwg
VmFsdWVGb3JtYXRTdHJpY3RJbnQ0OCwgdmFsdWUudmFsdWUoKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZhbHVlID0gbV9ib29sZWFuVmFsdWVz
LmdldChub2RlKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CiAgICAgICAgICAgICBh
ZGRFeGl0QXJndW1lbnQoZXhpdCwgYXJndW1lbnRzLCBpbmRleCwgVmFsdWVGb3JtYXRCb29sZWFu
LCB2YWx1ZS52YWx1ZSgpKTsKQEAgLTMyNDAsNiArMzU0MywyOCBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgbV9pbnQzMlZhbHVlcy5zZXQobm9kZSwgTG93ZXJlZE5vZGVWYWx1ZSh2YWx1ZSwg
bV9oaWdoQmxvY2spKTsKICAgICB9CisgICAgdm9pZCBzZXRJbnQ0OChOb2RlKiBub2RlLCBMVmFs
dWUgdmFsdWUpCisgICAgeworICAgICAgICBtX2ludDQ4VmFsdWVzLnNldChub2RlLCBMb3dlcmVk
Tm9kZVZhbHVlKHZhbHVlLCBtX2hpZ2hCbG9jaykpOworICAgIH0KKyAgICB2b2lkIHNldFN0cmlj
dEludDQ4KE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fc3RyaWN0
SW50NDhWYWx1ZXMuc2V0KG5vZGUsIExvd2VyZWROb2RlVmFsdWUodmFsdWUsIG1faGlnaEJsb2Nr
KSk7CisgICAgfQorICAgIHZvaWQgc2V0SW50NDgoTm9kZSogbm9kZSwgTFZhbHVlIHZhbHVlLCBJ
bnQ0OEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBj
YXNlIEludDQ4OgorICAgICAgICAgICAgc2V0SW50NDgobm9kZSwgdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgU3RyaWN0SW50NDg6CisgICAg
ICAgICAgICBzZXRTdHJpY3RJbnQ0OChub2RlLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQogICAgIHZvaWQgc2V0SlNWYWx1ZShOb2RlKiBub2RlLCBMVmFsdWUgdmFsdWUp
CiAgICAgewogICAgICAgICBtX2pzVmFsdWVWYWx1ZXMuc2V0KG5vZGUsIExvd2VyZWROb2RlVmFs
dWUodmFsdWUsIG1faGlnaEJsb2NrKSk7CkBAIC0zMjYxLDYgKzM1ODYsMTggQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIHNldEludDMyKG1fbm9kZSwgdmFsdWUpOwogICAgIH0KKyAgICB2b2lk
IHNldEludDQ4KExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIHNldEludDQ4KG1fbm9kZSwg
dmFsdWUpOworICAgIH0KKyAgICB2b2lkIHNldFN0cmljdEludDQ4KExWYWx1ZSB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIHNldFN0cmljdEludDQ4KG1fbm9kZSwgdmFsdWUpOworICAgIH0KKyAgICB2
b2lkIHNldEludDQ4KExWYWx1ZSB2YWx1ZSwgSW50NDhLaW5kIGtpbmQpCisgICAgeworICAgICAg
ICBzZXRJbnQ0OChtX25vZGUsIHZhbHVlLCBraW5kKTsKKyAgICB9CiAgICAgdm9pZCBzZXRKU1Zh
bHVlKExWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHNldEpTVmFsdWUobV9ub2RlLCB2YWx1
ZSk7CkBAIC0zMzQwLDYgKzM2NzcsOCBAQCBwcml2YXRlOgogICAgIExWYWx1ZSBtX3RhZ01hc2s7
CiAgICAgCiAgICAgSGFzaE1hcDxOb2RlKiwgTG93ZXJlZE5vZGVWYWx1ZT4gbV9pbnQzMlZhbHVl
czsKKyAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX3N0cmljdEludDQ4VmFs
dWVzOworICAgIEhhc2hNYXA8Tm9kZSosIExvd2VyZWROb2RlVmFsdWU+IG1faW50NDhWYWx1ZXM7
CiAgICAgSGFzaE1hcDxOb2RlKiwgTG93ZXJlZE5vZGVWYWx1ZT4gbV9qc1ZhbHVlVmFsdWVzOwog
ICAgIEhhc2hNYXA8Tm9kZSosIExvd2VyZWROb2RlVmFsdWU+IG1fYm9vbGVhblZhbHVlczsKICAg
ICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX3N0b3JhZ2VWYWx1ZXM7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAkocmV2aXNp
b24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDEyIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBWYWwKICAgICBjYXNlIFZhbHVlRm9ybWF0VUludDMyOgogICAgICAg
ICBvdXQucHJpbnQoIlVJbnQzMiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBWYWx1ZUZv
cm1hdEludDQ4OgorICAgICAgICBvdXQucHJpbnQoIkludDQ4Iik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIFZhbHVlRm9ybWF0U3RyaWN0SW50NDg6CisgICAgICAgIG91dC5wcmludCgiU3Ry
aWN0SW50NDgiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmFsdWVGb3JtYXRCb29sZWFu
OgogICAgICAgICBvdXQucHJpbnQoIkJvb2xlYW4iKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuaAkocmV2aXNpb24gMTU1
ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIGVudW0gVmFsdWVGb3JtYXQgewogICAgIEludmFs
aWRWYWx1ZUZvcm1hdCwKICAgICBWYWx1ZUZvcm1hdEludDMyLAogICAgIFZhbHVlRm9ybWF0VUlu
dDMyLAorICAgIFZhbHVlRm9ybWF0SW50NDgsCisgICAgVmFsdWVGb3JtYXRTdHJpY3RJbnQ0OCwK
ICAgICBWYWx1ZUZvcm1hdEJvb2xlYW4sCiAgICAgVmFsdWVGb3JtYXRKU1ZhbHVlLAogICAgIFZh
bHVlRm9ybWF0RG91YmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVl
U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZh
bHVlU291cmNlLmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExWYWx1ZVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDkgQEAg
dm9pZCBWYWx1ZVNvdXJjZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogICAgIGNhc2UgSW50MzJJ
bkpTU3RhY2s6CiAgICAgICAgIG91dC5wcmludCgiSW50MzJJbkpTU3RhY2siKTsKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgIG91dC5wcmludCgiSW50
NDhJbkpTU3RhY2siKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRG91YmxlSW5KU1N0YWNr
OgogICAgICAgICBvdXQucHJpbnQoIkRvdWJsZUluSlNTdGFjayIpOwogICAgICAgICByZXR1cm47
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlU291cmNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVNvdXJjZS5oCShyZXZp
c2lvbiAxNTU4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlU291cmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgZW51bSBWYWx1ZVNvdXJjZUtpbmQg
ewogICAgIFNvdXJjZU5vdFNldCwKICAgICBWYWx1ZUluSlNTdGFjaywKICAgICBJbnQzMkluSlNT
dGFjaywKKyAgICBJbnQ0OEluSlNTdGFjaywKICAgICBEb3VibGVJbkpTU3RhY2ssCiAgICAgU291
cmNlSXNEZWFkLAogICAgIEhhdmVOb2RlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvUmVnaXN0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYg
KzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEluc3RydWN0aW9uKiB2UEMoKSBjb25z
dDsKICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBhc0lubGluZUNhbGxGcmFtZSgpIGNvbnN0Owog
ICAgICAgICBpbnQzMl90IHVuYm94ZWRJbnQzMigpIGNvbnN0OworICAgICAgICBpbnQ2NF90IHVu
Ym94ZWRJbnQ0OCgpIGNvbnN0OwogICAgICAgICBib29sIHVuYm94ZWRCb29sZWFuKCkgY29uc3Q7
CiAgICAgICAgIGRvdWJsZSB1bmJveGVkRG91YmxlKCkgY29uc3Q7CiAgICAgICAgIEpTQ2VsbCog
dW5ib3hlZENlbGwoKSBjb25zdDsKQEAgLTk4LDYgKzk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAg
IEVuY29kZWRWYWx1ZURlc2NyaXB0b3IgZW5jb2RlZFZhbHVlOwogICAgICAgICAgICAgZG91Ymxl
IG51bWJlcjsKKyAgICAgICAgICAgIGludDY0X3QgaW50ZWdlcjsKICAgICAgICAgfSB1OwogICAg
IH07CiAKQEAgLTE4NSw2ICsxODcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVy
biBwYXlsb2FkKCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSBpbnQ2NF90IFJlZ2lzdGVy
Ojp1bmJveGVkSW50NDgoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHUuaW50ZWdlciA+
PiAxNjsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgUmVnaXN0ZXI6OnVuYm94ZWRC
b29sZWFuKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhIXBheWxvYWQoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24g
MTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgzLDYgKzM4Myw5IEBAIHZvaWQgQXJndW1lbnRzOjp0ZWFyT2Zm
Rm9ySW5saW5lQ2FsbEZyYW0KICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVk
SW50MzI6CiAgICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGxvY2F0aW9uLT51bmJveGVkSW50
MzIoKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
QXNVbmJveGVkSW50NDg6CisgICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGxvY2F0aW9uLT51
bmJveGVkSW50NDgoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkQ2VsbDoKICAgICAgICAgICAgIHZhbHVlID0gbG9jYXRpb24tPnVu
Ym94ZWRDZWxsKCk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luZGV4aW5nVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcAkocmV2aXNpb24gMTU1ODIwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsMTEgKzUwLDExIEBAIEluZGV4aW5nVHlwZSBsZWFzdFVwcGVyQm91bmRPZklu
ZGV4aW5nVHkKICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICAgICAgaWYg
KGlzSW50MzJTcGVjdWxhdGlvbih0eXBlKSkKICAgICAgICAgICAgIHJldHVybiAoaW5kZXhpbmdU
eXBlICYgfkluZGV4aW5nU2hhcGVNYXNrKSB8IEludDMyU2hhcGU7Ci0gICAgICAgIGlmIChpc051
bWJlclNwZWN1bGF0aW9uKHR5cGUpKQorICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRp
b24odHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIH5JbmRleGluZ1No
YXBlTWFzaykgfCBEb3VibGVTaGFwZTsKICAgICAgICAgcmV0dXJuIChpbmRleGluZ1R5cGUgJiB+
SW5kZXhpbmdTaGFwZU1hc2spIHwgQ29udGlndW91c1NoYXBlOwogICAgIGNhc2UgQUxMX0RPVUJM
RV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24odHlwZSkp
CisgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbih0eXBlKSkKICAgICAgICAgICAg
IHJldHVybiBpbmRleGluZ1R5cGU7CiAgICAgICAgIHJldHVybiAoaW5kZXhpbmdUeXBlICYgfklu
ZGV4aW5nU2hhcGVNYXNrKSB8IENvbnRpZ3VvdXNTaGFwZTsKICAgICBjYXNlIEFMTF9DT05USUdV
T1VTX0lOREVYSU5HX1RZUEVTOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTU1ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDcgQEAg
cHVibGljOgogCiAgICAgaW50MzJfdCBhc0ludDMyKCkgY29uc3Q7CiAgICAgdWludDMyX3QgYXNV
SW50MzIoKSBjb25zdDsKKyAgICBpbnQ2NF90IGFzTWFjaGluZUludCgpIGNvbnN0OwogICAgIGRv
dWJsZSBhc0RvdWJsZSgpIGNvbnN0OwogICAgIGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CiAgICAg
ZG91YmxlIGFzTnVtYmVyKCkgY29uc3Q7CkBAIC0yMDIsNiArMjAzLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0
OwogICAgIGJvb2wgaXNCb29sZWFuKCkgY29uc3Q7CisgICAgYm9vbCBpc01hY2hpbmVJbnQoKSBj
b25zdDsKICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0cmluZygpIGNv
bnN0OwogICAgIGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTU1
ODIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNDk0LDYgKzQ5NCwzNSBAQCBBTFdBWVNfSU5MSU5FIEpTQ2Vs
bCogSlNWYWx1ZTo6YXNDZWxsKCkgCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCitpbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc01hY2hpbmVJbnQoKSBjb25zdAoreworICAgIGlmIChpc0ludDMy
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICghaXNOdW1iZXIoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGRvdWJsZSBudW1iZXIgPSBhc0RvdWJsZSgpOworICAgIGlmIChu
dW1iZXIgIT0gbnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50NjRfdCBhc0lu
dDY0ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obnVtYmVyKTsKKyAgICBpZiAoYXNJbnQ2NCAhPSBu
dW1iZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWFzSW50NjQgJiYgc3RkOjpz
aWduYml0KG51bWJlcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXNJbnQ2NCA+
PSAoc3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgNDcpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKGFzSW50NjQgPCAtKHN0YXRpY19jYXN0PGludDY0X3Q+KDEpIDw8IDQ3KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgaW50NjRf
dCBKU1ZhbHVlOjphc01hY2hpbmVJbnQoKSBjb25zdAoreworICAgIEFTU0VSVChpc01hY2hpbmVJ
bnQoKSk7CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4oYXNEb3VibGUoKSk7Cit9CisKIGlubGluZSBi
b29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkgJiYg
YXNDZWxsKCktPmlzU3RyaW5nKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211842</attachid>
            <date>2013-09-16 16:32:01 -0700</date>
            <delta_ts>2013-09-16 18:45:43 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>205025</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1OTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwOSBA
QAorMjAxMy0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgc3VwcG9ydCBJbnQ0OCBmb3IgbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEwNjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWRkcyBJ
bnQ0OCBzdXBwb3J0IGZvciBsb2NhbCB2YXJpYWJsZXMgdG8gdGhlIERGRyBhbmQgRlRMLiBJdCdz
IGEgc3BlZWQtdXAgb24KKyAgICAgICAgcHJvZ3JhbXMgdGhhdCBoYXZlIGxvY2FsIGludDMyIG92
ZXJmbG93cyBidXQgd2hlcmUgYSBsYXJnZXIgaW50IHJlcHJlc2VudGF0aW9uIGNhbgorICAgICAg
ICBwcmV2ZW50IHVzIGZyb20gaGF2aW5nIHRvIGNvbnZlcnQgYWxsIHRoZSB3YXkgdXAgdG8gZG91
YmxlLgorICAgICAgICAKKyAgICAgICAgSXQncyBhIHNtYWxsIHNwZWVkLXVwIGZvciBub3cuIEJ1
dCB3ZSdyZSBqdXN0IHN1cHBvcnRpbmcgSW50NDggZm9yIGEgaGFuZGZ1bCBvZgorICAgICAgICBv
cGVyYXRpb25zIChhZGQsIHN1YiwgbXVsLCBuZWcsIGNvbXBhcmUsIGJpdG9wcywgdHlwZWQgYXJy
YXkgYWNjZXNzKSBhbmQgdGhpcyBsYXlzCisgICAgICAgIHRoZSBncm91bmR3b3JrIGZvciBhZGRp
bmcgSW50NDggdG8gSlNWYWx1ZSwgd2hpY2ggd2lsbCBwcm9iYWJseSBiZSBhIGJpZ2dlcgorICAg
ICAgICBzcGVlZC11cC4KKyAgICAgICAgCisgICAgICAgIFRoZSBiYXNpYyBhcHByb2FjaCBpczoK
KyAgICAgICAgCisgICAgICAgIC0gV2UgaGF2ZSBhIG5vdGlvbiBvZiBJbnQ0OCBpbiBvdXIgdHlw
ZXN5c3RlbS4gSW50NDggZG9lc24ndCBiZWxvbmcgdG8gQnl0ZWNvZGVUb3AKKyAgICAgICAgICBv
ciBIZWFwVG9wIC0gaS5lLiBpdCBkb2Vzbid0IGFyaXNlIGZyb20gSlNWYWx1ZXMuCisgICAgICAg
IAorICAgICAgICAtIERGRyB0cmVhdHMgSW50NDggYXMgYmVpbmcgcGFydCBvZiBpdHMgRnVsbFRv
cCBhbmQgd2lsbCB0cmVhdCBpdCBhcyBiZWluZyBhCisgICAgICAgICAgc3VidHlwZSBvZiBkb3Vi
bGUgdW5sZXNzIGluc3RydWN0ZWQgb3RoZXJ3aXNlLgorICAgICAgICAKKyAgICAgICAgLSBQcmVk
aWN0aW9uIHByb3BhZ2F0b3IgY3JlYXRlcyBJbnQ0OHMgd2hlbmV2ZXIgd2UgaGF2ZSBhIG5vZGUg
Z29pbmcgZG91Ymx5IGJ1dCBkdWUKKyAgICAgICAgICB0byBsYXJnZSB2YWx1ZXMgcmF0aGVyIHRo
YW4gZnJhY3Rpb25hbCB2YWx1ZXMsIGFuZCB0aGF0IG5vZGUgaXMga25vd24gdG8gYmUgYWJsZQor
ICAgICAgICAgIHRvIHByb2R1Y2UgSW50NDggbmF0aXZlbHkgaW4gdGhlIERGRyBiYWNrZW5kLgor
ICAgICAgICAKKyAgICAgICAgLSBGaXh1cCBwaGFzZSBjb252ZXJ0cyBlZGdlcyB0byBNYWNoaW5l
SW50VXNlcyBpbiBub2RlcyB0aGF0IGFyZSBrbm93biB0byBiZSBhYmxlCisgICAgICAgICAgdG8g
ZGVhbCB3aXRoIEludDQ4LCBhbmQgd2hlcmUgd2UgaGF2ZSBhIHN1YnR5cGUgb2YgSW50MzJ8SW50
NDggYXMgdGhlIHByZWRpY3RlZAorICAgICAgICAgIGlucHV0LgorICAgICAgICAKKyAgICAgICAg
LSBUaGUgREZHIGJhY2tlbmQgYW5kIEZUTCBMTFZNIElSIGxvd2VyaW5nIGhhdmUgdHdvIG5vdGlv
bnMgb2YgSW50NDhzIC0gb25lcyB0aGF0CisgICAgICAgICAgYXJlIGxlZnQtc2hpZnRlZCBieSAx
NiAoZ3JlYXQgZm9yIG92ZXJmbG93IGNoZWNrcykgYW5kIG9uZXMgdGhhdCBhcmUKKyAgICAgICAg
ICBzaWduLWV4dGVuZGVkLiBCb3RoIGJhY2tlbmRzIGtub3cgaG93IHRvIGNvbnZlcnQgYmV0d2Vl
biBJbnQ0OHMgYW5kIHRoZSBvdGhlcgorICAgICAgICAgIHJlcHJlc2VudGF0aW9ucy4KKworICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4Nl82NDo6cnNoaWZ0NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6bXVsNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YnJhbmNoTXVsNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNo
TmVnNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29udmVydEludDY0
VG9Eb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjppbXVscV9ycik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6Y3Z0c2kyc2RxX3JyKToKKyAgICAgICAgKiBieXRlY29kZS9EYXRhRm9ybWF0Lmg6CisgICAg
ICAgIChKU0M6OmRhdGFGb3JtYXRUb1N0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFu
ZHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Ojo6ZHVtcEluQ29udGV4dCk6CisgICAgICAgICog
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpkdW1wU3BlY3VsYXRp
b24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21WYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGht
ZXRpYyk6CisgICAgICAgIChKU0M6OmlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRp
Yyk6CisgICAgICAgIChKU0M6OmlzQnl0ZWNvZGVSZWFsTnVtYmVyU3BlY3VsYXRpb24pOgorICAg
ICAgICAoSlNDOjppc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpp
c0J5dGVjb2RlTnVtYmVyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQnl0ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAoSlNDOjppc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaDoKKyAg
ICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4
KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6aW5HUFIpOgorICAgICAgICAoSlNDOjpW
YWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2spOgorICAgICAgICAoSlNDOjpWYWx1ZVJl
Y292ZXJ5Ojppc0FscmVhZHlJbkpTU3RhY2spOgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5
OjpncHIpOgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5Ojp2aXJ0dWFsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5OjpkdW1wSW5Db250ZXh0KToKKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI6Om5lZWRzVHlwZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFj
dEludGVycHJldGVyOjpmaWx0ZXJCeVR5cGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6Ojo6ZXhlY3V0ZUVmZmVjdHMp
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y291bGRCZVR5cGUpOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmlzVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RWYWx1ZTo6dmFsaWRhdGVUeXBlKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
Ym94SW50NDgpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Q1NFUGhhc2U6OnB1cmVDU0UpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpn
ZXRCeVZhbExvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBl
cmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAg
ICAgKEpTQzo6REZHOjplbmFibGVJbnQ0OCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cFNldExvY2Fsc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmZpeHVwVW50eXBlZFNldExvY2Fsc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25Ob2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXhFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbmplY3RJ
bnQzMlRvRG91YmxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1w
dFRvTWFrZUludGVnZXJBZGQpOgorICAgICAgICAqIGRmZy9ERkdGbHVzaEZvcm1hdC5jcHA6Cisg
ICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdGbHVzaEZvcm1h
dC5oOgorICAgICAgICAoSlNDOjpERkc6OnJlc3VsdEZvcik6CisgICAgICAgIChKU0M6OkRGRzo6
dXNlS2luZEZvcik6CisgICAgICAgICogZGZnL0RGR0dlbmVyYXRpb25JbmZvLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R2VuZXJhdGlvbkluZm86OmluaXRJbnQ0OCk6CisgICAgICAgIChKU0M6OkRG
Rzo6R2VuZXJhdGlvbkluZm86OmluaXRTdHJpY3RJbnQ0OCk6CisgICAgICAgIChKU0M6OkRGRzo6
R2VuZXJhdGlvbkluZm86OmlzRm9ybWF0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0aW9u
SW5mbzo6aXNJbnQ0OCk6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdGlvbkluZm86OmlzU3Ry
aWN0SW50NDgpOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjpmaWxsSW50NDgp
OgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjpmaWxsU3RyaWN0SW50NDgpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1
bXApOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjphZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6bXVsU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6Om5lZ2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQpOgorICAgICAgICAqIGRmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3Ry
YWN0U3RhdGU6Om1lcmdlU3RhdGVBdFRhaWwpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb2RlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICog
ZGZnL0RGR01pbmlmaWVkTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OmJlbG9uZ3NJbk1pbmlm
aWVkR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkTm9kZTo6aGFzQ2hpbGQpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxk
U3BlY3VsYXRlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxh
dGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKToKKyAgICAgICAgKiBkZmcvREZHTm9kZUZsYWdzLmg6
CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9yd2Fy
ZFJld2lyaW5nU2VsZWN0aW9uU2NvcmUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGls
ZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6c3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0
aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJv
cGFnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6
ZG9Eb3VibGVWb3RpbmcpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTaWxlbnRSZWdpc3Rl
clNhdmVQbGFuLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50U2F2ZVBsYW5Gb3JHUFIpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbmNoKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBl
ZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhNdWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWFjaGluZUludCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlYWxOdW1iZXIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YW5SZXVzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmlzRmlsbGVkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNGaWxsZWREb3VibGUpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp1c2UpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjppc0tub3duSW50ZWdlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmlzS25vd25DZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6aXNLbm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmludDQ4UmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3Ry
aWN0SW50NDhSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjppbml0
Q29uc3RhbnRJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNJbnRl
Z2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YmV0dGVyVXNlU3RyaWN0
SW50NDgpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmF0aW9uSW5m
byk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlSW50NDhPcGVyYW5kOjpTcGVjdWxhdGVJ
bnQ0OE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludDQ4T3BlcmFuZDo6
flNwZWN1bGF0ZUludDQ4T3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlSW50
NDhPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnQ0OE9wZXJh
bmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludDQ4T3BlcmFuZDo6Z3By
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnQ0OE9wZXJhbmQ6OnVzZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kOjpTcGVjdWxhdGVTdHJp
Y3RJbnQ0OE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVN0cmljdEludDQ4
T3BlcmFuZDo6flNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQ6OnVzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kOjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJh
bmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZDo6
flNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQ6OnVzZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kOjpmb3JtYXQpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Ym94SW50NDgpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDQ4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50NDhDb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NDhCcmFu
Y2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRl
ckZvcik6CisgICAgICAgIChKU0M6OkRGRzo6aXNOdW1lcmljYWwpOgorICAgICAgICAqIGRmZy9E
RkdWYWx1ZVNvdXJjZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OmR1bXAp
OgorICAgICAgICAqIGRmZy9ERkdWYWx1ZVNvdXJjZS5oOgorICAgICAgICAoSlNDOjpERkc6OmRh
dGFGb3JtYXRUb1ZhbHVlU291cmNlS2luZCk6CisgICAgICAgIChKU0M6OkRGRzo6dmFsdWVTb3Vy
Y2VLaW5kVG9EYXRhRm9ybWF0KToKKyAgICAgICAgKEpTQzo6REZHOjpWYWx1ZVNvdXJjZTo6Zm9y
Rmx1c2hGb3JtYXQpOgorICAgICAgICAoSlNDOjpERkc6OlZhbHVlU291cmNlOjp2YWx1ZVJlY292
ZXJ5KToKKyAgICAgICAgKiBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmg6CisgICAgICAgIChK
U0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjpzaG91bGRVc2VEb3VibGVGb3JtYXRBY2NvcmRp
bmdUb1ZvdGUpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6Zmx1c2hG
b3JtYXQpOgorICAgICAgICAqIGZ0bC9GVExDQXJndW1lbnRHZXR0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkNBcmd1bWVudEdldHRlcjo6bG9hZE5leHRBbmRCb3gpOgorICAgICAgICAqIGZ0
bC9GVExDQXJndW1lbnRHZXR0ZXIuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMRXhp
dFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OmR1bXBJbkNvbnRleHQp
OgorICAgICAgICAqIGZ0bC9GVExFeGl0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0
VmFsdWU6OmluSlNTdGFja0FzSW50NDgpOgorICAgICAgICAqIGZ0bC9GVExJbnRyaW5zaWNSZXBv
c2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y3JlYXRlUGhpVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVXBzaWxvbik6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQaGkpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlU2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUFyaXRoU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFy
aXRoTmVnYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBh
cmVFcSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDb21wYXJl
U3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29t
cGFyZUxlc3MpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29t
cGFyZUxlc3NFcSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVD
b21wYXJlR3JlYXRlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVDb21wYXJlR3JlYXRlckVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
bG93SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dJbnQ0OCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd1N0cmljdEludDQ4KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YmV0dGVyVXNlU3RyaWN0SW50NDgpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpiZXN0SW50NDhLaW5kKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6b3Bwb3NpdGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpJbnQ0OHM6Om9wZXJhdG9yW10pOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpsb3dXaGljaGV2ZXJJbnQ0OCk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd1doaWNoZXZlckludDQ4cyk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd09wcG9zaW5nSW50NDhzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6bG93Q2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdU
b0xMVk06Omxvd0Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjps
b3dEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dKU1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3RyaWN0SW50NDhUb0ludDMy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3RyaWN0SW50NDhUb0RvdWJs
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnN0cmljdEludDQ4VG9KU1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0SW50NDhXaXRoU3Ry
aWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzdHJpY3RJbnQ0
OFRvSW50NDgpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjppbnQ0OFRvU3Ry
aWN0SW50NDgpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVS
ZWFsTnVtYmVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aW5pdGlhbGl6
ZU9TUkV4aXRTdGF0ZUZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6ZW1pdE9TUkV4aXRDYWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
YWRkRXhpdEFyZ3VtZW50Rm9yTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OnNldEludDQ4KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0U3Ry
aWN0SW50NDgpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGRXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpzdWJXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjptdWxXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgICogZnRsL0ZUTFZhbHVlRm9ybWF0
LmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZnRsL0ZUTFZh
bHVlRm9ybWF0Lmg6CisgICAgICAgICogZnRsL0ZUTFZhbHVlU291cmNlLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpWYWx1ZVNvdXJjZTo6ZHVtcCk6CisgICAgICAgICogZnRsL0ZUTFZhbHVlU291
cmNlLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaDoKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXI6OnVuYm94ZWRJbnQ0OCk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3Bw
OgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnRlYXJPZmZGb3JJbmxpbmVDYWxsRnJhbWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bGVhc3RV
cHBlckJvdW5kT2ZJbmRleGluZ1R5cGVBbmRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pT
VmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OmlzTWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmFz
TWFjaGluZUludCk6CisKIDIwMTMtMDktMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJn
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrZWRCbG9ja3Mgc2hvdWxkbid0IGJlIHB1dCBpbiBB
bGxvY2F0ZWQgc3RhdGUgaWYgdGhleSBkaWRuJ3QgcHJvZHVjZSBhIEZyZWVMaXN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw2ICsy
MzAsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zaGxxX2k4cihpbW0ubV92YWx1
ZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgcnNoaWZ0NjQoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2FycV9pOHIo
aW1tLm1fdmFsdWUsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIG11bDY0KFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5pbXVs
cV9ycihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIG5lZzY0KFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfcihkZXN0KTsKQEAgLTUzMCw2
ICs1NDAsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Mo
eDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hNdWw2NChSZXN1
bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG11bDY0KHNyYywgZGVzdCk7CisgICAgICAgIGlmIChjb25kICE9IE92ZXJmbG93
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHFfcnIoZGVzdCwgZGVzdCk7CisgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKKyAgICB9
CisKICAgICBKdW1wIGJyYW5jaFN1YjY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWI2NChpbW0sIGRlc3Qp
OwpAQCAtNTQ4LDYgKzU2NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hTdWI2
NChjb25kLCBzcmMyLCBkZXN0KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaE5lZzY0KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBuZWc2
NChzcmNEZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOworICAgIH0KKwogICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRp
YmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRo
aXMpOwpAQCAtNTk1LDYgKzYxOSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0
ZXIpLCBtYXNrKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbnZlcnRJbnQ2NFRvRG91YmxlKFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmN2dHNpMnNkcV9ycihzcmMsIGRlc3QpOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzRmxvYXRpbmdQb2ludCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAvLyBTZWUgY29tbWVudCBv
biBNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpCiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSB7IHJldHVybiB0
cnVlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyOSwxMyArODI5LDIwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICAg
ICAgfQogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIENQVShYODZfNjQpCiAKICAgICB2b2lkIGlt
dWxsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3QsIHNyYyk7CiAgICAgfQogCisj
aWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGltdWxxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9JTVVM
X0d2RXYsIGRzdCwgc3JjKTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZv
aWQgaW11bGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3Qs
IGJhc2UsIG9mZnNldCk7CkBAIC0xNjExLDYgKzE2MTgsMTQgQEAgcHVibGljOgogICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNJMlNEX1ZzZEVkLCAoUmVnaXN0ZXJJRClkc3Qs
IHNyYyk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGN2dHNpMnNkcV9ycihS
ZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9DVlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBzcmMpOworICAgIH0KKyNlbmRp
ZgorCiAgICAgdm9pZCBjdnRzaTJzZF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhN
TVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9T
U0VfRjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1h
dC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGF0YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiBlbnVtIERhdGFGb3JtYXQgewogICAgIERhdGFGb3JtYXROb25lID0gMCwKICAgICBE
YXRhRm9ybWF0SW50MzIgPSAxLAotICAgIERhdGFGb3JtYXREb3VibGUgPSAyLAotICAgIERhdGFG
b3JtYXRCb29sZWFuID0gMywKLSAgICBEYXRhRm9ybWF0Q2VsbCA9IDQsCi0gICAgRGF0YUZvcm1h
dFN0b3JhZ2UgPSA1LAorICAgIERhdGFGb3JtYXRJbnQ0OCA9IDIsIC8vIEludDQ4J3MgYXJlIGxl
ZnQtc2hpZnRlZCBieSAxNiBieSBkZWZhdWx0LgorICAgIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA9
IDMsIC8vICJTdHJpY3QiIEludDQ4IG1lYW5zIGl0J3Mgbm90IHNoaWZ0ZWQuCisgICAgRGF0YUZv
cm1hdERvdWJsZSA9IDQsCisgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAorICAgIERhdGFGb3Jt
YXRDZWxsID0gNiwKKyAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCiAgICAgRGF0YUZvcm1hdEpT
ID0gOCwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRJ
bnQzMiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0
RG91YmxlLApAQCAtNjQsNiArNjYsMTAgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRU
b1N0cmluZyhEYQogICAgICAgICByZXR1cm4gIk5vbmUiOwogICAgIGNhc2UgRGF0YUZvcm1hdElu
dDMyOgogICAgICAgICByZXR1cm4gIkludDMyIjsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoK
KyAgICAgICAgcmV0dXJuICJJbnQ0OCI7CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6
CisgICAgICAgIHJldHVybiAiU3RyaWN0SW50NDgiOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJs
ZToKICAgICAgICAgcmV0dXJuICJEb3VibGUiOwogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzSW5saW5l
cy5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3BlcmFuZHNJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBP
cGVyYW5kczxULCBUcmFpdHM+OjpkdW1wSW5Db250ZXh0KAogICAgIGZvciAoc2l6ZV90IGxvY2Fs
SW5kZXggPSAwOyBsb2NhbEluZGV4IDwgbnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbEluZGV4KSB7
CiAgICAgICAgIGlmIChUcmFpdHM6OmlzRW1wdHlGb3JEdW1wKGxvY2FsKGxvY2FsSW5kZXgpKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwgbG9j
YWxJbmRleCwgIjoiLCBpbkNvbnRleHQobG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgbG9jYWxJbmRleCwgIjoiLCBpbkNvbnRleHQo
bG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNp
b24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsMTMgQEAgdm9pZCBkdW1wU3Bl
Y3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dCwgUwogICAgIH0KICAgICAKICAgICBpZiAodmFsdWUg
JiBTcGVjSW50MzIpCi0gICAgICAgIG15T3V0LnByaW50KCJJbnQiKTsKKyAgICAgICAgbXlPdXQu
cHJpbnQoIkludDMyIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAor
ICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQ0OCkKKyAgICAgICAgbXlPdXQucHJpbnQoIkludDQ4Iik7
CisgICAgICAgIAogICAgIGlmICgodmFsdWUgJiBTcGVjRG91YmxlKSA9PSBTcGVjRG91YmxlKQog
ICAgICAgICBteU91dC5wcmludCgiRG91YmxlIik7CiAgICAgZWxzZSB7CkBAIC0xNjYsMTEgKzE2
OSw2IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXQsIFMKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICh2
YWx1ZSAmIFNwZWNJbnQ0OCkKLSAgICAgICAgICAgIG15T3V0LnByaW50KCJJbnQ0OCIpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgICAgICAKICAgICAgICAg
aWYgKHZhbHVlICYgU3BlY05vbkludEFzRG91YmxlKQogICAgICAgICAgICAgbXlPdXQucHJpbnQo
Ik5vbmludGFzZG91YmxlIik7CiAgICAgICAgIGVsc2UKQEAgLTI0Nyw5ICsyNDUsMTEgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9BYmJyZXZpYQogICAgICAgICByZXR1cm4gIjxJ
bnQ0OEFzRG91YmxlPiI7CiAgICAgaWYgKGlzSW50NDhTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkK
ICAgICAgICAgcmV0dXJuICI8SW50NDg+IjsKKyAgICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCisgICAgICAgIHJldHVybiAiPE1hY2hpbmVJbnQ+IjsKICAgICBpZiAo
aXNEb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8RG91Ymxl
PiI7Ci0gICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgaWYgKGlz
RnVsbE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxOdW1i
ZXI+IjsKICAgICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAg
IHJldHVybiAiPEJvb2xlYW4+IjsKQEAgLTM0NSwxNiArMzQ1LDExIEBAIFNwZWN1bGF0ZWRUeXBl
IHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmEKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKICAg
ICBpZiAodmFsdWUuaXNEb3VibGUoKSkgewogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUu
YXNOdW1iZXIoKTsKLSAgICAgICAgaWYgKG51bWJlciA9PSBudW1iZXIpIHsKLSAgICAgICAgICAg
IGludDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7Ci0gICAgICAg
ICAgICBpZiAoYXNJbnQ2NCA9PSBudW1iZXIgJiYgKGFzSW50NjQgfHwgIXN0ZDo6c2lnbmJpdChu
dW1iZXIpKQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPCAoc3RhdGljX2Nhc3Q8aW50NjRf
dD4oMSkgPDwgNDcpCi0gICAgICAgICAgICAgICAgJiYgYXNJbnQ2NCA+PSAtKHN0YXRpY19jYXN0
PGludDY0X3Q+KDEpIDw8IDQ3KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTcGVjSW50NDhB
c0RvdWJsZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNE
b3VibGU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47CisgICAgICAg
IGlmIChudW1iZXIgIT0gbnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47
CisgICAgICAgIGlmICh2YWx1ZS5pc01hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBT
cGVjSW50NDhBc0RvdWJsZTsKKyAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAg
ICB9CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25G
cm9tQ2VsbCh2YWx1ZS5hc0NlbGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDQ2ICszOCw0OCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cnVjdHVyZTsKIAog
dHlwZWRlZiB1aW50MzJfdCBTcGVjdWxhdGVkVHlwZTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjTm9uZSAgICAgICAgICAgICAgPSAweDAwMDAwMDAwOyAvLyBXZSBkb24ndCBrbm93
IGFueXRoaW5nIHlldC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmpl
Y3QgICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2JqZWN0
Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICA9IDB4
MDAwMDAwMDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQXJyYXkuCi1zdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgID0gMHgwMDAwMDAwODsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAgICAgID0gMHgwMDAwMDAxMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAgID0gMHgw
MDAwMDAyMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBz
dWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMkFycmF5ICAg
ICAgICA9IDB4MDAwMDAwNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWlu
dDhBcnJheSAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDhB
cnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ID0gMHgwMDAwMDEwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGFuIFVpbnQ4Q2xhbXBlZEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDE2QXJyYXkgICAgICAgPSAweDAwMDAwMjAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2Vz
Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MzJBcnJheSAgICAgICA9IDB4
MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBvciBvbmUgb2YgaXRz
IHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Zsb2F0MzJBcnJh
eSAgICAgID0gMHgwMDAwMDgwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9y
IG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
RmxvYXQ2NEFycmF5ICAgICAgPSAweDAwMDAxMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWlu
dDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNUeXBlZEFycmF5VmlldyAgICA9IFNwZWNJbnQ4QXJyYXkgfCBTcGVjSW50MTZB
cnJheSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkgfCBTcGVjVWludDhDbGFtcGVk
QXJyYXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJyYXkgfCBTcGVjRmxvYXQzMkFy
cmF5IHwgU3BlY0Zsb2F0NjRBcnJheTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
QXJndW1lbnRzICAgICAgICAgPSAweDAwMDAyMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gQXJn
dW1lbnRzIG9iamVjdC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nT2Jq
ZWN0ICAgICAgPSAweDAwMDA0MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTdHJpbmdPYmplY3Qu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgID0gMHgw
MDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmpl
Y3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY09iamVjdCAgICAgICAgICAgID0gMHgwMDAwZmZmZjsgLy8gQml0bWFzayB1c2VkIGZvciB0
ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nSWRlbnQgICAgICAgPSAweDAwMDEwMDAwOyAvLyBJdCdz
IGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3MgYW4gaWRlbnRpZmllci4KLXN0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nVmFyICAgICAgICAgPSAweDAwMDIwMDAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAgICAgICAgICAgID0gMHgw
MDAzMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCi1zdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0NlbGxPdGhlciAgICAgICAgID0gMHgwMDA0MDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNDZWxsIGJ1dCBub3QgYSBzdWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVm
aW5pdGVseSBub3QgYSBKU1N0cmluZy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
Q2VsbCAgICAgICAgICAgICAgPSAweDAwMDdmZmZmOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Nl
bGwuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyICAgICAgICAgICAgID0g
MHgwMDgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgotc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNJbnQ0OCAgICAgICAgICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBJbnQ0OCwgaXQncyBpbnNpZGUgYSBkb3VibGUsIGJ1dCBpdCBkb2Vzbid0
IG5lZWQgdG8gYmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hpbmVJbnQg
ICAgICAgID0gMHgwMTgwMDAwMDsgLy8gSXQncyBzb21ldGhpbmcgdGhhdCB3ZSBjYW4gZG8gbWFj
aGluZSBpbnQgYXJpdGhtZXRpYyBvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
SW50NDhBc0RvdWJsZSAgICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50
NDggYW5kIGl0J3MgaW5zaWRlIGEgZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNJbnRlZ2VyICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBz
b21lIGtpbmQgb2YgaW50ZWdlci4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9u
SW50QXNEb3VibGUgICAgPSAweDA0MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm90IGFuIElu
dDQ4IGJ1dCBpdCdzIGEgcmVhbCBudW1iZXIgYW5kIGl0J3MgYSBkb3VibGUuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgID0gMHgwNzAwMDAwMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RvdWJsZU5hTiAgICAgICAgID0gMHgwODAwMDAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IGEgTmFOLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAg
ICAgICA9IDB4MGYwMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3Vi
bGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iZXIgICAgICAgID0g
MHgwNzgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVSZWFsLgotc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAgICAgICAgICA9IDB4MGY4MDAw
MDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEJvb2xlYW4uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090
aGVyICAgICAgICAgICAgID0gMHgyMDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vbmUgb2Yg
dGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAg
ICAgICA9IDB4M2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4NDAwMDAwMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQg
Y2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0Z1bGxUb3AgICAgICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUg
YWJvdmUgcGx1cyBhbnl0aGluZyB0aGUgREZHIGNob29zZXMuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY05vbmUgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDA7IC8vIFdlIGRvbid0
IGtub3cgYW55dGhpbmcgeWV0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGaW5h
bE9iamVjdCAgICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFs
T2JqZWN0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAg
ICAgPSAweDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICAgPSAweDAwMDAwMDA4OyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4K
K3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50OEFycmF5ICAgICAgICAgID0gMHgw
MDAwMDAxMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1
YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAg
ICAgICA9IDB4MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50
MzJBcnJheSAgICAgICAgID0gMHgwMDAwMDA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMy
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNVaW50OEFycmF5ICAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRl
bHkgYW4gVWludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ICA9IDB4MDAwMDAxMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNz
ZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgICA9
IDB4MDAwMDAyMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2Yg
aXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQzMkFy
cmF5ICAgICAgICA9IDB4MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0Zsb2F0MzJBcnJheSAgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBh
biBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Zsb2F0NjRBcnJheSAgICAgICA9IDB4MDAwMDEwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1R5cGVkQXJyYXlWaWV3ICAgICA9IFNwZWNJbnQ4
QXJyYXkgfCBTcGVjSW50MTZBcnJheSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkg
fCBTcGVjVWludDhDbGFtcGVkQXJyYXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJy
YXkgfCBTcGVjRmxvYXQzMkFycmF5IHwgU3BlY0Zsb2F0NjRBcnJheTsKK3N0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjQXJndW1lbnRzICAgICAgICAgID0gMHgwMDAwMjAwMDsgLy8gSXQn
cyBkZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBvYmplY3QuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY1N0cmluZ09iamVjdCAgICAgICA9IDB4MDAwMDQwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIFN0cmluZ09iamVjdC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2Jq
ZWN0T3RoZXIgICAgICAgID0gMHgwMDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVj
dCBidXQgbm90IEpTRmluYWxPYmplY3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICA9IDB4MDAwMGZmZmY7
IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRp
Y3Rpb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAg
ICA9IDB4MDAwMTAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBh
biBpZGVudGlmaWVyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIg
ICAgICAgICAgPSAweDAwMDIwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5k
IGl0J3Mgbm90IGFuIGlkZW50aWZpZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y1N0cmluZyAgICAgICAgICAgICA9IDB4MDAwMzAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpT
U3RyaW5nLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAgICAg
ICAgPSAweDAwMDQwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBhIHN1
YmNsYXNzIG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgPSAweDAwMDdmZmZm
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0ludDMyICAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBJbnQzMi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NDggICAgICAg
ICAgICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4IGFuZCB3ZSBp
bnRlbmQgaXQgdG8gdW5ib3ggaXQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01h
Y2hpbmVJbnQgICAgICAgICA9IDB4MDE4MDAwMDA7IC8vIEl0J3Mgc29tZXRoaW5nIHRoYXQgd2Ug
Y2FuIGRvIG1hY2hpbmUgaW50IGFyaXRobWV0aWMgb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0ludDQ4QXNEb3VibGUgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBzb21lIGtpbmQgb2YgaW50ZWdlci4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjTm9uSW50QXNEb3VibGUgICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IG5vdCBhbiBJbnQ0OCBidXQgaXQncyBhIHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91Ymxl
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICAgPSAw
eDA2MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KK3N0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlTmFOICAgICAgICAgID0gMHgwODAwMDAwMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNEb3VibGUgICAgICAgICAgICAgPSAweDBlMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1O
YU4gb3IgYSBOYU4gZG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRl
Y29kZVJlYWxOdW1iZXIgPSAweDA2ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBh
IERvdWJsZVJlYWwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxSZWFsTnVt
YmVyICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91Ymxl
UmVhbCwgb3IgYSBJbnQ0OC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNv
ZGVOdW1iZXIgICAgID0gMHgwZTgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBE
b3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxOdW1iZXIgICAgICAg
ICA9IDB4MGY4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ0OCwgb3IgYSBEb3Vi
bGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAgICA9
IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICA9IDB4MjAwMDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBub25lIG9mIHRoZSBhYm92ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgID0gMHgzZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFu
eSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgorc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgPSAweDdlZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55
IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NDguCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBi
ZSBhbnkgb2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgogCiB0eXBl
ZGVmIGJvb2wgKCpTcGVjdWxhdGVkVHlwZUNoZWNrZXIpKFNwZWN1bGF0ZWRUeXBlKTsKIApAQCAt
MjQwLDcgKzI0Miw3IEBAIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGUK
IAogaW5saW5lIGJvb2wgaXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhTcGVjdWxhdGVk
VHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIFNwZWNEb3VibGUpOworICAgIHJl
dHVybiAhKHZhbHVlICYgKFNwZWNEb3VibGUgfCBTcGVjSW50NDgpKTsKIH0KIAogaW5saW5lIGJv
b2wgaXNJbnQzMlNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKQEAgLTI2NSw3ICsyNjcsNyBAQCBpbmxpbmUgYm9vbCBpc01hY2hpbmVJbnRTcGVjdWxhdGlv
bkV4cGVjCiAKIGlubGluZSBib29sIGlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRp
YyhTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVjRG91
YmxlICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRG91Ymxl
KTsKIH0KIAogaW5saW5lIGJvb2wgaXNJbnQ0OEFzRG91YmxlU3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCkBAIC0yOTMsMTkgKzI5NSwzNCBAQCBpbmxpbmUgYm9vbCBpc0RvdWJsZVNw
ZWN1bGF0aW9uRm9yQXJpdGhtCiAgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0RvdWJsZSk7CiB9
CiAKLWlubGluZSBib29sIGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlKQoraW5saW5lIGJvb2wgaXNCeXRlY29kZVJlYWxOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxh
dGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQnl0ZWNvZGVSZWFs
TnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNCeXRlY29kZVJlYWxOdW1iZXIpOworfQorCitpbmxp
bmUgYm9vbCBpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUp
Cit7CisgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0Z1bGxSZWFsTnVtYmVyKSAmJiAhKHZhbHVl
ICYgflNwZWNGdWxsUmVhbE51bWJlcik7Cit9CisKK2lubGluZSBib29sIGlzQnl0ZWNvZGVOdW1i
ZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFs
dWUgJiBTcGVjQnl0ZWNvZGVOdW1iZXIpICYmICEodmFsdWUgJiB+U3BlY0J5dGVjb2RlTnVtYmVy
KTsKK30KKworaW5saW5lIGJvb2wgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY1JlYWxOdW1iZXIpICYmICEo
dmFsdWUgJiB+U3BlY1JlYWxOdW1iZXIpOworICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNGdWxs
TnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNGdWxsTnVtYmVyKTsKIH0KIAotaW5saW5lIGJvb2wg
aXNOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlz
Qnl0ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY051bWJlcikgJiYgISh2YWx1ZSAm
IH5TcGVjTnVtYmVyKTsKKyAgICByZXR1cm4gaXNCeXRlY29kZU51bWJlclNwZWN1bGF0aW9uKHZh
bHVlICYgflNwZWNPdGhlcik7CiB9CiAKLWlubGluZSBib29sIGlzTnVtYmVyU3BlY3VsYXRpb25F
eHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNGdWxs
TnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewotICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7Cisg
ICAgcmV0dXJuIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CiB9
CiAKIGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVy
eS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VmFsdWVSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTUgQEAgZW51bSBW
YWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBBbHJlYWR5SW5KU1N0YWNrLAogICAgIC8vIEl0
J3MgYWxyZWFkeSBpbiB0aGUgc3RhY2sgYnV0IHVuYm94ZWQuCiAgICAgQWxyZWFkeUluSlNTdGFj
a0FzVW5ib3hlZEludDMyLAorICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCwKICAg
ICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNV
bmJveGVkQm9vbGVhbiwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlLAogICAg
IC8vIEl0J3MgaW4gYSByZWdpc3Rlci4KICAgICBJbkdQUiwKICAgICBVbmJveGVkSW50MzJJbkdQ
UiwKKyAgICBVbmJveGVkSW50NDhJbkdQUiwKKyAgICBVbmJveGVkU3RyaWN0SW50NDhJbkdQUiwK
ICAgICBVbmJveGVkQm9vbGVhbkluR1BSLAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgSW5Q
YWlyLApAQCAtNjAsNiArNjMsOCBAQCBlbnVtIFZhbHVlUmVjb3ZlcnlUZWNobmlxdWUgewogICAg
IERpc3BsYWNlZEluSlNTdGFjaywKICAgICAvLyBJdCdzIGluIHRoZSBzdGFjaywgYXQgYSBkaWZm
ZXJlbnQgbG9jYXRpb24sIGFuZCBpdCdzIHVuYm94ZWQuCiAgICAgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2ssCisgICAgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2ssCisgICAgU3RyaWN0SW50NDhEaXNw
bGFjZWRJbkpTU3RhY2ssCiAgICAgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrLAogICAgIENlbGxE
aXNwbGFjZWRJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjaywKQEAgLTk1
LDYgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAorICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0
OCgpCisgICAgeworICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0
Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpCiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5
IHJlc3VsdDsKQEAgLTEyNSw2ICsxMzcsMTAgQEAgcHVibGljOgogICAgICAgICBWYWx1ZVJlY292
ZXJ5IHJlc3VsdDsKICAgICAgICAgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKQog
ICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDMySW5HUFI7CisgICAg
ICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAg
cmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDQ4SW5HUFI7CisgICAgICAgIGVsc2UgaWYg
KGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0
Lm1fdGVjaG5pcXVlID0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFI7CiAgICAgICAgIGVsc2UgaWYg
KGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEJvb2xlYW4pCiAgICAgICAgICAgICByZXN1bHQubV90
ZWNobmlxdWUgPSBVbmJveGVkQm9vbGVhbkluR1BSOwogICAgICAgICBlbHNlCkBAIC0xNjgsNiAr
MTg0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDMy
RGlzcGxhY2VkSW5KU1N0YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlx
dWUgPSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OgorICAgICAgICAgICAg
cmVzdWx0Lm1fdGVjaG5pcXVlID0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIERhdGFGb3JtYXREb3Vi
bGU6CiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBEb3VibGVEaXNwbGFjZWRJbkpT
U3RhY2s7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyOSw2ICsyNTMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0
YWNrOgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAgICAgIGNhc2UgQWxy
ZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFj
a0FzVW5ib3hlZEJvb2xlYW46CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hl
ZERvdWJsZToKQEAgLTI0MCw3ICsyNjUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlJlZ2lzdGVySUQgZ3ByKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Rl
Y2huaXF1ZSA9PSBJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBt
X3RlY2huaXF1ZSA9PSBVbmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQz
MkluR1BSKTsKKyAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5p
cXVlID09IFVuYm94ZWRJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFu
SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5i
b3hlZEludDQ4SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFIp
OwogICAgICAgICByZXR1cm4gbV9zb3VyY2UuZ3ByOwogICAgIH0KICAgICAKQEAgLTI2Niw3ICsy
OTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rl
cigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2Vk
SW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1f
dGVjaG5pcXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJ
bkpTU3RhY2spOworICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0
YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5p
cXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlz
cGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3Rh
Y2sgfHwgbV90ZWNobmlxdWUgPT0gSW50NDhEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlx
dWUgPT0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gbV9z
b3VyY2UudmlydHVhbFJlZzsKICAgICB9CiAgICAgCkBAIC0yODUsNiArMzEwLDkgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAg
ICAgIG91dC5wcmludGYoIihpbnQzMikiKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Y2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAgICAgICAgICBvdXQucHJp
bnRmKCIoaW50NDgpIik7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoY2VsbCki
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwMCw2ICszMjgsMTIgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiaW50
MzIoJSVyJWQpIiwgZ3ByKCkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVu
Ym94ZWRJbnQ0OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50ZigiaW50NDgoJSVyJWQpIiwg
Z3ByKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJ
bnQ0OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50Zigic3RyaWN0SW50NDgoJSVyJWQpIiwg
Z3ByKCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFu
SW5HUFI6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJib29sKCUlciVkKSIsIGdwcigpKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTMyMCw2ICszNTQsMTIgQEAgcHVibGljOgogICAgICAgICBj
YXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKmlu
dDMyKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgY2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG91dC5wcmludGYo
IippbnQ0OCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGNhc2UgU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIqc3RyaWN0SW50NDgoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAg
ICAgICAgICAgIG91dC5wcmludGYoIipkb3VibGUoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG5lZWRzVHlwZUNo
ZWNrKE5vZGUqIG5vZGUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBmb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH50eXBlc1Bhc3NlZFRocm91
Z2g7CisgICAgICAgIHJldHVybiAhZm9yTm9kZShub2RlKS5pc1R5cGUodHlwZXNQYXNzZWRUaHJv
dWdoKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBuZWVkc1R5cGVDaGVjayhFZGdlIGVkZ2UsIFNw
ZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKQEAgLTE2OCw3ICsxNjgsNyBAQCBwcml2
YXRlOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJCeVR5cGUoTm9kZSogbm9kZSwgRWRn
ZSYgZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIEFic3RyYWN0VmFs
dWUmIHZhbHVlID0gZm9yTm9kZShlZGdlKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fdHlwZSAmIH50
eXBlKSB7CisgICAgICAgIGlmICghdmFsdWUuaXNUeXBlKHR5cGUpKSB7CiAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgZWRnZS5zZXRQcm9vZlN0YXR1cyhO
ZWVkc0NoZWNrKTsKICAgICAgICAgfSBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZp
c2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2ICszMTAsMjYgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAorICAgIGNhc2UgSW50NDhUb0RvdWJsZTogeworICAgICAgICBKU1ZhbHVl
IGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNo
aWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGNoaWxkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAg
ICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZTogeworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxk
LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZSkgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAg
ICBjYXNlIFZhbHVlQWRkOgogICAgIGNhc2UgQXJpdGhBZGQ6IHsKICAgICAgICAgSlNWYWx1ZSBs
ZWZ0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKQEAgLTMyNCw5ICszNDQsMTUg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAg
aWYgKCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkK
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5pc1R5cGUoU3BlY0ludDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5v
ZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5z
ZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVy
VXNlOgotICAgICAgICAgICAgaWYgKGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICAmJiBpc1JlYWxOdW1iZXJTcGVj
dWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQorICAgICAgICAgICAgaWYg
KGlzRnVsbFJlYWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5
cGUpCisgICAgICAgICAgICAgICAgJiYgaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5v
ZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNEb3VibGVSZWFsKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC0zMzQsNyArMzYwLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3AoKSA9PSBWYWx1ZUFkZCk7
CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0
KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjU3RyaW5nIHwgU3BlY0lu
dDMyIHwgU3BlY051bWJlcik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3Bl
Y1N0cmluZyB8IFNwZWNCeXRlY29kZU51bWJlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKQEAgLTM1OCw2ICszODQsMTIgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhblRy
dW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
TWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50
NDgpOworICAgICAgICAgICAgaWYgKCFmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5pc1R5cGUoU3Bl
Y0ludDMyKQorICAgICAgICAgICAgICAgIHx8ICFmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5
cGUoU3BlY0ludDMyKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0zODAsNiArNDEyLDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS0+YXJp
dGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIGlmICht
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpCisg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGlmICgh
Ynl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCisg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjRG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA0LDkgKzQ0MywxMyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAg
ICAgfHwgIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdz
KCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CisgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0
KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgotICAg
ICAgICAgICAgaWYgKGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICB8fCBpc1JlYWxOdW1iZXJTcGVjdWxhdGlvbihm
b3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQorICAgICAgICAgICAgaWYgKGlzRnVsbFJl
YWxOdW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpCisgICAg
ICAgICAgICAgICAgfHwgaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+
Y2hpbGQyKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNEb3VibGVSZWFsKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CkBAIC01ODYsNyArNjI5LDcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKGFic3Ry
YWN0Q2hpbGQubV90eXBlKSkgeworICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24o
YWJzdHJhY3RDaGlsZC5tX3R5cGUpKSB7CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCB2
bS0+c21hbGxTdHJpbmdzLm51bWJlclN0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC04MTEsNiArODU0LDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToKICAgICAgICAgICAg
IGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOworICAgICAgICAgICAgZWxzZSBpZiAoZW5hYmxl
SW50NDgoKSAmJiBub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCisgICAgICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC04NjMsNyArOTA4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQXJyYXlQdXNoOgogICAgICAgICBub2RlLT5z
ZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29kZU9yaWdpbiwg
Y2xvYmJlckxpbWl0KTsKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNOdW1iZXIp
OworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0J5dGVjb2RlTnVtYmVyKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIEFycmF5UG9wOgpAQCAtOTM0LDgg
Kzk3OSw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgLy8gTkIuIFRoZSBtb3JlIGNhbm9uaWNhbCB3YXkgb2Ygd3JpdGluZyB0aGlzIHdvdWxkIGhh
dmUgYmVlbjoKICAgICAgICAgLy8KICAgICAgICAgLy8gZGVzdGluYXRpb24gPSBzb3VyY2U7Ci0g
ICAgICAgIC8vIGlmIChkZXN0aW5hdGlvbi5tX3R5cGUgJiAhKFNwZWNOdW1iZXIgfCBTcGVjU3Ry
aW5nIHwgU3BlY0Jvb2xlYW4pKSB7Ci0gICAgICAgIC8vICAgICBkZXN0aW5hdGlvbi5maWx0ZXIo
U3BlY051bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbik7CisgICAgICAgIC8vIGlmIChk
ZXN0aW5hdGlvbi5tX3R5cGUgJiAhKFNwZWNGdWxsTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNwZWNC
b29sZWFuKSkgeworICAgICAgICAvLyAgICAgZGVzdGluYXRpb24uZmlsdGVyKFNwZWNGdWxsTnVt
YmVyIHwgU3BlY1N0cmluZyB8IFNwZWNCb29sZWFuKTsKICAgICAgICAgLy8gICAgIEFic3RyYWN0
VmFsdWUgc3RyaW5nOwogICAgICAgICAvLyAgICAgc3RyaW5nLnNldCh2bS0+c3RyaW5nU3RydWN0
dXJlKTsKICAgICAgICAgLy8gICAgIGRlc3RpbmF0aW9uLm1lcmdlKHN0cmluZyk7CkBAIC05NTUs
NyArMTAwMCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAg
ICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7CiAgICAg
ICAgIAogICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gc291cmNlLm1fdHlwZTsKLSAgICAg
ICAgaWYgKHR5cGUgJiB+KFNwZWNOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4pKQor
ICAgICAgICBpZiAodHlwZSAmIH4oU3BlY0Z1bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jv
b2xlYW4pKQogICAgICAgICAgICAgdHlwZSA9IChTcGVjSGVhcFRvcCAmIH5TcGVjQ2VsbCkgfCBT
cGVjU3RyaW5nOwogCiAgICAgICAgIGRlc3RpbmF0aW9uLnNldFR5cGUodHlwZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlz
aW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDggQEAgdm9pZCBBYnN0cmFjdFZhbHVl
OjpzZXQoR3JhcGgmIGdyYXBoLCBKUwogICAgIH0KICAgICAgICAgCiAgICAgbV90eXBlID0gc3Bl
Y3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpOworICAgIGlmIChtX3R5cGUgPT0gU3BlY0ludDQ4QXNE
b3VibGUpCisgICAgICAgIG1fdHlwZSA9IFNwZWNJbnQ0ODsKICAgICBtX3ZhbHVlID0gdmFsdWU7
CiAgICAgICAgIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTIyNyw2ICsyMjksNyBAQCBG
aWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6Om5vcm1hbGl6CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorI2lmICFBU1NFUlRfRElTQUJMRUQKIHZvaWQgQWJzdHJhY3RWYWx1ZTo6Y2hlY2tD
b25zaXN0ZW5jeSgpIGNvbnN0CiB7CiAgICAgaWYgKCEobV90eXBlICYgU3BlY0NlbGwpKSB7CkBA
IC0yMzgsMTQgKzI0MSwxOSBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OmNoZWNrQ29uc2lzdGVuY3ko
KSBjCiAgICAgaWYgKGlzQ2xlYXIoKSkKICAgICAgICAgQVNTRVJUKCFtX3ZhbHVlKTsKICAgICAK
LSAgICBpZiAoISFtX3ZhbHVlKQotICAgICAgICBBU1NFUlQobWVyZ2VTcGVjdWxhdGlvbnMobV90
eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gbV90eXBlKTsKKyAgICBpZiAo
ISFtX3ZhbHVlKSB7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBtX3R5cGU7CisgICAg
ICAgIGlmICh0eXBlICYgU3BlY0ludDQ4KQorICAgICAgICAgICAgdHlwZSB8PSBTcGVjSW50NDhB
c0RvdWJsZTsKKyAgICAgICAgQVNTRVJUKG1lcmdlU3BlY3VsYXRpb25zKHR5cGUsIHNwZWN1bGF0
aW9uRnJvbVZhbHVlKG1fdmFsdWUpKSA9PSB0eXBlKTsKKyAgICB9CiAgICAgCiAgICAgLy8gTm90
ZSB0aGF0IGl0J3MgcG9zc2libGUgZm9yIGEgcHJlZGljdGlvbiBsaWtlIChGaW5hbCwgW10pLiBU
aGlzIHJlYWxseSBtZWFucyB0aGF0CiAgICAgLy8gdGhlIHZhbHVlIGlzIGJvdHRvbSBhbmQgdGhh
dCBhbnkgY29kZSB0aGF0IHVzZXMgdGhlIHZhbHVlIGlzIHVucmVhY2hhYmxlLiBCdXQKICAgICAv
LyB3ZSBkb24ndCB3YW50IHRvIGdldCBwZWRhbnRpYyBhYm91dCB0aGlzIGFzIGl0IHdvdWxkIG9u
bHkgaW5jcmVhc2UgdGhlIGNvbXB1dGF0aW9uYWwKICAgICAvLyBjb21wbGV4aXR5IG9mIHRoZSBj
b2RlLgogfQorI2VuZGlmCiAKIHZvaWQgQWJzdHJhY3RWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFZhbHVlLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDE2IEBA
IHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAg
IH0KICAgICAKKyAgICBib29sIGNvdWxkQmVUeXBlKFNwZWN1bGF0ZWRUeXBlIGRlc2lyZWRUeXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhKG1fdHlwZSAmIGRlc2lyZWRUeXBlKTsKKyAgICB9
CisgICAgCisgICAgYm9vbCBpc1R5cGUoU3BlY3VsYXRlZFR5cGUgZGVzaXJlZFR5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gIShtX3R5cGUgJiB+ZGVzaXJlZFR5cGUpOworICAgIH0KKyAgICAK
ICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0IFN0cnVjdHVyZVNldCYp
OwogICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJyYXlNb2RlcyhBcnJheU1vZGVz
IGFycmF5TW9kZXMpOwpAQCAtMTkzLDIyICsyMDMsNiBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7
CiAgICAgCiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJCeVZhbHVlKEpTVmFsdWUgdmFsdWUp
OwogICAgIAotICAgIGJvb2wgdmFsaWRhdGVUeXBlKEpTVmFsdWUgdmFsdWUpIGNvbnN0Ci0gICAg
ewotICAgICAgICBpZiAoaXNIZWFwVG9wKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChtZXJnZVNwZWN1bGF0aW9ucyhtX3R5cGUsIHNwZWN1bGF0aW9u
RnJvbVZhbHVlKHZhbHVlKSkgIT0gbV90eXBlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAKLSAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgQVNT
RVJUKG1fdHlwZSAmIFNwZWNFbXB0eSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAogICAgIGJv
b2wgdmFsaWRhdGUoSlNWYWx1ZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc0hl
YXBUb3AoKSkKQEAgLTI1MSw3ICsyNDUsMTEgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAg
ICAgICAgICAgfHwgIWFycmF5TW9kZXNBcmVDbGVhck9yVG9wKG1fYXJyYXlNb2Rlcyk7CiAgICAg
fQogICAgIAorI2lmIEFTU0VSVF9ESVNBQkxFRAorICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgp
IGNvbnN0IHsgfQorI2Vsc2UKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKKyNl
bmRpZgogICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250
ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkBAIC0zNjMs
NiArMzYxLDI5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fYXJyYXlNb2RlcyA9IEFMTF9BUlJBWV9N
T0RFUzsKICAgICB9CiAgICAgCisgICAgYm9vbCB2YWxpZGF0ZVR5cGUoSlNWYWx1ZSB2YWx1ZSkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc0hlYXBUb3AoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAKKyAgICAgICAgLy8gQ29uc3RhbnQgZm9sZGluZyBhbHdheXMgcmVw
cmVzZW50cyBJbnQ0OCdzIGluIGEgZG91YmxlIChpLmUuIEludDQ4QXNEb3VibGUpLgorICAgICAg
ICAvLyBTbyBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkgZm9yIGFuIEludDQ4IHZhbHVlIHdp
bGwgcmV0dXJuIEludDQ4QXNEb3VibGUsCisgICAgICAgIC8vIGFuZCB0aGF0J3MgZmluZSAtIHRo
ZSB0eXBlIHZhbGlkYXRlcyBqdXN0IGZpbmUuCisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBtX3R5cGU7CisgICAgICAgIGlmICh0eXBlICYgU3BlY0ludDQ4KQorICAgICAgICAgICAgdHlw
ZSB8PSBTcGVjSW50NDhBc0RvdWJsZTsKKyAgICAgICAgCisgICAgICAgIGlmIChtZXJnZVNwZWN1
bGF0aW9ucyh0eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IHR5cGUpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBpZiAodmFsdWUuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlICYgU3BlY0VtcHR5KTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBtYWtlVG9wKFNwZWN1bGF0ZWRUeXBlIHRvcCkKICAg
ICB7CiAgICAgICAgIG1fdHlwZSB8PSB0b3A7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NywyMSAr
MTU3LDIxIEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZShTcGVjdWxhdGVkVHkKICAgICAg
ICAgICAgIHJldHVybiB3aXRoVHlwZShBcnJheTo6Rm9yY2VFeGl0KTsKICAgICAgICAgaWYgKGlz
SW50MzJTcGVjdWxhdGlvbih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRD
b252ZXJzaW9uKEFycmF5OjpJbnQzMiwgQXJyYXk6OkNvbnZlcnQpOwotICAgICAgICBpZiAoaXNO
dW1iZXJTcGVjdWxhdGlvbih2YWx1ZSkpCisgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxh
dGlvbih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFy
cmF5OjpEb3VibGUsIEFycmF5OjpDb252ZXJ0KTsKICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5k
Q29udmVyc2lvbihBcnJheTo6Q29udGlndW91cywgQXJyYXk6OkNvbnZlcnQpOwogICAgICAgICAK
ICAgICBjYXNlIEFycmF5OjpJbnQzMjoKICAgICAgICAgaWYgKCF2YWx1ZSB8fCBpc0ludDMyU3Bl
Y3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICBpZiAo
aXNOdW1iZXJTcGVjdWxhdGlvbih2YWx1ZSkpCisgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVj
dWxhdGlvbih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9u
KEFycmF5OjpEb3VibGUsIEFycmF5OjpDb252ZXJ0KTsKICAgICAgICAgcmV0dXJuIHdpdGhUeXBl
QW5kQ29udmVyc2lvbihBcnJheTo6Q29udGlndW91cywgQXJyYXk6OkNvbnZlcnQpOwogICAgICAg
ICAKICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgIGlmIChmbGFncyAmIE5vZGVCeXRl
Y29kZVVzZXNBc0ludCkKICAgICAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24o
QXJyYXk6OkNvbnRpZ3VvdXMsIEFycmF5OjpSYWdlQ29udmVydCk7Ci0gICAgICAgIGlmICghdmFs
dWUgfHwgaXNOdW1iZXJTcGVjdWxhdGlvbih2YWx1ZSkpCisgICAgICAgIGlmICghdmFsdWUgfHwg
aXNGdWxsTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpDb250aWd1b3Vz
LCBBcnJheTo6Q29udmVydCk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTMsNiArMjkzLDI0IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZTY0VG9Eb3VibGUoZ3By
LCBmcHIpOwogICAgICAgICByZXR1cm4gZnByOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGJveElu
dDQ4KEdQUlJlZyBzb3VyY2UsIEdQUlJlZyB0YXJnZXQsIEdQUlJlZyBzY3JhdGNoLCBGUFJSZWcg
ZnBTY3JhdGNoKQorICAgIHsKKyAgICAgICAgLy8gSXMgaXQgYW4gaW50MzI/CisgICAgICAgIHNp
Z25FeHRlbmQzMlRvUHRyKHNvdXJjZSwgc2NyYXRjaCk7CisgICAgICAgIEp1bXAgaXNJbnQzMiA9
IGJyYW5jaDY0KEVxdWFsLCBzb3VyY2UsIHNjcmF0Y2gpOworICAgICAgICAKKyAgICAgICAgLy8g
Tm9wZSwgaXQncyBub3QsIGJ1dCByZWdUMCBjb250YWlucyB0aGUgaW50NjQgdmFsdWUuCisgICAg
ICAgIGNvbnZlcnRJbnQ2NFRvRG91YmxlKHNvdXJjZSwgZnBTY3JhdGNoKTsKKyAgICAgICAgYm94
RG91YmxlKGZwU2NyYXRjaCwgdGFyZ2V0KTsKKyAgICAgICAgSnVtcCBkb25lID0ganVtcCgpOwor
ICAgICAgICAKKyAgICAgICAgaXNJbnQzMi5saW5rKHRoaXMpOworICAgICAgICB6ZXJvRXh0ZW5k
MzJUb1B0cihzb3VyY2UsIHRhcmdldCk7CisgICAgICAgIG9yNjQoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyLCB0YXJnZXQpOworICAgICAgICAKKyAgICAgICAgZG9uZS5saW5rKHRoaXMp
OworICAgIH0KICNlbmRpZgogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjMsMjEgKzYzLDYgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICAKLSAgICBOb2Rl
KiBjYW5vbmljYWxpemUoTm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAgIGlmICghbm9kZSkKLSAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0g
VmFsdWVUb0ludDMyKQotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsK
LSAgICAgICAgCi0gICAgICAgIHJldHVybiBub2RlOwotICAgIH0KLSAgICBOb2RlKiBjYW5vbmlj
YWxpemUoRWRnZSBlZGdlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbm9uaWNhbGl6ZShlZGdl
Lm5vZGUoKSk7Ci0gICAgfQotICAgIAogICAgIHVuc2lnbmVkIGVuZEluZGV4Rm9yUHVyZUNTRSgp
CiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2xhc3RTZWVuW21fY3VycmVudE5v
ZGUtPm9wKCldOwpAQCAtOTQsOSArNzksOSBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogcHVyZUNT
RShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgTm9kZSogY2hpbGQxID0gY2Fub25pY2FsaXpl
KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTm9kZSogY2hpbGQyID0gY2Fub25pY2FsaXplKG5v
ZGUtPmNoaWxkMigpKTsKLSAgICAgICAgTm9kZSogY2hpbGQzID0gY2Fub25pY2FsaXplKG5vZGUt
PmNoaWxkMygpKTsKKyAgICAgICAgRWRnZSBjaGlsZDEgPSBub2RlLT5jaGlsZDEoKTsKKyAgICAg
ICAgRWRnZSBjaGlsZDIgPSBub2RlLT5jaGlsZDIoKTsKKyAgICAgICAgRWRnZSBjaGlsZDMgPSBu
b2RlLT5jaGlsZDMoKTsKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGVuZElu
ZGV4Rm9yUHVyZUNTRSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlKiBvdGhlck5vZGUgPSBt
X2N1cnJlbnRCbG9jay0+YXQoaSk7CkBAIC0xMDksMTkgKzk0LDE5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBpZiAobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSAhPSBvdGhlck5vZGUtPmFyaXRoTm9k
ZUZsYWdzKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIE5vZGUqIG90aGVyQ2hpbGQgPSBjYW5vbmljYWxpemUob3RoZXJOb2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBFZGdlIG90aGVyQ2hpbGQgPSBvdGhlck5vZGUtPmNoaWxkMSgpOwog
ICAgICAgICAgICAgaWYgKCFvdGhlckNoaWxkKQogICAgICAgICAgICAgICAgIHJldHVybiBvdGhl
ck5vZGU7CiAgICAgICAgICAgICBpZiAob3RoZXJDaGlsZCAhPSBjaGlsZDEpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG90aGVyQ2hpbGQgPSBj
YW5vbmljYWxpemUob3RoZXJOb2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBvdGhlckNoaWxk
ID0gb3RoZXJOb2RlLT5jaGlsZDIoKTsKICAgICAgICAgICAgIGlmICghb3RoZXJDaGlsZCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gb3RoZXJOb2RlOwogICAgICAgICAgICAgaWYgKG90aGVyQ2hp
bGQgIT0gY2hpbGQyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBvdGhlckNoaWxkID0gY2Fub25pY2FsaXplKG90aGVyTm9kZS0+Y2hpbGQzKCkp
OworICAgICAgICAgICAgb3RoZXJDaGlsZCA9IG90aGVyTm9kZS0+Y2hpbGQzKCk7CiAgICAgICAg
ICAgICBpZiAoIW90aGVyQ2hpbGQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyTm9kZTsK
ICAgICAgICAgICAgIGlmIChvdGhlckNoaWxkICE9IGNoaWxkMykKQEAgLTM3NywyMSArMzYyLDIx
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5C
bG9jazsgaS0tOykgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT5h
dChpKTsKLSAgICAgICAgICAgIGlmIChub2RlID09IGNoaWxkMSB8fCBub2RlID09IGNhbm9uaWNh
bGl6ZShjaGlsZDIpKSAKKyAgICAgICAgICAgIGlmIChub2RlID09IGNoaWxkMSB8fCBub2RlID09
IGNoaWxkMikgCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS0+b3AoKSkgewogICAgICAgICAgICAgY2FzZSBHZXRCeVZhbDoKICAgICAgICAgICAgICAg
ICBpZiAoIW1fZ3JhcGguYnlWYWxJc1B1cmUobm9kZSkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBjaGlsZDEgJiYg
Y2Fub25pY2FsaXplKG5vZGUtPmNoaWxkMigpKSA9PSBjYW5vbmljYWxpemUoY2hpbGQyKSkKKyAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gY2hpbGQxICYmIG5vZGUtPmNoaWxk
MigpID09IGNoaWxkMikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAg
Y2FzZSBQdXRCeVZhbEFsaWFzOiB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLmJ5VmFs
SXNQdXJlKG5vZGUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAg
ICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSA9PSBjaGlsZDEgJiYgY2Fub25p
Y2FsaXplKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpID09IGNhbm9uaWNhbGl6ZShjaGls
ZDIpKQorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApID09
IGNoaWxkMSAmJiBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpID09IGNoaWxkMikKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikubm9kZSgp
OwogICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgYXNzdW1lIHRoYXQgdGhlIFB1dEJ5VmFsIHdp
bGwgY2xvYmJlciB0aGUgbG9jYXRpb24gd2UncmUgZ2V0dGluZyBmcm9tLgogICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyOyBpZiB3ZSBrbm93IHRoYXQgdGhlIFB1dEJ5
VmFsIGlzIGFjY2Vzc2luZyBhbiBhcnJheSBvZiBhCkBAIC0xMDkwLDYgKzEwNzUsOCBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50OgogICAgICAgICBjYXNlIFZhbHVl
VG9JbnQzMjoKICAgICAgICAgY2FzZSBNYWtlUm9wZToKKyAgICAgICAgY2FzZSBJbnQ0OFRvRG91
YmxlOgorICAgICAgICBjYXNlIEludDQ4VG9WYWx1ZToKICAgICAgICAgICAgIGlmIChjc2VNb2Rl
ID09IFN0b3JlRWxpbWluYXRpb24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBzZXRSZXBsYWNlbWVudChwdXJlQ1NFKG5vZGUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYg
KzExMiw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBj
YXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgogICAgIGNhc2UgRXh0cmFj
dE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOgorICAgIGNhc2UgSW50NDhU
b1ZhbHVlOgogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgTW92SGludEFuZENo
ZWNrOgpAQCAtMTgwLDYgKzE4Miw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUKICAgICAgICAgc3dpdGNoIChub2RlLT5iaW5hcnlVc2VLaW5kKCkpIHsKICAgICAg
ICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgIGNhc2Ug
TWFjaGluZUludFVzZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBVbnR5cGVk
VXNlOgogICAgICAgICAgICAgcmVhZChXb3JsZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29tbW9uLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMsMTUgQEAgaW5s
aW5lIGJvb2wgZW5hYmxlQ29uY3VycmVudEpJVCgpCiAjZW5kaWYKIH0KIAoraW5saW5lIGJvb2wg
ZW5hYmxlSW50NDgoKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIHRydWU7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBlbnVtIFNwaWxsUmVnaXN0ZXJz
TW9kZSB7IE5lZWRUb1NwaWxsLCBEb250U3BpbGwgfTsKIAogZW51bSBOb1Jlc3VsdFRhZyB7IE5v
UmVzdWx0IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDkgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIGZpeHVwU2V0TG9jYWxzSW5CbG9jayhtX2dyYXBoLmJsb2NrKGJsb2Nr
SW5kZXgpKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJs
b2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0lu
ZGV4KQorICAgICAgICAgICAgZml4dXBVbnR5cGVkU2V0TG9jYWxzSW5CbG9jayhtX2dyYXBoLmJs
b2NrKGJsb2NrSW5kZXgpKTsKKyAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApAQCAtOTIsNyArOTUsNyBAQCBwcml2YXRlOgogICAgICAgICBzd2l0Y2ggKG9wKSB7CiAgICAg
ICAgIGNhc2UgU2V0TG9jYWw6IHsKICAgICAgICAgICAgIC8vIFRoaXMgZ2V0cyBoYW5kbGVkIGJ5
IGZpeHVwU2V0TG9jYWxzSW5CbG9jaygpLgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEJpdEFuZDoK
QEAgLTEyNCw2ICsxMjcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8
TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0x
OTcsNiArMjA1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKG1fZ3JhcGgubmVnYXRlU2hvdWxkU3BlY3VsYXRlTWFjaGluZUlu
dChub2RlKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0yMDcsNiArMjE5LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fZ3JhcGgubXVsU2hvdWxk
U3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFj
aGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFj
aGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTMwMCw2ICszMTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKQorICAg
ICAgICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTnVtYmVyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkg
ewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKQEAgLTM1
NSw2ICszNzgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNl
Pihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NDgoKQorICAgICAgICAgICAgICAgICYmIE5vZGU6
OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5j
aGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNl
Pihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKQEAgLTQ3Niw2ICs1MDUsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDIpOwogICAgICAgICAgICAgICAgIGZp
eEVkZ2U8SW50MzJVc2U+KGNoaWxkMyk7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+cHJl
ZGljdGlvbigpICYgU3BlY0ludDQ4KQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hp
bmVJbnRVc2U+KGNoaWxkMyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8
S25vd25DZWxsVXNlPihjaGlsZDEpOwpAQCAtNDkzLDYgKzUyNiw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQyKTsKICAgICAgICAgICAgICAgICBp
ZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxk
My0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQorICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPE1hY2hpbmVJbnRVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTg0Nyw2ICs4ODIsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNr
VGllclVwSW5Mb29wOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgICAg
IGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKKyAgICAgICAgY2FzZSBJbnQ0OFRvRG91Ymxl
OgorICAgICAgICBjYXNlIEludDQ4VG9WYWx1ZToKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC0xMTg5LDYg
KzEyMjYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTIwMyw2ICsxMjQzLDIzIEBAIHByaXZhdGU6CiAgICAgICAgIG1faW5zZXJ0aW9u
U2V0LmV4ZWN1dGUoYmxvY2spOwogICAgIH0KICAgICAKKyAgICB2b2lkIGZpeHVwVW50eXBlZFNl
dExvY2Fsc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAgICAgICBpZiAoIWJs
b2NrKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hh
YmxlKTsKKyAgICAgICAgbV9ibG9jayA9IGJsb2NrOworICAgICAgICBmb3IgKG1faW5kZXhJbkJs
b2NrID0gMDsgbV9pbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2Nr
KSB7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5hdCht
X2luZGV4SW5CbG9jayk7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQorICAgICAgICAgICAgICAg
IGZpeEVkZ2U8VW50eXBlZFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICB9CisgICAgICAg
IG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOworICAgIH0KKyAgICAKICAgICBOb2RlKiBj
aGVja0FycmF5KEFycmF5TW9kZSBhcnJheU1vZGUsIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIE5vZGUqIGFycmF5LCBOb2RlKiBpbmRleCwgYm9vbCAoKnN0b3JhZ2VDaGVjaykoY29uc3Qg
QXJyYXlNb2RlJikgPSBjYW5DU0VTdG9yYWdlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGFycmF5
TW9kZS5pc1NwZWNpZmljKCkpOwpAQCAtMTMyMSw2ICsxMzc4LDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgfHwgaXNCb29sZWFuU3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24o
KSkpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+
bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGlmIChpc01hY2hpbmVJbnRTcGVj
dWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKKyAgICAgICAgICAgICAgICBtX3Byb2Zp
dGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1
ZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDZWxsVXNlOgogICAgICAgICBj
YXNlIEtub3duQ2VsbFVzZToKICAgICAgICAgY2FzZSBPYmplY3RVc2U6CkBAIC0xMzQ3LDEyICsx
NDA4LDgwIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8VXNlS2luZCB1c2VLaW5kPgogICAgIHZv
aWQgZml4RWRnZShFZGdlJiBlZGdlLCBTcGVjdWxhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBC
YWNrd2FyZFNwZWN1bGF0aW9uKQogICAgIHsKLSAgICAgICAgaWYgKGlzRG91YmxlKHVzZUtpbmQp
ICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRpYygpKSB7Ci0gICAgICAg
ICAgICBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShlZGdlLCB1c2VLaW5kLCBkaXJlY3Rpb24pOwor
ICAgICAgICBpZiAoaXNEb3VibGUodXNlS2luZCkpIHsKKyAgICAgICAgICAgIGlmIChlZGdlLT5z
aG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgeworICAgICAgICAgICAgICAgIGlu
amVjdEludDMyVG9Eb3VibGVOb2RlKGVkZ2UsIHVzZUtpbmQsIGRpcmVjdGlvbik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBpZiAoZW5hYmxlSW50NDgoKSAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkp
IHsKKyAgICAgICAgICAgICAgICAvLyBNYWtlIGFsbCBkb3VibGUgdXNlcyBvZiBpbnQ0OCB2YWx1
ZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgSW50NDhUb0RvdWJsZS4KKyAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIGZvciB0aGUgc2FtZSByZWFzb24gYXMgSW50NDhUb1ZhbHVlIChzZWUgYmVsb3cp
IGV4Y2VwdCB0aGF0CisgICAgICAgICAgICAgICAgLy8gSW50OFRvRG91YmxlIHdpbGwgY29udmVy
dCBpbnQ0OCdzIHRoYXQgZml0IGluIGFuIGludDMyIGludG8gYSBkb3VibGUKKyAgICAgICAgICAg
ICAgICAvLyByYXRoZXIgdGhhbiB0cnlpbmcgdG8gY3JlYXRlIGEgYm94ZWQgaW50MzIgbGlrZSBJ
bnQ0OFRvVmFsdWUgZG9lcy4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBOb2Rl
KiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAg
ICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4QXNEb3VibGUsIEludDQ4VG9Eb3VibGUsCisgICAg
ICAgICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2Rl
KCksIE51bWJlclVzZSkpOworICAgICAgICAgICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNl
S2luZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAoZW5hYmxlSW50NDgoKSAmJiB1c2VLaW5kICE9IE1hY2hp
bmVJbnRVc2UKKyAgICAgICAgICAgICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQo
KSAmJiAhZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgeworICAgICAgICAgICAgLy8gV2Ug
bWFrZSBhbGwgbm9uLWludDQ4IHVzZXMgb2YgaW50NDggdmFsdWVzIGhhdmUgYW4gaW50ZXJtZWRp
YXRlIEludDQ4VG9WYWx1ZQorICAgICAgICAgICAgLy8gbm9kZSB0byBlbnN1cmUgdGhhdCB3ZSBo
YW5kbGUgdGhpcyBwcm9wZXJseToKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBT
b21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAg
ICAvLyBjOiBDYWxsKC4uLiwgQGEpCisgICAgICAgICAgICAvLyBkOiBBcml0aEFkZChAYSwgLi4u
KQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFdpdGhvdXQgYW4gaW50ZXJtZWRpYXRl
IG5vZGUgYW5kIGp1c3QgbGFiZWxpbmcgdGhlIHVzZXMsIHdlIHdpbGwgZ2V0OgorICAgICAgICAg
ICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8gYjogQXJp
dGhBZGQoSW50NDg6QGEsIC4uLikKKyAgICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBVbnR5cGVk
OkBhKQorICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoSW50NDg6QGEsIC4uLikKKyAgICAgICAg
ICAgIC8vCisgICAgICAgICAgICAvLyBBbmQgbm93IHRoZSBjLT5VbnR5cGVkOkBhIGVkZ2Ugd2ls
bCBib3ggdGhlIHZhbHVlIG9mIEBhIGludG8gYSBkb3VibGUuIFRoaXMKKyAgICAgICAgICAgIC8v
IGlzIGJhZCwgYmVjYXVzZSBub3cgdGhlIGQtPkludDQ4OkBhIGVkZ2Ugd2lsbCBlaXRoZXIgaGF2
ZSB0byBkbyBkb3VibGUtdG8taW50CisgICAgICAgICAgICAvLyBjb252ZXJzaW9ucywgb3Igd2ls
bCBoYXZlIHRvIE9TUiBleGl0IHVuY29uZGl0aW9uYWxseS4gQWx0ZXJuYXRpdmVseSB3ZSBjb3Vs
ZAorICAgICAgICAgICAgLy8gaGF2ZSB0aGUgYy0+VW50eXBlZDpAYSBlZGdlIGJveCB0aGUgdmFs
dWUgYnkgY29weWluZyByYXRoZXIgdGhhbiBpbi1wbGFjZS4KKyAgICAgICAgICAgIC8vIEJ1dCB0
aGVzZSBib3hpbmdzIGFyZSBhbHNvIGNvc3RseSBzbyB0aGlzIHdvdWxkbid0IGJlIGdyZWF0Lgor
ICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFRoZSBzb2x1dGlvbiB3ZSB1c2UgaXMgdG8g
YWx3YXlzIGhhdmUgbm9uLUludDQ4IHVzZXMgb2YgcHJlZGljdGVkIEludDQ4J3MgdXNlCisgICAg
ICAgICAgICAvLyBhbiBpbnRlcnZlbmluZyBJbnQ0OFRvVmFsdWUgbm9kZToKKyAgICAgICAgICAg
IC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NDgKKyAgICAgICAgICAgIC8vIGI6IEFyaXRo
QWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLyB4OiBJbnQ0OFRvVmFsdWUoSW50NDg6
QGEpCisgICAgICAgICAgICAvLyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAeCkKKyAgICAgICAgICAg
IC8vIGQ6IEFyaXRoQWRkKEludDQ4OkBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gTm90ZSB0aGF0IGV2ZW4gaWYgd2UgaGFkIG11bHRpcGxlIG5vbi1pbnQ0OCB1c2VzIG9m
IEBhLCB0aGUgbXVsdGlwbGUKKyAgICAgICAgICAgIC8vIEludDQ4VG9WYWx1ZSdzIHdvdWxkIGdl
dCBDU0UnZCB0b2dldGhlci4gU28gdGhlIGJveGluZyB3b3VsZCBvbmx5IGhhcHBlbiBvbmNlLgor
ICAgICAgICAgICAgLy8gQXQgdGhlIHNhbWUgdGltZSwgQGEgd291bGQgY29udGludWUgdG8gYmUg
cmVwcmVzZW50ZWQgYXMgYSBuYXRpdmUgaW50NDguCisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gQW4gYWx0ZXJuYXRpdmUgd291bGQgaGF2ZSBiZWVuIHRvIGluc2VydCBUb05hdGl2ZUlu
dDQ4IG5vZGVzIG9uIGludDQ4IHVzZXMgb2YKKyAgICAgICAgICAgIC8vIGludDQ4J3MuIFRoaXMg
d291bGQgaGF2ZSBoYW5kbGVkIHRoZSBhYm92ZSBleGFtcGxlIGJ1dCB3b3VsZCBmYWxsIG92ZXIg
Zm9yOgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAg
ICAgICAgLy8gYjogQ2FsbCguLi4sIEBhKQorICAgICAgICAgICAgLy8gYzogQXJpdGhBZGQoQGEs
IC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBCdXQgdGhlIHNvbHV0aW9uIHdl
IHVzZSBoYW5kbGVzIHRoZSBhYm92ZSBncmFjZWZ1bGx5LgorICAgICAgICAgICAgCisgICAgICAg
ICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAg
ICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDgsIEludDQ4VG9WYWx1ZSwKKyAgICAgICAg
ICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBVbnR5
cGVkVXNlKSk7CisgICAgICAgICAgICBlZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBvYnNlcnZlVXNl
S2luZE9uTm9kZTx1c2VLaW5kPihlZGdlLm5vZGUoKSk7CisgICAgICAgIAogICAgICAgICBlZGdl
LnNldFVzZUtpbmQodXNlS2luZCk7CiAgICAgfQogICAgIApAQCAtMTM3OCw3ICsxNTA3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGluamVjdEludDMyVG9Eb3VibGVOb2RlKEVkZ2UmIGVkZ2UsIFVz
ZUtpbmQgdXNlS2luZCA9IE51bWJlclVzZSwgU3BlY3VsYXRpb25EaXJlY3Rpb24gZGlyZWN0aW9u
ID0gQmFja3dhcmRTcGVjdWxhdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y0ludDQ4LCBJbnQzMlRvRG91YmxlLAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJ
bnQ0OEFzRG91YmxlLCBJbnQzMlRvRG91YmxlLAogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+
Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7CiAgICAgICAgIGlmIChk
aXJlY3Rpb24gPT0gRm9yd2FyZFNwZWN1bGF0aW9uKQogICAgICAgICAgICAgcmVzdWx0LT5tZXJn
ZUZsYWdzKE5vZGVFeGl0c0ZvcndhcmQpOwpAQCAtMTQzNCwxMyArMTU2MywyMCBAQCBwcml2YXRl
OgogICAgIGJvb2wgYXR0ZW1wdFRvTWFrZUludGVnZXJBZGQoTm9kZSogbm9kZSkKICAgICB7CiAg
ICAgICAgIEFkZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gbV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1v
ZGUobm9kZSk7Ci0gICAgICAgIGlmIChtb2RlID09IERvbnRTcGVjdWxhdGVJbnQzMikKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1vZGUgIT0gRG9udFNwZWN1bGF0ZUlu
dDMyKSB7CisgICAgICAgICAgICB0cnVuY2F0ZUNvbnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUsIG1v
ZGUpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHRydW5jYXRlQ29uc3Rh
bnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9kZSk7Ci0gICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3Bl
Y3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGJvb2wgYXR0
ZW1wdFRvTWFrZUdldEFycmF5TGVuZ3RoKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDYgKzQxLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IEZsdQogICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWRJ
bnQzMiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAg
IG91dC5wcmludCgiRmx1c2hlZEludDQ4Iik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZs
dXNoZWREb3VibGU6CiAgICAgICAgIG91dC5wcmludCgiRmx1c2hlZERvdWJsZSIpOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1h
dC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zs
dXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogZW51bSBGbHVzaEZvcm1hdCB7CiAgICAgRGVhZEZsdXNoLAog
ICAgIEZsdXNoZWRJbnQzMiwKKyAgICBGbHVzaGVkSW50NDgsCiAgICAgRmx1c2hlZERvdWJsZSwK
ICAgICBGbHVzaGVkQ2VsbCwKICAgICBGbHVzaGVkQm9vbGVhbiwKQEAgLTU1LDYgKzU2LDggQEAg
aW5saW5lIE5vZGVGbGFncyByZXN1bHRGb3IoRmx1c2hGb3JtYXQgZgogICAgICAgICByZXR1cm4g
Tm9kZVJlc3VsdEpTOwogICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICByZXR1cm4gTm9k
ZVJlc3VsdEludDMyOworICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICByZXR1cm4gTm9k
ZVJlc3VsdEludDQ4OwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKICAgICAgICAgcmV0dXJuIE5v
ZGVSZXN1bHROdW1iZXI7CiAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKQEAgLTc0LDYgKzc3LDgg
QEAgaW5saW5lIFVzZUtpbmQgdXNlS2luZEZvcihGbHVzaEZvcm1hdCBmbwogICAgICAgICByZXR1
cm4gQ2VsbFVzZTsKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgcmV0dXJuIEludDMy
VXNlOworICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICByZXR1cm4gTWFjaGluZUludFVz
ZTsKICAgICBjYXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAgIHJldHVybiBOdW1iZXJVc2U7CiAg
ICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR2VuZXJhdGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtODYs
NiArODYsMTkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3Vu
dCwgZ3ByLCBEYXRhRm9ybWF0SW50MzIpOwogICAgIH0KKyAgICB2b2lkIGluaXRJbnQ0OChOb2Rl
KiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHJlZywgRGF0YUZvcm1hdCBmb3JtYXQp
CisgICAgeworICAgICAgICBBU1NFUlQoZm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBmb3Jt
YXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VD
b3VudCwgcmVnLCBmb3JtYXQpOworICAgIH0KKyAgICB2b2lkIGluaXRJbnQ0OChOb2RlKiBub2Rl
LCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIGluaXRHUFIo
bm9kZSwgdXNlQ291bnQsIHJlZywgRGF0YUZvcm1hdEludDQ4KTsKKyAgICB9CisgICAgdm9pZCBp
bml0U3RyaWN0SW50NDgoTm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyByZWcp
CisgICAgeworICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCByZWcsIERhdGFGb3JtYXRT
dHJpY3RJbnQ0OCk7CisgICAgfQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCBpbml0SlNW
YWx1ZShOb2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIGdwciwgRGF0YUZvcm1h
dCBmb3JtYXQgPSBEYXRhRm9ybWF0SlMpCiAgICAgewpAQCAtMTg3LDYgKzIwMCwxMSBAQCBwdWJs
aWM6CiAgICAgLy8gR2V0IHRoZSBmb3JtYXQgb2YgdGhlIHZhbHVlIGFzIGl0IGlzIHNwaWxsZWQg
aW4gdGhlIEpTU3RhY2sgKG9yICdub25lJykuCiAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCgp
IHsgcmV0dXJuIG1fc3BpbGxGb3JtYXQ7IH0KICAgICAKKyAgICBib29sIGlzRm9ybWF0KERhdGFG
b3JtYXQgZXhwZWN0ZWRGb3JtYXQpCisgICAgeworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3Jt
YXQoKSA9PSBleHBlY3RlZEZvcm1hdCB8fCBzcGlsbEZvcm1hdCgpID09IGV4cGVjdGVkRm9ybWF0
OworICAgIH0KKyAgICAKICAgICBib29sIGlzSlNGb3JtYXQoRGF0YUZvcm1hdCBleHBlY3RlZEZv
cm1hdCkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0M6OmlzSlNGb3JtYXQocmVnaXN0ZXJGb3Jt
YXQoKSwgZXhwZWN0ZWRGb3JtYXQpIHx8IEpTQzo6aXNKU0Zvcm1hdChzcGlsbEZvcm1hdCgpLCBl
eHBlY3RlZEZvcm1hdCk7CkBAIC0xOTcsNiArMjE1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGlzSlNGb3JtYXQoRGF0YUZvcm1hdEpTSW50MzIpOwogICAgIH0KICAgICAKKyAgICBib29s
IGlzSW50NDgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzRm9ybWF0KERhdGFGb3JtYXRJbnQ0
OCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNTdHJpY3RJbnQ0OCgpCisgICAgeworICAgICAg
ICByZXR1cm4gaXNGb3JtYXQoRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICB9CisgICAgCiAg
ICAgYm9vbCBpc0pTRG91YmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBpc0pTRm9ybWF0KERh
dGFGb3JtYXRKU0RvdWJsZSk7CkBAIC0zMTQsNiArMzQyLDE5IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERhdGFGb3JtYXRJbnQzMik7CiAgICAgfQorICAg
IHZvaWQgZmlsbEludDQ4KFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwciwg
RGF0YUZvcm1hdCBmb3JtYXQpCisgICAgeworICAgICAgICBBU1NFUlQoZm9ybWF0ID09IERhdGFG
b3JtYXRJbnQ0OCB8fCBmb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAgICAg
ZmlsbEdQUihzdHJlYW0sIGdwciwgZm9ybWF0KTsKKyAgICB9CisgICAgdm9pZCBmaWxsSW50NDgo
VmFyaWFibGVFdmVudFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAg
ZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZvcm1hdEludDQ4KTsKKyAgICB9CisgICAgdm9pZCBm
aWxsU3RyaWN0SW50NDgoVmFyaWFibGVFdmVudFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByKQor
ICAgIHsKKyAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwgRGF0YUZvcm1hdFN0cmljdEludDQ4
KTsKKyAgICB9CiAgICAgdm9pZCBmaWxsQm9vbGVhbihWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJl
YW0sIEdQUlJlZyBncHIpCiAgICAgewogICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRh
Rm9ybWF0Qm9vbGVhbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiwxNCArMjM2LDE0IEBAIHZvaWQgR3JhcGg6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgaWYgKG9wZXJhbmRJc0FyZ3VtZW50
KG9wZXJhbmQpKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiYXJnIiwgb3BlcmFuZFRv
QXJndW1lbnQob3BlcmFuZCksICIoIiwgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcCgqdGhpcywgdmFy
aWFibGVBY2Nlc3NEYXRhKSwgIikiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAiciIsIG9wZXJhbmQsICIoIiwgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcCgqdGhp
cywgdmFyaWFibGVBY2Nlc3NEYXRhKSwgIikiKTsKKyAgICAgICAgICAgIG91dC5wcmludChjb21t
YSwgImxvYyIsIG9wZXJhbmRUb0xvY2FsKG9wZXJhbmQpLCAiKCIsIFZhcmlhYmxlQWNjZXNzRGF0
YUR1bXAoKnRoaXMsIHZhcmlhYmxlQWNjZXNzRGF0YSksICIpIik7CiAgICAgfQogICAgIGlmIChu
b2RlLT5oYXNVbmxpbmtlZExvY2FsKCkpIHsKICAgICAgICAgaW50IG9wZXJhbmQgPSBub2RlLT51
bmxpbmtlZExvY2FsKCk7CiAgICAgICAgIGlmIChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKSkK
ICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImFyZyIsIG9wZXJhbmRUb0FyZ3VtZW50KG9w
ZXJhbmQpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiciIs
IG9wZXJhbmQpOworICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgb3BlcmFuZFRv
TG9jYWwob3BlcmFuZCkpOwogICAgIH0KICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnRCdWZmZXIo
KSkgewogICAgICAgICBvdXQucHJpbnQoY29tbWEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNiArMjMwLDkgQEAgcHVibGlj
OgogICAgIAogICAgIGJvb2wgYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChOb2RlKiBhZGQp
CiAgICAgeworICAgICAgICBpZiAoIWVuYWJsZUludDQ4KCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIAogICAgICAgICBOb2RlKiBsZWZ0ID0gYWRkLT5jaGlsZDEoKS5ub2Rl
KCk7CiAgICAgICAgIE5vZGUqIHJpZ2h0ID0gYWRkLT5jaGlsZDIoKS5ub2RlKCk7CiAKQEAgLTI1
Nyw2ICsyNjAsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQobXVsLT5vcCgpID09
IEFyaXRoTXVsKTsKICAgICAgICAgCisgICAgICAgIGlmICghZW5hYmxlSW50NDgoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIE5vZGUqIGxlZnQgPSBtdWwt
PmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgTm9kZSogcmlnaHQgPSBtdWwtPmNoaWxkMigpLm5v
ZGUoKTsKIApAQCAtMjc0LDYgKzI4MCw4IEBAIHB1YmxpYzoKICAgICBib29sIG5lZ2F0ZVNob3Vs
ZFNwZWN1bGF0ZU1hY2hpbmVJbnQoTm9kZSogbmVnYXRlKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG5lZ2F0ZS0+b3AoKSA9PSBBcml0aE5lZ2F0ZSk7CisgICAgICAgIGlmICghZW5hYmxlSW50NDgo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIG5lZ2F0ZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnRGb3JBcml0aG1ldGljKCkKICAgICAgICAg
ICAgICYmICFoYXNFeGl0U2l0ZShuZWdhdGUsIEludDQ4T3ZlcmZsb3cpCiAgICAgICAgICAgICAm
JiBuZWdhdGUtPmNhblNwZWN1bGF0ZUludDQ4KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24g
MTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMyw4ICszMTMsOCBAQCBib29sIEluUGxhY2VB
YnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUCiAgICAgICAgICAgICAvLyBiZWZvcmUgYW5kIGFm
dGVyIHNldHRpbmcgaXQuCiAgICAgICAgICAgICBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hG
b3JtYXQoKSA9PSBGbHVzaGVkRG91YmxlKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCEoc291
cmNlLm1fdHlwZSAmIH5TcGVjTnVtYmVyKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCEhKHNv
dXJjZS5tX3R5cGUgJiB+U3BlY0RvdWJsZSkgPT0gISEoc291cmNlLm1fdHlwZSAmIFNwZWNJbnQz
MikpOworICAgICAgICAgICAgICAgIEFTU0VSVCghKHNvdXJjZS5tX3R5cGUgJiB+U3BlY0Z1bGxO
dW1iZXIpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoISEoc291cmNlLm1fdHlwZSAmIH5TcGVj
RG91YmxlKSA9PSAhIShzb3VyY2UubV90eXBlICYgU3BlY01hY2hpbmVJbnQpKTsKICAgICAgICAg
ICAgICAgICBpZiAoIShzb3VyY2UubV90eXBlICYgflNwZWNEb3VibGUpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZS5tZXJnZShTcGVjSW50NDhBc0RvdWJsZSk7CiAgICAgICAgICAgICAg
ICAgICAgIHNvdXJjZS5maWx0ZXIoU3BlY0RvdWJsZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsx
MDMsOSBAQCB2b2lkIEpJVENvZGU6OnJlY29uc3RydWN0KAogICAgICAgICBjYXNlIEFscmVhZHlJ
bkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIoZXhl
Yy0+cihvcGVyYW5kKS51bmJveGVkSW50MzIoKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAgICAgICAgICB2YWx1
ZSA9IGpzTnVtYmVyKGV4ZWMtPnIob3BlcmFuZCkudW5ib3hlZEludDQ4KCkpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToK
ICAgICAgICAgICAgIHZhbHVlID0ganNEb3VibGVOdW1iZXIoZXhlYy0+cihvcGVyYW5kKS51bmJv
eGVkRG91YmxlKCkpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDYgKzQ4LDggQEAgaW5saW5lIGJvb2wgYmVsb25nc0luTWluaWZpZWRHcmFwaChOb2RlVAog
ICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgY2FzZSBEb3VibGVBc0ludDMyOgogICAgIGNh
c2UgUGhhbnRvbUFyZ3VtZW50czoKKyAgICBjYXNlIEludDQ4VG9WYWx1ZToKKyAgICBjYXNlIElu
dDQ4VG9Eb3VibGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEFTU0VSVCghcGVybWl0c09TUkJhY2t3YXJkUmV3aXJpbmcodHlwZSkgJiYgIXBlcm1pdHNPU1JG
b3J3YXJkUmV3aXJpbmcodHlwZSkpOwpAQCAtMTA0LDYgKzEwNiw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKICAg
ICAgICAgY2FzZSBEb3VibGVBc0ludDMyOgorICAgICAgICBjYXNlIEludDQ4VG9Eb3VibGU6Cisg
ICAgICAgIGNhc2UgSW50NDhUb1ZhbHVlOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNDEsMTIgKzEyNDEsMTIg
QEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7
CisgICAgICAgIHJldHVybiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwog
ICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZU51bWJlckV4cGVjdGluZ0RlZmlu
ZWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdE
ZWZpbmVkKHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0Z1bGxOdW1iZXJTcGVjdWxh
dGlvbkV4cGVjdGluZ0RlZmluZWQocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgYm9v
bCBzaG91bGRTcGVjdWxhdGVCb29sZWFuKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOSBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVmaW5lIE5vZGVSZXN1bHRKUyAgICAg
ICAgICAgICAgICAgICAgIDB4MDAwMQogI2RlZmluZSBOb2RlUmVzdWx0TnVtYmVyICAgICAgICAg
ICAgICAgICAweDAwMDIKICNkZWZpbmUgTm9kZVJlc3VsdEludDMyICAgICAgICAgICAgICAgICAg
MHgwMDAzCi0jZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4MDAwNAot
I2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDUKKyNkZWZpbmUg
Tm9kZVJlc3VsdEludDQ4ICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIE5vZGVSZXN1
bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFn
ZSAgICAgICAgICAgICAgICAweDAwMDYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAjZGVmaW5lIE5vZGVNdXN0R2VuZXJhdGUgICAgICAgICAgICAgICAgIDB4MDAwOCAvLyBzZXQg
b24gbm9kZXMgdGhhdCBoYXZlIHNpZGUgZWZmZWN0cywgYW5kIG1heSBub3QgdHJpdmlhbGx5IGJl
IHJlbW92ZWQgYnkgRENFLgogI2RlZmluZSBOb2RlSGFzVmFyQXJncyAgICAgICAgICAgICAgICAg
ICAweDAwMTAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJl
dmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSW50MzJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikg
XAogICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRlIHRoYXQgYSBkb3VibGUgdmFsdWUgaXMgYWN0dWFs
bHkgYW4gaW50ZWdlci4gKi9cCiAgICAgbWFjcm8oRG91YmxlQXNJbnQzMiwgTm9kZVJlc3VsdElu
dDMyIHwgTm9kZUV4aXRzRm9yd2FyZCkgXAorICAgIC8qIFVzZWQgdG8gc2VwYXJhdGUgcmVwcmVz
ZW50YXRpb24gYW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gb2YgSW50NDgncyByZXByZXNlbnRlZCAq
L1wKKyAgICAvKiBhcyB2YWx1ZXMuICovXAorICAgIG1hY3JvKEludDQ4VG9WYWx1ZSwgTm9kZVJl
c3VsdEpTKSBcCisgICAgbWFjcm8oSW50NDhUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikgXAog
ICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAqL1wKICAgICBt
YWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlciB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAg
LTM1Niw2ICszNjAsMTcgQEAgaW5saW5lIHVuc2lnbmVkIGZvcndhcmRSZXdpcmluZ1NlbGVjdGlv
bgogICAgICAgICAvLyBUaGlzIGxvc2VzIGluZm9ybWF0aW9uLiBPbmx5IHVzZSBpdCBpZiB0aGVy
ZSBhcmUgbm8gYmV0dGVyIGFsdGVybmF0aXZlcy4KICAgICAgICAgcmV0dXJuIDI1OwogICAgICAg
ICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZToKKyAgICAgICAgLy8gTG9zZXMgbm8gaW5mb3JtYXRp
b24uIEl0IGp1c3QgYm94ZXMgdGhlIHZhbHVlLCB3aGljaCBpcyB3aGF0IE9TUiB3YW50cworICAg
ICAgICAvLyB0byBkbyBhbnl3YXkuCisgICAgICAgIHJldHVybiAxMDA7CisgICAgICAgIAorICAg
IGNhc2UgSW50NDhUb0RvdWJsZToKKyAgICAgICAgLy8gVGhpcyBpcyBsaWtlIEludDMyVG9Eb3Vi
bGU7IHdlIGNhbiB1c2UgaXQgYmVjYXVzZSBpdCBnaXZlcyBhIHNlbWFudGljYWxseQorICAgICAg
ICAvLyBlcXVpdmFsZW50IHZhbHVlIGJ1dCB0aGF0IHZhbHVlIG1heSBiZSBhbiBpbnQzMiBpbiBh
IGRvdWJsZSwgc28gd2UnZAorICAgICAgICAvLyByYXRoZXIgbm90IGlmIHdlIGNhbiBhdm9pZCBp
dC4KKyAgICAgICAgcmV0dXJuIDc1OworICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5NSw2ICsxOTUsOCBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29u
c3QgCiAgICAgICAgIGNhc2UgSW5HUFI6CiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6
CiAgICAgICAgIGNhc2UgVUludDMySW5HUFI6CisgICAgICAgIGNhc2UgVW5ib3hlZEludDQ4SW5H
UFI6CisgICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDQ4SW5HUFI6CiAgICAgICAgICAgICBt
X2ppdC5zdG9yZTY0KHJlY292ZXJ5LmdwcigpLCBzY3JhdGNoICsgaW5kZXgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTIzNSwxMiArMjM3LDE1IEBAIHZvaWQgT1NSRXhp
dENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpT
U3RhY2s6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNh
c2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIEludDQ4RGlzcGxhY2Vk
SW5KU1N0YWNrOgorICAgICAgICBjYXNlIFN0cmljdEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrOgog
ICAgICAgICAgICAgbV9qaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihyZWNv
dmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1f
aml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1Vu
Ym94ZWRJbnQzMjoKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91Ymxl
OgorICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0ODoKICAgICAgICAg
ICAgIG1faml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCksIEdQ
UkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAs
IHNjcmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3NCwzMyArMjc5LDM3
IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAg
IG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBj
YXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU6Ci0gICAgICAgIGNhc2UgSW5GUFI6
Ci0gICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgbV9q
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShHUFJJbmZvOjpy
ZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5ib3hEb3VibGUoRlBS
SW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgY2FzZSBVbmJveGVkSW50NDhJbkdQUjoKKyAg
ICAgICAgY2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG1faml0Lmxv
YWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0
LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgbV9qaXQuYm94SW50NDgoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86
OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBt
X2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
b3BlcmFuZCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0OERpc3Bs
YWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgs
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LmJveEludDQ4KEdQUkluZm86OnJl
Z1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwog
ICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJz
OjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Ci0gICAgICAgIGNhc2UgVUludDMySW5HUFI6IHsKKyAgICAgICAgY2FzZSBVSW50MzJJbkdQUjoK
ICAgICAgICAgICAgIG1faml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1Qw
KTsKICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQUkluZm86OnJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgcG9zaXRp
dmUgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okdy
ZWF0ZXJUaGFuT3JFcXVhbCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwgQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwotICAgICAgICAgICAgbV9qaXQuY29udmVydElu
dDMyVG9Eb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAg
ICAgbV9qaXQuYWRkRG91YmxlKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6QWJz
b2x1dGVBZGRyZXNzKCZBc3NlbWJseUhlbHBlcnM6OnR3b1RvVGhlMzIpLAotICAgICAgICAgICAg
ICAgIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgbV9qaXQuYm94SW50NDgoR1BSSW5m
bzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdU
MCk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgorICAg
ICAgICBjYXNlIEluRlBSOgorICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoK
KyAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNj
cmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRE
b3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAgICAgbV9q
aXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotICAgICAgICAg
ICAgcG9zaXRpdmUubGluaygmbV9qaXQpOwotICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGRv
bmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdU
MCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBDb25zdGFudDoKICAg
ICAgICAgICAgIG1faml0LnN0b3JlNjQoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDE0ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
IAotc3RhdGljIENTdHJpbmcgc2hvcnRPcGVyYW5kc0R1bXAoY29uc3QgT3BlcmFuZHM8VmFsdWVS
ZWNvdmVyeT4mIG9wZXJhbmRzKQotewotICAgIER1bXBDb250ZXh0IGNvbnRleHQ7Ci0gICAgU3Ry
aW5nUHJpbnRTdHJlYW0gb3V0OwotICAgIG91dC5wcmludChpbkNvbnRleHQob3BlcmFuZHMsICZj
b250ZXh0KSk7Ci0gICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKLX0KLQogZXh0ZXJuICJDIiB7
CiAKIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTEzLDcgKzEwNSw3
IEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgKCJE
RkcgT1NSIGV4aXQgIyV1ICglcywgJXMpIGZyb20gJXMsIHdpdGggb3BlcmFuZHMgPSAlcyIsCiAg
ICAgICAgICAgICAgICAgZXhpdEluZGV4LCB0b0NTdHJpbmcoZXhpdC5tX2NvZGVPcmlnaW4pLmRh
dGEoKSwKICAgICAgICAgICAgICAgICBleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgdG9D
U3RyaW5nKCpjb2RlQmxvY2spLmRhdGEoKSwKLSAgICAgICAgICAgICAgICBzaG9ydE9wZXJhbmRz
RHVtcChvcGVyYW5kcykuZGF0YSgpKSk7CisgICAgICAgICAgICAgICAgdG9DU3RyaW5nKGlnbm9y
aW5nQ29udGV4dDxEdW1wQ29udGV4dD4ob3BlcmFuZHMpKS5kYXRhKCkpKTsKICAgICB9CiAgICAg
CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICAKICAg
ICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkRG91YmxlVHlwZUZvclByZWRpY3Rpb24oU3BlY3Vs
YXRlZFR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBpZiAoIWlzTnVtYmVyU3BlY3VsYXRpb24o
dmFsdWUpKQorICAgICAgICBpZiAoIWlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKICAg
ICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlOwogICAgICAgICBpZiAodmFsdWUgJiBTcGVjRG91
YmxlTmFOKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGU7CkBAIC0xNDksOCArMTQ5LDEw
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldExv
Y2FsOiB7Ci0gICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0
YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdGlvbigpOworICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHZhcmlhYmxl
LT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBpZiAodmFyaWFibGUtPnNob3VsZE5ldmVyVW5i
b3goKSAmJiAocHJlZGljdGlvbiAmIFNwZWNJbnQ0OCkpCisgICAgICAgICAgICAgICAgcHJlZGlj
dGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0ludDQ4QXNEb3VibGUpICYgflNwZWNJbnQ0ODsKICAg
ICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDMsNyAr
MjA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50MzIo
bm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjTnVtYmVyKTsKKyAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjEyLDE0ICsyMTQsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0ID0gbm9kZS0+Y2hpbGQyKCktPnByZWRp
Y3Rpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsK
LSAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQo
bGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocmlnaHQpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5l
ZChsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocmlnaHQp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShu
b2RlKSAhPSBEb250U3BlY3VsYXRlSW50MzIpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwogICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NDgp
OwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihzcGVjdWxhdGVkRG91YmxlVHlwZUZvclByZWRpY3Rpb25z
KGxlZnQsIHJpZ2h0KSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKGxlZnQgJiBTcGVj
TnVtYmVyKSB8fCAhKHJpZ2h0ICYgU3BlY051bWJlcikpIHsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCEobGVmdCAmIFNwZWNGdWxsTnVtYmVyKSB8fCAhKHJpZ2h0ICYgU3BlY0Z1bGxOdW1i
ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIGxlZnQgb3IgcmlnaHQgaXMgZGVmaW5pdGVs
eSBzb21ldGhpbmcgb3RoZXIgdGhhbiBhIG51bWJlci4KICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZyk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlCkBAIC0zNjgsMTAgKzM3MCwyMCBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBHZXRCeVZhbDogeworICAgICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+cHJlZGlj
dGlvbigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFub2RlLT5n
ZXRIZWFwUHJlZGljdGlvbigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJB
cnJheSgpCiAgICAgICAgICAgICAgICAgfHwgbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUZsb2F0NjRBcnJheSgpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0
aW9uKFNwZWNEb3VibGUpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgZWxzZSBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkp
KQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50
MzIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDQ4KTsKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUtPmdldEhlYXBQcmVkaWN0
aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU2Niw2ICs1NzgsOCBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrV2F0Y2hkb2dUaW1lcjoKICAgICAgICAgY2Fz
ZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBMb29wSGludDoKKyAgICAgICAgY2FzZSBJbnQ0
OFRvVmFsdWU6CisgICAgICAgIGNhc2UgSW50NDhUb0RvdWJsZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQg
YWxyZWFkeSBoYXMgYSBwcmVkaWN0aW9uLgpAQCAtNjQwLDggKzY1NCw5IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBEb3VibGVCYWxsb3QgYmFsbG90OwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdE
ZWZpbmVkKGxlZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHJpZ2h0
KQotICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludDMyKG5v
ZGUpKQorICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVm
aW5lZChsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocmln
aHQpCisgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50MzIo
bm9kZSkKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNo
aW5lSW50KG5vZGUpKQogICAgICAgICAgICAgICAgIGJhbGxvdCA9IFZvdGVEb3VibGU7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZVZhbHVlOwpAQCAtNjU3
LDggKzY3Miw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBEb3Vi
bGVCYWxsb3QgYmFsbG90OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzTnVt
YmVyU3BlY3VsYXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKLSAgICAg
ICAgICAgICAgICAmJiAhbV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlKSkKKyAg
ICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc0Z1bGxOdW1i
ZXJTcGVjdWxhdGlvbihyaWdodCkKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5tdWxTaG91
bGRTcGVjdWxhdGVJbnQzMihub2RlKQorICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLm11bFNo
b3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpCiAgICAgICAgICAgICAgICAgYmFsbG90ID0g
Vm90ZURvdWJsZTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBW
b3RlVmFsdWU7CkBAIC02NzcsNyArNjkzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIERvdWJsZUJhbGxvdCBiYWxsb3Q7CiAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc051bWJlclNwZWN1bGF0
aW9uKHJpZ2h0KQorICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGxlZnQp
ICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQogICAgICAgICAgICAgICAgICYmICEo
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSAmJiBub2RlLT5jYW5TcGVjdWxhdGVJbnQzMigp
KSkKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlRG91YmxlOwogICAgICAgICAgICAgZWxz
ZQpAQCAtNzA2LDcgKzcyMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uID0gbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKTsKICAgICAgICAgICAg
IGlmIChpc0RvdWJsZVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAgICAgIG5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT52b3RlKFZvdGVEb3VibGUpOwotICAgICAgICAgICAg
ZWxzZSBpZiAoIWlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikgfHwgaXNJbnQzMlNwZWN1
bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgZWxzZSBpZiAoCisgICAgICAgICAgICAg
ICAgIWlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pCisgICAgICAgICAgICAgICAg
fHwgaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IGlzTWFjaGluZUludFNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAgICAgIG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT52b3RlKFZvdGVWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlz
aW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2Fz
ZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBOb3RDZWxsVXNlOgogICAg
ICAgICBjYXNlIE90aGVyVXNlOgorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgpA
QCAtNjksNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgICAgIGlmIChtX3N0YXRl
LmZvck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNOdW1iZXIpCisgICAgICAgICAgICBpZiAobV9z
dGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikKICAgICAgICAgICAg
ICAgICBtX3Jlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
CkBAIC0yMzksNiArMjQwLDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdAogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBjYXNlIENoZWNrVGllclVw
QW5kT1NSRW50ZXI6CiAgICAgY2FzZSBMb29wSGludDoKKyAgICBjYXNlIEludDQ4VG9Eb3VibGU6
CisgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAK
ICAgICBjYXNlIEdldEJ5VmFsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
aWxlbnRSZWdpc3RlclNhdmVQbGFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgJKHJldmlzaW9uIDE1NTkwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIGVudW0gU2lsZW50U3BpbGxBY3Rpb24gewog
ZW51bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBEb05vdGhpbmdGb3JGaWxsLAogICAgIFNldElu
dDMyQ29uc3RhbnQsCisgICAgU2V0SW50NDhDb25zdGFudCwKKyAgICBTZXRTdHJpY3RJbnQ0OENv
bnN0YW50LAogICAgIFNldEJvb2xlYW5Db25zdGFudCwKICAgICBTZXRDZWxsQ29uc3RhbnQsCiAg
ICAgU2V0VHJ1c3RlZEpTQ29uc3RhbnQsCkBAIC02MSw4ICs2MywxMiBAQCBlbnVtIFNpbGVudEZp
bGxBY3Rpb24gewogICAgIExvYWQzMlRhZywKICAgICBMb2FkMzJQYXlsb2FkLAogICAgIExvYWQz
MlBheWxvYWRCb3hJbnQsCisgICAgTG9hZDMyUGF5bG9hZENvbnZlcnRUb0ludDQ4LAorICAgIExv
YWQzMlBheWxvYWRTaWduRXh0ZW5kLAogICAgIExvYWRQdHIsCiAgICAgTG9hZDY0LAorICAgIExv
YWQ2NFNoaWZ0UmlnaHQxNiwKKyAgICBMb2FkNjRTaGlmdExlZnQxNiwKICAgICBMb2FkRG91Ymxl
LAogICAgIExvYWREb3VibGVCb3hEb3VibGUsCiAgICAgTG9hZEpTVW5ib3hEb3VibGUKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODg4LDggKzg4OCw4
IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICNlbmRpZgogICAg
IEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwogICAgIFNwZWN1
bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7Ci0gICAgQVNTRVJUKGVkZ2UudXNlS2luZCgp
ICE9IEtub3duTnVtYmVyVXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNOdW1iZXIpKTsKLSAg
ICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY051bWJlcik7CisgICAgQVNTRVJUKGVk
Z2UudXNlS2luZCgpICE9IEtub3duTnVtYmVyVXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNG
dWxsTnVtYmVyKSk7CisgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNGdWxsTnVt
YmVyKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRnZS0+dmlydHVh
bFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zy
b21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKIApAQCAtOTI4LDcgKzkyOCw3IEBA
IEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKIAogICAgICAgICAgICAg
aWYgKHNwaWxsRm9ybWF0ICE9IERhdGFGb3JtYXRKU0ludDMyICYmIHNwaWxsRm9ybWF0ICE9IERh
dGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50
ZWdlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6
OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcp
KTsKLSAgICAgICAgICAgICAgICBpZiAodHlwZSAmIH5TcGVjTnVtYmVyKQorICAgICAgICAgICAg
ICAgIGlmICh0eXBlICYgflNwZWNGdWxsTnVtYmVyKQogICAgICAgICAgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSksIGVkZ2UsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKICAgICAgICAgICAgICAgICBtX2ppdC5s
b2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGZwcik7
CiAgICAgICAgICAgICAgICAgaGFzVW5ib3hlZERvdWJsZSA9IG1faml0Lmp1bXAoKTsKQEAgLTk2
Myw3ICs5NjMsNyBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAg
ICAgICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdEpTSW50MzIpIHsK
ICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgICAg
ICAgICAgaWYgKHR5cGUgJiB+U3BlY051bWJlcikKKyAgICAgICAgICAgIGlmICh0eXBlICYgflNw
ZWNGdWxsTnVtYmVyKQogICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
TG93ZXN0VGFnKSkpOwogICAgICAgICAgICAgdW5ib3hEb3VibGUodGFnR1BSLCBwYXlsb2FkR1BS
LCBmcHIsIHNjcmF0Y2guZnByKCkpOwogICAgICAgICAgICAgaGFzVW5ib3hlZERvdWJsZSA9IG1f
aml0Lmp1bXAoKTsKQEAgLTI5MjMsNyArMjkyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZhbHVlLmZw
cigpOwogCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNGdWxsUmVhbE51bWJlciwKICAg
ICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5v
dEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlRlBSLCB2YWx1ZUZQUikpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQ
UiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgc3RvcmFnZUxlbmd0aEdQUik7
CkBAIC0zMTg3LDcgKzMxODcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIAogICAgICAgICBvcDEudXNlKCk7CiAgICAgICAgIAotICAgICAgICBp
ZiAoIShtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH4oU3BlY051bWJl
ciB8IFNwZWNCb29sZWFuKSkpIHsKKyAgICAgICAgaWYgKCEobV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNGdWxsTnVtYmVyIHwgU3BlY0Jvb2xlYW4pKSkgewog
ICAgICAgICAgICAgbV9qaXQubW92ZShvcDFUYWdHUFIsIHJlc3VsdFRhZ0dQUik7CiAgICAgICAg
ICAgICBtX2ppdC5tb3ZlKG9wMVBheWxvYWRHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAg
ICB9IGVsc2UgewpAQCAtMzI4OSw3ICszMjg5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kIG9wZXJhbmQodGhpcywgdXNlKTsKICAgICAgICAgICAgICAgICAgICAgRlBSUmVnIG9wRlBS
ID0gb3BlcmFuZC5mcHIoKTsKICAgICAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0g
ICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNSZWFsTnVtYmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVjRnVsbFJl
YWxOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIG9wRlBSLCBvcEZQUikpOwog
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUob3BGUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihkb3VibGUpICogb3BlcmFu
ZElkeCkpOwpAQCAtMzM1NCw3ICszMzU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3Bl
cmFuZCh0aGlzLCB1c2UpOwogICAgICAgICAgICAgICAgIEZQUlJlZyBvcEZQUiA9IG9wZXJhbmQu
ZnByKCk7CiAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFs
T3JVbm9yZGVyZWQsIG9wRlBSLCBvcEZQUikpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIG1faml0LnN0b3JlRG91YmxlKG9wRlBSLCByZWludGVycHJldF9jYXN0PGNoYXIqPihi
dWZmZXIgKyBvcGVyYW5kSWR4KSk7CkBAIC00Nzk3LDYgKzQ3OTcsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoK
ICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9T
UkVudGVyOgorICAgIGNhc2UgSW50NDhUb0RvdWJsZToKKyAgICBjYXNlIEludDQ4VG9WYWx1ZToK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCwy
OSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKICNpZiBVU0UoSlNWQUxVRTY0
KQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpib3hJbnQ0OChHUFJSZWcgc291cmNlR1BSLCBHUFJS
ZWcgdGFyZ2V0R1BSLCBEYXRhRm9ybWF0IGZvcm1hdCkKK3sKKyAgICBHUFJSZWcgdGVtcEdQUjsK
KyAgICBpZiAoc291cmNlR1BSID09IHRhcmdldEdQUikKKyAgICAgICAgdGVtcEdQUiA9IGFsbG9j
YXRlKCk7CisgICAgZWxzZQorICAgICAgICB0ZW1wR1BSID0gdGFyZ2V0R1BSOworICAgIAorICAg
IEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOworCisgICAgaWYgKGZvcm1hdCA9PSBEYXRhRm9y
bWF0SW50NDgpCisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHNvdXJj
ZUdQUik7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoZm9ybWF0ID09IERhdGFGb3JtYXRTdHJp
Y3RJbnQ0OCk7CisgICAgCisgICAgbV9qaXQuYm94SW50NDgoc291cmNlR1BSLCB0YXJnZXRHUFIs
IHRlbXBHUFIsIGZwcik7CisgICAgCisgICAgaWYgKHRlbXBHUFIgIT0gdGFyZ2V0R1BSKQorICAg
ICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgCisgICAgdW5sb2NrKGZwcik7Cit9CisKIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogewogICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKQEAgLTY5
LDExICs5MiwyMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5m
by5zcGlsbEZvcm1hdCgpOwogICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxS
ZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQzMikgeworICAgICAgICAgICAgc3dpdGNoIChzcGlsbEZvcm1hdCkg
eworICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6IHsKICAgICAgICAgICAgICAgICBt
X2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3By
KTsKICAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3RlciwgZ3ByKTsKICAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFGb3JtYXRKU0lu
dDMyOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRGF0YUZvcm1hdElu
dDQ4OgorICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBib3hJbnQ0OChncHIsIGdwciwgc3BpbGxGb3Jt
YXQpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIG1faml0Lmxv
YWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogICAg
ICAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gYm94IHRoZSBkb3VibGUsIHNpbmNlIHdlIHdhbnQg
YSBKU1ZhbHVlLgpAQCAtODEsNiArMTE1LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
SlNWYWx1ZShFZGdlIAogICAgICAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFGb3Jt
YXRKU0RvdWJsZTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgq
bV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwogICAgICAgICB9CkBAIC0xMTMsNiArMTQ4LDE2
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKIAogICAgICAgICBy
ZXR1cm4gZ3ByOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6Cisg
ICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGlu
Zm8uZ3ByKCk7CisgICAgICAgIGxvY2soZ3ByKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IGFsbG9jYXRlKCk7CisgICAgICAgIGJveEludDQ4KGdwciwgcmVzdWx0R1BSLCBpbmZvLnJlZ2lz
dGVyRm9ybWF0KCkpOworICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dEdQUjsKKyAgICB9CiAKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgogICAgICAgICAvLyBObyBy
ZXRhZyByZXF1aXJlZCBvbiBKU1ZBTFVFNjQhCkBAIC03NjgsNyArODEzLDcgQEAgR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICAKICAgICAgICAgRGF0YUZv
cm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgCi0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3Jt
YXQgPT0gRGF0YUZvcm1hdEludDMyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9y
bWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIgfHwg
c3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3Jt
YXRTdHJpY3RJbnQ0OCk7CiAgICAgICAgIAogICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmly
dHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAgIApAQCAtNzg5LDYgKzgz
NCwzNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAg
ICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQzMjsKICAgICAgICAgICAgIHJldHVy
biBncHI7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJ
bnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAg
ICAgIC8vIEdlbmVyYWxseSwgdGhpcyBjYW4gb25seSBoYXBwZW4gaWYgd2UndmUgYWxyZWFkeSBw
cm92ZWQgdGhhdCB0aGUKKyAgICAgICAgICAgIC8vIHZhbHVlIGlzIGFuIGludDMyLiBUaGF0J3Mg
YmVjYXVzZSBpZiBhIHZhbHVlIG9yaWdpbmF0ZWQgYXMgYSBKU1ZhbHVlCisgICAgICAgICAgICAv
LyB0aGVuIHdlIHdvdWxkIHNwZWN1bGF0ZSB0aGF0IGl0J3MgYW4gaW50MzIgYmVmb3JlIHJlcHJl
c2VudGluZyBpdCBhcworICAgICAgICAgICAgLy8gYW4gaW50NDguIE90aGVyd2lzZSwgaWYgd2Ug
a25vd2luZ2x5IHByb2R1Y2VkIGFuIGludDQ4LCB0aGVuIHdlIHdvdWxkCisgICAgICAgICAgICAv
LyBiZSBib3hpbmcgaXQgaW50byBhIHZhbHVlIHVzaW5nIEludDQ4VG9WYWx1ZS4gVGhpcyBhc3Nl
cnRpb24gaXMgdmFsaWQKKyAgICAgICAgICAgIC8vIG9ubHkgYmVjYXVzZSBJbnQ0OCBpcyBzb21l
dGhpbmcgdGhhdCB3ZSBpbnRyb2R1Y2UgYXQgcHJlZGljdGlvbiB0aW1lLgorICAgICAgICAgICAg
Ly8gSG93ZXZlcjogd2UgbWF5IGhhdmUgYW4gaW50MzItcHJvZHVjaW5nIG5vZGUgcmVwbGFjZWQg
YnkgYW4KKyAgICAgICAgICAgIC8vIGludDQ4LXByb2R1Y2luZyBub2RlIGR1ZSB0byBDU0UuIFNv
IHdlIG11c3QgZG8gYSBjaGVjay4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAm
IH5TcGVjTWFjaGluZUludCkpOworICAgICAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NDgpIHsK
KyAgICAgICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICAg
ICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoZ3ByLCB0ZW1wKTsKKyAgICAgICAgICAgICAgICAv
LyBDdXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24g
aGVyZS4gOi0vCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAg
ICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAg
bV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBncHIsIHRlbXApKTsKKyAg
ICAgICAgICAgICAgICB1bmxvY2sodGVtcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IGdwcik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2
NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAg
ICAgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAg
ICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoZ3ByLCBncHIpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaW5mby5maWxsSW50MzIoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAg
ICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOworICAgICAgICAgICAgcmV0dXJuIGdw
cjsKKyAgICAgICAgfQogICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKIAogICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUs
IGFuZCBmYWxsIHRocm91Z2guCkBAIC03OTcsNiArODcyLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgIH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIFNwZWNJbnQ0OCkpOwogICAgICAgICAv
LyBDaGVjayB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlci4KICAgICAgICAgR1BSUmVnIGdwciA9IGlu
Zm8uZ3ByKCk7CiAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CkBAIC04NDMsNiArOTE5LDM1IEBA
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgcmV0dXJu
Rm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwogICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0KKyAg
ICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6CisgICAgY2FzZSBEYXRhRm9y
bWF0SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyByZXN1bHQ7CisgICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgeworICAgICAg
ICAgICAgcmVzdWx0ID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCBy
ZXN1bHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9jayhncHIpOworICAgICAg
ICAgICAgaW5mby5maWxsSW50MzIoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmVzdWx0
ID0gZ3ByOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIH5TcGVj
TWFjaGluZUludCkpOworICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFG
b3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiks
IHJlc3VsdCk7CisgICAgICAgIGlmICh0eXBlICYgU3BlY0ludDQ4KSB7CisgICAgICAgICAgICBH
UFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihyZXN1bHQsIHRlbXApOworICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBjYW4ndCBz
dXBwbHkgdmFsdWUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGhlcmUuIDotLworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncygp
LCAwLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgcmVzdWx0LCB0ZW1wKSk7CisgICAgICAgICAgICB1bmxvY2sodGVtcCk7CisgICAgICAg
IH0KKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIocmVzdWx0LCByZXN1bHQpOworICAg
ICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CisgICAgICAgIHJldHVybiBncHI7
CisgICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1h
dEpTRG91YmxlOiB7CkBAIC04ODUsNiArOTkwLDE4MCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NDgoRWRnZSBlZGdlLCBEYXRhRm9ybWF0IGRlc2ly
ZWRGb3JtYXQpCit7CisgICAgQVNTRVJUKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4
IHx8IGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICBBYnN0cmFj
dFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKKyAgICBTcGVjdWxhdGVkVHlw
ZSB0eXBlID0gdmFsdWUubV90eXBlOworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBT
cGVjTWFjaGluZUludCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVk
Z2UtPnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJh
dGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisKKyAgICBzd2l0
Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgeworICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsK
KyAgICAgICAgaWYgKChlZGdlLT5oYXNDb25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChl
ZGdlLm5vZGUoKSkuaXNNYWNoaW5lSW50KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRh
Rm9ybWF0RG91YmxlKSB7CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlv
bihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgICAgICByZXR1cm4gYWxs
b2NhdGUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9j
YXRlKCk7CisKKyAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAg
IEpTVmFsdWUganNWYWx1ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAg
ICAgICAgIEFTU0VSVChqc1ZhbHVlLmlzTWFjaGluZUludCgpKTsKKyAgICAgICAgICAgIG1fZ3By
cy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7CisgICAg
ICAgICAgICBpbnQ2NF90IHZhbHVlID0ganNWYWx1ZS5hc01hY2hpbmVJbnQoKTsKKyAgICAgICAg
ICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA9IHZhbHVlIDw8IDE2OworICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6SW1tNjQodmFsdWUpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsR1BSKCptX3N0
cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNw
aWxsRm9ybWF0KCk7CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3Jt
YXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMiB8fCBz
cGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1h
dFN0cmljdEludDQ4KTsKKyAgICAgICAgCisgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0
dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKKyAgICAgICAgCisgICAgICAgIGlmIChz
cGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SlNJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9y
bWF0SW50MzIpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGtub3cgdGhpcyB3YXMgc3BpbGxlZCBh
cyBhbiBpbnRlZ2VyIHdlIGNhbiBmaWxsIHdpdGhvdXQgY2hlY2tpbmcuCisgICAgICAgICAgICBt
X2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3By
KTsKKyAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKGdwciwgZ3ByKTsKKyAgICAg
ICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAg
ICAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9qaXQu
bHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbElu
dDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1h
dCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAg
ICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAg
ICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAg
ICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OCgqbV9zdHJlYW0sIGdwcik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzcGlsbEZv
cm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgICAgICAgICAgbV9qaXQubHNo
aWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEludDQ4
KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAg
ICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIGdwcik7CisKKyAgICAgICAgLy8gRmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdo
LgorICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNJ
bnQzMik7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKKyAgICB9CisKKyAgICBjYXNlIERh
dGFGb3JtYXRKUzogeworICAgICAgICAvLyBDaGVjayB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlci4g
Tm90ZSB0aGF0IHdlIHdvdWxkICpsaWtlKiB0byB1bmJveCBhbiBJbnQ0OAorICAgICAgICAvLyBh
dCB0aGlzIHBvaW50IGJ1dCB0aGlzIGlzIHRvbyBjb3N0bHkuIFdlIG9ubHkgKnByb3ZlKiB0aGF0
IHRoaXMgaXMgYW4gSW50NDgKKyAgICAgICAgLy8gZXZlbiB0aG91Z2ggd2UgY2hlY2sgaWYgaXQn
cyBhbiBpbnQzMi4KKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyByZXN1bHQ7CisgICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgeworICAgICAg
ICAgICAgcmVzdWx0ID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCBy
ZXN1bHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IGdwcjsKKyAgICAgICAgfQorICAgICAgICBpZiAodHlwZSAm
IH5TcGVjSW50MzIpCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVSZWdzKHJlc3VsdCksIGVkZ2UsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxv
dywgcmVzdWx0LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgaWYg
KHJlc3VsdCA9PSBncHIpIC8vIFRoZSBub3QtYWxyZWFkeS1sb2NrZWQsIHNvIGZpbGwgaW4tcGxh
Y2UsIGNhc2UuCisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9zdHJlYW0sIGdwciwgZGVz
aXJlZEZvcm1hdCk7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVz
dWx0KTsKKyAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAg
ICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKKyAg
ICBjYXNlIERhdGFGb3JtYXRKU0ludDMyOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdw
cigpOworICAgICAgICBHUFJSZWcgcmVzdWx0OworICAgICAgICBpZiAobV9ncHJzLmlzTG9ja2Vk
KGdwcikpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBt
X2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1f
Z3Bycy5sb2NrKGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9zdHJlYW0sIGdw
ciwgZGVzaXJlZEZvcm1hdCk7CisgICAgICAgICAgICByZXN1bHQgPSBncHI7CisgICAgICAgIH0K
KyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0LCByZXN1bHQpOworICAgICAg
ICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICBtX2pp
dC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAg
IEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBib29sIHdhc0xvY2tlZCA9IG1fZ3By
cy5pc0xvY2tlZChncHIpOworICAgICAgICBsb2NrKGdwcik7CisgICAgICAgIGlmIChkZXNpcmVk
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgICAgIHJldHVybiBncHI7
CisgICAgICAgIGlmICh3YXNMb2NrZWQpIHsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHQgPSBh
bGxvY2F0ZSgpOworICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAg
ICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGdwciA9IHJlc3VsdDsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OCgqbV9zdHJlYW0sIGdwcik7Cisg
ICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7CisgICAgICAgIHJl
dHVybiBncHI7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODogewor
ICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgYm9vbCB3YXNMb2NrZWQg
PSBtX2dwcnMuaXNMb2NrZWQoZ3ByKTsKKyAgICAgICAgbG9jayhncHIpOworICAgICAgICBpZiAo
ZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICByZXR1cm4gZ3By
OworICAgICAgICBpZiAod2FzTG9ja2VkKSB7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0ID0g
YWxsb2NhdGUoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAg
ICAgICAgdW5sb2NrKGdwcik7CisgICAgICAgICAgICBncHIgPSByZXN1bHQ7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAg
ICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICByZXR1cm4g
Z3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKKyAgICBjYXNlIERhdGFG
b3JtYXRKU0RvdWJsZToKKyAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAg
ICAgICAgIEpTVmFsdWUganNWYWx1ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsK
KyAgICAgICAgICAgIGlmIChqc1ZhbHVlLmlzTWFjaGluZUludCgpKSB7CisgICAgICAgICAgICAg
ICAgaW50NjRfdCB2YWx1ZSA9IGpzVmFsdWUuYXNNYWNoaW5lSW50KCk7CisgICAgICAgICAgICAg
ICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSA9IHZhbHVlIDw8IDE2OworICAgICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBh
bGxvY2F0ZSgpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6Oklt
bTY0KHZhbHVlKSwgZ3ByKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CisgICAg
Y2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CisgICAg
Y2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOiB7CisgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZl
RXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAgICAgcmV0dXJu
IGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIElu
dmFsaWRHUFJSZWc7CisgICAgfQorfQorCiBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVEb3VibGUoRWRnZSBlZGdlKQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
QEAgLTg5Miw4ICsxMTcxLDggQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
RG91YgogI2VuZGlmCiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUo
ZWRnZSk7CiAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKLSAgICBBU1NF
UlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+
U3BlY051bWJlcikpOwotICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjTnVtYmVy
KTsKKyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwgISh2YWx1
ZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpKTsKKyAgICBtX2ludGVycHJldGVyLmZpbHRlcih2
YWx1ZSwgU3BlY0Z1bGxOdW1iZXIpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9
IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCkBA
IC05NDUsNiArMTIyNCwyNCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVE
b3ViCiAgICAgICAgICAgICB1bmxvY2soZ3ByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAg
ICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFp
bihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdw
cik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9zdHJlYW0sIGdwcik7CisgICAgICAg
ICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgICAg
IEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIs
IHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAgICAgICAgbV9qaXQu
bG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7Cisg
ICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OCgqbV9zdHJlYW0sIGdwcik7CisgICAgICAg
ICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwpAQCAtOTc4
LDcgKzEyNzUsNyBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAK
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoNjQoTWFj
cm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKTsKIAotICAgICAgICBpZiAodHlwZSAmIH5TcGVjTnVtYmVyKQorICAgICAg
ICBpZiAodHlwZSAmIH5TcGVjRnVsbE51bWJlcikKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoanNWYWx1ZUdwciksIGVkZ2UsIG1faml0LmJyYW5jaFRl
c3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gRmlyc3QsIGlmIHdlIGdldCBoZXJlIHdlIGhh
dmUgYSBkb3VibGUgZW5jb2RlZCBhcyBhIEpTVmFsdWUKQEAgLTEwMDksNiArMTMwNiwyOCBAQCBG
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIG1fZ3Bycy51
bmxvY2soZ3ByKTsKICAgICAgICAgcmV0dXJuIGZwcjsKICAgICB9CisgICAgICAgIAorICAgIGNh
c2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgp
OworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2so
Z3ByKTsKKyAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0ZSgpOworICAgICAgICBtX2ppdC5t
b3ZlKGdwciwgdGVtcCk7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiks
IHRlbXApOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZSh0ZW1wLCBmcHIpOwor
ICAgICAgICB1bmxvY2sodGVtcCk7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKKyAgICAg
ICAgcmV0dXJuIGZwcjsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmlj
dEludDQ4OiB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOworICAgICAgICBH
UFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAg
ICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUoZ3ByLCBmcHIpOworICAgICAgICBtX2dwcnMu
dW5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBmcHI7CisgICAgfQogCiAgICAgLy8gVW5ib3gg
dGhlIGRvdWJsZQogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7CkBAIC0xMTExLDcgKzE0
MzAsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNh
c2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOiB7Cisg
ICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAg
ICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxh
dGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAgIHJl
dHVybiBhbGxvY2F0ZSgpOwogICAgIH0KQEAgLTExOTQsNyArMTUxNSw5IEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJs
ZToKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxs
OgotICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6IHsKKyAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4
OiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQpAQCAt
MTUwMyw2ICsxODI2LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMkNvbXBh
cmUKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jdXJyZW50Tm9kZSwgRGF0YUZv
cm1hdEpTQm9vbGVhbik7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQ0OENv
bXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZGl0aW9uKQoreworICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDIo
dGhpcywgbm9kZS0+Y2hpbGQyKCksIG9wMSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCBSZXVzZSwgb3AxLCBvcDIpOworICAgIAorICAgIG1faml0LmNvbXBhcmU2NChjb25kaXRpb24s
IG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgIAorICAgIC8vIElmIHdl
IGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisgICAgbV9qaXQu
b3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAganNWYWx1
ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4p
OworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVJbnQ0OEJyYW5jaChO
b2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRp
dGlvbiBjb25kaXRpb24pCit7CisgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT50
YWtlbkJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5ub3RU
YWtlbkJsb2NrKCk7CisKKyAgICAvLyBUaGUgYnJhbmNoIGluc3RydWN0aW9uIHdpbGwgYnJhbmNo
IHRvIHRoZSB0YWtlbiBibG9jay4KKyAgICAvLyBJZiB0YWtlbiBpcyBuZXh0LCBzd2l0Y2ggdGFr
ZW4gd2l0aCBub3RUYWtlbiAmIGludmVydCB0aGUgYnJhbmNoIGNvbmRpdGlvbiBzbyB3ZSBjYW4g
ZmFsbCB0aHJvdWdoLgorICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAgICAgICBj
b25kaXRpb24gPSBKSVRDb21waWxlcjo6aW52ZXJ0KGNvbmRpdGlvbik7CisgICAgICAgIEJhc2lj
QmxvY2sqIHRtcCA9IHRha2VuOworICAgICAgICB0YWtlbiA9IG5vdFRha2VuOworICAgICAgICBu
b3RUYWtlbiA9IHRtcDsKKyAgICB9CisgICAgCisgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlV2hpY2hldmVy
SW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSwgb3AxKTsKKyAgICAKKyAgICBi
cmFuY2g2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCB0YWtlbik7CisgICAganVt
cChub3RUYWtlbik7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVDb21w
YXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0aW9u
KQogewogICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKQEAgLTE5MDYsNiArMjI2MywxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OiB7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKG5vZGUtPmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lz
dGVyKCk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKHJlc3VsdC5ncHIoKSwgdmlydHVhbFJl
Z2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICAgICAgZ2VuZXJhdGlvbkluZm9Gcm9tVmly
dHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlcikuaW5pdEludDQ4KG5vZGUsIG5vZGUtPnJlZkNv
dW50KCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKG5vZGUtPmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMTk4MSw2ICsyMzQ4LDE0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6
IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KHZhbHVlLmdwcigpLCBKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcihub2RlLT5sb2NhbCgpKSk7CisgICAgICAgICAgICBub1Jlc3VsdChu
b2RlKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291
cmNlKEludDQ4SW5KU1N0YWNrKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6IHsKICAgICAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
R1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwpAQCAtMjEwNCw2ICsyNDc5LDIyIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZTogeworICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFuZCk7CisgICAgICAgIG1faml0Lm1vdmUob3BlcmFu
ZC5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50
NDhUb0RvdWJsZTogeworICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9w
ZXJhbmQpOworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9wZXJhbmQuZnByKCksIHJlc3VsdC5m
cHIoKSk7CisgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBB
cml0aEFkZDoKICAgICAgICAgY29tcGlsZUFkZChub2RlKTsKQEAgLTI4ODksNyArMzI4MCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEZQ
UlJlZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigpOwogCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVD
SygKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwgU3BlY1Jl
YWxOdW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hpbGQyKCks
IFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUo
TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlRlBSLCB2YWx1
ZUZQUikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0zMTA1LDcgKzM0OTYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBvcDEudXNl
KCk7CiAgICAgICAgIAotICAgICAgICBpZiAoIShtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLm1fdHlwZSAmIH4oU3BlY051bWJlciB8IFNwZWNCb29sZWFuKSkpCisgICAgICAgIGlmICgh
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjRnVsbE51bWJl
ciB8IFNwZWNCb29sZWFuKSkpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0
R1BSKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBh
bHJlYWR5UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CkBAIC0zMjAyLDcgKzM1OTMs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCB1c2UpOwogICAg
ICAgICAgICAgICAgICAgICBGUFJSZWcgb3BGUFIgPSBvcGVyYW5kLmZwcigpOwogICAgICAgICAg
ICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKCksIHVzZSwgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncygpLCB1c2UsIFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaERvdWJsZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgb3BGUFIsIG9wRlBSKSk7
CiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKG9wRlBSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoZG91YmxlKSAqIG9wZXJhbmRJZHgpKTsK
QEAgLTMyNjcsNyArMzY1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgICAgICBGUFJSZWcgb3BGUFIgPSBvcGVyYW5kLmZwcigpOwogICAg
ICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAg
ICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
KSwgdXNlLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
KSwgdXNlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaERvdWJsZSgKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEb3Vi
bGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBvcEZQUiwgb3BGUFIpKTsKICAgICAgICAgICAgICAgICBt
X2ppdC5ib3hEb3VibGUob3BGUFIsIHNjcmF0Y2hHUFIpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1NTkwMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDkgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVj
dWxhdGl2ZUpJVDo6cwogICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZTMyUGF5bG9hZDsK
ICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdENlbGwgfHwgcmVn
aXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0b3JhZ2UpCiAgICAgICAgICAgICBzcGlsbEFjdGlv
biA9IFN0b3JlUHRyOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJG
b3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRT
dHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgc3BpbGxBY3Rpb24gPSBTdG9yZTY0OworICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1h
dEpTKTsKICAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmU2NDsKICAgICAgICAgfQpAQCAt
Mzg2LDYgKzM4OCw0MCBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpz
CiAgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RvcmFnZSkgewog
ICAgICAgICBBU1NFUlQoaW5mby5ncHIoKSA9PSBzb3VyY2UpOwogICAgICAgICBmaWxsQWN0aW9u
ID0gTG9hZFB0cjsKKyAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRJ
bnQ0OCkgeworICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIGZp
bGxBY3Rpb24gPSBTZXRJbnQ0OENvbnN0YW50OworICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIo
aW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpT
KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBheWxvYWRDb252ZXJ0VG9JbnQ0ODsK
KyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQ0OCkK
KyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8u
c3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgICAgICBmaWxs
QWN0aW9uID0gTG9hZDY0U2hpZnRMZWZ0MTY7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxG
b3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2Fk
NjQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4g
QW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgorICAgICAgICAg
ICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRv
dWJsZSAodG8tZG91YmxlCisgICAgICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2Vw
YXJhdGUgbm9kZSkuCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3Ry
aWN0SW50NDgpIHsKKyAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpCisgICAgICAgICAg
ICBmaWxsQWN0aW9uID0gU2V0U3RyaWN0SW50NDhDb25zdGFudDsKKyAgICAgICAgZWxzZSBpZiAo
aXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERh
dGFGb3JtYXRKUykKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2FkU2lnbkV4
dGVuZDsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJ
bnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlmdFJpZ2h0MTY7CisgICAg
ICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgp
CisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIGlmIChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCisgICAgICAgICAgICBmaWxsQWN0aW9u
ID0gTG9hZDY0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBo
YXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFuIGludDMyIHdpbGwgbmV2ZXIKKyAg
ICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkg
b3IgYSBkb3VibGUgKHRvLWRvdWJsZQorICAgICAgICAgICAgLy8gY29udmVyc2lvbnMgaW52b2x2
ZSBhIHNlcGFyYXRlIG5vZGUpLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChyZWdpc3RlckZv
cm1hdCAmIERhdGFGb3JtYXRKUyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTM5Myw3ICs0Mjks
NiBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgIGlm
IChub2RlLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICBpZiAodmFsdWVPZkpTQ29uc3Rh
bnQobm9kZSkuaXNDZWxsKCkpCiAgICAgICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldFRydXN0
ZWRKU0NvbnN0YW50OwotICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZpbGxBY3Rp
b24gPSBTZXRKU0NvbnN0YW50OwogICAgICAgICB9IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0SW50MzIpIHsKICAgICAgICAgICAgIEFTU0VSVChyZWdpc3RlckZvcm1h
dCA9PSBEYXRhRm9ybWF0SlNJbnQzMik7CkBAIC01MTIsNiArNTQ3LDE0IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICBjYXNlIFNldEludDMyQ29uc3RhbnQ6
CiAgICAgICAgIG1faml0Lm1vdmUoSW1tMzIodmFsdWVPZkludDMyQ29uc3RhbnQocGxhbi5ub2Rl
KCkpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgY2FzZSBTZXRJbnQ0OENvbnN0YW50OgorICAgICAgICBtX2ppdC5tb3ZlKEltbTY0KHZhbHVl
T2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS5hc01hY2hpbmVJbnQoKSA8PCAxNiksIHBsYW4uZ3By
KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNldFN0cmljdEludDQ4Q29uc3RhbnQ6Cisg
ICAgICAgIG1faml0Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29uc3RhbnQocGxhbi5ub2RlKCkpLmFz
TWFjaGluZUludCgpKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOworI2VuZGlmIC8vIFVT
RShKU1ZBTFVFNjQpCiAgICAgY2FzZSBTZXRCb29sZWFuQ29uc3RhbnQ6CiAgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKHZhbHVlT2ZCb29sZWFuQ29uc3RhbnQocGxhbi5ub2RlKCkpKSwg
cGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTMzLDYgKzU3NiwxNSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBw
bGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIExvYWQzMlBheWxv
YWRDb252ZXJ0VG9JbnQ0ODoKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXls
b2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAg
ICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihwbGFuLmdwcigpLCBwbGFuLmdwcigpKTsKKyAg
ICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgTG9hZDMyUGF5bG9hZFNpZ25FeHRlbmQ6CisgICAgICAgIG1f
aml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJl
Z2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIo
cGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTG9hZERv
dWJsZUJveERvdWJsZToKICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAg
ICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHBsYW4uZ3ByKCkp
OwpAQCAtNTc0LDYgKzYyNiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNv
bnN0IFNpCiAgICAgY2FzZSBMb2FkNjQ6CiAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxl
cjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkNjRTaGlmdFJpZ2h0MTY6CisgICAgICAg
IG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVh
bFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTG9hZDY0
U2hpZnRMZWZ0MTY6CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAg
bV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJy
ZWFrOwogI2VuZGlmCiAgICAgY2FzZSBMb2FkRG91YmxlOgogICAgICAgICBtX2ppdC5sb2FkRG91
YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIo
KSksIHBsYW4uZnByKCkpOwpAQCAtMTQxNiw2ICsxNDc2LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW4KIAogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEludDMyVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUludDMyQnJhbmNoKG5v
ZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
ZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKQorICAgICAgICAg
ICAgY29tcGlsZVBlZXBIb2xlSW50NDhCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9u
KTsKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZURvdWJs
ZUJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBkb3VibGVDb25kaXRpb24pOwogICAgICAgICBlbHNl
IGlmIChub2RlLT5vcCgpID09IENvbXBhcmVFcSkgewpAQCAtMTUwNyw2ICsxNTcxLDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KAogICAgICAgICAgICAgY2FzZSBG
bHVzaGVkSW50MzI6CiAgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShJ
bnQzMkluSlNTdGFjayk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNl
KEludDQ4SW5KU1N0YWNrKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgRmx1c2hlZENlbGw6CiAgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJj
ZShDZWxsSW5KU1N0YWNrKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE4NzMsNyArMTk0
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVYKICAgICBGUFJS
ZWcgdmFsdWVSZWcgPSB2YWx1ZS5mcHIoKTsKICAgICAKICAgICBERkdfVFlQRV9DSEVDSygKLSAg
ICAgICAgSlNWYWx1ZVJlZ3MoKSwgY2hpbGQzLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgSlNW
YWx1ZVJlZ3MoKSwgY2hpbGQzLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgIG1faml0LmJy
YW5jaERvdWJsZSgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9y
VW5vcmRlcmVkLCB2YWx1ZVJlZywgdmFsdWVSZWcpKTsKICAgICAKQEAgLTIxNDksNiArMjIxNiwx
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAgICAgICAgIGlu
dDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgb3AxLmZvcm1hdCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIE1hY2hp
bmVJbnRVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIG9wMSk7CisgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQz
MlRvUHRyKG9wMUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0R1BS
LCBub2RlLCBEYXRhRm9ybWF0SW50MzIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgY2FzZSBO
b3RDZWxsVXNlOiB7CkBAIC0yMTg3LDcgKzIyNjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVUb0ludDMyCiAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gTnVtYmVyVXNlKSB7CiAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0g
ICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGdwciksIG5vZGUtPmNoaWxkMSgpLCBTcGVj
TnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBub2RlLT5jaGls
ZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3Q2NCgKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBncHIs
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAgICAgICAgICAgfSBlbHNlIHsK
QEAgLTIyNDMsNyArMjMyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRv
SW50MzIKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
TnVtYmVyVXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9kZS0+
Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyh0YWdHUFIsIHBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0YWdHUFIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsK
QEAgLTIzODksMTUgKzI0NjgsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMy
VG9Eb3VibAogICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDY0
KAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFHUFIsIEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgCi0gICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5v
ZGUtPmNoaWxkMSgpLCBTcGVjTnVtYmVyKSkgeworICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2Rl
LT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIpKSB7CiAgICAgICAgIGlmIChub2RlLT5mbGFncygp
ICYgTm9kZUV4aXRzRm9yd2FyZCkgewogICAgICAgICAgICAgZm9yd2FyZFR5cGVDaGVjaygKLSAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051
bWJlciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEo
KSwgU3BlY0Z1bGxOdW1iZXIsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciksCiAgICAgICAgICAgICAgICAgVmFsdWVSZWNvdmVyeTo6aW5HUFIob3AxR1BSLCBEYXRhRm9y
bWF0SlMpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJhY2t3YXJkVHlwZUNoZWNr
KAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBT
cGVjTnVtYmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNo
aWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0
NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDIwLDE1ICsyNDk5LDE1IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmwKICAgICBKSVRDb21waWxlcjo6SnVt
cCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwogICAgIAot
ICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlcikpIHsKKyAg
ICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyKSkgewog
ICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVFeGl0c0ZvcndhcmQpIHsKICAgICAgICAg
ICAgIGZvcndhcmRUeXBlQ2hlY2soCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxVGFn
R1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hp
bGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6Okxvd2VzdFRhZykpLAogICAgICAgICAgICAgICAgIFZhbHVlUmVjb3Zlcnk6OmluUGFpcihv
cDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IGJhY2t3YXJkVHlwZUNoZWNrKAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQ
Uiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjTnVtYmVyLAorICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpMb3dlc3RUYWcpKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTQ5LDYgKzI2MjgsMTQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbgogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKG5vZGUtPnNob3VsZFNw
ZWN1bGF0ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihy
ZXN1bHRSZWcsIHJlc3VsdFJlZyk7CisgICAgICAgIHN0cmljdEludDQ4UmVzdWx0KHJlc3VsdFJl
Zywgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICAKICAgICBGUFJU
ZW1wb3JhcnkgZnJlc3VsdCh0aGlzKTsKICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShy
ZXN1bHRSZWcsIGZyZXN1bHQuZnByKCkpOwogICAgIEpJVENvbXBpbGVyOjpKdW1wIHBvc2l0aXZl
ID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVz
dWx0UmVnLCBUcnVzdGVkSW1tMzIoMCkpOwpAQCAtMjYwMiw2ICsyNjg5LDMxIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckkKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCB2
YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwor
ICAgICAgICAgICAgbV9qaXQubW92ZSh2YWx1ZU9wLmdwcigpLCBzY3JhdGNoUmVnKTsKKyAgICAg
ICAgICAgIGlmIChpc0NsYW1wZWQodHlwZSkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZWxl
bWVudFNpemUodHlwZSkgPT0gMSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgaW5Cb3VuZHMgPSBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgc2NyYXRjaFJlZywgSklUQ29tcGlsZXI6OlRydXN0ZWRJ
bW02NCgweGZmKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgdG9vQmln
ID0gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpH
cmVhdGVyVGhhbiwgc2NyYXRjaFJlZywgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NCgweGZmKSk7
CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHNjcmF0Y2hSZWcp
OworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNsYW1wZWQgPSBtX2ppdC5q
dW1wKCk7CisgICAgICAgICAgICAgICAgdG9vQmlnLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAg
ICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoMjU1KSwgc2NyYXRjaFJl
Zyk7CisgICAgICAgICAgICAgICAgY2xhbXBlZC5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAg
ICAgaW5Cb3VuZHMubGluaygmbV9qaXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFs
dWUuYWRvcHQoc2NyYXRjaCk7CisgICAgICAgICAgICB2YWx1ZUdQUiA9IHNjcmF0Y2hSZWc7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgICAgIGlmIChp
c0NsYW1wZWQodHlwZSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudFNpemUodHlw
ZSkgPT0gMSk7CkBAIC0yODcwLDcgKzI5ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQWRkKE5vZGUqIG5vCiAgICAgICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5v
ZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisg
ICAgICAgIAogICAgICAgICBpZiAoaXNOdW1iZXJDb25zdGFudChub2RlLT5jaGlsZDIoKS5ub2Rl
KCkpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgIGludDMyX3QgaW1tMiA9IHZhbHVlT2ZJbnQzMkNvbnN0
YW50KG5vZGUtPmNoaWxkMigpLm5vZGUoKSk7CkBAIC0yOTE1LDYgKzMwMjcsMzMgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFkZChOb2RlKiBubwogICAgICAgICBpbnQzMlJlc3VsdChn
cHJSZXN1bHQsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAgICAKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAvLyBXaWxs
IHdlIG5lZWQgYW4gb3ZlcmZsb3cgY2hlY2s/IElmIHdlIGNhbiBwcm92ZSB0aGF0IG5laXRoZXIg
aW5wdXQgY2FuIGJlCisgICAgICAgIC8vIEludDQ4IHRoZW4gdGhlIG92ZXJmbG93IGNoZWNrIHdp
bGwgbm90IGJlIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkKKyAgICAgICAgICAgICYmICFtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0
aGlzLCBub2RlLT5jaGlsZDIoKSwgb3AxKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIG9wMSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwg
cmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LmFkZDY0KG9wMi5ncHIoKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgb3Ax
LmZvcm1hdCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisgICAg
ICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwK
KyAgICAgICAgICAgIG1faml0LmJyYW5jaEFkZDY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywg
b3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0Lmdw
cigpLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxV
RTY0KQogICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTMwNjAsNiArMzE5OSwzMyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9kCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBNYWNoaW5l
SW50VXNlOiB7CisgICAgICAgIC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxvdyBjaGVjaz8gSWYg
d2UgY2FuIHByb3ZlIHRoYXQgbmVpdGhlciBpbnB1dCBjYW4gYmUKKyAgICAgICAgLy8gSW50NDgg
dGhlbiB0aGUgb3ZlcmZsb3cgY2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5LgorICAgICAgICBp
ZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4
KQorICAgICAgICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuY291bGRC
ZVR5cGUoU3BlY0ludDQ4KSkgeworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVX
aGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBvcDEpOworICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgbV9q
aXQuc3ViNjQob3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgaW50NDhSZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0KCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9w
Mih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3Vs
dC5ncHIoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92
ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3ViNjQo
TWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOworICAg
ICAgICBpbnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisKICAgICBjYXNlIE51bWJlclVzZTogewog
ICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKQEAgLTMwODgsNiArMzI1NCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0
aE5lZ2F0ZSgKIAogICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsK
IAorICAgICAgICAvLyBOb3RlOiB0aGVyZSBpcyBubyBub3Rpb24gb2YgYmVpbmcgbm90IHVzZWQg
YXMgYSBudW1iZXIsIGJ1dCBzb21lb25lCisgICAgICAgIC8vIGNhcmluZyBhYm91dCBuZWdhdGl2
ZSB6ZXJvLgorICAgICAgICAKICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2Vy
KG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgbV9qaXQubmVnMzIocmVzdWx0
LmdwcigpKTsKICAgICAgICAgZWxzZSB7CkBAIC0zMDk5LDYgKzMyNjgsNDIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAogICAgICAgICBpbnQzMlJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgaWYgKCFtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAgICAg
ICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAg
IEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOworICAgICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQ
Uik7CisgICAgICAgICAgICBtX2ppdC5uZWc2NChyZXN1bHRHUFIpOworICAgICAgICAgICAgaWYg
KCFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkg
eworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgICAg
IE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgb3AxLmZv
cm1hdCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBv
cDEuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAg
ICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAg
ICAgICAgIG1faml0LmJyYW5jaE5lZzY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgcmVzdWx0
R1BSKSk7CisgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+
YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAg
ICAgICAgICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0R1BSKSk7
CisgICAgICAgIH0KKyAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICAKICAg
ICBjYXNlIE51bWJlclVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0zMTY0LDYgKzMzNjksNjIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFyaXRoTXVsKE5vZAogICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQu
Z3ByKCksIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAKKyNpZiBVU0UoSlNW
QUxVRTY0KSAgIAorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAvLyBUaGlzIGlz
IHN1cGVyIGNsZXZlci4gV2Ugd2FudCB0byBkbyBhbiBpbnQ0OCBtdWx0aXBsaWNhdGlvbiBhbmQg
Y2hlY2sgdGhlCisgICAgICAgIC8vIGludDQ4IG92ZXJmbG93IGJpdC4gVGhlcmUgaXMgbm8gZGly
ZWN0IGhhcmR3YXJlIHN1cHBvcnQgZm9yIHRoaXMsIGJ1dCB3ZSBkbworICAgICAgICAvLyBoYXZl
IHRoZSBhYmlsaXR5IHRvIGRvIGFuIGludDY0IG11bHRpcGxpY2F0aW9uIGFuZCBjaGVjayB0aGUg
aW50NjQgb3ZlcmZsb3cKKyAgICAgICAgLy8gYml0LiBXZSBsZXZlcmFnZSB0aGF0LiBDb25zaWRl
ciB0aGF0IGEsIGIgYXJlIGludDQ4IG51bWJlcnMgaW5zaWRlIGludDY0CisgICAgICAgIC8vIHJl
Z2lzdGVycywgd2l0aCB0aGUgaGlnaCAxNiBiaXRzIGJlaW5nIHNpZ24tZXh0ZW5kZWQuIFdlIGNh
biBkbzoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIChhICogKGIgPDwgMTYpKQorICAgICAg
ICAvLworICAgICAgICAvLyBUaGlzIHdpbGwgZ2l2ZSB1cyBhIGxlZnQtc2hpZnRlZCBpbnQ0OCAo
dmFsdWUgaXMgaW4gaGlnaCA0OCBiaXRzLCBsb3cgMTYKKyAgICAgICAgLy8gYml0cyBhcmUgemVy
bykgcGx1cyB0aGUgaW50NDggb3ZlcmZsb3cgYml0LiBJLmUuIHdoZXRoZXIgdGhpcyA2NC1iaXQK
KyAgICAgICAgLy8gbXVsdGlwbGljYXRpb24gb3ZlcmZsb3dzIGlzIGlkZW50aWNhbCB0byB3aGV0
aGVyIHRoZSAnYSAqIGInIDQ4LWJpdAorICAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBvdmVyZmxv
d3MuCisgICAgICAgIC8vCisgICAgICAgIC8vIEluIG91ciBub21lbmNsYXR1cmUsIHRoaXMgaXM6
CisgICAgICAgIC8vCisgICAgICAgIC8vICAgICBzdHJpY3RJbnQ0OChhKSAqIGludDQ4KGIpID0+
IGludDQ4CisgICAgICAgIC8vCisgICAgICAgIC8vIFRoYXQgaXMgInN0cmljdEludDQ4IiBtZWFu
cyB1bnNoaWZ0ZWQgYW5kICJpbnQ0OCIgbWVhbnMgbGVmdC1zaGlmdGVkIGJ5IDE2CisgICAgICAg
IC8vIGJpdHMuCisgICAgICAgIC8vCisgICAgICAgIC8vIFdlIGRvbid0IGNhcmUgd2hpY2ggb2Yg
b3AxIG9yIG9wMiBzZXJ2ZXMgYXMgdGhlIGxlZnQtc2hpZnRlZCBvcGVyYW5kLCBzbworICAgICAg
ICAvLyB3ZSBqdXN0IGRvIHdoYXRldmVyIGlzIG1vcmUgY29udmVuaWVudCBmb3Igb3AxIGFuZCBo
YXZlIG9wMiBkbyB0aGUKKyAgICAgICAgLy8gb3Bwb3NpdGUuIFRoaXMgZW5zdXJlcyB0aGF0IHdl
IGRvIGF0IG1vc3Qgb25lIHNoaWZ0LgorCisgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4
T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVXaGlj
aGV2ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBPcHBvc2l0ZVNoaWZ0
LCBvcDEpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAKKyAg
ICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIG9wMkdQUiA9
IG9wMi5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAg
ICAgICAgCisgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3Mo
KSwgMCwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaE11bDY0KE1hY3JvQXNzZW1ibGVyOjpPdmVy
Zmxvdywgb3AyR1BSLCByZXN1bHRHUFIpKTsKKyAgICAgICAgCisgICAgICAgIGlmICghYnl0ZWNv
ZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJlc3VsdE5vblplcm8gPSBtX2ppdC5icmFuY2hU
ZXN0NjQoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHJlc3VsdEdQ
Uik7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0
aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2
NChNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMUdQUiwgVHJ1c3RlZEltbTY0KDApKSk7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVy
bywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMkdQUiwgVHJ1c3RlZEltbTY0KDApKSk7CisgICAgICAg
ICAgICByZXN1bHROb25aZXJvLmxpbmsoJm1faml0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgaW50NDhSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICAKICAgICBjYXNlIE51bWJlclVz
ZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CkBAIC0zNTg3LDcgKzM4NDgsMTQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFy
ZShOb2RlKiBub2RlLAogICAgICAgICBjb21waWxlSW50MzJDb21wYXJlKG5vZGUsIGNvbmRpdGlv
bik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KKyAgICAKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAg
ICAgICAgY29tcGlsZUludDQ4Q29tcGFyZShub2RlLCBjb25kaXRpb24pOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgCiAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVEb3Vi
bGVDb21wYXJlKG5vZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTM3MzcsNiArNDAwNSwyMyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0
RXEoTm9kCiAgICAgICAgIGNvbXBpbGVJbnQzMkNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICAgCisjaWYgVVNFKEpT
VkFMVUU2NCkgICAKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgdW5zaWduZWQg
YnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYg
KGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJh
bmNoTm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBj
b21waWxlUGVlcEhvbGVJbnQ0OEJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IHVzZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5j
aEluZGV4SW5CbG9jazsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUludDQ4
Q29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAogICAgIGNhc2Ug
TnVtYmVyVXNlOiB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVj
dFBlZXBIb2xlQnJhbmNoKCk7CkBAIC00NDkyLDkgKzQ3NzcsMjIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlSW50MzIoRWRnZQogICAgIChTcGVjdWxhdGVJbnQzMk9wZXJhbmQodGhp
cywgZWRnZSkpLmdwcigpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVNYWNo
aW5lSW50KEVkZ2UgZWRnZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmICghbmVlZHNU
eXBlQ2hlY2soZWRnZSwgU3BlY01hY2hpbmVJbnQpKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgKFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3ByKCk7Cisj
ZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQorICAgIFVOVVNFRF9QQVJBTShlZGdlKTsKKyAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorfQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOdW1iZXIoRWRnZSBlZGdlKQogewotICAgIGlm
ICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY051bWJlcikpCisgICAgaWYgKCFuZWVkc1R5cGVD
aGVjayhlZGdlLCBTcGVjRnVsbE51bWJlcikpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAo
U3BlY3VsYXRlRG91YmxlT3BlcmFuZCh0aGlzLCBlZGdlKSkuZnByKCk7CkBAIC00NTAyLDEzICs0
ODAwLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcihFZGcKIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlUmVhbE51bWJlcihFZGdlIGVkZ2UpCiB7Ci0gICAg
aWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjUmVhbE51bWJlcikpCisgICAgaWYgKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIpKQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwogICAg
IEZQUlJlZyBmcHIgPSBvcGVyYW5kLmZwcigpOwogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgSlNWYWx1ZVJl
Z3MoKSwgZWRnZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICBtX2ppdC5icmFuY2hEb3Vi
bGUoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJl
ZCwgZnByLCBmcHIpKTsKIH0KQEAgLTQ3NzAsNyArNTA2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWQKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhl
ZGdlLCBTcGVjSW50MzIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBLbm93bk51bWJlclVz
ZToKLSAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTnVtYmVyKSk7Cisg
ICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxOdW1iZXIpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgIEFTU0VSVCghbmVl
ZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwpKTsKQEAgLTQ3ODEsNiArNTA3OSw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWQKICAgICBjYXNlIEludDMyVXNlOgog
ICAgICAgICBzcGVjdWxhdGVJbnQzMihlZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBN
YWNoaW5lSW50VXNlOgorICAgICAgICBzcGVjdWxhdGVNYWNoaW5lSW50KGVkZ2UpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVJlYWxO
dW1iZXIoZWRnZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTksOSArMTU5LDcgQEAgcHVibGljOgogICAgIC8vIGFuZCBpdHMgbWFjaGluZSByZWdpc3Rl
cnMgbWF5IGJlIHJldXNlZC4KICAgICBib29sIGNhblJldXNlKE5vZGUqIG5vZGUpCiAgICAgewot
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJl
Z2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9G
cm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBpbmZv
LmNhblJldXNlKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5jYW5SZXVz
ZSgpOwogICAgIH0KICAgICBib29sIGNhblJldXNlKEVkZ2Ugbm9kZVVzZSkKICAgICB7CkBAIC0y
MzcsMTUgKzIzNSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gYXZvaWQgc3BpbGxpbmcgdmFsdWVzIHdl
IHdpbGwgbmVlZCBpbW1lZGlhdGVseSkuCiAgICAgYm9vbCBpc0ZpbGxlZChOb2RlKiBub2RlKQog
ICAgIHsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZp
cnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRp
b25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICByZXR1
cm4gaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXROb25lOworICAgICAgICByZXR1
cm4gZ2VuZXJhdGlvbkluZm8obm9kZSkucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9u
ZTsKICAgICB9CiAgICAgYm9vbCBpc0ZpbGxlZERvdWJsZShOb2RlKiBub2RlKQogICAgIHsKLSAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdp
c3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJv
bVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gaW5mby5y
ZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGU7CisgICAgICAgIHJldHVybiBnZW5l
cmF0aW9uSW5mbyhub2RlKS5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGU7CiAg
ICAgfQogCiAgICAgLy8gQ2FsbGVkIG9uIGFuIG9wZXJhbmQgb25jZSBpdCBoYXMgYmVlbiBjb25z
dW1lZCBieSBhIHBhcmVudCBub2RlLgpAQCAtMjUzLDggKzI0Nyw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIGlmICghbm9kZS0+aGFzUmVzdWx0KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVn
aXN0ZXIoKTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zy
b21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgR2VuZXJhdGlvbklu
Zm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mbyhub2RlKTsKIAogICAgICAgICAvLyB1c2UoKSByZXR1
cm5zIHRydWUgd2hlbiB0aGUgdmFsdWUgYmVjb21lcyBkZWFkLCBhbmQgYW55CiAgICAgICAgIC8v
IGFzc29jaWF0ZWQgcmVzb3VyY2VzIG1heSBiZSBmcmVlZC4KQEAgLTMzMyw2ICszMjYsNyBAQCBw
dWJsaWM6CiAgICAgLy8gbWFjaGluZSByZWdpc3RlcnMsIGltcGxpY2l0bHkgZ2VuZXJhdGluZyBz
cGVjdWxhdGlvbiBjaGVja3MgYXMgbmVlZGVkLgogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50
MzIoRWRnZSwgRGF0YUZvcm1hdCYgcmV0dXJuRm9ybWF0KTsKICAgICBHUFJSZWcgZmlsbFNwZWN1
bGF0ZUludDMyU3RyaWN0KEVkZ2UpOworICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50NDgoRWRn
ZSwgRGF0YUZvcm1hdCBkZXNpcmVkRm9ybWF0KTsKICAgICBGUFJSZWcgZmlsbFNwZWN1bGF0ZURv
dWJsZShFZGdlKTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSk7CiAgICAgR1BS
UmVnIGZpbGxTcGVjdWxhdGVCb29sZWFuKEVkZ2UpOwpAQCAtNDY4LDYgKzQ2Miw4IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBib3hEb3VibGUoZnByLCBhbGxvY2F0ZSgpKTsKICAg
ICB9CisgICAgCisgICAgdm9pZCBib3hJbnQ0OChHUFJSZWcgc291cmNlR1BSLCBHUFJSZWcgdGFy
Z2V0R1BSLCBEYXRhRm9ybWF0IGZvcm1hdCk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
IHZvaWQgYm94RG91YmxlKEZQUlJlZyBmcHIsIEdQUlJlZyB0YWdHUFIsIEdQUlJlZyBwYXlsb2Fk
R1BSKQogICAgIHsKQEAgLTU1OSwxMSArNTU1LDExIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KICAgICAKLSAgICBib29sIGlzS25vd25JbnRlZ2VyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEo
bV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH5TcGVjSW50MzIpOyB9Ci0gICAgYm9vbCBp
c0tub3duQ2VsbChOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5t
X3R5cGUgJiB+U3BlY0NlbGwpOyB9CisgICAgYm9vbCBpc0tub3duSW50ZWdlcihOb2RlKiBub2Rl
KSB7IHJldHVybiBtX3N0YXRlLmZvck5vZGUobm9kZSkuaXNUeXBlKFNwZWNJbnQzMik7IH0KKyAg
ICBib29sIGlzS25vd25DZWxsKE5vZGUqIG5vZGUpIHsgcmV0dXJuIG1fc3RhdGUuZm9yTm9kZShu
b2RlKS5pc1R5cGUoU3BlY0NlbGwpOyB9CiAgICAgCiAgICAgYm9vbCBpc0tub3duTm90SW50ZWdl
cihOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBT
cGVjSW50MzIpOyB9Ci0gICAgYm9vbCBpc0tub3duTm90TnVtYmVyKE5vZGUqIG5vZGUpIHsgcmV0
dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNOdW1iZXIpOyB9CisgICAg
Ym9vbCBpc0tub3duTm90TnVtYmVyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JO
b2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNGdWxsTnVtYmVyKTsgfQogICAgIGJvb2wgaXNLbm93bk5v
dENlbGwoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBl
ICYgU3BlY0NlbGwpOyB9CiAgICAgCiAgICAgLy8gQ2hlY2tzL2FjY2Vzc29ycyBmb3IgY29uc3Rh
bnQgdmFsdWVzLgpAQCAtODE2LDYgKzgxMiwyNSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBp
bnQzMlJlc3VsdChyZWcsIG5vZGUsIERhdGFGb3JtYXRJbnQzMiwgbW9kZSk7CiAgICAgfQorICAg
IHZvaWQgaW50NDhSZXN1bHQoR1BSUmVnIHJlZywgTm9kZSogbm9kZSwgRGF0YUZvcm1hdCBmb3Jt
YXQsIFVzZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQorICAgIHsKKyAgICAg
ICAgaWYgKG1vZGUgPT0gQ2FsbFVzZUNoaWxkcmVuKQorICAgICAgICAgICAgdXNlQ2hpbGRyZW4o
bm9kZSk7CisKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUt
PnZpcnR1YWxSZWdpc3RlcigpOworICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVy
YXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworCisgICAgICAg
IG1fZ3Bycy5yZXRhaW4ocmVnLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAg
ICAgIGluZm8uaW5pdEludDQ4KG5vZGUsIG5vZGUtPnJlZkNvdW50KCksIHJlZywgZm9ybWF0KTsK
KyAgICB9CisgICAgdm9pZCBpbnQ0OFJlc3VsdChHUFJSZWcgcmVnLCBOb2RlKiBub2RlLCBVc2VD
aGlsZHJlbk1vZGUgbW9kZSA9IENhbGxVc2VDaGlsZHJlbikKKyAgICB7CisgICAgICAgIGludDQ4
UmVzdWx0KHJlZywgbm9kZSwgRGF0YUZvcm1hdEludDQ4LCBtb2RlKTsKKyAgICB9CisgICAgdm9p
ZCBzdHJpY3RJbnQ0OFJlc3VsdChHUFJSZWcgcmVnLCBOb2RlKiBub2RlLCBVc2VDaGlsZHJlbk1v
ZGUgbW9kZSA9IENhbGxVc2VDaGlsZHJlbikKKyAgICB7CisgICAgICAgIGludDQ4UmVzdWx0KHJl
Zywgbm9kZSwgRGF0YUZvcm1hdFN0cmljdEludDQ4LCBtb2RlKTsKKyAgICB9CiAgICAgdm9pZCBu
b1Jlc3VsdChOb2RlKiBub2RlLCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9IENhbGxVc2VDaGlsZHJl
bikKICAgICB7CiAgICAgICAgIGlmIChtb2RlID09IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRs
eSkKQEAgLTkwMCw3ICs5MTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0Q29uc3RhbnRJbmZv
KE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50KG5vZGUp
IHx8IGlzTnVtYmVyQ29uc3RhbnQobm9kZSkgfHwgaXNKU0NvbnN0YW50KG5vZGUpKTsKLSAgICAg
ICAgZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKG5vZGUtPnZpcnR1YWxSZWdpc3Rl
cigpKS5pbml0Q29uc3RhbnQobm9kZSwgbm9kZS0+cmVmQ291bnQoKSk7CisgICAgICAgIGdlbmVy
YXRpb25JbmZvKG5vZGUpLmluaXRDb25zdGFudChub2RlLCBub2RlLT5yZWZDb3VudCgpKTsKICAg
ICB9CiAgICAgCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhZGQgY2FsbHMgdG8gQysrIGhlbHBlciBm
dW5jdGlvbnMuCkBAIC0xODg5LDE1ICsxOTA0LDIyIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlz
SW50MzJDb25zdGFudChub2RlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAg
IFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIo
KTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0
dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBp
bmZvLmlzSlNJbnQzMigpOworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8obm9kZSkuaXNK
U0ludDMyKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgYmV0dGVyVXNlU3RyaWN0SW50NDgoTm9k
ZSogbm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhZ2VuZXJhdGlvbkluZm8obm9kZSkuaXNJ
bnQ0OCgpOworICAgIH0KKyAgICBib29sIGJldHRlclVzZVN0cmljdEludDQ4KEVkZ2UgZWRnZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChlZGdlLm5vZGUoKSk7
CiAgICAgfQogICAgIAogICAgIGJvb2wgY29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24sIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfREZH
T3BlcmF0aW9uX0VKSik7CiAgICAgYm9vbCBjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSosIE1h
Y3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91Ymxl
Q29uZGl0aW9uLCBTX0RGR09wZXJhdGlvbl9FSkopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xl
SW50MzJCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlv
bmFsQ29uZGl0aW9uKTsKKyAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUludDQ4QnJhbmNoKE5vZGUq
LCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAg
ICAgdm9pZCBjb21waWxlUGVlcEhvbGVCb29sZWFuQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hO
b2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxl
UGVlcEhvbGVEb3VibGVCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVy
OjpEb3VibGVDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxp
dHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwpAQCAtMTk0NSw2ICsxOTY3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSopOwogICAgIAogICAgIHZvaWQg
Y29tcGlsZUludDMyQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24pOworICAgIHZvaWQgY29tcGlsZUludDQ4Q29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJs
ZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZUJvb2xlYW5Db21wYXJl
KE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBj
b21waWxlRG91YmxlQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlv
bik7CiAgICAgCkBAIC0yMTE4LDYgKzIxNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3J3YXJk
VHlwZUNoZWNrKEpTVmFsdWVTb3VyY2UsIEVkZ2UsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2Vk
VGhyb3VnaCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCwgY29uc3QgVmFsdWVSZWNv
dmVyeSYpOwogCiAgICAgdm9pZCBzcGVjdWxhdGVJbnQzMihFZGdlKTsKKyAgICB2b2lkIHNwZWN1
bGF0ZU1hY2hpbmVJbnQoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVOdW1iZXIoRWRnZSk7CiAg
ICAgdm9pZCBzcGVjdWxhdGVSZWFsTnVtYmVyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlQm9v
bGVhbihFZGdlKTsKQEAgLTIxOTUsNiArMjIxOSwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1tvcGVyYW5kVG9Mb2NhbCh2aXJ0dWFsUmVnaXN0ZXIp
XTsKICAgICB9CisgICAgCisgICAgR2VuZXJhdGlvbkluZm8mIGdlbmVyYXRpb25JbmZvKE5vZGUq
IG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJl
Z2lzdGVyKG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICB9CisgICAgCisgICAgR2VuZXJh
dGlvbkluZm8mIGdlbmVyYXRpb25JbmZvKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBnZW5lcmF0aW9uSW5mbyhlZGdlLm5vZGUoKSk7CisgICAgfQogCiAgICAgLy8gVGhlIEpJVCwg
d2hpbGUgYWxzbyBwcm92aWRlcyBNYWNyb0Fzc2VtYmxlciBmdW5jdGlvbmFsaXR5LgogICAgIEpJ
VENvbXBpbGVyJiBtX2ppdDsKQEAgLTI2NzYsNiArMjcxMCwxNzkgQEAgcHJpdmF0ZToKICAgICBH
UFJSZWcgbV9ncHJPckludmFsaWQ7CiB9OwogCisvLyBHaXZlcyB5b3UgYSBjYW5vbmljYWwgSW50
NDggKGkuZS4gaXQncyBsZWZ0LXNoaWZ0ZWQgYnkgMTYsIGxvdyBiaXRzIHplcm8pLgorY2xhc3Mg
U3BlY3VsYXRlSW50NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVJ
bnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3Vs
YXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDog
bV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZh
bGlkKEludmFsaWRHUFJSZWcpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1v
ZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hp
bmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAg
ICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIH5TcGVjdWxhdGVJbnQ0OE9wZXJhbmQoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAg
ICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRn
ZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAg
IAorICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5u
b2RlKCk7CisgICAgfQorICAgIAorICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYg
KG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52
YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlSW50NDgoZWRnZSgpLCBEYXRhRm9ybWF0SW50NDgp
OworICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQg
dXNlKCkKKyAgICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitw
cml2YXRlOgorICAgIFNwZWN1bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAg
ICBHUFJSZWcgbV9ncHJPckludmFsaWQ7Cit9OworCisvLyBHaXZlcyB5b3UgYSBzdHJpY3QgSW50
NDggKGkuZS4gdGhlIHBheWxvYWQgaXMgaW4gdGhlIGxvdyA0OCBiaXRzLCBoaWdoIDE2IGJpdHMg
YXJlIHNpZ24tZXh0ZW5kZWQpLgorY2xhc3MgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kIHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQoU3BlY3Vs
YXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBB
dXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAg
ICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcp
CisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAg
ICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQor
ICAgIAorICAgIH5TcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+
dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUq
IG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAg
fQorICAgIAorICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZh
bGlkID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0
LT5maWxsU3BlY3VsYXRlSW50NDgoZWRnZSgpLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAg
ICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkK
KyAgICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRl
OgorICAgIFNwZWN1bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsKKyAgICBHUFJS
ZWcgbV9ncHJPckludmFsaWQ7Cit9OworCitlbnVtIE9wcG9zaXRlU2hpZnRUYWcgeyBPcHBvc2l0
ZVNoaWZ0IH07CisKK2NsYXNzIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kKFNwZWN1bGF0
aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAg
LCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQor
ICAgICAgICAsIG1fc3RyaWN0KGppdC0+YmV0dGVyVXNlU3RyaWN0SW50NDgoZWRnZSkpCisgICAg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAo
aml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAor
ICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJ
VCogaml0LCBFZGdlIGVkZ2UsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCYg
b3RoZXIsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVj
dWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisg
ICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICAgICAgLCBtX3N0cmlj
dChvdGhlci5tX3N0cmljdCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9k
ZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGlu
ZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAg
ICBncHIoKTsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50
NDhPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3Bwb3NpdGVTaGlmdFRh
ZywgY29uc3QgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNw
ZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAg
ICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9y
SW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgICAgICAsIG1fc3RyaWN0KCFvdGhlci5tX3N0cmlj
dCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAg
ICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9
CisgICAgCisgICAgflNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCgpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1f
aml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOworICAgIH0KKyAgICAKKyAgICBFZGdlIGVkZ2Uo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9CisgICAgCisgICAg
Tm9kZSogbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWRnZSgpLm5vZGUoKTsK
KyAgICB9CisgICAgCisgICAgR1BSUmVnIGdwcigpCisgICAgeworICAgICAgICBpZiAobV9ncHJP
ckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgbV9ncHJPckludmFsaWQg
PSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZUludDQ4KAorICAgICAgICAgICAgICAgIGVkZ2UoKSwgbV9z
dHJpY3QgPyBEYXRhRm9ybWF0U3RyaWN0SW50NDggOiBEYXRhRm9ybWF0SW50NDgpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKKyAgICB9CisgICAgCisgICAgdm9p
ZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkpOworICAgIH0KKyAgICAK
KyAgICBEYXRhRm9ybWF0IGZvcm1hdCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9z
dHJpY3QgPyBEYXRhRm9ybWF0U3RyaWN0SW50NDggOiBEYXRhRm9ybWF0SW50NDg7CisgICAgfQor
Citwcml2YXRlOgorICAgIFNwZWN1bGF0aXZlSklUKiBtX2ppdDsKKyAgICBFZGdlIG1fZWRnZTsK
KyAgICBHUFJSZWcgbV9ncHJPckludmFsaWQ7CisgICAgYm9vbCBtX3N0cmljdDsKK307CisKIGNs
YXNzIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgewogcHVibGljOgogICAgIGV4cGxpY2l0IFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5k
U3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDE1NTkw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDYgKzQ0LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIFVzZQogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAgb3V0LnByaW50KCJLbm93
bkludDMyIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAg
ICAgb3V0LnByaW50KCJNYWNoaW5lSW50Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVh
bE51bWJlclVzZToKICAgICAgICAgb3V0LnByaW50KCJSZWFsTnVtYmVyIik7CiAgICAgICAgIGJy
ZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHJldmlzaW9u
IDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAgVW50eXBlZFVz
ZSwKICAgICBJbnQzMlVzZSwKICAgICBLbm93bkludDMyVXNlLAorICAgIE1hY2hpbmVJbnRVc2Us
CiAgICAgUmVhbE51bWJlclVzZSwKICAgICBOdW1iZXJVc2UsCiAgICAgS25vd25OdW1iZXJVc2Us
CkBAIC02NiwxMSArNjcsMTMgQEAgQUxXQVlTX0lOTElORSBTcGVjdWxhdGVkVHlwZSB0eXBlRmls
dGVyRgogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAgICAg
ICByZXR1cm4gU3BlY0ludDMyOworICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgcmV0
dXJuIFNwZWNNYWNoaW5lSW50OwogICAgIGNhc2UgUmVhbE51bWJlclVzZToKLSAgICAgICAgcmV0
dXJuIFNwZWNSZWFsTnVtYmVyOworICAgICAgICByZXR1cm4gU3BlY0Z1bGxSZWFsTnVtYmVyOwog
ICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgIHJl
dHVybiBTcGVjTnVtYmVyOworICAgICAgICByZXR1cm4gU3BlY0Z1bGxOdW1iZXI7CiAgICAgY2Fz
ZSBCb29sZWFuVXNlOgogICAgICAgICByZXR1cm4gU3BlY0Jvb2xlYW47CiAgICAgY2FzZSBDZWxs
VXNlOgpAQCAtMTI1LDYgKzEyOCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bWVyaWNhbChV
c2VLaW5kIGsKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNh
c2UgS25vd25JbnQzMlVzZToKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgY2FzZSBSZWFs
TnVtYmVyVXNlOgogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAko
cmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgdm9pZCBWYWx1ZVNvdXJj
ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAg
ICAgIG91dC5wcmludCgiSW50MzIiKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnQ0OElu
SlNTdGFjazoKKyAgICAgICAgb3V0LnByaW50KCJJbnQ0OCIpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAgIG91dC5wcmludCgiQ2VsbCIpOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNl
LmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFs
dWVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBlbnVtIFZhbHVlU291
cmNlS2luZCB7CiAgICAgU291cmNlTm90U2V0LAogICAgIFZhbHVlSW5KU1N0YWNrLAogICAgIElu
dDMySW5KU1N0YWNrLAorICAgIEludDQ4SW5KU1N0YWNrLAogICAgIENlbGxJbkpTU3RhY2ssCiAg
ICAgQm9vbGVhbkluSlNTdGFjaywKICAgICBEb3VibGVJbkpTU3RhY2ssCkBAIC01Niw2ICs1Nyw4
IEBAIHN0YXRpYyBpbmxpbmUgVmFsdWVTb3VyY2VLaW5kIGRhdGFGb3JtYXQKICAgICBzd2l0Y2gg
KGRhdGFGb3JtYXQpIHsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjoKICAgICAgICAgcmV0dXJu
IEludDMySW5KU1N0YWNrOworICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICByZXR1
cm4gSW50NDhJbkpTU3RhY2s7CiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgICAgICBy
ZXR1cm4gRG91YmxlSW5KU1N0YWNrOwogICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CkBAIC03
OSw2ICs4Miw4IEBAIHN0YXRpYyBpbmxpbmUgRGF0YUZvcm1hdCB2YWx1ZVNvdXJjZUtpbmQKICAg
ICAgICAgcmV0dXJuIERhdGFGb3JtYXRKUzsKICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAg
ICAgICByZXR1cm4gRGF0YUZvcm1hdEludDMyOworICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6Cisg
ICAgICAgIHJldHVybiBEYXRhRm9ybWF0SW50NDg7CiAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgog
ICAgICAgICByZXR1cm4gRGF0YUZvcm1hdENlbGw7CiAgICAgY2FzZSBCb29sZWFuSW5KU1N0YWNr
OgpAQCAtMTM5LDYgKzE0NCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNv
dXJjZShEb3VibGVJbkpTU3RhY2spOwogICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAg
ICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjayk7CisgICAgICAgIGNhc2Ug
Rmx1c2hlZEludDQ4OgorICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEludDQ4SW5KU1N0
YWNrKTsKICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAgICAgICAgICAgIHJldHVybiBWYWx1
ZVNvdXJjZShDZWxsSW5KU1N0YWNrKTsKICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKQEAg
LTE4MSw2ICsxODgsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAg
ICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hl
ZEludDMyKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAg
ICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVk
SW50NDgoKTsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIENlbGxJbkpTU3RhY2s6CiAgICAg
ICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENl
bGwoKTsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YXJpYWJsZUFjY2Vzc0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzUsNyArMjM1LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhl
IHZhcmlhYmxlIGlzIG5vdCBhIG51bWJlciBwcmVkaWN0aW9uLCB0aGVuIHRoaXMgZG9lc24ndAog
ICAgICAgICAvLyBtYWtlIGFueSBzZW5zZS4KLSAgICAgICAgaWYgKCFpc051bWJlclNwZWN1bGF0
aW9uKHByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgaWYgKCFpc0Z1bGxOdW1iZXJTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogd2UgbWF5IGVuZCB1cCBm
b3JjaW5nIGEgbG9jYWwgaW4gaW5saW5lZCBhcmd1bWVudCBwb3NpdGlvbiB0byBiZSBhIGRvdWJs
ZSBldmVuCiAgICAgICAgICAgICAvLyBpZiBpdCBpcyBzb21ldGltZXMgbm90IGV2ZW4gbnVtZXJp
Yywgc2luY2UgdGhpcyBuZXZlciBzaWduYWxzIHRoZSBmYWN0IHRoYXQgaXQgZG9lc24ndAogICAg
ICAgICAgICAgLy8gd2FudCBkb3VibGVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA5NTExCkBAIC0zMzMsNiArMzMzLDkgQEAgcHVibGljOgogICAgICAgICBpZiAo
aXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIEZsdXNo
ZWRJbnQzMjsKICAgICAgICAgCisgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmICFvcGVyYW5k
SXNBcmd1bWVudChtX2xvY2FsKSAmJiBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgICAgIHJldHVybiBGbHVzaGVkSW50NDg7CisgICAgICAgIAogICAgICAgICBp
ZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gRmx1
c2hlZENlbGw7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
QXJndW1lbnRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ0FyZ3VtZW50R2V0dGVyLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDQXJndW1lbnRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwxMyArMzIsMjMgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB1c2lu
ZyBuYW1lc3BhY2UgREZHOwogCi12b2lkIENBcmd1bWVudEdldHRlcjo6bG9hZE5leHRBbmRCb3go
VmFsdWVGb3JtYXQgZm9ybWF0LCBHUFJSZWcgZGVzdGluYXRpb24sIEdQUlJlZyBzY3JhdGNoKQor
dm9pZCBDQXJndW1lbnRHZXR0ZXI6OmxvYWROZXh0QW5kQm94KAorICAgIFZhbHVlRm9ybWF0IGZv
cm1hdCwgR1BSUmVnIGRlc3RpbmF0aW9uLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNo
MikKIHsKLSAgICBpZiAoc2NyYXRjaCA9PSBJbnZhbGlkR1BSUmVnKSB7CisgICAgaWYgKHNjcmF0
Y2gxID09IEludmFsaWRHUFJSZWcpIHsKKyAgICAgICAgQVNTRVJUKHNjcmF0Y2gyID09IEludmFs
aWRHUFJSZWcpOwogICAgICAgICBpZiAoZGVzdGluYXRpb24gPT0gR1BSSW5mbzo6bm9uQXJnR1BS
MCkKLSAgICAgICAgICAgIHNjcmF0Y2ggPSBHUFJJbmZvOjpub25BcmdHUFIxOworICAgICAgICAg
ICAgc2NyYXRjaDEgPSBHUFJJbmZvOjpub25BcmdHUFIxOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzY3JhdGNoID0gR1BSSW5mbzo6bm9uQXJnR1BSMDsKKyAgICAgICAgICAgIHNjcmF0Y2gx
ID0gR1BSSW5mbzo6bm9uQXJnR1BSMDsKKyAgICB9CisgICAgaWYgKHNjcmF0Y2gyID09IEludmFs
aWRHUFJSZWcpIHsKKyAgICAgICAgaWYgKGRlc3RpbmF0aW9uICE9IEdQUkluZm86Om5vbkFyZ0dQ
UjAgJiYgc2NyYXRjaDEgIT0gR1BSSW5mbzo6bm9uQXJnR1BSMCkKKyAgICAgICAgICAgIHNjcmF0
Y2gyID0gR1BSSW5mbzo6bm9uQXJnR1BSMDsKKyAgICAgICAgZWxzZSBpZiAoZGVzdGluYXRpb24g
IT0gR1BSSW5mbzo6bm9uQXJnR1BSMSAmJiBzY3JhdGNoMSAhPSBHUFJJbmZvOjpub25BcmdHUFIx
KQorICAgICAgICAgICAgc2NyYXRjaDIgPSBHUFJJbmZvOjpub25BcmdHUFIxOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBzY3JhdGNoMiA9IEdQUkluZm86Om5vbkFyZ0dQUjI7CiAgICAgfQog
ICAgIAogICAgIHN3aXRjaCAoZm9ybWF0KSB7CkBAIC01MCwyMSArNjAsMjYgQEAgdm9pZCBDQXJn
dW1lbnRHZXR0ZXI6OmxvYWROZXh0QW5kQm94KFZhbAogICAgICAgICAgICAgCiAgICAgY2FzZSBW
YWx1ZUZvcm1hdFVJbnQzMjogewogICAgICAgICBsb2FkTmV4dDMyKGRlc3RpbmF0aW9uKTsKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNJbnQgPSBtX2ppdC5icmFuY2gzMigKLSAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsCi0gICAgICAgICAgICBk
ZXN0aW5hdGlvbiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgbV9qaXQubW92ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRj
aCk7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKGRlc3RpbmF0aW9uLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgbV9qaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAs
IGRlc3RpbmF0aW9uKTsKLSAgICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUoc2NyYXRjaCwgRlBS
SW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAgICAgICAgICAgIAotICAgICAgICBpc0ludC5saW5r
KCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyLCBkZXN0aW5hdGlvbik7CisgICAgICAgIG1faml0Lm1vdmVEb3VibGVUbzY0KEZQUkluZm86
OmZwUmVnVDAsIHNjcmF0Y2gyKTsKKyAgICAgICAgbV9qaXQuYm94SW50NDgoZGVzdGluYXRpb24s
IGRlc3RpbmF0aW9uLCBzY3JhdGNoMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgIG1faml0
Lm1vdmU2NFRvRG91YmxlKHNjcmF0Y2gyLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIFZhbHVlRm9ybWF0SW50NDg6IHsKKyAgICAg
ICAgbG9hZE5leHQ2NChkZXN0aW5hdGlvbik7CisgICAgICAgIG1faml0LnJzaGlmdDY0KEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDE2KSwgZGVzdGluYXRpb24pOworICAgICAgICBtX2pp
dC5tb3ZlRG91YmxlVG82NChGUFJJbmZvOjpmcFJlZ1QwLCBzY3JhdGNoMik7CisgICAgICAgIG1f
aml0LmJveEludDQ4KGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbiwgc2NyYXRjaDEsIEZQUkluZm86
OmZwUmVnVDApOworICAgICAgICBtX2ppdC5tb3ZlNjRUb0RvdWJsZShzY3JhdGNoMiwgRlBSSW5m
bzo6ZnBSZWdUMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgICAgIAotICAgICAg
ICBkb25lLmxpbmsoJm1faml0KTsKKyAgICBjYXNlIFZhbHVlRm9ybWF0U3RyaWN0SW50NDg6IHsK
KyAgICAgICAgbG9hZE5leHQ2NChkZXN0aW5hdGlvbik7CisgICAgICAgIG1faml0Lm1vdmVEb3Vi
bGVUbzY0KEZQUkluZm86OmZwUmVnVDAsIHNjcmF0Y2gyKTsKKyAgICAgICAgbV9qaXQuYm94SW50
NDgoZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLCBzY3JhdGNoMSwgRlBSSW5mbzo6ZnBSZWdUMCk7
CisgICAgICAgIG1faml0Lm1vdmU2NFRvRG91YmxlKHNjcmF0Y2gyLCBGUFJJbmZvOjpmcFJlZ1Qw
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCkBAIC04MCwxMCArOTUsMTAg
QEAgdm9pZCBDQXJndW1lbnRHZXR0ZXI6OmxvYWROZXh0QW5kQm94KFZhbAogICAgIH0KICAgICAg
ICAgICAgIAogICAgIGNhc2UgVmFsdWVGb3JtYXREb3VibGU6IHsKLSAgICAgICAgbV9qaXQubW92
ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRjaCk7CisgICAgICAgIG1faml0Lm1v
dmVEb3VibGVUbzY0KEZQUkluZm86OmZwUmVnVDAsIHNjcmF0Y2gxKTsKICAgICAgICAgbG9hZE5l
eHREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIG1faml0LmJveERvdWJsZShGUFJJ
bmZvOjpmcFJlZ1QwLCBkZXN0aW5hdGlvbik7Ci0gICAgICAgIG1faml0Lm1vdmU2NFRvRG91Ymxl
KHNjcmF0Y2gsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICBtX2ppdC5tb3ZlNjRUb0RvdWJs
ZShzY3JhdGNoMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDQXJndW1lbnRH
ZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENBcmd1
bWVudEdldHRlci5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENBcmd1bWVudEdldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDgg
QEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB2b2lkIGxvYWROZXh0QW5kQm94KAotICAgICAg
ICBWYWx1ZUZvcm1hdCBmb3JtYXQsIERGRzo6R1BSUmVnIGRlc3RpbmF0aW9uLCBERkc6OkdQUlJl
ZyBzY3JhdGNoID0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIFZhbHVlRm9ybWF0IGZvcm1hdCwg
REZHOjpHUFJSZWcgZGVzdGluYXRpb24sCisgICAgICAgIERGRzo6R1BSUmVnIHNjcmF0Y2gxID0g
SW52YWxpZEdQUlJlZywgREZHOjpHUFJSZWcgc2NyYXRjaDIgPSBJbnZhbGlkR1BSUmVnKTsKIAog
cHJpdmF0ZToKICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBuZXh0QWRkcmVzcygpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZp
c2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAg
ICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpCisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1i
ZXJVc2UpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoT2JqZWN0VXNlKSkKQEAgLTE3NSw2ICsxNzcsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBDb21wYXJlR3JlYXRlckVxOgogICAgICAg
ICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSkKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKQorICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVy
VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsK
QEAgLTIzNiw2ICsyNDAsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3Jh
cGgpCiAgICAgICAgICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICAgICAgICAgIGNh
c2UgSW50MzJVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgorICAgICAg
ICAgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE51bWJl
clVzZToKICAgICAgICAgICAgICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgogICAgICAgICAgICAg
ICAgIGNhc2UgUmVhbE51bWJlclVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMRXhpdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEV4aXRWYWx1ZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOSBA
QCB2b2lkIEV4aXRWYWx1ZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhCiAgICAgY2FzZSBFeGl0
VmFsdWVJbkpTU3RhY2tBc0ludDMyOgogICAgICAgICBvdXQucHJpbnQoIkluSlNTdGFja0FzSW50
MzIiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQ0
ODoKKyAgICAgICAgb3V0LnByaW50KCJJbkpTU3RhY2tBc0ludDQ4Iik7CisgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIEV4aXRWYWx1ZUluSlNTdGFja0FzRG91YmxlOgogICAgICAgICBvdXQucHJp
bnQoIkluSlNTdGFja0FzRG91YmxlIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDksNiArNDksNyBAQCBlbnVtIEV4aXRWYWx1ZUtpbmQgewogICAgIEV4aXRWYWx1ZUNvbnN0YW50
LAogICAgIEV4aXRWYWx1ZUluSlNTdGFjaywKICAgICBFeGl0VmFsdWVJbkpTU3RhY2tBc0ludDMy
LAorICAgIEV4aXRWYWx1ZUluSlNTdGFja0FzSW50NDgsCiAgICAgRXhpdFZhbHVlSW5KU1N0YWNr
QXNEb3VibGUKIH07CiAKQEAgLTgyLDYgKzgzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCisgICAgc3RhdGljIEV4aXRWYWx1ZSBpbkpTU3RhY2tBc0lu
dDQ4KCkKKyAgICB7CisgICAgICAgIEV4aXRWYWx1ZSByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5t
X2tpbmQgPSBFeGl0VmFsdWVJbkpTU3RhY2tBc0ludDQ4OworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgRXhpdFZhbHVlIGluSlNTdGFja0FzRG91YmxlKCkK
ICAgICB7CiAgICAgICAgIEV4aXRWYWx1ZSByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAkocmV2aXNpb24gMTU1
OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDkgKzM4LDEyIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRlRMIHsKIAogI2RlZmluZSBGT1JfRUFDSF9GVExfSU5UUklOU0lDKG1hY3JvKSBcCiAg
ICAgbWFjcm8oYWRkV2l0aE92ZXJmbG93MzIsICJsbHZtLnNhZGQud2l0aC5vdmVyZmxvdy5pMzIi
LCBmdW5jdGlvblR5cGUoc3RydWN0VHlwZShtX2NvbnRleHQsIGludDMyLCBib29sZWFuKSwgaW50
MzIsIGludDMyKSkgXAorICAgIG1hY3JvKGFkZFdpdGhPdmVyZmxvdzY0LCAibGx2bS5zYWRkLndp
dGgub3ZlcmZsb3cuaTY0IiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQ2
NCwgYm9vbGVhbiksIGludDY0LCBpbnQ2NCkpIFwKICAgICBtYWNybyhkb3VibGVBYnMsICJsbHZt
LmZhYnMuZjY0IiwgZnVuY3Rpb25UeXBlKGRvdWJsZVR5cGUsIGRvdWJsZVR5cGUpKSBcCiAgICAg
bWFjcm8obXVsV2l0aE92ZXJmbG93MzIsICJsbHZtLnNtdWwud2l0aC5vdmVyZmxvdy5pMzIiLCBm
dW5jdGlvblR5cGUoc3RydWN0VHlwZShtX2NvbnRleHQsIGludDMyLCBib29sZWFuKSwgaW50MzIs
IGludDMyKSkgXAorICAgIG1hY3JvKG11bFdpdGhPdmVyZmxvdzY0LCAibGx2bS5zbXVsLndpdGgu
b3ZlcmZsb3cuaTY0IiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQ2NCwg
Ym9vbGVhbiksIGludDY0LCBpbnQ2NCkpIFwKICAgICBtYWNybyhzdWJXaXRoT3ZlcmZsb3czMiwg
Imxsdm0uc3N1Yi53aXRoLm92ZXJmbG93LmkzMiIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1f
Y29udGV4dCwgaW50MzIsIGJvb2xlYW4pLCBpbnQzMiwgaW50MzIpKSBcCisgICAgbWFjcm8oc3Vi
V2l0aE92ZXJmbG93NjQsICJsbHZtLnNzdWIud2l0aC5vdmVyZmxvdy5pNjQiLCBmdW5jdGlvblR5
cGUoc3RydWN0VHlwZShtX2NvbnRleHQsIGludDY0LCBib29sZWFuKSwgaW50NjQsIGludDY0KSkg
XAogICAgIG1hY3JvKHRyYXAsICJsbHZtLnRyYXAiLCBmdW5jdGlvblR5cGUodm9pZFR5cGUpKSBc
CiAgICAgbWFjcm8ob3NyRXhpdCwgIndlYmtpdF9vc3JfZXhpdCIsIGZ1bmN0aW9uVHlwZSh2b2lk
VHlwZSwgYm9vbGVhbiwgaW50MzIsIFZhcmlhZGljKSkKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE1NTkwMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTEsNiArMTUxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBj
YXNlIE5vZGVSZXN1bHRJbnQzMjoKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG1fb3V0Lmlu
dDMyOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE5v
ZGVSZXN1bHRJbnQ0ODoKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG1fb3V0LmludDY0Owor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1
bHRCb29sZWFuOgogICAgICAgICAgICAgICAgICAgICB0eXBlID0gbV9vdXQuYm9vbGVhbjsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzksNyArMjQyLDYgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGNvbXBpbGVQaGkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEpTQ29uc3RhbnQ6Ci0gICAgICAgICAgICBjb21waWxlSlNDb25zdGFudCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgICAgICAgICBjb21w
aWxlV2Vha0pTQ29uc3RhbnQoKTsKQEAgLTQ2MSw2ICs0NjMsOSBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgbV9vdXQuc2V0KGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAgbV9vdXQuc2V0KGxvd0ludDQ4KG1fbm9kZS0+
Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBCb29sZWFuVXNlOgogICAgICAgICAgICAgbV9vdXQuc2V0KGxvd0Jvb2xlYW4obV9ub2RlLT5j
aGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDg3LDYgKzQ5
Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgogICAgICAgICAg
ICAgc2V0SW50MzIobV9vdXQuZ2V0KHNvdXJjZSkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgTm9kZVJlc3VsdEludDQ4OgorICAgICAgICAgICAgc2V0SW50NDgobV9vdXQuZ2V0
KHNvdXJjZSkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEJv
b2xlYW46CiAgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0LmdldChzb3VyY2UpKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtNTkxLDYgKzU5OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50
NDg6IHsKKyAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0ludDQ4KG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgYWRkcmVzc0Zvcih2YXJpYWJs
ZS0+bG9jYWwoKSkpOworICAgICAgICAgICAgbV92YWx1ZVNvdXJjZXMub3BlcmFuZCh2YXJpYWJs
ZS0+bG9jYWwoKSkgPSBWYWx1ZVNvdXJjZShJbnQ0OEluSlNTdGFjayk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIEZsdXNoZWRDZWxs
OiB7CiAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgYWRkcmVzc0Zvcih2YXJpYWJsZS0+
bG9jYWwoKSkpOwpAQCAtNjU1LDYgKzY3MCwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6
IHsKKyAgICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLmNv
dWxkQmVUeXBlKFNwZWNJbnQ0OCkKKyAgICAgICAgICAgICAgICAmJiAhbV9zdGF0ZS5mb3JOb2Rl
KG1fbm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAgICAgICAg
ICAgICBJbnQ0OHM8Mj4gaW50NDhzID0gbG93V2hpY2hldmVySW50NDhzKG1fbm9kZS0+Y2hpbGQx
KCksIG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIHNldEludDQ4KG1fb3V0LmFk
ZChpbnQ0OHNbMF0sIGludDQ4c1sxXSksIGludDQ4cy5raW5kKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIGxl
ZnQgPSBsb3dJbnQ0OChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdo
dCA9IGxvd0ludDQ4KG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IG1fb3V0LmFkZFdpdGhPdmVyZmxvdzY0KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0ZShJbnQ0OE92ZXJmbG93LCBub1ZhbHVlKCksIDAsIG1fb3V0LmV4dHJhY3RWYWx1ZShy
ZXN1bHQsIDEpKTsKKyAgICAgICAgICAgIHNldEludDQ4KG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1
bHQsIDApKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZSgKICAgICAgICAg
ICAgICAgICBtX291dC5kb3VibGVBZGQobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dE
b3VibGUobV9ub2RlLT5jaGlsZDIoKSkpKTsKQEAgLTY4NSw2ICs3MTYsMjIgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShtX25v
ZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAgICAgICAgICAgJiYg
IW1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgp
KSB7CisgICAgICAgICAgICAgICAgSW50NDhzPDI+IGludDQ4cyA9IGxvd1doaWNoZXZlckludDQ4
cyhtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBz
ZXRJbnQ0OChtX291dC5zdWIoaW50NDhzWzBdLCBpbnQ0OHNbMV0pLCBpbnQ0OHMua2luZCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SW50NDgobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ0OChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5zdWJXaXRoT3ZlcmZsb3c2NChsZWZ0LCByaWdodCk7
CisgICAgICAgICAgICBzcGVjdWxhdGUoSW50NDhPdmVyZmxvdywgbm9WYWx1ZSgpLCAwLCBtX291
dC5leHRyYWN0VmFsdWUocmVzdWx0LCAxKSk7CisgICAgICAgICAgICBzZXRJbnQ0OChtX291dC5l
eHRyYWN0VmFsdWUocmVzdWx0LCAwKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgICAgICBzZXRE
b3VibGUoCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlU3ViKGxvd0RvdWJsZShtX25vZGUt
PmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC03MzAsNiArNzc3
LDMwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAgICAgSW50NDhzPDI+
IGludDQ4cyA9IGxvd09wcG9zaW5nSW50NDhzKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMVmFsdWUgb3ZlcmZsb3dSZXN1bHQg
PSBtX291dC5tdWxXaXRoT3ZlcmZsb3c2NChpbnQ0OHNbMF0sIGludDQ4c1sxXSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGUoSW50NDhPdmVyZmxvdywgbm9WYWx1ZSgpLCAwLCBtX291dC5leHRyYWN0
VmFsdWUob3ZlcmZsb3dSZXN1bHQsIDEpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBt
X291dC5leHRyYWN0VmFsdWUob3ZlcmZsb3dSZXN1bHQsIDApOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG1fbm9kZS0+YXJpdGhO
b2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IEZU
TF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhNdWwgc2xvdyBjYXNlIikpOworICAgICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJp
dGhNdWwgY29udGludWF0aW9uIikpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5ub3RaZXJvNjQocmVzdWx0KSwgY29udGludWF0aW9uLCBzbG93
Q2FzZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFz
dE5leHQgPSBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAg
ICAgICAgICBzcGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIDAsIG1fb3V0Lmxlc3NU
aGFuKGludDQ4c1swXSwgbV9vdXQuaW50NjRaZXJvKSk7CisgICAgICAgICAgICAgICAgc3BlY3Vs
YXRlKE5lZ2F0aXZlWmVybywgbm9WYWx1ZSgpLCAwLCBtX291dC5sZXNzVGhhbihpbnQ0OHNbMF0s
IG1fb3V0LmludDY0WmVybykpOworICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKyAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2V0SW50NDgo
cmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZSgKICAgICAgICAg
ICAgICAgICBtX291dC5kb3VibGVNdWwobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dE
b3VibGUobV9ub2RlLT5jaGlsZDIoKSkpKTsKQEAgLTEwMzAsNiArMTEwMSwyNSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1f
bm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAgICAgICAgICAg
ICBJbnQ0OHM8MT4gdmFsdWUgPSBsb3dXaGljaGV2ZXJJbnQ0OChtX25vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQubmVnKHZhbHVlWzBdKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG1fbm9kZS0+
YXJpdGhOb2RlRmxhZ3MoKSkpCisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2
ZVplcm8sIG5vVmFsdWUoKSwgMCwgbV9vdXQuaXNaZXJvNjQocmVzdWx0KSk7CisgICAgICAgICAg
ICAgICAgc2V0SW50NDgocmVzdWx0LCB2YWx1ZS5raW5kKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIHZhbHVl
ID0gbG93SW50NDgobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgb3ZlcmZs
b3dSZXN1bHQgPSBtX291dC5zdWJXaXRoT3ZlcmZsb3c2NChtX291dC5pbnQ2NFplcm8sIHZhbHVl
KTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShJbnQ0OE92ZXJmbG93LCBub1ZhbHVlKCksIDAsIG1f
b3V0LmV4dHJhY3RWYWx1ZShvdmVyZmxvd1Jlc3VsdCwgMSkpOworICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IG1fb3V0LmV4dHJhY3RWYWx1ZShvdmVyZmxvd1Jlc3VsdCwgMCk7CisgICAgICAg
ICAgICBzcGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIDAsIG1fb3V0LmlzWmVybzY0
KHJlc3VsdCkpOworICAgICAgICAgICAgc2V0SW50NDgocmVzdWx0KTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsK
ICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5kb3VibGVOZWcobG93RG91YmxlKG1fbm9kZS0+
Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NzEsNyArMTU2MSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91YmxlKGNoaWxkMyk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAg
ICAgICAgICAgICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgY2hpbGQzLCBTcGVjUmVhbE51bWJl
ciwKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBjaGlsZDMsIFNwZWNG
dWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxP
clVub3JkZXJlZCh2YWx1ZSwgdmFsdWUpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBUeXBlZFBvaW50ZXIgZWxlbWVudFBvaW50ZXIgPSBtX291dC5iYXNlSW5kZXgoCkBAIC0x
NzA2LDYgKzE3OTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUNvbXBhcmVFcSgpCiAg
ICAgewogICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpCisgICAg
ICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKQogICAgICAg
ICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKQogICAgICAgICAgICAg
fHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSkgewogICAgICAgICAgICAgY29t
cGlsZUNvbXBhcmVTdHJpY3RFcSgpOwpAQCAtMTczMiw2ICsxODIzLDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGlmIChtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkgeworICAgICAgICAgICAgSW50NDhz
PDI+IHZhbHVlcyA9IGxvd1doaWNoZXZlckludDQ4cyhtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQuZXF1YWwodmFsdWVzWzBd
LCB2YWx1ZXNbMV0pKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKICAgICAg
ICAgICAgIHNldEJvb2xlYW4oCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlRXF1YWwobG93
RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSkpKTsK
QEAgLTE3ODAsNiArMTg3NywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIAorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFj
aGluZUludFVzZSkpIHsKKyAgICAgICAgICAgIEludDQ4czwyPiB2YWx1ZXMgPSBsb3dXaGljaGV2
ZXJJbnQ0OHMobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBzZXRCb29sZWFuKG1fb3V0Lmxlc3NUaGFuKHZhbHVlc1swXSwgdmFsdWVzWzFdKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgICAgICBzZXRCb29sZWFuKAog
ICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUxlc3NUaGFuKGxvd0RvdWJsZShtX25vZGUtPmNo
aWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC0xNzk3LDYgKzE5MDAs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7Cisg
ICAgICAgICAgICBJbnQ0OHM8Mj4gdmFsdWVzID0gbG93V2hpY2hldmVySW50NDhzKG1fbm9kZS0+
Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291
dC5sZXNzVGhhbk9yRXF1YWwodmFsdWVzWzBdLCB2YWx1ZXNbMV0pKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE51bWJlclVzZSkpIHsKICAgICAgICAgICAgIHNldEJvb2xlYW4oCiAgICAgICAgICAg
ICAgICAgbV9vdXQuZG91YmxlTGVzc1RoYW5PckVxdWFsKApAQCAtMTgxNSw2ICsxOTI0LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAg
ICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkgeworICAgICAg
ICAgICAgSW50NDhzPDI+IHZhbHVlcyA9IGxvd1doaWNoZXZlckludDQ4cyhtX25vZGUtPmNoaWxk
MSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQuZ3Jl
YXRlclRoYW4odmFsdWVzWzBdLCB2YWx1ZXNbMV0pKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51
bWJlclVzZSkpIHsKICAgICAgICAgICAgIHNldEJvb2xlYW4oCiAgICAgICAgICAgICAgICAgbV9v
dXQuZG91YmxlR3JlYXRlclRoYW4oCkBAIC0xODM0LDYgKzE5NDksMTIgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgaWYgKG1fbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAgICAgICAgICBJbnQ0OHM8
Mj4gdmFsdWVzID0gbG93V2hpY2hldmVySW50NDhzKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5ncmVhdGVyVGhhbk9yRXF1
YWwodmFsdWVzWzBdLCB2YWx1ZXNbMV0pKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVz
ZSkpIHsKICAgICAgICAgICAgIHNldEJvb2xlYW4oCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91
YmxlR3JlYXRlclRoYW5PckVxdWFsKApAQCAtMjM1MCwxMCArMjQ3MSwyNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbiB8fCAoZWRnZS51c2VLaW5kKCkgPT0gSW50MzJVc2UgfHwgZWRnZS51c2VLaW5k
KCkgPT0gS25vd25JbnQzMlVzZSkpOwogICAgICAgICAKKyAgICAgICAgaWYgKGVkZ2UtPmhhc0Nv
bnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZK
U0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNJbnQzMigp
KSB7CisgICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbV9vdXQuaW50MzJaZXJvOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIG1fb3V0LmNvbnN0SW50MzIodmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgfQorICAg
ICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0
KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQogICAgICAgICAgICAg
cmV0dXJuIHZhbHVlLnZhbHVlKCk7CiAgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0
SW50NDhWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUp
KQorICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDQ4VG9JbnQzMihlZGdlLCB2YWx1ZS52YWx1
ZSgpKTsKKyAgICAgICAgCisgICAgICAgIHZhbHVlID0gbV9pbnQ0OFZhbHVlcy5nZXQoZWRnZS5u
b2RlKCkpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4g
c3RyaWN0SW50NDhUb0ludDMyKGVkZ2UsIGludDQ4VG9TdHJpY3RJbnQ0OCh2YWx1ZS52YWx1ZSgp
KSk7CisgICAgICAgIAogICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5u
b2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKICAgICAgICAgICAgIExWYWx1
ZSBib3hlZFJlc3VsdCA9IHZhbHVlLnZhbHVlKCk7CkBAIC0yMzY5LDEwICsyNTA3LDE0OCBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gbV9vdXQuaW50MzJaZXJvOwogICAgIH0KICAgICAKKyAg
ICBlbnVtIEludDQ4S2luZCB7IFN0cmljdEludDQ4LCBJbnQ0OCB9OworICAgIExWYWx1ZSBsb3dJ
bnQ0OChFZGdlIGVkZ2UsIEludDQ4S2luZCBraW5kLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1v
ZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNl
S2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICAKKyAgICAgICAgaWYgKGVkZ2UtPmhh
c0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZhbHVl
T2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNNYWNo
aW5lSW50KCkpIHsKKyAgICAgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOworICAg
ICAgICAgICAgICAgIHJldHVybiBtX291dC5pbnQ2NFplcm87CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpbnQ2NF90IHJlc3VsdCA9IHZhbHVlLmFzTWFjaGluZUludCgpOworICAgICAgICAg
ICAgaWYgKGtpbmQgPT0gSW50NDgpCisgICAgICAgICAgICAgICAgcmVzdWx0IDw8PSAxNjsKKyAg
ICAgICAgICAgIHJldHVybiBtX291dC5jb25zdEludDY0KHJlc3VsdCk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWU7CisgICAgICAgIAorICAgICAg
ICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBJbnQ0ODoKKyAgICAgICAgICAgIHZhbHVl
ID0gbV9pbnQ0OFZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NDhWYWx1ZXMuZ2V0KGVkZ2Uu
bm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RyaWN0SW50NDhUb0ludDQ4KHZhbHVlLnZhbHVlKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0ODoKKyAgICAgICAg
ICAgIHZhbHVlID0gbV9zdHJpY3RJbnQ0OFZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAg
ICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52
YWx1ZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YWx1ZSA9IG1faW50NDhWYWx1ZXMu
Z2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaW50NDhUb1N0cmljdEludDQ4KHZhbHVlLnZhbHVlKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZhbHVlID0gbV9p
bnQzMlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkp
IHsKKyAgICAgICAgICAgIHJldHVybiBzZXRJbnQ0OFdpdGhTdHJpY3RWYWx1ZSgKKyAgICAgICAg
ICAgICAgICBlZGdlLm5vZGUoKSwgbV9vdXQuc2lnbkV4dCh2YWx1ZS52YWx1ZSgpLCBtX291dC5p
bnQ2NCksIGtpbmQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VS
VCghKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjSW50NDgpKTsKKyAgICAgICAg
CisgICAgICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAg
ICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0
ID0gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAorICAgICAgICAg
ICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFJlc3VsdCksIGVkZ2UsIFNwZWNNYWNoaW5lSW50LCBp
c05vdEludDMyKGJveGVkUmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm4gc2V0SW50NDhXaXRo
U3RyaWN0VmFsdWUoCisgICAgICAgICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0LnNpZ25FeHQo
dW5ib3hJbnQzMihib3hlZFJlc3VsdCksIG1fb3V0LmludDY0KSwga2luZCk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2Up
Lm1fdHlwZSAmIFNwZWNNYWNoaW5lSW50KSk7CisgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJs
ZSk7CisgICAgICAgIHJldHVybiBtX291dC5pbnQ2NFplcm87CisgICAgfQorICAgIAorICAgIExW
YWx1ZSBsb3dJbnQ0OChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1
dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBsb3dJbnQ0
OChlZGdlLCBJbnQ0OCwgbW9kZSk7CisgICAgfQorICAgIAorICAgIExWYWx1ZSBsb3dTdHJpY3RJ
bnQ0OChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09w
ZXJhbmRTcGVjdWxhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBsb3dJbnQ0OChlZGdlLCBT
dHJpY3RJbnQ0OCwgbW9kZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgYmV0dGVyVXNlU3RyaWN0
SW50NDgoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhaXNWYWxpZChtX2ludDQ4
VmFsdWVzLmdldChub2RlKSk7CisgICAgfQorICAgIGJvb2wgYmV0dGVyVXNlU3RyaWN0SW50NDgo
RWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJldHRlclVzZVN0cmljdEludDQ4KGVk
Z2Uubm9kZSgpKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBJbnQ0OEtp
bmQgYmVzdEludDQ4S2luZChUIG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gYmV0dGVyVXNl
U3RyaWN0SW50NDgobm9kZSkgPyBTdHJpY3RJbnQ0OCA6IEludDQ4OworICAgIH0KKyAgICBJbnQ0
OEtpbmQgb3Bwb3NpdGUoSW50NDhLaW5kIGtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGtp
bmQpIHsKKyAgICAgICAgY2FzZSBJbnQ0ODoKKyAgICAgICAgICAgIHJldHVybiBTdHJpY3RJbnQ0
ODsKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0ODoKKyAgICAgICAgICAgIHJldHVybiBJbnQ0ODsK
KyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
KyAgICAKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjb3VudD4KKyAgICBzdHJ1Y3QgSW50NDhzIHsK
KyAgICAgICAgTFZhbHVlIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlc1tpbmRleF07IH0KKyAgICAgICAgTFZhbHVlJiBvcGVyYXRvcltdKHVuc2lnbmVkIGlu
ZGV4KSB7IHJldHVybiB2YWx1ZXNbaW5kZXhdOyB9CisgICAgICAgIAorICAgICAgICBJbnQ0OEtp
bmQga2luZDsKKyAgICAgICAgRml4ZWRBcnJheTxMVmFsdWUsIGNvdW50PiB2YWx1ZXM7CisgICAg
fTsKKyAgICBJbnQ0OHM8MT4gbG93V2hpY2hldmVySW50NDgoRWRnZSBlZGdlLCBPcGVyYW5kU3Bl
Y3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgewor
ICAgICAgICBJbnQ0OHM8MT4gcmVzdWx0OworICAgICAgICByZXN1bHQua2luZCA9IGJlc3RJbnQ0
OEtpbmQoZWRnZSk7CisgICAgICAgIHJlc3VsdFswXSA9IGxvd0ludDQ4KGVkZ2UsIHJlc3VsdC5r
aW5kLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgSW50NDhzPDI+
IGxvd1doaWNoZXZlckludDQ4cyhFZGdlIGVkZ2UxLCBFZGdlIGVkZ2UyLCBPcGVyYW5kU3BlY3Vs
YXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAg
ICAgICBJbnQ0OHM8Mj4gcmVzdWx0OworICAgICAgICByZXN1bHQua2luZCA9IGJlc3RJbnQ0OEtp
bmQoZWRnZTEpOworICAgICAgICByZXN1bHRbMF0gPSBsb3dJbnQ0OChlZGdlMSwgcmVzdWx0Lmtp
bmQsIG1vZGUpOworICAgICAgICByZXN1bHRbMV0gPSBsb3dJbnQ0OChlZGdlMiwgcmVzdWx0Lmtp
bmQsIG1vZGUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBJbnQ0OHM8Mj4g
bG93T3Bwb3NpbmdJbnQ0OHMoRWRnZSBlZGdlMSwgRWRnZSBlZGdlMiwgT3BlcmFuZFNwZWN1bGF0
aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAg
ICAgSW50NDhzPDI+IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LmtpbmQgPSBiZXN0SW50NDhLaW5k
KGVkZ2UxKTsKKyAgICAgICAgcmVzdWx0WzBdID0gbG93SW50NDgoZWRnZTEsIHJlc3VsdC5raW5k
LCBtb2RlKTsKKyAgICAgICAgcmVzdWx0WzFdID0gbG93SW50NDgoZWRnZTIsIG9wcG9zaXRlKHJl
c3VsdC5raW5kKSwgbW9kZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAog
ICAgIExWYWx1ZSBsb3dDZWxsKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2Rl
ID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBpc0NlbGwoZWRn
ZS51c2VLaW5kKCkpKTsKICAgICAgICAgCisgICAgICAgIGlmIChlZGdlLT5vcCgpID09IEpTQ29u
c3RhbnQpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZKU0Nv
bnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkpIHsK
KyAgICAgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOworICAgICAgICAgICAgICAg
IHJldHVybiBtX291dC5pbnRQdHJaZXJvOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIG1fb3V0LmNvbnN0SW50UHRyKHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAgICAgfQorICAgICAg
ICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQo
ZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKICAgICAgICAgICAg
IExWYWx1ZSB1bmNoZWNrZWRWYWx1ZSA9IHZhbHVlLnZhbHVlKCk7CkBAIC0yNDE3LDYgKzI2OTMs
MTUgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9
PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gQm9vbGVhblVz
ZSk7CiAgICAgICAgIAorICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgeworICAgICAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2Rl
KCkpOworICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0Jvb2xlYW4oKSkgeworICAgICAgICAgICAg
ICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0
LmJvb2xlYW5GYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtX291dC5j
b25zdEJvb2wodmFsdWUuYXNCb29sZWFuKCkpOworICAgICAgICB9CisgICAgICAgIAogICAgICAg
ICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9ib29sZWFuVmFsdWVzLmdldChlZGdlLm5vZGUo
KSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1
ZS52YWx1ZSgpOwpAQCAtMjQ0MCw2ICsyNzI1LDE1IEBAIHByaXZhdGU6CiAgICAgewogICAgICAg
ICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8
IGlzRG91YmxlKGVkZ2UudXNlS2luZCgpKSk7CiAgICAgICAgIAorICAgICAgICBpZiAoZWRnZS0+
aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudmFs
dWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc051
bWJlcigpKSB7CisgICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbV9vdXQuZG91YmxlWmVybzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiBtX291dC5jb25zdERvdWJsZSh2YWx1ZS5hc051bWJlcigpKTsKKyAgICAg
ICAgfQorICAgICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1fZG91Ymxl
VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOwpAQCAtMjQ1MSw2ICsyNzQ1LDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAor
ICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NDhWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAg
ICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDQ4
VG9Eb3VibGUoZWRnZSwgdmFsdWUudmFsdWUoKSk7CisgICAgICAgIAorICAgICAgICB2YWx1ZSA9
IG1faW50NDhWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFs
dWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDQ4VG9Eb3VibGUoZWRnZSwgaW50NDhU
b1N0cmljdEludDQ4KHZhbHVlLnZhbHVlKCkpKTsKKyAgICAgICAgCiAgICAgICAgIHZhbHVlID0g
bV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZh
bHVlKSkgewogICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gdmFsdWUudmFsdWUoKTsK
QEAgLTI0NzAsNyArMjc3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhkb3VibGVDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBG
VExfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoYm94ZWRSZXN1bHQp
LCBlZGdlLCBTcGVjTnVtYmVyLCBpc0NlbGxPck1pc2MoYm94ZWRSZXN1bHQpKTsKKyAgICAgICAg
ICAgICAgICBqc1ZhbHVlVmFsdWUoYm94ZWRSZXN1bHQpLCBlZGdlLCBTcGVjRnVsbE51bWJlciwg
aXNDZWxsT3JNaXNjKGJveGVkUmVzdWx0KSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIHVuYm94ZWREb3VibGUgPSBtX291dC5hbmNob3IodW5ib3hEb3VibGUoYm94
ZWRSZXN1bHQpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTI0
ODMsNyArMjc4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fc3RhdGUuZm9yTm9k
ZShlZGdlKS5tX3R5cGUgJiBTcGVjTnVtYmVyKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEo
bV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNGdWxsTnVtYmVyKSk7CiAgICAgICAg
IHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7CiAgICAgICAgIHJldHVybiBtX291dC5kb3VibGVaZXJv
OwogICAgIH0KQEAgLTI0OTIsNiArMjc5NCw5IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBB
U1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVk
Z2UudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICAKKyAgICAgICAgaWYgKGVkZ2Ut
Pmhhc0NvbnN0YW50KCkpCisgICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjplbmNvZGUobV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSkpKTsKKyAg
ICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMu
Z2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQogICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlLnZhbHVlKCk7CkBAIC0yNTAzLDYgKzI4MDgsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAg
IHZhbHVlID0gbV9zdHJpY3RJbnQ0OFZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBp
ZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gc3RyaWN0SW50NDhUb0pTVmFs
dWUodmFsdWUudmFsdWUoKSk7CisgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1faW50NDhWYWx1
ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQorICAgICAg
ICAgICAgcmV0dXJuIHN0cmljdEludDQ4VG9KU1ZhbHVlKGludDQ4VG9TdHJpY3RJbnQ0OCh2YWx1
ZS52YWx1ZSgpKSk7CisgICAgICAgIAogICAgICAgICB2YWx1ZSA9IG1fYm9vbGVhblZhbHVlcy5n
ZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKICAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSBib3hCb29sZWFuKHZhbHVlLnZhbHVlKCkpOwpAQCAtMjUzMiw2
ICsyODQ1LDc3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAorICAgIExWYWx1ZSBzdHJpY3RJbnQ0OFRvSW50MzIoRWRnZSBlZGdlLCBMVmFsdWUgdmFsdWUp
CisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuY2FzdFRvSW50MzIodmFsdWUp
OworICAgICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgIG5vVmFsdWUoKSwgZWRnZSwg
U3BlY0ludDMyLAorICAgICAgICAgICAgbV9vdXQubm90RXF1YWwobV9vdXQuc2lnbkV4dChyZXN1
bHQsIG1fb3V0LmludDY0KSwgdmFsdWUpKTsKKyAgICAgICAgc2V0SW50MzIoZWRnZS5ub2RlKCks
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIExWYWx1
ZSBzdHJpY3RJbnQ0OFRvRG91YmxlKEVkZ2UgZWRnZSwgTFZhbHVlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmludFRvRG91YmxlKHZhbHVlKTsKKyAgICAgICAg
c2V0RG91YmxlKGVkZ2Uubm9kZSgpLCByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKyAgICAKKyAgICBMVmFsdWUgc3RyaWN0SW50NDhUb0pTVmFsdWUoTFZhbHVlIHZhbHVl
KQorICAgIHsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNJbnQzMiA9IEZUTF9ORVdfQkxPQ0sobV9v
dXQsICgic3RyaWN0SW50NDhUb0pTVmFsdWUgaXNJbnQzMiBjYXNlIikpOworICAgICAgICBMQmFz
aWNCbG9jayBpc0RvdWJsZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaWN0SW50NDhUb0pT
VmFsdWUgaXNEb3VibGUgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJzdHJpY3RJbnQ0OFRvSlNWYWx1ZSBjb250aW51YXRp
b24iKSk7CisgICAgICAgIAorICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2ssIDI+IHJlc3Vs
dHM7CisgICAgICAgICAgICAKKyAgICAgICAgTFZhbHVlIGludDMyVmFsdWUgPSBtX291dC5jYXN0
VG9JbnQzMih2YWx1ZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1fb3V0
LmVxdWFsKG1fb3V0LnNpZ25FeHQoaW50MzJWYWx1ZSwgbV9vdXQuaW50NjQpLCB2YWx1ZSksCisg
ICAgICAgICAgICBpc0ludDMyLCBpc0RvdWJsZSk7CisgICAgICAgIAorICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW50MzIsIGlzRG91YmxlKTsKKyAgICAg
ICAgCisgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihib3hJbnQzMihpbnQzMlZh
bHVlKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgIAorICAg
ICAgICBtX291dC5hcHBlbmRUbyhpc0RvdWJsZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgCisg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihib3hEb3VibGUobV9vdXQuaW50VG9E
b3VibGUodmFsdWUpKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAg
ICAgIAorICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAg
ICAgICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5pbnQ2NCwgcmVzdWx0cyk7CisgICAgfQorICAg
IAorICAgIExWYWx1ZSBzZXRJbnQ0OFdpdGhTdHJpY3RWYWx1ZShOb2RlKiBub2RlLCBMVmFsdWUg
dmFsdWUsIEludDQ4S2luZCBraW5kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7Cisg
ICAgICAgIGNhc2UgU3RyaWN0SW50NDg6CisgICAgICAgICAgICBzZXRTdHJpY3RJbnQ0OChub2Rl
LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBJbnQ0ODoKKyAgICAgICAgICAgIHZhbHVlID0gc3RyaWN0SW50NDhUb0ludDQ4KHZh
bHVlKTsKKyAgICAgICAgICAgIHNldEludDQ4KG5vZGUsIHZhbHVlKTsKKyAgICAgICAgICAgIHJl
dHVybiB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgTFZhbHVlIHN0
cmljdEludDQ4VG9JbnQ0OChMVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbV9v
dXQuc2hsKHZhbHVlLCBtX291dC5jb25zdEludDY0KDE2KSk7CisgICAgfQorICAgIAorICAgIExW
YWx1ZSBpbnQ0OFRvU3RyaWN0SW50NDgoTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fb3V0LmFTaHIodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoMTYpKTsKKyAgICB9CisgICAg
CiAgICAgTFZhbHVlIGlzTm90SW50MzIoTFZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9vdXQuYmVsb3coanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKTsKQEAgLTI3OTIsNyAr
MzE3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dE
b3VibGUoZWRnZSk7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgZG91Ymxl
VmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgICAgIGRvdWJsZVZh
bHVlKHZhbHVlKSwgZWRnZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICAgICAgbV9vdXQu
ZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCh2YWx1ZSwgdmFsdWUpKTsKICAgICB9CiAgICAgCkBA
IC0yODAwLDcgKzMxODQsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbG93Qm9vbGVhbihl
ZGdlKTsKICAgICB9Ci0KKyAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50SXNTdGlsbFZhbGlkKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2dyYXBoLm1hc3F1
ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKG1fbm9kZS0+Y29kZU9yaWdp
bik7CkBAIC0yOTMxLDYgKzMzMTUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX3Zh
bHVlU291cmNlc1tpXSA9IFZhbHVlU291cmNlKEludDMySW5KU1N0YWNrKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZElu
dDQ4OgorICAgICAgICAgICAgICAgIG1fdmFsdWVTb3VyY2VzW2ldID0gVmFsdWVTb3VyY2UoSW50
NDhJbkpTU3RhY2spOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICAgICAgICAgIG1fdmFsdWVT
b3VyY2VzW2ldID0gVmFsdWVTb3VyY2UoRG91YmxlSW5KU1N0YWNrKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTMwMzQsNiArMzQyMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNl
IEludDMySW5KU1N0YWNrOgogICAgICAgICAgICAgICAgIGV4aXQubV92YWx1ZXNbaV0gPSBFeGl0
VmFsdWU6OmluSlNTdGFja0FzSW50MzIoKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgICAgICAgICAgZXhpdC5tX3ZhbHVl
c1tpXSA9IEV4aXRWYWx1ZTo6aW5KU1N0YWNrQXNJbnQ0OCgpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBEb3VibGVJbkpTU3RhY2s6CiAgICAgICAgICAgICAgICAg
ZXhpdC5tX3ZhbHVlc1tpXSA9IEV4aXRWYWx1ZTo6aW5KU1N0YWNrQXNEb3VibGUoKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTMxMzcsNiArMzUyOCwxOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1faW50
NDhWYWx1ZXMuZ2V0KG5vZGUpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAg
ICAgICAgIGFkZEV4aXRBcmd1bWVudChleGl0LCBhcmd1bWVudHMsIGluZGV4LCBWYWx1ZUZvcm1h
dEludDQ4LCB2YWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDQ4VmFsdWVzLmdldChub2RlKTsK
KyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICBhZGRFeGl0QXJndW1l
bnQoZXhpdCwgYXJndW1lbnRzLCBpbmRleCwgVmFsdWVGb3JtYXRTdHJpY3RJbnQ0OCwgdmFsdWUu
dmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIHZhbHVlID0gbV9ib29sZWFuVmFsdWVzLmdldChub2RlKTsKICAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKSB7CiAgICAgICAgICAgICBhZGRFeGl0QXJndW1lbnQoZXhpdCwgYXJndW1lbnRz
LCBpbmRleCwgVmFsdWVGb3JtYXRCb29sZWFuLCB2YWx1ZS52YWx1ZSgpKTsKQEAgLTMyNDAsNiAr
MzY0MywyOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9pbnQzMlZhbHVlcy5zZXQobm9k
ZSwgTG93ZXJlZE5vZGVWYWx1ZSh2YWx1ZSwgbV9oaWdoQmxvY2spKTsKICAgICB9CisgICAgdm9p
ZCBzZXRJbnQ0OChOb2RlKiBub2RlLCBMVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBtX2lu
dDQ4VmFsdWVzLnNldChub2RlLCBMb3dlcmVkTm9kZVZhbHVlKHZhbHVlLCBtX2hpZ2hCbG9jaykp
OworICAgIH0KKyAgICB2b2lkIHNldFN0cmljdEludDQ4KE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1
ZSkKKyAgICB7CisgICAgICAgIG1fc3RyaWN0SW50NDhWYWx1ZXMuc2V0KG5vZGUsIExvd2VyZWRO
b2RlVmFsdWUodmFsdWUsIG1faGlnaEJsb2NrKSk7CisgICAgfQorICAgIHZvaWQgc2V0SW50NDgo
Tm9kZSogbm9kZSwgTFZhbHVlIHZhbHVlLCBJbnQ0OEtpbmQga2luZCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIEludDQ4OgorICAgICAgICAgICAgc2V0SW50
NDgobm9kZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgU3RyaWN0SW50NDg6CisgICAgICAgICAgICBzZXRTdHJpY3RJbnQ0OChub2RlLCB2
YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogICAgIHZvaWQgc2V0SlNWYWx1
ZShOb2RlKiBub2RlLCBMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBtX2pzVmFsdWVWYWx1
ZXMuc2V0KG5vZGUsIExvd2VyZWROb2RlVmFsdWUodmFsdWUsIG1faGlnaEJsb2NrKSk7CkBAIC0z
MjYxLDYgKzM2ODYsMTggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNldEludDMyKG1fbm9k
ZSwgdmFsdWUpOwogICAgIH0KKyAgICB2b2lkIHNldEludDQ4KExWYWx1ZSB2YWx1ZSkKKyAgICB7
CisgICAgICAgIHNldEludDQ4KG1fbm9kZSwgdmFsdWUpOworICAgIH0KKyAgICB2b2lkIHNldFN0
cmljdEludDQ4KExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIHNldFN0cmljdEludDQ4KG1f
bm9kZSwgdmFsdWUpOworICAgIH0KKyAgICB2b2lkIHNldEludDQ4KExWYWx1ZSB2YWx1ZSwgSW50
NDhLaW5kIGtpbmQpCisgICAgeworICAgICAgICBzZXRJbnQ0OChtX25vZGUsIHZhbHVlLCBraW5k
KTsKKyAgICB9CiAgICAgdm9pZCBzZXRKU1ZhbHVlKExWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIHNldEpTVmFsdWUobV9ub2RlLCB2YWx1ZSk7CkBAIC0zMzQwLDYgKzM3NzcsOCBAQCBwcml2
YXRlOgogICAgIExWYWx1ZSBtX3RhZ01hc2s7CiAgICAgCiAgICAgSGFzaE1hcDxOb2RlKiwgTG93
ZXJlZE5vZGVWYWx1ZT4gbV9pbnQzMlZhbHVlczsKKyAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVk
Tm9kZVZhbHVlPiBtX3N0cmljdEludDQ4VmFsdWVzOworICAgIEhhc2hNYXA8Tm9kZSosIExvd2Vy
ZWROb2RlVmFsdWU+IG1faW50NDhWYWx1ZXM7CiAgICAgSGFzaE1hcDxOb2RlKiwgTG93ZXJlZE5v
ZGVWYWx1ZT4gbV9qc1ZhbHVlVmFsdWVzOwogICAgIEhhc2hNYXA8Tm9kZSosIExvd2VyZWROb2Rl
VmFsdWU+IG1fYm9vbGVhblZhbHVlczsKICAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZh
bHVlPiBtX3N0b3JhZ2VWYWx1ZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNCw2ICsxMDQsOCBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAgaml0
LnN0b3JlNjQoR1BSSW5mbzo6bm9uQXJnR1BSMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KGFyZ3VtZW50Lm9wZXJhbmQoKSkpOwogICAgIH0KICAgICAKKyAgICAvLyBBbGwgdGVtcCByZWdp
c3RlcnMgYXJlIGZyZWUgYXQgdGhpcyBwb2ludC4KKyAgICAKICAgICAvLyBCb3ggYW55dGhpbmcg
dGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBzdGFjaywgb3IgdGhhdCBpcyBhIGNvbnN0YW50LgogICAg
IAogICAgIGZvciAodW5zaWduZWQgaSA9IGV4aXQubV92YWx1ZXMuc2l6ZSgpOyBpLS07KSB7CkBA
IC0xMjgsNiArMTMwLDEyIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICAgICAg
aml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7
CiAgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgYWRkcmVzcyk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFeGl0VmFsdWVJbkpTU3RhY2tBc0ludDQ4Ogor
ICAgICAgICAgICAgaml0LmxvYWQ2NChhZGRyZXNzLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
ICAgICBqaXQucnNoaWZ0NjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTYpLCBHUFJJ
bmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuYm94SW50NDgoR1BSSW5mbzo6cmVnVDAsIEdQ
UkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAg
ICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgYWRkcmVzcyk7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBFeGl0VmFsdWVJbkpTU3RhY2tBc0RvdWJsZToKICAgICAgICAg
ICAgIGppdC5sb2FkRG91YmxlKGFkZHJlc3MsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAg
ICAgaml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CkBAIC0x
NjAsOSArMTY4LDEwIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgIGV4aXQubV9jb2Rl
ID0gRklOQUxJWkVfQ09ERV9JRigKICAgICAgICAgc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCksCiAg
ICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAoIkZUTCBPU1IgZXhpdCAjJXUgKGJjIyV1LCAl
cykgZnJvbSAlcyIsCisgICAgICAgICgiRlRMIE9TUiBleGl0ICMldSAoYmMjJXUsICVzKSBmcm9t
ICVzLCB3aXRoIG9wZXJhbmRzID0gJXMiLAogICAgICAgICAgICAgZXhpdElELCBleGl0Lm1fY29k
ZU9yaWdpbi5ieXRlY29kZUluZGV4LAotICAgICAgICAgICAgZXhpdEtpbmRUb1N0cmluZyhleGl0
Lm1fa2luZCksIHRvQ1N0cmluZygqY29kZUJsb2NrKS5kYXRhKCkpKTsKKyAgICAgICAgICAgIGV4
aXRLaW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0b0NTdHJpbmcoKmNvZGVCbG9jaykuZGF0YSgp
LAorICAgICAgICAgICAgdG9DU3RyaW5nKGlnbm9yaW5nQ29udGV4dDxEdW1wQ29udGV4dD4oZXhp
dC5tX3ZhbHVlcykpLmRhdGEoKSkpOwogfQogCiBleHRlcm4gIkMiIHZvaWQqIGNvbXBpbGVGVExP
U1JFeGl0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgZXhpdElEKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2
LDE4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBjYWxsKG11bFdpdGhPdmVyZmxv
dzMySW50cmluc2ljKCksIGxlZnQsIHJpZ2h0KTsKICAgICB9CisgICAgTFZhbHVlIGFkZFdpdGhP
dmVyZmxvdzY0KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCisgICAgeworICAgICAgICByZXR1
cm4gY2FsbChhZGRXaXRoT3ZlcmZsb3c2NEludHJpbnNpYygpLCBsZWZ0LCByaWdodCk7CisgICAg
fQorICAgIExWYWx1ZSBzdWJXaXRoT3ZlcmZsb3c2NChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNhbGwoc3ViV2l0aE92ZXJmbG93NjRJbnRyaW5zaWMo
KSwgbGVmdCwgcmlnaHQpOworICAgIH0KKyAgICBMVmFsdWUgbXVsV2l0aE92ZXJmbG93NjQoTFZh
bHVlIGxlZnQsIExWYWx1ZSByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBjYWxsKG11bFdp
dGhPdmVyZmxvdzY0SW50cmluc2ljKCksIGxlZnQsIHJpZ2h0KTsKKyAgICB9CiAgICAgTFZhbHVl
IGRvdWJsZUFicyhMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gY2FsbChkb3Vi
bGVBYnNJbnRyaW5zaWMoKSwgdmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExWYWx1ZUZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExWYWx1ZUZvcm1hdC5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2
ICs0NCwxMiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVmFsCiAgICAg
Y2FzZSBWYWx1ZUZvcm1hdFVJbnQzMjoKICAgICAgICAgb3V0LnByaW50KCJVSW50MzIiKTsKICAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgVmFsdWVGb3JtYXRJbnQ0ODoKKyAgICAgICAgb3V0LnBy
aW50KCJJbnQ0OCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWYWx1ZUZvcm1hdFN0cmlj
dEludDQ4OgorICAgICAgICBvdXQucHJpbnQoIlN0cmljdEludDQ4Iik7CisgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIFZhbHVlRm9ybWF0Qm9vbGVhbjoKICAgICAgICAgb3V0LnByaW50KCJCb29s
ZWFuIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMVmFsdWVGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFZhbHVlRm9ybWF0LmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBA
QCBlbnVtIFZhbHVlRm9ybWF0IHsKICAgICBJbnZhbGlkVmFsdWVGb3JtYXQsCiAgICAgVmFsdWVG
b3JtYXRJbnQzMiwKICAgICBWYWx1ZUZvcm1hdFVJbnQzMiwKKyAgICBWYWx1ZUZvcm1hdEludDQ4
LAorICAgIFZhbHVlRm9ybWF0U3RyaWN0SW50NDgsCiAgICAgVmFsdWVGb3JtYXRCb29sZWFuLAog
ICAgIFZhbHVlRm9ybWF0SlNWYWx1ZSwKICAgICBWYWx1ZUZvcm1hdERvdWJsZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVNvdXJjZS5jcHAJKHJldmlzaW9uIDE1
NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVTb3VyY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw5IEBAIHZvaWQgVmFsdWVTb3VyY2U6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkKICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICBvdXQucHJp
bnQoIkludDMySW5KU1N0YWNrIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEludDQ4SW5K
U1N0YWNrOgorICAgICAgICBvdXQucHJpbnQoIkludDQ4SW5KU1N0YWNrIik7CisgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIERvdWJsZUluSlNTdGFjazoKICAgICAgICAgb3V0LnByaW50KCJEb3Vi
bGVJbkpTU3RhY2siKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExWYWx1ZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMVmFsdWVTb3VyY2UuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCw3IEBAIGVudW0gVmFsdWVTb3VyY2VLaW5kIHsKICAgICBTb3VyY2VOb3RTZXQsCiAgICAg
VmFsdWVJbkpTU3RhY2ssCiAgICAgSW50MzJJbkpTU3RhY2ssCisgICAgSW50NDhJbkpTU3RhY2ss
CiAgICAgRG91YmxlSW5KU1N0YWNrLAogICAgIFNvdXJjZUlzRGVhZCwKICAgICBIYXZlTm9kZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgJKHJl
dmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdp
c3Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBJbnN0cnVjdGlvbiogdlBDKCkgY29uc3Q7CiAgICAgICAgIElubGluZUNhbGxGcmFt
ZSogYXNJbmxpbmVDYWxsRnJhbWUoKSBjb25zdDsKICAgICAgICAgaW50MzJfdCB1bmJveGVkSW50
MzIoKSBjb25zdDsKKyAgICAgICAgaW50NjRfdCB1bmJveGVkSW50NDgoKSBjb25zdDsKICAgICAg
ICAgYm9vbCB1bmJveGVkQm9vbGVhbigpIGNvbnN0OwogICAgICAgICBkb3VibGUgdW5ib3hlZERv
dWJsZSgpIGNvbnN0OwogICAgICAgICBKU0NlbGwqIHVuYm94ZWRDZWxsKCkgY29uc3Q7CkBAIC05
OCw2ICs5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIGVu
Y29kZWRWYWx1ZTsKICAgICAgICAgICAgIGRvdWJsZSBudW1iZXI7CisgICAgICAgICAgICBpbnQ2
NF90IGludGVnZXI7CiAgICAgICAgIH0gdTsKICAgICB9OwogCkBAIC0xODUsNiArMTg3LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gcGF5bG9hZCgpOwogICAgIH0KIAorICAg
IEFMV0FZU19JTkxJTkUgaW50NjRfdCBSZWdpc3Rlcjo6dW5ib3hlZEludDQ4KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiB1LmludGVnZXIgPj4gMTY7CisgICAgfQorCiAgICAgQUxXQVlT
X0lOTElORSBib29sIFJlZ2lzdGVyOjp1bmJveGVkQm9vbGVhbigpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gISFwYXlsb2FkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Myw2ICsz
ODMsOSBAQCB2b2lkIEFyZ3VtZW50czo6dGVhck9mZkZvcklubGluZUNhbGxGcmFtCiAgICAgICAg
IGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgogICAgICAgICAgICAgdmFsdWUg
PSBqc051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDMyKCkpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OgorICAgICAgICAg
ICAgdmFsdWUgPSBqc051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDQ4KCkpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAg
ICAgICAgICAgICB2YWx1ZSA9IGxvY2F0aW9uLT51bmJveGVkQ2VsbCgpOwogICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGluZ1R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGV4aW5n
VHlwZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luZGV4aW5nVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDExICs1MCwxMSBAQCBJ
bmRleGluZ1R5cGUgbGVhc3RVcHBlckJvdW5kT2ZJbmRleGluZ1R5CiAgICAgY2FzZSBBTExfSU5U
MzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24odHlwZSkp
CiAgICAgICAgICAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFzaykg
fCBJbnQzMlNoYXBlOwotICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbih0eXBlKSkKKyAg
ICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHR5cGUpKQogICAgICAgICAgICAgcmV0
dXJuIChpbmRleGluZ1R5cGUgJiB+SW5kZXhpbmdTaGFwZU1hc2spIHwgRG91YmxlU2hhcGU7CiAg
ICAgICAgIHJldHVybiAoaW5kZXhpbmdUeXBlICYgfkluZGV4aW5nU2hhcGVNYXNrKSB8IENvbnRp
Z3VvdXNTaGFwZTsKICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAg
IGlmIChpc051bWJlclNwZWN1bGF0aW9uKHR5cGUpKQorICAgICAgICBpZiAoaXNGdWxsTnVtYmVy
U3BlY3VsYXRpb24odHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gaW5kZXhpbmdUeXBlOwogICAg
ICAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFzaykgfCBDb250aWd1
b3VzU2hhcGU7CiAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE1
NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTkxLDYgKzE5MSw3IEBAIHB1YmxpYzoKIAogICAgIGludDMyX3QgYXNJ
bnQzMigpIGNvbnN0OwogICAgIHVpbnQzMl90IGFzVUludDMyKCkgY29uc3Q7CisgICAgaW50NjRf
dCBhc01hY2hpbmVJbnQoKSBjb25zdDsKICAgICBkb3VibGUgYXNEb3VibGUoKSBjb25zdDsKICAg
ICBib29sIGFzQm9vbGVhbigpIGNvbnN0OwogICAgIGRvdWJsZSBhc051bWJlcigpIGNvbnN0OwpA
QCAtMjAyLDYgKzIwMyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAg
IGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdDsKICAgICBib29sIGlzQm9vbGVhbigpIGNv
bnN0OworICAgIGJvb2wgaXNNYWNoaW5lSW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc051bWJlcigp
IGNvbnN0OwogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzUHJpbWl0aXZl
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5NCw2
ICs0OTQsMzUgQEAgQUxXQVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIAogCiAj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNNYWNoaW5l
SW50KCkgY29uc3QKK3sKKyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAoIWlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkb3VibGUg
bnVtYmVyID0gYXNEb3VibGUoKTsKKyAgICBpZiAobnVtYmVyICE9IG51bWJlcikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGludDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+
KG51bWJlcik7CisgICAgaWYgKGFzSW50NjQgIT0gbnVtYmVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFhc0ludDY0ICYmIHN0ZDo6c2lnbmJpdChudW1iZXIpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKGFzSW50NjQgPj0gKHN0YXRpY19jYXN0PGludDY0X3Q+KDEp
IDw8IDQ3KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhc0ludDY0IDwgLShzdGF0
aWNfY2FzdDxpbnQ2NF90PigxKSA8PCA0NykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGludDY0X3QgSlNWYWx1ZTo6YXNNYWNoaW5lSW50KCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWNoaW5lSW50KCkpOworICAgIGlmIChpc0ludDMyKCkp
CisgICAgICAgIHJldHVybiBhc0ludDMyKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0
X3Q+KGFzRG91YmxlKCkpOworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1N0cmluZygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N0cmluZygpOwo=
</data>
<flag name="commit-queue"
          id="233966"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211853</attachid>
            <date>2013-09-16 18:45:43 -0700</date>
            <delta_ts>2013-09-16 19:05:49 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>206852</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1OTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwOSBA
QAorMjAxMy0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgc3VwcG9ydCBJbnQ0OCBmb3IgbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEwNjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWRkcyBJ
bnQ0OCBzdXBwb3J0IGZvciBsb2NhbCB2YXJpYWJsZXMgdG8gdGhlIERGRyBhbmQgRlRMLiBJdCdz
IGEgc3BlZWQtdXAgb24KKyAgICAgICAgcHJvZ3JhbXMgdGhhdCBoYXZlIGxvY2FsIGludDMyIG92
ZXJmbG93cyBidXQgd2hlcmUgYSBsYXJnZXIgaW50IHJlcHJlc2VudGF0aW9uIGNhbgorICAgICAg
ICBwcmV2ZW50IHVzIGZyb20gaGF2aW5nIHRvIGNvbnZlcnQgYWxsIHRoZSB3YXkgdXAgdG8gZG91
YmxlLgorICAgICAgICAKKyAgICAgICAgSXQncyBhIHNtYWxsIHNwZWVkLXVwIGZvciBub3cuIEJ1
dCB3ZSdyZSBqdXN0IHN1cHBvcnRpbmcgSW50NDggZm9yIGEgaGFuZGZ1bCBvZgorICAgICAgICBv
cGVyYXRpb25zIChhZGQsIHN1YiwgbXVsLCBuZWcsIGNvbXBhcmUsIGJpdG9wcywgdHlwZWQgYXJy
YXkgYWNjZXNzKSBhbmQgdGhpcyBsYXlzCisgICAgICAgIHRoZSBncm91bmR3b3JrIGZvciBhZGRp
bmcgSW50NDggdG8gSlNWYWx1ZSwgd2hpY2ggd2lsbCBwcm9iYWJseSBiZSBhIGJpZ2dlcgorICAg
ICAgICBzcGVlZC11cC4KKyAgICAgICAgCisgICAgICAgIFRoZSBiYXNpYyBhcHByb2FjaCBpczoK
KyAgICAgICAgCisgICAgICAgIC0gV2UgaGF2ZSBhIG5vdGlvbiBvZiBJbnQ0OCBpbiBvdXIgdHlw
ZXN5c3RlbS4gSW50NDggZG9lc24ndCBiZWxvbmcgdG8gQnl0ZWNvZGVUb3AKKyAgICAgICAgICBv
ciBIZWFwVG9wIC0gaS5lLiBpdCBkb2Vzbid0IGFyaXNlIGZyb20gSlNWYWx1ZXMuCisgICAgICAg
IAorICAgICAgICAtIERGRyB0cmVhdHMgSW50NDggYXMgYmVpbmcgcGFydCBvZiBpdHMgRnVsbFRv
cCBhbmQgd2lsbCB0cmVhdCBpdCBhcyBiZWluZyBhCisgICAgICAgICAgc3VidHlwZSBvZiBkb3Vi
bGUgdW5sZXNzIGluc3RydWN0ZWQgb3RoZXJ3aXNlLgorICAgICAgICAKKyAgICAgICAgLSBQcmVk
aWN0aW9uIHByb3BhZ2F0b3IgY3JlYXRlcyBJbnQ0OHMgd2hlbmV2ZXIgd2UgaGF2ZSBhIG5vZGUg
Z29pbmcgZG91Ymx5IGJ1dCBkdWUKKyAgICAgICAgICB0byBsYXJnZSB2YWx1ZXMgcmF0aGVyIHRo
YW4gZnJhY3Rpb25hbCB2YWx1ZXMsIGFuZCB0aGF0IG5vZGUgaXMga25vd24gdG8gYmUgYWJsZQor
ICAgICAgICAgIHRvIHByb2R1Y2UgSW50NDggbmF0aXZlbHkgaW4gdGhlIERGRyBiYWNrZW5kLgor
ICAgICAgICAKKyAgICAgICAgLSBGaXh1cCBwaGFzZSBjb252ZXJ0cyBlZGdlcyB0byBNYWNoaW5l
SW50VXNlcyBpbiBub2RlcyB0aGF0IGFyZSBrbm93biB0byBiZSBhYmxlCisgICAgICAgICAgdG8g
ZGVhbCB3aXRoIEludDQ4LCBhbmQgd2hlcmUgd2UgaGF2ZSBhIHN1YnR5cGUgb2YgSW50MzJ8SW50
NDggYXMgdGhlIHByZWRpY3RlZAorICAgICAgICAgIGlucHV0LgorICAgICAgICAKKyAgICAgICAg
LSBUaGUgREZHIGJhY2tlbmQgYW5kIEZUTCBMTFZNIElSIGxvd2VyaW5nIGhhdmUgdHdvIG5vdGlv
bnMgb2YgSW50NDhzIC0gb25lcyB0aGF0CisgICAgICAgICAgYXJlIGxlZnQtc2hpZnRlZCBieSAx
NiAoZ3JlYXQgZm9yIG92ZXJmbG93IGNoZWNrcykgYW5kIG9uZXMgdGhhdCBhcmUKKyAgICAgICAg
ICBzaWduLWV4dGVuZGVkLiBCb3RoIGJhY2tlbmRzIGtub3cgaG93IHRvIGNvbnZlcnQgYmV0d2Vl
biBJbnQ0OHMgYW5kIHRoZSBvdGhlcgorICAgICAgICAgIHJlcHJlc2VudGF0aW9ucy4KKworICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4Nl82NDo6cnNoaWZ0NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6bXVsNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YnJhbmNoTXVsNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNo
TmVnNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29udmVydEludDY0
VG9Eb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjppbXVscV9ycik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6Y3Z0c2kyc2RxX3JyKToKKyAgICAgICAgKiBieXRlY29kZS9EYXRhRm9ybWF0Lmg6CisgICAg
ICAgIChKU0M6OmRhdGFGb3JtYXRUb1N0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFu
ZHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Ojo6ZHVtcEluQ29udGV4dCk6CisgICAgICAgICog
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpkdW1wU3BlY3VsYXRp
b24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21WYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGht
ZXRpYyk6CisgICAgICAgIChKU0M6OmlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRp
Yyk6CisgICAgICAgIChKU0M6OmlzQnl0ZWNvZGVSZWFsTnVtYmVyU3BlY3VsYXRpb24pOgorICAg
ICAgICAoSlNDOjppc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpp
c0J5dGVjb2RlTnVtYmVyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQnl0ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAoSlNDOjppc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaDoKKyAg
ICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4
KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6aW5HUFIpOgorICAgICAgICAoSlNDOjpW
YWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2spOgorICAgICAgICAoSlNDOjpWYWx1ZVJl
Y292ZXJ5Ojppc0FscmVhZHlJbkpTU3RhY2spOgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5
OjpncHIpOgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5Ojp2aXJ0dWFsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5OjpkdW1wSW5Db250ZXh0KToKKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI6Om5lZWRzVHlwZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFj
dEludGVycHJldGVyOjpmaWx0ZXJCeVR5cGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6Ojo6ZXhlY3V0ZUVmZmVjdHMp
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y291bGRCZVR5cGUpOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmlzVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RWYWx1ZTo6dmFsaWRhdGVUeXBlKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
Ym94SW50NDgpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Q1NFUGhhc2U6OnB1cmVDU0UpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpn
ZXRCeVZhbExvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBl
cmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAg
ICAgKEpTQzo6REZHOjplbmFibGVJbnQ0OCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cFNldExvY2Fsc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmZpeHVwVW50eXBlZFNldExvY2Fsc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25Ob2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXhFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbmplY3RJ
bnQzMlRvRG91YmxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1w
dFRvTWFrZUludGVnZXJBZGQpOgorICAgICAgICAqIGRmZy9ERkdGbHVzaEZvcm1hdC5jcHA6Cisg
ICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdGbHVzaEZvcm1h
dC5oOgorICAgICAgICAoSlNDOjpERkc6OnJlc3VsdEZvcik6CisgICAgICAgIChKU0M6OkRGRzo6
dXNlS2luZEZvcik6CisgICAgICAgICogZGZnL0RGR0dlbmVyYXRpb25JbmZvLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R2VuZXJhdGlvbkluZm86OmluaXRJbnQ0OCk6CisgICAgICAgIChKU0M6OkRG
Rzo6R2VuZXJhdGlvbkluZm86OmluaXRTdHJpY3RJbnQ0OCk6CisgICAgICAgIChKU0M6OkRGRzo6
R2VuZXJhdGlvbkluZm86OmlzRm9ybWF0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0aW9u
SW5mbzo6aXNJbnQ0OCk6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdGlvbkluZm86OmlzU3Ry
aWN0SW50NDgpOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjpmaWxsSW50NDgp
OgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjpmaWxsU3RyaWN0SW50NDgpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1
bXApOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjphZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6bXVsU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6Om5lZ2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQpOgorICAgICAgICAqIGRmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3Ry
YWN0U3RhdGU6Om1lcmdlU3RhdGVBdFRhaWwpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb2RlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICog
ZGZnL0RGR01pbmlmaWVkTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OmJlbG9uZ3NJbk1pbmlm
aWVkR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkTm9kZTo6aGFzQ2hpbGQpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxk
U3BlY3VsYXRlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxh
dGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKToKKyAgICAgICAgKiBkZmcvREZHTm9kZUZsYWdzLmg6
CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9yd2Fy
ZFJld2lyaW5nU2VsZWN0aW9uU2NvcmUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGls
ZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6c3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0
aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJv
cGFnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6
ZG9Eb3VibGVWb3RpbmcpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTaWxlbnRSZWdpc3Rl
clNhdmVQbGFuLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50U2F2ZVBsYW5Gb3JHUFIpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbmNoKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBl
ZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhNdWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWFjaGluZUludCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlYWxOdW1iZXIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YW5SZXVzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmlzRmlsbGVkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNGaWxsZWREb3VibGUpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp1c2UpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjppc0tub3duSW50ZWdlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmlzS25vd25DZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6aXNLbm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmludDQ4UmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3Ry
aWN0SW50NDhSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjppbml0
Q29uc3RhbnRJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNJbnRl
Z2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YmV0dGVyVXNlU3RyaWN0
SW50NDgpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmF0aW9uSW5m
byk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlSW50NDhPcGVyYW5kOjpTcGVjdWxhdGVJ
bnQ0OE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludDQ4T3BlcmFuZDo6
flNwZWN1bGF0ZUludDQ4T3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlSW50
NDhPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnQ0OE9wZXJh
bmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludDQ4T3BlcmFuZDo6Z3By
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnQ0OE9wZXJhbmQ6OnVzZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kOjpTcGVjdWxhdGVTdHJp
Y3RJbnQ0OE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVN0cmljdEludDQ4
T3BlcmFuZDo6flNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQ6OnVzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kOjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJh
bmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZDo6
flNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQ6OnVzZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kOjpmb3JtYXQpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Ym94SW50NDgpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDQ4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50NDhDb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NDhCcmFu
Y2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRl
ckZvcik6CisgICAgICAgIChKU0M6OkRGRzo6aXNOdW1lcmljYWwpOgorICAgICAgICAqIGRmZy9E
RkdWYWx1ZVNvdXJjZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OmR1bXAp
OgorICAgICAgICAqIGRmZy9ERkdWYWx1ZVNvdXJjZS5oOgorICAgICAgICAoSlNDOjpERkc6OmRh
dGFGb3JtYXRUb1ZhbHVlU291cmNlS2luZCk6CisgICAgICAgIChKU0M6OkRGRzo6dmFsdWVTb3Vy
Y2VLaW5kVG9EYXRhRm9ybWF0KToKKyAgICAgICAgKEpTQzo6REZHOjpWYWx1ZVNvdXJjZTo6Zm9y
Rmx1c2hGb3JtYXQpOgorICAgICAgICAoSlNDOjpERkc6OlZhbHVlU291cmNlOjp2YWx1ZVJlY292
ZXJ5KToKKyAgICAgICAgKiBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmg6CisgICAgICAgIChK
U0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjpzaG91bGRVc2VEb3VibGVGb3JtYXRBY2NvcmRp
bmdUb1ZvdGUpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6Zmx1c2hG
b3JtYXQpOgorICAgICAgICAqIGZ0bC9GVExDQXJndW1lbnRHZXR0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkNBcmd1bWVudEdldHRlcjo6bG9hZE5leHRBbmRCb3gpOgorICAgICAgICAqIGZ0
bC9GVExDQXJndW1lbnRHZXR0ZXIuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMRXhp
dFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OmR1bXBJbkNvbnRleHQp
OgorICAgICAgICAqIGZ0bC9GVExFeGl0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0
VmFsdWU6OmluSlNTdGFja0FzSW50NDgpOgorICAgICAgICAqIGZ0bC9GVExJbnRyaW5zaWNSZXBv
c2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y3JlYXRlUGhpVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVXBzaWxvbik6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQaGkpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlU2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUFyaXRoU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFy
aXRoTmVnYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBh
cmVFcSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDb21wYXJl
U3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29t
cGFyZUxlc3MpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29t
cGFyZUxlc3NFcSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVD
b21wYXJlR3JlYXRlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVDb21wYXJlR3JlYXRlckVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
bG93SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dJbnQ0OCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd1N0cmljdEludDQ4KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YmV0dGVyVXNlU3RyaWN0SW50NDgpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpiZXN0SW50NDhLaW5kKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6b3Bwb3NpdGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpJbnQ0OHM6Om9wZXJhdG9yW10pOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpsb3dXaGljaGV2ZXJJbnQ0OCk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd1doaWNoZXZlckludDQ4cyk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd09wcG9zaW5nSW50NDhzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6bG93Q2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdU
b0xMVk06Omxvd0Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjps
b3dEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dKU1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3RyaWN0SW50NDhUb0ludDMy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3RyaWN0SW50NDhUb0RvdWJs
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnN0cmljdEludDQ4VG9KU1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0SW50NDhXaXRoU3Ry
aWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzdHJpY3RJbnQ0
OFRvSW50NDgpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjppbnQ0OFRvU3Ry
aWN0SW50NDgpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVS
ZWFsTnVtYmVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aW5pdGlhbGl6
ZU9TUkV4aXRTdGF0ZUZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6ZW1pdE9TUkV4aXRDYWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
YWRkRXhpdEFyZ3VtZW50Rm9yTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OnNldEludDQ4KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0U3Ry
aWN0SW50NDgpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGRXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpzdWJXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjptdWxXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgICogZnRsL0ZUTFZhbHVlRm9ybWF0
LmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZnRsL0ZUTFZh
bHVlRm9ybWF0Lmg6CisgICAgICAgICogZnRsL0ZUTFZhbHVlU291cmNlLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpWYWx1ZVNvdXJjZTo6ZHVtcCk6CisgICAgICAgICogZnRsL0ZUTFZhbHVlU291
cmNlLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaDoKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXI6OnVuYm94ZWRJbnQ0OCk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3Bw
OgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnRlYXJPZmZGb3JJbmxpbmVDYWxsRnJhbWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bGVhc3RV
cHBlckJvdW5kT2ZJbmRleGluZ1R5cGVBbmRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pT
VmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OmlzTWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmFz
TWFjaGluZUludCk6CisKIDIwMTMtMDktMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJn
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrZWRCbG9ja3Mgc2hvdWxkbid0IGJlIHB1dCBpbiBB
bGxvY2F0ZWQgc3RhdGUgaWYgdGhleSBkaWRuJ3QgcHJvZHVjZSBhIEZyZWVMaXN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw2ICsy
MzAsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zaGxxX2k4cihpbW0ubV92YWx1
ZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgcnNoaWZ0NjQoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2FycV9pOHIo
aW1tLm1fdmFsdWUsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIG11bDY0KFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5pbXVs
cV9ycihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIG5lZzY0KFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfcihkZXN0KTsKQEAgLTUzMCw2
ICs1NDAsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Mo
eDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hNdWw2NChSZXN1
bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG11bDY0KHNyYywgZGVzdCk7CisgICAgICAgIGlmIChjb25kICE9IE92ZXJmbG93
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHFfcnIoZGVzdCwgZGVzdCk7CisgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKKyAgICB9
CisKICAgICBKdW1wIGJyYW5jaFN1YjY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWI2NChpbW0sIGRlc3Qp
OwpAQCAtNTQ4LDYgKzU2NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hTdWI2
NChjb25kLCBzcmMyLCBkZXN0KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaE5lZzY0KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBuZWc2
NChzcmNEZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOworICAgIH0KKwogICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRp
YmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRo
aXMpOwpAQCAtNTk1LDYgKzYxOSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0
ZXIpLCBtYXNrKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbnZlcnRJbnQ2NFRvRG91YmxlKFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmN2dHNpMnNkcV9ycihzcmMsIGRlc3QpOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzRmxvYXRpbmdQb2ludCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAvLyBTZWUgY29tbWVudCBv
biBNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpCiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSB7IHJldHVybiB0
cnVlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyOSwxMyArODI5LDIwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICAg
ICAgfQogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIENQVShYODZfNjQpCiAKICAgICB2b2lkIGlt
dWxsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3QsIHNyYyk7CiAgICAgfQogCisj
aWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGltdWxxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9JTVVM
X0d2RXYsIGRzdCwgc3JjKTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZv
aWQgaW11bGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3Qs
IGJhc2UsIG9mZnNldCk7CkBAIC0xNjExLDYgKzE2MTgsMTQgQEAgcHVibGljOgogICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNJMlNEX1ZzZEVkLCAoUmVnaXN0ZXJJRClkc3Qs
IHNyYyk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGN2dHNpMnNkcV9ycihS
ZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9DVlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBzcmMpOworICAgIH0KKyNlbmRp
ZgorCiAgICAgdm9pZCBjdnRzaTJzZF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhN
TVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9T
U0VfRjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1h
dC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGF0YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiBlbnVtIERhdGFGb3JtYXQgewogICAgIERhdGFGb3JtYXROb25lID0gMCwKICAgICBE
YXRhRm9ybWF0SW50MzIgPSAxLAotICAgIERhdGFGb3JtYXREb3VibGUgPSAyLAotICAgIERhdGFG
b3JtYXRCb29sZWFuID0gMywKLSAgICBEYXRhRm9ybWF0Q2VsbCA9IDQsCi0gICAgRGF0YUZvcm1h
dFN0b3JhZ2UgPSA1LAorICAgIERhdGFGb3JtYXRJbnQ0OCA9IDIsIC8vIEludDQ4J3MgYXJlIGxl
ZnQtc2hpZnRlZCBieSAxNiBieSBkZWZhdWx0LgorICAgIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA9
IDMsIC8vICJTdHJpY3QiIEludDQ4IG1lYW5zIGl0J3Mgbm90IHNoaWZ0ZWQuCisgICAgRGF0YUZv
cm1hdERvdWJsZSA9IDQsCisgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAorICAgIERhdGFGb3Jt
YXRDZWxsID0gNiwKKyAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCiAgICAgRGF0YUZvcm1hdEpT
ID0gOCwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRJ
bnQzMiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0
RG91YmxlLApAQCAtNjQsNiArNjYsMTAgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRU
b1N0cmluZyhEYQogICAgICAgICByZXR1cm4gIk5vbmUiOwogICAgIGNhc2UgRGF0YUZvcm1hdElu
dDMyOgogICAgICAgICByZXR1cm4gIkludDMyIjsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoK
KyAgICAgICAgcmV0dXJuICJJbnQ0OCI7CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6
CisgICAgICAgIHJldHVybiAiU3RyaWN0SW50NDgiOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJs
ZToKICAgICAgICAgcmV0dXJuICJEb3VibGUiOwogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzSW5saW5l
cy5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3BlcmFuZHNJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBP
cGVyYW5kczxULCBUcmFpdHM+OjpkdW1wSW5Db250ZXh0KAogICAgIGZvciAoc2l6ZV90IGxvY2Fs
SW5kZXggPSAwOyBsb2NhbEluZGV4IDwgbnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbEluZGV4KSB7
CiAgICAgICAgIGlmIChUcmFpdHM6OmlzRW1wdHlGb3JEdW1wKGxvY2FsKGxvY2FsSW5kZXgpKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwgbG9j
YWxJbmRleCwgIjoiLCBpbkNvbnRleHQobG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgbG9jYWxJbmRleCwgIjoiLCBpbkNvbnRleHQo
bG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNp
b24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsMTMgQEAgdm9pZCBkdW1wU3Bl
Y3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dCwgUwogICAgIH0KICAgICAKICAgICBpZiAodmFsdWUg
JiBTcGVjSW50MzIpCi0gICAgICAgIG15T3V0LnByaW50KCJJbnQiKTsKKyAgICAgICAgbXlPdXQu
cHJpbnQoIkludDMyIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAor
ICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQ0OCkKKyAgICAgICAgbXlPdXQucHJpbnQoIkludDQ4Iik7
CisgICAgICAgIAogICAgIGlmICgodmFsdWUgJiBTcGVjRG91YmxlKSA9PSBTcGVjRG91YmxlKQog
ICAgICAgICBteU91dC5wcmludCgiRG91YmxlIik7CiAgICAgZWxzZSB7CkBAIC0xNjYsMTEgKzE2
OSw2IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXQsIFMKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICh2
YWx1ZSAmIFNwZWNJbnQ0OCkKLSAgICAgICAgICAgIG15T3V0LnByaW50KCJJbnQ0OCIpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgICAgICAKICAgICAgICAg
aWYgKHZhbHVlICYgU3BlY05vbkludEFzRG91YmxlKQogICAgICAgICAgICAgbXlPdXQucHJpbnQo
Ik5vbmludGFzZG91YmxlIik7CiAgICAgICAgIGVsc2UKQEAgLTI0Nyw5ICsyNDUsMTEgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9BYmJyZXZpYQogICAgICAgICByZXR1cm4gIjxJ
bnQ0OEFzRG91YmxlPiI7CiAgICAgaWYgKGlzSW50NDhTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkK
ICAgICAgICAgcmV0dXJuICI8SW50NDg+IjsKKyAgICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCisgICAgICAgIHJldHVybiAiPE1hY2hpbmVJbnQ+IjsKICAgICBpZiAo
aXNEb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8RG91Ymxl
PiI7Ci0gICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgaWYgKGlz
RnVsbE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxOdW1i
ZXI+IjsKICAgICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAg
IHJldHVybiAiPEJvb2xlYW4+IjsKQEAgLTM0NSwxNiArMzQ1LDExIEBAIFNwZWN1bGF0ZWRUeXBl
IHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmEKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKICAg
ICBpZiAodmFsdWUuaXNEb3VibGUoKSkgewogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUu
YXNOdW1iZXIoKTsKLSAgICAgICAgaWYgKG51bWJlciA9PSBudW1iZXIpIHsKLSAgICAgICAgICAg
IGludDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7Ci0gICAgICAg
ICAgICBpZiAoYXNJbnQ2NCA9PSBudW1iZXIgJiYgKGFzSW50NjQgfHwgIXN0ZDo6c2lnbmJpdChu
dW1iZXIpKQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPCAoc3RhdGljX2Nhc3Q8aW50NjRf
dD4oMSkgPDwgNDcpCi0gICAgICAgICAgICAgICAgJiYgYXNJbnQ2NCA+PSAtKHN0YXRpY19jYXN0
PGludDY0X3Q+KDEpIDw8IDQ3KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTcGVjSW50NDhB
c0RvdWJsZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNE
b3VibGU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47CisgICAgICAg
IGlmIChudW1iZXIgIT0gbnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47
CisgICAgICAgIGlmICh2YWx1ZS5pc01hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBT
cGVjSW50NDhBc0RvdWJsZTsKKyAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAg
ICB9CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25G
cm9tQ2VsbCh2YWx1ZS5hc0NlbGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDQ2ICszOCw0OCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cnVjdHVyZTsKIAog
dHlwZWRlZiB1aW50MzJfdCBTcGVjdWxhdGVkVHlwZTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjTm9uZSAgICAgICAgICAgICAgPSAweDAwMDAwMDAwOyAvLyBXZSBkb24ndCBrbm93
IGFueXRoaW5nIHlldC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmpl
Y3QgICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2JqZWN0
Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICA9IDB4
MDAwMDAwMDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQXJyYXkuCi1zdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgID0gMHgwMDAwMDAwODsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAgICAgID0gMHgwMDAwMDAxMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAgID0gMHgw
MDAwMDAyMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBz
dWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMkFycmF5ICAg
ICAgICA9IDB4MDAwMDAwNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWlu
dDhBcnJheSAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDhB
cnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ID0gMHgwMDAwMDEwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGFuIFVpbnQ4Q2xhbXBlZEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDE2QXJyYXkgICAgICAgPSAweDAwMDAwMjAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2Vz
Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MzJBcnJheSAgICAgICA9IDB4
MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBvciBvbmUgb2YgaXRz
IHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Zsb2F0MzJBcnJh
eSAgICAgID0gMHgwMDAwMDgwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9y
IG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
RmxvYXQ2NEFycmF5ICAgICAgPSAweDAwMDAxMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWlu
dDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNUeXBlZEFycmF5VmlldyAgICA9IFNwZWNJbnQ4QXJyYXkgfCBTcGVjSW50MTZB
cnJheSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkgfCBTcGVjVWludDhDbGFtcGVk
QXJyYXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJyYXkgfCBTcGVjRmxvYXQzMkFy
cmF5IHwgU3BlY0Zsb2F0NjRBcnJheTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
QXJndW1lbnRzICAgICAgICAgPSAweDAwMDAyMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gQXJn
dW1lbnRzIG9iamVjdC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nT2Jq
ZWN0ICAgICAgPSAweDAwMDA0MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTdHJpbmdPYmplY3Qu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgID0gMHgw
MDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmpl
Y3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY09iamVjdCAgICAgICAgICAgID0gMHgwMDAwZmZmZjsgLy8gQml0bWFzayB1c2VkIGZvciB0
ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nSWRlbnQgICAgICAgPSAweDAwMDEwMDAwOyAvLyBJdCdz
IGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3MgYW4gaWRlbnRpZmllci4KLXN0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nVmFyICAgICAgICAgPSAweDAwMDIwMDAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAgICAgICAgICAgID0gMHgw
MDAzMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCi1zdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0NlbGxPdGhlciAgICAgICAgID0gMHgwMDA0MDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNDZWxsIGJ1dCBub3QgYSBzdWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVm
aW5pdGVseSBub3QgYSBKU1N0cmluZy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
Q2VsbCAgICAgICAgICAgICAgPSAweDAwMDdmZmZmOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Nl
bGwuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyICAgICAgICAgICAgID0g
MHgwMDgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgotc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNJbnQ0OCAgICAgICAgICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBJbnQ0OCwgaXQncyBpbnNpZGUgYSBkb3VibGUsIGJ1dCBpdCBkb2Vzbid0
IG5lZWQgdG8gYmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hpbmVJbnQg
ICAgICAgID0gMHgwMTgwMDAwMDsgLy8gSXQncyBzb21ldGhpbmcgdGhhdCB3ZSBjYW4gZG8gbWFj
aGluZSBpbnQgYXJpdGhtZXRpYyBvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
SW50NDhBc0RvdWJsZSAgICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50
NDggYW5kIGl0J3MgaW5zaWRlIGEgZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNJbnRlZ2VyICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBz
b21lIGtpbmQgb2YgaW50ZWdlci4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9u
SW50QXNEb3VibGUgICAgPSAweDA0MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm90IGFuIElu
dDQ4IGJ1dCBpdCdzIGEgcmVhbCBudW1iZXIgYW5kIGl0J3MgYSBkb3VibGUuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgID0gMHgwNzAwMDAwMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RvdWJsZU5hTiAgICAgICAgID0gMHgwODAwMDAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IGEgTmFOLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAg
ICAgICA9IDB4MGYwMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3Vi
bGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iZXIgICAgICAgID0g
MHgwNzgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVSZWFsLgotc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAgICAgICAgICA9IDB4MGY4MDAw
MDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEJvb2xlYW4uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090
aGVyICAgICAgICAgICAgID0gMHgyMDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vbmUgb2Yg
dGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAg
ICAgICA9IDB4M2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4NDAwMDAwMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQg
Y2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0Z1bGxUb3AgICAgICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUg
YWJvdmUgcGx1cyBhbnl0aGluZyB0aGUgREZHIGNob29zZXMuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY05vbmUgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDA7IC8vIFdlIGRvbid0
IGtub3cgYW55dGhpbmcgeWV0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGaW5h
bE9iamVjdCAgICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFs
T2JqZWN0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAg
ICAgPSAweDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICAgPSAweDAwMDAwMDA4OyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4K
K3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50OEFycmF5ICAgICAgICAgID0gMHgw
MDAwMDAxMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1
YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAg
ICAgICA9IDB4MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50
MzJBcnJheSAgICAgICAgID0gMHgwMDAwMDA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMy
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNVaW50OEFycmF5ICAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRl
bHkgYW4gVWludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ICA9IDB4MDAwMDAxMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNz
ZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgICA9
IDB4MDAwMDAyMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2Yg
aXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQzMkFy
cmF5ICAgICAgICA9IDB4MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0Zsb2F0MzJBcnJheSAgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBh
biBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Zsb2F0NjRBcnJheSAgICAgICA9IDB4MDAwMDEwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1R5cGVkQXJyYXlWaWV3ICAgICA9IFNwZWNJbnQ4
QXJyYXkgfCBTcGVjSW50MTZBcnJheSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkg
fCBTcGVjVWludDhDbGFtcGVkQXJyYXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJy
YXkgfCBTcGVjRmxvYXQzMkFycmF5IHwgU3BlY0Zsb2F0NjRBcnJheTsKK3N0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjQXJndW1lbnRzICAgICAgICAgID0gMHgwMDAwMjAwMDsgLy8gSXQn
cyBkZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBvYmplY3QuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY1N0cmluZ09iamVjdCAgICAgICA9IDB4MDAwMDQwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIFN0cmluZ09iamVjdC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2Jq
ZWN0T3RoZXIgICAgICAgID0gMHgwMDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVj
dCBidXQgbm90IEpTRmluYWxPYmplY3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICA9IDB4MDAwMGZmZmY7
IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRp
Y3Rpb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAg
ICA9IDB4MDAwMTAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBh
biBpZGVudGlmaWVyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIg
ICAgICAgICAgPSAweDAwMDIwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5k
IGl0J3Mgbm90IGFuIGlkZW50aWZpZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y1N0cmluZyAgICAgICAgICAgICA9IDB4MDAwMzAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpT
U3RyaW5nLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAgICAg
ICAgPSAweDAwMDQwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBhIHN1
YmNsYXNzIG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgPSAweDAwMDdmZmZm
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0ludDMyICAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBJbnQzMi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NDggICAgICAg
ICAgICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4IGFuZCB3ZSBp
bnRlbmQgaXQgdG8gdW5ib3ggaXQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01h
Y2hpbmVJbnQgICAgICAgICA9IDB4MDE4MDAwMDA7IC8vIEl0J3Mgc29tZXRoaW5nIHRoYXQgd2Ug
Y2FuIGRvIG1hY2hpbmUgaW50IGFyaXRobWV0aWMgb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0ludDQ4QXNEb3VibGUgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBzb21lIGtpbmQgb2YgaW50ZWdlci4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjTm9uSW50QXNEb3VibGUgICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IG5vdCBhbiBJbnQ0OCBidXQgaXQncyBhIHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91Ymxl
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICAgPSAw
eDA2MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KK3N0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlTmFOICAgICAgICAgID0gMHgwODAwMDAwMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNEb3VibGUgICAgICAgICAgICAgPSAweDBlMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1O
YU4gb3IgYSBOYU4gZG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRl
Y29kZVJlYWxOdW1iZXIgPSAweDA2ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBh
IERvdWJsZVJlYWwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxSZWFsTnVt
YmVyICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91Ymxl
UmVhbCwgb3IgYSBJbnQ0OC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNv
ZGVOdW1iZXIgICAgID0gMHgwZTgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBE
b3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxOdW1iZXIgICAgICAg
ICA9IDB4MGY4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ0OCwgb3IgYSBEb3Vi
bGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAgICA9
IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICA9IDB4MjAwMDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBub25lIG9mIHRoZSBhYm92ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgID0gMHgzZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFu
eSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgorc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgPSAweDdlZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55
IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NDguCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBi
ZSBhbnkgb2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgogCiB0eXBl
ZGVmIGJvb2wgKCpTcGVjdWxhdGVkVHlwZUNoZWNrZXIpKFNwZWN1bGF0ZWRUeXBlKTsKIApAQCAt
MjQwLDcgKzI0Miw3IEBAIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGUK
IAogaW5saW5lIGJvb2wgaXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhTcGVjdWxhdGVk
VHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIFNwZWNEb3VibGUpOworICAgIHJl
dHVybiAhKHZhbHVlICYgKFNwZWNEb3VibGUgfCBTcGVjSW50NDgpKTsKIH0KIAogaW5saW5lIGJv
b2wgaXNJbnQzMlNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKQEAgLTI2NSw3ICsyNjcsNyBAQCBpbmxpbmUgYm9vbCBpc01hY2hpbmVJbnRTcGVjdWxhdGlv
bkV4cGVjCiAKIGlubGluZSBib29sIGlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRp
YyhTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVjRG91
YmxlICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRG91Ymxl
KTsKIH0KIAogaW5saW5lIGJvb2wgaXNJbnQ0OEFzRG91YmxlU3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCkBAIC0yOTMsMTkgKzI5NSwzNCBAQCBpbmxpbmUgYm9vbCBpc0RvdWJsZVNw
ZWN1bGF0aW9uRm9yQXJpdGhtCiAgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0RvdWJsZSk7CiB9
CiAKLWlubGluZSBib29sIGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlKQoraW5saW5lIGJvb2wgaXNCeXRlY29kZVJlYWxOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxh
dGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQnl0ZWNvZGVSZWFs
TnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNCeXRlY29kZVJlYWxOdW1iZXIpOworfQorCitpbmxp
bmUgYm9vbCBpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUp
Cit7CisgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0Z1bGxSZWFsTnVtYmVyKSAmJiAhKHZhbHVl
ICYgflNwZWNGdWxsUmVhbE51bWJlcik7Cit9CisKK2lubGluZSBib29sIGlzQnl0ZWNvZGVOdW1i
ZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFs
dWUgJiBTcGVjQnl0ZWNvZGVOdW1iZXIpICYmICEodmFsdWUgJiB+U3BlY0J5dGVjb2RlTnVtYmVy
KTsKK30KKworaW5saW5lIGJvb2wgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY1JlYWxOdW1iZXIpICYmICEo
dmFsdWUgJiB+U3BlY1JlYWxOdW1iZXIpOworICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNGdWxs
TnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNGdWxsTnVtYmVyKTsKIH0KIAotaW5saW5lIGJvb2wg
aXNOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlz
Qnl0ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY051bWJlcikgJiYgISh2YWx1ZSAm
IH5TcGVjTnVtYmVyKTsKKyAgICByZXR1cm4gaXNCeXRlY29kZU51bWJlclNwZWN1bGF0aW9uKHZh
bHVlICYgflNwZWNPdGhlcik7CiB9CiAKLWlubGluZSBib29sIGlzTnVtYmVyU3BlY3VsYXRpb25F
eHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNGdWxs
TnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewotICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7Cisg
ICAgcmV0dXJuIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CiB9
CiAKIGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVy
eS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VmFsdWVSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTUgQEAgZW51bSBW
YWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBBbHJlYWR5SW5KU1N0YWNrLAogICAgIC8vIEl0
J3MgYWxyZWFkeSBpbiB0aGUgc3RhY2sgYnV0IHVuYm94ZWQuCiAgICAgQWxyZWFkeUluSlNTdGFj
a0FzVW5ib3hlZEludDMyLAorICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCwKICAg
ICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNV
bmJveGVkQm9vbGVhbiwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlLAogICAg
IC8vIEl0J3MgaW4gYSByZWdpc3Rlci4KICAgICBJbkdQUiwKICAgICBVbmJveGVkSW50MzJJbkdQ
UiwKKyAgICBVbmJveGVkSW50NDhJbkdQUiwKKyAgICBVbmJveGVkU3RyaWN0SW50NDhJbkdQUiwK
ICAgICBVbmJveGVkQm9vbGVhbkluR1BSLAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgSW5Q
YWlyLApAQCAtNjAsNiArNjMsOCBAQCBlbnVtIFZhbHVlUmVjb3ZlcnlUZWNobmlxdWUgewogICAg
IERpc3BsYWNlZEluSlNTdGFjaywKICAgICAvLyBJdCdzIGluIHRoZSBzdGFjaywgYXQgYSBkaWZm
ZXJlbnQgbG9jYXRpb24sIGFuZCBpdCdzIHVuYm94ZWQuCiAgICAgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2ssCisgICAgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2ssCisgICAgU3RyaWN0SW50NDhEaXNw
bGFjZWRJbkpTU3RhY2ssCiAgICAgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrLAogICAgIENlbGxE
aXNwbGFjZWRJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjaywKQEAgLTk1
LDYgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAorICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0
OCgpCisgICAgeworICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0
Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpCiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5
IHJlc3VsdDsKQEAgLTEyNSw2ICsxMzcsMTAgQEAgcHVibGljOgogICAgICAgICBWYWx1ZVJlY292
ZXJ5IHJlc3VsdDsKICAgICAgICAgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKQog
ICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDMySW5HUFI7CisgICAg
ICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAg
cmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDQ4SW5HUFI7CisgICAgICAgIGVsc2UgaWYg
KGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0
Lm1fdGVjaG5pcXVlID0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFI7CiAgICAgICAgIGVsc2UgaWYg
KGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEJvb2xlYW4pCiAgICAgICAgICAgICByZXN1bHQubV90
ZWNobmlxdWUgPSBVbmJveGVkQm9vbGVhbkluR1BSOwogICAgICAgICBlbHNlCkBAIC0xNjgsNiAr
MTg0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDMy
RGlzcGxhY2VkSW5KU1N0YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlx
dWUgPSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OgorICAgICAgICAgICAg
cmVzdWx0Lm1fdGVjaG5pcXVlID0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIERhdGFGb3JtYXREb3Vi
bGU6CiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBEb3VibGVEaXNwbGFjZWRJbkpT
U3RhY2s7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyOSw2ICsyNTMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0
YWNrOgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAgICAgIGNhc2UgQWxy
ZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFj
a0FzVW5ib3hlZEJvb2xlYW46CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hl
ZERvdWJsZToKQEAgLTI0MCw3ICsyNjUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlJlZ2lzdGVySUQgZ3ByKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Rl
Y2huaXF1ZSA9PSBJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBt
X3RlY2huaXF1ZSA9PSBVbmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQz
MkluR1BSKTsKKyAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5p
cXVlID09IFVuYm94ZWRJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFu
SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5i
b3hlZEludDQ4SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFIp
OwogICAgICAgICByZXR1cm4gbV9zb3VyY2UuZ3ByOwogICAgIH0KICAgICAKQEAgLTI2Niw3ICsy
OTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rl
cigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2Vk
SW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1f
dGVjaG5pcXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJ
bkpTU3RhY2spOworICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0
YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5p
cXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlz
cGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3Rh
Y2sgfHwgbV90ZWNobmlxdWUgPT0gSW50NDhEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlx
dWUgPT0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gbV9z
b3VyY2UudmlydHVhbFJlZzsKICAgICB9CiAgICAgCkBAIC0yODUsNiArMzEwLDkgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAg
ICAgIG91dC5wcmludGYoIihpbnQzMikiKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Y2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAgICAgICAgICBvdXQucHJp
bnRmKCIoaW50NDgpIik7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoY2VsbCki
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwMCw2ICszMjgsMTIgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiaW50
MzIoJSVyJWQpIiwgZ3ByKCkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVu
Ym94ZWRJbnQ0OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50ZigiaW50NDgoJSVyJWQpIiwg
Z3ByKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJ
bnQ0OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50Zigic3RyaWN0SW50NDgoJSVyJWQpIiwg
Z3ByKCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFu
SW5HUFI6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJib29sKCUlciVkKSIsIGdwcigpKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTMyMCw2ICszNTQsMTIgQEAgcHVibGljOgogICAgICAgICBj
YXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKmlu
dDMyKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgY2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG91dC5wcmludGYo
IippbnQ0OCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGNhc2UgU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIqc3RyaWN0SW50NDgoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAg
ICAgICAgICAgIG91dC5wcmludGYoIipkb3VibGUoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG5lZWRzVHlwZUNo
ZWNrKE5vZGUqIG5vZGUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBmb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH50eXBlc1Bhc3NlZFRocm91
Z2g7CisgICAgICAgIHJldHVybiAhZm9yTm9kZShub2RlKS5pc1R5cGUodHlwZXNQYXNzZWRUaHJv
dWdoKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBuZWVkc1R5cGVDaGVjayhFZGdlIGVkZ2UsIFNw
ZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKQEAgLTE2OCw3ICsxNjgsNyBAQCBwcml2
YXRlOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJCeVR5cGUoTm9kZSogbm9kZSwgRWRn
ZSYgZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIEFic3RyYWN0VmFs
dWUmIHZhbHVlID0gZm9yTm9kZShlZGdlKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fdHlwZSAmIH50
eXBlKSB7CisgICAgICAgIGlmICghdmFsdWUuaXNUeXBlKHR5cGUpKSB7CiAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgZWRnZS5zZXRQcm9vZlN0YXR1cyhO
ZWVkc0NoZWNrKTsKICAgICAgICAgfSBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZp
c2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2ICszMTAsMjkgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAorICAgIGNhc2UgSW50NDhUb0RvdWJsZTogeworICAgICAgICBKU1ZhbHVl
IGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNo
aWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGNoaWxkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAg
ICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZTogeworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxk
LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGU7CisgICAgICAgIGlmICh0eXBlICYgU3Bl
Y0ludDQ4KQorICAgICAgICAgICAgdHlwZSA9ICh0eXBlIHwgU3BlY0ludDQ4QXNEb3VibGUpICYg
flNwZWNJbnQ0ODsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5cGUpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBB
cml0aEFkZDogewogICAgICAgICBKU1ZhbHVlIGxlZnQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS52YWx1ZSgpOwpAQCAtMzI0LDkgKzM0NywxNSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRl
Z2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENh
bkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50
VXNlOgorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CisgICAg
ICAgICAgICBpZiAoIWZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjSW50MzIpCisg
ICAgICAgICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjSW50
MzIpKQorICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgICAgICBpZiAoaXNSZWFs
TnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKQotICAgICAg
ICAgICAgICAgICYmIGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQy
KCkpLm1fdHlwZSkpCisgICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9u
KGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKKyAgICAgICAgICAgICAgICAmJiBpc0Z1
bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSkK
ICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZVJlYWwpOwog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjRG91YmxlKTsKQEAgLTMzNCw3ICszNjMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChub2RlLT5vcCgpID09IFZhbHVlQWRkKTsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChu
b2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwotICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNTdHJpbmcgfCBTcGVjSW50MzIgfCBTcGVjTnVtYmVyKTsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjU3RyaW5nIHwgU3BlY0J5dGVjb2RlTnVtYmVy
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMzU4
LDYgKzM4NywxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAg
ICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9k
ZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CisgICAgICAgICAgICBpZiAoIWZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjSW50MzIpCisgICAgICAgICAgICAgICAgfHwg
IWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjSW50MzIpKQorICAgICAgICAgICAg
ICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0Rv
dWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM4MCw2ICs0MTUsMTMgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgaWYgKCFieXRlY29k
ZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAg
ICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjSW50NDgpOworICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5F
eGl0KHRydWUpOworICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVy
byhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5F
eGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgog
ICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC00MDQsOSArNDQ2LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB8fCAhYnl0ZWNvZGVDYW5JZ25vcmVOZWdh
dGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+
c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1hY2hp
bmVJbnRVc2U6CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDQ4KTsK
KyAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgICAgICBpZiAoaXNSZWFsTnVtYmVyU3Bl
Y3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKQotICAgICAgICAgICAgICAg
IHx8IGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlw
ZSkpCisgICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKKyAgICAgICAgICAgICAgICB8fCBpc0Z1bGxSZWFsTnVt
YmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSkKICAgICAgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZVJlYWwpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91Ymxl
KTsKQEAgLTU4Niw3ICs2MzIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
aWYgKGlzTnVtYmVyU3BlY3VsYXRpb24oYWJzdHJhY3RDaGlsZC5tX3R5cGUpKSB7CisgICAgICAg
IGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihhYnN0cmFjdENoaWxkLm1fdHlwZSkpIHsKICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIHZtLT5zbWFsbFN0cmluZ3MubnVtYmVyU3RyaW5n
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTgxMSw2ICs4NTcsOCBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGNhc2UgQXJy
YXk6OlVpbnQzMkFycmF5OgogICAgICAgICAgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUlu
dDMyKCkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7
CisgICAgICAgICAgICBlbHNlIGlmIChlbmFibGVJbnQ0OCgpICYmIG5vZGUtPnNob3VsZFNwZWN1
bGF0ZU1hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0ludDQ4KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTg2Myw3ICs5
MTEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2Fz
ZSBBcnJheVB1c2g6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGNs
b2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwotICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY051bWJlcik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAog
ICAgIGNhc2UgQXJyYXlQb3A6CkBAIC05MzQsOCArOTgyLDggQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBOQi4gVGhlIG1vcmUgY2Fub25pY2Fs
IHdheSBvZiB3cml0aW5nIHRoaXMgd291bGQgaGF2ZSBiZWVuOgogICAgICAgICAvLwogICAgICAg
ICAvLyBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKLSAgICAgICAgLy8gaWYgKGRlc3RpbmF0aW9uLm1f
dHlwZSAmICEoU3BlY051bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpIHsKLSAgICAg
ICAgLy8gICAgIGRlc3RpbmF0aW9uLmZpbHRlcihTcGVjTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNw
ZWNCb29sZWFuKTsKKyAgICAgICAgLy8gaWYgKGRlc3RpbmF0aW9uLm1fdHlwZSAmICEoU3BlY0Z1
bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4pKSB7CisgICAgICAgIC8vICAgICBk
ZXN0aW5hdGlvbi5maWx0ZXIoU3BlY0Z1bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xl
YW4pOwogICAgICAgICAvLyAgICAgQWJzdHJhY3RWYWx1ZSBzdHJpbmc7CiAgICAgICAgIC8vICAg
ICBzdHJpbmcuc2V0KHZtLT5zdHJpbmdTdHJ1Y3R1cmUpOwogICAgICAgICAvLyAgICAgZGVzdGlu
YXRpb24ubWVyZ2Uoc3RyaW5nKTsKQEAgLTk1NSw3ICsxMDAzLDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+Y29k
ZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKICAgICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IHR5cGUgPSBzb3VyY2UubV90eXBlOwotICAgICAgICBpZiAodHlwZSAmIH4oU3BlY051bWJlciB8
IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpCisgICAgICAgIGlmICh0eXBlICYgfihTcGVjRnVs
bE51bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpCiAgICAgICAgICAgICB0eXBlID0g
KFNwZWNIZWFwVG9wICYgflNwZWNDZWxsKSB8IFNwZWNTdHJpbmc7CiAKICAgICAgICAgZGVzdGlu
YXRpb24uc2V0VHlwZSh0eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NiArNjcsOCBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIEpTCiAgICAg
fQogICAgICAgICAKICAgICBtX3R5cGUgPSBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSk7Cisg
ICAgaWYgKG1fdHlwZSA9PSBTcGVjSW50NDhBc0RvdWJsZSkKKyAgICAgICAgbV90eXBlID0gU3Bl
Y0ludDQ4OwogICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgCiAgICAgY2hlY2tDb25zaXN0
ZW5jeSgpOwpAQCAtMjI3LDYgKzIyOSw3IEBAIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1
ZTo6bm9ybWFsaXoKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgIUFTU0VSVF9ESVNBQkxF
RAogdm9pZCBBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKIHsKICAgICBp
ZiAoIShtX3R5cGUgJiBTcGVjQ2VsbCkpIHsKQEAgLTIzOCwxNCArMjQxLDE5IEBAIHZvaWQgQWJz
dHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSgpIGMKICAgICBpZiAoaXNDbGVhcigpKQogICAg
ICAgICBBU1NFUlQoIW1fdmFsdWUpOwogICAgIAotICAgIGlmICghIW1fdmFsdWUpCi0gICAgICAg
IEFTU0VSVChtZXJnZVNwZWN1bGF0aW9ucyhtX3R5cGUsIHNwZWN1bGF0aW9uRnJvbVZhbHVlKG1f
dmFsdWUpKSA9PSBtX3R5cGUpOworICAgIGlmICghIW1fdmFsdWUpIHsKKyAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgdHlwZSA9IG1fdHlwZTsKKyAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NDgpCisg
ICAgICAgICAgICB0eXBlIHw9IFNwZWNJbnQ0OEFzRG91YmxlOworICAgICAgICBBU1NFUlQobWVy
Z2VTcGVjdWxhdGlvbnModHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUobV92YWx1ZSkpID09IHR5
cGUpOworICAgIH0KICAgICAKICAgICAvLyBOb3RlIHRoYXQgaXQncyBwb3NzaWJsZSBmb3IgYSBw
cmVkaWN0aW9uIGxpa2UgKEZpbmFsLCBbXSkuIFRoaXMgcmVhbGx5IG1lYW5zIHRoYXQKICAgICAv
LyB0aGUgdmFsdWUgaXMgYm90dG9tIGFuZCB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGUgdmFs
dWUgaXMgdW5yZWFjaGFibGUuIEJ1dAogICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gZ2V0IHBlZGFu
dGljIGFib3V0IHRoaXMgYXMgaXQgd291bGQgb25seSBpbmNyZWFzZSB0aGUgY29tcHV0YXRpb25h
bAogICAgIC8vIGNvbXBsZXhpdHkgb2YgdGhlIGNvZGUuCiB9CisjZW5kaWYKIAogdm9pZCBBYnN0
cmFjdFZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTU1OTAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE4NSw2ICsxODUsMTYgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAg
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIAorICAgIGJvb2wgY291bGRCZVR5
cGUoU3BlY3VsYXRlZFR5cGUgZGVzaXJlZFR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gISEo
bV90eXBlICYgZGVzaXJlZFR5cGUpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzVHlwZShTcGVj
dWxhdGVkVHlwZSBkZXNpcmVkVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhKG1fdHlwZSAm
IH5kZXNpcmVkVHlwZSk7CisgICAgfQorICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVy
KEdyYXBoJiwgY29uc3QgU3RydWN0dXJlU2V0Jik7CiAgICAgCiAgICAgRmlsdHJhdGlvblJlc3Vs
dCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMgYXJyYXlNb2Rlcyk7CkBAIC0xOTMsMjIgKzIw
Myw2IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlckJ5VmFsdWUoSlNWYWx1ZSB2YWx1ZSk7CiAgICAgCi0gICAgYm9vbCB2YWxpZGF0ZVR5
cGUoSlNWYWx1ZSB2YWx1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc0hlYXBUb3AoKSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAKLSAgICAgICAgaWYgKG1lcmdlU3Bl
Y3VsYXRpb25zKG1fdHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpKSAhPSBtX3R5cGUp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICBpZiAodmFsdWUu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlICYgU3BlY0VtcHR5KTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCiAgICAgYm9vbCB2YWxpZGF0ZShKU1ZhbHVlIHZhbHVlKSBj
b25zdAogICAgIHsKICAgICAgICAgaWYgKGlzSGVhcFRvcCgpKQpAQCAtMjUxLDcgKzI0NSwxMSBA
QCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICB8fCAhYXJyYXlNb2Rlc0FyZUNs
ZWFyT3JUb3AobV9hcnJheU1vZGVzKTsKICAgICB9CiAgICAgCisjaWYgQVNTRVJUX0RJU0FCTEVE
CisgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QgeyB9CisjZWxzZQogICAgIHZvaWQg
Y2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OworI2VuZGlmCiAgICAgCiAgICAgdm9pZCBkdW1wSW5D
b250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKQEAgLTM2Myw2ICszNjEsMjkgQEAgcHJpdmF0ZToKICAgICAg
ICAgbV9hcnJheU1vZGVzID0gQUxMX0FSUkFZX01PREVTOwogICAgIH0KICAgICAKKyAgICBib29s
IHZhbGlkYXRlVHlwZShKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlz
SGVhcFRvcCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorICAgICAgICAv
LyBDb25zdGFudCBmb2xkaW5nIGFsd2F5cyByZXByZXNlbnRzIEludDQ4J3MgaW4gYSBkb3VibGUg
KGkuZS4gSW50NDhBc0RvdWJsZSkuCisgICAgICAgIC8vIFNvIHNwZWN1bGF0aW9uRnJvbVZhbHVl
KHZhbHVlKSBmb3IgYW4gSW50NDggdmFsdWUgd2lsbCByZXR1cm4gSW50NDhBc0RvdWJsZSwKKyAg
ICAgICAgLy8gYW5kIHRoYXQncyBmaW5lIC0gdGhlIHR5cGUgdmFsaWRhdGVzIGp1c3QgZmluZS4K
KyAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fdHlwZTsKKyAgICAgICAgaWYgKHR5cGUg
JiBTcGVjSW50NDgpCisgICAgICAgICAgICB0eXBlIHw9IFNwZWNJbnQ0OEFzRG91YmxlOworICAg
ICAgICAKKyAgICAgICAgaWYgKG1lcmdlU3BlY3VsYXRpb25zKHR5cGUsIHNwZWN1bGF0aW9uRnJv
bVZhbHVlKHZhbHVlKSkgIT0gdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCht
X3R5cGUgJiBTcGVjRW1wdHkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKICAgICB2b2lkIG1h
a2VUb3AoU3BlY3VsYXRlZFR5cGUgdG9wKQogICAgIHsKICAgICAgICAgbV90eXBlIHw9IHRvcDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHJldmlz
aW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDIxICsxNTcsMjEgQEAgQXJyYXlNb2RlIEFycmF5TW9k
ZTo6cmVmaW5lKFNwZWN1bGF0ZWRUeQogICAgICAgICAgICAgcmV0dXJuIHdpdGhUeXBlKEFycmF5
OjpGb3JjZUV4aXQpOwogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHZhbHVlKSkKICAg
ICAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkludDMyLCBBcnJh
eTo6Q29udmVydCk7Ci0gICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKKyAg
ICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKICAgICAgICAgICAgIHJl
dHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkRvdWJsZSwgQXJyYXk6OkNvbnZlcnQp
OwogICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpDb250aWd1b3Vz
LCBBcnJheTo6Q29udmVydCk7CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXk6OkludDMyOgogICAg
ICAgICBpZiAoIXZhbHVlIHx8IGlzSW50MzJTcGVjdWxhdGlvbih2YWx1ZSkpCiAgICAgICAgICAg
ICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkK
KyAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKICAgICAgICAgICAg
IHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkRvdWJsZSwgQXJyYXk6OkNvbnZl
cnQpOwogICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpDb250aWd1
b3VzLCBBcnJheTo6Q29udmVydCk7CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXk6OkRvdWJsZToK
ICAgICAgICAgaWYgKGZsYWdzICYgTm9kZUJ5dGVjb2RlVXNlc0FzSW50KQogICAgICAgICAgICAg
cmV0dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6Q29udGlndW91cywgQXJyYXk6OlJh
Z2VDb252ZXJ0KTsKLSAgICAgICAgaWYgKCF2YWx1ZSB8fCBpc051bWJlclNwZWN1bGF0aW9uKHZh
bHVlKSkKKyAgICAgICAgaWYgKCF2YWx1ZSB8fCBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbih2YWx1
ZSkpCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIHJldHVybiB3aXRoVHlwZUFu
ZENvbnZlcnNpb24oQXJyYXk6OkNvbnRpZ3VvdXMsIEFycmF5OjpDb252ZXJ0KTsKICAgICAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJz
LmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNz
ZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Myw2ICsyOTMsMjQgQEAgcHVibGlj
OgogICAgICAgICBtb3ZlNjRUb0RvdWJsZShncHIsIGZwcik7CiAgICAgICAgIHJldHVybiBmcHI7
CiAgICAgfQorICAgIAorICAgIHZvaWQgYm94SW50NDgoR1BSUmVnIHNvdXJjZSwgR1BSUmVnIHRh
cmdldCwgR1BSUmVnIHNjcmF0Y2gsIEZQUlJlZyBmcFNjcmF0Y2gpCisgICAgeworICAgICAgICAv
LyBJcyBpdCBhbiBpbnQzMj8KKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoc291cmNlLCBzY3Jh
dGNoKTsKKyAgICAgICAgSnVtcCBpc0ludDMyID0gYnJhbmNoNjQoRXF1YWwsIHNvdXJjZSwgc2Ny
YXRjaCk7CisgICAgICAgIAorICAgICAgICAvLyBOb3BlLCBpdCdzIG5vdCwgYnV0IHJlZ1QwIGNv
bnRhaW5zIHRoZSBpbnQ2NCB2YWx1ZS4KKyAgICAgICAgY29udmVydEludDY0VG9Eb3VibGUoc291
cmNlLCBmcFNjcmF0Y2gpOworICAgICAgICBib3hEb3VibGUoZnBTY3JhdGNoLCB0YXJnZXQpOwor
ICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIAorICAgICAgICBpc0ludDMyLmxp
bmsodGhpcyk7CisgICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKHNvdXJjZSwgdGFyZ2V0KTsKKyAg
ICAgICAgb3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRhcmdldCk7CisgICAg
ICAgIAorICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfQogI2VuZGlmCiAKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFz
ZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywyMSArNjMsNiBAQCBwdWJsaWM6CiAg
ICAgCiBwcml2YXRlOgogICAgIAotICAgIE5vZGUqIGNhbm9uaWNhbGl6ZShOb2RlKiBub2RlKQot
ICAgIHsKLSAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
IAotICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBWYWx1ZVRvSW50MzIpCi0gICAgICAgICAgICBu
b2RlID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIG5v
ZGU7Ci0gICAgfQotICAgIE5vZGUqIGNhbm9uaWNhbGl6ZShFZGdlIGVkZ2UpCi0gICAgewotICAg
ICAgICByZXR1cm4gY2Fub25pY2FsaXplKGVkZ2Uubm9kZSgpKTsKLSAgICB9Ci0gICAgCiAgICAg
dW5zaWduZWQgZW5kSW5kZXhGb3JQdXJlQ1NFKCkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHJl
c3VsdCA9IG1fbGFzdFNlZW5bbV9jdXJyZW50Tm9kZS0+b3AoKV07CkBAIC05NCw5ICs3OSw5IEBA
IHByaXZhdGU6CiAKICAgICBOb2RlKiBwdXJlQ1NFKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAg
ICBOb2RlKiBjaGlsZDEgPSBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBO
b2RlKiBjaGlsZDIgPSBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBOb2Rl
KiBjaGlsZDMgPSBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBFZGdlIGNo
aWxkMSA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBFZGdlIGNoaWxkMiA9IG5vZGUtPmNoaWxk
MigpOworICAgICAgICBFZGdlIGNoaWxkMyA9IG5vZGUtPmNoaWxkMygpOwogICAgICAgICAKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gZW5kSW5kZXhGb3JQdXJlQ1NFKCk7IGktLTspIHsKICAg
ICAgICAgICAgIE5vZGUqIG90aGVyTm9kZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKQEAgLTEw
OSwxOSArOTQsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChub2RlLT5hcml0aE5vZGVG
bGFncygpICE9IG90aGVyTm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZSogb3RoZXJDaGlsZCA9IGNh
bm9uaWNhbGl6ZShvdGhlck5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEVkZ2Ugb3RoZXJD
aGlsZCA9IG90aGVyTm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgICAgICBpZiAoIW90aGVyQ2hpbGQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyTm9kZTsKICAgICAgICAgICAgIGlmIChvdGhl
ckNoaWxkICE9IGNoaWxkMSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgb3RoZXJDaGlsZCA9IGNhbm9uaWNhbGl6ZShvdGhlck5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIG90aGVyQ2hpbGQgPSBvdGhlck5vZGUtPmNoaWxkMigpOwogICAg
ICAgICAgICAgaWYgKCFvdGhlckNoaWxkKQogICAgICAgICAgICAgICAgIHJldHVybiBvdGhlck5v
ZGU7CiAgICAgICAgICAgICBpZiAob3RoZXJDaGlsZCAhPSBjaGlsZDIpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG90aGVyQ2hpbGQgPSBjYW5v
bmljYWxpemUob3RoZXJOb2RlLT5jaGlsZDMoKSk7CisgICAgICAgICAgICBvdGhlckNoaWxkID0g
b3RoZXJOb2RlLT5jaGlsZDMoKTsKICAgICAgICAgICAgIGlmICghb3RoZXJDaGlsZCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gb3RoZXJOb2RlOwogICAgICAgICAgICAgaWYgKG90aGVyQ2hpbGQg
IT0gY2hpbGQzKQpAQCAtMzc3LDIxICszNjIsMjEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CiAgICAgICAgICAgICBO
b2RlKiBub2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwotICAgICAgICAgICAgaWYgKG5vZGUg
PT0gY2hpbGQxIHx8IG5vZGUgPT0gY2Fub25pY2FsaXplKGNoaWxkMikpIAorICAgICAgICAgICAg
aWYgKG5vZGUgPT0gY2hpbGQxIHx8IG5vZGUgPT0gY2hpbGQyKSAKICAgICAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBj
YXNlIEdldEJ5VmFsOgogICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5ieVZhbElzUHVyZShu
b2RlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpID09IGNoaWxkMSAmJiBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQyKCkp
ID09IGNhbm9uaWNhbGl6ZShjaGlsZDIpKQorICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKSA9PSBjaGlsZDEgJiYgbm9kZS0+Y2hpbGQyKCkgPT0gY2hpbGQyKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKICAgICAg
ICAgICAgICAgICBpZiAoIW1fZ3JhcGguYnlWYWxJc1B1cmUobm9kZSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDApID09IGNoaWxkMSAmJiBjYW5vbmljYWxpemUobV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAxKSkgPT0gY2Fub25pY2FsaXplKGNoaWxkMikpCisgICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkgPT0gY2hpbGQxICYmIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMSkgPT0gY2hpbGQyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAyKS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgLy8gV2UgbXVz
dCBhc3N1bWUgdGhhdCB0aGUgUHV0QnlWYWwgd2lsbCBjbG9iYmVyIHRoZSBsb2NhdGlvbiB3ZSdy
ZSBnZXR0aW5nIGZyb20uCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0
ZXI7IGlmIHdlIGtub3cgdGhhdCB0aGUgUHV0QnlWYWwgaXMgYWNjZXNzaW5nIGFuIGFycmF5IG9m
IGEKQEAgLTEwOTAsNiArMTA3NSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ29tcGFyZUVx
Q29uc3RhbnQ6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAgICBjYXNlIE1ha2VS
b3BlOgorICAgICAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIGNhc2UgSW50NDhUb1Zh
bHVlOgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KHB1cmVDU0Uobm9k
ZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJl
dmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDggQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgTG9naWNhbE5vdDoKICAgICBjYXNlIElu
dDMyVG9Eb3VibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIElu
dDQ4VG9Eb3VibGU6CisgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CiAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCiAgICAgY2FzZSBNb3ZIaW50QW5kQ2hlY2s6CkBAIC0xODAsNiArMTgyLDcgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBzd2l0Y2ggKG5v
ZGUtPmJpbmFyeVVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBj
YXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAgICByZWFkKFdvcmxk
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNpb24gMTU1
OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMTQzLDYgKzE0MywxNSBAQCBpbmxpbmUgYm9vbCBlbmFibGVDb25jdXJyZW50SklU
KCkKICNlbmRpZgogfQogCitpbmxpbmUgYm9vbCBlbmFibGVJbnQ0OCgpCit7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCit9CisKIGVudW0gU3BpbGxSZWdpc3RlcnNNb2RlIHsgTmVlZFRvU3BpbGwsIERvbnRTcGls
bCB9OwogCiBlbnVtIE5vUmVzdWx0VGFnIHsgTm9SZXN1bHQgfTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNiArNjQsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgZml4dXBTZXRMb2Nh
bHNJbkJsb2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkpOwogICAgICAgICB9CiAgICAgICAg
IAorICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBt
X2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpCisgICAgICAgICAgICBmaXh1cFVudHlw
ZWRTZXRMb2NhbHNJbkJsb2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkpOworICAgICAgICAK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC05Miw3ICs5NSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBTZXRMb2NhbDogewogICAgICAg
ICAgICAgLy8gVGhpcyBnZXRzIGhhbmRsZWQgYnkgZml4dXBTZXRMb2NhbHNJbkJsb2NrKCkuCi0g
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgQml0QW5kOgpAQCAtMTI0LDYgKzEyNywxMSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQo
KSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigp
KSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE5Nyw2ICsyMDUsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobV9ncmFwaC5u
ZWdhdGVTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIwNyw2ICsy
MTksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaXhF
ZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZml4RWRnZTxOdW1i
ZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzAwLDYgKzMx
NywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAgICAgJiYgTm9kZTo6c2hvdWxk
U3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9k
ZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxO
dW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzU1LDYgKzM3OCwxMiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0
OCgpCisgICAgICAgICAgICAgICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChu
b2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91
bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5u
b2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkp
OwpAQCAtNDc2LDYgKzUwNSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8
S25vd25DZWxsVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQzKTsKKyAg
ICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5wcmVkaWN0aW9uKCkgJiBTcGVjSW50NDgpCisgICAg
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4oY2hpbGQzKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxk
Myk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3Vi
bGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGNoaWxkMSk7CkBAIC00
OTMsNiArNTI2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNl
PihjaGlsZDIpOwogICAgICAgICAgICAgICAgIGlmIChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZUlu
dDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxkMyk7Cisg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50
KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4oY2hpbGQzKTsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVy
VXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODQ3LDYgKzg4Miw4IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgICAgIGNhc2Ug
Q2hlY2tUaWVyVXBBdFJldHVybjoKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVy
OgorICAgICAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIGNhc2UgSW50NDhUb1ZhbHVl
OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAKQEAgLTExODksNiArMTIyNiw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNl
Pihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgRmx1c2hlZENlbGw6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjAzLDYgKzEyNDMsMjMgQEAg
cHJpdmF0ZToKICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAgICAgfQog
ICAgIAorICAgIHZvaWQgZml4dXBVbnR5cGVkU2V0TG9jYWxzSW5CbG9jayhCYXNpY0Jsb2NrKiBi
bG9jaykKKyAgICB7CisgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIEFTU0VSVChibG9jay0+aXNSZWFjaGFibGUpOworICAgICAgICBtX2Jsb2NrID0gYmxv
Y2s7CisgICAgICAgIGZvciAobV9pbmRleEluQmxvY2sgPSAwOyBtX2luZGV4SW5CbG9jayA8IGJs
b2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxvY2spIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBtX2N1cnJlbnROb2RlID0gYmxvY2stPmF0KG1faW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpICE9IFNldExvY2FsKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UpCisgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIH0KKyAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9j
ayk7CisgICAgfQorICAgIAogICAgIE5vZGUqIGNoZWNrQXJyYXkoQXJyYXlNb2RlIGFycmF5TW9k
ZSwgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgTm9kZSogYXJyYXksIE5vZGUqIGluZGV4
LCBib29sICgqc3RvcmFnZUNoZWNrKShjb25zdCBBcnJheU1vZGUmKSA9IGNhbkNTRVN0b3JhZ2Up
CiAgICAgewogICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU3BlY2lmaWMoKSk7CkBAIC0xMzIx
LDYgKzEzNzgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB8fCBpc0Jvb2xlYW5TcGVj
dWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKICAgICAgICAgICAgICAgICBtX3Byb2Zp
dGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1
ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAg
ICAgICAgICAgaWYgKGlzTWFjaGluZUludFNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9u
KCkpKQorICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUt
Pm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENlbGxVc2U6CiAgICAgICAgIGNhc2UgS25vd25DZWxsVXNlOgogICAgICAgICBj
YXNlIE9iamVjdFVzZToKQEAgLTEzNDcsMTIgKzE0MDgsODAgQEAgcHJpdmF0ZToKICAgICB0ZW1w
bGF0ZTxVc2VLaW5kIHVzZUtpbmQ+CiAgICAgdm9pZCBmaXhFZGdlKEVkZ2UmIGVkZ2UsIFNwZWN1
bGF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCiAgICAgewot
ICAgICAgICBpZiAoaXNEb3VibGUodXNlS2luZCkgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50
MzJGb3JBcml0aG1ldGljKCkpIHsKLSAgICAgICAgICAgIGluamVjdEludDMyVG9Eb3VibGVOb2Rl
KGVkZ2UsIHVzZUtpbmQsIGRpcmVjdGlvbik7CisgICAgICAgIGlmIChpc0RvdWJsZSh1c2VLaW5k
KSkgeworICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGht
ZXRpYygpKSB7CisgICAgICAgICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoZWRnZSwg
dXNlS2luZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIGVkZ2Ut
PnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAgICAgIC8vIE1ha2Ug
YWxsIGRvdWJsZSB1c2VzIG9mIGludDQ4IHZhbHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ0
OFRvRG91YmxlLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHRoZSBzYW1lIHJlYXNv
biBhcyBJbnQ0OFRvVmFsdWUgKHNlZSBiZWxvdykgZXhjZXB0IHRoYXQKKyAgICAgICAgICAgICAg
ICAvLyBJbnQ4VG9Eb3VibGUgd2lsbCBjb252ZXJ0IGludDQ4J3MgdGhhdCBmaXQgaW4gYW4gaW50
MzIgaW50byBhIGRvdWJsZQorICAgICAgICAgICAgICAgIC8vIHJhdGhlciB0aGFuIHRyeWluZyB0
byBjcmVhdGUgYSBib3hlZCBpbnQzMiBsaWtlIEludDQ4VG9WYWx1ZSBkb2VzLgorICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDhB
c0RvdWJsZSwgSW50NDhUb0RvdWJsZSwKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Tm9k
ZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7CisgICAgICAgICAg
ICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChlbmFi
bGVJbnQ0OCgpICYmIHVzZUtpbmQgIT0gTWFjaGluZUludFVzZQorICAgICAgICAgICAgJiYgZWRn
ZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpICYmICFlZGdlLT5zaG91bGRTcGVjdWxhdGVJ
bnQzMigpKSB7CisgICAgICAgICAgICAvLyBXZSBtYWtlIGFsbCBub24taW50NDggdXNlcyBvZiBp
bnQ0OCB2YWx1ZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgSW50NDhUb1ZhbHVlCisgICAgICAgICAg
ICAvLyBub2RlIHRvIGVuc3VyZSB0aGF0IHdlIGhhbmRsZSB0aGlzIHByb3Blcmx5OgorICAgICAg
ICAgICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8gYjog
QXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8vIGM6IENhbGwoLi4uLCBAYSkKKyAgICAg
ICAgICAgIC8vIGQ6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gV2l0aG91dCBhbiBpbnRlcm1lZGlhdGUgbm9kZSBhbmQganVzdCBsYWJlbGluZyB0aGUg
dXNlcywgd2Ugd2lsbCBnZXQ6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gYTogU29t
ZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAg
ICAgICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QGEpCisgICAgICAgICAgICAvLyBkOiBBcml0
aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEFuZCBu
b3cgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSB3aWxsIGJveCB0aGUgdmFsdWUgb2YgQGEgaW50byBh
IGRvdWJsZS4gVGhpcworICAgICAgICAgICAgLy8gaXMgYmFkLCBiZWNhdXNlIG5vdyB0aGUgZC0+
SW50NDg6QGEgZWRnZSB3aWxsIGVpdGhlciBoYXZlIHRvIGRvIGRvdWJsZS10by1pbnQKKyAgICAg
ICAgICAgIC8vIGNvbnZlcnNpb25zLCBvciB3aWxsIGhhdmUgdG8gT1NSIGV4aXQgdW5jb25kaXRp
b25hbGx5LiBBbHRlcm5hdGl2ZWx5IHdlIGNvdWxkCisgICAgICAgICAgICAvLyBoYXZlIHRoZSBj
LT5VbnR5cGVkOkBhIGVkZ2UgYm94IHRoZSB2YWx1ZSBieSBjb3B5aW5nIHJhdGhlciB0aGFuIGlu
LXBsYWNlLgorICAgICAgICAgICAgLy8gQnV0IHRoZXNlIGJveGluZ3MgYXJlIGFsc28gY29zdGx5
IHNvIHRoaXMgd291bGRuJ3QgYmUgZ3JlYXQuCisgICAgICAgICAgICAvLworICAgICAgICAgICAg
Ly8gVGhlIHNvbHV0aW9uIHdlIHVzZSBpcyB0byBhbHdheXMgaGF2ZSBub24tSW50NDggdXNlcyBv
ZiBwcmVkaWN0ZWQgSW50NDgncyB1c2UKKyAgICAgICAgICAgIC8vIGFuIGludGVydmVuaW5nIElu
dDQ4VG9WYWx1ZSBub2RlOgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJ
bnQ0OAorICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoSW50NDg6QGEsIC4uLikKKyAgICAgICAg
ICAgIC8vIHg6IEludDQ4VG9WYWx1ZShJbnQ0ODpAYSkKKyAgICAgICAgICAgIC8vIGM6IENhbGwo
Li4uLCBVbnR5cGVkOkB4KQorICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQoSW50NDg6QGEsIC4u
LikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgZXZlbiBpZiB3ZSBo
YWQgbXVsdGlwbGUgbm9uLWludDQ4IHVzZXMgb2YgQGEsIHRoZSBtdWx0aXBsZQorICAgICAgICAg
ICAgLy8gSW50NDhUb1ZhbHVlJ3Mgd291bGQgZ2V0IENTRSdkIHRvZ2V0aGVyLiBTbyB0aGUgYm94
aW5nIHdvdWxkIG9ubHkgaGFwcGVuIG9uY2UuCisgICAgICAgICAgICAvLyBBdCB0aGUgc2FtZSB0
aW1lLCBAYSB3b3VsZCBjb250aW51ZSB0byBiZSByZXByZXNlbnRlZCBhcyBhIG5hdGl2ZSBpbnQ0
OC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBo
YXZlIGJlZW4gdG8gaW5zZXJ0IFRvTmF0aXZlSW50NDggbm9kZXMgb24gaW50NDggdXNlcyBvZgor
ICAgICAgICAgICAgLy8gaW50NDgncy4gVGhpcyB3b3VsZCBoYXZlIGhhbmRsZWQgdGhlIGFib3Zl
IGV4YW1wbGUgYnV0IHdvdWxkIGZhbGwgb3ZlciBmb3I6CisgICAgICAgICAgICAvLworICAgICAg
ICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBDYWxsKC4uLiwgQGEpCisg
ICAgICAgICAgICAvLyBjOiBBcml0aEFkZChAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAg
ICAgICAgIC8vIEJ1dCB0aGUgc29sdXRpb24gd2UgdXNlIGhhbmRsZXMgdGhlIGFib3ZlIGdyYWNl
ZnVsbHkuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJ
bnQ0OCwgSW50NDhUb1ZhbHVlLAorICAgICAgICAgICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVP
cmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgIGVkZ2Ug
PSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPHVzZUtpbmQ+KGVkZ2Uubm9k
ZSgpKTsKKyAgICAgICAgCiAgICAgICAgIGVkZ2Uuc2V0VXNlS2luZCh1c2VLaW5kKTsKICAgICB9
CiAgICAgCkBAIC0xMzc4LDcgKzE1MDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5qZWN0SW50
MzJUb0RvdWJsZU5vZGUoRWRnZSYgZWRnZSwgVXNlS2luZCB1c2VLaW5kID0gTnVtYmVyVXNlLCBT
cGVjdWxhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBCYWNrd2FyZFNwZWN1bGF0aW9uKQogICAg
IHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDgsIEludDMyVG9Eb3VibGUsCisgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4QXNEb3VibGUsIEludDMyVG9Eb3VibGUs
CiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgp
LCBOdW1iZXJVc2UpKTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb3J3YXJkU3BlY3VsYXRp
b24pCiAgICAgICAgICAgICByZXN1bHQtPm1lcmdlRmxhZ3MoTm9kZUV4aXRzRm9yd2FyZCk7CkBA
IC0xNDM0LDEzICsxNTYzLDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBhdHRlbXB0VG9NYWtlSW50
ZWdlckFkZChOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgQWRkU3BlY3VsYXRpb25Nb2RlIG1v
ZGUgPSBtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShub2RlKTsKLSAgICAgICAgaWYgKG1vZGUg
PT0gRG9udFNwZWN1bGF0ZUludDMyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAobW9kZSAhPSBEb250U3BlY3VsYXRlSW50MzIpIHsKKyAgICAgICAgICAgIHRydW5jYXRl
Q29uc3RhbnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9kZSk7CisgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgdHJ1bmNhdGVDb25zdGFudHNJZk5lY2Vzc2FyeShub2RlLCBtb2RlKTsK
LSAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7Cisg
ICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBhdHRlbXB0VG9NYWtlR2V0QXJyYXlMZW5ndGgoTm9k
ZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3Jt
YXQuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZsdXNoRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgRmx1CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6
CiAgICAgICAgIG91dC5wcmludCgiRmx1c2hlZEludDMyIik7CiAgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgb3V0LnByaW50KCJGbHVzaGVkSW50NDgiKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKICAgICAgICAgb3V0LnBy
aW50KCJGbHVzaGVkRG91YmxlIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiBlbnVtIEZs
dXNoRm9ybWF0IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMyLAorICAgIEZsdXNo
ZWRJbnQ0OCwKICAgICBGbHVzaGVkRG91YmxlLAogICAgIEZsdXNoZWRDZWxsLAogICAgIEZsdXNo
ZWRCb29sZWFuLApAQCAtNTUsNiArNTYsOCBAQCBpbmxpbmUgTm9kZUZsYWdzIHJlc3VsdEZvcihG
bHVzaEZvcm1hdCBmCiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0SlM7CiAgICAgY2FzZSBGbHVz
aGVkSW50MzI6CiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0SW50MzI7CisgICAgY2FzZSBGbHVz
aGVkSW50NDg6CisgICAgICAgIHJldHVybiBOb2RlUmVzdWx0SW50NDg7CiAgICAgY2FzZSBGbHVz
aGVkRG91YmxlOgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdE51bWJlcjsKICAgICBjYXNlIEZs
dXNoZWRCb29sZWFuOgpAQCAtNzQsNiArNzcsOCBAQCBpbmxpbmUgVXNlS2luZCB1c2VLaW5kRm9y
KEZsdXNoRm9ybWF0IGZvCiAgICAgICAgIHJldHVybiBDZWxsVXNlOwogICAgIGNhc2UgRmx1c2hl
ZEludDMyOgogICAgICAgICByZXR1cm4gSW50MzJVc2U7CisgICAgY2FzZSBGbHVzaGVkSW50NDg6
CisgICAgICAgIHJldHVybiBNYWNoaW5lSW50VXNlOwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToK
ICAgICAgICAgcmV0dXJuIE51bWJlclVzZTsKICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaAkocmV2
aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9u
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxOSBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCBncHIsIERhdGFGb3JtYXRJbnQzMik7CiAg
ICAgfQorICAgIHZvaWQgaW5pdEludDQ4KE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBH
UFJSZWcgcmVnLCBEYXRhRm9ybWF0IGZvcm1hdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChmb3Jt
YXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IGZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgp
OworICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCByZWcsIGZvcm1hdCk7CisgICAgfQor
ICAgIHZvaWQgaW5pdEludDQ4KE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcg
cmVnKQorICAgIHsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwgcmVnLCBEYXRhRm9y
bWF0SW50NDgpOworICAgIH0KKyAgICB2b2lkIGluaXRTdHJpY3RJbnQ0OChOb2RlKiBub2RlLCB1
aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIGluaXRHUFIobm9k
ZSwgdXNlQ291bnQsIHJlZywgRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICB9CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICB2b2lkIGluaXRKU1ZhbHVlKE5vZGUqIG5vZGUsIHVpbnQzMl90IHVz
ZUNvdW50LCBHUFJSZWcgZ3ByLCBEYXRhRm9ybWF0IGZvcm1hdCA9IERhdGFGb3JtYXRKUykKICAg
ICB7CkBAIC0xODcsNiArMjAwLDExIEBAIHB1YmxpYzoKICAgICAvLyBHZXQgdGhlIGZvcm1hdCBv
ZiB0aGUgdmFsdWUgYXMgaXQgaXMgc3BpbGxlZCBpbiB0aGUgSlNTdGFjayAob3IgJ25vbmUnKS4K
ICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0KCkgeyByZXR1cm4gbV9zcGlsbEZvcm1hdDsgfQog
ICAgIAorICAgIGJvb2wgaXNGb3JtYXQoRGF0YUZvcm1hdCBleHBlY3RlZEZvcm1hdCkKKyAgICB7
CisgICAgICAgIHJldHVybiByZWdpc3RlckZvcm1hdCgpID09IGV4cGVjdGVkRm9ybWF0IHx8IHNw
aWxsRm9ybWF0KCkgPT0gZXhwZWN0ZWRGb3JtYXQ7CisgICAgfQorICAgIAogICAgIGJvb2wgaXNK
U0Zvcm1hdChEYXRhRm9ybWF0IGV4cGVjdGVkRm9ybWF0KQogICAgIHsKICAgICAgICAgcmV0dXJu
IEpTQzo6aXNKU0Zvcm1hdChyZWdpc3RlckZvcm1hdCgpLCBleHBlY3RlZEZvcm1hdCkgfHwgSlND
Ojppc0pTRm9ybWF0KHNwaWxsRm9ybWF0KCksIGV4cGVjdGVkRm9ybWF0KTsKQEAgLTE5Nyw2ICsy
MTUsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaXNKU0Zvcm1hdChEYXRhRm9ybWF0SlNJ
bnQzMik7CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNJbnQ0OCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gaXNGb3JtYXQoRGF0YUZvcm1hdEludDQ4KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBp
c1N0cmljdEludDQ4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0Zvcm1hdChEYXRhRm9ybWF0
U3RyaWN0SW50NDgpOworICAgIH0KKyAgICAKICAgICBib29sIGlzSlNEb3VibGUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGlzSlNGb3JtYXQoRGF0YUZvcm1hdEpTRG91YmxlKTsKQEAgLTMxNCw2
ICszNDIsMTkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgZmlsbEdQUihzdHJlYW0sIGdwciwg
RGF0YUZvcm1hdEludDMyKTsKICAgICB9CisgICAgdm9pZCBmaWxsSW50NDgoVmFyaWFibGVFdmVu
dFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByLCBEYXRhRm9ybWF0IGZvcm1hdCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChmb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IGZvcm1hdCA9PSBEYXRh
Rm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBmb3JtYXQp
OworICAgIH0KKyAgICB2b2lkIGZpbGxJbnQ0OChWYXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0s
IEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9y
bWF0SW50NDgpOworICAgIH0KKyAgICB2b2lkIGZpbGxTdHJpY3RJbnQ0OChWYXJpYWJsZUV2ZW50
U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBmaWxsR1BSKHN0cmVh
bSwgZ3ByLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgIH0KICAgICB2b2lkIGZpbGxCb29s
ZWFuKFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwcikKICAgICB7CiAgICAg
ICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERhdGFGb3JtYXRCb29sZWFuKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2
LDE0ICsyMzYsMTQgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAog
ICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCkpCiAgICAgICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJhcmciLCBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5kKSwgIigiLCBWYXJp
YWJsZUFjY2Vzc0RhdGFEdW1wKCp0aGlzLCB2YXJpYWJsZUFjY2Vzc0RhdGEpLCAiKSIpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwgb3BlcmFuZCwgIigi
LCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKCp0aGlzLCB2YXJpYWJsZUFjY2Vzc0RhdGEpLCAiKSIp
OworICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgb3BlcmFuZFRvTG9jYWwob3Bl
cmFuZCksICIoIiwgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcCgqdGhpcywgdmFyaWFibGVBY2Nlc3NE
YXRhKSwgIikiKTsKICAgICB9CiAgICAgaWYgKG5vZGUtPmhhc1VubGlua2VkTG9jYWwoKSkgewog
ICAgICAgICBpbnQgb3BlcmFuZCA9IG5vZGUtPnVubGlua2VkTG9jYWwoKTsKICAgICAgICAgaWYg
KG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAiYXJnIiwgb3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwgb3BlcmFuZCk7CisgICAgICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJsb2MiLCBvcGVyYW5kVG9Mb2NhbChvcGVyYW5kKSk7CiAgICAgfQogICAg
IGlmIChub2RlLT5oYXNDb25zdGFudEJ1ZmZlcigpKSB7CiAgICAgICAgIG91dC5wcmludChjb21t
YSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxNTU5
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzMCw2ICsyMzAsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBhZGRTaG91bGRT
cGVjdWxhdGVNYWNoaW5lSW50KE5vZGUqIGFkZCkKICAgICB7CisgICAgICAgIGlmICghZW5hYmxl
SW50NDgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIE5v
ZGUqIGxlZnQgPSBhZGQtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgTm9kZSogcmlnaHQgPSBh
ZGQtPmNoaWxkMigpLm5vZGUoKTsKIApAQCAtMjU3LDYgKzI2MCw5IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIEFTU0VSVChtdWwtPm9wKCkgPT0gQXJpdGhNdWwpOwogICAgICAgICAKKyAgICAg
ICAgaWYgKCFlbmFibGVJbnQ0OCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKICAgICAgICAgTm9kZSogbGVmdCA9IG11bC0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICBO
b2RlKiByaWdodCA9IG11bC0+Y2hpbGQyKCkubm9kZSgpOwogCkBAIC0yNzQsNiArMjgwLDggQEAg
cHVibGljOgogICAgIGJvb2wgbmVnYXRlU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChOb2RlKiBu
ZWdhdGUpCiAgICAgewogICAgICAgICBBU1NFUlQobmVnYXRlLT5vcCgpID09IEFyaXRoTmVnYXRl
KTsKKyAgICAgICAgaWYgKCFlbmFibGVJbnQ0OCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICByZXR1cm4gbmVnYXRlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTWFjaGlu
ZUludEZvckFyaXRobWV0aWMoKQogICAgICAgICAgICAgJiYgIWhhc0V4aXRTaXRlKG5lZ2F0ZSwg
SW50NDhPdmVyZmxvdykKICAgICAgICAgICAgICYmIG5lZ2F0ZS0+Y2FuU3BlY3VsYXRlSW50NDgo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFj
ZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEzLDggKzMxMyw4IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQK
ICAgICAgICAgICAgIC8vIGJlZm9yZSBhbmQgYWZ0ZXIgc2V0dGluZyBpdC4KICAgICAgICAgICAg
IHNvdXJjZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgaWYgKG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpID09IEZsdXNoZWREb3VibGUpIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoIShzb3VyY2UubV90eXBlICYgflNwZWNOdW1iZXIpKTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoISEoc291cmNlLm1fdHlwZSAmIH5TcGVjRG91YmxlKSA9
PSAhIShzb3VyY2UubV90eXBlICYgU3BlY0ludDMyKSk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KCEoc291cmNlLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikpOworICAgICAgICAgICAgICAgIEFT
U0VSVCghIShzb3VyY2UubV90eXBlICYgflNwZWNEb3VibGUpID09ICEhKHNvdXJjZS5tX3R5cGUg
JiBTcGVjTWFjaGluZUludCkpOwogICAgICAgICAgICAgICAgIGlmICghKHNvdXJjZS5tX3R5cGUg
JiB+U3BlY0RvdWJsZSkpIHsKICAgICAgICAgICAgICAgICAgICAgc291cmNlLm1lcmdlKFNwZWNJ
bnQ0OEFzRG91YmxlKTsKICAgICAgICAgICAgICAgICAgICAgc291cmNlLmZpbHRlcihTcGVjRG91
YmxlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkocmV2
aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw5IEBAIHZvaWQgSklUQ29kZTo6cmVjb25z
dHJ1Y3QoCiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgogICAg
ICAgICAgICAgdmFsdWUgPSBqc051bWJlcihleGVjLT5yKG9wZXJhbmQpLnVuYm94ZWRJbnQzMigp
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1Vu
Ym94ZWRJbnQ0ODoKKyAgICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIoZXhlYy0+cihvcGVyYW5k
KS51bmJveGVkSW50NDgoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgogICAgICAgICAgICAgdmFsdWUgPSBqc0RvdWJs
ZU51bWJlcihleGVjLT5yKG9wZXJhbmQpLnVuYm94ZWREb3VibGUoKSk7CiAgICAgICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZE5vZGUu
aAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5p
ZmllZE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBpbmxpbmUgYm9vbCBi
ZWxvbmdzSW5NaW5pZmllZEdyYXBoKE5vZGVUCiAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKICAg
ICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgorICAgIGNh
c2UgSW50NDhUb1ZhbHVlOgorICAgIGNhc2UgSW50NDhUb0RvdWJsZToKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUKCFwZXJtaXRzT1NSQmFja3dhcmRS
ZXdpcmluZyh0eXBlKSAmJiAhcGVybWl0c09TUkZvcndhcmRSZXdpcmluZyh0eXBlKSk7CkBAIC0x
MDQsNiArMTA2LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgogICAg
ICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6Cisg
ICAgICAgIGNhc2UgSW50NDhUb0RvdWJsZToKKyAgICAgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lv
biAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0MSwxMiArMTI0MSwxMiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAgICAg
Ym9vbCBzaG91bGRTcGVjdWxhdGVOdW1iZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzTnVt
YmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzRnVsbE51bWJl
clNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxk
U3BlY3VsYXRlTnVtYmVyRXhwZWN0aW5nRGVmaW5lZCgpCiAgICAgewotICAgICAgICByZXR1cm4g
aXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocHJlZGljdGlvbigpKTsKKyAgICAg
ICAgcmV0dXJuIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChwcmVkaWN0
aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCShyZXZpc2lvbiAx
NTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbGFncy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw4ICs0MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICNkZWZpbmUgTm9kZVJlc3VsdEpTICAgICAgICAgICAgICAgICAgICAgMHgwMDAxCiAjZGVm
aW5lIE5vZGVSZXN1bHROdW1iZXIgICAgICAgICAgICAgICAgIDB4MDAwMgogI2RlZmluZSBOb2Rl
UmVzdWx0SW50MzIgICAgICAgICAgICAgICAgICAweDAwMDMKLSNkZWZpbmUgTm9kZVJlc3VsdEJv
b2xlYW4gICAgICAgICAgICAgICAgMHgwMDA0Ci0jZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAg
ICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBOb2RlUmVzdWx0SW50NDggICAgICAgICAgICAg
ICAgICAweDAwMDQKKyNkZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgw
MDA1CisjZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICNkZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAg
ICAgICAgICAgICAgICAgMHgwMDA4IC8vIHNldCBvbiBub2RlcyB0aGF0IGhhdmUgc2lkZSBlZmZl
Y3RzLCBhbmQgbWF5IG5vdCB0cml2aWFsbHkgYmUgcmVtb3ZlZCBieSBEQ0UuCiAjZGVmaW5lIE5v
ZGVIYXNWYXJBcmdzICAgICAgICAgICAgICAgICAgIDB4MDAxMApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiAr
MTE0LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhJbnQz
MlRvRG91YmxlLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgLyogVXNlZCB0byBzcGVjdWxhdGUg
dGhhdCBhIGRvdWJsZSB2YWx1ZSBpcyBhY3R1YWxseSBhbiBpbnRlZ2VyLiAqL1wKICAgICBtYWNy
byhEb3VibGVBc0ludDMyLCBOb2RlUmVzdWx0SW50MzIgfCBOb2RlRXhpdHNGb3J3YXJkKSBcCisg
ICAgLyogVXNlZCB0byBzZXBhcmF0ZSByZXByZXNlbnRhdGlvbiBhbmQgcmVnaXN0ZXIgYWxsb2Nh
dGlvbiBvZiBJbnQ0OCdzIHJlcHJlc2VudGVkICovXAorICAgIC8qIGFzIHZhbHVlcy4gKi9cCisg
ICAgbWFjcm8oSW50NDhUb1ZhbHVlLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhJbnQ0OFRv
RG91YmxlLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBhcml0
aG1ldGljIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKEFyaXRoQWRkLCBOb2RlUmVzdWx0TnVt
YmVyIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMzU2LDYgKzM2MCwxNyBAQCBpbmxpbmUgdW5z
aWduZWQgZm9yd2FyZFJld2lyaW5nU2VsZWN0aW9uCiAgICAgICAgIC8vIFRoaXMgbG9zZXMgaW5m
b3JtYXRpb24uIE9ubHkgdXNlIGl0IGlmIHRoZXJlIGFyZSBubyBiZXR0ZXIgYWx0ZXJuYXRpdmVz
LgogICAgICAgICByZXR1cm4gMjU7CiAgICAgICAgIAorICAgIGNhc2UgSW50NDhUb1ZhbHVlOgor
ICAgICAgICAvLyBMb3NlcyBubyBpbmZvcm1hdGlvbi4gSXQganVzdCBib3hlcyB0aGUgdmFsdWUs
IHdoaWNoIGlzIHdoYXQgT1NSIHdhbnRzCisgICAgICAgIC8vIHRvIGRvIGFueXdheS4KKyAgICAg
ICAgcmV0dXJuIDEwMDsKKyAgICAgICAgCisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOgorICAgICAg
ICAvLyBUaGlzIGlzIGxpa2UgSW50MzJUb0RvdWJsZTsgd2UgY2FuIHVzZSBpdCBiZWNhdXNlIGl0
IGdpdmVzIGEgc2VtYW50aWNhbGx5CisgICAgICAgIC8vIGVxdWl2YWxlbnQgdmFsdWUgYnV0IHRo
YXQgdmFsdWUgbWF5IGJlIGFuIGludDMyIGluIGEgZG91YmxlLCBzbyB3ZSdkCisgICAgICAgIC8v
IHJhdGhlciBub3QgaWYgd2UgY2FuIGF2b2lkIGl0LgorICAgICAgICByZXR1cm4gNzU7CisgICAg
ICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCShy
ZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDYgKzE5NSw4IEBAIHZvaWQgT1NS
RXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgY2FzZSBJbkdQUjoKICAg
ICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKICAgICAgICAgY2FzZSBVSW50MzJJbkdQUjoK
KyAgICAgICAgY2FzZSBVbmJveGVkSW50NDhJbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVkU3Ry
aWN0SW50NDhJbkdQUjoKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQocmVjb3ZlcnkuZ3ByKCks
IHNjcmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAt
MjM1LDEyICsyMzcsMTUgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0
IAogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBJbnQzMkRp
c3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6
CisgICAgICAgIGNhc2UgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgU3Ry
aWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BS
SW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
c2NyYXRjaCArIGluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgogICAgICAgICBjYXNlIEFs
cmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU6CisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZEludDQ4OgogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAg
bV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMjc0LDMzICsyNzksMzcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNv
bXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdU
MCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hl
ZERvdWJsZToKLSAgICAgICAgY2FzZSBJbkZQUjoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFj
ZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAg
ICBtX2ppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAg
ICAgICAgICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OgorICAgICAg
ICBjYXNlIFVuYm94ZWRJbnQ0OEluR1BSOgorICAgICAgICBjYXNlIEludDQ4RGlzcGxhY2VkSW5K
U1N0YWNrOgorICAgICAgICAgICAgbV9qaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5m
bzo6cmVnVDApOworICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoMTYpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5ib3hJ
bnQ0OChHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAs
IEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ0OEluR1BSOgor
ICAgICAgICBjYXNlIFN0cmljdEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAg
bV9qaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAg
ICAgbV9qaXQuYm94SW50NDgoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZv
OjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQ
UkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBVSW50MzJJbkdQUjog
eworICAgICAgICBjYXNlIFVJbnQzMkluR1BSOgogICAgICAgICAgICAgbV9qaXQubG9hZDY0KHNj
cmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQuemVyb0V4
dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6SnVtcCBwb3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKAotICAgICAg
ICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6R3JlYXRlclRoYW5PckVxdWFsLAotICAgICAgICAg
ICAgICAgIEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7
Ci0gICAgICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShHUFJJbmZvOjpyZWdUMCwg
RlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5hZGREb3VibGUoCi0gICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJkFzc2VtYmx5SGVscGVy
czo6dHdvVG9UaGUzMiksCi0gICAgICAgICAgICAgICAgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAg
ICAgICAgICBtX2ppdC5ib3hJbnQ0OChHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQ
UkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
NjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFscmVhZHlJ
bkpTU3RhY2tBc1VuYm94ZWREb3VibGU6CisgICAgICAgIGNhc2UgSW5GUFI6CisgICAgICAgIGNh
c2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgbV9qaXQubW92ZShBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5m
bzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBtX2ppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdU
MCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGRv
bmUgPSBtX2ppdC5qdW1wKCk7Ci0gICAgICAgICAgICBwb3NpdGl2ZS5saW5rKCZtX2ppdCk7Ci0g
ICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BS
SW5mbzo6cmVnVDApOwotICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAg
ICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIENvbnN0YW50OgogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NCgKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5j
cHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTQgKzQwLDYgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1zdGF0aWMgQ1N0cmluZyBzaG9ydE9wZXJh
bmRzRHVtcChjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMpCi17Ci0gICAg
RHVtcENvbnRleHQgY29udGV4dDsKLSAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7Ci0gICAgb3V0
LnByaW50KGluQ29udGV4dChvcGVyYW5kcywgJmNvbnRleHQpKTsKLSAgICByZXR1cm4gb3V0LnRv
Q1N0cmluZygpOwotfQotCiBleHRlcm4gIkMiIHsKIAogdm9pZCBjb21waWxlT1NSRXhpdChFeGVj
U3RhdGUqIGV4ZWMpCkBAIC0xMTMsNyArMTA1LDcgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAoIkRGRyBPU1IgZXhpdCAjJXUgKCVzLCAlcykgZnJv
bSAlcywgd2l0aCBvcGVyYW5kcyA9ICVzIiwKICAgICAgICAgICAgICAgICBleGl0SW5kZXgsIHRv
Q1N0cmluZyhleGl0Lm1fY29kZU9yaWdpbikuZGF0YSgpLAogICAgICAgICAgICAgICAgIGV4aXRL
aW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0b0NTdHJpbmcoKmNvZGVCbG9jaykuZGF0YSgpLAot
ICAgICAgICAgICAgICAgIHNob3J0T3BlcmFuZHNEdW1wKG9wZXJhbmRzKS5kYXRhKCkpKTsKKyAg
ICAgICAgICAgICAgICB0b0NTdHJpbmcoaWdub3JpbmdDb250ZXh0PER1bXBDb250ZXh0PihvcGVy
YW5kcykpLmRhdGEoKSkpOwogICAgIH0KICAgICAKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3
ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0ZWRE
b3VibGVUeXBlRm9yUHJlZGljdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIGlmICghaXNOdW1iZXJTcGVjdWxhdGlvbih2YWx1ZSkpCisgICAgICAgIGlmICghaXNGdWxs
TnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGU7
CiAgICAgICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVOYU4pCiAgICAgICAgICAgICByZXR1cm4g
U3BlY0RvdWJsZTsKQEAgLTE0OSw4ICsxNDksMTAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0TG9jYWw6IHsKLSAgICAgICAgICAgIFZhcmlhYmxl
QWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gdmFyaWFibGVBY2Nl
c3NEYXRhLT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uID0gdmFyaWFibGUtPnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAg
IGlmICh2YXJpYWJsZS0+c2hvdWxkTmV2ZXJVbmJveCgpICYmIChwcmVkaWN0aW9uICYgU3BlY0lu
dDQ4KSkKKyAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gKHByZWRpY3Rpb24gfCBTcGVjSW50
NDhBc0RvdWJsZSkgJiB+U3BlY0ludDQ4OwogICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCiAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTIwMyw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgaWYgKG5vZGVDYW5TcGVjdWxhdGVJbnQzMihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KFNwZWNOdW1iZXIpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KFNwZWNCeXRlY29kZU51bWJlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBA
IC0yMTIsMTQgKzIxNCwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
cmlnaHQgPSBub2RlLT5jaGlsZDIoKS0+cHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAobGVmdCAmJiByaWdodCkgewotICAgICAgICAgICAgICAgIGlmIChpc051bWJl
clNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChsZWZ0KSAmJiBpc051bWJlclNwZWN1bGF0aW9u
RXhwZWN0aW5nRGVmaW5lZChyaWdodCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNGdWxsTnVt
YmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpICYmIGlzRnVsbE51bWJlclNwZWN1
bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChyaWdodCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGguYWRkU3BlY3VsYXRpb25Nb2RlKG5vZGUpICE9IERvbnRTcGVjdWxhdGVJbnQzMikK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJ
bnQzMik7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3Bl
Y3VsYXRlTWFjaGluZUludChub2RlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ0OCk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHNwZWN1
bGF0ZWREb3VibGVUeXBlRm9yUHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCEobGVmdCAmIFNwZWNOdW1iZXIpIHx8ICEocmlnaHQgJiBTcGVjTnVt
YmVyKSkgeworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIShsZWZ0ICYgU3BlY0Z1bGxOdW1i
ZXIpIHx8ICEocmlnaHQgJiBTcGVjRnVsbE51bWJlcikpIHsKICAgICAgICAgICAgICAgICAgICAg
Ly8gbGVmdCBvciByaWdodCBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBvdGhlciB0aGFuIGEgbnVt
YmVyLgogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVj
U3RyaW5nKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKQEAgLTM2OCwxMCArMzcwLDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEdldEJ5VmFsOiB7CisgICAgICAgICAg
ICBpZiAoIW5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBpZiAoIW5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkKICAgICAgICAgICAgICAgICB8fCBu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpCiAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0RvdWJsZSk7Ci0gICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlVWludDMyQXJyYXkoKSkgeworICAgICAgICAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRp
b24obm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NDgp
OworICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24obm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtNTY2LDYgKzU3OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hl
Y2tXYXRjaGRvZ1RpbWVyOgogICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNl
IExvb3BIaW50OgorICAgICAgICBjYXNlIEludDQ4VG9WYWx1ZToKKyAgICAgICAgY2FzZSBJbnQ0
OFRvRG91YmxlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8g
VGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBhbHJlYWR5IGhhcyBhIHByZWRpY3Rpb24uCkBA
IC02NDAsOCArNjU0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
IERvdWJsZUJhbGxvdCBiYWxsb3Q7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAo
aXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQobGVmdCkgJiYgaXNOdW1iZXJTcGVj
dWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocmlnaHQpCi0gICAgICAgICAgICAgICAgJiYgIW1fZ3Jh
cGguYWRkU2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSkpCisgICAgICAgICAgICBpZiAoaXNGdWxs
TnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpICYmIGlzRnVsbE51bWJlclNw
ZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChyaWdodCkKKyAgICAgICAgICAgICAgICAmJiAhbV9n
cmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlKQorICAgICAgICAgICAgICAgICYmICFt
X2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpCiAgICAgICAgICAgICAg
ICAgYmFsbG90ID0gVm90ZURvdWJsZTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBiYWxsb3QgPSBWb3RlVmFsdWU7CkBAIC02NTcsOCArNjcyLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIERvdWJsZUJhbGxvdCBiYWxsb3Q7CiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc051
bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQotICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLm11bFNo
b3VsZFNwZWN1bGF0ZUludDMyKG5vZGUpKQorICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNw
ZWN1bGF0aW9uKGxlZnQpICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQorICAgICAg
ICAgICAgICAgICYmICFtX2dyYXBoLm11bFNob3VsZFNwZWN1bGF0ZUludDMyKG5vZGUpCisgICAg
ICAgICAgICAgICAgJiYgIW1fZ3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2Rl
KSkKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlRG91YmxlOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGJhbGxvdCA9IFZvdGVWYWx1ZTsKQEAgLTY3Nyw3ICs2OTMsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgRG91YmxlQmFsbG90IGJh
bGxvdDsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0
aW9uKGxlZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb24ocmlnaHQpCisgICAgICAgICAgICBpZiAo
aXNGdWxsTnVtYmVyU3BlY3VsYXRpb24obGVmdCkgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24o
cmlnaHQpCiAgICAgICAgICAgICAgICAgJiYgIShOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnQzMkZv
ckFyaXRobWV0aWMobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkp
ICYmIG5vZGUtPmNhblNwZWN1bGF0ZUludDMyKCkpKQogICAgICAgICAgICAgICAgIGJhbGxvdCA9
IFZvdGVEb3VibGU7CiAgICAgICAgICAgICBlbHNlCkBAIC03MDYsNyArNzIyLDkgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBub2RlLT5jaGlsZDEo
KS0+cHJlZGljdGlvbigpOwogICAgICAgICAgICAgaWYgKGlzRG91YmxlU3BlY3VsYXRpb24ocHJl
ZGljdGlvbikpCiAgICAgICAgICAgICAgICAgbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnZv
dGUoVm90ZURvdWJsZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICghaXNOdW1iZXJTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKSB8fCBpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAg
ICAgICBlbHNlIGlmICgKKyAgICAgICAgICAgICAgICAhaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24o
cHJlZGljdGlvbikKKyAgICAgICAgICAgICAgICB8fCBpc0ludDMyU3BlY3VsYXRpb24ocHJlZGlj
dGlvbikgfHwgaXNNYWNoaW5lSW50U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAg
ICAgICAgbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnZvdGUoVm90ZVZhbHVlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYg
KzYxLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgog
ICAgICAgICBjYXNlIE5vdENlbGxVc2U6CiAgICAgICAgIGNhc2UgT3RoZXJVc2U6CisgICAgICAg
IGNhc2UgTWFjaGluZUludFVzZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEtub3duTnVtYmVy
VXNlOgotICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiB+U3Bl
Y051bWJlcikKKyAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYg
flNwZWNGdWxsTnVtYmVyKQogICAgICAgICAgICAgICAgIG1fcmVzdWx0ID0gZmFsc2U7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKQEAgLTIzOSw2ICsyNDAsOCBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0
UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICBjYXNlIExvb3BI
aW50OgorICAgIGNhc2UgSW50NDhUb0RvdWJsZToKKyAgICBjYXNlIEludDQ4VG9WYWx1ZToKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgIGNhc2UgR2V0QnlWYWw6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2
ZVBsYW4uaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDgg
QEAgZW51bSBTaWxlbnRTcGlsbEFjdGlvbiB7CiBlbnVtIFNpbGVudEZpbGxBY3Rpb24gewogICAg
IERvTm90aGluZ0ZvckZpbGwsCiAgICAgU2V0SW50MzJDb25zdGFudCwKKyAgICBTZXRJbnQ0OENv
bnN0YW50LAorICAgIFNldFN0cmljdEludDQ4Q29uc3RhbnQsCiAgICAgU2V0Qm9vbGVhbkNvbnN0
YW50LAogICAgIFNldENlbGxDb25zdGFudCwKICAgICBTZXRUcnVzdGVkSlNDb25zdGFudCwKQEAg
LTYxLDggKzYzLDEyIEBAIGVudW0gU2lsZW50RmlsbEFjdGlvbiB7CiAgICAgTG9hZDMyVGFnLAog
ICAgIExvYWQzMlBheWxvYWQsCiAgICAgTG9hZDMyUGF5bG9hZEJveEludCwKKyAgICBMb2FkMzJQ
YXlsb2FkQ29udmVydFRvSW50NDgsCisgICAgTG9hZDMyUGF5bG9hZFNpZ25FeHRlbmQsCiAgICAg
TG9hZFB0ciwKICAgICBMb2FkNjQsCisgICAgTG9hZDY0U2hpZnRSaWdodDE2LAorICAgIExvYWQ2
NFNoaWZ0TGVmdDE2LAogICAgIExvYWREb3VibGUsCiAgICAgTG9hZERvdWJsZUJveERvdWJsZSwK
ICAgICBMb2FkSlNVbmJveERvdWJsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04ODgsOCArODg4LDggQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlRG91YgogI2VuZGlmCiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0
YXRlLmZvck5vZGUoZWRnZSk7CiAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlw
ZTsKLSAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwgISh2YWx1
ZS5tX3R5cGUgJiB+U3BlY051bWJlcikpOwotICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVl
LCBTcGVjTnVtYmVyKTsKKyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJV
c2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpKTsKKyAgICBtX2ludGVycHJl
dGVyLmZpbHRlcih2YWx1ZSwgU3BlY0Z1bGxOdW1iZXIpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9u
SW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVn
aXN0ZXIpOwogCkBAIC05MjgsNyArOTI4LDcgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlRG91YgogCiAgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgIT0gRGF0YUZvcm1h
dEpTSW50MzIgJiYgc3BpbGxGb3JtYXQgIT0gRGF0YUZvcm1hdEludDMyKSB7CiAgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgICAgICAgICAgICAgIGlmICh0eXBl
ICYgflNwZWNOdW1iZXIpCisgICAgICAgICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0Z1bGxOdW1i
ZXIpCiAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVNvdXJjZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpKSwgZWRnZSwg
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgSklUQ29tcGlsZXI6
OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFn
KSkpOwogICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZnByKTsKICAgICAgICAgICAgICAgICBoYXNVbmJveGVk
RG91YmxlID0gbV9qaXQuanVtcCgpOwpAQCAtOTYzLDcgKzk2Myw3IEBAIEZQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAgaWYgKGluZm8ucmVnaXN0ZXJGb3Jt
YXQoKSAhPSBEYXRhRm9ybWF0SlNJbnQzMikgewogICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHNj
cmF0Y2godGhpcyk7CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgICAgICAgICBpZiAodHlwZSAmIH5TcGVjTnVtYmVy
KQorICAgICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpCiAgICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRH
UFIpLCBlZGdlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0
YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CiAgICAgICAgICAgICB1
bmJveERvdWJsZSh0YWdHUFIsIHBheWxvYWRHUFIsIGZwciwgc2NyYXRjaC5mcHIoKSk7CiAgICAg
ICAgICAgICBoYXNVbmJveGVkRG91YmxlID0gbV9qaXQuanVtcCgpOwpAQCAtMjkyMyw3ICsyOTIz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWUuZnByKCk7CiAKICAgICAgICAgICAgIERGR19UWVBF
X0NIRUNLKAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIG5vZGUtPmNoaWxkMigpLCBT
cGVjUmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGls
ZDIoKSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaERv
dWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgdmFsdWVGUFIs
IHZhbHVlRlBSKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGlj
TGVuZ3RoKCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKQEAgLTMxODcsNyArMzE4Nyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIG9w
MS51c2UoKTsKICAgICAgICAgCi0gICAgICAgIGlmICghKG1fc3RhdGUuZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV90eXBlICYgfihTcGVjTnVtYmVyIHwgU3BlY0Jvb2xlYW4pKSkgeworICAgICAg
ICBpZiAoIShtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH4oU3BlY0Z1
bGxOdW1iZXIgfCBTcGVjQm9vbGVhbikpKSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVRh
Z0dQUiwgcmVzdWx0VGFnR1BSKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxUGF5bG9hZEdQ
UiwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zMjg5LDcgKzMyODks
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCB1c2UpOwogICAg
ICAgICAgICAgICAgICAgICBGUFJSZWcgb3BGUFIgPSBvcGVyYW5kLmZwcigpOwogICAgICAgICAg
ICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKCksIHVzZSwgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncygpLCB1c2UsIFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxP
clVub3JkZXJlZCwgb3BGUFIsIG9wRlBSKSk7CiAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5zdG9yZURvdWJsZShvcEZQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZUdQUiwgc2l6ZW9mKGRvdWJsZSkgKiBvcGVyYW5kSWR4KSk7CkBAIC0zMzU0LDcgKzMzNTQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAg
ICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIHVzZSk7CiAgICAgICAgICAg
ICAgICAgRlBSUmVnIG9wRlBSID0gb3BlcmFuZC5mcHIoKTsKICAgICAgICAgICAgICAgICBERkdf
VFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVj
UmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVj
RnVsbFJlYWxOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaERvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgb3BGUFIsIG9wRlBSKSk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUob3BG
UFIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlciArIG9wZXJhbmRJZHgpKTsKQEAgLTQ3
OTcsNiArNDc5Nyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVy
bjoKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAgY2FzZSBJbnQ0OFRvRG91
YmxlOgorICAgIGNhc2UgSW50NDhUb1ZhbHVlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1NTkw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDI5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJv
eEludDQ4KEdQUlJlZyBzb3VyY2VHUFIsIEdQUlJlZyB0YXJnZXRHUFIsIERhdGFGb3JtYXQgZm9y
bWF0KQoreworICAgIEdQUlJlZyB0ZW1wR1BSOworICAgIGlmIChzb3VyY2VHUFIgPT0gdGFyZ2V0
R1BSKQorICAgICAgICB0ZW1wR1BSID0gYWxsb2NhdGUoKTsKKyAgICBlbHNlCisgICAgICAgIHRl
bXBHUFIgPSB0YXJnZXRHUFI7CisgICAgCisgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7
CisKKyAgICBpZiAoZm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgbV9qaXQucnNo
aWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgc291cmNlR1BSKTsKKyAgICBlbHNlCisgICAgICAgIEFT
U0VSVChmb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAKKyAgICBtX2ppdC5i
b3hJbnQ0OChzb3VyY2VHUFIsIHRhcmdldEdQUiwgdGVtcEdQUiwgZnByKTsKKyAgICAKKyAgICBp
ZiAodGVtcEdQUiAhPSB0YXJnZXRHUFIpCisgICAgICAgIHVubG9jayh0ZW1wR1BSKTsKKyAgICAK
KyAgICB1bmxvY2soZnByKTsKK30KKwogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1
ZShFZGdlIGVkZ2UpCiB7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVk
Z2UtPnZpcnR1YWxSZWdpc3RlcigpOwpAQCAtNjksMTEgKzkyLDIyIEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IERhdGFGb3JtYXQgc3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CiAgICAgICAgICAg
ICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7
Ci0gICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKHNwaWxsRm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIERhdGFGb3Jt
YXRJbnQzMjogewogICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogICAgICAgICAgICAgICAgIG1faml0Lm9y
NjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBncHIpOwogICAgICAgICAgICAgICAg
IHNwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdEpTSW50MzI7Ci0gICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgICAgICBjYXNlIERhdGFG
b3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgICAg
IGJveEludDQ4KGdwciwgZ3ByLCBzcGlsbEZvcm1hdCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdwcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAgICAgICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXREb3VibGUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBi
b3ggdGhlIGRvdWJsZSwgc2luY2Ugd2Ugd2FudCBhIEpTVmFsdWUuCkBAIC04MSw2ICsxMTUsNyBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgICAgICAg
ICAgICAgIHNwaWxsRm9ybWF0ID0gRGF0YUZvcm1hdEpTRG91YmxlOwogICAgICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCAm
IERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBzcGlsbEZvcm1hdCk7
CiAgICAgICAgIH0KQEAgLTExMyw2ICsxNDgsMTYgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsSlNWYWx1ZShFZGdlIAogCiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQorICAgICAgICAK
KyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0
ODogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbG9jayhncHIp
OworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gYWxsb2NhdGUoKTsKKyAgICAgICAgYm94SW50
NDgoZ3ByLCByZXN1bHRHUFIsIGluZm8ucmVnaXN0ZXJGb3JtYXQoKSk7CisgICAgICAgIHVubG9j
ayhncHIpOworICAgICAgICByZXR1cm4gcmVzdWx0R1BSOworICAgIH0KIAogICAgIGNhc2UgRGF0
YUZvcm1hdENlbGw6CiAgICAgICAgIC8vIE5vIHJldGFnIHJlcXVpcmVkIG9uIEpTVkFMVUU2NCEK
QEAgLTc2OCw3ICs4MTMsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJ
bnQzCiAgICAgICAgIAogICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGls
bEZvcm1hdCgpOwogICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0
ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50
NDggfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKICAgICAgICAgCiAg
ICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGls
bGVkKTsKICAgICAgICAgCkBAIC03ODksNiArODM0LDM2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3Jt
YXRKU0ludDMyOwogICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAgICAgICAgfQorICAgICAgICBp
ZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERhdGFG
b3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgLy8gR2VuZXJhbGx5LCB0aGlzIGNhbiBv
bmx5IGhhcHBlbiBpZiB3ZSd2ZSBhbHJlYWR5IHByb3ZlZCB0aGF0IHRoZQorICAgICAgICAgICAg
Ly8gdmFsdWUgaXMgYW4gaW50MzIuIFRoYXQncyBiZWNhdXNlIGlmIGEgdmFsdWUgb3JpZ2luYXRl
ZCBhcyBhIEpTVmFsdWUKKyAgICAgICAgICAgIC8vIHRoZW4gd2Ugd291bGQgc3BlY3VsYXRlIHRo
YXQgaXQncyBhbiBpbnQzMiBiZWZvcmUgcmVwcmVzZW50aW5nIGl0IGFzCisgICAgICAgICAgICAv
LyBhbiBpbnQ0OC4gT3RoZXJ3aXNlLCBpZiB3ZSBrbm93aW5nbHkgcHJvZHVjZWQgYW4gaW50NDgs
IHRoZW4gd2Ugd291bGQKKyAgICAgICAgICAgIC8vIGJlIGJveGluZyBpdCBpbnRvIGEgdmFsdWUg
dXNpbmcgSW50NDhUb1ZhbHVlLiBUaGlzIGFzc2VydGlvbiBpcyB2YWxpZAorICAgICAgICAgICAg
Ly8gb25seSBiZWNhdXNlIEludDQ4IGlzIHNvbWV0aGluZyB0aGF0IHdlIGludHJvZHVjZSBhdCBw
cmVkaWN0aW9uIHRpbWUuCisgICAgICAgICAgICAvLyBIb3dldmVyOiB3ZSBtYXkgaGF2ZSBhbiBp
bnQzMi1wcm9kdWNpbmcgbm9kZSByZXBsYWNlZCBieSBhbgorICAgICAgICAgICAgLy8gaW50NDgt
cHJvZHVjaW5nIG5vZGUgZHVlIHRvIENTRS4gU28gd2UgbXVzdCBkbyBhIGNoZWNrLgorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgICAg
ICAgICBpZiAodHlwZSAmIFNwZWNJbnQ0OCkgeworICAgICAgICAgICAgICAgIEdQUlJlZyB0ZW1w
ID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihn
cHIsIHRlbXApOworICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgY2FuJ3Qgc3VwcGx5
IHZhbHVlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBoZXJlLiA6LS8KKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVn
cygpLCAwLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIGdwciwgdGVtcCkpOworICAgICAgICAgICAgICAgIHVubG9jayh0ZW1wKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0
U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1
c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJU
b1B0cihncHIsIGdwcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQz
MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0
SW50MzI7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CiAgICAgICAgIG1faml0
LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwog
CiAgICAgICAgIC8vIEZpbGwgYXMgSlNWYWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KQEAgLTc5Nyw2
ICs4NzIsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAg
fQogCiAgICAgY2FzZSBEYXRhRm9ybWF0SlM6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0
eXBlICYgU3BlY0ludDQ4KSk7CiAgICAgICAgIC8vIENoZWNrIHRoZSB2YWx1ZSBpcyBhbiBpbnRl
Z2VyLgogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKICAgICAgICAgbV9ncHJzLmxv
Y2soZ3ByKTsKQEAgLTg0Myw2ICs5MTksMzUgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlSW50MwogICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CiAg
ICAgICAgIHJldHVybiBncHI7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXRT
dHJpY3RJbnQ0ODoKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODogeworICAgICAgICBHUFJSZWcg
Z3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdDsKKyAgICAgICAgaWYgKG1f
Z3Bycy5pc0xvY2tlZChncHIpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOwor
ICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBsb2NrKGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQzMigqbV9zdHJl
YW0sIGdwcik7CisgICAgICAgICAgICByZXN1bHQgPSBncHI7CisgICAgICAgIH0KKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgICAgIGlmIChp
bmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgbV9q
aXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgcmVzdWx0KTsKKyAgICAgICAgaWYgKHR5cGUg
JiBTcGVjSW50NDgpIHsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0gYWxsb2NhdGUoKTsKKyAg
ICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgdGVtcCk7CisgICAgICAg
ICAgICAvLyBDdXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9maWxpbmcgaW5mb3Jt
YXRpb24gaGVyZS4gOi0vCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAg
ICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1bHQsIHRlbXApKTsKKyAgICAg
ICAgICAgIHVubG9jayh0ZW1wKTsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC56ZXJvRXh0ZW5k
MzJUb1B0cihyZXN1bHQsIHJlc3VsdCk7CisgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3Jt
YXRJbnQzMjsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CiAKICAgICBjYXNlIERhdGFGb3Jt
YXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKQEAgLTg4NSw2ICs5OTAs
MTgwIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ0
OChFZGdlIGVkZ2UsIERhdGFGb3JtYXQgZGVzaXJlZEZvcm1hdCkKK3sKKyAgICBBU1NFUlQoZGVz
aXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9y
bWF0U3RyaWN0SW50NDgpOworICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JO
b2RlKGVkZ2UpOworICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CisgICAg
bV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNNYWNoaW5lSW50KTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAg
R2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIo
dmlydHVhbFJlZ2lzdGVyKTsKKworICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7
CisgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZTogeworICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0
YW50KCkgJiYgIXZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkg
fHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKKyAgICAgICAgICAg
IHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCAwKTsKKyAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKworICAgICAgICBpZiAoZWRnZS0+
aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpT
Q29uc3RhbnQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgQVNTRVJUKGpzVmFsdWUuaXNNYWNo
aW5lSW50KCkpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3Rl
ciwgU3BpbGxPcmRlckNvbnN0YW50KTsKKyAgICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBqc1Zh
bHVlLmFzTWFjaGluZUludCgpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0
YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgMTY7CisgICAg
ICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NCh2YWx1ZSksIGdwcik7Cisg
ICAgICAgICAgICBpbmZvLmZpbGxHUFIoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOwor
ICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgRGF0
YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKKyAgICAgICAgCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxG
b3JtYXQgPT0gRGF0YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0
OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICAKKyAg
ICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxs
ZWQpOworICAgICAgICAKKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRKU0lu
dDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikgeworICAgICAgICAgICAgLy8g
SWYgd2Uga25vdyB0aGlzIHdhcyBzcGlsbGVkIGFzIGFuIGludGVnZXIgd2UgY2FuIGZpbGwgd2l0
aG91dCBjaGVja2luZy4KKyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgbV9qaXQuc2lnbkV4
dGVuZDMyVG9QdHIoZ3ByLCBncHIpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0g
RGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0
SW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBn
cHIpOworICAgICAgICAgICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAg
ICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDQ4IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkg
eworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRh
Rm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVz
dGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4
KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0
OCkKKyAgICAgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIp
OworICAgICAgICAgICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAg
ICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKworICAgICAgICAvLyBGaWxs
IGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91Z2guCisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUo
Km1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0ludDMyKTsKKyAgICAgICAgbV9ncHJzLnVubG9j
ayhncHIpOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIC8vIENo
ZWNrIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLiBOb3RlIHRoYXQgd2Ugd291bGQgKmxpa2UqIHRv
IHVuYm94IGFuIEludDQ4CisgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgYnV0IHRoaXMgaXMgdG9v
IGNvc3RseS4gV2Ugb25seSAqcHJvdmUqIHRoYXQgdGhpcyBpcyBhbiBJbnQ0OAorICAgICAgICAv
LyBldmVuIHRob3VnaCB3ZSBjaGVjayBpZiBpdCdzIGFuIGludDMyLgorICAgICAgICBHUFJSZWcg
Z3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdDsKKyAgICAgICAgaWYgKG1f
Z3Bycy5pc0xvY2tlZChncHIpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOwor
ICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOwor
ICAgICAgICB9CisgICAgICAgIGlmICh0eXBlICYgflNwZWNJbnQzMikKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MocmVzdWx0KSwgZWRnZSwgbV9qaXQu
YnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCByZXN1bHQsIEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlcikpOworICAgICAgICBpZiAocmVzdWx0ID09IGdwcikgLy8gVGhlIG5vdC1h
bHJlYWR5LWxvY2tlZCwgc28gZmlsbCBpbi1wbGFjZSwgY2FzZS4KKyAgICAgICAgICAgIGluZm8u
ZmlsbEludDQ4KCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAgbV9qaXQu
c2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0LCByZXN1bHQpOworICAgICAgICBpZiAoZGVzaXJlZEZv
cm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVz
dGVkSW1tMzIoMTYpLCByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6IHsK
KyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHQ7
CisgICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgeworICAgICAgICAgICAgcmVzdWx0
ID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgICAg
IGluZm8uZmlsbEludDQ4KCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGdwcjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihyZXN1bHQsIHJlc3VsdCk7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFG
b3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiks
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgY2FzZSBEYXRh
Rm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7Cisg
ICAgICAgIGJvb2wgd2FzTG9ja2VkID0gbV9ncHJzLmlzTG9ja2VkKGdwcik7CisgICAgICAgIGxv
Y2soZ3ByKTsKKyAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdElu
dDQ4KQorICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgaWYgKHdhc0xvY2tlZCkgewor
ICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBtX2pp
dC5tb3ZlKGdwciwgcmVzdWx0KTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAg
ICAgZ3ByID0gcmVzdWx0OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGluZm8uZmlsbFN0
cmljdEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisgICAgICAgIAor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdw
cigpOworICAgICAgICBib29sIHdhc0xvY2tlZCA9IG1fZ3Bycy5pc0xvY2tlZChncHIpOworICAg
ICAgICBsb2NrKGdwcik7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJ
bnQ0OCkKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIGlmICh3YXNMb2NrZWQpIHsK
KyAgICAgICAgICAgIEdQUlJlZyByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9q
aXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAg
ICAgIGdwciA9IHJlc3VsdDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbmZvLmZpbGxJ
bnQ0OCgqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0z
MigxNiksIGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRh
Rm9ybWF0RG91YmxlOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgorICAgICAgICBpZiAo
ZWRnZS0+aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFs
dWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKGpzVmFsdWUuaXNN
YWNoaW5lSW50KCkpIHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlID0ganNWYWx1ZS5h
c01hY2hpbmVJbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRh
Rm9ybWF0SW50NDgpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgMTY7Cisg
ICAgICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICAgICAg
bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQodmFsdWUpLCBncHIpOworICAgICAgICAg
ICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgorICAg
IGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46IHsK
KyAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIDApOworICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICB9CisKKyAgICBj
YXNlIERhdGFGb3JtYXRTdG9yYWdlOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICB9Cit9CisKIEZQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlIGVkZ2UpCiB7CiAj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQpAQCAtODkyLDggKzExNzEsOCBAQCBGUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAjZW5kaWYKICAgICBBYnN0cmFjdFZh
bHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKICAgICBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gdmFsdWUubV90eXBlOwotICAgIEFTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bk51
bWJlclVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjTnVtYmVyKSk7Ci0gICAgbV9pbnRlcnBy
ZXRlci5maWx0ZXIodmFsdWUsIFNwZWNOdW1iZXIpOworICAgIEFTU0VSVChlZGdlLnVzZUtpbmQo
KSAhPSBLbm93bk51bWJlclVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikp
OworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjRnVsbE51bWJlcik7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3Rlcigp
OwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJl
Z2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CiAKQEAgLTk0NSw2ICsxMjI0LDI0IEBAIEZQUlJlZyBT
cGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAgICAgIHVubG9jayhncHIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIERhdGFGb3JtYXRJbnQ0ODogeworICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRl
KCk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGls
bE9yZGVyU3BpbGxlZCk7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbElu
dDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERhdGFGb3Jt
YXRTdHJpY3RJbnQ0ODogeworICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7Cisg
ICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVy
U3BpbGxlZCk7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdElu
dDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgR1BS
UmVnIGdwciA9IGFsbG9jYXRlKCk7CkBAIC05NzgsNyArMTI3NSw3IEBAIEZQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBp
c0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBq
c1ZhbHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogCi0gICAgICAgIGlm
ICh0eXBlICYgflNwZWNOdW1iZXIpCisgICAgICAgIGlmICh0eXBlICYgflNwZWNGdWxsTnVtYmVy
KQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhqc1Zh
bHVlR3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBq
c1ZhbHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKIAogICAgICAgICAv
LyBGaXJzdCwgaWYgd2UgZ2V0IGhlcmUgd2UgaGF2ZSBhIGRvdWJsZSBlbmNvZGVkIGFzIGEgSlNW
YWx1ZQpAQCAtMTAwOSw2ICsxMzA2LDI4IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNw
ZWN1bGF0ZURvdWIKICAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwogICAgICAgICByZXR1cm4g
ZnByOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAg
ICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZv
LmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBHUFJSZWcgdGVtcCA9
IGFsbG9jYXRlKCk7CisgICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKKyAgICAgICAgbV9q
aXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgdGVtcCk7CisgICAgICAgIG1faml0LmNvbnZl
cnRJbnQ2NFRvRG91YmxlKHRlbXAsIGZwcik7CisgICAgICAgIHVubG9jayh0ZW1wKTsKKyAgICAg
ICAgbV9ncHJzLnVubG9jayhncHIpOworICAgICAgICByZXR1cm4gZnByOworICAgIH0KKyAgICAg
ICAgCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgRlBSUmVnIGZw
ciA9IGZwckFsbG9jYXRlKCk7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAg
ICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJs
ZShncHIsIGZwcik7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKKyAgICAgICAgcmV0dXJu
IGZwcjsKKyAgICB9CiAKICAgICAvLyBVbmJveCB0aGUgZG91YmxlCiAgICAgY2FzZSBEYXRhRm9y
bWF0SlNEb3VibGU6IHsKQEAgLTExMTEsNyArMTQzMCw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBj
YXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgotICAg
IGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46IHsKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgor
ICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4
OiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQpAQCAt
MTE5NCw3ICsxNTE1LDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9v
bAogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJs
ZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDog
eworICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6Cisg
ICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKICAgICAgICAgdGVybWluYXRlU3BlY3Vs
YXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICBy
ZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CkBAIC0xNTAzLDYgKzE4MjYsNDAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyQ29tcGFyZQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKIH0KIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDQ4Q29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2Vt
Ymxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgU3BlY3VsYXRlV2hp
Y2hldmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3Vs
YXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSwgb3AxKTsK
KyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisgICAgCisg
ICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3Vs
dC5ncHIoKSk7CisgICAgCisgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNo
b3VsZCB1c2UgaXQgaGVyZS4KKyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNl
KSwgcmVzdWx0LmdwcigpKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jdXJy
ZW50Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQZWVwSG9sZUludDQ4QnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUs
IEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBCYXNp
Y0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPnRha2VuQmxvY2soKTsKKyAgICBCYXNpY0Jsb2Nr
KiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPm5vdFRha2VuQmxvY2soKTsKKworICAgIC8vIFRoZSBi
cmFuY2ggaW5zdHJ1Y3Rpb24gd2lsbCBicmFuY2ggdG8gdGhlIHRha2VuIGJsb2NrLgorICAgIC8v
IElmIHRha2VuIGlzIG5leHQsIHN3aXRjaCB0YWtlbiB3aXRoIG5vdFRha2VuICYgaW52ZXJ0IHRo
ZSBicmFuY2ggY29uZGl0aW9uIHNvIHdlIGNhbiBmYWxsIHRocm91Z2guCisgICAgaWYgKHRha2Vu
ID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGNvbmRpdGlvbiA9IEpJVENvbXBpbGVyOjppbnZl
cnQoY29uZGl0aW9uKTsKKyAgICAgICAgQmFzaWNCbG9jayogdG1wID0gdGFrZW47CisgICAgICAg
IHRha2VuID0gbm90VGFrZW47CisgICAgICAgIG5vdFRha2VuID0gdG1wOworICAgIH0KKyAgICAK
KyAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUt
PmNoaWxkMigpLCBvcDEpOworICAgIAorICAgIGJyYW5jaDY0KGNvbmRpdGlvbiwgb3AxLmdwcigp
LCBvcDIuZ3ByKCksIHRha2VuKTsKKyAgICBqdW1wKG5vdFRha2VuKTsKK30KKwogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJs
ZXI6OkRvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24pCiB7CiAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTkwNiw2ICsyMjYzLDE2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6IHsK
KyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgICAgICBtX2pp
dC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSksIHJlc3VsdC5n
cHIoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5y
ZXRhaW4ocmVzdWx0LmdwcigpLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAg
ICAgICAgICBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVy
KS5pbml0SW50NDgobm9kZSwgbm9kZS0+cmVmQ291bnQoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSksIHJlc3VsdC5n
cHIoKSk7CkBAIC0xOTgxLDYgKzIzNDgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEZsdXNoZWRJbnQ0ODogeworICAgICAgICAgICAgU3BlY3VsYXRlSW50
NDhPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG1faml0
LnN0b3JlNjQodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUtPmxvY2Fs
KCkpKTsKKyAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICAgICAgcmVjb3JkU2V0
TG9jYWwobm9kZS0+bG9jYWwoKSwgVmFsdWVTb3VyY2UoSW50NDhJbkpTU3RhY2spKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBGbHVz
aGVkQ2VsbDogewogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7
CkBAIC0yMTA0LDYgKzI0NzksMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgSW50NDhU
b1ZhbHVlOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcGVyYW5k
KTsKKyAgICAgICAgbV9qaXQubW92ZShvcGVyYW5kLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOiB7CisgICAgICAgIFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3BlcmFuZCk7CisgICAgICAgIG1faml0Lm1vdmVE
b3VibGUob3BlcmFuZC5mcHIoKSwgcmVzdWx0LmZwcigpKTsKKyAgICAgICAgZG91YmxlUmVzdWx0
KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAg
ICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOgogICAgICAgICBjb21waWxlQWRk
KG5vZGUpOwpAQCAtMjg4OSw3ICszMjgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWUuZnByKCk7
CiAKICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKCksIG5vZGUtPmNoaWxkMigpLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAg
ICAgICAgICAgIG1faml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1
YWxPclVub3JkZXJlZCwgdmFsdWVGUFIsIHZhbHVlRlBSKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBC
dXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKQEAg
LTMxMDUsNyArMzQ5Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgCiAgICAgICAgIG9wMS51c2UoKTsKICAgICAgICAgCi0gICAgICAgIGlmICgh
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjTnVtYmVyIHwg
U3BlY0Jvb2xlYW4pKSkKKyAgICAgICAgaWYgKCEobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3R5cGUgJiB+KFNwZWNGdWxsTnVtYmVyIHwgU3BlY0Jvb2xlYW4pKSkKICAgICAgICAg
ICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFu
Y2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKTsKQEAgLTMyMDIsNyArMzU5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCBvcGVyYW5kKHRoaXMsIHVzZSk7CiAgICAgICAgICAgICAgICAgICAgIEZQUlJlZyBvcEZQ
UiA9IG9wZXJhbmQuZnByKCk7CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAot
ICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVjUmVhbE51bWJl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0Z1bGxS
ZWFsTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVh
bE9yVW5vcmRlcmVkLCBvcEZQUiwgb3BGUFIpKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQu
c3RvcmVEb3VibGUob3BGUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNp
emVvZihkb3VibGUpICogb3BlcmFuZElkeCkpOwpAQCAtMzI2Nyw3ICszNjU4LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEZQUlJl
ZyBvcEZQUiA9IG9wZXJhbmQuZnByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNSZWFsTnVtYmVyLAorICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNGdWxsUmVhbE51bWJlciwK
ICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIG9wRlBS
LCBvcEZQUikpOwogICAgICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShvcEZQUiwgc2NyYXRj
aEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsOSBA
QCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgICAgICBz
cGlsbEFjdGlvbiA9IFN0b3JlMzJQYXlsb2FkOwogICAgICAgICBlbHNlIGlmIChyZWdpc3RlckZv
cm1hdCA9PSBEYXRhRm9ybWF0Q2VsbCB8fCByZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3Rv
cmFnZSkKICAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmVQdHI7Ci0gICAgICAgIGVsc2Ug
eworICAgICAgICBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwg
cmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KSB7CisgICAgICAgICAgICBz
cGlsbEFjdGlvbiA9IFN0b3JlNjQ7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NF
UlQocmVnaXN0ZXJGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogICAgICAgICAgICAgc3BpbGxBY3Rp
b24gPSBTdG9yZTY0OwogICAgICAgICB9CkBAIC0zODYsNiArMzg4LDQxIEBAIFNpbGVudFJlZ2lz
dGVyU2F2ZVBsYW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICB9IGVsc2UgaWYgKHJlZ2lzdGVyRm9y
bWF0ID09IERhdGFGb3JtYXRTdG9yYWdlKSB7CiAgICAgICAgIEFTU0VSVChpbmZvLmdwcigpID09
IHNvdXJjZSk7CiAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkUHRyOworICAgIH0gZWxzZSBpZiAo
cmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KSB7CisgICAgICAgIGlmIChub2RlLT5o
YXNDb25zdGFudCgpKQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldEludDQ4Q29uc3RhbnQ7
CisgICAgICAgIGVsc2UgaWYgKGlzSlNJbnQzMihpbmZvLnNwaWxsRm9ybWF0KCkpIHx8IGluZm8u
c3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0g
TG9hZDMyUGF5bG9hZENvbnZlcnRUb0ludDQ4OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxs
Rm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExv
YWQ2NDsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRT
dHJpY3RJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlmdExlZnQxNjsK
KyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXROb25lKQor
ICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NDsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuLiBBbnl0aGluZyB0aGF0IHF1YWxpZmllcyBhcyBh
biBpbnQzMiB3aWxsIG5ldmVyCisgICAgICAgICAgICAvLyBiZSB0dXJuZWQgaW50byBhIGNlbGwg
KGltbWVkaWF0ZSBzcGVjIGZhaWwpIG9yIGEgZG91YmxlICh0by1kb3VibGUKKyAgICAgICAgICAg
IC8vIGNvbnZlcnNpb25zIGludm9sdmUgYSBzZXBhcmF0ZSBub2RlKS4KKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHJl
Z2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICBpZiAobm9k
ZS0+aGFzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRTdHJpY3RJbnQ0
OENvbnN0YW50OworICAgICAgICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgp
KSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKQorICAgICAgICAgICAgZmls
bEFjdGlvbiA9IExvYWQzMlBheWxvYWRTaWduRXh0ZW5kOworICAgICAgICBlbHNlIGlmIChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlv
biA9IExvYWQ2NFNoaWZ0UmlnaHQxNjsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1h
dCgpID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBM
b2FkNjQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0
Tm9uZSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZp
ZXMgYXMgYW4gaW50MzIgd2lsbCBuZXZlcgorICAgICAgICAgICAgLy8gYmUgdHVybmVkIGludG8g
YSBjZWxsIChpbW1lZGlhdGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCisgICAg
ICAgICAgICAvLyBjb252ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgZmlsbEFjdGlv
biA9IExvYWQ2NDsgLy8gTWFrZSBHQ0MgaGFwcHkuCisgICAgICAgIH0KICAgICB9IGVsc2Ugewog
ICAgICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogI2lmIFVTRShK
U1ZBTFVFNjQpCkBAIC0zOTMsNyArNDMwLDYgQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVj
dWxhdGl2ZUpJVDo6cwogICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnQoKSkgewogICAgICAg
ICAgICAgaWYgKHZhbHVlT2ZKU0NvbnN0YW50KG5vZGUpLmlzQ2VsbCgpKQogICAgICAgICAgICAg
ICAgIGZpbGxBY3Rpb24gPSBTZXRUcnVzdGVkSlNDb25zdGFudDsKLSAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0SlNDb25zdGFudDsKICAgICAgICAgfSBl
bHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDMyKSB7CiAgICAgICAg
ICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdEpTSW50MzIpOwpAQCAtNTEy
LDYgKzU0OCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAg
ICAgY2FzZSBTZXRJbnQzMkNvbnN0YW50OgogICAgICAgICBtX2ppdC5tb3ZlKEltbTMyKHZhbHVl
T2ZJbnQzMkNvbnN0YW50KHBsYW4ubm9kZSgpKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVh
azsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgU2V0SW50NDhDb25zdGFudDoKKyAgICAg
ICAgbV9qaXQubW92ZShJbW02NCh2YWx1ZU9mSlNDb25zdGFudChwbGFuLm5vZGUoKSkuYXNNYWNo
aW5lSW50KCkgPDwgMTYpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
ZXRTdHJpY3RJbnQ0OENvbnN0YW50OgorICAgICAgICBtX2ppdC5tb3ZlKEltbTY0KHZhbHVlT2ZK
U0NvbnN0YW50KHBsYW4ubm9kZSgpKS5hc01hY2hpbmVJbnQoKSksIHBsYW4uZ3ByKCkpOworICAg
ICAgICBicmVhazsKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIGNhc2UgU2V0Qm9vbGVh
bkNvbnN0YW50OgogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMih2YWx1ZU9mQm9vbGVh
bkNvbnN0YW50KHBsYW4ubm9kZSgpKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKQEAg
LTUzMyw2ICs1NzcsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBT
aQogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2Rl
KCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIG1faml0Lm9yNjQo
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50NDg6CisgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lz
dGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocGxh
bi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0z
MigxNiksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExvYWQzMlBheWxv
YWRTaWduRXh0ZW5kOgorICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CisgICAgICAg
IG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHBsYW4uZ3ByKCksIHBsYW4uZ3ByKCkpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIExvYWREb3VibGVCb3hEb3VibGU6CiAgICAgICAgIG1faml0Lmxv
YWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVy
KCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgbV9qaXQuc3ViNjQoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyLCBwbGFuLmdwcigpKTsKQEAgLTU3NCw2ICs2MjcsMTQgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBTaQogICAgIGNhc2UgTG9hZDY0OgogICAgICAg
ICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1
YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTG9h
ZDY0U2hpZnRSaWdodDE2OgorICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CisgICAg
ICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHBsYW4uZ3ByKCkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIExvYWQ2NFNoaWZ0TGVmdDE2OgorICAgICAgICBtX2ppdC5sb2Fk
NjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3Rlcigp
KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiks
IHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgTG9hZERvdWJs
ZToKICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFu
Lm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmZwcigpKTsKQEAgLTE0MTYsNiArMTQ3
NywxMCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuCiAKICAgICAg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBjb21w
aWxlUGVlcEhvbGVJbnQzMkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChN
YWNoaW5lSW50VXNlKSkKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUludDQ4QnJhbmNoKG5v
ZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCiAgICAgICAg
ICAgICBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgZG91Ymxl
Q29uZGl0aW9uKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBDb21wYXJlRXEpIHsK
QEAgLTE1MDcsNiArMTU3Miw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmxpbmVT
dGFydCgKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICAgICAgICAgIHZh
bHVlU291cmNlID0gVmFsdWVTb3VyY2UoSW50MzJJbkpTU3RhY2spOwogICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgICAgICAgICAg
dmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShJbnQ0OEluSlNTdGFjayk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgogICAgICAgICAgICAgICAg
IHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoQ2VsbEluSlNTdGFjayk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xODczLDcgKzE5NDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRG91YmxlUHV0QnlWCiAgICAgRlBSUmVnIHZhbHVlUmVnID0gdmFsdWUuZnByKCk7CiAgICAg
CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdzKCksIGNoaWxkMywgU3Bl
Y1JlYWxOdW1iZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKCksIGNoaWxkMywgU3BlY0Z1bGxSZWFs
TnVtYmVyLAogICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoCiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgdmFsdWVSZWcsIHZhbHVlUmVnKSk7
CiAgICAgCkBAIC0yMTQ5LDYgKzIyMTcsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlVG9JbnQzMgogICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG9w
MS5mb3JtYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgICAgIAorI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZVN0
cmljdEludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEpOworICAgICAgICBHUFJSZWcgb3AxR1BS
ID0gb3AxLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwor
ICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihvcDFHUFIsIHJlc3VsdEdQUik7CisgICAg
ICAgIGludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdEludDMyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIAogICAgIGNh
c2UgTnVtYmVyVXNlOgogICAgIGNhc2UgTm90Q2VsbFVzZTogewpAQCAtMjE4Nyw3ICsyMjY3LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogCiAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE51bWJlclVzZSkgewogICAgICAgICAg
ICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhn
cHIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoCiAgICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6WmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0yMjQzLDcgKzIzMjMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAKICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE51bWJlclVzZSkgewogICAgICAgICAgICAgICAgICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRh
Z0dQUiwgcGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjTnVtYmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9kZS0+Y2hp
bGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJh
bmNoMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgdGFnR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CkBAIC0yMzg5LDE1ICsyNDY5LDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmwKICAgICBKSVRDb21waWxlcjo6SnVtcCBp
c0ludGVnZXIgPSBtX2ppdC5icmFuY2g2NCgKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogICAgIAot
ICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlcikpIHsKKyAg
ICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyKSkgewog
ICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5vZGVFeGl0c0ZvcndhcmQpIHsKICAgICAgICAg
ICAgIGZvcndhcmRUeXBlQ2hlY2soCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxR1BS
KSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3Mob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgb3AxR1BSLCBHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpLAogICAgICAgICAgICAgICAgIFZhbHVlUmVjb3Zl
cnk6OmluR1BSKG9wMUdQUiwgRGF0YUZvcm1hdEpTKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBiYWNrd2FyZFR5cGVDaGVjaygKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhv
cDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCiAgICAgICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBvcDFHUFIs
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MjQyMCwxNSArMjUwMCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0Rv
dWJsCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6SW50MzJUYWcpKTsKICAgICAKLSAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hp
bGQxKCksIFNwZWNOdW1iZXIpKSB7CisgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxk
MSgpLCBTcGVjRnVsbE51bWJlcikpIHsKICAgICAgICAgaWYgKG5vZGUtPmZsYWdzKCkgJiBOb2Rl
RXhpdHNGb3J3YXJkKSB7CiAgICAgICAgICAgICBmb3J3YXJkVHlwZUNoZWNrKAotICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjTnVtYmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwg
b3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAg
ICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFU
YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSwKICAgICAgICAgICAgICAg
ICBWYWx1ZVJlY292ZXJ5OjppblBhaXIob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBiYWNrd2FyZFR5cGVDaGVjaygKLSAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEo
KSwgU3BlY051bWJlciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9w
MVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCiAgICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxVGFn
R1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwogICAgICAgICB9CiAgICAg
fQpAQCAtMjU0OSw2ICsyNjI5LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uSW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpIHsKKyAgICAgICAg
bV9qaXQuemVyb0V4dGVuZDMyVG9QdHIocmVzdWx0UmVnLCByZXN1bHRSZWcpOworICAgICAgICBz
dHJpY3RJbnQ0OFJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmCisgICAgCiAgICAgRlBSVGVtcG9yYXJ5IGZyZXN1bHQodGhpcyk7CiAgICAgbV9q
aXQuY29udmVydEludDMyVG9Eb3VibGUocmVzdWx0UmVnLCBmcmVzdWx0LmZwcigpKTsKICAgICBK
SVRDb21waWxlcjo6SnVtcCBwb3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpHcmVhdGVyVGhhbk9yRXF1YWwsIHJlc3VsdFJlZywgVHJ1c3RlZEltbTMyKDApKTsKQEAgLTI2
MDIsNiArMjY5MCwzMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJ
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgICAgICBTcGVj
dWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQgdmFsdWVPcCh0aGlzLCB2YWx1ZVVzZSk7CisgICAgICAg
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUodmFsdWVPcC5n
cHIoKSwgc2NyYXRjaFJlZyk7CisgICAgICAgICAgICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnRTaXplKHR5cGUpID09IDEpOworICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGluQm91bmRzID0gbV9qaXQuYnJhbmNoNjQoCisg
ICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIHNjcmF0Y2hS
ZWcsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoMHhmZikpOworICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIHRvb0JpZyA9IG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW4sIHNjcmF0Y2hSZWcsIEpJVENvbXBp
bGVyOjpUcnVzdGVkSW1tNjQoMHhmZikpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTMyKDApLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBjbGFtcGVkID0gbV9qaXQuanVtcCgpOworICAgICAgICAgICAgICAgIHRvb0JpZy5s
aW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1
c3RlZEltbTMyKDI1NSksIHNjcmF0Y2hSZWcpOworICAgICAgICAgICAgICAgIGNsYW1wZWQubGlu
aygmbV9qaXQpOworICAgICAgICAgICAgICAgIGluQm91bmRzLmxpbmsoJm1faml0KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHZhbHVlLmFkb3B0KHNjcmF0Y2gpOworICAgICAgICAgICAg
dmFsdWVHUFIgPSBzY3JhdGNoUmVnOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTnVtYmVy
VXNlOiB7CiAgICAgICAgICAgICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGVsZW1lbnRTaXplKHR5cGUpID09IDEpOwpAQCAtMjg3MCw3ICsyOTgzLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFkZChOb2RlKiBubwogICAgICAgICAgICAgaW50
MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIAorICAgICAgICAKICAgICAgICAgaWYgKGlzTnVtYmVyQ29u
c3RhbnQobm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgU3BlY3VsYXRlSW50
MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBpbnQzMl90
IGltbTIgPSB2YWx1ZU9mSW50MzJDb25zdGFudChub2RlLT5jaGlsZDIoKS5ub2RlKCkpOwpAQCAt
MjkxNSw2ICszMDI4LDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSog
bm8KICAgICAgICAgaW50MzJSZXN1bHQoZ3ByUmVzdWx0LCBub2RlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKyAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIE1hY2hpbmVJ
bnRVc2U6IHsKKyAgICAgICAgLy8gV2lsbCB3ZSBuZWVkIGFuIG92ZXJmbG93IGNoZWNrPyBJZiB3
ZSBjYW4gcHJvdmUgdGhhdCBuZWl0aGVyIGlucHV0IGNhbiBiZQorICAgICAgICAvLyBJbnQ0OCB0
aGVuIHRoZSBvdmVyZmxvdyBjaGVjayB3aWxsIG5vdCBiZSBuZWNlc3NhcnkuCisgICAgICAgIGlm
ICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgp
CisgICAgICAgICAgICAmJiAhbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5jb3VsZEJl
VHlwZShTcGVjSW50NDgpKSB7CisgICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9w
ZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZVdo
aWNoZXZlckludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCksIG9wMSk7CisgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEpOworICAgICAgICAg
ICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBtX2pp
dC5hZGQ2NChvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBpbnQ0OFJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUsIG9wMS5mb3JtYXQoKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDEo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3Ay
KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCBSZXVzZSwgb3AxLCBvcDIpOworICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIEludDQ4T3Zl
cmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBtX2ppdC5icmFuY2hBZGQ2NChN
YWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKSk7CisgICAg
ICAgIGludDQ4UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKICAgICBjYXNlIE51bWJlclVzZTog
ewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CkBAIC0zMDYwLDYgKzMyMDAsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
aXRoU3ViKE5vZAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAvLyBXaWxsIHdlIG5l
ZWQgYW4gb3ZlcmZsb3cgY2hlY2s/IElmIHdlIGNhbiBwcm92ZSB0aGF0IG5laXRoZXIgaW5wdXQg
Y2FuIGJlCisgICAgICAgIC8vIEludDQ4IHRoZW4gdGhlIG92ZXJmbG93IGNoZWNrIHdpbGwgbm90
IGJlIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkKKyAgICAgICAgICAgICYmICFtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAgICAgICAg
IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0aGlzLCBu
b2RlLT5jaGlsZDIoKSwgb3AxKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIG9wMSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LnN1YjY0KG9wMi5ncHIoKSwgcmVzdWx0Lmdwcigp
KTsKKyAgICAgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgb3AxLmZvcm1h
dCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
U3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisgICAgICAgIG1f
aml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAorICAgICAgICAgICAgSW50NDhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAg
ICAgICAgIG1faml0LmJyYW5jaFN1YjY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AyLmdw
cigpLCByZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQor
CiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBv
cDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CkBAIC0zMDg4LDYgKzMyNTUsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUoCiAKICAgICAgICAgbV9qaXQubW92ZShv
cDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAKKyAgICAgICAgLy8gTm90ZTogdGhlcmUgaXMgbm8g
bm90aW9uIG9mIGJlaW5nIG5vdCB1c2VkIGFzIGEgbnVtYmVyLCBidXQgc29tZW9uZQorICAgICAg
ICAvLyBjYXJpbmcgYWJvdXQgbmVnYXRpdmUgemVyby4KKyAgICAgICAgCiAgICAgICAgIGlmIChi
eXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAg
ICAgICAgIG1faml0Lm5lZzMyKHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGVsc2UgewpAQCAtMzA5
OSw2ICszMjY5LDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSgK
ICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7
CisgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlw
ZShTcGVjSW50NDgpKSB7CisgICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAg
ICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgICAgIG1f
aml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQubmVnNjQocmVz
dWx0R1BSKTsKKyAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8o
bm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAorICAgICAgICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCksIDAs
CisgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6
WmVybywgcmVzdWx0R1BSKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQ0OFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUsIG9wMS5mb3JtYXQoKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDEodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
ICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BS
KTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIEludDQ4T3ZlcmZsb3cs
IEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBtX2ppdC5icmFuY2hOZWc2NChNYWNyb0Fz
c2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUikpOworICAgICAgICBpZiAoIWJ5dGVjb2RlQ2Fu
SWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVybywgSlNWYWx1
ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIHJlc3VsdEdQUikpOworICAgICAgICB9CisgICAgICAgIGludDQ4UmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgU3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMzE2NCw2
ICszMzcwLDYyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bChOb2QKICAg
ICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKyAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkgICAKKyAgICBjYXNlIE1hY2hpbmVJbnRV
c2U6IHsKKyAgICAgICAgLy8gVGhpcyBpcyBzdXBlciBjbGV2ZXIuIFdlIHdhbnQgdG8gZG8gYW4g
aW50NDggbXVsdGlwbGljYXRpb24gYW5kIGNoZWNrIHRoZQorICAgICAgICAvLyBpbnQ0OCBvdmVy
ZmxvdyBiaXQuIFRoZXJlIGlzIG5vIGRpcmVjdCBoYXJkd2FyZSBzdXBwb3J0IGZvciB0aGlzLCBi
dXQgd2UgZG8KKyAgICAgICAgLy8gaGF2ZSB0aGUgYWJpbGl0eSB0byBkbyBhbiBpbnQ2NCBtdWx0
aXBsaWNhdGlvbiBhbmQgY2hlY2sgdGhlIGludDY0IG92ZXJmbG93CisgICAgICAgIC8vIGJpdC4g
V2UgbGV2ZXJhZ2UgdGhhdC4gQ29uc2lkZXIgdGhhdCBhLCBiIGFyZSBpbnQ0OCBudW1iZXJzIGlu
c2lkZSBpbnQ2NAorICAgICAgICAvLyByZWdpc3RlcnMsIHdpdGggdGhlIGhpZ2ggMTYgYml0cyBi
ZWluZyBzaWduLWV4dGVuZGVkLiBXZSBjYW4gZG86CisgICAgICAgIC8vCisgICAgICAgIC8vICAg
ICAoYSAqIChiIDw8IDE2KSkKKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhpcyB3aWxsIGdpdmUg
dXMgYSBsZWZ0LXNoaWZ0ZWQgaW50NDggKHZhbHVlIGlzIGluIGhpZ2ggNDggYml0cywgbG93IDE2
CisgICAgICAgIC8vIGJpdHMgYXJlIHplcm8pIHBsdXMgdGhlIGludDQ4IG92ZXJmbG93IGJpdC4g
SS5lLiB3aGV0aGVyIHRoaXMgNjQtYml0CisgICAgICAgIC8vIG11bHRpcGxpY2F0aW9uIG92ZXJm
bG93cyBpcyBpZGVudGljYWwgdG8gd2hldGhlciB0aGUgJ2EgKiBiJyA0OC1iaXQKKyAgICAgICAg
Ly8gbXVsdGlwbGljYXRpb24gb3ZlcmZsb3dzLgorICAgICAgICAvLworICAgICAgICAvLyBJbiBv
dXIgbm9tZW5jbGF0dXJlLCB0aGlzIGlzOgorICAgICAgICAvLworICAgICAgICAvLyAgICAgc3Ry
aWN0SW50NDgoYSkgKiBpbnQ0OChiKSA9PiBpbnQ0OAorICAgICAgICAvLworICAgICAgICAvLyBU
aGF0IGlzICJzdHJpY3RJbnQ0OCIgbWVhbnMgdW5zaGlmdGVkIGFuZCAiaW50NDgiIG1lYW5zIGxl
ZnQtc2hpZnRlZCBieSAxNgorICAgICAgICAvLyBiaXRzLgorICAgICAgICAvLworICAgICAgICAv
LyBXZSBkb24ndCBjYXJlIHdoaWNoIG9mIG9wMSBvciBvcDIgc2VydmVzIGFzIHRoZSBsZWZ0LXNo
aWZ0ZWQgb3BlcmFuZCwgc28KKyAgICAgICAgLy8gd2UganVzdCBkbyB3aGF0ZXZlciBpcyBtb3Jl
IGNvbnZlbmllbnQgZm9yIG9wMSBhbmQgaGF2ZSBvcDIgZG8gdGhlCisgICAgICAgIC8vIG9wcG9z
aXRlLiBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBkbyBhdCBtb3N0IG9uZSBzaGlmdC4KKworICAgICAg
ICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2Rl
LT5jaGlsZDIoKSwgT3Bwb3NpdGVTaGlmdCwgb3AxKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7
CisgICAgICAgIEdQUlJlZyBvcDJHUFIgPSBvcDIuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQ
UiwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIElu
dDQ4T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBtX2ppdC5icmFuY2hN
dWw2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMkdQUiwgcmVzdWx0R1BSKSk7CisgICAg
ICAgIAorICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFy
aXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByZXN1
bHROb25aZXJvID0gbV9qaXQuYnJhbmNoVGVzdDY0KAorICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCByZXN1bHRHUFIpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKKyAgICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCksIDAsCisgICAg
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBvcDFH
UFIsIFRydXN0ZWRJbW02NCgwKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAg
ICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBvcDJHUFIsIFRy
dXN0ZWRJbW02NCgwKSkpOworICAgICAgICAgICAgcmVzdWx0Tm9uWmVyby5saW5rKCZtX2ppdCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMzU4Nyw3ICszODQ5LDE0IEBAIGJv
b2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwKICAgICAgICAgY29tcGlsZUlu
dDMyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotCisgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAgICAgIGNvbXBpbGVJbnQ0OENvbXBhcmUobm9kZSwg
Y29uZGl0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KQorICAgIAogICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNl
KSkgewogICAgICAgICBjb21waWxlRG91YmxlQ29tcGFyZShub2RlLCBkb3VibGVDb25kaXRpb24p
OwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzM3LDYgKzQwMDYsMjMgQEAgYm9vbCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZAogICAgICAgICBjb21waWxlSW50MzJDb21w
YXJlKG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CisgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpICAgCisgICAgY2FzZSBNYWNoaW5lSW50
VXNlOiB7CisgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBI
b2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgp
IHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRl
eEluQmxvY2spOworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50NDhCcmFuY2gobm9kZSwg
YnJhbmNoTm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKTsKKyAgICAgICAgICAgIHVzZShub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICB1c2Uobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxvY2s7CisgICAgICAgICAgICBtX2N1
cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIGNvbXBpbGVJbnQ0OENvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxV
RTY0KQogICAgICAgICAKICAgICBjYXNlIE51bWJlclVzZTogewogICAgICAgICB1bnNpZ25lZCBi
cmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwpAQCAtNDQ5Miw5ICs0
Nzc4LDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUludDMyKEVkZ2UKICAgICAo
U3BlY3VsYXRlSW50MzJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKIH0KIAordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWFjaGluZUludChFZGdlIGVkZ2UpCit7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNNYWNoaW5lSW50KSkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIChTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJh
bmQodGhpcywgZWRnZSkpLmdwcigpOworI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICBVTlVT
RURfUEFSQU0oZWRnZSk7CisgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisjZW5kaWYg
Ly8gVVNFKEpTVkFMVUU2NCkKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTnVt
YmVyKEVkZ2UgZWRnZSkKIHsKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNOdW1i
ZXIpKQorICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxOdW1iZXIpKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgKFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQodGhpcywgZWRn
ZSkpLmZwcigpOwpAQCAtNDUwMiwxMyArNDgwMSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVOdW1iZXIoRWRnCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlYWxO
dW1iZXIoRWRnZSBlZGdlKQogewotICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY1Jl
YWxOdW1iZXIpKQorICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Z1bGxSZWFsTnVt
YmVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQg
b3BlcmFuZCh0aGlzLCBlZGdlKTsKICAgICBGUFJSZWcgZnByID0gb3BlcmFuZC5mcHIoKTsKICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY1JlYWxO
dW1iZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKCksIGVkZ2UsIFNwZWNGdWxsUmVhbE51bWJlciwK
ICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZwciwgZnByKSk7CiB9CkBAIC00NzcwLDcgKzUw
NjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAgICAgICAg
IEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludDMyKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgS25vd25OdW1iZXJVc2U6Ci0gICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hl
Y2soZWRnZSwgU3BlY051bWJlcikpOworICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVk
Z2UsIFNwZWNGdWxsTnVtYmVyKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgS25vd25DZWxs
VXNlOgogICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNDZWxsKSk7CkBA
IC00NzgxLDYgKzUwODAsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSos
IEVkCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgc3BlY3VsYXRlSW50MzIoZWRnZSk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgc3BlY3VsYXRl
TWFjaGluZUludChlZGdlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNl
OgogICAgICAgICBzcGVjdWxhdGVSZWFsTnVtYmVyKGVkZ2UpOwogICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJl
dmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDkgKzE1OSw3IEBAIHB1YmxpYzoKICAgICAv
LyBhbmQgaXRzIG1hY2hpbmUgcmVnaXN0ZXJzIG1heSBiZSByZXVzZWQuCiAgICAgYm9vbCBjYW5S
ZXVzZShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5m
byYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0
ZXIpOwotICAgICAgICByZXR1cm4gaW5mby5jYW5SZXVzZSgpOworICAgICAgICByZXR1cm4gZ2Vu
ZXJhdGlvbkluZm8obm9kZSkuY2FuUmV1c2UoKTsKICAgICB9CiAgICAgYm9vbCBjYW5SZXVzZShF
ZGdlIG5vZGVVc2UpCiAgICAgewpAQCAtMjM3LDE1ICsyMzUsMTEgQEAgcHVibGljOgogICAgIC8v
IGF2b2lkIHNwaWxsaW5nIHZhbHVlcyB3ZSB3aWxsIG5lZWQgaW1tZWRpYXRlbHkpLgogICAgIGJv
b2wgaXNGaWxsZWQoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJh
dGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVh
bFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRh
Rm9ybWF0Tm9uZTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKG5vZGUpLnJlZ2lzdGVy
Rm9ybWF0KCkgIT0gRGF0YUZvcm1hdE5vbmU7CiAgICAgfQogICAgIGJvb2wgaXNGaWxsZWREb3Vi
bGUoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVn
aXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8m
IGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVy
KTsKLSAgICAgICAgcmV0dXJuIGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91
YmxlOworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8obm9kZSkucmVnaXN0ZXJGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0RG91YmxlOwogICAgIH0KIAogICAgIC8vIENhbGxlZCBvbiBhbiBvcGVy
YW5kIG9uY2UgaXQgaGFzIGJlZW4gY29uc3VtZWQgYnkgYSBwYXJlbnQgbm9kZS4KQEAgLTI1Myw4
ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIW5vZGUtPmhhc1Jlc3VsdCgp
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
Z2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZv
JiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rl
cik7CisgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm8obm9kZSk7
CiAKICAgICAgICAgLy8gdXNlKCkgcmV0dXJucyB0cnVlIHdoZW4gdGhlIHZhbHVlIGJlY29tZXMg
ZGVhZCwgYW5kIGFueQogICAgICAgICAvLyBhc3NvY2lhdGVkIHJlc291cmNlcyBtYXkgYmUgZnJl
ZWQuCkBAIC0zMzMsNiArMzI2LDcgQEAgcHVibGljOgogICAgIC8vIG1hY2hpbmUgcmVnaXN0ZXJz
LCBpbXBsaWNpdGx5IGdlbmVyYXRpbmcgc3BlY3VsYXRpb24gY2hlY2tzIGFzIG5lZWRlZC4KICAg
ICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludDMyKEVkZ2UsIERhdGFGb3JtYXQmIHJldHVybkZvcm1h
dCk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVJbnQzMlN0cmljdChFZGdlKTsKKyAgICBHUFJS
ZWcgZmlsbFNwZWN1bGF0ZUludDQ4KEVkZ2UsIERhdGFGb3JtYXQgZGVzaXJlZEZvcm1hdCk7CiAg
ICAgRlBSUmVnIGZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVj
dWxhdGVDZWxsKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQm9vbGVhbihFZGdlKTsK
QEAgLTQ2OCw2ICs0NjIsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYm94RG91
YmxlKGZwciwgYWxsb2NhdGUoKSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgYm94SW50NDgoR1BS
UmVnIHNvdXJjZUdQUiwgR1BSUmVnIHRhcmdldEdQUiwgRGF0YUZvcm1hdCBmb3JtYXQpOwogI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lkIGJveERvdWJsZShGUFJSZWcgZnByLCBHUFJS
ZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQUikKICAgICB7CkBAIC01NTksMTEgKzU1NSwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYm9vbCBpc0tub3duSW50ZWdl
cihOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiB+
U3BlY0ludDMyKTsgfQotICAgIGJvb2wgaXNLbm93bkNlbGwoTm9kZSogbm9kZSkgeyByZXR1cm4g
IShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgflNwZWNDZWxsKTsgfQorICAgIGJvb2wg
aXNLbm93bkludGVnZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gbV9zdGF0ZS5mb3JOb2RlKG5vZGUp
LmlzVHlwZShTcGVjSW50MzIpOyB9CisgICAgYm9vbCBpc0tub3duQ2VsbChOb2RlKiBub2RlKSB7
IHJldHVybiBtX3N0YXRlLmZvck5vZGUobm9kZSkuaXNUeXBlKFNwZWNDZWxsKTsgfQogICAgIAog
ICAgIGJvb2wgaXNLbm93bk5vdEludGVnZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRl
LmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0ludDMyKTsgfQotICAgIGJvb2wgaXNLbm93bk5v
dE51bWJlcihOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5
cGUgJiBTcGVjTnVtYmVyKTsgfQorICAgIGJvb2wgaXNLbm93bk5vdE51bWJlcihOb2RlKiBub2Rl
KSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBTcGVjRnVsbE51bWJl
cik7IH0KICAgICBib29sIGlzS25vd25Ob3RDZWxsKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9z
dGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNDZWxsKTsgfQogICAgIAogICAgIC8vIENo
ZWNrcy9hY2Nlc3NvcnMgZm9yIGNvbnN0YW50IHZhbHVlcy4KQEAgLTgxNiw2ICs4MTIsMjUgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgaW50MzJSZXN1bHQocmVnLCBub2RlLCBEYXRhRm9ybWF0
SW50MzIsIG1vZGUpOwogICAgIH0KKyAgICB2b2lkIGludDQ4UmVzdWx0KEdQUlJlZyByZWcsIE5v
ZGUqIG5vZGUsIERhdGFGb3JtYXQgZm9ybWF0LCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9IENhbGxV
c2VDaGlsZHJlbikKKyAgICB7CisgICAgICAgIGlmIChtb2RlID09IENhbGxVc2VDaGlsZHJlbikK
KyAgICAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOworCisgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgR2Vu
ZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmly
dHVhbFJlZ2lzdGVyKTsKKworICAgICAgICBtX2dwcnMucmV0YWluKHJlZywgdmlydHVhbFJlZ2lz
dGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICBpbmZvLmluaXRJbnQ0OChub2RlLCBub2RlLT5y
ZWZDb3VudCgpLCByZWcsIGZvcm1hdCk7CisgICAgfQorICAgIHZvaWQgaW50NDhSZXN1bHQoR1BS
UmVnIHJlZywgTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRy
ZW4pCisgICAgeworICAgICAgICBpbnQ0OFJlc3VsdChyZWcsIG5vZGUsIERhdGFGb3JtYXRJbnQ0
OCwgbW9kZSk7CisgICAgfQorICAgIHZvaWQgc3RyaWN0SW50NDhSZXN1bHQoR1BSUmVnIHJlZywg
Tm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRyZW4pCisgICAg
eworICAgICAgICBpbnQ0OFJlc3VsdChyZWcsIG5vZGUsIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCwg
bW9kZSk7CisgICAgfQogICAgIHZvaWQgbm9SZXN1bHQoTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5N
b2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRyZW4pCiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpCkBAIC05MDAsNyArOTE1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgaW5pdENvbnN0YW50SW5mbyhOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzSW50MzJDb25zdGFudChub2RlKSB8fCBpc051bWJlckNvbnN0YW50KG5vZGUpIHx8IGlz
SlNDb25zdGFudChub2RlKSk7Ci0gICAgICAgIGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdp
c3Rlcihub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKSkuaW5pdENvbnN0YW50KG5vZGUsIG5vZGUtPnJl
ZkNvdW50KCkpOworICAgICAgICBnZW5lcmF0aW9uSW5mbyhub2RlKS5pbml0Q29uc3RhbnQobm9k
ZSwgbm9kZS0+cmVmQ291bnQoKSk7CiAgICAgfQogICAgIAogICAgIC8vIFRoZXNlIG1ldGhvZHMg
YWRkIGNhbGxzIHRvIEMrKyBoZWxwZXIgZnVuY3Rpb25zLgpAQCAtMTg4OSwxNSArMTkwNCwyMiBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChpc0ludDMyQ29uc3RhbnQobm9kZSkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
ID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZv
ID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7Ci0g
ICAgICAgIAotICAgICAgICByZXR1cm4gaW5mby5pc0pTSW50MzIoKTsKKyAgICAgICAgcmV0dXJu
IGdlbmVyYXRpb25JbmZvKG5vZGUpLmlzSlNJbnQzMigpOworICAgIH0KKyAgICAKKyAgICBib29s
IGJldHRlclVzZVN0cmljdEludDQ4KE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4g
IWdlbmVyYXRpb25JbmZvKG5vZGUpLmlzSW50NDgoKTsKKyAgICB9CisgICAgYm9vbCBiZXR0ZXJV
c2VTdHJpY3RJbnQ0OChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYmV0dGVyVXNl
U3RyaWN0SW50NDgoZWRnZS5ub2RlKCkpOwogICAgIH0KICAgICAKICAgICBib29sIGNvbXBhcmUo
Tm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxl
cjo6RG91YmxlQ29uZGl0aW9uLCBTX0RGR09wZXJhdGlvbl9FSkopOwogICAgIGJvb2wgY29tcGls
ZVBlZXBIb2xlQnJhbmNoKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlv
biwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiwgU19ERkdPcGVyYXRpb25fRUpKKTsK
ICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUludDMyQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hO
b2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisgICAgdm9pZCBjb21waWxl
UGVlcEhvbGVJbnQ0OEJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6
OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlQm9vbGVhbkJy
YW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKE5vZGUqLCBOb2Rl
KiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICB2b2lkIGNv
bXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlKTsKQEAg
LTE5NDUsNiArMTk2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5
KE5vZGUqKTsKICAgICAKICAgICB2b2lkIGNvbXBpbGVJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3Jv
QXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKKyAgICB2b2lkIGNvbXBpbGVJbnQ0OENv
bXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2
b2lkIGNvbXBpbGVCb29sZWFuQ29tcGFyZShOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9u
YWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZURvdWJsZUNvbXBhcmUoTm9kZSosIE1hY3Jv
QXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24pOwogICAgIApAQCAtMjExOCw2ICsyMTQxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgZm9yd2FyZFR5cGVDaGVjayhKU1ZhbHVlU291cmNlLCBFZGdlLCBT
cGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1
bXBUb0ZhaWwsIGNvbnN0IFZhbHVlUmVjb3ZlcnkmKTsKIAogICAgIHZvaWQgc3BlY3VsYXRlSW50
MzIoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVNYWNoaW5lSW50KEVkZ2UpOwogICAgIHZvaWQg
c3BlY3VsYXRlTnVtYmVyKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CkBAIC0yMTk1LDYgKzIyMTksMTYg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdGlvbkluZm9bb3BlcmFu
ZFRvTG9jYWwodmlydHVhbFJlZ2lzdGVyKV07CiAgICAgfQorICAgIAorICAgIEdlbmVyYXRpb25J
bmZvJiBnZW5lcmF0aW9uSW5mbyhOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcihub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKSk7
CisgICAgfQorICAgIAorICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mbyhFZGdlIGVk
Z2UpCisgICAgeworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8oZWRnZS5ub2RlKCkpOwor
ICAgIH0KIAogICAgIC8vIFRoZSBKSVQsIHdoaWxlIGFsc28gcHJvdmlkZXMgTWFjcm9Bc3NlbWJs
ZXIgZnVuY3Rpb25hbGl0eS4KICAgICBKSVRDb21waWxlciYgbV9qaXQ7CkBAIC0yNjc2LDYgKzI3
MTAsMTc5IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAorLy8g
R2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDQ4IChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDE2
LCBsb3cgYml0cyB6ZXJvKS4KK2NsYXNzIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgU3BlY3VsYXRlSW50NDhPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQs
IEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFu
ZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRn
ZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8
fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNG
aWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICB+U3Bl
Y3VsYXRlSW50NDhPcGVyYW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dwck9ySW52YWxp
ZCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayhtX2dwck9ySW52YWxp
ZCk7CisgICAgfQorICAgIAorICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9lZGdlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcg
Z3ByKCkKKyAgICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVn
KQorICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZUludDQ4
KGVkZ2UoKSwgRGF0YUZvcm1hdEludDQ4KTsKKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlk
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHVzZSgpCisgICAgeworICAgICAgICBtX2ppdC0+dXNl
KG5vZGUoKSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBTcGVjdWxhdGl2ZUpJVCogbV9q
aXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOworfTsKKwor
Ly8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDQ4IChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBs
b3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFyZSBzaWduLWV4dGVuZGVkKS4KK2NsYXNzIFNwZWN1
bGF0ZVN0cmljdEludDQ4T3BlcmFuZCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU3BlY3VsYXRl
U3RyaWN0SW50NDhPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFu
ZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAg
ICAgICA6IG1faml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dw
ck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCht
b2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9
PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAg
ICAgICAgICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICB+U3BlY3VsYXRlU3RyaWN0SW50NDhP
cGVyYW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dwck9ySW52YWxpZCAhPSBJbnZhbGlk
R1BSUmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayhtX2dwck9ySW52YWxpZCk7CisgICAgfQor
ICAgIAorICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lZGdl
OworICAgIH0KKyAgICAKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcgZ3ByKCkKKyAgICB7
CisgICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZUludDQ4KGVkZ2UoKSwgRGF0
YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHVzZSgpCisgICAgeworICAgICAgICBtX2ppdC0+dXNlKG5vZGUo
KSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBTcGVjdWxhdGl2ZUpJVCogbV9qaXQ7Cisg
ICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOworfTsKKworZW51bSBP
cHBvc2l0ZVNoaWZ0VGFnIHsgT3Bwb3NpdGVTaGlmdCB9OworCitjbGFzcyBTcGVjdWxhdGVXaGlj
aGV2ZXJJbnQ0OE9wZXJhbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNo
ZXZlckludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRT
cGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAg
ICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJP
ckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICAgICAgLCBtX3N0cmljdChqaXQtPmJldHRlclVz
ZVN0cmljdEludDQ4KGVkZ2UpKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBt
b2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNo
aW5lSW50VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAg
ICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJ
bnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBjb25zdCBTcGVjdWxh
dGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQmIG90aGVyLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1v
ZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQor
ICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRH
UFJSZWcpCisgICAgICAgICwgbV9zdHJpY3Qob3RoZXIubV9zdHJpY3QpCisgICAgeworICAgICAg
ICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8
IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0Zp
bGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIGV4cGxp
Y2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBF
ZGdlIGVkZ2UsIE9wcG9zaXRlU2hpZnRUYWcsIGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4
T3BlcmFuZCYgb3RoZXIsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09w
ZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdl
KGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICAgICAg
LCBtX3N0cmljdCghb3RoZXIubV9zdHJpY3QpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VE
KG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgp
ID09IE1hY2hpbmVJbnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQor
ICAgICAgICAgICAgZ3ByKCk7CisgICAgfQorICAgIAorICAgIH5TcGVjdWxhdGVXaGljaGV2ZXJJ
bnQ0OE9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9IElu
dmFsaWRHUFJSZWcpOworICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsKKyAg
ICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2VkZ2U7CisgICAgfQorICAgIAorICAgIE5vZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7CisgICAgfQorICAgIAorICAgIEdQUlJlZyBncHIoKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpIHsKKyAg
ICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVJbnQ0OCgKKyAg
ICAgICAgICAgICAgICBlZGdlKCksIG1fc3RyaWN0ID8gRGF0YUZvcm1hdFN0cmljdEludDQ4IDog
RGF0YUZvcm1hdEludDQ4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9ncHJPckludmFs
aWQ7CisgICAgfQorICAgIAorICAgIHZvaWQgdXNlKCkKKyAgICB7CisgICAgICAgIG1faml0LT51
c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCisgICAgRGF0YUZvcm1hdCBmb3JtYXQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RyaWN0ID8gRGF0YUZvcm1hdFN0cmljdEludDQ4IDog
RGF0YUZvcm1hdEludDQ4OworICAgIH0KKworcHJpdmF0ZToKKyAgICBTcGVjdWxhdGl2ZUpJVCog
bV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOworICAg
IGJvb2wgbV9zdHJpY3Q7Cit9OworCiBjbGFzcyBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBTcGVjdWxhdGVEb3VibGVPcGVyYW5kKFNwZWN1bGF0aXZlSklU
KiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGlj
T3BlcmFuZFNwZWN1bGF0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw5IEBAIHZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2UKICAgICBjYXNlIEtub3duSW50MzJVc2U6
CiAgICAgICAgIG91dC5wcmludCgiS25vd25JbnQzMiIpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiTWFjaGluZUludCIpOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgICAgIG91dC5wcmludCgi
UmVhbE51bWJlciIpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBlbnVt
IFVzZUtpbmQgewogICAgIFVudHlwZWRVc2UsCiAgICAgSW50MzJVc2UsCiAgICAgS25vd25JbnQz
MlVzZSwKKyAgICBNYWNoaW5lSW50VXNlLAogICAgIFJlYWxOdW1iZXJVc2UsCiAgICAgTnVtYmVy
VXNlLAogICAgIEtub3duTnVtYmVyVXNlLApAQCAtNjYsMTEgKzY3LDEzIEBAIEFMV0FZU19JTkxJ
TkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckYKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNh
c2UgS25vd25JbnQzMlVzZToKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKKyAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6CisgICAgICAgIHJldHVybiBTcGVjTWFjaGluZUludDsKICAgICBjYXNlIFJl
YWxOdW1iZXJVc2U6Ci0gICAgICAgIHJldHVybiBTcGVjUmVhbE51bWJlcjsKKyAgICAgICAgcmV0
dXJuIFNwZWNGdWxsUmVhbE51bWJlcjsKICAgICBjYXNlIE51bWJlclVzZToKICAgICBjYXNlIEtu
b3duTnVtYmVyVXNlOgotICAgICAgICByZXR1cm4gU3BlY051bWJlcjsKKyAgICAgICAgcmV0dXJu
IFNwZWNGdWxsTnVtYmVyOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgcmV0dXJuIFNw
ZWNCb29sZWFuOwogICAgIGNhc2UgQ2VsbFVzZToKQEAgLTEyNSw2ICsxMjgsNyBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBrCiAgICAgc3dpdGNoIChraW5kKSB7CiAg
ICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNlIEtub3duSW50MzJVc2U6CisgICAgY2FzZSBNYWNo
aW5lSW50VXNlOgogICAgIGNhc2UgUmVhbE51bWJlclVzZToKICAgICBjYXNlIE51bWJlclVzZToK
ICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWx1ZVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2
ICs0NSw5IEBAIHZvaWQgVmFsdWVTb3VyY2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkKICAgICBj
YXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICBvdXQucHJpbnQoIkludDMyIik7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgIG91dC5wcmludCgiSW50
NDgiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgogICAgICAgICBv
dXQucHJpbnQoIkNlbGwiKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDYgKzQzLDcgQEAgZW51bSBWYWx1ZVNvdXJjZUtpbmQgewogICAgIFNvdXJjZU5vdFNldCwKICAg
ICBWYWx1ZUluSlNTdGFjaywKICAgICBJbnQzMkluSlNTdGFjaywKKyAgICBJbnQ0OEluSlNTdGFj
aywKICAgICBDZWxsSW5KU1N0YWNrLAogICAgIEJvb2xlYW5JbkpTU3RhY2ssCiAgICAgRG91Ymxl
SW5KU1N0YWNrLApAQCAtNTYsNiArNTcsOCBAQCBzdGF0aWMgaW5saW5lIFZhbHVlU291cmNlS2lu
ZCBkYXRhRm9ybWF0CiAgICAgc3dpdGNoIChkYXRhRm9ybWF0KSB7CiAgICAgY2FzZSBEYXRhRm9y
bWF0SW50MzI6CiAgICAgICAgIHJldHVybiBJbnQzMkluSlNTdGFjazsKKyAgICBjYXNlIERhdGFG
b3JtYXRJbnQ0ODoKKyAgICAgICAgcmV0dXJuIEludDQ4SW5KU1N0YWNrOwogICAgIGNhc2UgRGF0
YUZvcm1hdERvdWJsZToKICAgICAgICAgcmV0dXJuIERvdWJsZUluSlNTdGFjazsKICAgICBjYXNl
IERhdGFGb3JtYXRCb29sZWFuOgpAQCAtNzksNiArODIsOCBAQCBzdGF0aWMgaW5saW5lIERhdGFG
b3JtYXQgdmFsdWVTb3VyY2VLaW5kCiAgICAgICAgIHJldHVybiBEYXRhRm9ybWF0SlM7CiAgICAg
Y2FzZSBJbnQzMkluSlNTdGFjazoKICAgICAgICAgcmV0dXJuIERhdGFGb3JtYXRJbnQzMjsKKyAg
ICBjYXNlIEludDQ4SW5KU1N0YWNrOgorICAgICAgICByZXR1cm4gRGF0YUZvcm1hdEludDQ4Owog
ICAgIGNhc2UgQ2VsbEluSlNTdGFjazoKICAgICAgICAgcmV0dXJuIERhdGFGb3JtYXRDZWxsOwog
ICAgIGNhc2UgQm9vbGVhbkluSlNTdGFjazoKQEAgLTEzOSw2ICsxNDQsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoRG91YmxlSW5KU1N0YWNrKTsKICAgICAgICAg
Y2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoSW50MzJJ
bkpTU3RhY2spOworICAgICAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgICAgIHJldHVy
biBWYWx1ZVNvdXJjZShJbnQ0OEluSlNTdGFjayk7CiAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6
CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoQ2VsbEluSlNTdGFjayk7CiAgICAgICAg
IGNhc2UgRmx1c2hlZEJvb2xlYW46CkBAIC0xODEsNiArMTg4LDkgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6
OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMigpOwogICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6
YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4KCk7CisgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBDZWxsSW5KU1N0YWNrOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFs
cmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxsKCk7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkocmV2
aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFj
Y2Vzc0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDcgKzIzNSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgCiAgICAgICAgIC8vIElmIHRoZSB2YXJpYWJsZSBpcyBub3QgYSBudW1iZXIgcHJlZGlj
dGlvbiwgdGhlbiB0aGlzIGRvZXNuJ3QKICAgICAgICAgLy8gbWFrZSBhbnkgc2Vuc2UuCi0gICAg
ICAgIGlmICghaXNOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpKSB7CisgICAgICAgIGlm
ICghaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKSkgewogICAgICAgICAgICAg
Ly8gRklYTUU6IHdlIG1heSBlbmQgdXAgZm9yY2luZyBhIGxvY2FsIGluIGlubGluZWQgYXJndW1l
bnQgcG9zaXRpb24gdG8gYmUgYSBkb3VibGUgZXZlbgogICAgICAgICAgICAgLy8gaWYgaXQgaXMg
c29tZXRpbWVzIG5vdCBldmVuIG51bWVyaWMsIHNpbmNlIHRoaXMgbmV2ZXIgc2lnbmFscyB0aGUg
ZmFjdCB0aGF0IGl0IGRvZXNuJ3QKICAgICAgICAgICAgIC8vIHdhbnQgZG91Ymxlcy4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTUxMQpAQCAtMzMzLDYgKzMzMyw5
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkK
ICAgICAgICAgICAgIHJldHVybiBGbHVzaGVkSW50MzI7CiAgICAgICAgIAorICAgICAgICBpZiAo
ZW5hYmxlSW50NDgoKSAmJiAhb3BlcmFuZElzQXJndW1lbnQobV9sb2NhbCkgJiYgaXNNYWNoaW5l
SW50U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByZXR1cm4gRmx1c2hlZElu
dDQ4OworICAgICAgICAKICAgICAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3Rpb24p
KQogICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRDZWxsOwogICAgICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ0FyZ3VtZW50R2V0dGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENBcmd1bWVudEdldHRlci5jcHAJKHJldmlz
aW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ0FyZ3VtZW50R2V0
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTMgKzMyLDIzIEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKIAogdXNpbmcgbmFtZXNwYWNlIERGRzsKIAotdm9pZCBDQXJndW1l
bnRHZXR0ZXI6OmxvYWROZXh0QW5kQm94KFZhbHVlRm9ybWF0IGZvcm1hdCwgR1BSUmVnIGRlc3Rp
bmF0aW9uLCBHUFJSZWcgc2NyYXRjaCkKK3ZvaWQgQ0FyZ3VtZW50R2V0dGVyOjpsb2FkTmV4dEFu
ZEJveCgKKyAgICBWYWx1ZUZvcm1hdCBmb3JtYXQsIEdQUlJlZyBkZXN0aW5hdGlvbiwgR1BSUmVn
IHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIpCiB7Ci0gICAgaWYgKHNjcmF0Y2ggPT0gSW52YWxp
ZEdQUlJlZykgeworICAgIGlmIChzY3JhdGNoMSA9PSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAg
IEFTU0VSVChzY3JhdGNoMiA9PSBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgaWYgKGRlc3RpbmF0
aW9uID09IEdQUkluZm86Om5vbkFyZ0dQUjApCi0gICAgICAgICAgICBzY3JhdGNoID0gR1BSSW5m
bzo6bm9uQXJnR1BSMTsKKyAgICAgICAgICAgIHNjcmF0Y2gxID0gR1BSSW5mbzo6bm9uQXJnR1BS
MTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2NyYXRjaCA9IEdQUkluZm86Om5vbkFyZ0dQ
UjA7CisgICAgICAgICAgICBzY3JhdGNoMSA9IEdQUkluZm86Om5vbkFyZ0dQUjA7CisgICAgfQor
ICAgIGlmIChzY3JhdGNoMiA9PSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAgIGlmIChkZXN0aW5h
dGlvbiAhPSBHUFJJbmZvOjpub25BcmdHUFIwICYmIHNjcmF0Y2gxICE9IEdQUkluZm86Om5vbkFy
Z0dQUjApCisgICAgICAgICAgICBzY3JhdGNoMiA9IEdQUkluZm86Om5vbkFyZ0dQUjA7CisgICAg
ICAgIGVsc2UgaWYgKGRlc3RpbmF0aW9uICE9IEdQUkluZm86Om5vbkFyZ0dQUjEgJiYgc2NyYXRj
aDEgIT0gR1BSSW5mbzo6bm9uQXJnR1BSMSkKKyAgICAgICAgICAgIHNjcmF0Y2gyID0gR1BSSW5m
bzo6bm9uQXJnR1BSMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2NyYXRjaDIgPSBHUFJJ
bmZvOjpub25BcmdHUFIyOwogICAgIH0KICAgICAKICAgICBzd2l0Y2ggKGZvcm1hdCkgewpAQCAt
NTAsMjEgKzYwLDI2IEBAIHZvaWQgQ0FyZ3VtZW50R2V0dGVyOjpsb2FkTmV4dEFuZEJveChWYWwK
ICAgICAgICAgICAgIAogICAgIGNhc2UgVmFsdWVGb3JtYXRVSW50MzI6IHsKICAgICAgICAgbG9h
ZE5leHQzMihkZXN0aW5hdGlvbik7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzSW50
ID0gbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRo
YW5PckVxdWFsLAotICAgICAgICAgICAgZGVzdGluYXRpb24sIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIoMCkpOwotICAgICAgICAgICAgCi0gICAgICAgIG1faml0Lm1vdmVEb3VibGVUbzY0
KEZQUkluZm86OmZwUmVnVDAsIHNjcmF0Y2gpOwotICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJU
b0RvdWJsZShkZXN0aW5hdGlvbiwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgIG1faml0LmJv
eERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBkZXN0aW5hdGlvbik7Ci0gICAgICAgIG1faml0Lm1v
dmU2NFRvRG91YmxlKHNjcmF0Y2gsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgCi0g
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgaXNJbnQubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5vcjY0KEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZGVzdGluYXRpb24pOworICAgICAgICBtX2pp
dC5tb3ZlRG91YmxlVG82NChGUFJJbmZvOjpmcFJlZ1QwLCBzY3JhdGNoMik7CisgICAgICAgIG1f
aml0LmJveEludDQ4KGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbiwgc2NyYXRjaDEsIEZQUkluZm86
OmZwUmVnVDApOworICAgICAgICBtX2ppdC5tb3ZlNjRUb0RvdWJsZShzY3JhdGNoMiwgRlBSSW5m
bzo6ZnBSZWdUMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBW
YWx1ZUZvcm1hdEludDQ4OiB7CisgICAgICAgIGxvYWROZXh0NjQoZGVzdGluYXRpb24pOworICAg
ICAgICBtX2ppdC5yc2hpZnQ2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxNiksIGRl
c3RpbmF0aW9uKTsKKyAgICAgICAgbV9qaXQubW92ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdU
MCwgc2NyYXRjaDIpOworICAgICAgICBtX2ppdC5ib3hJbnQ0OChkZXN0aW5hdGlvbiwgZGVzdGlu
YXRpb24sIHNjcmF0Y2gxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgbV9qaXQubW92ZTY0
VG9Eb3VibGUoc2NyYXRjaDIsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgICAgICAgICAKLSAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgY2FzZSBW
YWx1ZUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAgIGxvYWROZXh0NjQoZGVzdGluYXRpb24p
OworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlVG82NChGUFJJbmZvOjpmcFJlZ1QwLCBzY3JhdGNo
Mik7CisgICAgICAgIG1faml0LmJveEludDQ4KGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbiwgc2Ny
YXRjaDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICBtX2ppdC5tb3ZlNjRUb0RvdWJsZShz
Y3JhdGNoMiwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgICAgIApAQCAtODAsMTAgKzk1LDEwIEBAIHZvaWQgQ0FyZ3VtZW50R2V0dGVyOjpsb2FkTmV4
dEFuZEJveChWYWwKICAgICB9CiAgICAgICAgICAgICAKICAgICBjYXNlIFZhbHVlRm9ybWF0RG91
YmxlOiB7Ci0gICAgICAgIG1faml0Lm1vdmVEb3VibGVUbzY0KEZQUkluZm86OmZwUmVnVDAsIHNj
cmF0Y2gpOworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlVG82NChGUFJJbmZvOjpmcFJlZ1QwLCBz
Y3JhdGNoMSk7CiAgICAgICAgIGxvYWROZXh0RG91YmxlKEZQUkluZm86OmZwUmVnVDApOwogICAg
ICAgICBtX2ppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgZGVzdGluYXRpb24pOwotICAg
ICAgICBtX2ppdC5tb3ZlNjRUb0RvdWJsZShzY3JhdGNoLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAg
ICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUoc2NyYXRjaDEsIEZQUkluZm86OmZwUmVnVDApOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ0FyZ3VtZW50R2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDQXJndW1lbnRHZXR0ZXIuaAkocmV2aXNpb24gMTU1OTAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDQXJndW1lbnRHZXR0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBsb2FkTmV4dEFuZEJveCgKLSAgICAgICAgVmFsdWVGb3JtYXQgZm9ybWF0LCBERkc6OkdQUlJl
ZyBkZXN0aW5hdGlvbiwgREZHOjpHUFJSZWcgc2NyYXRjaCA9IEludmFsaWRHUFJSZWcpOworICAg
ICAgICBWYWx1ZUZvcm1hdCBmb3JtYXQsIERGRzo6R1BSUmVnIGRlc3RpbmF0aW9uLAorICAgICAg
ICBERkc6OkdQUlJlZyBzY3JhdGNoMSA9IEludmFsaWRHUFJSZWcsIERGRzo6R1BSUmVnIHNjcmF0
Y2gyID0gSW52YWxpZEdQUlJlZyk7CiAKIHByaXZhdGU6CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MgbmV4dEFkZHJlc3MoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiAr
MTY0LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNh
c2UgQ29tcGFyZVN0cmljdEVxOgogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKElu
dDMyVXNlKSkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE1hY2hpbmVJbnRVc2UpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkpCkBAIC0xNzUsNiArMTc3
LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2Ug
Q29tcGFyZUdyZWF0ZXJFcToKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQz
MlVzZSkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChNYWNoaW5lSW50VXNlKSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CkBAIC0yMzYsNiArMjQwLDcgQEAgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgVW50eXBl
ZFVzZToKICAgICAgICAgICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgICAgIGNh
c2UgS25vd25JbnQzMlVzZToKKyAgICAgICAgICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBLbm93
bk51bWJlclVzZToKICAgICAgICAgICAgICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCShyZXZpc2lvbiAxNTU5
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDYgKzUzLDkgQEAgdm9pZCBFeGl0VmFsdWU6OmR1bXBJbkNvbnRleHQo
UHJpbnRTdHJlYQogICAgIGNhc2UgRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQzMjoKICAgICAgICAg
b3V0LnByaW50KCJJbkpTU3RhY2tBc0ludDMyIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEV4aXRWYWx1ZUluSlNTdGFja0FzSW50NDg6CisgICAgICAgIG91dC5wcmludCgiSW5KU1N0YWNr
QXNJbnQ0OCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBFeGl0VmFsdWVJbkpTU3RhY2tB
c0RvdWJsZToKICAgICAgICAgb3V0LnByaW50KCJJbkpTU3RhY2tBc0RvdWJsZSIpOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmgJ
KHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSBFeGl0VmFsdWVLaW5k
IHsKICAgICBFeGl0VmFsdWVDb25zdGFudCwKICAgICBFeGl0VmFsdWVJbkpTU3RhY2ssCiAgICAg
RXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQzMiwKKyAgICBFeGl0VmFsdWVJbkpTU3RhY2tBc0ludDQ4
LAogICAgIEV4aXRWYWx1ZUluSlNTdGFja0FzRG91YmxlCiB9OwogCkBAIC04Miw2ICs4MywxMyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIHN0YXRp
YyBFeGl0VmFsdWUgaW5KU1N0YWNrQXNJbnQ0OCgpCisgICAgeworICAgICAgICBFeGl0VmFsdWUg
cmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQ0
ODsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIEV4aXRW
YWx1ZSBpbkpTU3RhY2tBc0RvdWJsZSgpCiAgICAgewogICAgICAgICBFeGl0VmFsdWUgcmVzdWx0
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNS
ZXBvc2l0b3J5LmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCwx
MiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKICNkZWZpbmUgRk9SX0VBQ0hf
RlRMX0lOVFJJTlNJQyhtYWNybykgXAogICAgIG1hY3JvKGFkZFdpdGhPdmVyZmxvdzMyLCAibGx2
bS5zYWRkLndpdGgub3ZlcmZsb3cuaTMyIiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250
ZXh0LCBpbnQzMiwgYm9vbGVhbiksIGludDMyLCBpbnQzMikpIFwKKyAgICBtYWNybyhhZGRXaXRo
T3ZlcmZsb3c2NCwgImxsdm0uc2FkZC53aXRoLm92ZXJmbG93Lmk2NCIsIGZ1bmN0aW9uVHlwZShz
dHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50NjQsIGJvb2xlYW4pLCBpbnQ2NCwgaW50NjQpKSBcCiAg
ICAgbWFjcm8oZG91YmxlQWJzLCAibGx2bS5mYWJzLmY2NCIsIGZ1bmN0aW9uVHlwZShkb3VibGVU
eXBlLCBkb3VibGVUeXBlKSkgXAogICAgIG1hY3JvKG11bFdpdGhPdmVyZmxvdzMyLCAibGx2bS5z
bXVsLndpdGgub3ZlcmZsb3cuaTMyIiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0
LCBpbnQzMiwgYm9vbGVhbiksIGludDMyLCBpbnQzMikpIFwKKyAgICBtYWNybyhtdWxXaXRoT3Zl
cmZsb3c2NCwgImxsdm0uc211bC53aXRoLm92ZXJmbG93Lmk2NCIsIGZ1bmN0aW9uVHlwZShzdHJ1
Y3RUeXBlKG1fY29udGV4dCwgaW50NjQsIGJvb2xlYW4pLCBpbnQ2NCwgaW50NjQpKSBcCiAgICAg
bWFjcm8oc3ViV2l0aE92ZXJmbG93MzIsICJsbHZtLnNzdWIud2l0aC5vdmVyZmxvdy5pMzIiLCBm
dW5jdGlvblR5cGUoc3RydWN0VHlwZShtX2NvbnRleHQsIGludDMyLCBib29sZWFuKSwgaW50MzIs
IGludDMyKSkgXAorICAgIG1hY3JvKHN1YldpdGhPdmVyZmxvdzY0LCAibGx2bS5zc3ViLndpdGgu
b3ZlcmZsb3cuaTY0IiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQ2NCwg
Ym9vbGVhbiksIGludDY0LCBpbnQ2NCkpIFwKICAgICBtYWNybyh0cmFwLCAibGx2bS50cmFwIiwg
ZnVuY3Rpb25UeXBlKHZvaWRUeXBlKSkgXAogICAgIG1hY3JvKG9zckV4aXQsICJ3ZWJraXRfb3Ny
X2V4aXQiLCBmdW5jdGlvblR5cGUodm9pZFR5cGUsIGJvb2xlYW4sIGludDMyLCBWYXJpYWRpYykp
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDYgKzE1MSw5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CiAgICAgICAgICAg
ICAgICAgICAgIHR5cGUgPSBtX291dC5pbnQzMjsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50NDg6CisgICAgICAgICAgICAgICAg
ICAgIHR5cGUgPSBtX291dC5pbnQ2NDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0Qm9vbGVhbjoKICAgICAgICAgICAgICAgICAgICAg
dHlwZSA9IG1fb3V0LmJvb2xlYW47CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM5
LDcgKzI0Miw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjb21waWxlUGhpKCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgotICAgICAgICAgICAgY29tcGls
ZUpTQ29uc3RhbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYWtKU0Nv
bnN0YW50OgogICAgICAgICAgICAgY29tcGlsZVdlYWtKU0NvbnN0YW50KCk7CkBAIC00NjEsNiAr
NDYzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgIG1f
b3V0LnNldChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIG1f
b3V0LnNldChsb3dJbnQ0OChtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIG1fb3V0
LnNldChsb3dCb29sZWFuKG1fbm9kZS0+Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTQ4Nyw2ICs0OTIsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE5v
ZGVSZXN1bHRJbnQzMjoKICAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmdldChzb3VyY2UpKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQ0ODoKKyAgICAg
ICAgICAgIHNldEludDQ4KG1fb3V0LmdldChzb3VyY2UpKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE5vZGVSZXN1bHRCb29sZWFuOgogICAgICAgICAgICAgc2V0Qm9vbGVhbiht
X291dC5nZXQoc291cmNlKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU5MSw2ICs1OTksMTMg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OiB7CisgICAgICAgICAgICBMVmFsdWUgdmFsdWUg
PSBsb3dJbnQ0OChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQo
dmFsdWUsIGFkZHJlc3NGb3IodmFyaWFibGUtPmxvY2FsKCkpKTsKKyAgICAgICAgICAgIG1fdmFs
dWVTb3VyY2VzLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoSW50NDhJ
bkpTU3RhY2spOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDogewogICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0g
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFs
dWUsIGFkZHJlc3NGb3IodmFyaWFibGUtPmxvY2FsKCkpKTsKQEAgLTY1NSw2ICs2NzAsMjIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9y
Tm9kZShtX25vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAgICAg
ICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShT
cGVjSW50NDgpKSB7CisgICAgICAgICAgICAgICAgSW50NDhzPDI+IGludDQ4cyA9IGxvd1doaWNo
ZXZlckludDQ4cyhtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgICAgICBzZXRJbnQ0OChtX291dC5hZGQoaW50NDhzWzBdLCBpbnQ0OHNbMV0pLCBpbnQ0OHMu
a2luZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SW50NDgobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ0OChtX25vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5hZGRXaXRoT3ZlcmZsb3c2NChsZWZ0
LCByaWdodCk7CisgICAgICAgICAgICBzcGVjdWxhdGUoSW50NDhPdmVyZmxvdywgbm9WYWx1ZSgp
LCAwLCBtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAxKSk7CisgICAgICAgICAgICBzZXRJbnQ0
OChtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAwKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAg
ICAgICBzZXREb3VibGUoCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlQWRkKGxvd0RvdWJs
ZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC02
ODUsNiArNzE2LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAgICAg
aWYgKCFtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0lu
dDQ4KQorICAgICAgICAgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDIo
KSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KSkgeworICAgICAgICAgICAgICAgIEludDQ4czwyPiBp
bnQ0OHMgPSBsb3dXaGljaGV2ZXJJbnQ0OHMobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICAgICAgc2V0SW50NDgobV9vdXQuc3ViKGludDQ4c1swXSwgaW50
NDhzWzFdKSwgaW50NDhzLmtpbmQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0ludDQ4KG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NDgobV9u
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuc3ViV2l0
aE92ZXJmbG93NjQobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc3BlY3VsYXRlKEludDQ4T3Zl
cmZsb3csIG5vVmFsdWUoKSwgMCwgbV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMSkpOworICAg
ICAgICAgICAgc2V0SW50NDgobV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIE51bWJl
clVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKAogICAgICAgICAgICAgICAgIG1fb3V0LmRv
dWJsZVN1Yihsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNo
aWxkMigpKSkpOwpAQCAtNzMwLDYgKzc3NywzMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6
IHsKKyAgICAgICAgICAgIEludDQ4czwyPiBpbnQ0OHMgPSBsb3dPcHBvc2luZ0ludDQ4cyhtX25v
ZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgTFZhbHVlIG92ZXJmbG93UmVzdWx0ID0gbV9vdXQubXVsV2l0aE92ZXJmbG93NjQoaW50NDhz
WzBdLCBpbnQ0OHNbMV0pOworICAgICAgICAgICAgc3BlY3VsYXRlKEludDQ4T3ZlcmZsb3csIG5v
VmFsdWUoKSwgMCwgbV9vdXQuZXh0cmFjdFZhbHVlKG92ZXJmbG93UmVzdWx0LCAxKSk7CisgICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXh0cmFjdFZhbHVlKG92ZXJmbG93UmVzdWx0
LCAwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9yZU5l
Z2F0aXZlWmVybyhtX25vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICAgICAg
TEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoTXVsIHNs
b3cgY2FzZSIpKTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoTXVsIGNvbnRpbnVhdGlvbiIpKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90WmVybzY0KHJl
c3VsdCksIGNvbnRpbnVhdGlvbiwgc2xvd0Nhc2UpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2Us
IGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE5lZ2F0aXZlWmVybywg
bm9WYWx1ZSgpLCAwLCBtX291dC5sZXNzVGhhbihpbnQ0OHNbMF0sIG1fb3V0LmludDY0WmVybykp
OworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZVplcm8sIG5vVmFsdWUoKSwgMCwg
bV9vdXQubGVzc1RoYW4oaW50NDhzWzBdLCBtX291dC5pbnQ2NFplcm8pKTsKKyAgICAgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHNldEludDQ4KHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAg
ICAgICBzZXREb3VibGUoCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTXVsKGxvd0RvdWJs
ZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC0x
MDMwLDYgKzExMDEsMjUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgICAg
ICBpZiAoIW1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVj
SW50NDgpKSB7CisgICAgICAgICAgICAgICAgSW50NDhzPDE+IHZhbHVlID0gbG93V2hpY2hldmVy
SW50NDgobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IG1fb3V0Lm5lZyh2YWx1ZVswXSk7CisgICAgICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhbkln
bm9yZU5lZ2F0aXZlWmVybyhtX25vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAgICAg
ICAgICAgICBzcGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIDAsIG1fb3V0LmlzWmVy
bzY0KHJlc3VsdCkpOworICAgICAgICAgICAgICAgIHNldEludDQ4KHJlc3VsdCwgdmFsdWUua2lu
ZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0ludDQ4KG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgTFZhbHVlIG92ZXJmbG93UmVzdWx0ID0gbV9vdXQuc3ViV2l0aE92ZXJmbG93
NjQobV9vdXQuaW50NjRaZXJvLCB2YWx1ZSk7CisgICAgICAgICAgICBzcGVjdWxhdGUoSW50NDhP
dmVyZmxvdywgbm9WYWx1ZSgpLCAwLCBtX291dC5leHRyYWN0VmFsdWUob3ZlcmZsb3dSZXN1bHQs
IDEpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5leHRyYWN0VmFsdWUob3Zl
cmZsb3dSZXN1bHQsIDApOworICAgICAgICAgICAgc3BlY3VsYXRlKE5lZ2F0aXZlWmVybywgbm9W
YWx1ZSgpLCAwLCBtX291dC5pc1plcm82NChyZXN1bHQpKTsKKyAgICAgICAgICAgIHNldEludDQ4
KHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZG91
YmxlTmVnKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xNDcxLDcgKzE1NjEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIExWYWx1ZSB2
YWx1ZSA9IGxvd0RvdWJsZShjaGlsZDMpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1
ZSksIGNoaWxkMywgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgIGRvdWJsZVZh
bHVlKHZhbHVlKSwgY2hpbGQzLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQodmFsdWUsIHZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVHlwZWRQb2ludGVyIGVsZW1lbnRQb2ludGVy
ID0gbV9vdXQuYmFzZUluZGV4KApAQCAtMTcwNiw2ICsxNzk2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXBpbGVDb21wYXJlRXEoKQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEludDMyVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoTWFjaGluZUludFVzZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE51bWJlclVzZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVj
dFVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVDb21wYXJlU3RyaWN0RXEoKTsKQEAgLTE3MzIs
NiArMTgyMywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIAorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVz
ZSkpIHsKKyAgICAgICAgICAgIEludDQ4czwyPiB2YWx1ZXMgPSBsb3dXaGljaGV2ZXJJbnQ0OHMo
bV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBzZXRCb29s
ZWFuKG1fb3V0LmVxdWFsKHZhbHVlc1swXSwgdmFsdWVzWzFdKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgICAgICBzZXRCb29sZWFuKAogICAgICAgICAgICAg
ICAgIG1fb3V0LmRvdWJsZUVxdWFsKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91
YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC0xNzgwLDYgKzE4NzcsMTIgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgaWYgKG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAgICAgICAgICBJbnQ0
OHM8Mj4gdmFsdWVzID0gbG93V2hpY2hldmVySW50NDhzKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5sZXNzVGhhbih2YWx1
ZXNbMF0sIHZhbHVlc1sxXSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgewog
ICAgICAgICAgICAgc2V0Qm9vbGVhbigKICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVMZXNz
VGhhbihsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxk
MigpKSkpOwpAQCAtMTc5Nyw2ICsxOTAwLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChNYWNoaW5lSW50VXNlKSkgeworICAgICAgICAgICAgSW50NDhzPDI+IHZhbHVlcyA9IGxv
d1doaWNoZXZlckludDQ4cyhtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubGVzc1RoYW5PckVxdWFsKHZhbHVlc1swXSwgdmFs
dWVzWzFdKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgICAg
ICBzZXRCb29sZWFuKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUxlc3NUaGFuT3JFcXVh
bCgKQEAgLTE4MTUsNiArMTkyNCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQo
TWFjaGluZUludFVzZSkpIHsKKyAgICAgICAgICAgIEludDQ4czwyPiB2YWx1ZXMgPSBsb3dXaGlj
aGV2ZXJJbnQ0OHMobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICBzZXRCb29sZWFuKG1fb3V0LmdyZWF0ZXJUaGFuKHZhbHVlc1swXSwgdmFsdWVzWzFdKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgICAgICBzZXRCb29s
ZWFuKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUdyZWF0ZXJUaGFuKApAQCAtMTgzNCw2
ICsxOTQ5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNl
KSkgeworICAgICAgICAgICAgSW50NDhzPDI+IHZhbHVlcyA9IGxvd1doaWNoZXZlckludDQ4cyht
X25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHNldEJvb2xl
YW4obV9vdXQuZ3JlYXRlclRoYW5PckVxdWFsKHZhbHVlc1swXSwgdmFsdWVzWzFdKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgICAgICBzZXRCb29sZWFuKAog
ICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCgKQEAgLTIzNTAs
MTAgKzI0NzEsMjcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9k
ZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgKGVkZ2UudXNlS2luZCgpID09
IEludDMyVXNlIHx8IGVkZ2UudXNlS2luZCgpID09IEtub3duSW50MzJVc2UpKTsKICAgICAgICAg
CisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBKU1ZhbHVl
IHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAg
ICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShV
bmNvdW50YWJsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmludDMyWmVybzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtX291dC5jb25zdEludDMyKHZhbHVlLmFz
SW50MzIoKSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUg
dmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1Zh
bGlkKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOwogICAgICAgICAK
KyAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7Cisg
ICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ0
OFRvSW50MzIoZWRnZSwgdmFsdWUudmFsdWUoKSk7CisgICAgICAgIAorICAgICAgICB2YWx1ZSA9
IG1faW50NDhWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFs
dWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDQ4VG9JbnQzMihlZGdlLCBpbnQ0OFRv
U3RyaWN0SW50NDgodmFsdWUudmFsdWUoKSkpOworICAgICAgICAKICAgICAgICAgdmFsdWUgPSBt
X2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFs
dWUpKSB7CiAgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSB2YWx1ZS52YWx1ZSgpOwpA
QCAtMjM2OSwxMCArMjUwNywxNDggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fb3V0Lmlu
dDMyWmVybzsKICAgICB9CiAgICAgCisgICAgZW51bSBJbnQ0OEtpbmQgeyBTdHJpY3RJbnQ0OCwg
SW50NDggfTsKKyAgICBMVmFsdWUgbG93SW50NDgoRWRnZSBlZGdlLCBJbnQ0OEtpbmQga2luZCwg
T3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9u
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAg
ICAgICAgICBpZiAoIXZhbHVlLmlzTWFjaGluZUludCgpKSB7CisgICAgICAgICAgICAgICAgdGVy
bWluYXRlKFVuY291bnRhYmxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuaW50NjRa
ZXJvOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50NjRfdCByZXN1bHQgPSB2YWx1ZS5h
c01hY2hpbmVJbnQoKTsKKyAgICAgICAgICAgIGlmIChraW5kID09IEludDQ4KQorICAgICAgICAg
ICAgICAgIHJlc3VsdCA8PD0gMTY7CisgICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQ2
NChyZXN1bHQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBMb3dlcmVkTm9kZVZhbHVl
IHZhbHVlOworICAgICAgICAKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2Ug
SW50NDg6CisgICAgICAgICAgICB2YWx1ZSA9IG1faW50NDhWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgp
KTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFsdWUgPSBtX3N0
cmljdEludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxp
ZCh2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDQ4VG9JbnQ0OCh2YWx1
ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNh
c2UgU3RyaWN0SW50NDg6CisgICAgICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NDhWYWx1ZXMu
Z2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgdmFsdWUgPSBtX2ludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBp
ZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGludDQ4VG9TdHJpY3RJ
bnQ0OCh2YWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAg
ICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0SW50NDhX
aXRoU3RyaWN0VmFsdWUoCisgICAgICAgICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0LnNpZ25F
eHQodmFsdWUudmFsdWUoKSwgbV9vdXQuaW50NjQpLCBraW5kKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBl
ICYgU3BlY0ludDQ4KSk7CisgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVl
cy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAg
ICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IHZhbHVlLnZhbHVlKCk7CisgICAgICAgICAgICBG
VExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoYm94ZWRSZXN1bHQp
LCBlZGdlLCBTcGVjTWFjaGluZUludCwgaXNOb3RJbnQzMihib3hlZFJlc3VsdCkpOworICAgICAg
ICAgICAgcmV0dXJuIHNldEludDQ4V2l0aFN0cmljdFZhbHVlKAorICAgICAgICAgICAgICAgIGVk
Z2Uubm9kZSgpLCBtX291dC5zaWduRXh0KHVuYm94SW50MzIoYm94ZWRSZXN1bHQpLCBtX291dC5p
bnQ2NCksIGtpbmQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VS
VCghKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjTWFjaGluZUludCkpOworICAg
ICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOworICAgICAgICByZXR1cm4gbV9vdXQuaW50NjRa
ZXJvOworICAgIH0KKyAgICAKKyAgICBMVmFsdWUgbG93SW50NDgoRWRnZSBlZGdlLCBPcGVyYW5k
U3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAg
eworICAgICAgICByZXR1cm4gbG93SW50NDgoZWRnZSwgSW50NDgsIG1vZGUpOworICAgIH0KKyAg
ICAKKyAgICBMVmFsdWUgbG93U3RyaWN0SW50NDgoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRp
b25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAg
ICByZXR1cm4gbG93SW50NDgoZWRnZSwgU3RyaWN0SW50NDgsIG1vZGUpOworICAgIH0KKyAgICAK
KyAgICBib29sIGJldHRlclVzZVN0cmljdEludDQ4KE5vZGUqIG5vZGUpCisgICAgeworICAgICAg
ICByZXR1cm4gIWlzVmFsaWQobV9pbnQ0OFZhbHVlcy5nZXQobm9kZSkpOworICAgIH0KKyAgICBi
b29sIGJldHRlclVzZVN0cmljdEludDQ4KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChlZGdlLm5vZGUoKSk7CisgICAgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgSW50NDhLaW5kIGJlc3RJbnQ0OEtpbmQoVCBub2RlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJldHRlclVzZVN0cmljdEludDQ4KG5vZGUpID8gU3RyaWN0SW50NDgg
OiBJbnQ0ODsKKyAgICB9CisgICAgSW50NDhLaW5kIG9wcG9zaXRlKEludDQ4S2luZCBraW5kKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgSW50NDg6CisgICAg
ICAgICAgICByZXR1cm4gU3RyaWN0SW50NDg7CisgICAgICAgIGNhc2UgU3RyaWN0SW50NDg6Cisg
ICAgICAgICAgICByZXR1cm4gSW50NDg7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dW5zaWduZWQgY291
bnQ+CisgICAgc3RydWN0IEludDQ4cyB7CisgICAgICAgIExWYWx1ZSBvcGVyYXRvcltdKHVuc2ln
bmVkIGluZGV4KSBjb25zdCB7IHJldHVybiB2YWx1ZXNbaW5kZXhdOyB9CisgICAgICAgIExWYWx1
ZSYgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gdmFsdWVzW2luZGV4XTsgfQor
ICAgICAgICAKKyAgICAgICAgSW50NDhLaW5kIGtpbmQ7CisgICAgICAgIEZpeGVkQXJyYXk8TFZh
bHVlLCBjb3VudD4gdmFsdWVzOworICAgIH07CisgICAgSW50NDhzPDE+IGxvd1doaWNoZXZlcklu
dDQ4KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3Bl
cmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAgICAgSW50NDhzPDE+IHJlc3VsdDsKKyAgICAg
ICAgcmVzdWx0LmtpbmQgPSBiZXN0SW50NDhLaW5kKGVkZ2UpOworICAgICAgICByZXN1bHRbMF0g
PSBsb3dJbnQ0OChlZGdlLCByZXN1bHQua2luZCwgbW9kZSk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorICAgIEludDQ4czwyPiBsb3dXaGljaGV2ZXJJbnQ0OHMoRWRnZSBlZGdlMSwg
RWRnZSBlZGdlMiwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFu
ZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAgICAgSW50NDhzPDI+IHJlc3VsdDsKKyAgICAgICAg
cmVzdWx0LmtpbmQgPSBiZXN0SW50NDhLaW5kKGVkZ2UxKTsKKyAgICAgICAgcmVzdWx0WzBdID0g
bG93SW50NDgoZWRnZTEsIHJlc3VsdC5raW5kLCBtb2RlKTsKKyAgICAgICAgcmVzdWx0WzFdID0g
bG93SW50NDgoZWRnZTIsIHJlc3VsdC5raW5kLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisgICAgSW50NDhzPDI+IGxvd09wcG9zaW5nSW50NDhzKEVkZ2UgZWRnZTEsIEVk
Z2UgZWRnZTIsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRT
cGVjdWxhdGlvbikKKyAgICB7CisgICAgICAgIEludDQ4czwyPiByZXN1bHQ7CisgICAgICAgIHJl
c3VsdC5raW5kID0gYmVzdEludDQ4S2luZChlZGdlMSk7CisgICAgICAgIHJlc3VsdFswXSA9IGxv
d0ludDQ4KGVkZ2UxLCByZXN1bHQua2luZCwgbW9kZSk7CisgICAgICAgIHJlc3VsdFsxXSA9IGxv
d0ludDQ4KGVkZ2UyLCBvcHBvc2l0ZShyZXN1bHQua2luZCksIG1vZGUpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBMVmFsdWUgbG93Q2VsbChFZGdlIGVkZ2UsIE9w
ZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikK
ICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24gfHwgaXNDZWxsKGVkZ2UudXNlS2luZCgpKSk7CiAgICAgICAgIAorICAgICAg
ICBpZiAoZWRnZS0+b3AoKSA9PSBKU0NvbnN0YW50KSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAgICAg
ICBpZiAoIXZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291
bnRhYmxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuaW50UHRyWmVybzsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtX291dC5jb25zdEludFB0cih2YWx1ZS5hc0Nl
bGwoKSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFs
dWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKSB7CiAgICAgICAgICAgICBMVmFsdWUgdW5jaGVja2VkVmFsdWUgPSB2YWx1ZS52
YWx1ZSgpOwpAQCAtMjQxNyw2ICsyNjkzLDE1IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBB
U1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVk
Z2UudXNlS2luZCgpID09IEJvb2xlYW5Vc2UpOwogICAgICAgICAKKyAgICAgICAgaWYgKGVkZ2Ut
Pmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZh
bHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNC
b29sZWFuKCkpIHsKKyAgICAgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOworICAg
ICAgICAgICAgICAgIHJldHVybiBtX291dC5ib29sZWFuRmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RCb29sKHZhbHVlLmFzQm9vbGVhbigpKTsKKyAg
ICAgICAgfQorICAgICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1fYm9v
bGVhblZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkp
CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKQEAgLTI0NDAsNiArMjcyNSwxNSBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOwogICAg
ICAgICAKKyAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAg
ICAgICAgICAgIGlmICghdmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIHRlcm1p
bmF0ZShVbmNvdW50YWJsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZVpl
cm87CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3REb3VibGUo
dmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIExvd2VyZWRO
b2RlVmFsdWUgdmFsdWUgPSBtX2RvdWJsZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAg
ICBpZiAoaXNWYWxpZCh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsK
QEAgLTI0NTEsNiArMjc0NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDQ4VmFs
dWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAg
ICAgICAgIHJldHVybiBzdHJpY3RJbnQ0OFRvRG91YmxlKGVkZ2UsIHZhbHVlLnZhbHVlKCkpOwor
ICAgICAgICAKKyAgICAgICAgdmFsdWUgPSBtX2ludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7
CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJpY3RJ
bnQ0OFRvRG91YmxlKGVkZ2UsIGludDQ4VG9TdHJpY3RJbnQ0OCh2YWx1ZS52YWx1ZSgpKSk7Cisg
ICAgICAgIAogICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkp
OwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKICAgICAgICAgICAgIExWYWx1ZSBib3hl
ZFJlc3VsdCA9IHZhbHVlLnZhbHVlKCk7CkBAIC0yNDcwLDcgKzI3NzIsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAg
anNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY051bWJlciwgaXNDZWxsT3JNaXNj
KGJveGVkUmVzdWx0KSk7CisgICAgICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0
KSwgZWRnZSwgU3BlY0Z1bGxOdW1iZXIsIGlzQ2VsbE9yTWlzYyhib3hlZFJlc3VsdCkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayB1bmJveGVkRG91YmxlID0gbV9v
dXQuYW5jaG9yKHVuYm94RG91YmxlKGJveGVkUmVzdWx0KSk7CiAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CkBAIC0yNDgzLDcgKzI3ODUsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgU3BlY051bWJlcikpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiBT
cGVjRnVsbE51bWJlcikpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAg
ICByZXR1cm4gbV9vdXQuZG91YmxlWmVybzsKICAgICB9CkBAIC0yNDkyLDYgKzI3OTQsOSBAQCBw
cml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAg
ICAgICAgCisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKQorICAgICAgICAgICAgcmV0
dXJuIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKG1fZ3JhcGgudmFsdWVPZkpTQ29u
c3RhbnQoZWRnZS5ub2RlKCkpKSk7CisgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVl
IHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChp
c1ZhbGlkKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOwpAQCAtMjUw
Myw2ICsyODA4LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CiAgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NDhWYWx1ZXMuZ2V0
KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQorICAgICAgICAgICAg
cmV0dXJuIHN0cmljdEludDQ4VG9KU1ZhbHVlKHZhbHVlLnZhbHVlKCkpOworICAgICAgICAKKyAg
ICAgICAgdmFsdWUgPSBtX2ludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlm
IChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ0OFRvSlNWYWx1
ZShpbnQ0OFRvU3RyaWN0SW50NDgodmFsdWUudmFsdWUoKSkpOworICAgICAgICAKICAgICAgICAg
dmFsdWUgPSBtX2Jvb2xlYW5WYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlz
VmFsaWQodmFsdWUpKSB7CiAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gYm94Qm9vbGVhbih2
YWx1ZS52YWx1ZSgpKTsKQEAgLTI1MzIsNiArMjg0NSw3NyBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICBMVmFsdWUgc3RyaWN0SW50NDhUb0ludDMy
KEVkZ2UgZWRnZSwgTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IG1fb3V0LmNhc3RUb0ludDMyKHZhbHVlKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCisgICAg
ICAgICAgICBub1ZhbHVlKCksIGVkZ2UsIFNwZWNJbnQzMiwKKyAgICAgICAgICAgIG1fb3V0Lm5v
dEVxdWFsKG1fb3V0LnNpZ25FeHQocmVzdWx0LCBtX291dC5pbnQ2NCksIHZhbHVlKSk7CisgICAg
ICAgIHNldEludDMyKGVkZ2Uubm9kZSgpLCByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKyAgICAKKyAgICBMVmFsdWUgc3RyaWN0SW50NDhUb0RvdWJsZShFZGdlIGVkZ2Us
IExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5pbnRU
b0RvdWJsZSh2YWx1ZSk7CisgICAgICAgIHNldERvdWJsZShlZGdlLm5vZGUoKSwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgTFZhbHVlIHN0cmljdElu
dDQ4VG9KU1ZhbHVlKExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIGlz
SW50MzIgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoInN0cmljdEludDQ4VG9KU1ZhbHVlIGlzSW50
MzIgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNEb3VibGUgPSBGVExfTkVXX0JMT0NL
KG1fb3V0LCAoInN0cmljdEludDQ4VG9KU1ZhbHVlIGlzRG91YmxlIGNhc2UiKSk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaWN0
SW50NDhUb0pTVmFsdWUgY29udGludWF0aW9uIikpOworICAgICAgICAKKyAgICAgICAgVmVjdG9y
PFZhbHVlRnJvbUJsb2NrLCAyPiByZXN1bHRzOworICAgICAgICAgICAgCisgICAgICAgIExWYWx1
ZSBpbnQzMlZhbHVlID0gbV9vdXQuY2FzdFRvSW50MzIodmFsdWUpOworICAgICAgICBtX291dC5i
cmFuY2goCisgICAgICAgICAgICBtX291dC5lcXVhbChtX291dC5zaWduRXh0KGludDMyVmFsdWUs
IG1fb3V0LmludDY0KSwgdmFsdWUpLAorICAgICAgICAgICAgaXNJbnQzMiwgaXNEb3VibGUpOwor
ICAgICAgICAKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhp
c0ludDMyLCBpc0RvdWJsZSk7CisgICAgICAgIAorICAgICAgICByZXN1bHRzLmFwcGVuZChtX291
dC5hbmNob3IoYm94SW50MzIoaW50MzJWYWx1ZSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOworICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNEb3VibGUsIGNv
bnRpbnVhdGlvbik7CisgICAgICAgIAorICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNo
b3IoYm94RG91YmxlKG1fb3V0LmludFRvRG91YmxlKHZhbHVlKSkpKTsKKyAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOworICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHJldHVybiBtX291dC5waGkobV9vdXQuaW50
NjQsIHJlc3VsdHMpOworICAgIH0KKyAgICAKKyAgICBMVmFsdWUgc2V0SW50NDhXaXRoU3RyaWN0
VmFsdWUoTm9kZSogbm9kZSwgTFZhbHVlIHZhbHVlLCBJbnQ0OEtpbmQga2luZCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIFN0cmljdEludDQ4OgorICAgICAg
ICAgICAgc2V0U3RyaWN0SW50NDgobm9kZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHZh
bHVlOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NDg6CisgICAgICAgICAgICB2YWx1
ZSA9IHN0cmljdEludDQ4VG9JbnQ0OCh2YWx1ZSk7CisgICAgICAgICAgICBzZXRJbnQ0OChub2Rl
LCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIExWYWx1ZSBzdHJpY3RJbnQ0OFRvSW50NDgoTFZhbHVlIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnNobCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCgx
NikpOworICAgIH0KKyAgICAKKyAgICBMVmFsdWUgaW50NDhUb1N0cmljdEludDQ4KExWYWx1ZSB2
YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dC5hU2hyKHZhbHVlLCBtX291dC5jb25z
dEludDY0KDE2KSk7CisgICAgfQorICAgIAogICAgIExWYWx1ZSBpc05vdEludDMyKExWYWx1ZSBq
c1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmJlbG93KGpzVmFsdWUsIG1fdGFn
VHlwZU51bWJlcik7CkBAIC0yNzkyLDcgKzMxNzYsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAg
ICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91YmxlKGVkZ2UpOwogICAgICAgICBGVExfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY1JlYWxOdW1i
ZXIsCisgICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNGdWxsUmVhbE51
bWJlciwKICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQodmFsdWUs
IHZhbHVlKSk7CiAgICAgfQogICAgIApAQCAtMjgwMCw3ICszMTg0LDcgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIGxvd0Jvb2xlYW4oZWRnZSk7CiAgICAgfQotCisgICAgCiAgICAgYm9vbCBt
YXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gbV9ncmFwaC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3Rp
bGxWYWxpZChtX25vZGUtPmNvZGVPcmlnaW4pOwpAQCAtMjkzMSw2ICszMzE1LDEwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgbV92YWx1ZVNvdXJjZXNbaV0gPSBWYWx1ZVNvdXJjZShJbnQz
MkluSlNTdGFjayk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgICAgICAgICBtX3ZhbHVlU291
cmNlc1tpXSA9IFZhbHVlU291cmNlKEludDQ4SW5KU1N0YWNrKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToK
ICAgICAgICAgICAgICAgICBtX3ZhbHVlU291cmNlc1tpXSA9IFZhbHVlU291cmNlKERvdWJsZUlu
SlNTdGFjayk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDM0LDYgKzM0MjIsOSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgY2FzZSBJbnQzMkluSlNTdGFjazoKICAgICAgICAgICAgICAg
ICBleGl0Lm1fdmFsdWVzW2ldID0gRXhpdFZhbHVlOjppbkpTU3RhY2tBc0ludDMyKCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEludDQ4SW5KU1N0YWNrOgorICAg
ICAgICAgICAgICAgIGV4aXQubV92YWx1ZXNbaV0gPSBFeGl0VmFsdWU6OmluSlNTdGFja0FzSW50
NDgoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRG91YmxlSW5K
U1N0YWNrOgogICAgICAgICAgICAgICAgIGV4aXQubV92YWx1ZXNbaV0gPSBFeGl0VmFsdWU6Omlu
SlNTdGFja0FzRG91YmxlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMTM3LDYgKzM1
MjgsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAKKyAgICAgICAgdmFsdWUgPSBtX2ludDQ4VmFsdWVzLmdldChub2RlKTsKKyAgICAgICAgaWYg
KGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICBhZGRFeGl0QXJndW1lbnQoZXhpdCwgYXJn
dW1lbnRzLCBpbmRleCwgVmFsdWVGb3JtYXRJbnQ0OCwgdmFsdWUudmFsdWUoKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZhbHVlID0gbV9zdHJp
Y3RJbnQ0OFZhbHVlcy5nZXQobm9kZSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewor
ICAgICAgICAgICAgYWRkRXhpdEFyZ3VtZW50KGV4aXQsIGFyZ3VtZW50cywgaW5kZXgsIFZhbHVl
Rm9ybWF0U3RyaWN0SW50NDgsIHZhbHVlLnZhbHVlKCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2YWx1ZSA9IG1fYm9vbGVhblZhbHVlcy5nZXQo
bm9kZSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewogICAgICAgICAgICAgYWRkRXhp
dEFyZ3VtZW50KGV4aXQsIGFyZ3VtZW50cywgaW5kZXgsIFZhbHVlRm9ybWF0Qm9vbGVhbiwgdmFs
dWUudmFsdWUoKSk7CkBAIC0zMjQwLDYgKzM2NDMsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIG1faW50MzJWYWx1ZXMuc2V0KG5vZGUsIExvd2VyZWROb2RlVmFsdWUodmFsdWUsIG1faGln
aEJsb2NrKSk7CiAgICAgfQorICAgIHZvaWQgc2V0SW50NDgoTm9kZSogbm9kZSwgTFZhbHVlIHZh
bHVlKQorICAgIHsKKyAgICAgICAgbV9pbnQ0OFZhbHVlcy5zZXQobm9kZSwgTG93ZXJlZE5vZGVW
YWx1ZSh2YWx1ZSwgbV9oaWdoQmxvY2spKTsKKyAgICB9CisgICAgdm9pZCBzZXRTdHJpY3RJbnQ0
OChOb2RlKiBub2RlLCBMVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBtX3N0cmljdEludDQ4
VmFsdWVzLnNldChub2RlLCBMb3dlcmVkTm9kZVZhbHVlKHZhbHVlLCBtX2hpZ2hCbG9jaykpOwor
ICAgIH0KKyAgICB2b2lkIHNldEludDQ4KE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSwgSW50NDhL
aW5kIGtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBJ
bnQ0ODoKKyAgICAgICAgICAgIHNldEludDQ4KG5vZGUsIHZhbHVlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFN0cmljdEludDQ4OgorICAgICAgICAg
ICAgc2V0U3RyaWN0SW50NDgobm9kZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KICAgICB2b2lkIHNldEpTVmFsdWUoTm9kZSogbm9kZSwgTFZhbHVlIHZhbHVlKQogICAg
IHsKICAgICAgICAgbV9qc1ZhbHVlVmFsdWVzLnNldChub2RlLCBMb3dlcmVkTm9kZVZhbHVlKHZh
bHVlLCBtX2hpZ2hCbG9jaykpOwpAQCAtMzI2MSw2ICszNjg2LDE4IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBzZXRJbnQzMihtX25vZGUsIHZhbHVlKTsKICAgICB9CisgICAgdm9pZCBzZXRJ
bnQ0OChMVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBzZXRJbnQ0OChtX25vZGUsIHZhbHVl
KTsKKyAgICB9CisgICAgdm9pZCBzZXRTdHJpY3RJbnQ0OChMVmFsdWUgdmFsdWUpCisgICAgewor
ICAgICAgICBzZXRTdHJpY3RJbnQ0OChtX25vZGUsIHZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBz
ZXRJbnQ0OChMVmFsdWUgdmFsdWUsIEludDQ4S2luZCBraW5kKQorICAgIHsKKyAgICAgICAgc2V0
SW50NDgobV9ub2RlLCB2YWx1ZSwga2luZCk7CisgICAgfQogICAgIHZvaWQgc2V0SlNWYWx1ZShM
VmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBzZXRKU1ZhbHVlKG1fbm9kZSwgdmFsdWUpOwpA
QCAtMzM0MCw2ICszNzc3LDggQEAgcHJpdmF0ZToKICAgICBMVmFsdWUgbV90YWdNYXNrOwogICAg
IAogICAgIEhhc2hNYXA8Tm9kZSosIExvd2VyZWROb2RlVmFsdWU+IG1faW50MzJWYWx1ZXM7Cisg
ICAgSGFzaE1hcDxOb2RlKiwgTG93ZXJlZE5vZGVWYWx1ZT4gbV9zdHJpY3RJbnQ0OFZhbHVlczsK
KyAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX2ludDQ4VmFsdWVzOwogICAg
IEhhc2hNYXA8Tm9kZSosIExvd2VyZWROb2RlVmFsdWU+IG1fanNWYWx1ZVZhbHVlczsKICAgICBI
YXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX2Jvb2xlYW5WYWx1ZXM7CiAgICAgSGFz
aE1hcDxOb2RlKiwgTG93ZXJlZE5vZGVWYWx1ZT4gbV9zdG9yYWdlVmFsdWVzOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2
aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29t
cGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDggQEAgc3RhdGljIHZvaWQg
Y29tcGlsZVN0dWIoCiAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86Om5vbkFyZ0dQUjAsIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihhcmd1bWVudC5vcGVyYW5kKCkpKTsKICAgICB9CiAg
ICAgCisgICAgLy8gQWxsIHRlbXAgcmVnaXN0ZXJzIGFyZSBmcmVlIGF0IHRoaXMgcG9pbnQuCisg
ICAgCiAgICAgLy8gQm94IGFueXRoaW5nIHRoYXQgaXMgYWxyZWFkeSBvbiB0aGUgc3RhY2ssIG9y
IHRoYXQgaXMgYSBjb25zdGFudC4KICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBleGl0Lm1f
dmFsdWVzLnNpemUoKTsgaS0tOykgewpAQCAtMTI4LDYgKzEzMCwxMiBAQCBzdGF0aWMgdm9pZCBj
b21waWxlU3R1YigKICAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5m
bzo6cmVnVDAsIGFkZHJlc3MpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXhp
dFZhbHVlSW5KU1N0YWNrQXNJbnQ0ODoKKyAgICAgICAgICAgIGppdC5sb2FkNjQoYWRkcmVzcywg
R1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LmJv
eEludDQ4KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQ
UkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAs
IGFkZHJlc3MpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRXhpdFZhbHVlSW5K
U1N0YWNrQXNEb3VibGU6CiAgICAgICAgICAgICBqaXQubG9hZERvdWJsZShhZGRyZXNzLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdU
MCwgR1BSSW5mbzo6cmVnVDApOwpAQCAtMTYwLDkgKzE2OCwxMCBAQCBzdGF0aWMgdm9pZCBjb21w
aWxlU3R1YigKICAgICBleGl0Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVfSUYoCiAgICAgICAgIHNo
b3VsZFNob3dEaXNhc3NlbWJseSgpLAogICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgKCJG
VEwgT1NSIGV4aXQgIyV1IChiYyMldSwgJXMpIGZyb20gJXMiLAorICAgICAgICAoIkZUTCBPU1Ig
ZXhpdCAjJXUgKGJjIyV1LCAlcykgZnJvbSAlcywgd2l0aCBvcGVyYW5kcyA9ICVzIiwKICAgICAg
ICAgICAgIGV4aXRJRCwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwKLSAgICAgICAg
ICAgIGV4aXRLaW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0b0NTdHJpbmcoKmNvZGVCbG9jayku
ZGF0YSgpKSk7CisgICAgICAgICAgICBleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgdG9D
U3RyaW5nKCpjb2RlQmxvY2spLmRhdGEoKSwKKyAgICAgICAgICAgIHRvQ1N0cmluZyhpZ25vcmlu
Z0NvbnRleHQ8RHVtcENvbnRleHQ+KGV4aXQubV92YWx1ZXMpKS5kYXRhKCkpKTsKIH0KIAogZXh0
ZXJuICJDIiB2b2lkKiBjb21waWxlRlRMT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGV4aXRJRCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNp
b24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2NiwxOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4gY2FsbChtdWxXaXRoT3ZlcmZsb3czMkludHJpbnNpYygpLCBsZWZ0LCByaWdodCk7CiAg
ICAgfQorICAgIExWYWx1ZSBhZGRXaXRoT3ZlcmZsb3c2NChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNhbGwoYWRkV2l0aE92ZXJmbG93NjRJbnRyaW5z
aWMoKSwgbGVmdCwgcmlnaHQpOworICAgIH0KKyAgICBMVmFsdWUgc3ViV2l0aE92ZXJmbG93NjQo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBjYWxsKHN1
YldpdGhPdmVyZmxvdzY0SW50cmluc2ljKCksIGxlZnQsIHJpZ2h0KTsKKyAgICB9CisgICAgTFZh
bHVlIG11bFdpdGhPdmVyZmxvdzY0KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCisgICAgewor
ICAgICAgICByZXR1cm4gY2FsbChtdWxXaXRoT3ZlcmZsb3c2NEludHJpbnNpYygpLCBsZWZ0LCBy
aWdodCk7CisgICAgfQogICAgIExWYWx1ZSBkb3VibGVBYnMoTFZhbHVlIHZhbHVlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGNhbGwoZG91YmxlQWJzSW50cmluc2ljKCksIHZhbHVlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3BwCShyZXZpc2lv
biAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTIgQEAgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIFZhbAogICAgIGNhc2UgVmFsdWVGb3JtYXRVSW50MzI6CiAgICAgICAg
IG91dC5wcmludCgiVUludDMyIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZhbHVlRm9y
bWF0SW50NDg6CisgICAgICAgIG91dC5wcmludCgiSW50NDgiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgVmFsdWVGb3JtYXRTdHJpY3RJbnQ0ODoKKyAgICAgICAgb3V0LnByaW50KCJTdHJp
Y3RJbnQ0OCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1ZUZvcm1hdEJvb2xlYW46
CiAgICAgICAgIG91dC5wcmludCgiQm9vbGVhbiIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5oCShyZXZpc2lvbiAxNTU5
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgZW51bSBWYWx1ZUZvcm1hdCB7CiAgICAgSW52YWxp
ZFZhbHVlRm9ybWF0LAogICAgIFZhbHVlRm9ybWF0SW50MzIsCiAgICAgVmFsdWVGb3JtYXRVSW50
MzIsCisgICAgVmFsdWVGb3JtYXRJbnQ0OCwKKyAgICBWYWx1ZUZvcm1hdFN0cmljdEludDQ4LAog
ICAgIFZhbHVlRm9ybWF0Qm9vbGVhbiwKICAgICBWYWx1ZUZvcm1hdEpTVmFsdWUsCiAgICAgVmFs
dWVGb3JtYXREb3VibGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVT
b3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFs
dWVTb3VyY2UuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFZhbHVlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOSBAQCB2
b2lkIFZhbHVlU291cmNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAgICAgY2FzZSBJbnQzMklu
SlNTdGFjazoKICAgICAgICAgb3V0LnByaW50KCJJbnQzMkluSlNTdGFjayIpOwogICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAgb3V0LnByaW50KCJJbnQ0
OEluSlNTdGFjayIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBEb3VibGVJbkpTU3RhY2s6
CiAgICAgICAgIG91dC5wcmludCgiRG91YmxlSW5KU1N0YWNrIik7CiAgICAgICAgIHJldHVybjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVTb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlU291cmNlLmgJKHJldmlz
aW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVTb3VyY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBlbnVtIFZhbHVlU291cmNlS2luZCB7
CiAgICAgU291cmNlTm90U2V0LAogICAgIFZhbHVlSW5KU1N0YWNrLAogICAgIEludDMySW5KU1N0
YWNrLAorICAgIEludDQ4SW5KU1N0YWNrLAogICAgIERvdWJsZUluSlNTdGFjaywKICAgICBTb3Vy
Y2VJc0RlYWQsCiAgICAgSGF2ZU5vZGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9SZWdpc3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9SZWdpc3Rlci5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiAr
NzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHZQQygpIGNvbnN0
OwogICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGFzSW5saW5lQ2FsbEZyYW1lKCkgY29uc3Q7CiAg
ICAgICAgIGludDMyX3QgdW5ib3hlZEludDMyKCkgY29uc3Q7CisgICAgICAgIGludDY0X3QgdW5i
b3hlZEludDQ4KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgdW5ib3hlZEJvb2xlYW4oKSBjb25zdDsK
ICAgICAgICAgZG91YmxlIHVuYm94ZWREb3VibGUoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiB1
bmJveGVkQ2VsbCgpIGNvbnN0OwpAQCAtOTgsNiArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAg
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciBlbmNvZGVkVmFsdWU7CiAgICAgICAgICAgICBkb3VibGUg
bnVtYmVyOworICAgICAgICAgICAgaW50NjRfdCBpbnRlZ2VyOwogICAgICAgICB9IHU7CiAgICAg
fTsKIApAQCAtMTg1LDYgKzE4NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IHBheWxvYWQoKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIGludDY0X3QgUmVnaXN0ZXI6
OnVuYm94ZWRJbnQ0OCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdS5pbnRlZ2VyID4+
IDE2OworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBSZWdpc3Rlcjo6dW5ib3hlZEJv
b2xlYW4oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICEhcGF5bG9hZCgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCShyZXZpc2lvbiAx
NTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODMsNiArMzgzLDkgQEAgdm9pZCBBcmd1bWVudHM6OnRlYXJPZmZG
b3JJbmxpbmVDYWxsRnJhbQogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJ
bnQzMjoKICAgICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIobG9jYXRpb24tPnVuYm94ZWRJbnQz
MigpKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tB
c1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIobG9jYXRpb24tPnVu
Ym94ZWRJbnQ0OCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFscmVhZHlJ
bkpTU3RhY2tBc1VuYm94ZWRDZWxsOgogICAgICAgICAgICAgdmFsdWUgPSBsb2NhdGlvbi0+dW5i
b3hlZENlbGwoKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbmRleGluZ1R5cGUuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGluZ1R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MCwxMSArNTAsMTEgQEAgSW5kZXhpbmdUeXBlIGxlYXN0VXBwZXJCb3VuZE9mSW5k
ZXhpbmdUeQogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBpZiAo
aXNJbnQzMlNwZWN1bGF0aW9uKHR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIChpbmRleGluZ1R5
cGUgJiB+SW5kZXhpbmdTaGFwZU1hc2spIHwgSW50MzJTaGFwZTsKLSAgICAgICAgaWYgKGlzTnVt
YmVyU3BlY3VsYXRpb24odHlwZSkpCisgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlv
bih0eXBlKSkKICAgICAgICAgICAgIHJldHVybiAoaW5kZXhpbmdUeXBlICYgfkluZGV4aW5nU2hh
cGVNYXNrKSB8IERvdWJsZVNoYXBlOwogICAgICAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIH5J
bmRleGluZ1NoYXBlTWFzaykgfCBDb250aWd1b3VzU2hhcGU7CiAgICAgY2FzZSBBTExfRE9VQkxF
X0lOREVYSU5HX1RZUEVTOgotICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbih0eXBlKSkK
KyAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHR5cGUpKQogICAgICAgICAgICAg
cmV0dXJuIGluZGV4aW5nVHlwZTsKICAgICAgICAgcmV0dXJuIChpbmRleGluZ1R5cGUgJiB+SW5k
ZXhpbmdTaGFwZU1hc2spIHwgQ29udGlndW91c1NoYXBlOwogICAgIGNhc2UgQUxMX0NPTlRJR1VP
VVNfSU5ERVhJTkdfVFlQRVM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw2ICsxOTEsNyBAQCBw
dWJsaWM6CiAKICAgICBpbnQzMl90IGFzSW50MzIoKSBjb25zdDsKICAgICB1aW50MzJfdCBhc1VJ
bnQzMigpIGNvbnN0OworICAgIGludDY0X3QgYXNNYWNoaW5lSW50KCkgY29uc3Q7CiAgICAgZG91
YmxlIGFzRG91YmxlKCkgY29uc3Q7CiAgICAgYm9vbCBhc0Jvb2xlYW4oKSBjb25zdDsKICAgICBk
b3VibGUgYXNOdW1iZXIoKSBjb25zdDsKQEAgLTIwMiw2ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc051bGwoKSBjb25zdDsKICAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3Q7
CiAgICAgYm9vbCBpc0Jvb2xlYW4oKSBjb25zdDsKKyAgICBib29sIGlzTWFjaGluZUludCgpIGNv
bnN0OwogICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29u
c3Q7CiAgICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNTU5
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OTQsNiArNDk0LDM1IEBAIEFMV0FZU19JTkxJTkUgSlNDZWxs
KiBKU1ZhbHVlOjphc0NlbGwoKSAKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKK2lubGlu
ZSBib29sIEpTVmFsdWU6OmlzTWFjaGluZUludCgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW50MzIo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFpc051bWJlcigpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgZG91YmxlIG51bWJlciA9IGFzRG91YmxlKCk7CisgICAgaWYgKG51
bWJlciAhPSBudW1iZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbnQ2NF90IGFzSW50
NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIpOworICAgIGlmIChhc0ludDY0ICE9IG51
bWJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghYXNJbnQ2NCAmJiBzdGQ6OnNp
Z25iaXQobnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhc0ludDY0ID49
IChzdGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCA0NykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoYXNJbnQ2NCA8IC0oc3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgNDcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBpbnQ2NF90
IEpTVmFsdWU6OmFzTWFjaGluZUludCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFjaGluZUlu
dCgpKTsKKyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90Pihhc0RvdWJsZSgpKTsKK30KKwogaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBh
c0NlbGwoKS0+aXNTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTU5MjUpCisrKyBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA5LTE2
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBz
dXBwb3J0IEludDQ4IGZvciBsb2NhbCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTA2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1ByaW50U3RyZWFtLmg6CisgICAgICAgIChX
VEY6OlZhbHVlSWdub3JpbmdDb250ZXh0OjpWYWx1ZUlnbm9yaW5nQ29udGV4dCk6CisgICAgICAg
IChXVEY6OlZhbHVlSWdub3JpbmdDb250ZXh0OjpkdW1wKToKKyAgICAgICAgKFdURjo6aWdub3Jp
bmdDb250ZXh0KToKKwogMjAxMy0wOS0xNiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdlYktpdDEgYnVpbGQgYWZ0ZXIgcjE1NTkxMApJbmRl
eDogU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9QcmludFN0cmVhbS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvV1RGL3d0Zi9Q
cmludFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsMTEgKzM2MCwzNiBAQCBWYWx1ZUlu
Q29udGV4dDxULCBVPiBpbkNvbnRleHQoY29uc3QgVCYgCiAgICAgcmV0dXJuIFZhbHVlSW5Db250
ZXh0PFQsIFU+KHZhbHVlLCBjb250ZXh0KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KK2NsYXNzIFZhbHVlSWdub3JpbmdDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBWYWx1
ZUlnbm9yaW5nQ29udGV4dChjb25zdCBVJiB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKCZ2YWx1
ZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAorICAgIHsKKyAgICAgICAgVCBjb250ZXh0OworICAgICAgICBtX3ZhbHVlLT5kdW1wSW5D
b250ZXh0KG91dCwgJmNvbnRleHQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBVKiBt
X3ZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK1ZhbHVlSWdu
b3JpbmdDb250ZXh0PFQsIFU+IGlnbm9yaW5nQ29udGV4dChjb25zdCBVJiB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gVmFsdWVJZ25vcmluZ0NvbnRleHQ8VCwgVT4odmFsdWUpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpDaGFyYWN0ZXJEdW1wOwogdXNpbmcgV1RGOjpQb2lu
dGVyRHVtcDsKIHVzaW5nIFdURjo6UHJpbnRTdHJlYW07Cit1c2luZyBXVEY6Omlnbm9yaW5nQ29u
dGV4dDsKIHVzaW5nIFdURjo6aW5Db250ZXh0OwogdXNpbmcgV1RGOjpwb2ludGVyRHVtcDsKIAo=
</data>
<flag name="commit-queue"
          id="233979"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211854</attachid>
            <date>2013-09-16 19:05:49 -0700</date>
            <delta_ts>2013-09-16 22:53:43 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>207642</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1OTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwOSBA
QAorMjAxMy0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgc3VwcG9ydCBJbnQ0OCBmb3IgbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEwNjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWRkcyBJ
bnQ0OCBzdXBwb3J0IGZvciBsb2NhbCB2YXJpYWJsZXMgdG8gdGhlIERGRyBhbmQgRlRMLiBJdCdz
IGEgc3BlZWQtdXAgb24KKyAgICAgICAgcHJvZ3JhbXMgdGhhdCBoYXZlIGxvY2FsIGludDMyIG92
ZXJmbG93cyBidXQgd2hlcmUgYSBsYXJnZXIgaW50IHJlcHJlc2VudGF0aW9uIGNhbgorICAgICAg
ICBwcmV2ZW50IHVzIGZyb20gaGF2aW5nIHRvIGNvbnZlcnQgYWxsIHRoZSB3YXkgdXAgdG8gZG91
YmxlLgorICAgICAgICAKKyAgICAgICAgSXQncyBhIHNtYWxsIHNwZWVkLXVwIGZvciBub3cuIEJ1
dCB3ZSdyZSBqdXN0IHN1cHBvcnRpbmcgSW50NDggZm9yIGEgaGFuZGZ1bCBvZgorICAgICAgICBv
cGVyYXRpb25zIChhZGQsIHN1YiwgbXVsLCBuZWcsIGNvbXBhcmUsIGJpdG9wcywgdHlwZWQgYXJy
YXkgYWNjZXNzKSBhbmQgdGhpcyBsYXlzCisgICAgICAgIHRoZSBncm91bmR3b3JrIGZvciBhZGRp
bmcgSW50NDggdG8gSlNWYWx1ZSwgd2hpY2ggd2lsbCBwcm9iYWJseSBiZSBhIGJpZ2dlcgorICAg
ICAgICBzcGVlZC11cC4KKyAgICAgICAgCisgICAgICAgIFRoZSBiYXNpYyBhcHByb2FjaCBpczoK
KyAgICAgICAgCisgICAgICAgIC0gV2UgaGF2ZSBhIG5vdGlvbiBvZiBJbnQ0OCBpbiBvdXIgdHlw
ZXN5c3RlbS4gSW50NDggZG9lc24ndCBiZWxvbmcgdG8gQnl0ZWNvZGVUb3AKKyAgICAgICAgICBv
ciBIZWFwVG9wIC0gaS5lLiBpdCBkb2Vzbid0IGFyaXNlIGZyb20gSlNWYWx1ZXMuCisgICAgICAg
IAorICAgICAgICAtIERGRyB0cmVhdHMgSW50NDggYXMgYmVpbmcgcGFydCBvZiBpdHMgRnVsbFRv
cCBhbmQgd2lsbCB0cmVhdCBpdCBhcyBiZWluZyBhCisgICAgICAgICAgc3VidHlwZSBvZiBkb3Vi
bGUgdW5sZXNzIGluc3RydWN0ZWQgb3RoZXJ3aXNlLgorICAgICAgICAKKyAgICAgICAgLSBQcmVk
aWN0aW9uIHByb3BhZ2F0b3IgY3JlYXRlcyBJbnQ0OHMgd2hlbmV2ZXIgd2UgaGF2ZSBhIG5vZGUg
Z29pbmcgZG91Ymx5IGJ1dCBkdWUKKyAgICAgICAgICB0byBsYXJnZSB2YWx1ZXMgcmF0aGVyIHRo
YW4gZnJhY3Rpb25hbCB2YWx1ZXMsIGFuZCB0aGF0IG5vZGUgaXMga25vd24gdG8gYmUgYWJsZQor
ICAgICAgICAgIHRvIHByb2R1Y2UgSW50NDggbmF0aXZlbHkgaW4gdGhlIERGRyBiYWNrZW5kLgor
ICAgICAgICAKKyAgICAgICAgLSBGaXh1cCBwaGFzZSBjb252ZXJ0cyBlZGdlcyB0byBNYWNoaW5l
SW50VXNlcyBpbiBub2RlcyB0aGF0IGFyZSBrbm93biB0byBiZSBhYmxlCisgICAgICAgICAgdG8g
ZGVhbCB3aXRoIEludDQ4LCBhbmQgd2hlcmUgd2UgaGF2ZSBhIHN1YnR5cGUgb2YgSW50MzJ8SW50
NDggYXMgdGhlIHByZWRpY3RlZAorICAgICAgICAgIGlucHV0LgorICAgICAgICAKKyAgICAgICAg
LSBUaGUgREZHIGJhY2tlbmQgYW5kIEZUTCBMTFZNIElSIGxvd2VyaW5nIGhhdmUgdHdvIG5vdGlv
bnMgb2YgSW50NDhzIC0gb25lcyB0aGF0CisgICAgICAgICAgYXJlIGxlZnQtc2hpZnRlZCBieSAx
NiAoZ3JlYXQgZm9yIG92ZXJmbG93IGNoZWNrcykgYW5kIG9uZXMgdGhhdCBhcmUKKyAgICAgICAg
ICBzaWduLWV4dGVuZGVkLiBCb3RoIGJhY2tlbmRzIGtub3cgaG93IHRvIGNvbnZlcnQgYmV0d2Vl
biBJbnQ0OHMgYW5kIHRoZSBvdGhlcgorICAgICAgICAgIHJlcHJlc2VudGF0aW9ucy4KKworICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4Nl82NDo6cnNoaWZ0NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6bXVsNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YnJhbmNoTXVsNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNo
TmVnNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29udmVydEludDY0
VG9Eb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjppbXVscV9ycik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6Y3Z0c2kyc2RxX3JyKToKKyAgICAgICAgKiBieXRlY29kZS9EYXRhRm9ybWF0Lmg6CisgICAg
ICAgIChKU0M6OmRhdGFGb3JtYXRUb1N0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFu
ZHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Ojo6ZHVtcEluQ29udGV4dCk6CisgICAgICAgICog
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpkdW1wU3BlY3VsYXRp
b24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21WYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGht
ZXRpYyk6CisgICAgICAgIChKU0M6OmlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRp
Yyk6CisgICAgICAgIChKU0M6OmlzQnl0ZWNvZGVSZWFsTnVtYmVyU3BlY3VsYXRpb24pOgorICAg
ICAgICAoSlNDOjppc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpp
c0J5dGVjb2RlTnVtYmVyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQnl0ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAoSlNDOjppc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaDoKKyAg
ICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4
KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6aW5HUFIpOgorICAgICAgICAoSlNDOjpW
YWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2spOgorICAgICAgICAoSlNDOjpWYWx1ZVJl
Y292ZXJ5Ojppc0FscmVhZHlJbkpTU3RhY2spOgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5
OjpncHIpOgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5Ojp2aXJ0dWFsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5OjpkdW1wSW5Db250ZXh0KToKKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI6Om5lZWRzVHlwZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFj
dEludGVycHJldGVyOjpmaWx0ZXJCeVR5cGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6Ojo6ZXhlY3V0ZUVmZmVjdHMp
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y291bGRCZVR5cGUpOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmlzVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RWYWx1ZTo6dmFsaWRhdGVUeXBlKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
Ym94SW50NDgpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Q1NFUGhhc2U6OnB1cmVDU0UpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpn
ZXRCeVZhbExvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBl
cmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAg
ICAgKEpTQzo6REZHOjplbmFibGVJbnQ0OCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cFNldExvY2Fsc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmZpeHVwVW50eXBlZFNldExvY2Fsc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25Ob2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXhFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbmplY3RJ
bnQzMlRvRG91YmxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1w
dFRvTWFrZUludGVnZXJBZGQpOgorICAgICAgICAqIGRmZy9ERkdGbHVzaEZvcm1hdC5jcHA6Cisg
ICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdGbHVzaEZvcm1h
dC5oOgorICAgICAgICAoSlNDOjpERkc6OnJlc3VsdEZvcik6CisgICAgICAgIChKU0M6OkRGRzo6
dXNlS2luZEZvcik6CisgICAgICAgICogZGZnL0RGR0dlbmVyYXRpb25JbmZvLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R2VuZXJhdGlvbkluZm86OmluaXRJbnQ0OCk6CisgICAgICAgIChKU0M6OkRG
Rzo6R2VuZXJhdGlvbkluZm86OmluaXRTdHJpY3RJbnQ0OCk6CisgICAgICAgIChKU0M6OkRGRzo6
R2VuZXJhdGlvbkluZm86OmlzRm9ybWF0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0aW9u
SW5mbzo6aXNJbnQ0OCk6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdGlvbkluZm86OmlzU3Ry
aWN0SW50NDgpOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjpmaWxsSW50NDgp
OgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjpmaWxsU3RyaWN0SW50NDgpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1
bXApOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjphZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6bXVsU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6Om5lZ2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQpOgorICAgICAgICAqIGRmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3Ry
YWN0U3RhdGU6Om1lcmdlU3RhdGVBdFRhaWwpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb2RlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICog
ZGZnL0RGR01pbmlmaWVkTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OmJlbG9uZ3NJbk1pbmlm
aWVkR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkTm9kZTo6aGFzQ2hpbGQpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxk
U3BlY3VsYXRlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxh
dGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKToKKyAgICAgICAgKiBkZmcvREZHTm9kZUZsYWdzLmg6
CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9yd2Fy
ZFJld2lyaW5nU2VsZWN0aW9uU2NvcmUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGls
ZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6c3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0
aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJv
cGFnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6
ZG9Eb3VibGVWb3RpbmcpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTaWxlbnRSZWdpc3Rl
clNhdmVQbGFuLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50U2F2ZVBsYW5Gb3JHUFIpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbmNoKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBl
ZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhNdWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWFjaGluZUludCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlYWxOdW1iZXIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YW5SZXVzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmlzRmlsbGVkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNGaWxsZWREb3VibGUpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp1c2UpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjppc0tub3duSW50ZWdlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmlzS25vd25DZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6aXNLbm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmludDQ4UmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3Ry
aWN0SW50NDhSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjppbml0
Q29uc3RhbnRJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNJbnRl
Z2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YmV0dGVyVXNlU3RyaWN0
SW50NDgpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmF0aW9uSW5m
byk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlSW50NDhPcGVyYW5kOjpTcGVjdWxhdGVJ
bnQ0OE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludDQ4T3BlcmFuZDo6
flNwZWN1bGF0ZUludDQ4T3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlSW50
NDhPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnQ0OE9wZXJh
bmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludDQ4T3BlcmFuZDo6Z3By
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnQ0OE9wZXJhbmQ6OnVzZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kOjpTcGVjdWxhdGVTdHJp
Y3RJbnQ0OE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVN0cmljdEludDQ4
T3BlcmFuZDo6flNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQ6OnVzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kOjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJh
bmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZDo6
flNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQ6OnVzZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kOjpmb3JtYXQpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Ym94SW50NDgpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDQ4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50NDhDb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NDhCcmFu
Y2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRl
ckZvcik6CisgICAgICAgIChKU0M6OkRGRzo6aXNOdW1lcmljYWwpOgorICAgICAgICAqIGRmZy9E
RkdWYWx1ZVNvdXJjZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OmR1bXAp
OgorICAgICAgICAqIGRmZy9ERkdWYWx1ZVNvdXJjZS5oOgorICAgICAgICAoSlNDOjpERkc6OmRh
dGFGb3JtYXRUb1ZhbHVlU291cmNlS2luZCk6CisgICAgICAgIChKU0M6OkRGRzo6dmFsdWVTb3Vy
Y2VLaW5kVG9EYXRhRm9ybWF0KToKKyAgICAgICAgKEpTQzo6REZHOjpWYWx1ZVNvdXJjZTo6Zm9y
Rmx1c2hGb3JtYXQpOgorICAgICAgICAoSlNDOjpERkc6OlZhbHVlU291cmNlOjp2YWx1ZVJlY292
ZXJ5KToKKyAgICAgICAgKiBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmg6CisgICAgICAgIChK
U0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjpzaG91bGRVc2VEb3VibGVGb3JtYXRBY2NvcmRp
bmdUb1ZvdGUpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6Zmx1c2hG
b3JtYXQpOgorICAgICAgICAqIGZ0bC9GVExDQXJndW1lbnRHZXR0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkNBcmd1bWVudEdldHRlcjo6bG9hZE5leHRBbmRCb3gpOgorICAgICAgICAqIGZ0
bC9GVExDQXJndW1lbnRHZXR0ZXIuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMRXhp
dFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OmR1bXBJbkNvbnRleHQp
OgorICAgICAgICAqIGZ0bC9GVExFeGl0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0
VmFsdWU6OmluSlNTdGFja0FzSW50NDgpOgorICAgICAgICAqIGZ0bC9GVExJbnRyaW5zaWNSZXBv
c2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y3JlYXRlUGhpVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVXBzaWxvbik6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQaGkpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlU2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUFyaXRoU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFy
aXRoTmVnYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBh
cmVFcSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDb21wYXJl
U3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29t
cGFyZUxlc3MpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29t
cGFyZUxlc3NFcSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVD
b21wYXJlR3JlYXRlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVDb21wYXJlR3JlYXRlckVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
bG93SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dJbnQ0OCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd1N0cmljdEludDQ4KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YmV0dGVyVXNlU3RyaWN0SW50NDgpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpiZXN0SW50NDhLaW5kKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6b3Bwb3NpdGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpJbnQ0OHM6Om9wZXJhdG9yW10pOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpsb3dXaGljaGV2ZXJJbnQ0OCk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd1doaWNoZXZlckludDQ4cyk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd09wcG9zaW5nSW50NDhzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6bG93Q2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdU
b0xMVk06Omxvd0Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjps
b3dEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dKU1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3RyaWN0SW50NDhUb0ludDMy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3RyaWN0SW50NDhUb0RvdWJs
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnN0cmljdEludDQ4VG9KU1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0SW50NDhXaXRoU3Ry
aWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzdHJpY3RJbnQ0
OFRvSW50NDgpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjppbnQ0OFRvU3Ry
aWN0SW50NDgpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVS
ZWFsTnVtYmVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aW5pdGlhbGl6
ZU9TUkV4aXRTdGF0ZUZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6ZW1pdE9TUkV4aXRDYWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
YWRkRXhpdEFyZ3VtZW50Rm9yTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OnNldEludDQ4KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0U3Ry
aWN0SW50NDgpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGRXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpzdWJXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjptdWxXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgICogZnRsL0ZUTFZhbHVlRm9ybWF0
LmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZnRsL0ZUTFZh
bHVlRm9ybWF0Lmg6CisgICAgICAgICogZnRsL0ZUTFZhbHVlU291cmNlLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpWYWx1ZVNvdXJjZTo6ZHVtcCk6CisgICAgICAgICogZnRsL0ZUTFZhbHVlU291
cmNlLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaDoKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXI6OnVuYm94ZWRJbnQ0OCk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3Bw
OgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnRlYXJPZmZGb3JJbmxpbmVDYWxsRnJhbWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bGVhc3RV
cHBlckJvdW5kT2ZJbmRleGluZ1R5cGVBbmRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pT
VmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OmlzTWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmFz
TWFjaGluZUludCk6CisKIDIwMTMtMDktMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJn
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrZWRCbG9ja3Mgc2hvdWxkbid0IGJlIHB1dCBpbiBB
bGxvY2F0ZWQgc3RhdGUgaWYgdGhleSBkaWRuJ3QgcHJvZHVjZSBhIEZyZWVMaXN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw2ICsy
MzAsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zaGxxX2k4cihpbW0ubV92YWx1
ZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgcnNoaWZ0NjQoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2FycV9pOHIo
aW1tLm1fdmFsdWUsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIG11bDY0KFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5pbXVs
cV9ycihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIG5lZzY0KFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfcihkZXN0KTsKQEAgLTUzMCw2
ICs1NDAsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Mo
eDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hNdWw2NChSZXN1
bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG11bDY0KHNyYywgZGVzdCk7CisgICAgICAgIGlmIChjb25kICE9IE92ZXJmbG93
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHFfcnIoZGVzdCwgZGVzdCk7CisgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKKyAgICB9
CisKICAgICBKdW1wIGJyYW5jaFN1YjY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWI2NChpbW0sIGRlc3Qp
OwpAQCAtNTQ4LDYgKzU2NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hTdWI2
NChjb25kLCBzcmMyLCBkZXN0KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaE5lZzY0KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBuZWc2
NChzcmNEZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOworICAgIH0KKwogICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRp
YmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRo
aXMpOwpAQCAtNTk1LDYgKzYxOSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0
ZXIpLCBtYXNrKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbnZlcnRJbnQ2NFRvRG91YmxlKFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmN2dHNpMnNkcV9ycihzcmMsIGRlc3QpOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzRmxvYXRpbmdQb2ludCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAvLyBTZWUgY29tbWVudCBv
biBNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpCiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSB7IHJldHVybiB0
cnVlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyOSwxMyArODI5LDIwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICAg
ICAgfQogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIENQVShYODZfNjQpCiAKICAgICB2b2lkIGlt
dWxsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3QsIHNyYyk7CiAgICAgfQogCisj
aWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGltdWxxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9JTVVM
X0d2RXYsIGRzdCwgc3JjKTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZv
aWQgaW11bGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3Qs
IGJhc2UsIG9mZnNldCk7CkBAIC0xNjExLDYgKzE2MTgsMTQgQEAgcHVibGljOgogICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNJMlNEX1ZzZEVkLCAoUmVnaXN0ZXJJRClkc3Qs
IHNyYyk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGN2dHNpMnNkcV9ycihS
ZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9DVlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBzcmMpOworICAgIH0KKyNlbmRp
ZgorCiAgICAgdm9pZCBjdnRzaTJzZF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhN
TVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9T
U0VfRjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1h
dC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGF0YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiBlbnVtIERhdGFGb3JtYXQgewogICAgIERhdGFGb3JtYXROb25lID0gMCwKICAgICBE
YXRhRm9ybWF0SW50MzIgPSAxLAotICAgIERhdGFGb3JtYXREb3VibGUgPSAyLAotICAgIERhdGFG
b3JtYXRCb29sZWFuID0gMywKLSAgICBEYXRhRm9ybWF0Q2VsbCA9IDQsCi0gICAgRGF0YUZvcm1h
dFN0b3JhZ2UgPSA1LAorICAgIERhdGFGb3JtYXRJbnQ0OCA9IDIsIC8vIEludDQ4J3MgYXJlIGxl
ZnQtc2hpZnRlZCBieSAxNiBieSBkZWZhdWx0LgorICAgIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA9
IDMsIC8vICJTdHJpY3QiIEludDQ4IG1lYW5zIGl0J3Mgbm90IHNoaWZ0ZWQuCisgICAgRGF0YUZv
cm1hdERvdWJsZSA9IDQsCisgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAorICAgIERhdGFGb3Jt
YXRDZWxsID0gNiwKKyAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCiAgICAgRGF0YUZvcm1hdEpT
ID0gOCwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRJ
bnQzMiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0
RG91YmxlLApAQCAtNjQsNiArNjYsMTAgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRU
b1N0cmluZyhEYQogICAgICAgICByZXR1cm4gIk5vbmUiOwogICAgIGNhc2UgRGF0YUZvcm1hdElu
dDMyOgogICAgICAgICByZXR1cm4gIkludDMyIjsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoK
KyAgICAgICAgcmV0dXJuICJJbnQ0OCI7CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6
CisgICAgICAgIHJldHVybiAiU3RyaWN0SW50NDgiOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJs
ZToKICAgICAgICAgcmV0dXJuICJEb3VibGUiOwogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzSW5saW5l
cy5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3BlcmFuZHNJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBP
cGVyYW5kczxULCBUcmFpdHM+OjpkdW1wSW5Db250ZXh0KAogICAgIGZvciAoc2l6ZV90IGxvY2Fs
SW5kZXggPSAwOyBsb2NhbEluZGV4IDwgbnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbEluZGV4KSB7
CiAgICAgICAgIGlmIChUcmFpdHM6OmlzRW1wdHlGb3JEdW1wKGxvY2FsKGxvY2FsSW5kZXgpKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwgbG9j
YWxJbmRleCwgIjoiLCBpbkNvbnRleHQobG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgbG9jYWxJbmRleCwgIjoiLCBpbkNvbnRleHQo
bG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNp
b24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsMTMgQEAgdm9pZCBkdW1wU3Bl
Y3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dCwgUwogICAgIH0KICAgICAKICAgICBpZiAodmFsdWUg
JiBTcGVjSW50MzIpCi0gICAgICAgIG15T3V0LnByaW50KCJJbnQiKTsKKyAgICAgICAgbXlPdXQu
cHJpbnQoIkludDMyIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAor
ICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQ0OCkKKyAgICAgICAgbXlPdXQucHJpbnQoIkludDQ4Iik7
CisgICAgICAgIAogICAgIGlmICgodmFsdWUgJiBTcGVjRG91YmxlKSA9PSBTcGVjRG91YmxlKQog
ICAgICAgICBteU91dC5wcmludCgiRG91YmxlIik7CiAgICAgZWxzZSB7CkBAIC0xNjYsMTEgKzE2
OSw2IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXQsIFMKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICh2
YWx1ZSAmIFNwZWNJbnQ0OCkKLSAgICAgICAgICAgIG15T3V0LnByaW50KCJJbnQ0OCIpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgICAgICAKICAgICAgICAg
aWYgKHZhbHVlICYgU3BlY05vbkludEFzRG91YmxlKQogICAgICAgICAgICAgbXlPdXQucHJpbnQo
Ik5vbmludGFzZG91YmxlIik7CiAgICAgICAgIGVsc2UKQEAgLTI0Nyw5ICsyNDUsMTEgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9BYmJyZXZpYQogICAgICAgICByZXR1cm4gIjxJ
bnQ0OEFzRG91YmxlPiI7CiAgICAgaWYgKGlzSW50NDhTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkK
ICAgICAgICAgcmV0dXJuICI8SW50NDg+IjsKKyAgICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCisgICAgICAgIHJldHVybiAiPE1hY2hpbmVJbnQ+IjsKICAgICBpZiAo
aXNEb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8RG91Ymxl
PiI7Ci0gICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgaWYgKGlz
RnVsbE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxOdW1i
ZXI+IjsKICAgICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAg
IHJldHVybiAiPEJvb2xlYW4+IjsKQEAgLTM0NSwxNiArMzQ1LDExIEBAIFNwZWN1bGF0ZWRUeXBl
IHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmEKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKICAg
ICBpZiAodmFsdWUuaXNEb3VibGUoKSkgewogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUu
YXNOdW1iZXIoKTsKLSAgICAgICAgaWYgKG51bWJlciA9PSBudW1iZXIpIHsKLSAgICAgICAgICAg
IGludDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7Ci0gICAgICAg
ICAgICBpZiAoYXNJbnQ2NCA9PSBudW1iZXIgJiYgKGFzSW50NjQgfHwgIXN0ZDo6c2lnbmJpdChu
dW1iZXIpKQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPCAoc3RhdGljX2Nhc3Q8aW50NjRf
dD4oMSkgPDwgNDcpCi0gICAgICAgICAgICAgICAgJiYgYXNJbnQ2NCA+PSAtKHN0YXRpY19jYXN0
PGludDY0X3Q+KDEpIDw8IDQ3KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTcGVjSW50NDhB
c0RvdWJsZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNE
b3VibGU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47CisgICAgICAg
IGlmIChudW1iZXIgIT0gbnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47
CisgICAgICAgIGlmICh2YWx1ZS5pc01hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBT
cGVjSW50NDhBc0RvdWJsZTsKKyAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAg
ICB9CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25G
cm9tQ2VsbCh2YWx1ZS5hc0NlbGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDQ2ICszOCw0OCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cnVjdHVyZTsKIAog
dHlwZWRlZiB1aW50MzJfdCBTcGVjdWxhdGVkVHlwZTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjTm9uZSAgICAgICAgICAgICAgPSAweDAwMDAwMDAwOyAvLyBXZSBkb24ndCBrbm93
IGFueXRoaW5nIHlldC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmpl
Y3QgICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2JqZWN0
Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICA9IDB4
MDAwMDAwMDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQXJyYXkuCi1zdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgID0gMHgwMDAwMDAwODsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAgICAgID0gMHgwMDAwMDAxMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAgID0gMHgw
MDAwMDAyMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBz
dWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMkFycmF5ICAg
ICAgICA9IDB4MDAwMDAwNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWlu
dDhBcnJheSAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDhB
cnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ID0gMHgwMDAwMDEwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGFuIFVpbnQ4Q2xhbXBlZEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDE2QXJyYXkgICAgICAgPSAweDAwMDAwMjAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2Vz
Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MzJBcnJheSAgICAgICA9IDB4
MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBvciBvbmUgb2YgaXRz
IHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Zsb2F0MzJBcnJh
eSAgICAgID0gMHgwMDAwMDgwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9y
IG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
RmxvYXQ2NEFycmF5ICAgICAgPSAweDAwMDAxMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWlu
dDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNUeXBlZEFycmF5VmlldyAgICA9IFNwZWNJbnQ4QXJyYXkgfCBTcGVjSW50MTZB
cnJheSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkgfCBTcGVjVWludDhDbGFtcGVk
QXJyYXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJyYXkgfCBTcGVjRmxvYXQzMkFy
cmF5IHwgU3BlY0Zsb2F0NjRBcnJheTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
QXJndW1lbnRzICAgICAgICAgPSAweDAwMDAyMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gQXJn
dW1lbnRzIG9iamVjdC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nT2Jq
ZWN0ICAgICAgPSAweDAwMDA0MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTdHJpbmdPYmplY3Qu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgID0gMHgw
MDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmpl
Y3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY09iamVjdCAgICAgICAgICAgID0gMHgwMDAwZmZmZjsgLy8gQml0bWFzayB1c2VkIGZvciB0
ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nSWRlbnQgICAgICAgPSAweDAwMDEwMDAwOyAvLyBJdCdz
IGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3MgYW4gaWRlbnRpZmllci4KLXN0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nVmFyICAgICAgICAgPSAweDAwMDIwMDAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAgICAgICAgICAgID0gMHgw
MDAzMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCi1zdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0NlbGxPdGhlciAgICAgICAgID0gMHgwMDA0MDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNDZWxsIGJ1dCBub3QgYSBzdWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVm
aW5pdGVseSBub3QgYSBKU1N0cmluZy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
Q2VsbCAgICAgICAgICAgICAgPSAweDAwMDdmZmZmOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Nl
bGwuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyICAgICAgICAgICAgID0g
MHgwMDgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgotc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNJbnQ0OCAgICAgICAgICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBJbnQ0OCwgaXQncyBpbnNpZGUgYSBkb3VibGUsIGJ1dCBpdCBkb2Vzbid0
IG5lZWQgdG8gYmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hpbmVJbnQg
ICAgICAgID0gMHgwMTgwMDAwMDsgLy8gSXQncyBzb21ldGhpbmcgdGhhdCB3ZSBjYW4gZG8gbWFj
aGluZSBpbnQgYXJpdGhtZXRpYyBvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
SW50NDhBc0RvdWJsZSAgICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50
NDggYW5kIGl0J3MgaW5zaWRlIGEgZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNJbnRlZ2VyICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBz
b21lIGtpbmQgb2YgaW50ZWdlci4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9u
SW50QXNEb3VibGUgICAgPSAweDA0MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm90IGFuIElu
dDQ4IGJ1dCBpdCdzIGEgcmVhbCBudW1iZXIgYW5kIGl0J3MgYSBkb3VibGUuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgID0gMHgwNzAwMDAwMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RvdWJsZU5hTiAgICAgICAgID0gMHgwODAwMDAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IGEgTmFOLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAg
ICAgICA9IDB4MGYwMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3Vi
bGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iZXIgICAgICAgID0g
MHgwNzgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVSZWFsLgotc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAgICAgICAgICA9IDB4MGY4MDAw
MDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEJvb2xlYW4uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090
aGVyICAgICAgICAgICAgID0gMHgyMDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vbmUgb2Yg
dGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAg
ICAgICA9IDB4M2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4NDAwMDAwMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQg
Y2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0Z1bGxUb3AgICAgICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUg
YWJvdmUgcGx1cyBhbnl0aGluZyB0aGUgREZHIGNob29zZXMuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY05vbmUgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDA7IC8vIFdlIGRvbid0
IGtub3cgYW55dGhpbmcgeWV0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGaW5h
bE9iamVjdCAgICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFs
T2JqZWN0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAg
ICAgPSAweDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICAgPSAweDAwMDAwMDA4OyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4K
K3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50OEFycmF5ICAgICAgICAgID0gMHgw
MDAwMDAxMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1
YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAg
ICAgICA9IDB4MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50
MzJBcnJheSAgICAgICAgID0gMHgwMDAwMDA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMy
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNVaW50OEFycmF5ICAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRl
bHkgYW4gVWludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ICA9IDB4MDAwMDAxMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNz
ZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgICA9
IDB4MDAwMDAyMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2Yg
aXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQzMkFy
cmF5ICAgICAgICA9IDB4MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0Zsb2F0MzJBcnJheSAgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBh
biBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Zsb2F0NjRBcnJheSAgICAgICA9IDB4MDAwMDEwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1R5cGVkQXJyYXlWaWV3ICAgICA9IFNwZWNJbnQ4
QXJyYXkgfCBTcGVjSW50MTZBcnJheSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkg
fCBTcGVjVWludDhDbGFtcGVkQXJyYXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJy
YXkgfCBTcGVjRmxvYXQzMkFycmF5IHwgU3BlY0Zsb2F0NjRBcnJheTsKK3N0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjQXJndW1lbnRzICAgICAgICAgID0gMHgwMDAwMjAwMDsgLy8gSXQn
cyBkZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBvYmplY3QuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY1N0cmluZ09iamVjdCAgICAgICA9IDB4MDAwMDQwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIFN0cmluZ09iamVjdC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2Jq
ZWN0T3RoZXIgICAgICAgID0gMHgwMDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVj
dCBidXQgbm90IEpTRmluYWxPYmplY3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICA9IDB4MDAwMGZmZmY7
IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRp
Y3Rpb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAg
ICA9IDB4MDAwMTAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBh
biBpZGVudGlmaWVyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIg
ICAgICAgICAgPSAweDAwMDIwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5k
IGl0J3Mgbm90IGFuIGlkZW50aWZpZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y1N0cmluZyAgICAgICAgICAgICA9IDB4MDAwMzAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpT
U3RyaW5nLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAgICAg
ICAgPSAweDAwMDQwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBhIHN1
YmNsYXNzIG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgPSAweDAwMDdmZmZm
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0ludDMyICAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBJbnQzMi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NDggICAgICAg
ICAgICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4IGFuZCB3ZSBp
bnRlbmQgaXQgdG8gdW5ib3ggaXQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01h
Y2hpbmVJbnQgICAgICAgICA9IDB4MDE4MDAwMDA7IC8vIEl0J3Mgc29tZXRoaW5nIHRoYXQgd2Ug
Y2FuIGRvIG1hY2hpbmUgaW50IGFyaXRobWV0aWMgb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0ludDQ4QXNEb3VibGUgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBzb21lIGtpbmQgb2YgaW50ZWdlci4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjTm9uSW50QXNEb3VibGUgICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IG5vdCBhbiBJbnQ0OCBidXQgaXQncyBhIHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91Ymxl
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICAgPSAw
eDA2MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KK3N0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlTmFOICAgICAgICAgID0gMHgwODAwMDAwMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNEb3VibGUgICAgICAgICAgICAgPSAweDBlMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1O
YU4gb3IgYSBOYU4gZG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRl
Y29kZVJlYWxOdW1iZXIgPSAweDA2ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBh
IERvdWJsZVJlYWwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxSZWFsTnVt
YmVyICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91Ymxl
UmVhbCwgb3IgYSBJbnQ0OC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNv
ZGVOdW1iZXIgICAgID0gMHgwZTgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBE
b3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxOdW1iZXIgICAgICAg
ICA9IDB4MGY4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ0OCwgb3IgYSBEb3Vi
bGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAgICA9
IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICA9IDB4MjAwMDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBub25lIG9mIHRoZSBhYm92ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgID0gMHgzZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFu
eSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgorc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgPSAweDdlZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55
IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NDguCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBi
ZSBhbnkgb2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgogCiB0eXBl
ZGVmIGJvb2wgKCpTcGVjdWxhdGVkVHlwZUNoZWNrZXIpKFNwZWN1bGF0ZWRUeXBlKTsKIApAQCAt
MjQwLDcgKzI0Miw3IEBAIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGUK
IAogaW5saW5lIGJvb2wgaXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhTcGVjdWxhdGVk
VHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIFNwZWNEb3VibGUpOworICAgIHJl
dHVybiAhKHZhbHVlICYgKFNwZWNEb3VibGUgfCBTcGVjSW50NDgpKTsKIH0KIAogaW5saW5lIGJv
b2wgaXNJbnQzMlNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKQEAgLTI2NSw3ICsyNjcsNyBAQCBpbmxpbmUgYm9vbCBpc01hY2hpbmVJbnRTcGVjdWxhdGlv
bkV4cGVjCiAKIGlubGluZSBib29sIGlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRp
YyhTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVjRG91
YmxlICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRG91Ymxl
KTsKIH0KIAogaW5saW5lIGJvb2wgaXNJbnQ0OEFzRG91YmxlU3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCkBAIC0yOTMsMTkgKzI5NSwzNCBAQCBpbmxpbmUgYm9vbCBpc0RvdWJsZVNw
ZWN1bGF0aW9uRm9yQXJpdGhtCiAgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0RvdWJsZSk7CiB9
CiAKLWlubGluZSBib29sIGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlKQoraW5saW5lIGJvb2wgaXNCeXRlY29kZVJlYWxOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxh
dGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQnl0ZWNvZGVSZWFs
TnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNCeXRlY29kZVJlYWxOdW1iZXIpOworfQorCitpbmxp
bmUgYm9vbCBpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUp
Cit7CisgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0Z1bGxSZWFsTnVtYmVyKSAmJiAhKHZhbHVl
ICYgflNwZWNGdWxsUmVhbE51bWJlcik7Cit9CisKK2lubGluZSBib29sIGlzQnl0ZWNvZGVOdW1i
ZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFs
dWUgJiBTcGVjQnl0ZWNvZGVOdW1iZXIpICYmICEodmFsdWUgJiB+U3BlY0J5dGVjb2RlTnVtYmVy
KTsKK30KKworaW5saW5lIGJvb2wgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY1JlYWxOdW1iZXIpICYmICEo
dmFsdWUgJiB+U3BlY1JlYWxOdW1iZXIpOworICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNGdWxs
TnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNGdWxsTnVtYmVyKTsKIH0KIAotaW5saW5lIGJvb2wg
aXNOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlz
Qnl0ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY051bWJlcikgJiYgISh2YWx1ZSAm
IH5TcGVjTnVtYmVyKTsKKyAgICByZXR1cm4gaXNCeXRlY29kZU51bWJlclNwZWN1bGF0aW9uKHZh
bHVlICYgflNwZWNPdGhlcik7CiB9CiAKLWlubGluZSBib29sIGlzTnVtYmVyU3BlY3VsYXRpb25F
eHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNGdWxs
TnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewotICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7Cisg
ICAgcmV0dXJuIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CiB9
CiAKIGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVy
eS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VmFsdWVSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTUgQEAgZW51bSBW
YWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBBbHJlYWR5SW5KU1N0YWNrLAogICAgIC8vIEl0
J3MgYWxyZWFkeSBpbiB0aGUgc3RhY2sgYnV0IHVuYm94ZWQuCiAgICAgQWxyZWFkeUluSlNTdGFj
a0FzVW5ib3hlZEludDMyLAorICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCwKICAg
ICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNV
bmJveGVkQm9vbGVhbiwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlLAogICAg
IC8vIEl0J3MgaW4gYSByZWdpc3Rlci4KICAgICBJbkdQUiwKICAgICBVbmJveGVkSW50MzJJbkdQ
UiwKKyAgICBVbmJveGVkSW50NDhJbkdQUiwKKyAgICBVbmJveGVkU3RyaWN0SW50NDhJbkdQUiwK
ICAgICBVbmJveGVkQm9vbGVhbkluR1BSLAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgSW5Q
YWlyLApAQCAtNjAsNiArNjMsOCBAQCBlbnVtIFZhbHVlUmVjb3ZlcnlUZWNobmlxdWUgewogICAg
IERpc3BsYWNlZEluSlNTdGFjaywKICAgICAvLyBJdCdzIGluIHRoZSBzdGFjaywgYXQgYSBkaWZm
ZXJlbnQgbG9jYXRpb24sIGFuZCBpdCdzIHVuYm94ZWQuCiAgICAgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2ssCisgICAgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2ssCisgICAgU3RyaWN0SW50NDhEaXNw
bGFjZWRJbkpTU3RhY2ssCiAgICAgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrLAogICAgIENlbGxE
aXNwbGFjZWRJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjaywKQEAgLTk1
LDYgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAorICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0
OCgpCisgICAgeworICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0
Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpCiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5
IHJlc3VsdDsKQEAgLTEyNSw2ICsxMzcsMTAgQEAgcHVibGljOgogICAgICAgICBWYWx1ZVJlY292
ZXJ5IHJlc3VsdDsKICAgICAgICAgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKQog
ICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDMySW5HUFI7CisgICAg
ICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAg
cmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDQ4SW5HUFI7CisgICAgICAgIGVsc2UgaWYg
KGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0
Lm1fdGVjaG5pcXVlID0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFI7CiAgICAgICAgIGVsc2UgaWYg
KGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEJvb2xlYW4pCiAgICAgICAgICAgICByZXN1bHQubV90
ZWNobmlxdWUgPSBVbmJveGVkQm9vbGVhbkluR1BSOwogICAgICAgICBlbHNlCkBAIC0xNjgsNiAr
MTg0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDMy
RGlzcGxhY2VkSW5KU1N0YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlx
dWUgPSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OgorICAgICAgICAgICAg
cmVzdWx0Lm1fdGVjaG5pcXVlID0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIERhdGFGb3JtYXREb3Vi
bGU6CiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBEb3VibGVEaXNwbGFjZWRJbkpT
U3RhY2s7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyOSw2ICsyNTMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0
YWNrOgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAgICAgIGNhc2UgQWxy
ZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFj
a0FzVW5ib3hlZEJvb2xlYW46CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hl
ZERvdWJsZToKQEAgLTI0MCw3ICsyNjUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlJlZ2lzdGVySUQgZ3ByKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Rl
Y2huaXF1ZSA9PSBJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBt
X3RlY2huaXF1ZSA9PSBVbmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQz
MkluR1BSKTsKKyAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5p
cXVlID09IFVuYm94ZWRJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFu
SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5i
b3hlZEludDQ4SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFIp
OwogICAgICAgICByZXR1cm4gbV9zb3VyY2UuZ3ByOwogICAgIH0KICAgICAKQEAgLTI2Niw3ICsy
OTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rl
cigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2Vk
SW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1f
dGVjaG5pcXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJ
bkpTU3RhY2spOworICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0
YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5p
cXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlz
cGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3Rh
Y2sgfHwgbV90ZWNobmlxdWUgPT0gSW50NDhEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlx
dWUgPT0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gbV9z
b3VyY2UudmlydHVhbFJlZzsKICAgICB9CiAgICAgCkBAIC0yODUsNiArMzEwLDkgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAg
ICAgIG91dC5wcmludGYoIihpbnQzMikiKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Y2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAgICAgICAgICBvdXQucHJp
bnRmKCIoaW50NDgpIik7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoY2VsbCki
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwMCw2ICszMjgsMTIgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiaW50
MzIoJSVyJWQpIiwgZ3ByKCkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVu
Ym94ZWRJbnQ0OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50ZigiaW50NDgoJSVyJWQpIiwg
Z3ByKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJ
bnQ0OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50Zigic3RyaWN0SW50NDgoJSVyJWQpIiwg
Z3ByKCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFu
SW5HUFI6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJib29sKCUlciVkKSIsIGdwcigpKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTMyMCw2ICszNTQsMTIgQEAgcHVibGljOgogICAgICAgICBj
YXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKmlu
dDMyKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgY2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG91dC5wcmludGYo
IippbnQ0OCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGNhc2UgU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIqc3RyaWN0SW50NDgoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAg
ICAgICAgICAgIG91dC5wcmludGYoIipkb3VibGUoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG5lZWRzVHlwZUNo
ZWNrKE5vZGUqIG5vZGUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBmb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH50eXBlc1Bhc3NlZFRocm91
Z2g7CisgICAgICAgIHJldHVybiAhZm9yTm9kZShub2RlKS5pc1R5cGUodHlwZXNQYXNzZWRUaHJv
dWdoKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBuZWVkc1R5cGVDaGVjayhFZGdlIGVkZ2UsIFNw
ZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKQEAgLTE2OCw3ICsxNjgsNyBAQCBwcml2
YXRlOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJCeVR5cGUoTm9kZSogbm9kZSwgRWRn
ZSYgZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIEFic3RyYWN0VmFs
dWUmIHZhbHVlID0gZm9yTm9kZShlZGdlKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fdHlwZSAmIH50
eXBlKSB7CisgICAgICAgIGlmICghdmFsdWUuaXNUeXBlKHR5cGUpKSB7CiAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgZWRnZS5zZXRQcm9vZlN0YXR1cyhO
ZWVkc0NoZWNrKTsKICAgICAgICAgfSBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZp
c2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2ICszMTAsMjkgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAorICAgIGNhc2UgSW50NDhUb0RvdWJsZTogeworICAgICAgICBKU1ZhbHVl
IGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNo
aWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGNoaWxkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAg
ICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZTogeworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxk
LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGU7CisgICAgICAgIGlmICh0eXBlICYgU3Bl
Y0ludDQ4KQorICAgICAgICAgICAgdHlwZSA9ICh0eXBlIHwgU3BlY0ludDMyIHwgU3BlY0ludDQ4
QXNEb3VibGUpICYgflNwZWNJbnQ0ODsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5
cGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6
CiAgICAgY2FzZSBBcml0aEFkZDogewogICAgICAgICBKU1ZhbHVlIGxlZnQgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwpAQCAtMzI0LDkgKzM0NywxNSBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2Fu
VHJ1bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAg
IG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJ
bnQ0OCk7CisgICAgICAgICAgICBpZiAoIWZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShT
cGVjSW50MzIpCisgICAgICAgICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlz
VHlwZShTcGVjSW50MzIpKQorICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgICAg
ICBpZiAoaXNSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90
eXBlKQotICAgICAgICAgICAgICAgICYmIGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUo
bm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCisgICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51bWJl
clNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKKyAgICAgICAgICAg
ICAgICAmJiBpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDIo
KSkubV90eXBlKSkKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0Rv
dWJsZVJlYWwpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTMzNCw3ICszNjMsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChub2RlLT5vcCgpID09IFZhbHVlQWRkKTsKICAgICAgICAgICAgIGNs
b2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwotICAgICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNTdHJpbmcgfCBTcGVjSW50MzIgfCBTcGVjTnVtYmVy
KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjU3RyaW5nIHwgU3BlY0J5
dGVjb2RlTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwpAQCAtMzU4LDYgKzM4NywxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5v
ZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQo
dHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgor
ICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CisgICAgICAgICAg
ICBpZiAoIWZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjSW50MzIpCisgICAgICAg
ICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjSW50MzIpKQor
ICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM4MCw2ICs0MTUsMTMg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAg
aWYgKCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkK
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KSkKKyAgICAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9y
ZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
TnVtYmVyVXNlOgogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC00MDQsOSArNDQ2LDEzIEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB8fCAhYnl0ZWNvZGVD
YW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0ludDQ4KTsKKyAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgICAgICBpZiAoaXNS
ZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKQotICAg
ICAgICAgICAgICAgIHx8IGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hp
bGQyKCkpLm1fdHlwZSkpCisgICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0
aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKKyAgICAgICAgICAgICAgICB8fCBp
c0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBl
KSkKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZVJlYWwp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjRG91YmxlKTsKQEAgLTU4Niw3ICs2MzIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24oYWJzdHJhY3RDaGlsZC5tX3R5cGUp
KSB7CisgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihhYnN0cmFjdENoaWxkLm1f
dHlwZSkpIHsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIHZtLT5zbWFsbFN0cmluZ3Mu
bnVtYmVyU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTgxMSw2
ICs4NTcsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgogICAgICAgICAgICAgaWYgKG5vZGUtPnNob3Vs
ZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNJbnQzMik7CisgICAgICAgICAgICBlbHNlIGlmIChlbmFibGVJbnQ0OCgpICYmIG5vZGUt
PnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUoU3BlY0ludDQ4KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTg2Myw3ICs5MTEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7
CiAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwot
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY051bWJlcik7CisgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQb3A6CkBAIC05MzQsOCArOTgyLDggQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBOQi4gVGhlIG1v
cmUgY2Fub25pY2FsIHdheSBvZiB3cml0aW5nIHRoaXMgd291bGQgaGF2ZSBiZWVuOgogICAgICAg
ICAvLwogICAgICAgICAvLyBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKLSAgICAgICAgLy8gaWYgKGRl
c3RpbmF0aW9uLm1fdHlwZSAmICEoU3BlY051bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVh
bikpIHsKLSAgICAgICAgLy8gICAgIGRlc3RpbmF0aW9uLmZpbHRlcihTcGVjTnVtYmVyIHwgU3Bl
Y1N0cmluZyB8IFNwZWNCb29sZWFuKTsKKyAgICAgICAgLy8gaWYgKGRlc3RpbmF0aW9uLm1fdHlw
ZSAmICEoU3BlY0Z1bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4pKSB7CisgICAg
ICAgIC8vICAgICBkZXN0aW5hdGlvbi5maWx0ZXIoU3BlY0Z1bGxOdW1iZXIgfCBTcGVjU3RyaW5n
IHwgU3BlY0Jvb2xlYW4pOwogICAgICAgICAvLyAgICAgQWJzdHJhY3RWYWx1ZSBzdHJpbmc7CiAg
ICAgICAgIC8vICAgICBzdHJpbmcuc2V0KHZtLT5zdHJpbmdTdHJ1Y3R1cmUpOwogICAgICAgICAv
LyAgICAgZGVzdGluYXRpb24ubWVyZ2Uoc3RyaW5nKTsKQEAgLTk1NSw3ICsxMDAzLDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKICAgICAgICAgCiAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIHR5cGUgPSBzb3VyY2UubV90eXBlOwotICAgICAgICBpZiAodHlwZSAmIH4o
U3BlY051bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpCisgICAgICAgIGlmICh0eXBl
ICYgfihTcGVjRnVsbE51bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpCiAgICAgICAg
ICAgICB0eXBlID0gKFNwZWNIZWFwVG9wICYgflNwZWNDZWxsKSB8IFNwZWNTdHJpbmc7CiAKICAg
ICAgICAgZGVzdGluYXRpb24uc2V0VHlwZSh0eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNiArNjcsOCBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3Jh
cGgsIEpTCiAgICAgfQogICAgICAgICAKICAgICBtX3R5cGUgPSBzcGVjdWxhdGlvbkZyb21WYWx1
ZSh2YWx1ZSk7CisgICAgaWYgKG1fdHlwZSA9PSBTcGVjSW50NDhBc0RvdWJsZSkKKyAgICAgICAg
bV90eXBlID0gU3BlY0ludDQ4OwogICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgCiAgICAg
Y2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtMjI3LDYgKzIyOSw3IEBAIEZpbHRyYXRpb25SZXN1bHQg
QWJzdHJhY3RWYWx1ZTo6bm9ybWFsaXoKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgIUFT
U0VSVF9ESVNBQkxFRAogdm9pZCBBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KCkgY29u
c3QKIHsKICAgICBpZiAoIShtX3R5cGUgJiBTcGVjQ2VsbCkpIHsKQEAgLTIzOCwxNCArMjQxLDE5
IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSgpIGMKICAgICBpZiAoaXND
bGVhcigpKQogICAgICAgICBBU1NFUlQoIW1fdmFsdWUpOwogICAgIAotICAgIGlmICghIW1fdmFs
dWUpCi0gICAgICAgIEFTU0VSVChtZXJnZVNwZWN1bGF0aW9ucyhtX3R5cGUsIHNwZWN1bGF0aW9u
RnJvbVZhbHVlKG1fdmFsdWUpKSA9PSBtX3R5cGUpOworICAgIGlmICghIW1fdmFsdWUpIHsKKyAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fdHlwZTsKKyAgICAgICAgaWYgKHR5cGUgJiBT
cGVjSW50NDgpCisgICAgICAgICAgICB0eXBlIHw9IFNwZWNJbnQ0OEFzRG91YmxlOworICAgICAg
ICBBU1NFUlQobWVyZ2VTcGVjdWxhdGlvbnModHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUobV92
YWx1ZSkpID09IHR5cGUpOworICAgIH0KICAgICAKICAgICAvLyBOb3RlIHRoYXQgaXQncyBwb3Nz
aWJsZSBmb3IgYSBwcmVkaWN0aW9uIGxpa2UgKEZpbmFsLCBbXSkuIFRoaXMgcmVhbGx5IG1lYW5z
IHRoYXQKICAgICAvLyB0aGUgdmFsdWUgaXMgYm90dG9tIGFuZCB0aGF0IGFueSBjb2RlIHRoYXQg
dXNlcyB0aGUgdmFsdWUgaXMgdW5yZWFjaGFibGUuIEJ1dAogICAgIC8vIHdlIGRvbid0IHdhbnQg
dG8gZ2V0IHBlZGFudGljIGFib3V0IHRoaXMgYXMgaXQgd291bGQgb25seSBpbmNyZWFzZSB0aGUg
Y29tcHV0YXRpb25hbAogICAgIC8vIGNvbXBsZXhpdHkgb2YgdGhlIGNvZGUuCiB9CisjZW5kaWYK
IAogdm9pZCBBYnN0cmFjdFZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2
aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsMTYgQEAgc3RydWN0IEFic3RyYWN0
VmFsdWUgewogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIAorICAgIGJv
b2wgY291bGRCZVR5cGUoU3BlY3VsYXRlZFR5cGUgZGVzaXJlZFR5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gISEobV90eXBlICYgZGVzaXJlZFR5cGUpOworICAgIH0KKyAgICAKKyAgICBib29s
IGlzVHlwZShTcGVjdWxhdGVkVHlwZSBkZXNpcmVkVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biAhKG1fdHlwZSAmIH5kZXNpcmVkVHlwZSk7CisgICAgfQorICAgIAogICAgIEZpbHRyYXRpb25S
ZXN1bHQgZmlsdGVyKEdyYXBoJiwgY29uc3QgU3RydWN0dXJlU2V0Jik7CiAgICAgCiAgICAgRmls
dHJhdGlvblJlc3VsdCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMgYXJyYXlNb2Rlcyk7CkBA
IC0xOTMsMjIgKzIwMyw2IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICBGaWx0
cmF0aW9uUmVzdWx0IGZpbHRlckJ5VmFsdWUoSlNWYWx1ZSB2YWx1ZSk7CiAgICAgCi0gICAgYm9v
bCB2YWxpZGF0ZVR5cGUoSlNWYWx1ZSB2YWx1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChp
c0hlYXBUb3AoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAKLSAgICAgICAg
aWYgKG1lcmdlU3BlY3VsYXRpb25zKG1fdHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUp
KSAhPSBtX3R5cGUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlICYgU3Bl
Y0VtcHR5KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCiAgICAgYm9vbCB2YWxpZGF0ZShKU1Zh
bHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzSGVhcFRvcCgpKQpAQCAtMjUx
LDcgKzI0NSwxMSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICB8fCAhYXJy
YXlNb2Rlc0FyZUNsZWFyT3JUb3AobV9hcnJheU1vZGVzKTsKICAgICB9CiAgICAgCisjaWYgQVNT
RVJUX0RJU0FCTEVECisgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QgeyB9CisjZWxz
ZQogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OworI2VuZGlmCiAgICAgCiAgICAg
dm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKQEAgLTM2Myw2ICszNjEsMjkgQEAgcHJp
dmF0ZToKICAgICAgICAgbV9hcnJheU1vZGVzID0gQUxMX0FSUkFZX01PREVTOwogICAgIH0KICAg
ICAKKyAgICBib29sIHZhbGlkYXRlVHlwZShKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYgKGlzSGVhcFRvcCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IAorICAgICAgICAvLyBDb25zdGFudCBmb2xkaW5nIGFsd2F5cyByZXByZXNlbnRzIEludDQ4J3Mg
aW4gYSBkb3VibGUgKGkuZS4gSW50NDhBc0RvdWJsZSkuCisgICAgICAgIC8vIFNvIHNwZWN1bGF0
aW9uRnJvbVZhbHVlKHZhbHVlKSBmb3IgYW4gSW50NDggdmFsdWUgd2lsbCByZXR1cm4gSW50NDhB
c0RvdWJsZSwKKyAgICAgICAgLy8gYW5kIHRoYXQncyBmaW5lIC0gdGhlIHR5cGUgdmFsaWRhdGVz
IGp1c3QgZmluZS4KKyAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fdHlwZTsKKyAgICAg
ICAgaWYgKHR5cGUgJiBTcGVjSW50NDgpCisgICAgICAgICAgICB0eXBlIHw9IFNwZWNJbnQ0OEFz
RG91YmxlOworICAgICAgICAKKyAgICAgICAgaWYgKG1lcmdlU3BlY3VsYXRpb25zKHR5cGUsIHNw
ZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKSkgIT0gdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX3R5cGUgJiBTcGVjRW1wdHkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAK
ICAgICB2b2lkIG1ha2VUb3AoU3BlY3VsYXRlZFR5cGUgdG9wKQogICAgIHsKICAgICAgICAgbV90
eXBlIHw9IHRvcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9k
ZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDIxICsxNTcsMjEgQEAgQXJyYXlN
b2RlIEFycmF5TW9kZTo6cmVmaW5lKFNwZWN1bGF0ZWRUeQogICAgICAgICAgICAgcmV0dXJuIHdp
dGhUeXBlKEFycmF5OjpGb3JjZUV4aXQpOwogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9u
KHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6
OkludDMyLCBBcnJheTo6Q29udmVydCk7Ci0gICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9u
KHZhbHVlKSkKKyAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKICAg
ICAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkRvdWJsZSwgQXJy
YXk6OkNvbnZlcnQpOwogICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5
OjpDb250aWd1b3VzLCBBcnJheTo6Q29udmVydCk7CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXk6
OkludDMyOgogICAgICAgICBpZiAoIXZhbHVlIHx8IGlzSW50MzJTcGVjdWxhdGlvbih2YWx1ZSkp
CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0
aW9uKHZhbHVlKSkKKyAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkK
ICAgICAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkRvdWJsZSwg
QXJyYXk6OkNvbnZlcnQpOwogICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFy
cmF5OjpDb250aWd1b3VzLCBBcnJheTo6Q29udmVydCk7CiAgICAgICAgIAogICAgIGNhc2UgQXJy
YXk6OkRvdWJsZToKICAgICAgICAgaWYgKGZsYWdzICYgTm9kZUJ5dGVjb2RlVXNlc0FzSW50KQog
ICAgICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6Q29udGlndW91
cywgQXJyYXk6OlJhZ2VDb252ZXJ0KTsKLSAgICAgICAgaWYgKCF2YWx1ZSB8fCBpc051bWJlclNw
ZWN1bGF0aW9uKHZhbHVlKSkKKyAgICAgICAgaWYgKCF2YWx1ZSB8fCBpc0Z1bGxOdW1iZXJTcGVj
dWxhdGlvbih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIHJldHVy
biB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkNvbnRpZ3VvdXMsIEFycmF5OjpDb252ZXJ0
KTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNz
ZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Myw2ICsyOTMs
MjQgQEAgcHVibGljOgogICAgICAgICBtb3ZlNjRUb0RvdWJsZShncHIsIGZwcik7CiAgICAgICAg
IHJldHVybiBmcHI7CiAgICAgfQorICAgIAorICAgIHZvaWQgYm94SW50NDgoR1BSUmVnIHNvdXJj
ZSwgR1BSUmVnIHRhcmdldCwgR1BSUmVnIHNjcmF0Y2gsIEZQUlJlZyBmcFNjcmF0Y2gpCisgICAg
eworICAgICAgICAvLyBJcyBpdCBhbiBpbnQzMj8KKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIo
c291cmNlLCBzY3JhdGNoKTsKKyAgICAgICAgSnVtcCBpc0ludDMyID0gYnJhbmNoNjQoRXF1YWws
IHNvdXJjZSwgc2NyYXRjaCk7CisgICAgICAgIAorICAgICAgICAvLyBOb3BlLCBpdCdzIG5vdCwg
YnV0IHJlZ1QwIGNvbnRhaW5zIHRoZSBpbnQ2NCB2YWx1ZS4KKyAgICAgICAgY29udmVydEludDY0
VG9Eb3VibGUoc291cmNlLCBmcFNjcmF0Y2gpOworICAgICAgICBib3hEb3VibGUoZnBTY3JhdGNo
LCB0YXJnZXQpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIAorICAgICAg
ICBpc0ludDMyLmxpbmsodGhpcyk7CisgICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKHNvdXJjZSwg
dGFyZ2V0KTsKKyAgICAgICAgb3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRh
cmdldCk7CisgICAgICAgIAorICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfQogI2VuZGlm
CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywyMSArNjMsNiBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIAotICAgIE5vZGUqIGNhbm9uaWNhbGl6ZShO
b2RlKiBub2RlKQotICAgIHsKLSAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIAotICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBWYWx1ZVRvSW50MzIpCi0g
ICAgICAgICAgICBub2RlID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIG5vZGU7Ci0gICAgfQotICAgIE5vZGUqIGNhbm9uaWNhbGl6ZShFZGdlIGVkZ2Up
Ci0gICAgewotICAgICAgICByZXR1cm4gY2Fub25pY2FsaXplKGVkZ2Uubm9kZSgpKTsKLSAgICB9
Ci0gICAgCiAgICAgdW5zaWduZWQgZW5kSW5kZXhGb3JQdXJlQ1NFKCkKICAgICB7CiAgICAgICAg
IHVuc2lnbmVkIHJlc3VsdCA9IG1fbGFzdFNlZW5bbV9jdXJyZW50Tm9kZS0+b3AoKV07CkBAIC05
NCw5ICs3OSw5IEBAIHByaXZhdGU6CiAKICAgICBOb2RlKiBwdXJlQ1NFKE5vZGUqIG5vZGUpCiAg
ICAgewotICAgICAgICBOb2RlKiBjaGlsZDEgPSBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBOb2RlKiBjaGlsZDIgPSBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQyKCkpOwot
ICAgICAgICBOb2RlKiBjaGlsZDMgPSBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQzKCkpOworICAg
ICAgICBFZGdlIGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBFZGdlIGNoaWxkMiA9
IG5vZGUtPmNoaWxkMigpOworICAgICAgICBFZGdlIGNoaWxkMyA9IG5vZGUtPmNoaWxkMygpOwog
ICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZW5kSW5kZXhGb3JQdXJlQ1NFKCk7
IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIG90aGVyTm9kZSA9IG1fY3VycmVudEJsb2NrLT5h
dChpKTsKQEAgLTEwOSwxOSArOTQsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChub2Rl
LT5hcml0aE5vZGVGbGFncygpICE9IG90aGVyTm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZSogb3Ro
ZXJDaGlsZCA9IGNhbm9uaWNhbGl6ZShvdGhlck5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IEVkZ2Ugb3RoZXJDaGlsZCA9IG90aGVyTm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgICAgICBpZiAo
IW90aGVyQ2hpbGQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyTm9kZTsKICAgICAgICAg
ICAgIGlmIChvdGhlckNoaWxkICE9IGNoaWxkMSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgb3RoZXJDaGlsZCA9IGNhbm9uaWNhbGl6ZShvdGhl
ck5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG90aGVyQ2hpbGQgPSBvdGhlck5vZGUtPmNo
aWxkMigpOwogICAgICAgICAgICAgaWYgKCFvdGhlckNoaWxkKQogICAgICAgICAgICAgICAgIHJl
dHVybiBvdGhlck5vZGU7CiAgICAgICAgICAgICBpZiAob3RoZXJDaGlsZCAhPSBjaGlsZDIpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG90aGVy
Q2hpbGQgPSBjYW5vbmljYWxpemUob3RoZXJOb2RlLT5jaGlsZDMoKSk7CisgICAgICAgICAgICBv
dGhlckNoaWxkID0gb3RoZXJOb2RlLT5jaGlsZDMoKTsKICAgICAgICAgICAgIGlmICghb3RoZXJD
aGlsZCkKICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXJOb2RlOwogICAgICAgICAgICAgaWYg
KG90aGVyQ2hpbGQgIT0gY2hpbGQzKQpAQCAtMzc3LDIxICszNjIsMjEgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CiAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwotICAgICAgICAg
ICAgaWYgKG5vZGUgPT0gY2hpbGQxIHx8IG5vZGUgPT0gY2Fub25pY2FsaXplKGNoaWxkMikpIAor
ICAgICAgICAgICAgaWYgKG5vZGUgPT0gY2hpbGQxIHx8IG5vZGUgPT0gY2hpbGQyKSAKICAgICAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAg
ICAgICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5i
eVZhbElzUHVyZShub2RlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IGNoaWxkMSAmJiBjYW5vbmljYWxpemUobm9k
ZS0+Y2hpbGQyKCkpID09IGNhbm9uaWNhbGl6ZShjaGlsZDIpKQorICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKSA9PSBjaGlsZDEgJiYgbm9kZS0+Y2hpbGQyKCkgPT0gY2hpbGQyKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxp
YXM6IHsKICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGguYnlWYWxJc1B1cmUobm9kZSkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDApID09IGNoaWxkMSAmJiBjYW5vbmljYWxpemUobV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAxKSkgPT0gY2Fub25pY2FsaXplKGNoaWxkMikpCisgICAgICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkgPT0gY2hpbGQxICYmIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMSkgPT0gY2hpbGQyKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKS5ub2RlKCk7CiAgICAgICAgICAgICAg
ICAgLy8gV2UgbXVzdCBhc3N1bWUgdGhhdCB0aGUgUHV0QnlWYWwgd2lsbCBjbG9iYmVyIHRoZSBs
b2NhdGlvbiB3ZSdyZSBnZXR0aW5nIGZyb20uCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdl
IGNhbiBkbyBiZXR0ZXI7IGlmIHdlIGtub3cgdGhhdCB0aGUgUHV0QnlWYWwgaXMgYWNjZXNzaW5n
IGFuIGFycmF5IG9mIGEKQEAgLTEwOTAsNiArMTA3NSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgQ29tcGFyZUVxQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAg
ICBjYXNlIE1ha2VSb3BlOgorICAgICAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIGNh
c2UgSW50NDhUb1ZhbHVlOgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5h
dGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50
KHB1cmVDU0Uobm9kZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDggQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgTG9naWNhbE5vdDoK
ICAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoK
KyAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CiAgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBNb3ZIaW50QW5kQ2hlY2s6CkBAIC0xODAsNiAr
MTgyLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAg
ICBzd2l0Y2ggKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNl
OgogICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAg
ICByZWFkKFdvcmxkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAko
cmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0MywxNSBAQCBpbmxpbmUgYm9vbCBlbmFibGVD
b25jdXJyZW50SklUKCkKICNlbmRpZgogfQogCitpbmxpbmUgYm9vbCBlbmFibGVJbnQ0OCgpCit7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCit9CisKIGVudW0gU3BpbGxSZWdpc3RlcnNNb2RlIHsgTmVlZFRvU3Bp
bGwsIERvbnRTcGlsbCB9OwogCiBlbnVtIE5vUmVzdWx0VGFnIHsgTm9SZXN1bHQgfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24g
MTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
Zml4dXBTZXRMb2NhbHNJbkJsb2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkpOwogICAgICAg
ICB9CiAgICAgICAgIAorICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJs
b2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpCisgICAgICAgICAg
ICBmaXh1cFVudHlwZWRTZXRMb2NhbHNJbkJsb2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkp
OworICAgICAgICAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC05Miw3ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBTZXRMb2Nh
bDogewogICAgICAgICAgICAgLy8gVGhpcyBnZXRzIGhhbmRsZWQgYnkgZml4dXBTZXRMb2NhbHNJ
bkJsb2NrKCkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQml0QW5kOgpAQCAtMTI0LDYgKzEyNywx
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZU51bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE5Nyw2ICsyMDUsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaXhFZGdlPE51
bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTIwNyw2ICsyMTksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
Zml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMzAwLDYgKzMxNywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAgICAgJiYg
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5v
ZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzU1LDYgKzM3OCwxMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAgICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRl
TWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
IHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2Rl
LT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQyKCkpOwpAQCAtNDc2LDYgKzUwNSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
Y2hpbGQzKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5wcmVkaWN0aW9uKCkgJiBTcGVj
SW50NDgpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4oY2hpbGQz
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGNo
aWxkMSk7CkBAIC00OTMsNiArNTI2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihjaGlsZDIpOwogICAgICAgICAgICAgICAgIGlmIChjaGlsZDMtPnNob3Vs
ZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KGNoaWxkMyk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxh
dGVNYWNoaW5lSW50KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVz
ZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGZp
eEVkZ2U8TnVtYmVyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODQ3
LDYgKzg4Miw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAg
ICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICAgICAgY2FzZSBDaGVja1RpZXJV
cEFuZE9TUkVudGVyOgorICAgICAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIGNhc2Ug
SW50NDhUb1ZhbHVlOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTExODksNiArMTIyNiw5IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1h
Y2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjAzLDYg
KzEyNDMsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9j
ayk7CiAgICAgfQogICAgIAorICAgIHZvaWQgZml4dXBVbnR5cGVkU2V0TG9jYWxzSW5CbG9jayhC
YXNpY0Jsb2NrKiBibG9jaykKKyAgICB7CisgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIEFTU0VSVChibG9jay0+aXNSZWFjaGFibGUpOworICAgICAgICBt
X2Jsb2NrID0gYmxvY2s7CisgICAgICAgIGZvciAobV9pbmRleEluQmxvY2sgPSAwOyBtX2luZGV4
SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxvY2spIHsKKyAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX2N1cnJlbnROb2RlID0gYmxvY2stPmF0KG1faW5kZXhJbkJsb2NrKTsK
KyAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFNldExvY2FsKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpCisgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVk
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIH0KKyAgICAgICAgbV9pbnNlcnRpb25TZXQu
ZXhlY3V0ZShibG9jayk7CisgICAgfQorICAgIAogICAgIE5vZGUqIGNoZWNrQXJyYXkoQXJyYXlN
b2RlIGFycmF5TW9kZSwgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgTm9kZSogYXJyYXks
IE5vZGUqIGluZGV4LCBib29sICgqc3RvcmFnZUNoZWNrKShjb25zdCBBcnJheU1vZGUmKSA9IGNh
bkNTRVN0b3JhZ2UpCiAgICAgewogICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU3BlY2lmaWMo
KSk7CkBAIC0xMzIxLDYgKzEzNzgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB8fCBp
c0Jvb2xlYW5TcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKICAgICAgICAgICAg
ICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJs
ZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5l
SW50VXNlOgorICAgICAgICAgICAgaWYgKGlzTWFjaGluZUludFNwZWN1bGF0aW9uKHZhcmlhYmxl
LT5wcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQg
fD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENlbGxVc2U6CiAgICAgICAgIGNhc2UgS25vd25DZWxsVXNl
OgogICAgICAgICBjYXNlIE9iamVjdFVzZToKQEAgLTEzNDcsMTIgKzE0MDgsODAgQEAgcHJpdmF0
ZToKICAgICB0ZW1wbGF0ZTxVc2VLaW5kIHVzZUtpbmQ+CiAgICAgdm9pZCBmaXhFZGdlKEVkZ2Um
IGVkZ2UsIFNwZWN1bGF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRp
b24pCiAgICAgewotICAgICAgICBpZiAoaXNEb3VibGUodXNlS2luZCkgJiYgZWRnZS0+c2hvdWxk
U3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsKLSAgICAgICAgICAgIGluamVjdEludDMy
VG9Eb3VibGVOb2RlKGVkZ2UsIHVzZUtpbmQsIGRpcmVjdGlvbik7CisgICAgICAgIGlmIChpc0Rv
dWJsZSh1c2VLaW5kKSkgeworICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUlu
dDMyRm9yQXJpdGhtZXRpYygpKSB7CisgICAgICAgICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJs
ZU5vZGUoZWRnZSwgdXNlS2luZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0
OCgpICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAg
ICAgIC8vIE1ha2UgYWxsIGRvdWJsZSB1c2VzIG9mIGludDQ4IHZhbHVlcyBoYXZlIGFuIGludGVy
bWVkaWF0ZSBJbnQ0OFRvRG91YmxlLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHRo
ZSBzYW1lIHJlYXNvbiBhcyBJbnQ0OFRvVmFsdWUgKHNlZSBiZWxvdykgZXhjZXB0IHRoYXQKKyAg
ICAgICAgICAgICAgICAvLyBJbnQ4VG9Eb3VibGUgd2lsbCBjb252ZXJ0IGludDQ4J3MgdGhhdCBm
aXQgaW4gYW4gaW50MzIgaW50byBhIGRvdWJsZQorICAgICAgICAgICAgICAgIC8vIHJhdGhlciB0
aGFuIHRyeWluZyB0byBjcmVhdGUgYSBib3hlZCBpbnQzMiBsaWtlIEludDQ4VG9WYWx1ZSBkb2Vz
LgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjSW50NDhBc0RvdWJsZSwgSW50NDhUb0RvdWJsZSwKKyAgICAgICAgICAgICAgICAgICAg
bV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7
CisgICAgICAgICAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIHVzZUtpbmQgIT0gTWFjaGluZUludFVzZQorICAgICAg
ICAgICAgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpICYmICFlZGdlLT5zaG91
bGRTcGVjdWxhdGVJbnQzMigpKSB7CisgICAgICAgICAgICAvLyBXZSBtYWtlIGFsbCBub24taW50
NDggdXNlcyBvZiBpbnQ0OCB2YWx1ZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgSW50NDhUb1ZhbHVl
CisgICAgICAgICAgICAvLyBub2RlIHRvIGVuc3VyZSB0aGF0IHdlIGhhbmRsZSB0aGlzIHByb3Bl
cmx5OgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAg
ICAgICAgLy8gYjogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8vIGM6IENhbGwoLi4u
LCBAYSkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAgICAv
LworICAgICAgICAgICAgLy8gV2l0aG91dCBhbiBpbnRlcm1lZGlhdGUgbm9kZSBhbmQganVzdCBs
YWJlbGluZyB0aGUgdXNlcywgd2Ugd2lsbCBnZXQ6CisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ0ODpAYSwg
Li4uKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QGEpCisgICAgICAgICAg
ICAvLyBkOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAgICAg
ICAgIC8vIEFuZCBub3cgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSB3aWxsIGJveCB0aGUgdmFsdWUg
b2YgQGEgaW50byBhIGRvdWJsZS4gVGhpcworICAgICAgICAgICAgLy8gaXMgYmFkLCBiZWNhdXNl
IG5vdyB0aGUgZC0+SW50NDg6QGEgZWRnZSB3aWxsIGVpdGhlciBoYXZlIHRvIGRvIGRvdWJsZS10
by1pbnQKKyAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zLCBvciB3aWxsIGhhdmUgdG8gT1NSIGV4
aXQgdW5jb25kaXRpb25hbGx5LiBBbHRlcm5hdGl2ZWx5IHdlIGNvdWxkCisgICAgICAgICAgICAv
LyBoYXZlIHRoZSBjLT5VbnR5cGVkOkBhIGVkZ2UgYm94IHRoZSB2YWx1ZSBieSBjb3B5aW5nIHJh
dGhlciB0aGFuIGluLXBsYWNlLgorICAgICAgICAgICAgLy8gQnV0IHRoZXNlIGJveGluZ3MgYXJl
IGFsc28gY29zdGx5IHNvIHRoaXMgd291bGRuJ3QgYmUgZ3JlYXQuCisgICAgICAgICAgICAvLwor
ICAgICAgICAgICAgLy8gVGhlIHNvbHV0aW9uIHdlIHVzZSBpcyB0byBhbHdheXMgaGF2ZSBub24t
SW50NDggdXNlcyBvZiBwcmVkaWN0ZWQgSW50NDgncyB1c2UKKyAgICAgICAgICAgIC8vIGFuIGlu
dGVydmVuaW5nIEludDQ4VG9WYWx1ZSBub2RlOgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAg
IC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoSW50NDg6QGEsIC4u
LikKKyAgICAgICAgICAgIC8vIHg6IEludDQ4VG9WYWx1ZShJbnQ0ODpAYSkKKyAgICAgICAgICAg
IC8vIGM6IENhbGwoLi4uLCBVbnR5cGVkOkB4KQorICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQo
SW50NDg6QGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
ZXZlbiBpZiB3ZSBoYWQgbXVsdGlwbGUgbm9uLWludDQ4IHVzZXMgb2YgQGEsIHRoZSBtdWx0aXBs
ZQorICAgICAgICAgICAgLy8gSW50NDhUb1ZhbHVlJ3Mgd291bGQgZ2V0IENTRSdkIHRvZ2V0aGVy
LiBTbyB0aGUgYm94aW5nIHdvdWxkIG9ubHkgaGFwcGVuIG9uY2UuCisgICAgICAgICAgICAvLyBB
dCB0aGUgc2FtZSB0aW1lLCBAYSB3b3VsZCBjb250aW51ZSB0byBiZSByZXByZXNlbnRlZCBhcyBh
IG5hdGl2ZSBpbnQ0OC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBBbiBhbHRlcm5h
dGl2ZSB3b3VsZCBoYXZlIGJlZW4gdG8gaW5zZXJ0IFRvTmF0aXZlSW50NDggbm9kZXMgb24gaW50
NDggdXNlcyBvZgorICAgICAgICAgICAgLy8gaW50NDgncy4gVGhpcyB3b3VsZCBoYXZlIGhhbmRs
ZWQgdGhlIGFib3ZlIGV4YW1wbGUgYnV0IHdvdWxkIGZhbGwgb3ZlciBmb3I6CisgICAgICAgICAg
ICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBDYWxs
KC4uLiwgQGEpCisgICAgICAgICAgICAvLyBjOiBBcml0aEFkZChAYSwgLi4uKQorICAgICAgICAg
ICAgLy8KKyAgICAgICAgICAgIC8vIEJ1dCB0aGUgc29sdXRpb24gd2UgdXNlIGhhbmRsZXMgdGhl
IGFib3ZlIGdyYWNlZnVsbHkuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGUqIHJlc3Vs
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQ0OCwgSW50NDhUb1ZhbHVlLAorICAgICAgICAgICAgICAgIG1fY3VycmVu
dE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIFVudHlwZWRVc2UpKTsKKyAgICAg
ICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPHVzZUtp
bmQ+KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgCiAgICAgICAgIGVkZ2Uuc2V0VXNlS2luZCh1c2VL
aW5kKTsKICAgICB9CiAgICAgCkBAIC0xMzc4LDcgKzE1MDcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoRWRnZSYgZWRnZSwgVXNlS2luZCB1c2VLaW5kID0g
TnVtYmVyVXNlLCBTcGVjdWxhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBCYWNrd2FyZFNwZWN1
bGF0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDgsIEludDMyVG9E
b3VibGUsCisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4QXNEb3VibGUsIElu
dDMyVG9Eb3VibGUsCiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdl
KGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb3J3
YXJkU3BlY3VsYXRpb24pCiAgICAgICAgICAgICByZXN1bHQtPm1lcmdlRmxhZ3MoTm9kZUV4aXRz
Rm9yd2FyZCk7CkBAIC0xNDM0LDEzICsxNTYzLDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBhdHRl
bXB0VG9NYWtlSW50ZWdlckFkZChOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgQWRkU3BlY3Vs
YXRpb25Nb2RlIG1vZGUgPSBtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShub2RlKTsKLSAgICAg
ICAgaWYgKG1vZGUgPT0gRG9udFNwZWN1bGF0ZUludDMyKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAobW9kZSAhPSBEb250U3BlY3VsYXRlSW50MzIpIHsKKyAgICAgICAg
ICAgIHRydW5jYXRlQ29uc3RhbnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9kZSk7CisgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgdHJ1bmNhdGVDb25zdGFudHNJZk5lY2Vzc2FyeShu
b2RlLCBtb2RlKTsKLSAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50
KG5vZGUpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBhdHRlbXB0VG9NYWtlR2V0QXJy
YXlMZW5ndGgoTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rmx1c2hGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRmx1c2hGb3JtYXQuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
OSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgRmx1CiAgICAgY2FzZSBG
bHVzaGVkSW50MzI6CiAgICAgICAgIG91dC5wcmludCgiRmx1c2hlZEludDMyIik7CiAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgb3V0LnByaW50KCJGbHVz
aGVkSW50NDgiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKICAg
ICAgICAgb3V0LnByaW50KCJGbHVzaGVkRG91YmxlIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJldmlzaW9uIDE1
NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiBlbnVtIEZsdXNoRm9ybWF0IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMy
LAorICAgIEZsdXNoZWRJbnQ0OCwKICAgICBGbHVzaGVkRG91YmxlLAogICAgIEZsdXNoZWRDZWxs
LAogICAgIEZsdXNoZWRCb29sZWFuLApAQCAtNTUsNiArNTYsOCBAQCBpbmxpbmUgTm9kZUZsYWdz
IHJlc3VsdEZvcihGbHVzaEZvcm1hdCBmCiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0SlM7CiAg
ICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0SW50MzI7Cisg
ICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIHJldHVybiBOb2RlUmVzdWx0SW50NDg7CiAg
ICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdE51bWJlcjsK
ICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgpAQCAtNzQsNiArNzcsOCBAQCBpbmxpbmUgVXNlS2lu
ZCB1c2VLaW5kRm9yKEZsdXNoRm9ybWF0IGZvCiAgICAgICAgIHJldHVybiBDZWxsVXNlOwogICAg
IGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICByZXR1cm4gSW50MzJVc2U7CisgICAgY2FzZSBG
bHVzaGVkSW50NDg6CisgICAgICAgIHJldHVybiBNYWNoaW5lSW50VXNlOwogICAgIGNhc2UgRmx1
c2hlZERvdWJsZToKICAgICAgICAgcmV0dXJuIE51bWJlclVzZTsKICAgICBjYXNlIEZsdXNoZWRC
b29sZWFuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlv
bkluZm8uaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHZW5lcmF0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxOSBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCBncHIsIERhdGFGb3Jt
YXRJbnQzMik7CiAgICAgfQorICAgIHZvaWQgaW5pdEludDQ4KE5vZGUqIG5vZGUsIHVpbnQzMl90
IHVzZUNvdW50LCBHUFJSZWcgcmVnLCBEYXRhRm9ybWF0IGZvcm1hdCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChmb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IGZvcm1hdCA9PSBEYXRhRm9ybWF0
U3RyaWN0SW50NDgpOworICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCByZWcsIGZvcm1h
dCk7CisgICAgfQorICAgIHZvaWQgaW5pdEludDQ4KE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNv
dW50LCBHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwg
cmVnLCBEYXRhRm9ybWF0SW50NDgpOworICAgIH0KKyAgICB2b2lkIGluaXRTdHJpY3RJbnQ0OChO
b2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAg
IGluaXRHUFIobm9kZSwgdXNlQ291bnQsIHJlZywgRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAg
ICB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB2b2lkIGluaXRKU1ZhbHVlKE5vZGUqIG5vZGUs
IHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgZ3ByLCBEYXRhRm9ybWF0IGZvcm1hdCA9IERhdGFG
b3JtYXRKUykKICAgICB7CkBAIC0xODcsNiArMjAwLDExIEBAIHB1YmxpYzoKICAgICAvLyBHZXQg
dGhlIGZvcm1hdCBvZiB0aGUgdmFsdWUgYXMgaXQgaXMgc3BpbGxlZCBpbiB0aGUgSlNTdGFjayAo
b3IgJ25vbmUnKS4KICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0KCkgeyByZXR1cm4gbV9zcGls
bEZvcm1hdDsgfQogICAgIAorICAgIGJvb2wgaXNGb3JtYXQoRGF0YUZvcm1hdCBleHBlY3RlZEZv
cm1hdCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWdpc3RlckZvcm1hdCgpID09IGV4cGVjdGVk
Rm9ybWF0IHx8IHNwaWxsRm9ybWF0KCkgPT0gZXhwZWN0ZWRGb3JtYXQ7CisgICAgfQorICAgIAog
ICAgIGJvb2wgaXNKU0Zvcm1hdChEYXRhRm9ybWF0IGV4cGVjdGVkRm9ybWF0KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIEpTQzo6aXNKU0Zvcm1hdChyZWdpc3RlckZvcm1hdCgpLCBleHBlY3RlZEZv
cm1hdCkgfHwgSlNDOjppc0pTRm9ybWF0KHNwaWxsRm9ybWF0KCksIGV4cGVjdGVkRm9ybWF0KTsK
QEAgLTE5Nyw2ICsyMTUsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaXNKU0Zvcm1hdChE
YXRhRm9ybWF0SlNJbnQzMik7CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNJbnQ0OCgpCisgICAg
eworICAgICAgICByZXR1cm4gaXNGb3JtYXQoRGF0YUZvcm1hdEludDQ4KTsKKyAgICB9CisgICAg
CisgICAgYm9vbCBpc1N0cmljdEludDQ4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0Zvcm1h
dChEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgIH0KKyAgICAKICAgICBib29sIGlzSlNEb3Vi
bGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSlNGb3JtYXQoRGF0YUZvcm1hdEpTRG91Ymxl
KTsKQEAgLTMxNCw2ICszNDIsMTkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgZmlsbEdQUihz
dHJlYW0sIGdwciwgRGF0YUZvcm1hdEludDMyKTsKICAgICB9CisgICAgdm9pZCBmaWxsSW50NDgo
VmFyaWFibGVFdmVudFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByLCBEYXRhRm9ybWF0IGZvcm1h
dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChmb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IGZv
cm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICBmaWxsR1BSKHN0cmVhbSwg
Z3ByLCBmb3JtYXQpOworICAgIH0KKyAgICB2b2lkIGZpbGxJbnQ0OChWYXJpYWJsZUV2ZW50U3Ry
ZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBmaWxsR1BSKHN0cmVhbSwg
Z3ByLCBEYXRhRm9ybWF0SW50NDgpOworICAgIH0KKyAgICB2b2lkIGZpbGxTdHJpY3RJbnQ0OChW
YXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBm
aWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgIH0KICAgICB2
b2lkIGZpbGxCb29sZWFuKFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwcikK
ICAgICB7CiAgICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERhdGFGb3JtYXRCb29sZWFuKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxNTU5
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjM2LDE0ICsyMzYsMTQgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0LCBjb25zdAogICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCkpCiAgICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJhcmciLCBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5k
KSwgIigiLCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKCp0aGlzLCB2YXJpYWJsZUFjY2Vzc0RhdGEp
LCAiKSIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwg
b3BlcmFuZCwgIigiLCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKCp0aGlzLCB2YXJpYWJsZUFjY2Vz
c0RhdGEpLCAiKSIpOworICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgb3BlcmFu
ZFRvTG9jYWwob3BlcmFuZCksICIoIiwgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcCgqdGhpcywgdmFy
aWFibGVBY2Nlc3NEYXRhKSwgIikiKTsKICAgICB9CiAgICAgaWYgKG5vZGUtPmhhc1VubGlua2Vk
TG9jYWwoKSkgewogICAgICAgICBpbnQgb3BlcmFuZCA9IG5vZGUtPnVubGlua2VkTG9jYWwoKTsK
ICAgICAgICAgaWYgKG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKQogICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAiYXJnIiwgb3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwgb3BlcmFuZCk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJsb2MiLCBvcGVyYW5kVG9Mb2NhbChvcGVyYW5kKSk7
CiAgICAgfQogICAgIGlmIChub2RlLT5oYXNDb25zdGFudEJ1ZmZlcigpKSB7CiAgICAgICAgIG91
dC5wcmludChjb21tYSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShy
ZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMCwxNCArMjMwLDE3IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIGFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoTm9kZSogYWRkKQogICAgIHsKKyAgICAg
ICAgaWYgKCFlbmFibGVJbnQ0OCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKICAgICAgICAgTm9kZSogbGVmdCA9IGFkZC0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICBO
b2RlKiByaWdodCA9IGFkZC0+Y2hpbGQyKCkubm9kZSgpOwogCiAgICAgICAgIGJvb2wgc3BlY3Vs
YXRpb247CiAgICAgICAgIGlmIChhZGQtPm9wKCkgPT0gVmFsdWVBZGQpCi0gICAgICAgICAgICBz
cGVjdWxhdGlvbiA9IE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnRFeHBlY3RpbmdEZWZp
bmVkKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uID0gTm9kZTo6c2hvdWxk
U3BlY3VsYXRlTWFjaGluZUludChsZWZ0LCByaWdodCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uID0gTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludEZvckFyaXRo
bWV0aWMobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc3BlY3VsYXRpb24gPSBOb2RlOjpzaG91
bGRTcGVjdWxhdGVNYWNoaW5lSW50KGxlZnQsIHJpZ2h0KTsKIAogICAgICAgICByZXR1cm4gc3Bl
Y3VsYXRpb24gJiYgIWhhc0V4aXRTaXRlKGFkZCwgSW50NDhPdmVyZmxvdyk7CiAgICAgfQpAQCAt
MjU3LDEwICsyNjAsMTMgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKG11bC0+b3Ao
KSA9PSBBcml0aE11bCk7CiAgICAgICAgIAorICAgICAgICBpZiAoIWVuYWJsZUludDQ4KCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICBOb2RlKiBsZWZ0ID0g
bXVsLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgIE5vZGUqIHJpZ2h0ID0gbXVsLT5jaGlsZDIo
KS5ub2RlKCk7CiAKLSAgICAgICAgcmV0dXJuIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJ
bnRGb3JBcml0aG1ldGljKGxlZnQsIHJpZ2h0KQorICAgICAgICByZXR1cm4gTm9kZTo6c2hvdWxk
U3BlY3VsYXRlTWFjaGluZUludChsZWZ0LCByaWdodCkKICAgICAgICAgICAgICYmIG11bC0+Y2Fu
U3BlY3VsYXRlSW50NDgoKQogICAgICAgICAgICAgJiYgIWhhc0V4aXRTaXRlKG11bCwgSW50NDhP
dmVyZmxvdyk7CiAgICAgfQpAQCAtMjc0LDcgKzI4MCw5IEBAIHB1YmxpYzoKICAgICBib29sIG5l
Z2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoTm9kZSogbmVnYXRlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG5lZ2F0ZS0+b3AoKSA9PSBBcml0aE5lZ2F0ZSk7Ci0gICAgICAgIHJldHVybiBu
ZWdhdGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50Rm9yQXJpdGhtZXRpYygp
CisgICAgICAgIGlmICghZW5hYmxlSW50NDgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIG5lZ2F0ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJ
bnQoKQogICAgICAgICAgICAgJiYgIWhhc0V4aXRTaXRlKG5lZ2F0ZSwgSW50NDhPdmVyZmxvdykK
ICAgICAgICAgICAgICYmIG5lZ2F0ZS0+Y2FuU3BlY3VsYXRlSW50NDgoKTsKICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMyw4ICsz
MTMsOCBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUCiAgICAgICAg
ICAgICAvLyBiZWZvcmUgYW5kIGFmdGVyIHNldHRpbmcgaXQuCiAgICAgICAgICAgICBzb3VyY2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKSA9PSBGbHVzaGVkRG91YmxlKSB7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKCEoc291cmNlLm1fdHlwZSAmIH5TcGVjTnVtYmVyKSk7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKCEhKHNvdXJjZS5tX3R5cGUgJiB+U3BlY0RvdWJsZSkgPT0gISEoc291
cmNlLm1fdHlwZSAmIFNwZWNJbnQzMikpOworICAgICAgICAgICAgICAgIEFTU0VSVCghKHNvdXJj
ZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoISEo
c291cmNlLm1fdHlwZSAmIH5TcGVjRG91YmxlKSA9PSAhIShzb3VyY2UubV90eXBlICYgU3BlY01h
Y2hpbmVJbnQpKTsKICAgICAgICAgICAgICAgICBpZiAoIShzb3VyY2UubV90eXBlICYgflNwZWNE
b3VibGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5tZXJnZShTcGVjSW50NDhBc0Rv
dWJsZSk7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5maWx0ZXIoU3BlY0RvdWJsZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDE1
NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMyw2ICsxMDMsOSBAQCB2b2lkIEpJVENvZGU6OnJlY29uc3RydWN0KAog
ICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAg
IHZhbHVlID0ganNOdW1iZXIoZXhlYy0+cihvcGVyYW5kKS51bmJveGVkSW50MzIoKSk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50
NDg6CisgICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGV4ZWMtPnIob3BlcmFuZCkudW5ib3hl
ZEludDQ4KCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZERvdWJsZToKICAgICAgICAgICAgIHZhbHVlID0ganNEb3VibGVOdW1iZXIo
ZXhlYy0+cihvcGVyYW5kKS51bmJveGVkRG91YmxlKCkpOwogICAgICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmgJKHJldmlz
aW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgaW5saW5lIGJvb2wgYmVsb25nc0lu
TWluaWZpZWRHcmFwaChOb2RlVAogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgY2FzZSBE
b3VibGVBc0ludDMyOgogICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKKyAgICBjYXNlIEludDQ4
VG9WYWx1ZToKKyAgICBjYXNlIEludDQ4VG9Eb3VibGU6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVCghcGVybWl0c09TUkJhY2t3YXJkUmV3aXJpbmco
dHlwZSkgJiYgIXBlcm1pdHNPU1JGb3J3YXJkUmV3aXJpbmcodHlwZSkpOwpAQCAtMTA0LDYgKzEw
Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAgY2Fz
ZSBVSW50MzJUb051bWJlcjoKICAgICAgICAgY2FzZSBEb3VibGVBc0ludDMyOgorICAgICAgICBj
YXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIGNhc2UgSW50NDhUb1ZhbHVlOgogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTU1OTAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNDEsMTIgKzEyNDEsMTIgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIGJvb2wgc2hv
dWxkU3BlY3VsYXRlTnVtYmVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc051bWJlclNwZWN1
bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0Z1bGxOdW1iZXJTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0
ZU51bWJlckV4cGVjdGluZ0RlZmluZWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzTnVtYmVy
U3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVy
biBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocHJlZGljdGlvbigpKTsK
ICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVCb29sZWFuKCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNpb24gMTU1OTAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsOCArNDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVm
aW5lIE5vZGVSZXN1bHRKUyAgICAgICAgICAgICAgICAgICAgIDB4MDAwMQogI2RlZmluZSBOb2Rl
UmVzdWx0TnVtYmVyICAgICAgICAgICAgICAgICAweDAwMDIKICNkZWZpbmUgTm9kZVJlc3VsdElu
dDMyICAgICAgICAgICAgICAgICAgMHgwMDAzCi0jZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAg
ICAgICAgICAgICAgIDB4MDAwNAotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAg
ICAgICAweDAwMDUKKyNkZWZpbmUgTm9kZVJlc3VsdEludDQ4ICAgICAgICAgICAgICAgICAgMHgw
MDA0CisjZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4MDAwNQorI2Rl
ZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDYKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAjZGVmaW5lIE5vZGVNdXN0R2VuZXJhdGUgICAgICAgICAg
ICAgICAgIDB4MDAwOCAvLyBzZXQgb24gbm9kZXMgdGhhdCBoYXZlIHNpZGUgZWZmZWN0cywgYW5k
IG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92ZWQgYnkgRENFLgogI2RlZmluZSBOb2RlSGFzVmFy
QXJncyAgICAgICAgICAgICAgICAgICAweDAwMTAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSW50MzJUb0RvdWJs
ZSwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRlIHRoYXQgYSBk
b3VibGUgdmFsdWUgaXMgYWN0dWFsbHkgYW4gaW50ZWdlci4gKi9cCiAgICAgbWFjcm8oRG91Ymxl
QXNJbnQzMiwgTm9kZVJlc3VsdEludDMyIHwgTm9kZUV4aXRzRm9yd2FyZCkgXAorICAgIC8qIFVz
ZWQgdG8gc2VwYXJhdGUgcmVwcmVzZW50YXRpb24gYW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gb2Yg
SW50NDgncyByZXByZXNlbnRlZCAqL1wKKyAgICAvKiBhcyB2YWx1ZXMuICovXAorICAgIG1hY3Jv
KEludDQ4VG9WYWx1ZSwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oSW50NDhUb0RvdWJsZSwg
Tm9kZVJlc3VsdE51bWJlcikgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBv
cGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlciB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTM1Niw2ICszNjAsMTcgQEAgaW5saW5lIHVuc2lnbmVkIGZv
cndhcmRSZXdpcmluZ1NlbGVjdGlvbgogICAgICAgICAvLyBUaGlzIGxvc2VzIGluZm9ybWF0aW9u
LiBPbmx5IHVzZSBpdCBpZiB0aGVyZSBhcmUgbm8gYmV0dGVyIGFsdGVybmF0aXZlcy4KICAgICAg
ICAgcmV0dXJuIDI1OwogICAgICAgICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZToKKyAgICAgICAg
Ly8gTG9zZXMgbm8gaW5mb3JtYXRpb24uIEl0IGp1c3QgYm94ZXMgdGhlIHZhbHVlLCB3aGljaCBp
cyB3aGF0IE9TUiB3YW50cworICAgICAgICAvLyB0byBkbyBhbnl3YXkuCisgICAgICAgIHJldHVy
biAxMDA7CisgICAgICAgIAorICAgIGNhc2UgSW50NDhUb0RvdWJsZToKKyAgICAgICAgLy8gVGhp
cyBpcyBsaWtlIEludDMyVG9Eb3VibGU7IHdlIGNhbiB1c2UgaXQgYmVjYXVzZSBpdCBnaXZlcyBh
IHNlbWFudGljYWxseQorICAgICAgICAvLyBlcXVpdmFsZW50IHZhbHVlIGJ1dCB0aGF0IHZhbHVl
IG1heSBiZSBhbiBpbnQzMiBpbiBhIGRvdWJsZSwgc28gd2UnZAorICAgICAgICAvLyByYXRoZXIg
bm90IGlmIHdlIGNhbiBhdm9pZCBpdC4KKyAgICAgICAgcmV0dXJuIDc1OworICAgICAgICAKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gMDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24g
MTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw2ICsxOTUsOCBAQCB2b2lkIE9TUkV4aXRDb21w
aWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2UgSW5HUFI6CiAgICAgICAgIGNh
c2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgIGNhc2UgVUludDMySW5HUFI6CisgICAgICAg
IGNhc2UgVW5ib3hlZEludDQ4SW5HUFI6CisgICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDQ4
SW5HUFI6CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KHJlY292ZXJ5LmdwcigpLCBzY3JhdGNo
ICsgaW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTIzNSwxMiAr
MjM3LDE1IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAg
ICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJ
bkpTU3RhY2s6CiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAg
ICBjYXNlIEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIFN0cmljdEludDQ4
RGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJl
Z1QwKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2gg
KyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgY2FzZSBBbHJlYWR5SW5K
U1N0YWNrQXNVbmJveGVkRG91YmxlOgorICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1Vu
Ym94ZWRJbnQ0ODoKICAgICAgICAgICAgIG1faml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFk
ZHJlc3NGb3Iob3BlcmFuZCksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LnN0
b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTI3NCwzMyArMjc5LDM3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhp
dChjb25zdCAKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2Vt
Ymx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU6
Ci0gICAgICAgIGNhc2UgSW5GUFI6Ci0gICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQu
bG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAg
ICBtX2ppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgY2FzZSBV
bmJveGVkSW50NDhJbkdQUjoKKyAgICAgICAgY2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoK
KyAgICAgICAgICAgIG1faml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICAgICAgICAgIG1faml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKDE2KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgbV9qaXQuYm94SW50NDgoR1BS
SW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBS
ZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJs
eUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKKyAgICAgICAg
Y2FzZSBTdHJpY3RJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG1faml0Lmxv
YWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0
LmJveEludDQ4KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEs
IEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpy
ZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgVUludDMySW5HUFI6IHsKKyAgICAg
ICAgY2FzZSBVSW50MzJJbkdQUjoKICAgICAgICAgICAgIG1faml0LmxvYWQ2NChzY3JhdGNoICsg
aW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRv
UHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwKLSAgICAgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwotICAgICAg
ICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86
OmZwUmVnVDApOwotICAgICAgICAgICAgbV9qaXQuYWRkRG91YmxlKAotICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZBc3NlbWJseUhlbHBlcnM6OnR3b1Rv
VGhlMzIpLAotICAgICAgICAgICAgICAgIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAg
bV9qaXQuYm94SW50NDgoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUklu
Zm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
QXNVbmJveGVkRG91YmxlOgorICAgICAgICBjYXNlIEluRlBSOgorICAgICAgICBjYXNlIERvdWJs
ZURpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAgICAgICAgIG1faml0LmxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVn
VDApOwogICAgICAgICAgICAgbV9qaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUklu
Zm86OnJlZ1QwKTsKLSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBkb25lID0gbV9q
aXQuanVtcCgpOwotICAgICAgICAgICAgcG9zaXRpdmUubGluaygmbV9qaXQpOwotICAgICAgICAg
ICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgbV9qaXQu
c3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJh
bmQpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZp
c2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE0ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAotc3RhdGljIENTdHJpbmcgc2hvcnRPcGVyYW5kc0R1bXAo
Y29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzKQotewotICAgIER1bXBDb250
ZXh0IGNvbnRleHQ7Ci0gICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwotICAgIG91dC5wcmludChp
bkNvbnRleHQob3BlcmFuZHMsICZjb250ZXh0KSk7Ci0gICAgcmV0dXJuIG91dC50b0NTdHJpbmco
KTsKLX0KLQogZXh0ZXJuICJDIiB7CiAKIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBl
eGVjKQpAQCAtMTEzLDcgKzEwNSw3IEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICAgICAgKCJERkcgT1NSIGV4aXQgIyV1ICglcywgJXMpIGZyb20gJXMsIHdp
dGggb3BlcmFuZHMgPSAlcyIsCiAgICAgICAgICAgICAgICAgZXhpdEluZGV4LCB0b0NTdHJpbmco
ZXhpdC5tX2NvZGVPcmlnaW4pLmRhdGEoKSwKICAgICAgICAgICAgICAgICBleGl0S2luZFRvU3Ry
aW5nKGV4aXQubV9raW5kKSwgdG9DU3RyaW5nKCpjb2RlQmxvY2spLmRhdGEoKSwKLSAgICAgICAg
ICAgICAgICBzaG9ydE9wZXJhbmRzRHVtcChvcGVyYW5kcykuZGF0YSgpKSk7CisgICAgICAgICAg
ICAgICAgdG9DU3RyaW5nKGlnbm9yaW5nQ29udGV4dDxEdW1wQ29udGV4dD4ob3BlcmFuZHMpKS5k
YXRhKCkpKTsKICAgICB9CiAgICAgCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkRG91YmxlVHlw
ZUZvclByZWRpY3Rpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBpZiAo
IWlzTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQorICAgICAgICBpZiAoIWlzRnVsbE51bWJlclNw
ZWN1bGF0aW9uKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlOwogICAgICAg
ICBpZiAodmFsdWUgJiBTcGVjRG91YmxlTmFOKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3Vi
bGU7CkBAIC0xNDksOCArMTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIEdldExvY2FsOiB7Ci0gICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAg
ICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+
cHJlZGljdGlvbigpOworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiA9IHZhcmlhYmxlLT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBpZiAodmFy
aWFibGUtPnNob3VsZE5ldmVyVW5ib3goKSAmJiAocHJlZGljdGlvbiAmIFNwZWNJbnQ0OCkpCisg
ICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0ludDQ4QXNEb3Vi
bGUpICYgflNwZWNJbnQ0ODsKICAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQogICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0yMDMsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChu
b2RlQ2FuU3BlY3VsYXRlSW50MzIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjTnVt
YmVyKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQnl0
ZWNvZGVOdW1iZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjEyLDE0
ICsyMTQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0ID0g
bm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKGxlZnQgJiYgcmlnaHQpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxh
dGlvbkV4cGVjdGluZ0RlZmluZWQobGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGlu
Z0RlZmluZWQocmlnaHQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1
bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQocmlnaHQpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
LmFkZFNwZWN1bGF0aW9uTW9kZShub2RlKSAhPSBEb250U3BlY3VsYXRlSW50MzIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwog
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1h
Y2hpbmVJbnQobm9kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihTcGVjSW50NDgpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihzcGVjdWxhdGVkRG91
YmxlVHlwZUZvclByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSk7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIGlmICghKGxlZnQgJiBTcGVjTnVtYmVyKSB8fCAhKHJpZ2h0ICYgU3BlY051bWJlcikpIHsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEobGVmdCAmIFNwZWNGdWxsTnVtYmVyKSB8fCAh
KHJpZ2h0ICYgU3BlY0Z1bGxOdW1iZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIGxlZnQg
b3IgcmlnaHQgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgb3RoZXIgdGhhbiBhIG51bWJlci4KICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZyk7
CiAgICAgICAgICAgICAgICAgfSBlbHNlCkBAIC0zNjgsMTAgKzM3MCwyMCBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAKICAgICAgICAgY2FzZSBHZXRCeVZhbDogeworICAgICAgICAgICAgaWYgKCFu
b2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgaWYgKCFub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpCiAgICAgICAgICAgICAgICAgfHwgbm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKQogICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNEb3VibGUpOwotICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVVpbnQz
MkFycmF5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG5vZGUt
PmdldEhlYXBQcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihTcGVjSW50MzIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDQ4KTsKKyAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KG5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTU2Niw2ICs1NzgsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrV2F0Y2hk
b2dUaW1lcjoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBMb29wSGlu
dDoKKyAgICAgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CisgICAgICAgIGNhc2UgSW50NDhUb0RvdWJs
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0
cyBpZ25vcmVkIGJlY2F1c2UgaXQgYWxyZWFkeSBoYXMgYSBwcmVkaWN0aW9uLgpAQCAtNjQwLDgg
KzY1NCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBEb3VibGVC
YWxsb3QgYmFsbG90OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzTnVtYmVy
U3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb25F
eHBlY3RpbmdEZWZpbmVkKHJpZ2h0KQotICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmFkZFNo
b3VsZFNwZWN1bGF0ZUludDMyKG5vZGUpKQorICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNw
ZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlv
bkV4cGVjdGluZ0RlZmluZWQocmlnaHQpCisgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguYWRk
U2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSkKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5h
ZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKQogICAgICAgICAgICAgICAgIGJhbGxv
dCA9IFZvdGVEb3VibGU7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFsbG90
ID0gVm90ZVZhbHVlOwpAQCAtNjU3LDggKzY3Miw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBEb3VibGVCYWxsb3QgYmFsbG90OwogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVj
dWxhdGlvbihyaWdodCkKLSAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5tdWxTaG91bGRTcGVj
dWxhdGVJbnQzMihub2RlKSkKKyAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlv
bihsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKKyAgICAgICAgICAgICAg
ICAmJiAhbV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlKQorICAgICAgICAgICAg
ICAgICYmICFtX2dyYXBoLm11bFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpCiAgICAg
ICAgICAgICAgICAgYmFsbG90ID0gVm90ZURvdWJsZTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBiYWxsb3QgPSBWb3RlVmFsdWU7CkBAIC02NzcsNyArNjkzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIERvdWJsZUJhbGxvdCBiYWxsb3Q7CiAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbihsZWZ0
KSAmJiBpc051bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQorICAgICAgICAgICAgaWYgKGlzRnVsbE51
bWJlclNwZWN1bGF0aW9uKGxlZnQpICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQog
ICAgICAgICAgICAgICAgICYmICEoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1l
dGljKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSAmJiBub2Rl
LT5jYW5TcGVjdWxhdGVJbnQzMigpKSkKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlRG91
YmxlOwogICAgICAgICAgICAgZWxzZQpAQCAtNzA2LDcgKzcyMiw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gbm9kZS0+Y2hpbGQxKCktPnByZWRp
Y3Rpb24oKTsKICAgICAgICAgICAgIGlmIChpc0RvdWJsZVNwZWN1bGF0aW9uKHByZWRpY3Rpb24p
KQogICAgICAgICAgICAgICAgIG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT52b3RlKFZvdGVE
b3VibGUpOwotICAgICAgICAgICAgZWxzZSBpZiAoIWlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGlj
dGlvbikgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgZWxz
ZSBpZiAoCisgICAgICAgICAgICAgICAgIWlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rp
b24pCisgICAgICAgICAgICAgICAgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8
IGlzTWFjaGluZUludFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAgICAgIG5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT52b3RlKFZvdGVWYWx1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBA
IHB1YmxpYzoKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAg
Y2FzZSBOb3RDZWxsVXNlOgogICAgICAgICBjYXNlIE90aGVyVXNlOgorICAgICAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBLbm93bkludDMyVXNlOgpAQCAtNjksNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAg
ICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNOdW1iZXIp
CisgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIH5TcGVjRnVs
bE51bWJlcikKICAgICAgICAgICAgICAgICBtX3Jlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgCkBAIC0yMzksNiArMjQwLDggQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoK
ICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBMb29wSGludDoKKyAg
ICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFsOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgJ
KHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50
UmVnaXN0ZXJTYXZlUGxhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIGVudW0g
U2lsZW50U3BpbGxBY3Rpb24gewogZW51bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBEb05vdGhp
bmdGb3JGaWxsLAogICAgIFNldEludDMyQ29uc3RhbnQsCisgICAgU2V0SW50NDhDb25zdGFudCwK
KyAgICBTZXRTdHJpY3RJbnQ0OENvbnN0YW50LAogICAgIFNldEJvb2xlYW5Db25zdGFudCwKICAg
ICBTZXRDZWxsQ29uc3RhbnQsCiAgICAgU2V0VHJ1c3RlZEpTQ29uc3RhbnQsCkBAIC02MSw4ICs2
MywxMiBAQCBlbnVtIFNpbGVudEZpbGxBY3Rpb24gewogICAgIExvYWQzMlRhZywKICAgICBMb2Fk
MzJQYXlsb2FkLAogICAgIExvYWQzMlBheWxvYWRCb3hJbnQsCisgICAgTG9hZDMyUGF5bG9hZENv
bnZlcnRUb0ludDQ4LAorICAgIExvYWQzMlBheWxvYWRTaWduRXh0ZW5kLAogICAgIExvYWRQdHIs
CiAgICAgTG9hZDY0LAorICAgIExvYWQ2NFNoaWZ0UmlnaHQxNiwKKyAgICBMb2FkNjRTaGlmdExl
ZnQxNiwKICAgICBMb2FkRG91YmxlLAogICAgIExvYWREb3VibGVCb3hEb3VibGUsCiAgICAgTG9h
ZEpTVW5ib3hEb3VibGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODg4LDggKzg4OCw4IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZURvdWIKICNlbmRpZgogICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JO
b2RlKGVkZ2UpOwogICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7Ci0gICAg
QVNTRVJUKGVkZ2UudXNlS2luZCgpICE9IEtub3duTnVtYmVyVXNlIHx8ICEodmFsdWUubV90eXBl
ICYgflNwZWNOdW1iZXIpKTsKLSAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY051
bWJlcik7CisgICAgQVNTRVJUKGVkZ2UudXNlS2luZCgpICE9IEtub3duTnVtYmVyVXNlIHx8ICEo
dmFsdWUubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKSk7CisgICAgbV9pbnRlcnByZXRlci5maWx0
ZXIodmFsdWUsIFNwZWNGdWxsTnVtYmVyKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
Z2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGlu
Zm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsK
IApAQCAtOTI4LDcgKzkyOCw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZURvdWIKIAogICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ICE9IERhdGFGb3JtYXRKU0ludDMy
ICYmIHNwaWxsRm9ybWF0ICE9IERhdGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICAgICAgICAgICAgICBpZiAodHlwZSAmIH5TcGVj
TnVtYmVyKQorICAgICAgICAgICAgICAgIGlmICh0eXBlICYgflNwZWNGdWxsTnVtYmVyKQogICAg
ICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2Uo
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSksIGVkZ2UsIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKICAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIGZwcik7CiAgICAgICAgICAgICAgICAgaGFzVW5ib3hlZERvdWJsZSA9
IG1faml0Lmp1bXAoKTsKQEAgLTk2Myw3ICs5NjMsNyBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0g
RGF0YUZvcm1hdEpTSW50MzIpIHsKICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpJbnQzMlRhZykpOwotICAgICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY051bWJlcikKKyAgICAg
ICAgICAgIGlmICh0eXBlICYgflNwZWNGdWxsTnVtYmVyKQogICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRn
ZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwogICAgICAgICAgICAgdW5ib3hEb3Vi
bGUodGFnR1BSLCBwYXlsb2FkR1BSLCBmcHIsIHNjcmF0Y2guZnByKCkpOwogICAgICAgICAgICAg
aGFzVW5ib3hlZERvdWJsZSA9IG1faml0Lmp1bXAoKTsKQEAgLTI5MjMsNyArMjkyMyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEZQUlJl
ZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigpOwogCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygK
LSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwgU3BlY1JlYWxO
dW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hpbGQyKCksIFNw
ZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlRlBSLCB2YWx1ZUZQ
UikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgp
KSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0zMTg3LDcgKzMxODcsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBvcDEudXNlKCk7
CiAgICAgICAgIAotICAgICAgICBpZiAoIShtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdHlwZSAmIH4oU3BlY051bWJlciB8IFNwZWNCb29sZWFuKSkpIHsKKyAgICAgICAgaWYgKCEo
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNGdWxsTnVtYmVy
IHwgU3BlY0Jvb2xlYW4pKSkgewogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFUYWdHUFIsIHJl
c3VsdFRhZ0dQUik7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVBheWxvYWRHUFIsIHJlc3Vs
dFBheWxvYWRHUFIpOwogICAgICAgICB9IGVsc2UgewpAQCAtMzI4OSw3ICszMjg5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhpcywgdXNlKTsKICAgICAgICAgICAg
ICAgICAgICAgRlBSUmVnIG9wRlBSID0gb3BlcmFuZC5mcHIoKTsKICAgICAgICAgICAgICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygp
LCB1c2UsIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MoKSwgdXNlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVy
ZWQsIG9wRlBSLCBvcEZQUikpOwogICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbV9qaXQu
c3RvcmVEb3VibGUob3BGUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNp
emVvZihkb3VibGUpICogb3BlcmFuZElkeCkpOwpAQCAtMzM1NCw3ICszMzU0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCB1c2UpOwogICAgICAgICAgICAgICAgIEZQ
UlJlZyBvcEZQUiA9IG9wZXJhbmQuZnByKCk7CiAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY1JlYWxOdW1i
ZXIsCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0Z1bGxSZWFs
TnVtYmVyLAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIG9wRlBSLCBvcEZQUikpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKG9wRlBSLCByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIgKyBvcGVyYW5kSWR4KSk7CkBAIC00Nzk3LDYgKzQ3
OTcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAg
Y2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgorICAgIGNhc2UgSW50NDhUb0RvdWJsZToKKyAg
ICBjYXNlIEludDQ4VG9WYWx1ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCwyOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpib3hJbnQ0OChH
UFJSZWcgc291cmNlR1BSLCBHUFJSZWcgdGFyZ2V0R1BSLCBEYXRhRm9ybWF0IGZvcm1hdCkKK3sK
KyAgICBHUFJSZWcgdGVtcEdQUjsKKyAgICBpZiAoc291cmNlR1BSID09IHRhcmdldEdQUikKKyAg
ICAgICAgdGVtcEdQUiA9IGFsbG9jYXRlKCk7CisgICAgZWxzZQorICAgICAgICB0ZW1wR1BSID0g
dGFyZ2V0R1BSOworICAgIAorICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOworCisgICAg
aWYgKGZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgIG1faml0LnJzaGlmdDY0KFRy
dXN0ZWRJbW0zMigxNiksIHNvdXJjZUdQUik7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoZm9y
bWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgCisgICAgbV9qaXQuYm94SW50NDgo
c291cmNlR1BSLCB0YXJnZXRHUFIsIHRlbXBHUFIsIGZwcik7CisgICAgCisgICAgaWYgKHRlbXBH
UFIgIT0gdGFyZ2V0R1BSKQorICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgCisgICAgdW5s
b2NrKGZwcik7Cit9CisKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBl
ZGdlKQogewogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0
dWFsUmVnaXN0ZXIoKTsKQEAgLTY5LDExICs5MiwyMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBEYXRhRm9y
bWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwogICAgICAgICAgICAgbV9ncHJz
LnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAg
ICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikgeworICAgICAgICAgICAg
c3dpdGNoIChzcGlsbEZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6
IHsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKICAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByKTsKICAgICAgICAgICAgICAgICBzcGlsbEZv
cm1hdCA9IERhdGFGb3JtYXRKU0ludDMyOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3Ry
aWN0SW50NDg6IHsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBib3hJbnQ0
OChncHIsIGdwciwgc3BpbGxGb3JtYXQpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpLCBncHIpOwogICAgICAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRh
Rm9ybWF0RG91YmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gYm94IHRoZSBk
b3VibGUsIHNpbmNlIHdlIHdhbnQgYSBKU1ZhbHVlLgpAQCAtODEsNiArMTE1LDcgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAgICAgICAgICAgICAgICBz
cGlsbEZvcm1hdCA9IERhdGFGb3JtYXRKU0RvdWJsZTsKICAgICAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9y
bWF0SlMpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwogICAgICAg
ICB9CkBAIC0xMTMsNiArMTQ4LDE2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFs
dWUoRWRnZSAKIAogICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0KKyAgICAgICAgCisgICAgY2Fz
ZSBEYXRhRm9ybWF0SW50NDg6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAg
ICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIGxvY2soZ3ByKTsKKyAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IGFsbG9jYXRlKCk7CisgICAgICAgIGJveEludDQ4KGdwciwg
cmVzdWx0R1BSLCBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpOworICAgICAgICB1bmxvY2soZ3ByKTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdEdQUjsKKyAgICB9CiAKICAgICBjYXNlIERhdGFGb3JtYXRD
ZWxsOgogICAgICAgICAvLyBObyByZXRhZyByZXF1aXJlZCBvbiBKU1ZBTFVFNjQhCkBAIC03Njgs
NyArODEzLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAg
ICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQo
KTsKICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFG
b3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9
PSBEYXRhRm9ybWF0SW50MzIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CiAgICAgICAgIAogICAgICAgICBt
X2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAg
ICAgICAgIApAQCAtNzg5LDYgKzgzNCwzNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVJbnQzCiAgICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQz
MjsKICAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3Ry
aWN0SW50NDgpIHsKKyAgICAgICAgICAgIC8vIEdlbmVyYWxseSwgdGhpcyBjYW4gb25seSBoYXBw
ZW4gaWYgd2UndmUgYWxyZWFkeSBwcm92ZWQgdGhhdCB0aGUKKyAgICAgICAgICAgIC8vIHZhbHVl
IGlzIGFuIGludDMyLiBUaGF0J3MgYmVjYXVzZSBpZiBhIHZhbHVlIG9yaWdpbmF0ZWQgYXMgYSBK
U1ZhbHVlCisgICAgICAgICAgICAvLyB0aGVuIHdlIHdvdWxkIHNwZWN1bGF0ZSB0aGF0IGl0J3Mg
YW4gaW50MzIgYmVmb3JlIHJlcHJlc2VudGluZyBpdCBhcworICAgICAgICAgICAgLy8gYW4gaW50
NDguIE90aGVyd2lzZSwgaWYgd2Uga25vd2luZ2x5IHByb2R1Y2VkIGFuIGludDQ4LCB0aGVuIHdl
IHdvdWxkCisgICAgICAgICAgICAvLyBiZSBib3hpbmcgaXQgaW50byBhIHZhbHVlIHVzaW5nIElu
dDQ4VG9WYWx1ZS4gVGhpcyBhc3NlcnRpb24gaXMgdmFsaWQKKyAgICAgICAgICAgIC8vIG9ubHkg
YmVjYXVzZSBJbnQ0OCBpcyBzb21ldGhpbmcgdGhhdCB3ZSBpbnRyb2R1Y2UgYXQgcHJlZGljdGlv
biB0aW1lLgorICAgICAgICAgICAgLy8gSG93ZXZlcjogd2UgbWF5IGhhdmUgYW4gaW50MzItcHJv
ZHVjaW5nIG5vZGUgcmVwbGFjZWQgYnkgYW4KKyAgICAgICAgICAgIC8vIGludDQ4LXByb2R1Y2lu
ZyBub2RlIGR1ZSB0byBDU0UuIFNvIHdlIG11c3QgZG8gYSBjaGVjay4KKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCEodHlwZSAmIH5TcGVjTWFjaGluZUludCkpOworICAgICAgICAgICAgaWYg
KHR5cGUgJiBTcGVjSW50NDgpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9j
YXRlKCk7CisgICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoZ3ByLCB0ZW1w
KTsKKyAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBw
cm9maWxpbmcgaW5mb3JtYXRpb24gaGVyZS4gOi0vCisgICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjaygKKyAgICAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwK
KyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBncHIsIHRlbXApKTsKKyAgICAgICAgICAgICAgICB1bmxvY2sodGVtcCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdElu
dDQ4KSB7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVn
aXN0ZXIpLCBncHIpOworICAgICAgICAgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0z
MigxNiksIGdwcik7CisgICAgICAgICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoZ3By
LCBncHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5mby5maWxsSW50MzIoKm1fc3Ry
ZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwor
ICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQogICAgICAgICBtX2ppdC5sb2FkNjQo
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKIAogICAgICAg
ICAvLyBGaWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91Z2guCkBAIC03OTcsNiArODcyLDcg
QEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgIH0KIAogICAg
IGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEodHlwZSAmIFNw
ZWNJbnQ0OCkpOwogICAgICAgICAvLyBDaGVjayB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlci4KICAg
ICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7
CkBAIC04NDMsNiArOTE5LDM1IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUludDMKICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwogICAgICAgICBy
ZXR1cm4gZ3ByOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50
NDg6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGlu
Zm8uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHQ7CisgICAgICAgIGlmIChtX2dwcnMuaXNM
b2NrZWQoZ3ByKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUoKTsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbG9jayhncHIpOworICAgICAgICAgICAgaW5mby5maWxsSW50MzIoKm1fc3RyZWFtLCBncHIp
OworICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCEodHlwZSAmIH5TcGVjTWFjaGluZUludCkpOworICAgICAgICBpZiAoaW5mby5yZWdp
c3RlckZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIG1faml0LnJzaGlm
dDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3VsdCk7CisgICAgICAgIGlmICh0eXBlICYgU3BlY0lu
dDQ4KSB7CisgICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAg
ICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQsIHRlbXApOworICAgICAgICAgICAgLy8g
Q3VycmVudGx5LCB3ZSBjYW4ndCBzdXBwbHkgdmFsdWUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGhl
cmUuIDotLworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBC
YWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgcmVzdWx0LCB0ZW1wKSk7CisgICAgICAgICAgICB1
bmxvY2sodGVtcCk7CisgICAgICAgIH0KKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIo
cmVzdWx0LCByZXN1bHQpOworICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7
CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0RG91Ymxl
OgogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOiB7CkBAIC04ODUsNiArOTkwLDE4MCBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NDgoRWRnZSBl
ZGdlLCBEYXRhRm9ybWF0IGRlc2lyZWRGb3JtYXQpCit7CisgICAgQVNTRVJUKGRlc2lyZWRGb3Jt
YXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmlj
dEludDQ4KTsKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdl
KTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOworICAgIG1faW50ZXJw
cmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjTWFjaGluZUludCk7CisgICAgVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdlbmVyYXRp
b25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxS
ZWdpc3Rlcik7CisKKyAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgeworICAgIGNh
c2UgRGF0YUZvcm1hdE5vbmU6IHsKKyAgICAgICAgaWYgKChlZGdlLT5oYXNDb25zdGFudCgpICYm
ICF2YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSkuaXNNYWNoaW5lSW50KCkpIHx8IGluZm8u
c3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKSB7CisgICAgICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisKKyAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0
YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUganNWYWx1ZSA9IHZhbHVlT2ZKU0NvbnN0YW50
KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChqc1ZhbHVlLmlzTWFjaGluZUludCgp
KTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxs
T3JkZXJDb25zdGFudCk7CisgICAgICAgICAgICBpbnQ2NF90IHZhbHVlID0ganNWYWx1ZS5hc01h
Y2hpbmVJbnQoKTsKKyAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJ
bnQ0OCkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlIDw8IDE2OworICAgICAgICAgICAg
bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tNjQodmFsdWUpLCBncHIpOworICAgICAgICAg
ICAgaW5mby5maWxsR1BSKCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAg
ICAgIHJldHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIERhdGFGb3JtYXQg
c3BpbGxGb3JtYXQgPSBpbmZvLnNwaWxsRm9ybWF0KCk7CisgICAgICAgIAorICAgICAgICBSRUxF
QVNFX0FTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8IHNwaWxsRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQzMiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDggfHwgc3Bp
bGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAgICAgICAgCisgICAgICAgIG1f
Z3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SlNJbnQzMiB8fCBz
cGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGtu
b3cgdGhpcyB3YXMgc3BpbGxlZCBhcyBhbiBpbnRlZ2VyIHdlIGNhbiBmaWxsIHdpdGhvdXQgY2hl
Y2tpbmcuCisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRv
UHRyKGdwciwgZ3ByKTsKKyAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3Jt
YXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KCpt
X3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAg
ICAgICAgICAgIGluZm8uZmlsbEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHJl
dHVybiBncHI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3Jt
YXRJbnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAg
ICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0
ZXIpLCBncHIpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0
cmljdEludDQ4KSB7CisgICAgICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3Jt
YXRJbnQ0OCkKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMy
KDE2KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OCgqbV9zdHJl
YW0sIGdwcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAg
ICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwgZ3ByKTsKKyAgICAg
ICAgICAgIGluZm8uZmlsbEludDQ4KCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHJldHVy
biBncHI7CisgICAgICAgIH0KKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisKKyAgICAgICAgLy8gRmlsbCBhcyBKU1Zh
bHVlLCBhbmQgZmFsbCB0aHJvdWdoLgorICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVh
bSwgZ3ByLCBEYXRhRm9ybWF0SlNJbnQzMik7CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsK
KyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXRKUzogeworICAgICAgICAvLyBDaGVjayB0aGUg
dmFsdWUgaXMgYW4gaW50ZWdlci4gTm90ZSB0aGF0IHdlIHdvdWxkICpsaWtlKiB0byB1bmJveCBh
biBJbnQ0OAorICAgICAgICAvLyBhdCB0aGlzIHBvaW50IGJ1dCB0aGlzIGlzIHRvbyBjb3N0bHku
IFdlIG9ubHkgKnByb3ZlKiB0aGF0IHRoaXMgaXMgYW4gSW50NDgKKyAgICAgICAgLy8gZXZlbiB0
aG91Z2ggd2UgY2hlY2sgaWYgaXQncyBhbiBpbnQzMi4KKyAgICAgICAgR1BSUmVnIGdwciA9IGlu
Zm8uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHQ7CisgICAgICAgIGlmIChtX2dwcnMuaXNM
b2NrZWQoZ3ByKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUoKTsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGdwcjsKKyAgICAgICAg
fQorICAgICAgICBpZiAodHlwZSAmIH5TcGVjSW50MzIpCisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHJlc3VsdCksIGVkZ2UsIG1faml0LmJyYW5jaDY0
KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcmVzdWx0LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIpKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBncHIpIC8vIFRoZSBub3QtYWxyZWFkeS1s
b2NrZWQsIHNvIGZpbGwgaW4tcGxhY2UsIGNhc2UuCisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0
OCgqbV9zdHJlYW0sIGdwciwgZGVzaXJlZEZvcm1hdCk7CisgICAgICAgIG1faml0LnNpZ25FeHRl
bmQzMlRvUHRyKHJlc3VsdCwgcmVzdWx0KTsKKyAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMy
KDE2KSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBjYXNl
IERhdGFGb3JtYXRJbnQzMjoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0ludDMyOiB7CisgICAgICAg
IEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0OworICAgICAg
ICBpZiAobV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9j
YXRlKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgICAgICBpbmZvLmZp
bGxJbnQ0OCgqbV9zdHJlYW0sIGdwciwgZGVzaXJlZEZvcm1hdCk7CisgICAgICAgICAgICByZXN1
bHQgPSBncHI7CisgICAgICAgIH0KKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVz
dWx0LCByZXN1bHQpOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50
NDgpCisgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCByZXN1bHQp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBi
b29sIHdhc0xvY2tlZCA9IG1fZ3Bycy5pc0xvY2tlZChncHIpOworICAgICAgICBsb2NrKGdwcik7
CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAg
ICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIGlmICh3YXNMb2NrZWQpIHsKKyAgICAgICAg
ICAgIEdQUlJlZyByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9qaXQubW92ZShn
cHIsIHJlc3VsdCk7CisgICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGdwciA9
IHJlc3VsdDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0
OCgqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigx
NiksIGdwcik7CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorICAgICAgICAKKyAgICBjYXNl
IERhdGFGb3JtYXRJbnQ0ODogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAg
ICAgICAgYm9vbCB3YXNMb2NrZWQgPSBtX2dwcnMuaXNMb2NrZWQoZ3ByKTsKKyAgICAgICAgbG9j
ayhncHIpOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisg
ICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICBpZiAod2FzTG9ja2VkKSB7CisgICAgICAg
ICAgICBHUFJSZWcgcmVzdWx0ID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUo
Z3ByLCByZXN1bHQpOworICAgICAgICAgICAgdW5sb2NrKGdwcik7CisgICAgICAgICAgICBncHIg
PSByZXN1bHQ7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW5mby5maWxsSW50NDgoKm1f
c3RyZWFtLCBncHIpOworICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBn
cHIpOworICAgICAgICByZXR1cm4gZ3ByOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdERv
dWJsZToKKyAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKKyAgICAgICAgaWYgKGVkZ2UtPmhh
c0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUganNWYWx1ZSA9IHZhbHVlT2ZKU0Nv
bnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChqc1ZhbHVlLmlzTWFjaGluZUlu
dCgpKSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IGpzVmFsdWUuYXNNYWNoaW5l
SW50KCk7CisgICAgICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdElu
dDQ4KQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlIDw8IDE2OworICAgICAgICAg
ICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgICAgIG1faml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHZhbHVlKSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ3ByOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgIGNhc2Ug
RGF0YUZvcm1hdENlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNlIERh
dGFGb3JtYXRKU0NlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOiB7CisgICAgICAg
IHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCAwKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CisgICAgfQorCisgICAgY2FzZSBEYXRh
Rm9ybWF0U3RvcmFnZToKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CisgICAgfQorfQorCiBGUFJSZWcgU3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSBlZGdlKQogewogI2lmIERGR19F
TkFCTEUoREVCVUdfVkVSQk9TRSkKQEAgLTg5Miw4ICsxMTcxLDggQEAgRlBSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogI2VuZGlmCiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFs
dWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7CiAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZh
bHVlLm1fdHlwZTsKLSAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25OdW1iZXJVc2Ug
fHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY051bWJlcikpOwotICAgIG1faW50ZXJwcmV0ZXIuZmls
dGVyKHZhbHVlLCBTcGVjTnVtYmVyKTsKKyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25v
d25OdW1iZXJVc2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpKTsKKyAgICBt
X2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY0Z1bGxOdW1iZXIpOwogICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBH
ZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2
aXJ0dWFsUmVnaXN0ZXIpOwogCkBAIC05NDUsNiArMTIyNCwyNCBAQCBGUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgICAgICB1bmxvY2soZ3ByKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0SW50NDg6IHsKKyAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAg
ICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNw
aWxsZWQpOworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9z
dHJlYW0sIGdwcik7CisgICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0
SW50NDg6IHsKKyAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAg
ICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQp
OworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ0OCgqbV9z
dHJlYW0sIGdwcik7CisgICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEdQUlJlZyBncHIg
PSBhbGxvY2F0ZSgpOwpAQCAtOTc4LDcgKzEyNzUsNyBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVEb3ViCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2Vy
ID0gbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwganNWYWx1ZUdw
ciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKIAotICAgICAgICBpZiAodHlwZSAm
IH5TcGVjTnVtYmVyKQorICAgICAgICBpZiAodHlwZSAmIH5TcGVjRnVsbE51bWJlcikKICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoanNWYWx1ZUdwciks
IGVkZ2UsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywganNWYWx1ZUdw
ciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gRmlyc3Qs
IGlmIHdlIGdldCBoZXJlIHdlIGhhdmUgYSBkb3VibGUgZW5jb2RlZCBhcyBhIEpTVmFsdWUKQEAg
LTEwMDksNiArMTMwNiwyOCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVE
b3ViCiAgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKICAgICAgICAgcmV0dXJuIGZwcjsKICAg
ICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEZQUlJl
ZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsK
KyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgR1BSUmVnIHRlbXAgPSBhbGxvY2F0
ZSgpOworICAgICAgICBtX2ppdC5tb3ZlKGdwciwgdGVtcCk7CisgICAgICAgIG1faml0LnJzaGlm
dDY0KFRydXN0ZWRJbW0zMigxNiksIHRlbXApOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRU
b0RvdWJsZSh0ZW1wLCBmcHIpOworICAgICAgICB1bmxvY2sodGVtcCk7CisgICAgICAgIG1fZ3By
cy51bmxvY2soZ3ByKTsKKyAgICAgICAgcmV0dXJuIGZwcjsKKyAgICB9CisgICAgICAgIAorICAg
IGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBmcHJB
bGxvY2F0ZSgpOworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgbV9n
cHJzLmxvY2soZ3ByKTsKKyAgICAgICAgbV9qaXQuY29udmVydEludDY0VG9Eb3VibGUoZ3ByLCBm
cHIpOworICAgICAgICBtX2dwcnMudW5sb2NrKGdwcik7CisgICAgICAgIHJldHVybiBmcHI7Cisg
ICAgfQogCiAgICAgLy8gVW5ib3ggdGhlIGRvdWJsZQogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91
YmxlOiB7CkBAIC0xMTExLDcgKzE0MzAsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVDZWxsCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CiAgICAgY2FzZSBEYXRh
Rm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKLSAgICBjYXNlIERh
dGFGb3JtYXRCb29sZWFuOiB7CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoKKyAgICBjYXNl
IERhdGFGb3JtYXRJbnQ0ODoKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODogewogICAg
ICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgMCk7CiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KQEAgLTExOTQsNyAr
MTUxNSw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICBj
YXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlNDZWxsOgotICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6IHsKKyAgICBj
YXNlIERhdGFGb3JtYXRDZWxsOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgIGNhc2Ug
RGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhl
Y3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFs
bG9jYXRlKCk7CiAgICAgfQpAQCAtMTUwMyw2ICsxODI2LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbnQzMkNvbXBhcmUKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bV9jdXJyZW50Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CiB9CiAKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVJbnQ0OENvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJl
bGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIFNwZWN1bGF0ZVdoaWNoZXZlcklu
dDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZVdoaWNo
ZXZlckludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCksIG9wMSk7CisgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIpOworICAgIAorICAgIG1faml0
LmNvbXBhcmU2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkp
OworICAgIAorICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNl
IGl0IGhlcmUuCisgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3Vs
dC5ncHIoKSk7CisgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY3VycmVudE5vZGUs
IERhdGFGb3JtYXRKU0Jvb2xlYW4pOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UGVlcEhvbGVJbnQ0OEJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21w
aWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgQmFzaWNCbG9jayog
dGFrZW4gPSBicmFuY2hOb2RlLT50YWtlbkJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogbm90VGFr
ZW4gPSBicmFuY2hOb2RlLT5ub3RUYWtlbkJsb2NrKCk7CisKKyAgICAvLyBUaGUgYnJhbmNoIGlu
c3RydWN0aW9uIHdpbGwgYnJhbmNoIHRvIHRoZSB0YWtlbiBibG9jay4KKyAgICAvLyBJZiB0YWtl
biBpcyBuZXh0LCBzd2l0Y2ggdGFrZW4gd2l0aCBub3RUYWtlbiAmIGludmVydCB0aGUgYnJhbmNo
IGNvbmRpdGlvbiBzbyB3ZSBjYW4gZmFsbCB0aHJvdWdoLgorICAgIGlmICh0YWtlbiA9PSBuZXh0
QmxvY2soKSkgeworICAgICAgICBjb25kaXRpb24gPSBKSVRDb21waWxlcjo6aW52ZXJ0KGNvbmRp
dGlvbik7CisgICAgICAgIEJhc2ljQmxvY2sqIHRtcCA9IHRha2VuOworICAgICAgICB0YWtlbiA9
IG5vdFRha2VuOworICAgICAgICBub3RUYWtlbiA9IHRtcDsKKyAgICB9CisgICAgCisgICAgU3Bl
Y3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIo
KSwgb3AxKTsKKyAgICAKKyAgICBicmFuY2g2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdw
cigpLCB0YWtlbik7CisgICAganVtcChub3RUYWtlbik7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEb3VibGVDb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpEb3Vi
bGVDb25kaXRpb24gY29uZGl0aW9uKQogewogICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE5MDYsNiArMjI2MywxNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OiB7CisgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgbV9qaXQubG9hZDY0
KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
ID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWluKHJl
c3VsdC5ncHIoKSwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICAgICAg
Z2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlcikuaW5pdElu
dDQ4KG5vZGUsIG5vZGUtPnJlZkNvdW50KCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDY0
KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOwpA
QCAtMTk4MSw2ICsyMzQ4LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBGbHVzaGVkSW50NDg6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0
KHZhbHVlLmdwcigpLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLT5sb2NhbCgpKSk7Cisg
ICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5v
ZGUtPmxvY2FsKCksIFZhbHVlU291cmNlKEludDQ4SW5KU1N0YWNrKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6
IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwpAQCAtMjEw
NCw2ICsyNDc5LDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZTog
eworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFuZCk7CisgICAg
ICAgIG1faml0Lm1vdmUob3BlcmFuZC5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgICAgIAorICAgIGNhc2UgSW50NDhUb0RvdWJsZTogeworICAgICAgICBTcGVjdWxhdGVEb3Vi
bGVPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIG9wZXJhbmQpOworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9w
ZXJhbmQuZnByKCksIHJlc3VsdC5mcHIoKSk7CisgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQu
ZnByKCksIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2Ug
VmFsdWVBZGQ6CiAgICAgY2FzZSBBcml0aEFkZDoKICAgICAgICAgY29tcGlsZUFkZChub2RlKTsK
QEAgLTI4ODksNyArMzI4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigpOwogCiAgICAg
ICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBu
b2RlLT5jaGlsZDIoKSwgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MoKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9y
ZGVyZWQsIHZhbHVlRlBSLCB2YWx1ZUZQUikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5
OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0zMTA1LDcg
KzM0OTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIAogICAgICAgICBvcDEudXNlKCk7CiAgICAgICAgIAotICAgICAgICBpZiAoIShtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH4oU3BlY051bWJlciB8IFNwZWNCb29s
ZWFuKSkpCisgICAgICAgIGlmICghKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90
eXBlICYgfihTcGVjRnVsbE51bWJlciB8IFNwZWNCb29sZWFuKSkpCiAgICAgICAgICAgICBtX2pp
dC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoVGVzdDY0
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rl
cik7CkBAIC0zMjAyLDcgKzM1OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3Bl
cmFuZCh0aGlzLCB1c2UpOwogICAgICAgICAgICAgICAgICAgICBGUFJSZWcgb3BGUFIgPSBvcGVy
YW5kLmZwcigpOwogICAgICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY1JlYWxOdW1iZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNGdWxsUmVhbE51bWJl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaERvdWJsZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3Jk
ZXJlZCwgb3BGUFIsIG9wRlBSKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91
YmxlKG9wRlBSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoZG91
YmxlKSAqIG9wZXJhbmRJZHgpKTsKQEAgLTMyNjcsNyArMzY1OCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBGUFJSZWcgb3BGUFIg
PSBvcGVyYW5kLmZwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2Ny
YXRjaC5ncHIoKTsKICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaERvdWJsZSgKICAgICAgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBvcEZQUiwgb3BGUFIp
KTsKICAgICAgICAgICAgICAgICBtX2ppdC5ib3hEb3VibGUob3BGUFIsIHNjcmF0Y2hHUFIpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDkgQEAgU2lsZW50
UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgICAgICAgICAgc3BpbGxBY3Rp
b24gPSBTdG9yZTMyUGF5bG9hZDsKICAgICAgICAgZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0g
RGF0YUZvcm1hdENlbGwgfHwgcmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0b3JhZ2UpCiAg
ICAgICAgICAgICBzcGlsbEFjdGlvbiA9IFN0b3JlUHRyOwotICAgICAgICBlbHNlIHsKKyAgICAg
ICAgZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHJlZ2lzdGVy
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAgICAgc3BpbGxBY3Rp
b24gPSBTdG9yZTY0OworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lz
dGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3Rv
cmU2NDsKICAgICAgICAgfQpAQCAtMzg2LDYgKzM4OCw0MSBAQCBTaWxlbnRSZWdpc3RlclNhdmVQ
bGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBE
YXRhRm9ybWF0U3RvcmFnZSkgewogICAgICAgICBBU1NFUlQoaW5mby5ncHIoKSA9PSBzb3VyY2Up
OwogICAgICAgICBmaWxsQWN0aW9uID0gTG9hZFB0cjsKKyAgICB9IGVsc2UgaWYgKHJlZ2lzdGVy
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkgeworICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3Rh
bnQoKSkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBTZXRJbnQ0OENvbnN0YW50OworICAgICAg
ICBlbHNlIGlmIChpc0pTSW50MzIoaW5mby5zcGlsbEZvcm1hdCgpKSB8fCBpbmZvLnNwaWxsRm9y
bWF0KCkgPT0gRGF0YUZvcm1hdEpTKQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQzMlBh
eWxvYWRDb252ZXJ0VG9JbnQ0ODsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgp
ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7Cisg
ICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NDgpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0U2hpZnRMZWZ0MTY7CisgICAgICAg
IGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkKKyAgICAgICAg
ICAgIGZpbGxBY3Rpb24gPSBMb2FkNjQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8g
U2hvdWxkIG5ldmVyIGhhcHBlbi4gQW55dGhpbmcgdGhhdCBxdWFsaWZpZXMgYXMgYW4gaW50MzIg
d2lsbCBuZXZlcgorICAgICAgICAgICAgLy8gYmUgdHVybmVkIGludG8gYSBjZWxsIChpbW1lZGlh
dGUgc3BlYyBmYWlsKSBvciBhIGRvdWJsZSAodG8tZG91YmxlCisgICAgICAgICAgICAvLyBjb252
ZXJzaW9ucyBpbnZvbHZlIGEgc2VwYXJhdGUgbm9kZSkuCisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChyZWdpc3RlckZv
cm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAgICAgaWYgKG5vZGUtPmhhc0Nv
bnN0YW50KCkpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0U3RyaWN0SW50NDhDb25zdGFu
dDsKKyAgICAgICAgZWxzZSBpZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5m
by5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRKUykKKyAgICAgICAgICAgIGZpbGxBY3Rpb24g
PSBMb2FkMzJQYXlsb2FkU2lnbkV4dGVuZDsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGlsbEZv
cm1hdCgpID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2Fk
NjRTaGlmdFJpZ2h0MTY7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBE
YXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0Owor
ICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCisg
ICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFu
IGludDMyIHdpbGwgbmV2ZXIKKyAgICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAo
aW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRvdWJsZQorICAgICAgICAgICAg
Ly8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2Fk
NjQ7IC8vIE1ha2UgR0NDIGhhcHB5LgorICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAg
QVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQpAQCAtMzkzLDcgKzQzMCw2IEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4gU3BlY3VsYXRpdmVK
SVQ6OnMKICAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIGlm
ICh2YWx1ZU9mSlNDb25zdGFudChub2RlKS5pc0NlbGwoKSkKICAgICAgICAgICAgICAgICBmaWxs
QWN0aW9uID0gU2V0VHJ1c3RlZEpTQ29uc3RhbnQ7Ci0gICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgZmlsbEFjdGlvbiA9IFNldEpTQ29uc3RhbnQ7CiAgICAgICAgIH0gZWxzZSBpZiAo
aW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgQVNT
RVJUKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyKTsKQEAgLTUxMiw2ICs1NDgs
MTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBTaQogICAgIGNhc2Ug
U2V0SW50MzJDb25zdGFudDoKICAgICAgICAgbV9qaXQubW92ZShJbW0zMih2YWx1ZU9mSW50MzJD
b25zdGFudChwbGFuLm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIFNldEludDQ4Q29uc3RhbnQ6CisgICAgICAgIG1faml0
Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29uc3RhbnQocGxhbi5ub2RlKCkpLmFzTWFjaGluZUludCgp
IDw8IDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2V0U3RyaWN0
SW50NDhDb25zdGFudDoKKyAgICAgICAgbV9qaXQubW92ZShJbW02NCh2YWx1ZU9mSlNDb25zdGFu
dChwbGFuLm5vZGUoKSkuYXNNYWNoaW5lSW50KCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJl
YWs7CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICBjYXNlIFNldEJvb2xlYW5Db25zdGFu
dDoKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIodmFsdWVPZkJvb2xlYW5Db25zdGFu
dChwbGFuLm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CkBAIC01MzMsNiAr
NTc3LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0
dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTG9hZDMyUGF5bG9hZENvbnZlcnRUb0ludDQ4OgorICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwg
cGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHBsYW4uZ3ByKCks
IHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBw
bGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkMzJQYXlsb2FkU2lnbkV4
dGVuZDoKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4u
bm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5z
aWduRXh0ZW5kMzJUb1B0cihwbGFuLmdwcigpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBMb2FkRG91YmxlQm94RG91YmxlOgogICAgICAgICBtX2ppdC5sb2FkNjQoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxh
bi5ncHIoKSk7CiAgICAgICAgIG1faml0LnN1YjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3RlciwgcGxhbi5ncHIoKSk7CkBAIC01NzQsNiArNjI3LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICBjYXNlIExvYWQ2NDoKICAgICAgICAgbV9qaXQu
bG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0
ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIExvYWQ2NFNoaWZ0
UmlnaHQxNjoKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBs
YW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2pp
dC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBMb2FkNjRTaGlmdExlZnQxNjoKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4u
Z3ByKCkpOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBwbGFuLmdw
cigpKTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIExvYWREb3VibGU6CiAgICAg
ICAgIG1faml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCkt
PnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5mcHIoKSk7CkBAIC0xNDE2LDYgKzE0NzcsMTAgQEAg
Ym9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbgogCiAgICAgICAgIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAgICAgICAgY29tcGlsZVBlZXBI
b2xlSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0aW9uKTsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUlu
dFVzZSkpCisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ0OEJyYW5jaChub2RlLCBicmFu
Y2hOb2RlLCBjb25kaXRpb24pOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKQogICAgICAgICAgICAgY29t
cGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGRvdWJsZUNvbmRpdGlv
bik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ29tcGFyZUVxKSB7CkBAIC0xNTA3
LDYgKzE1NzIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5saW5lU3RhcnQoCiAg
ICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJj
ZSA9IFZhbHVlU291cmNlKEludDMySW5KU1N0YWNrKTsKICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAgICAgICAgICAgIHZhbHVlU291
cmNlID0gVmFsdWVTb3VyY2UoSW50NDhJbkpTU3RhY2spOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAgICAgICAgICAgICAgICB2YWx1ZVNv
dXJjZSA9IFZhbHVlU291cmNlKENlbGxJbkpTU3RhY2spOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTg3Myw3ICsxOTQxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJs
ZVB1dEJ5VgogICAgIEZQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmZwcigpOwogICAgIAogICAgIERG
R19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncygpLCBjaGlsZDMsIFNwZWNSZWFsTnVt
YmVyLAorICAgICAgICBKU1ZhbHVlUmVncygpLCBjaGlsZDMsIFNwZWNGdWxsUmVhbE51bWJlciwK
ICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlUmVnLCB2YWx1ZVJlZykpOwogICAgIApA
QCAtMjE0OSw2ICsyMjE3LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRv
SW50MzIKICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ0
OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKKyAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
bV9qaXQuemVyb0V4dGVuZDMyVG9QdHIob3AxR1BSLCByZXN1bHRHUFIpOworICAgICAgICBpbnQz
MlJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIERhdGFGb3JtYXRJbnQzMik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAKICAgICBjYXNlIE51bWJl
clVzZToKICAgICBjYXNlIE5vdENlbGxVc2U6IHsKQEAgLTIxODcsNyArMjI2Nyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKIAogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsKICAgICAgICAgICAgICAgICBE
RkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9k
ZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KGdwciksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewpAQCAtMjI0Myw3ICsyMzIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsKICAgICAgICAgICAgICAgICAgICAgREZHX1RZ
UEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdHUFIsIHBh
eWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBT
cGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IHRhZ0dQUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6TG93ZXN0VGFnKSkpOwpAQCAtMjM4OSwxNSArMjQ2OSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW50MzJUb0RvdWJsCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2Vy
ID0gbV9qaXQuYnJhbmNoNjQoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICAKLSAgICBpZiAo
bmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIpKSB7CisgICAgaWYgKG5l
ZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlcikpIHsKICAgICAgICAg
aWYgKG5vZGUtPmZsYWdzKCkgJiBOb2RlRXhpdHNGb3J3YXJkKSB7CiAgICAgICAgICAgICBmb3J3
YXJkVHlwZUNoZWNrKAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUt
PmNoaWxkMSgpLCBTcGVjTnVtYmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMUdQ
UiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2pp
dC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKSwKICAgICAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5OjppbkdQ
UihvcDFHUFIsIERhdGFGb3JtYXRKUykpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
YmFja3dhcmRUeXBlQ2hlY2soCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwg
bm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
b3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgb3AxR1BSLCBHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI0MjAsMTUg
KzI1MDAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyVG9Eb3VibAogICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Oklu
dDMyVGFnKSk7CiAgICAgCi0gICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBT
cGVjTnVtYmVyKSkgeworICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDEoKSwgU3Bl
Y0Z1bGxOdW1iZXIpKSB7CiAgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZUV4aXRzRm9y
d2FyZCkgewogICAgICAgICAgICAgZm9yd2FyZFR5cGVDaGVjaygKLSAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3Bl
Y051bWJlciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxv
YWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCiAgICAgICAgICAgICAgICAg
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxVGFnR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSksCiAgICAgICAgICAgICAgICAgVmFsdWVS
ZWNvdmVyeTo6aW5QYWlyKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUikpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgYmFja3dhcmRUeXBlQ2hlY2soCi0gICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNO
dW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2Fk
R1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMVRhZ0dQUiwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1
NDksNiArMjYyOSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbklu
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBp
ZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7CisgICAgICAgIG1faml0Lnpl
cm9FeHRlbmQzMlRvUHRyKHJlc3VsdFJlZywgcmVzdWx0UmVnKTsKKyAgICAgICAgc3RyaWN0SW50
NDhSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorICAgIAogICAgIEZQUlRlbXBvcmFyeSBmcmVzdWx0KHRoaXMpOwogICAgIG1faml0LmNvbnZl
cnRJbnQzMlRvRG91YmxlKHJlc3VsdFJlZywgZnJlc3VsdC5mcHIoKSk7CiAgICAgSklUQ29tcGls
ZXI6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6R3JlYXRl
clRoYW5PckVxdWFsLCByZXN1bHRSZWcsIFRydXN0ZWRJbW0zMigwKSk7CkBAIC0yNjAyLDYgKzI2
OTAsMzEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAgICAgU3BlY3VsYXRlU3Ry
aWN0SW50NDhPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2UpOworICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9
IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlT3AuZ3ByKCksIHNj
cmF0Y2hSZWcpOworICAgICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgeworICAgICAgICAg
ICAgICAgIEFTU0VSVChlbGVtZW50U2l6ZSh0eXBlKSA9PSAxKTsKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBpbkJvdW5kcyA9IG1faml0LmJyYW5jaDY0KAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBzY3JhdGNoUmVnLCBKSVRD
b21waWxlcjo6VHJ1c3RlZEltbTY0KDB4ZmYpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCB0b29CaWcgPSBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuLCBzY3JhdGNoUmVnLCBKSVRDb21waWxlcjo6VHJ1
c3RlZEltbTY0KDB4ZmYpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0z
MigwKSwgc2NyYXRjaFJlZyk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
Y2xhbXBlZCA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICB0b29CaWcubGluaygmbV9q
aXQpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0z
MigyNTUpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgICAgICAgICBjbGFtcGVkLmxpbmsoJm1faml0
KTsKKyAgICAgICAgICAgICAgICBpbkJvdW5kcy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICB2YWx1ZS5hZG9wdChzY3JhdGNoKTsKKyAgICAgICAgICAgIHZhbHVlR1BS
ID0gc2NyYXRjaFJlZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIE51bWJlclVzZTogewog
ICAgICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewogICAgICAgICAgICAgICAgIEFTU0VS
VChlbGVtZW50U2l6ZSh0eXBlKSA9PSAxKTsKQEAgLTI4NzAsNyArMjk4Myw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICAgICAgICAgIGludDMyUmVzdWx0
KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAKKyAgICAgICAgCiAgICAgICAgIGlmIChpc051bWJlckNvbnN0YW50KG5v
ZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFu
ZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgaW50MzJfdCBpbW0yID0g
dmFsdWVPZkludDMyQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCkubm9kZSgpKTsKQEAgLTI5MTUsNiAr
MzAyOCwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWRkKE5vZGUqIG5vCiAgICAg
ICAgIGludDMyUmVzdWx0KGdwclJlc3VsdCwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7
CisgICAgICAgIC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxvdyBjaGVjaz8gSWYgd2UgY2FuIHBy
b3ZlIHRoYXQgbmVpdGhlciBpbnB1dCBjYW4gYmUKKyAgICAgICAgLy8gSW50NDggdGhlbiB0aGUg
b3ZlcmZsb3cgY2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5LgorICAgICAgICBpZiAoIW1fc3Rh
dGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KQorICAgICAg
ICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuY291bGRCZVR5cGUoU3Bl
Y0ludDQ4KSkgeworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJ
bnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBvcDEpOworICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKKyAgICAgICAgICAgIG1faml0
Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgbV9qaXQuYWRkNjQo
b3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0
LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIG9wMih0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2Us
IG9wMSwgb3AyKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7
CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92ZXJmbG93LCBK
U1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoQWRkNjQoTWFjcm9Bc3Nl
bWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOworICAgICAgICBpbnQ0
OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAg
ICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAt
MzA2MCw2ICszMjAwLDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihO
b2QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgLy8gV2lsbCB3ZSBuZWVkIGFuIG92
ZXJmbG93IGNoZWNrPyBJZiB3ZSBjYW4gcHJvdmUgdGhhdCBuZWl0aGVyIGlucHV0IGNhbiBiZQor
ICAgICAgICAvLyBJbnQ0OCB0aGVuIHRoZSBvdmVyZmxvdyBjaGVjayB3aWxsIG5vdCBiZSBuZWNl
c3NhcnkuCisgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jb3Vs
ZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAgICAgICAmJiAhbV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpKSB7CisgICAgICAgICAgICBTcGVjdWxh
dGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hp
bGQyKCksIG9wMSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBvcDEpOworICAgICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7
CisgICAgICAgICAgICBtX2ppdC5zdWI2NChvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAg
ICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG9wMS5mb3JtYXQoKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFNwZWN1bGF0
ZUludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxh
dGVJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIpOworICAgICAgICBtX2ppdC5tb3Zl
KG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAg
ICAgICAgICAgIEludDQ4T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBt
X2ppdC5icmFuY2hTdWI2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMi5ncHIoKSwgcmVz
dWx0LmdwcigpKSk7CisgICAgICAgIGludDQ4UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKwogICAgIGNh
c2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzA4OCw2ICszMjU1LDkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAogCiAgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigp
LCByZXN1bHQuZ3ByKCkpOwogCisgICAgICAgIC8vIE5vdGU6IHRoZXJlIGlzIG5vIG5vdGlvbiBv
ZiBiZWluZyBub3QgdXNlZCBhcyBhIG51bWJlciwgYnV0IHNvbWVvbmUKKyAgICAgICAgLy8gY2Fy
aW5nIGFib3V0IG5lZ2F0aXZlIHplcm8uCisgICAgICAgIAogICAgICAgICBpZiAoYnl0ZWNvZGVD
YW5UcnVuY2F0ZUludGVnZXIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICBt
X2ppdC5uZWczMihyZXN1bHQuZ3ByKCkpOwogICAgICAgICBlbHNlIHsKQEAgLTMwOTksNiArMzI2
OSw0MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUoCiAgICAgICAg
IGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAg
ICBpZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0lu
dDQ4KSkgeworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOworICAgICAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgICAgICBtX2ppdC5tb3Zl
KG9wMUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm5lZzY0KHJlc3VsdEdQUik7
CisgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFy
aXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAg
ICAgICAgICAgICAgICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJl
c3VsdEdQUikpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50NDhSZXN1bHQocmVzdWx0
R1BSLCBub2RlLCBvcDEuZm9ybWF0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAg
R1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CisgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92ZXJmbG93LCBKU1ZhbHVl
UmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoTmVnNjQoTWFjcm9Bc3NlbWJsZXI6
Ok92ZXJmbG93LCByZXN1bHRHUFIpKTsKKyAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9yZU5l
Z2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkgeworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCks
IDAsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCByZXN1bHRHUFIpKTsKKyAgICAgICAgfQorICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTMxNjQsNiArMzM3MCw2
MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNdWwoTm9kCiAgICAgICAgIGlu
dDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cisg
ICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpICAgCisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7Cisg
ICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgY2xldmVyLiBXZSB3YW50IHRvIGRvIGFuIGludDQ4IG11
bHRpcGxpY2F0aW9uIGFuZCBjaGVjayB0aGUKKyAgICAgICAgLy8gaW50NDggb3ZlcmZsb3cgYml0
LiBUaGVyZSBpcyBubyBkaXJlY3QgaGFyZHdhcmUgc3VwcG9ydCBmb3IgdGhpcywgYnV0IHdlIGRv
CisgICAgICAgIC8vIGhhdmUgdGhlIGFiaWxpdHkgdG8gZG8gYW4gaW50NjQgbXVsdGlwbGljYXRp
b24gYW5kIGNoZWNrIHRoZSBpbnQ2NCBvdmVyZmxvdworICAgICAgICAvLyBiaXQuIFdlIGxldmVy
YWdlIHRoYXQuIENvbnNpZGVyIHRoYXQgYSwgYiBhcmUgaW50NDggbnVtYmVycyBpbnNpZGUgaW50
NjQKKyAgICAgICAgLy8gcmVnaXN0ZXJzLCB3aXRoIHRoZSBoaWdoIDE2IGJpdHMgYmVpbmcgc2ln
bi1leHRlbmRlZC4gV2UgY2FuIGRvOgorICAgICAgICAvLworICAgICAgICAvLyAgICAgKGEgKiAo
YiA8PCAxNikpCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoaXMgd2lsbCBnaXZlIHVzIGEgbGVm
dC1zaGlmdGVkIGludDQ4ICh2YWx1ZSBpcyBpbiBoaWdoIDQ4IGJpdHMsIGxvdyAxNgorICAgICAg
ICAvLyBiaXRzIGFyZSB6ZXJvKSBwbHVzIHRoZSBpbnQ0OCBvdmVyZmxvdyBiaXQuIEkuZS4gd2hl
dGhlciB0aGlzIDY0LWJpdAorICAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBvdmVyZmxvd3MgaXMg
aWRlbnRpY2FsIHRvIHdoZXRoZXIgdGhlICdhICogYicgNDgtYml0CisgICAgICAgIC8vIG11bHRp
cGxpY2F0aW9uIG92ZXJmbG93cy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSW4gb3VyIG5vbWVu
Y2xhdHVyZSwgdGhpcyBpczoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIHN0cmljdEludDQ4
KGEpICogaW50NDgoYikgPT4gaW50NDgKKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhhdCBpcyAi
c3RyaWN0SW50NDgiIG1lYW5zIHVuc2hpZnRlZCBhbmQgImludDQ4IiBtZWFucyBsZWZ0LXNoaWZ0
ZWQgYnkgMTYKKyAgICAgICAgLy8gYml0cy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gV2UgZG9u
J3QgY2FyZSB3aGljaCBvZiBvcDEgb3Igb3AyIHNlcnZlcyBhcyB0aGUgbGVmdC1zaGlmdGVkIG9w
ZXJhbmQsIHNvCisgICAgICAgIC8vIHdlIGp1c3QgZG8gd2hhdGV2ZXIgaXMgbW9yZSBjb252ZW5p
ZW50IGZvciBvcDEgYW5kIGhhdmUgb3AyIGRvIHRoZQorICAgICAgICAvLyBvcHBvc2l0ZS4gVGhp
cyBlbnN1cmVzIHRoYXQgd2UgZG8gYXQgbW9zdCBvbmUgc2hpZnQuCisKKyAgICAgICAgU3BlY3Vs
YXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQy
KCksIE9wcG9zaXRlU2hpZnQsIG9wMSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CisgICAgICAgIAorICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAgICAg
ICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworICAgICAgICAKKyAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3Vs
dEdQUik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0OE92ZXJm
bG93LCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoTXVsNjQoTWFj
cm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDJHUFIsIHJlc3VsdEdQUikpOworICAgICAgICAKKyAg
ICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVG
bGFncygpKSkgeworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmVzdWx0Tm9uWmVy
byA9IG1faml0LmJyYW5jaFRlc3Q2NCgKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAg
ICAgICAgICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgb3AxR1BSLCBUcnVz
dGVkSW1tNjQoMCkpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAg
ICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgb3AyR1BSLCBUcnVzdGVkSW1t
NjQoMCkpKTsKKyAgICAgICAgICAgIHJlc3VsdE5vblplcm8ubGluaygmbV9qaXQpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAog
ICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTM1ODcsNyArMzg0OSwxNCBAQCBib29sIFNwZWN1
bGF0aXZlSklUOjpjb21wYXJlKE5vZGUqIG5vZGUsCiAgICAgICAgIGNvbXBpbGVJbnQzMkNvbXBh
cmUobm9kZSwgY29uZGl0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLQorICAg
IAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNo
aW5lSW50VXNlKSkgeworICAgICAgICBjb21waWxlSW50NDhDb21wYXJlKG5vZGUsIGNvbmRpdGlv
bik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2
NCkKKyAgICAKICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKICAg
ICAgICAgY29tcGlsZURvdWJsZUNvbXBhcmUobm9kZSwgZG91YmxlQ29uZGl0aW9uKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzczNyw2ICs0MDA2LDIzIEBAIGJvb2wgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVTdHJpY3RFcShOb2QKICAgICAgICAgY29tcGlsZUludDMyQ29tcGFyZShub2Rl
LCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQor
ICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KSAgIAorICAgIGNhc2UgTWFjaGluZUludFVzZTogewor
ICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5j
aCgpOworICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CisgICAg
ICAgICAgICBOb2RlKiBicmFuY2hOb2RlID0gbV9ibG9jay0+YXQoYnJhbmNoSW5kZXhJbkJsb2Nr
KTsKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUludDQ4QnJhbmNoKG5vZGUsIGJyYW5jaE5v
ZGUsIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCk7CisgICAgICAgICAgICB1c2Uobm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG1faW5k
ZXhJbkJsb2NrID0gYnJhbmNoSW5kZXhJbkJsb2NrOworICAgICAgICAgICAgbV9jdXJyZW50Tm9k
ZSA9IGJyYW5jaE5vZGU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBjb21waWxlSW50NDhDb21wYXJlKG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5k
ZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKQEAgLTQ0OTIsOSArNDc3OCwyMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVJbnQzMihFZGdlCiAgICAgKFNwZWN1bGF0
ZUludDMyT3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3ByKCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSBlZGdlKQoreworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTWFjaGluZUludCkpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICAoU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kKHRoaXMs
IGVkZ2UpKS5ncHIoKTsKKyNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgVU5VU0VEX1BBUkFN
KGVkZ2UpOworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcihFZGdl
IGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTnVtYmVyKSkKKyAg
ICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsTnVtYmVyKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIChTcGVjdWxhdGVEb3VibGVPcGVyYW5kKHRoaXMsIGVkZ2UpKS5mcHIo
KTsKQEAgLTQ1MDIsMTMgKzQ4MDEsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
TnVtYmVyKEVkZwogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVSZWFsTnVtYmVyKEVk
Z2UgZWRnZSkKIHsKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNSZWFsTnVtYmVy
KSkKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsUmVhbE51bWJlcikpCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQo
dGhpcywgZWRnZSk7CiAgICAgRlBSUmVnIGZwciA9IG9wZXJhbmQuZnByKCk7CiAgICAgREZHX1RZ
UEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdzKCksIGVkZ2UsIFNwZWNSZWFsTnVtYmVyLAor
ICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAg
IG1faml0LmJyYW5jaERvdWJsZSgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVO
b3RFcXVhbE9yVW5vcmRlcmVkLCBmcHIsIGZwcikpOwogfQpAQCAtNDc3MCw3ICs1MDY5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgICAgICBBU1NFUlQo
IW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNJbnQzMikpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2Us
IFNwZWNOdW1iZXIpKTsKKyAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVj
RnVsbE51bWJlcikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAg
ICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCkpOwpAQCAtNDc4MSw2
ICs1MDgwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAg
IGNhc2UgSW50MzJVc2U6CiAgICAgICAgIHNwZWN1bGF0ZUludDMyKGVkZ2UpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZU1hY2hpbmVJ
bnQoZWRnZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVhbE51bWJlclVzZToKICAgICAg
ICAgc3BlY3VsYXRlUmVhbE51bWJlcihlZGdlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAx
NTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1OSw5ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgLy8gYW5kIGl0
cyBtYWNoaW5lIHJlZ2lzdGVycyBtYXkgYmUgcmV1c2VkLgogICAgIGJvb2wgY2FuUmV1c2UoTm9k
ZSogbm9kZSkKICAgICB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIg
PSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8g
PSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAg
ICAgICAgcmV0dXJuIGluZm8uY2FuUmV1c2UoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25J
bmZvKG5vZGUpLmNhblJldXNlKCk7CiAgICAgfQogICAgIGJvb2wgY2FuUmV1c2UoRWRnZSBub2Rl
VXNlKQogICAgIHsKQEAgLTIzNywxNSArMjM1LDExIEBAIHB1YmxpYzoKICAgICAvLyBhdm9pZCBz
cGlsbGluZyB2YWx1ZXMgd2Ugd2lsbCBuZWVkIGltbWVkaWF0ZWx5KS4KICAgICBib29sIGlzRmls
bGVkKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
Z2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZv
JiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rl
cik7Ci0gICAgICAgIHJldHVybiBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdE5v
bmU7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5yZWdpc3RlckZvcm1hdCgp
ICE9IERhdGFGb3JtYXROb25lOwogICAgIH0KICAgICBib29sIGlzRmlsbGVkRG91YmxlKE5vZGUq
IG5vZGUpCiAgICAgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0g
bm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0g
Z2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAg
ICAgIHJldHVybiBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZTsKKyAg
ICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKG5vZGUpLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0
YUZvcm1hdERvdWJsZTsKICAgICB9CiAKICAgICAvLyBDYWxsZWQgb24gYW4gb3BlcmFuZCBvbmNl
IGl0IGhhcyBiZWVuIGNvbnN1bWVkIGJ5IGEgcGFyZW50IG5vZGUuCkBAIC0yNTMsOCArMjQ3LDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9
IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9
IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworICAg
ICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvKG5vZGUpOwogCiAgICAg
ICAgIC8vIHVzZSgpIHJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2YWx1ZSBiZWNvbWVzIGRlYWQsIGFu
ZCBhbnkKICAgICAgICAgLy8gYXNzb2NpYXRlZCByZXNvdXJjZXMgbWF5IGJlIGZyZWVkLgpAQCAt
MzMzLDYgKzMyNiw3IEBAIHB1YmxpYzoKICAgICAvLyBtYWNoaW5lIHJlZ2lzdGVycywgaW1wbGlj
aXRseSBnZW5lcmF0aW5nIHNwZWN1bGF0aW9uIGNoZWNrcyBhcyBuZWVkZWQuCiAgICAgR1BSUmVn
IGZpbGxTcGVjdWxhdGVJbnQzMihFZGdlLCBEYXRhRm9ybWF0JiByZXR1cm5Gb3JtYXQpOwogICAg
IEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50MzJTdHJpY3QoRWRnZSk7CisgICAgR1BSUmVnIGZpbGxT
cGVjdWxhdGVJbnQ0OChFZGdlLCBEYXRhRm9ybWF0IGRlc2lyZWRGb3JtYXQpOwogICAgIEZQUlJl
ZyBmaWxsU3BlY3VsYXRlRG91YmxlKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2Vs
bChFZGdlKTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CkBAIC00Njgs
NiArNDYyLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGJveERvdWJsZShmcHIs
IGFsbG9jYXRlKCkpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGJveEludDQ4KEdQUlJlZyBzb3Vy
Y2VHUFIsIEdQUlJlZyB0YXJnZXRHUFIsIERhdGFGb3JtYXQgZm9ybWF0KTsKICNlbGlmIFVTRShK
U1ZBTFVFMzJfNjQpCiAgICAgdm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgR1BSUmVnIHRhZ0dQ
UiwgR1BSUmVnIHBheWxvYWRHUFIpCiAgICAgewpAQCAtNTU5LDExICs1NTUsMTEgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNLbm93bkludGVnZXIoTm9kZSog
bm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgflNwZWNJbnQz
Mik7IH0KLSAgICBib29sIGlzS25vd25DZWxsKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0
ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH5TcGVjQ2VsbCk7IH0KKyAgICBib29sIGlzS25vd25J
bnRlZ2VyKE5vZGUqIG5vZGUpIHsgcmV0dXJuIG1fc3RhdGUuZm9yTm9kZShub2RlKS5pc1R5cGUo
U3BlY0ludDMyKTsgfQorICAgIGJvb2wgaXNLbm93bkNlbGwoTm9kZSogbm9kZSkgeyByZXR1cm4g
bV9zdGF0ZS5mb3JOb2RlKG5vZGUpLmlzVHlwZShTcGVjQ2VsbCk7IH0KICAgICAKICAgICBib29s
IGlzS25vd25Ob3RJbnRlZ2VyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2Rl
KG5vZGUpLm1fdHlwZSAmIFNwZWNJbnQzMik7IH0KLSAgICBib29sIGlzS25vd25Ob3ROdW1iZXIo
Tm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3Bl
Y051bWJlcik7IH0KKyAgICBib29sIGlzS25vd25Ob3ROdW1iZXIoTm9kZSogbm9kZSkgeyByZXR1
cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0Z1bGxOdW1iZXIpOyB9CiAg
ICAgYm9vbCBpc0tub3duTm90Q2VsbChOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9y
Tm9kZShub2RlKS5tX3R5cGUgJiBTcGVjQ2VsbCk7IH0KICAgICAKICAgICAvLyBDaGVja3MvYWNj
ZXNzb3JzIGZvciBjb25zdGFudCB2YWx1ZXMuCkBAIC04MTYsNiArODEyLDI1IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIGludDMyUmVzdWx0KHJlZywgbm9kZSwgRGF0YUZvcm1hdEludDMyLCBt
b2RlKTsKICAgICB9CisgICAgdm9pZCBpbnQ0OFJlc3VsdChHUFJSZWcgcmVnLCBOb2RlKiBub2Rl
LCBEYXRhRm9ybWF0IGZvcm1hdCwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRy
ZW4pCisgICAgeworICAgICAgICBpZiAobW9kZSA9PSBDYWxsVXNlQ2hpbGRyZW4pCisgICAgICAg
ICAgICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVh
bFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgIEdlbmVyYXRpb25J
bmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdp
c3Rlcik7CisKKyAgICAgICAgbV9ncHJzLnJldGFpbihyZWcsIHZpcnR1YWxSZWdpc3RlciwgU3Bp
bGxPcmRlckpTKTsKKyAgICAgICAgaW5mby5pbml0SW50NDgobm9kZSwgbm9kZS0+cmVmQ291bnQo
KSwgcmVnLCBmb3JtYXQpOworICAgIH0KKyAgICB2b2lkIGludDQ4UmVzdWx0KEdQUlJlZyByZWcs
IE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQorICAg
IHsKKyAgICAgICAgaW50NDhSZXN1bHQocmVnLCBub2RlLCBEYXRhRm9ybWF0SW50NDgsIG1vZGUp
OworICAgIH0KKyAgICB2b2lkIHN0cmljdEludDQ4UmVzdWx0KEdQUlJlZyByZWcsIE5vZGUqIG5v
ZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQorICAgIHsKKyAgICAg
ICAgaW50NDhSZXN1bHQocmVnLCBub2RlLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgsIG1vZGUpOwor
ICAgIH0KICAgICB2b2lkIG5vUmVzdWx0KE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2Rl
ID0gQ2FsbFVzZUNoaWxkcmVuKQogICAgIHsKICAgICAgICAgaWYgKG1vZGUgPT0gVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KQpAQCAtOTAwLDcgKzkxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGluaXRDb25zdGFudEluZm8oTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0lu
dDMyQ29uc3RhbnQobm9kZSkgfHwgaXNOdW1iZXJDb25zdGFudChub2RlKSB8fCBpc0pTQ29uc3Rh
bnQobm9kZSkpOwotICAgICAgICBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIobm9k
ZS0+dmlydHVhbFJlZ2lzdGVyKCkpLmluaXRDb25zdGFudChub2RlLCBub2RlLT5yZWZDb3VudCgp
KTsKKyAgICAgICAgZ2VuZXJhdGlvbkluZm8obm9kZSkuaW5pdENvbnN0YW50KG5vZGUsIG5vZGUt
PnJlZkNvdW50KCkpOwogICAgIH0KICAgICAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxs
cyB0byBDKysgaGVscGVyIGZ1bmN0aW9ucy4KQEAgLTE4ODksMTUgKzE5MDQsMjIgQEAgcHVibGlj
OgogICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KG5vZGUpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUt
PnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVy
YXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICAK
LSAgICAgICAgcmV0dXJuIGluZm8uaXNKU0ludDMyKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0
aW9uSW5mbyhub2RlKS5pc0pTSW50MzIoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBiZXR0ZXJV
c2VTdHJpY3RJbnQ0OChOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFnZW5lcmF0
aW9uSW5mbyhub2RlKS5pc0ludDQ4KCk7CisgICAgfQorICAgIGJvb2wgYmV0dGVyVXNlU3RyaWN0
SW50NDgoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJldHRlclVzZVN0cmljdElu
dDQ4KGVkZ2Uubm9kZSgpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBjb21wYXJlKE5vZGUqLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZUNvbmRpdGlvbiwgU19ERkdPcGVyYXRpb25fRUpKKTsKICAgICBib29sIGNvbXBpbGVQZWVwSG9s
ZUJyYW5jaChOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIE1hY3Jv
QXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfREZHT3BlcmF0aW9uX0VKSik7CiAgICAgdm9p
ZCBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgSklU
Q29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworICAgIHZvaWQgY29tcGlsZVBlZXBIb2xl
SW50NDhCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlv
bmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUJvb2xlYW5CcmFuY2goTm9k
ZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsK
ICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZURvdWJsZUJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNo
Tm9kZSwgSklUQ29tcGlsZXI6OkRvdWJsZUNvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVl
cEhvbGVPYmplY3RFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CkBAIC0xOTQ1LDYg
KzE5NjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKik7
CiAgICAgCiAgICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxl
cjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisgICAgdm9pZCBjb21waWxlSW50NDhDb21wYXJlKE5v
ZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21w
aWxlQm9vbGVhbkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uKTsKICAgICB2b2lkIGNvbXBpbGVEb3VibGVDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxl
cjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICAKQEAgLTIxMTgsNiArMjE0MSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGZvcndhcmRUeXBlQ2hlY2soSlNWYWx1ZVNvdXJjZSwgRWRnZSwgU3BlY3VsYXRl
ZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWls
LCBjb25zdCBWYWx1ZVJlY292ZXJ5Jik7CiAKICAgICB2b2lkIHNwZWN1bGF0ZUludDMyKEVkZ2Up
OworICAgIHZvaWQgc3BlY3VsYXRlTWFjaGluZUludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0
ZU51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSk7CiAgICAg
dm9pZCBzcGVjdWxhdGVCb29sZWFuKEVkZ2UpOwpAQCAtMjE5NSw2ICsyMjE5LDE2IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2dlbmVyYXRpb25JbmZvW29wZXJhbmRUb0xvY2Fs
KHZpcnR1YWxSZWdpc3RlcildOwogICAgIH0KKyAgICAKKyAgICBHZW5lcmF0aW9uSW5mbyYgZ2Vu
ZXJhdGlvbkluZm8oTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9u
SW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIobm9kZS0+dmlydHVhbFJlZ2lzdGVyKCkpOworICAgIH0K
KyAgICAKKyAgICBHZW5lcmF0aW9uSW5mbyYgZ2VuZXJhdGlvbkluZm8oRWRnZSBlZGdlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKGVkZ2Uubm9kZSgpKTsKKyAgICB9CiAK
ICAgICAvLyBUaGUgSklULCB3aGlsZSBhbHNvIHByb3ZpZGVzIE1hY3JvQXNzZW1ibGVyIGZ1bmN0
aW9uYWxpdHkuCiAgICAgSklUQ29tcGlsZXImIG1faml0OwpAQCAtMjY3Niw2ICsyNzEwLDE3OSBA
QCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKKy8vIEdpdmVzIHlv
dSBhIGNhbm9uaWNhbCBJbnQ0OCAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAxNiwgbG93IGJp
dHMgemVybykuCitjbGFzcyBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFNwZWN1bGF0ZUludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVk
Z2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxh
dGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAg
ICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51
c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5v
ZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgflNwZWN1bGF0ZUlu
dDQ4T3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52
YWxpZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOworICAg
IH0KKyAgICAKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZWRnZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVnIGdwcigpCisg
ICAgeworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAg
ICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVJbnQ0OChlZGdlKCks
IERhdGFGb3JtYXRJbnQ0OCk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKKyAgICB9
CisgICAgCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkp
OworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0OworICAg
IEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisKKy8vIEdpdmVz
IHlvdSBhIHN0cmljdCBJbnQ0OCAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUgbG93IDQ4IGJp
dHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCitjbGFzcyBTcGVjdWxhdGVTdHJp
Y3RJbnQ0OE9wZXJhbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVN0cmljdElu
dDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxh
dGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBt
X2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFs
aWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9k
ZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGlu
ZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAg
ICBncHIoKTsKKyAgICB9CisgICAgCisgICAgflNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCgp
CisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52YWxpZEdQUlJlZyk7
CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOworICAgIH0KKyAgICAKKyAg
ICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZWRnZTsKKyAgICB9
CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWRn
ZSgpLm5vZGUoKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVnIGdwcigpCisgICAgeworICAgICAg
ICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1fZ3By
T3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVJbnQ0OChlZGdlKCksIERhdGFGb3JtYXRT
dHJpY3RJbnQ0OCk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKKyAgICB9CisgICAg
CisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShub2RlKCkpOworICAg
IH0KKyAgICAKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0OworICAgIEVkZ2Ug
bV9lZGdlOworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisKK2VudW0gT3Bwb3NpdGVT
aGlmdFRhZyB7IE9wcG9zaXRlU2hpZnQgfTsKKworY2xhc3MgU3BlY3VsYXRlV2hpY2hldmVySW50
NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0
OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRp
b25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9q
aXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlk
KEludmFsaWRHUFJSZWcpCisgICAgICAgICwgbV9zdHJpY3Qoaml0LT5iZXR0ZXJVc2VTdHJpY3RJ
bnQ0OChlZGdlKSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVz
ZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIo
KTsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVy
YW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgY29uc3QgU3BlY3VsYXRlV2hpY2hl
dmVySW50NDhPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAg
LCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQor
ICAgICAgICAsIG1fc3RyaWN0KG90aGVyLm1fc3RyaWN0KQorICAgIHsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVz
ZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9k
ZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBTcGVj
dWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdl
LCBPcHBvc2l0ZVNoaWZ0VGFnLCBjb25zdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQm
IG90aGVyLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3Bl
Y3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQor
ICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgICAgICwgbV9zdHJp
Y3QoIW90aGVyLm1fc3RyaWN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBt
b2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNo
aW5lSW50VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAg
ICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICB+U3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVy
YW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dwck9ySW52YWxpZCAhPSBJbnZhbGlkR1BS
UmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayhtX2dwck9ySW52YWxpZCk7CisgICAgfQorICAg
IAorICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lZGdlOwor
ICAgIH0KKyAgICAKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBlZGdlKCkubm9kZSgpOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcgZ3ByKCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAgICAg
ICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlSW50NDgoCisgICAgICAgICAg
ICAgICAgZWRnZSgpLCBtX3N0cmljdCA/IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA6IERhdGFGb3Jt
YXRJbnQ0OCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHVzZSgpCisgICAgeworICAgICAgICBtX2ppdC0+dXNlKG5vZGUo
KSk7CisgICAgfQorICAgIAorICAgIERhdGFGb3JtYXQgZm9ybWF0KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3N0cmljdCA/IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA6IERhdGFGb3Jt
YXRJbnQ0ODsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0Owor
ICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKKyAgICBib29sIG1f
c3RyaWN0OworfTsKKwogY2xhc3MgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgU3BlY3VsYXRlRG91YmxlT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBF
ZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRT
cGVjdWxhdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNw
cAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOSBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlCiAgICAgY2FzZSBLbm93bkludDMyVXNlOgogICAgICAg
ICBvdXQucHJpbnQoIktub3duSW50MzIiKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNYWNo
aW5lSW50VXNlOgorICAgICAgICBvdXQucHJpbnQoIk1hY2hpbmVJbnQiKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgICAgICBvdXQucHJpbnQoIlJlYWxOdW1i
ZXIiKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgZW51bSBVc2VLaW5k
IHsKICAgICBVbnR5cGVkVXNlLAogICAgIEludDMyVXNlLAogICAgIEtub3duSW50MzJVc2UsCisg
ICAgTWFjaGluZUludFVzZSwKICAgICBSZWFsTnVtYmVyVXNlLAogICAgIE51bWJlclVzZSwKICAg
ICBLbm93bk51bWJlclVzZSwKQEAgLTY2LDExICs2NywxMyBAQCBBTFdBWVNfSU5MSU5FIFNwZWN1
bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNlIEtub3du
SW50MzJVc2U6CiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CisgICAgY2FzZSBNYWNoaW5lSW50
VXNlOgorICAgICAgICByZXR1cm4gU3BlY01hY2hpbmVJbnQ7CiAgICAgY2FzZSBSZWFsTnVtYmVy
VXNlOgotICAgICAgICByZXR1cm4gU3BlY1JlYWxOdW1iZXI7CisgICAgICAgIHJldHVybiBTcGVj
RnVsbFJlYWxOdW1iZXI7CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgY2FzZSBLbm93bk51bWJl
clVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNOdW1iZXI7CisgICAgICAgIHJldHVybiBTcGVjRnVs
bE51bWJlcjsKICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIHJldHVybiBTcGVjQm9vbGVh
bjsKICAgICBjYXNlIENlbGxVc2U6CkBAIC0xMjUsNiArMTI4LDcgQEAgQUxXQVlTX0lOTElORSBi
b29sIGlzTnVtZXJpY2FsKFVzZUtpbmQgawogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2Ug
SW50MzJVc2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgorICAgIGNhc2UgTWFjaGluZUludFVz
ZToKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgY2Fz
ZSBLbm93bk51bWJlclVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFs
dWVTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsdWVTb3VyY2UuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOSBA
QCB2b2lkIFZhbHVlU291cmNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAgICAgY2FzZSBJbnQz
MkluSlNTdGFjazoKICAgICAgICAgb3V0LnByaW50KCJJbnQzMiIpOwogICAgICAgICBicmVhazsK
KyAgICBjYXNlIEludDQ4SW5KU1N0YWNrOgorICAgICAgICBvdXQucHJpbnQoIkludDQ4Iik7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2VsbEluSlNTdGFjazoKICAgICAgICAgb3V0LnByaW50
KCJDZWxsIik7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWx1ZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsdWVTb3VyY2UuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3
IEBAIGVudW0gVmFsdWVTb3VyY2VLaW5kIHsKICAgICBTb3VyY2VOb3RTZXQsCiAgICAgVmFsdWVJ
bkpTU3RhY2ssCiAgICAgSW50MzJJbkpTU3RhY2ssCisgICAgSW50NDhJbkpTU3RhY2ssCiAgICAg
Q2VsbEluSlNTdGFjaywKICAgICBCb29sZWFuSW5KU1N0YWNrLAogICAgIERvdWJsZUluSlNTdGFj
aywKQEAgLTU2LDYgKzU3LDggQEAgc3RhdGljIGlubGluZSBWYWx1ZVNvdXJjZUtpbmQgZGF0YUZv
cm1hdAogICAgIHN3aXRjaCAoZGF0YUZvcm1hdCkgewogICAgIGNhc2UgRGF0YUZvcm1hdEludDMy
OgogICAgICAgICByZXR1cm4gSW50MzJJbkpTU3RhY2s7CisgICAgY2FzZSBEYXRhRm9ybWF0SW50
NDg6CisgICAgICAgIHJldHVybiBJbnQ0OEluSlNTdGFjazsKICAgICBjYXNlIERhdGFGb3JtYXRE
b3VibGU6CiAgICAgICAgIHJldHVybiBEb3VibGVJbkpTU3RhY2s7CiAgICAgY2FzZSBEYXRhRm9y
bWF0Qm9vbGVhbjoKQEAgLTc5LDYgKzgyLDggQEAgc3RhdGljIGlubGluZSBEYXRhRm9ybWF0IHZh
bHVlU291cmNlS2luZAogICAgICAgICByZXR1cm4gRGF0YUZvcm1hdEpTOwogICAgIGNhc2UgSW50
MzJJbkpTU3RhY2s6CiAgICAgICAgIHJldHVybiBEYXRhRm9ybWF0SW50MzI7CisgICAgY2FzZSBJ
bnQ0OEluSlNTdGFjazoKKyAgICAgICAgcmV0dXJuIERhdGFGb3JtYXRJbnQ0ODsKICAgICBjYXNl
IENlbGxJbkpTU3RhY2s6CiAgICAgICAgIHJldHVybiBEYXRhRm9ybWF0Q2VsbDsKICAgICBjYXNl
IEJvb2xlYW5JbkpTU3RhY2s6CkBAIC0xMzksNiArMTQ0LDggQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuIFZhbHVlU291cmNlKERvdWJsZUluSlNTdGFjayk7CiAgICAgICAgIGNhc2UgRmx1
c2hlZEludDMyOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEludDMySW5KU1N0YWNr
KTsKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgICAgICByZXR1cm4gVmFsdWVT
b3VyY2UoSW50NDhJbkpTU3RhY2spOwogICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgogICAgICAg
ICAgICAgcmV0dXJuIFZhbHVlU291cmNlKENlbGxJbkpTU3RhY2spOwogICAgICAgICBjYXNlIEZs
dXNoZWRCb29sZWFuOgpAQCAtMTgxLDYgKzE4OCw5IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBJ
bnQzMkluSlNTdGFjazoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5
SW5KU1N0YWNrQXNVbmJveGVkSW50MzIoKTsKICAgICAgICAgICAgIAorICAgICAgICBjYXNlIElu
dDQ4SW5KU1N0YWNrOgorICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJ
bkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCgpOworICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2Vs
bEluSlNTdGFjazoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5K
U1N0YWNrQXNVbmJveGVkQ2VsbCgpOwogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHJldmlzaW9uIDE1
NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw3ICsyMzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIAog
ICAgICAgICAvLyBJZiB0aGUgdmFyaWFibGUgaXMgbm90IGEgbnVtYmVyIHByZWRpY3Rpb24sIHRo
ZW4gdGhpcyBkb2Vzbid0CiAgICAgICAgIC8vIG1ha2UgYW55IHNlbnNlLgotICAgICAgICBpZiAo
IWlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKSkgeworICAgICAgICBpZiAoIWlzRnVs
bE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1F
OiB3ZSBtYXkgZW5kIHVwIGZvcmNpbmcgYSBsb2NhbCBpbiBpbmxpbmVkIGFyZ3VtZW50IHBvc2l0
aW9uIHRvIGJlIGEgZG91YmxlIGV2ZW4KICAgICAgICAgICAgIC8vIGlmIGl0IGlzIHNvbWV0aW1l
cyBub3QgZXZlbiBudW1lcmljLCBzaW5jZSB0aGlzIG5ldmVyIHNpZ25hbHMgdGhlIGZhY3QgdGhh
dCBpdCBkb2Vzbid0CiAgICAgICAgICAgICAvLyB3YW50IGRvdWJsZXMuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk1MTEKQEAgLTMzMyw2ICszMzMsOSBAQCBwdWJs
aWM6CiAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAg
ICAgICByZXR1cm4gRmx1c2hlZEludDMyOwogICAgICAgICAKKyAgICAgICAgaWYgKGVuYWJsZUlu
dDQ4KCkgJiYgIW9wZXJhbmRJc0FyZ3VtZW50KG1fbG9jYWwpICYmIGlzTWFjaGluZUludFNwZWN1
bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRJbnQ0ODsKKyAg
ICAgICAgCiAgICAgICAgIGlmIChpc0NlbGxTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAg
ICAgICAgIHJldHVybiBGbHVzaGVkQ2VsbDsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENBcmd1bWVudEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDQXJndW1lbnRHZXR0ZXIuY3BwCShyZXZpc2lvbiAxNTU5
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENBcmd1bWVudEdldHRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwyMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAKLXZvaWQgQ0FyZ3VtZW50R2V0dGVy
Ojpsb2FkTmV4dEFuZEJveChWYWx1ZUZvcm1hdCBmb3JtYXQsIEdQUlJlZyBkZXN0aW5hdGlvbiwg
R1BSUmVnIHNjcmF0Y2gpCit2b2lkIENBcmd1bWVudEdldHRlcjo6bG9hZE5leHRBbmRCb3goCisg
ICAgVmFsdWVGb3JtYXQgZm9ybWF0LCBHUFJSZWcgZGVzdGluYXRpb24sIEdQUlJlZyBzY3JhdGNo
MSwgR1BSUmVnIHNjcmF0Y2gyKQogewotICAgIGlmIChzY3JhdGNoID09IEludmFsaWRHUFJSZWcp
IHsKKyAgICBpZiAoc2NyYXRjaDEgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICBBU1NFUlQo
c2NyYXRjaDIgPT0gSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGlmIChkZXN0aW5hdGlvbiA9PSBH
UFJJbmZvOjpub25BcmdHUFIwKQotICAgICAgICAgICAgc2NyYXRjaCA9IEdQUkluZm86Om5vbkFy
Z0dQUjE7CisgICAgICAgICAgICBzY3JhdGNoMSA9IEdQUkluZm86Om5vbkFyZ0dQUjE7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHNjcmF0Y2ggPSBHUFJJbmZvOjpub25BcmdHUFIwOworICAg
ICAgICAgICAgc2NyYXRjaDEgPSBHUFJJbmZvOjpub25BcmdHUFIwOworICAgIH0KKyAgICBpZiAo
c2NyYXRjaDIgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICBpZiAoZGVzdGluYXRpb24gIT0g
R1BSSW5mbzo6bm9uQXJnR1BSMCAmJiBzY3JhdGNoMSAhPSBHUFJJbmZvOjpub25BcmdHUFIwKQor
ICAgICAgICAgICAgc2NyYXRjaDIgPSBHUFJJbmZvOjpub25BcmdHUFIwOworICAgICAgICBlbHNl
IGlmIChkZXN0aW5hdGlvbiAhPSBHUFJJbmZvOjpub25BcmdHUFIxICYmIHNjcmF0Y2gxICE9IEdQ
UkluZm86Om5vbkFyZ0dQUjEpCisgICAgICAgICAgICBzY3JhdGNoMiA9IEdQUkluZm86Om5vbkFy
Z0dQUjE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNjcmF0Y2gyID0gR1BSSW5mbzo6bm9u
QXJnR1BSMjsKICAgICB9CiAgICAgCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKQEAgLTUwLDIxICs2
MCwyNiBAQCB2b2lkIENBcmd1bWVudEdldHRlcjo6bG9hZE5leHRBbmRCb3goVmFsCiAgICAgICAg
ICAgICAKICAgICBjYXNlIFZhbHVlRm9ybWF0VUludDMyOiB7CiAgICAgICAgIGxvYWROZXh0MzIo
ZGVzdGluYXRpb24pOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0ludCA9IG1faml0
LmJyYW5jaDMyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuT3JFcXVh
bCwKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KDApKTsKLSAgICAgICAgICAgIAotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlVG82NChGUFJJbmZv
OjpmcFJlZ1QwLCBzY3JhdGNoKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUo
ZGVzdGluYXRpb24sIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICBtX2ppdC5ib3hEb3VibGUo
RlBSSW5mbzo6ZnBSZWdUMCwgZGVzdGluYXRpb24pOwotICAgICAgICBtX2ppdC5tb3ZlNjRUb0Rv
dWJsZShzY3JhdGNoLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIAotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotICAgICAgICAgICAgCi0g
ICAgICAgIGlzSW50LmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgbV9qaXQubW92ZURv
dWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRjaDIpOworICAgICAgICBtX2ppdC5ib3hJ
bnQ0OChkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24sIHNjcmF0Y2gxLCBGUFJJbmZvOjpmcFJlZ1Qw
KTsKKyAgICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUoc2NyYXRjaDIsIEZQUkluZm86OmZwUmVn
VDApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgVmFsdWVGb3Jt
YXRJbnQ0ODogeworICAgICAgICBsb2FkTmV4dDY0KGRlc3RpbmF0aW9uKTsKKyAgICAgICAgbV9q
aXQucnNoaWZ0NjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTYpLCBkZXN0aW5hdGlv
bik7CisgICAgICAgIG1faml0Lm1vdmVEb3VibGVUbzY0KEZQUkluZm86OmZwUmVnVDAsIHNjcmF0
Y2gyKTsKKyAgICAgICAgbV9qaXQuYm94SW50NDgoZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLCBz
Y3JhdGNoMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgIG1faml0Lm1vdmU2NFRvRG91Ymxl
KHNjcmF0Y2gyLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgIGNhc2UgVmFsdWVGb3Jt
YXRTdHJpY3RJbnQ0ODogeworICAgICAgICBsb2FkTmV4dDY0KGRlc3RpbmF0aW9uKTsKKyAgICAg
ICAgbV9qaXQubW92ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRjaDIpOworICAg
ICAgICBtX2ppdC5ib3hJbnQ0OChkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24sIHNjcmF0Y2gxLCBG
UFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUoc2NyYXRjaDIs
IEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgICAgICAK
QEAgLTgwLDEwICs5NSwxMCBAQCB2b2lkIENBcmd1bWVudEdldHRlcjo6bG9hZE5leHRBbmRCb3go
VmFsCiAgICAgfQogICAgICAgICAgICAgCiAgICAgY2FzZSBWYWx1ZUZvcm1hdERvdWJsZTogewot
ICAgICAgICBtX2ppdC5tb3ZlRG91YmxlVG82NChGUFJJbmZvOjpmcFJlZ1QwLCBzY3JhdGNoKTsK
KyAgICAgICAgbV9qaXQubW92ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRjaDEp
OwogICAgICAgICBsb2FkTmV4dERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgbV9q
aXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIGRlc3RpbmF0aW9uKTsKLSAgICAgICAgbV9q
aXQubW92ZTY0VG9Eb3VibGUoc2NyYXRjaCwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgIG1f
aml0Lm1vdmU2NFRvRG91YmxlKHNjcmF0Y2gxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENBcmd1bWVudEdldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ0FyZ3VtZW50R2V0dGVyLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ0FyZ3VtZW50R2V0dGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExNSw3ICsxMTUsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHZvaWQgbG9hZE5l
eHRBbmRCb3goCi0gICAgICAgIFZhbHVlRm9ybWF0IGZvcm1hdCwgREZHOjpHUFJSZWcgZGVzdGlu
YXRpb24sIERGRzo6R1BSUmVnIHNjcmF0Y2ggPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgVmFs
dWVGb3JtYXQgZm9ybWF0LCBERkc6OkdQUlJlZyBkZXN0aW5hdGlvbiwKKyAgICAgICAgREZHOjpH
UFJSZWcgc2NyYXRjaDEgPSBJbnZhbGlkR1BSUmVnLCBERkc6OkdQUlJlZyBzY3JhdGNoMiA9IElu
dmFsaWRHUFJSZWcpOwogCiBwcml2YXRlOgogICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIG5l
eHRBZGRyZXNzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw4IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbXBh
cmVTdHJpY3RFcToKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkp
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChN
YWNoaW5lSW50VXNlKSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpKQpAQCAtMTc1LDYgKzE3Nyw4IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbXBhcmVH
cmVhdGVyRXE6CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFj
aGluZUludFVzZSkpCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChOdW1iZXJVc2UpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHJldHVy
biBDYW5ub3RDb21waWxlOwpAQCAtMjM2LDYgKzI0MCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgICAgICBjYXNlIEtub3du
SW50MzJVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgogICAgICAgICAg
ICAgICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25OdW1iZXJV
c2U6CiAgICAgICAgICAgICAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw2ICs1Myw5IEBAIHZvaWQgRXhpdFZhbHVlOjpkdW1wSW5Db250ZXh0KFByaW50U3Ry
ZWEKICAgICBjYXNlIEV4aXRWYWx1ZUluSlNTdGFja0FzSW50MzI6CiAgICAgICAgIG91dC5wcmlu
dCgiSW5KU1N0YWNrQXNJbnQzMiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBFeGl0VmFs
dWVJbkpTU3RhY2tBc0ludDQ4OgorICAgICAgICBvdXQucHJpbnQoIkluSlNTdGFja0FzSW50NDgi
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRXhpdFZhbHVlSW5KU1N0YWNrQXNEb3VibGU6
CiAgICAgICAgIG91dC5wcmludCgiSW5KU1N0YWNrQXNEb3VibGUiKTsKICAgICAgICAgcmV0dXJu
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5oCShyZXZpc2lv
biAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIGVudW0gRXhpdFZhbHVlS2luZCB7CiAgICAg
RXhpdFZhbHVlQ29uc3RhbnQsCiAgICAgRXhpdFZhbHVlSW5KU1N0YWNrLAogICAgIEV4aXRWYWx1
ZUluSlNTdGFja0FzSW50MzIsCisgICAgRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQ0OCwKICAgICBF
eGl0VmFsdWVJbkpTU3RhY2tBc0RvdWJsZQogfTsKIApAQCAtODIsNiArODMsMTMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgRXhpdFZh
bHVlIGluSlNTdGFja0FzSW50NDgoKQorICAgIHsKKyAgICAgICAgRXhpdFZhbHVlIHJlc3VsdDsK
KyAgICAgICAgcmVzdWx0Lm1fa2luZCA9IEV4aXRWYWx1ZUluSlNTdGFja0FzSW50NDg7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIHN0YXRpYyBFeGl0VmFsdWUgaW5K
U1N0YWNrQXNEb3VibGUoKQogICAgIHsKICAgICAgICAgRXhpdFZhbHVlIHJlc3VsdDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9y
eS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTElu
dHJpbnNpY1JlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiAjZGVmaW5lIEZPUl9FQUNIX0ZUTF9JTlRS
SU5TSUMobWFjcm8pIFwKICAgICBtYWNybyhhZGRXaXRoT3ZlcmZsb3czMiwgImxsdm0uc2FkZC53
aXRoLm92ZXJmbG93LmkzMiIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50
MzIsIGJvb2xlYW4pLCBpbnQzMiwgaW50MzIpKSBcCisgICAgbWFjcm8oYWRkV2l0aE92ZXJmbG93
NjQsICJsbHZtLnNhZGQud2l0aC5vdmVyZmxvdy5pNjQiLCBmdW5jdGlvblR5cGUoc3RydWN0VHlw
ZShtX2NvbnRleHQsIGludDY0LCBib29sZWFuKSwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3Jv
KGRvdWJsZUFicywgImxsdm0uZmFicy5mNjQiLCBmdW5jdGlvblR5cGUoZG91YmxlVHlwZSwgZG91
YmxlVHlwZSkpIFwKICAgICBtYWNybyhtdWxXaXRoT3ZlcmZsb3czMiwgImxsdm0uc211bC53aXRo
Lm92ZXJmbG93LmkzMiIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50MzIs
IGJvb2xlYW4pLCBpbnQzMiwgaW50MzIpKSBcCisgICAgbWFjcm8obXVsV2l0aE92ZXJmbG93NjQs
ICJsbHZtLnNtdWwud2l0aC5vdmVyZmxvdy5pNjQiLCBmdW5jdGlvblR5cGUoc3RydWN0VHlwZSht
X2NvbnRleHQsIGludDY0LCBib29sZWFuKSwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKHN1
YldpdGhPdmVyZmxvdzMyLCAibGx2bS5zc3ViLndpdGgub3ZlcmZsb3cuaTMyIiwgZnVuY3Rpb25U
eXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQzMiwgYm9vbGVhbiksIGludDMyLCBpbnQzMikp
IFwKKyAgICBtYWNybyhzdWJXaXRoT3ZlcmZsb3c2NCwgImxsdm0uc3N1Yi53aXRoLm92ZXJmbG93
Lmk2NCIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50NjQsIGJvb2xlYW4p
LCBpbnQ2NCwgaW50NjQpKSBcCiAgICAgbWFjcm8odHJhcCwgImxsdm0udHJhcCIsIGZ1bmN0aW9u
VHlwZSh2b2lkVHlwZSkpIFwKICAgICBtYWNybyhvc3JFeGl0LCAid2Via2l0X29zcl9leGl0Iiwg
ZnVuY3Rpb25UeXBlKHZvaWRUeXBlLCBib29sZWFuLCBpbnQzMiwgVmFyaWFkaWMpKQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAko
cmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsOSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgogICAgICAgICAgICAgICAgICAg
ICB0eXBlID0gbV9vdXQuaW50MzI7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDQ4OgorICAgICAgICAgICAgICAgICAgICB0eXBl
ID0gbV9vdXQuaW50NjQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGNhc2UgTm9kZVJlc3VsdEJvb2xlYW46CiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBt
X291dC5ib29sZWFuOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIzOSw3ICsyNDIs
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZVBoaSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgSlNDb25zdGFudDoKLSAgICAgICAgICAgIGNvbXBpbGVKU0NvbnN0
YW50KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoK
ICAgICAgICAgICAgIGNvbXBpbGVXZWFrSlNDb25zdGFudCgpOwpAQCAtNDYxLDYgKzQ2Myw5IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgICAgICBtX291dC5zZXQo
bG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBtX291dC5zZXQo
bG93SW50NDgobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBtX291dC5zZXQobG93
Qm9vbGVhbihtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC00ODcsNiArNDkyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOb2RlUmVzdWx0
SW50MzI6CiAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5nZXQoc291cmNlKSk7CiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50NDg6CisgICAgICAgICAgICBz
ZXRJbnQ0OChtX291dC5nZXQoc291cmNlKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBOb2RlUmVzdWx0Qm9vbGVhbjoKICAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQuZ2V0
KHNvdXJjZSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01OTEsNiArNTk5LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEZsdXNoZWRJbnQ0ODogeworICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SW50
NDgobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlLCBh
ZGRyZXNzRm9yKHZhcmlhYmxlLT5sb2NhbCgpKSk7CisgICAgICAgICAgICBtX3ZhbHVlU291cmNl
cy5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9IFZhbHVlU291cmNlKEludDQ4SW5KU1N0YWNr
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgRmx1c2hlZENlbGw6IHsKICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlLCBhZGRy
ZXNzRm9yKHZhcmlhYmxlLT5sb2NhbCgpKSk7CkBAIC02NTUsNiArNjcwLDIyIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNh
c2UgTWFjaGluZUludFVzZTogeworICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobV9u
b2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KQorICAgICAgICAgICAgICAgICYm
ICFtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDIoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4
KSkgeworICAgICAgICAgICAgICAgIEludDQ4czwyPiBpbnQ0OHMgPSBsb3dXaGljaGV2ZXJJbnQ0
OHMobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAg
c2V0SW50NDgobV9vdXQuYWRkKGludDQ4c1swXSwgaW50NDhzWzFdKSwgaW50NDhzLmtpbmQpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0ludDQ4KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NDgobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuYWRkV2l0aE92ZXJmbG93NjQobGVmdCwgcmlnaHQp
OworICAgICAgICAgICAgc3BlY3VsYXRlKEludDQ4T3ZlcmZsb3csIG5vVmFsdWUoKSwgMCwgbV9v
dXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMSkpOworICAgICAgICAgICAgc2V0SW50NDgobV9vdXQu
ZXh0cmFjdFZhbHVlKHJlc3VsdCwgMCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgICAgIAogICAgICAgICBjYXNlIE51bWJlclVzZTogewogICAgICAgICAgICAgc2V0
RG91YmxlKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUFkZChsb3dEb3VibGUobV9ub2Rl
LT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOwpAQCAtNjg1LDYgKzcx
NiwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgICAgIGlmICghbV9z
dGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ0OCkKKyAg
ICAgICAgICAgICAgICAmJiAhbV9zdGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQyKCkpLmNvdWxk
QmVUeXBlKFNwZWNJbnQ0OCkpIHsKKyAgICAgICAgICAgICAgICBJbnQ0OHM8Mj4gaW50NDhzID0g
bG93V2hpY2hldmVySW50NDhzKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgICAgIHNldEludDQ4KG1fb3V0LnN1YihpbnQ0OHNbMF0sIGludDQ4c1sxXSks
IGludDQ4cy5raW5kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dJbnQ0OChtX25vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0ludDQ4KG1fbm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnN1YldpdGhPdmVyZmxv
dzY0KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShJbnQ0OE92ZXJmbG93LCBu
b1ZhbHVlKCksIDAsIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDEpKTsKKyAgICAgICAgICAg
IHNldEludDQ4KG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6IHsK
ICAgICAgICAgICAgIHNldERvdWJsZSgKICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVTdWIo
bG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSkp
KTsKQEAgLTczMCw2ICs3NzcsMzAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAg
ICAgICAgICBJbnQ0OHM8Mj4gaW50NDhzID0gbG93T3Bwb3NpbmdJbnQ0OHMobV9ub2RlLT5jaGls
ZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExWYWx1
ZSBvdmVyZmxvd1Jlc3VsdCA9IG1fb3V0Lm11bFdpdGhPdmVyZmxvdzY0KGludDQ4c1swXSwgaW50
NDhzWzFdKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShJbnQ0OE92ZXJmbG93LCBub1ZhbHVlKCks
IDAsIG1fb3V0LmV4dHJhY3RWYWx1ZShvdmVyZmxvd1Jlc3VsdCwgMSkpOworICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IG1fb3V0LmV4dHJhY3RWYWx1ZShvdmVyZmxvd1Jlc3VsdCwgMCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVpl
cm8obV9ub2RlLT5hcml0aE5vZGVGbGFncygpKSkgeworICAgICAgICAgICAgICAgIExCYXNpY0Js
b2NrIHNsb3dDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJBcml0aE11bCBzbG93IGNhc2Ui
KSk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19C
TE9DSyhtX291dCwgKCJBcml0aE11bCBjb250aW51YXRpb24iKSk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdFplcm82NChyZXN1bHQpLCBj
b250aW51YXRpb24sIHNsb3dDYXNlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51
YXRpb24pOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZVplcm8sIG5vVmFsdWUo
KSwgMCwgbV9vdXQubGVzc1RoYW4oaW50NDhzWzBdLCBtX291dC5pbnQ2NFplcm8pKTsKKyAgICAg
ICAgICAgICAgICBzcGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIDAsIG1fb3V0Lmxl
c3NUaGFuKGludDQ4c1swXSwgbV9vdXQuaW50NjRaZXJvKSk7CisgICAgICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBzZXRJbnQ0OChyZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgICAgIAogICAgICAgICBjYXNlIE51bWJlclVzZTogewogICAgICAgICAgICAgc2V0
RG91YmxlKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU11bChsb3dEb3VibGUobV9ub2Rl
LT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkpOwpAQCAtMTAzMCw2ICsx
MTAxLDI1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAgICAgaWYgKCFt
X3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KSkg
eworICAgICAgICAgICAgICAgIEludDQ4czwxPiB2YWx1ZSA9IGxvd1doaWNoZXZlckludDQ4KG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5u
ZWcodmFsdWVbMF0pOworICAgICAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVOZWdh
dGl2ZVplcm8obV9ub2RlLT5hcml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICAgICAg
c3BlY3VsYXRlKE5lZ2F0aXZlWmVybywgbm9WYWx1ZSgpLCAwLCBtX291dC5pc1plcm82NChyZXN1
bHQpKTsKKyAgICAgICAgICAgICAgICBzZXRJbnQ0OChyZXN1bHQsIHZhbHVlLmtpbmQpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
ICAgICBMVmFsdWUgdmFsdWUgPSBsb3dJbnQ0OChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIExWYWx1ZSBvdmVyZmxvd1Jlc3VsdCA9IG1fb3V0LnN1YldpdGhPdmVyZmxvdzY0KG1fb3V0
LmludDY0WmVybywgdmFsdWUpOworICAgICAgICAgICAgc3BlY3VsYXRlKEludDQ4T3ZlcmZsb3cs
IG5vVmFsdWUoKSwgMCwgbV9vdXQuZXh0cmFjdFZhbHVlKG92ZXJmbG93UmVzdWx0LCAxKSk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXh0cmFjdFZhbHVlKG92ZXJmbG93UmVz
dWx0LCAwKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZVplcm8sIG5vVmFsdWUoKSwg
MCwgbV9vdXQuaXNaZXJvNjQocmVzdWx0KSk7CisgICAgICAgICAgICBzZXRJbnQ0OChyZXN1bHQp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBj
YXNlIE51bWJlclVzZTogewogICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LmRvdWJsZU5lZyhs
b3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ3
MSw3ICsxNTYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBs
b3dEb3VibGUoY2hpbGQzKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBGVExf
VFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBjaGls
ZDMsIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1
ZSksIGNoaWxkMywgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICBtX291
dC5kb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKHZhbHVlLCB2YWx1ZSkpOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIFR5cGVkUG9pbnRlciBlbGVtZW50UG9pbnRlciA9IG1fb3V0
LmJhc2VJbmRleCgKQEAgLTE3MDYsNiArMTc5Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21w
aWxlQ29tcGFyZUVxKCkKICAgICB7CiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2lu
ZChJbnQzMlVzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hp
bmVJbnRVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJV
c2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpKSB7
CiAgICAgICAgICAgICBjb21waWxlQ29tcGFyZVN0cmljdEVxKCk7CkBAIC0xNzMyLDYgKzE4MjMs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7Cisg
ICAgICAgICAgICBJbnQ0OHM8Mj4gdmFsdWVzID0gbG93V2hpY2hldmVySW50NDhzKG1fbm9kZS0+
Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291
dC5lcXVhbCh2YWx1ZXNbMF0sIHZhbHVlc1sxXSkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVt
YmVyVXNlKSkgewogICAgICAgICAgICAgc2V0Qm9vbGVhbigKICAgICAgICAgICAgICAgICBtX291
dC5kb3VibGVFcXVhbChsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25v
ZGUtPmNoaWxkMigpKSkpOwpAQCAtMTc4MCw2ICsxODc3LDEyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkgeworICAgICAgICAgICAgSW50NDhzPDI+IHZh
bHVlcyA9IGxvd1doaWNoZXZlckludDQ4cyhtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubGVzc1RoYW4odmFsdWVzWzBdLCB2
YWx1ZXNbMV0pKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKICAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKICAgICAgICAg
ICAgIHNldEJvb2xlYW4oCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTGVzc1RoYW4obG93
RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIoKSkpKTsK
QEAgLTE3OTcsNiArMTkwMCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIAorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFj
aGluZUludFVzZSkpIHsKKyAgICAgICAgICAgIEludDQ4czwyPiB2YWx1ZXMgPSBsb3dXaGljaGV2
ZXJJbnQ0OHMobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBzZXRCb29sZWFuKG1fb3V0Lmxlc3NUaGFuT3JFcXVhbCh2YWx1ZXNbMF0sIHZhbHVlc1sxXSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgewogICAgICAgICAgICAgc2V0Qm9v
bGVhbigKICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVMZXNzVGhhbk9yRXF1YWwoCkBAIC0x
ODE1LDYgKzE5MjQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICAKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJ
bnRVc2UpKSB7CisgICAgICAgICAgICBJbnQ0OHM8Mj4gdmFsdWVzID0gbG93V2hpY2hldmVySW50
NDhzKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgc2V0
Qm9vbGVhbihtX291dC5ncmVhdGVyVGhhbih2YWx1ZXNbMF0sIHZhbHVlc1sxXSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5p
c0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgewogICAgICAgICAgICAgc2V0Qm9vbGVhbigKICAg
ICAgICAgICAgICAgICBtX291dC5kb3VibGVHcmVhdGVyVGhhbigKQEAgLTE4MzQsNiArMTk0OSwx
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAor
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKKyAg
ICAgICAgICAgIEludDQ4czwyPiB2YWx1ZXMgPSBsb3dXaGljaGV2ZXJJbnQ0OHMobV9ub2RlLT5j
aGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0
LmdyZWF0ZXJUaGFuT3JFcXVhbCh2YWx1ZXNbMF0sIHZhbHVlc1sxXSkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoTnVtYmVyVXNlKSkgewogICAgICAgICAgICAgc2V0Qm9vbGVhbigKICAgICAgICAg
ICAgICAgICBtX291dC5kb3VibGVHcmVhdGVyVGhhbk9yRXF1YWwoCkBAIC0yMzUwLDEwICsyNDcx
LDI3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUg
PT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IChlZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVz
ZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBLbm93bkludDMyVXNlKSk7CiAgICAgICAgIAorICAgICAg
ICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgaWYg
KCF2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFi
bGUpOworICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5pbnQzMlplcm87CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQzMih2YWx1ZS5hc0ludDMyKCkp
OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0g
bV9pbnQzMlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1
ZSkpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKICAgICAgICAgCisgICAgICAg
IHZhbHVlID0gbV9zdHJpY3RJbnQ0OFZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBp
ZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gc3RyaWN0SW50NDhUb0ludDMy
KGVkZ2UsIHZhbHVlLnZhbHVlKCkpOworICAgICAgICAKKyAgICAgICAgdmFsdWUgPSBtX2ludDQ4
VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAg
ICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ0OFRvSW50MzIoZWRnZSwgaW50NDhUb1N0cmljdElu
dDQ4KHZhbHVlLnZhbHVlKCkpKTsKKyAgICAgICAgCiAgICAgICAgIHZhbHVlID0gbV9qc1ZhbHVl
VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewog
ICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0ID0gdmFsdWUudmFsdWUoKTsKQEAgLTIzNjks
MTAgKzI1MDcsMTQ4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX291dC5pbnQzMlplcm87
CiAgICAgfQogICAgIAorICAgIGVudW0gSW50NDhLaW5kIHsgU3RyaWN0SW50NDgsIEludDQ4IH07
CisgICAgTFZhbHVlIGxvd0ludDQ4KEVkZ2UgZWRnZSwgSW50NDhLaW5kIGtpbmQsIE9wZXJhbmRT
cGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICB7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIAorICAg
ICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAg
aWYgKCF2YWx1ZS5pc01hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShV
bmNvdW50YWJsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmludDY0WmVybzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGludDY0X3QgcmVzdWx0ID0gdmFsdWUuYXNNYWNoaW5l
SW50KCk7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBJbnQ0OCkKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPDw9IDE2OworICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50NjQocmVzdWx0
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZTsK
KyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIEludDQ4Ogor
ICAgICAgICAgICAgdmFsdWUgPSBtX2ludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAg
ICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVl
LnZhbHVlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhbHVlID0gbV9zdHJpY3RJbnQ0
OFZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUp
KQorICAgICAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ0OFRvSW50NDgodmFsdWUudmFsdWUo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFN0cmlj
dEludDQ4OgorICAgICAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDQ4VmFsdWVzLmdldChlZGdl
Lm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlLnZhbHVlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhbHVl
ID0gbV9pbnQ0OFZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBpbnQ0OFRvU3RyaWN0SW50NDgodmFs
dWUudmFsdWUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgdmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlm
IChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAgICAgICAgcmV0dXJuIHNldEludDQ4V2l0aFN0cmlj
dFZhbHVlKAorICAgICAgICAgICAgICAgIGVkZ2Uubm9kZSgpLCBtX291dC5zaWduRXh0KHZhbHVl
LnZhbHVlKCksIG1fb3V0LmludDY0KSwga2luZCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNJ
bnQ0OCkpOworICAgICAgICAKKyAgICAgICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVk
Z2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICBM
VmFsdWUgYm94ZWRSZXN1bHQgPSB2YWx1ZS52YWx1ZSgpOworICAgICAgICAgICAgRlRMX1RZUEVf
Q0hFQ0soCisgICAgICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwg
U3BlY01hY2hpbmVJbnQsIGlzTm90SW50MzIoYm94ZWRSZXN1bHQpKTsKKyAgICAgICAgICAgIHJl
dHVybiBzZXRJbnQ0OFdpdGhTdHJpY3RWYWx1ZSgKKyAgICAgICAgICAgICAgICBlZGdlLm5vZGUo
KSwgbV9vdXQuc2lnbkV4dCh1bmJveEludDMyKGJveGVkUmVzdWx0KSwgbV9vdXQuaW50NjQpLCBr
aW5kKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3N0
YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgU3BlY01hY2hpbmVJbnQpKTsKKyAgICAgICAgdGVy
bWluYXRlKFVuY291bnRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmludDY0WmVybzsKKyAg
ICB9CisgICAgCisgICAgTFZhbHVlIGxvd0ludDQ4KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0
aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGxvd0ludDQ4KGVkZ2UsIEludDQ4LCBtb2RlKTsKKyAgICB9CisgICAgCisgICAg
TFZhbHVlIGxvd1N0cmljdEludDQ4KEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBt
b2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGxvd0ludDQ4KGVkZ2UsIFN0cmljdEludDQ4LCBtb2RlKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICFpc1ZhbGlkKG1faW50NDhWYWx1ZXMuZ2V0KG5vZGUpKTsKKyAgICB9CisgICAgYm9vbCBiZXR0
ZXJVc2VTdHJpY3RJbnQ0OChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYmV0dGVy
VXNlU3RyaWN0SW50NDgoZWRnZS5ub2RlKCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIEludDQ4S2luZCBiZXN0SW50NDhLaW5kKFQgbm9kZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChub2RlKSA/IFN0cmljdEludDQ4IDogSW50NDg7
CisgICAgfQorICAgIEludDQ4S2luZCBvcHBvc2l0ZShJbnQ0OEtpbmQga2luZCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIEludDQ4OgorICAgICAgICAgICAg
cmV0dXJuIFN0cmljdEludDQ4OworICAgICAgICBjYXNlIFN0cmljdEludDQ4OgorICAgICAgICAg
ICAgcmV0dXJuIEludDQ4OworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNvdW50PgorICAg
IHN0cnVjdCBJbnQ0OHMgeworICAgICAgICBMVmFsdWUgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gdmFsdWVzW2luZGV4XTsgfQorICAgICAgICBMVmFsdWUmIG9wZXJh
dG9yW10odW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIHZhbHVlc1tpbmRleF07IH0KKyAgICAgICAg
CisgICAgICAgIEludDQ4S2luZCBraW5kOworICAgICAgICBGaXhlZEFycmF5PExWYWx1ZSwgY291
bnQ+IHZhbHVlczsKKyAgICB9OworICAgIEludDQ4czwxPiBsb3dXaGljaGV2ZXJJbnQ0OChFZGdl
IGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVj
dWxhdGlvbikKKyAgICB7CisgICAgICAgIEludDQ4czwxPiByZXN1bHQ7CisgICAgICAgIHJlc3Vs
dC5raW5kID0gYmVzdEludDQ4S2luZChlZGdlKTsKKyAgICAgICAgcmVzdWx0WzBdID0gbG93SW50
NDgoZWRnZSwgcmVzdWx0LmtpbmQsIG1vZGUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICBJbnQ0OHM8Mj4gbG93V2hpY2hldmVySW50NDhzKEVkZ2UgZWRnZTEsIEVkZ2UgZWRn
ZTIsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxh
dGlvbikKKyAgICB7CisgICAgICAgIEludDQ4czwyPiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5r
aW5kID0gYmVzdEludDQ4S2luZChlZGdlMSk7CisgICAgICAgIHJlc3VsdFswXSA9IGxvd0ludDQ4
KGVkZ2UxLCByZXN1bHQua2luZCwgbW9kZSk7CisgICAgICAgIHJlc3VsdFsxXSA9IGxvd0ludDQ4
KGVkZ2UyLCByZXN1bHQua2luZCwgbW9kZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIEludDQ4czwyPiBsb3dPcHBvc2luZ0ludDQ4cyhFZGdlIGVkZ2UxLCBFZGdlIGVkZ2Uy
LCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRp
b24pCisgICAgeworICAgICAgICBJbnQ0OHM8Mj4gcmVzdWx0OworICAgICAgICByZXN1bHQua2lu
ZCA9IGJlc3RJbnQ0OEtpbmQoZWRnZTEpOworICAgICAgICByZXN1bHRbMF0gPSBsb3dJbnQ0OChl
ZGdlMSwgcmVzdWx0LmtpbmQsIG1vZGUpOworICAgICAgICByZXN1bHRbMV0gPSBsb3dJbnQ0OChl
ZGdlMiwgb3Bwb3NpdGUocmVzdWx0LmtpbmQpLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisgICAgCiAgICAgTFZhbHVlIGxvd0NlbGwoRWRnZSBlZGdlLCBPcGVyYW5kU3Bl
Y3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewog
ICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uIHx8IGlzQ2VsbChlZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICAKKyAgICAgICAgaWYgKGVk
Z2UtPm9wKCkgPT0gSlNDb25zdGFudCkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1f
Z3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKCF2
YWx1ZS5pc0NlbGwoKSkgeworICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmludFB0clplcm87CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnRQdHIodmFsdWUuYXNDZWxsKCkpOwor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9q
c1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVl
KSkgewogICAgICAgICAgICAgTFZhbHVlIHVuY2hlY2tlZFZhbHVlID0gdmFsdWUudmFsdWUoKTsK
QEAgLTI0MTcsNiArMjY5MywxNSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtp
bmQoKSA9PSBCb29sZWFuVXNlKTsKICAgICAgICAgCisgICAgICAgIGlmIChlZGdlLT5oYXNDb25z
dGFudCgpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mSlND
b25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigp
KSB7CisgICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbV9vdXQuYm9vbGVhbkZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIG1fb3V0LmNvbnN0Qm9vbCh2YWx1ZS5hc0Jvb2xlYW4oKSk7CisgICAgICAgIH0K
KyAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2Jvb2xlYW5WYWx1
ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQogICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlKCk7CkBAIC0yNDQwLDYgKzI3MjUsMTUgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24gfHwgaXNEb3VibGUoZWRnZS51c2VLaW5kKCkpKTsKICAgICAgICAgCisg
ICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAgICAg
ICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICB0ZXJtaW5hdGUoVW5j
b3VudGFibGUpOworICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5kb3VibGVaZXJvOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0RG91YmxlKHZhbHVlLmFz
TnVtYmVyKCkpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVl
IHZhbHVlID0gbV9kb3VibGVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlz
VmFsaWQodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlKCk7CkBAIC0yNDUx
LDYgKzI3NDUsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KICAgICAgICAgCisgICAgICAgIHZhbHVlID0gbV9zdHJpY3RJbnQ0OFZhbHVlcy5nZXQo
ZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICBy
ZXR1cm4gc3RyaWN0SW50NDhUb0RvdWJsZShlZGdlLCB2YWx1ZS52YWx1ZSgpKTsKKyAgICAgICAg
CisgICAgICAgIHZhbHVlID0gbV9pbnQ0OFZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAg
ICBpZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gc3RyaWN0SW50NDhUb0Rv
dWJsZShlZGdlLCBpbnQ0OFRvU3RyaWN0SW50NDgodmFsdWUudmFsdWUoKSkpOworICAgICAgICAK
ICAgICAgICAgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAg
ICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CiAgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQg
PSB2YWx1ZS52YWx1ZSgpOwpAQCAtMjQ3MCw3ICsyNzcyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGRvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgIGpzVmFsdWVW
YWx1ZShib3hlZFJlc3VsdCksIGVkZ2UsIFNwZWNOdW1iZXIsIGlzQ2VsbE9yTWlzYyhib3hlZFJl
c3VsdCkpOworICAgICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFJlc3VsdCksIGVkZ2Us
IFNwZWNGdWxsTnVtYmVyLCBpc0NlbGxPck1pc2MoYm94ZWRSZXN1bHQpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgdW5ib3hlZERvdWJsZSA9IG1fb3V0LmFuY2hv
cih1bmJveERvdWJsZShib3hlZFJlc3VsdCkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwpAQCAtMjQ4Myw3ICsyNzg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KCEobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIFNwZWNOdW1iZXIpKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgU3BlY0Z1bGxO
dW1iZXIpKTsKICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKICAgICAgICAgcmV0dXJu
IG1fb3V0LmRvdWJsZVplcm87CiAgICAgfQpAQCAtMjQ5Miw2ICsyNzk0LDkgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgIAor
ICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBtX291
dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KGVk
Z2Uubm9kZSgpKSkpOworICAgICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9
IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2
YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKQEAgLTI1MDMsNiArMjgw
OCwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQog
ICAgICAgICAKKyAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDQ4VmFsdWVzLmdldChlZGdlLm5v
ZGUoKSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBz
dHJpY3RJbnQ0OFRvSlNWYWx1ZSh2YWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgCisgICAgICAgIHZh
bHVlID0gbV9pbnQ0OFZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAoaXNWYWxp
ZCh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gc3RyaWN0SW50NDhUb0pTVmFsdWUoaW50NDhU
b1N0cmljdEludDQ4KHZhbHVlLnZhbHVlKCkpKTsKKyAgICAgICAgCiAgICAgICAgIHZhbHVlID0g
bV9ib29sZWFuVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZh
bHVlKSkgewogICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGJveEJvb2xlYW4odmFsdWUudmFs
dWUoKSk7CkBAIC0yNTMyLDYgKzI4NDUsNzcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAgICAgCisgICAgTFZhbHVlIHN0cmljdEludDQ4VG9JbnQzMihFZGdlIGVk
Z2UsIExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5j
YXN0VG9JbnQzMih2YWx1ZSk7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKAorICAgICAgICAgICAg
bm9WYWx1ZSgpLCBlZGdlLCBTcGVjSW50MzIsCisgICAgICAgICAgICBtX291dC5ub3RFcXVhbCht
X291dC5zaWduRXh0KHJlc3VsdCwgbV9vdXQuaW50NjQpLCB2YWx1ZSkpOworICAgICAgICBzZXRJ
bnQzMihlZGdlLm5vZGUoKSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisgICAgCisgICAgTFZhbHVlIHN0cmljdEludDQ4VG9Eb3VibGUoRWRnZSBlZGdlLCBMVmFsdWUg
dmFsdWUpCisgICAgeworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuaW50VG9Eb3VibGUo
dmFsdWUpOworICAgICAgICBzZXREb3VibGUoZWRnZS5ub2RlKCksIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIExWYWx1ZSBzdHJpY3RJbnQ0OFRvSlNW
YWx1ZShMVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBMQmFzaWNCbG9jayBpc0ludDMyID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJzdHJpY3RJbnQ0OFRvSlNWYWx1ZSBpc0ludDMyIGNhc2Ui
KSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzRG91YmxlID0gRlRMX05FV19CTE9DSyhtX291dCwg
KCJzdHJpY3RJbnQ0OFRvSlNWYWx1ZSBpc0RvdWJsZSBjYXNlIikpOworICAgICAgICBMQmFzaWNC
bG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoInN0cmljdEludDQ4VG9K
U1ZhbHVlIGNvbnRpbnVhdGlvbiIpKTsKKyAgICAgICAgCisgICAgICAgIFZlY3RvcjxWYWx1ZUZy
b21CbG9jaywgMj4gcmVzdWx0czsKKyAgICAgICAgICAgIAorICAgICAgICBMVmFsdWUgaW50MzJW
YWx1ZSA9IG1fb3V0LmNhc3RUb0ludDMyKHZhbHVlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKAor
ICAgICAgICAgICAgbV9vdXQuZXF1YWwobV9vdXQuc2lnbkV4dChpbnQzMlZhbHVlLCBtX291dC5p
bnQ2NCksIHZhbHVlKSwKKyAgICAgICAgICAgIGlzSW50MzIsIGlzRG91YmxlKTsKKyAgICAgICAg
CisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNJbnQzMiwg
aXNEb3VibGUpOworICAgICAgICAKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9y
KGJveEludDMyKGludDMyVmFsdWUpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzRG91YmxlLCBjb250aW51YXRp
b24pOworICAgICAgICAKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKGJveERv
dWJsZShtX291dC5pbnRUb0RvdWJsZSh2YWx1ZSkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKG1fb3V0LmludDY0LCByZXN1
bHRzKTsKKyAgICB9CisgICAgCisgICAgTFZhbHVlIHNldEludDQ4V2l0aFN0cmljdFZhbHVlKE5v
ZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSwgSW50NDhLaW5kIGtpbmQpCisgICAgeworICAgICAgICBz
d2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0ODoKKyAgICAgICAgICAgIHNl
dFN0cmljdEludDQ4KG5vZGUsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIEludDQ4OgorICAgICAgICAgICAgdmFsdWUgPSBzdHJp
Y3RJbnQ0OFRvSW50NDgodmFsdWUpOworICAgICAgICAgICAgc2V0SW50NDgobm9kZSwgdmFsdWUp
OworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBMVmFsdWUgc3RyaWN0SW50NDhUb0ludDQ4KExWYWx1ZSB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX291dC5zaGwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoMTYpKTsKKyAg
ICB9CisgICAgCisgICAgTFZhbHVlIGludDQ4VG9TdHJpY3RJbnQ0OChMVmFsdWUgdmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9vdXQuYVNocih2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCgx
NikpOworICAgIH0KKyAgICAKICAgICBMVmFsdWUgaXNOb3RJbnQzMihMVmFsdWUganNWYWx1ZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5iZWxvdyhqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1i
ZXIpOwpAQCAtMjc5Miw3ICszMTc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIExW
YWx1ZSB2YWx1ZSA9IGxvd0RvdWJsZShlZGdlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0g
ICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNSZWFsTnVtYmVyLAorICAg
ICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAg
ICAgICAgICAgICBtX291dC5kb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKHZhbHVlLCB2YWx1ZSkp
OwogICAgIH0KICAgICAKQEAgLTI4MDAsNyArMzE4NCw3IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBsb3dCb29sZWFuKGVkZ2UpOwogICAgIH0KLQorICAgIAogICAgIGJvb2wgbWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fZ3JhcGgubWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQo
bV9ub2RlLT5jb2RlT3JpZ2luKTsKQEAgLTI5MzEsNiArMzMxNSwxMCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIG1fdmFsdWVTb3VyY2VzW2ldID0gVmFsdWVTb3VyY2UoSW50MzJJbkpTU3Rh
Y2spOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgICAgICAgICAgbV92YWx1ZVNvdXJjZXNbaV0g
PSBWYWx1ZVNvdXJjZShJbnQ0OEluSlNTdGFjayk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAg
ICAgICAgICAgbV92YWx1ZVNvdXJjZXNbaV0gPSBWYWx1ZVNvdXJjZShEb3VibGVJbkpTU3RhY2sp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzAzNCw2ICszNDIyLDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgICAgICAgICAgZXhpdC5t
X3ZhbHVlc1tpXSA9IEV4aXRWYWx1ZTo6aW5KU1N0YWNrQXNJbnQzMigpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAgICAg
ICAgICBleGl0Lm1fdmFsdWVzW2ldID0gRXhpdFZhbHVlOjppbkpTU3RhY2tBc0ludDQ4KCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIERvdWJsZUluSlNTdGFjazoK
ICAgICAgICAgICAgICAgICBleGl0Lm1fdmFsdWVzW2ldID0gRXhpdFZhbHVlOjppbkpTU3RhY2tB
c0RvdWJsZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzEzNyw2ICszNTI4LDE4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAg
ICAgIHZhbHVlID0gbV9pbnQ0OFZhbHVlcy5nZXQobm9kZSk7CisgICAgICAgIGlmIChpc1ZhbGlk
KHZhbHVlKSkgeworICAgICAgICAgICAgYWRkRXhpdEFyZ3VtZW50KGV4aXQsIGFyZ3VtZW50cywg
aW5kZXgsIFZhbHVlRm9ybWF0SW50NDgsIHZhbHVlLnZhbHVlKCkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NDhW
YWx1ZXMuZ2V0KG5vZGUpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAgICAg
ICAgIGFkZEV4aXRBcmd1bWVudChleGl0LCBhcmd1bWVudHMsIGluZGV4LCBWYWx1ZUZvcm1hdFN0
cmljdEludDQ4LCB2YWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAKICAgICAgICAgdmFsdWUgPSBtX2Jvb2xlYW5WYWx1ZXMuZ2V0KG5vZGUpOwog
ICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKICAgICAgICAgICAgIGFkZEV4aXRBcmd1bWVu
dChleGl0LCBhcmd1bWVudHMsIGluZGV4LCBWYWx1ZUZvcm1hdEJvb2xlYW4sIHZhbHVlLnZhbHVl
KCkpOwpAQCAtMzI0MCw2ICszNjQzLDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2lu
dDMyVmFsdWVzLnNldChub2RlLCBMb3dlcmVkTm9kZVZhbHVlKHZhbHVlLCBtX2hpZ2hCbG9jaykp
OwogICAgIH0KKyAgICB2b2lkIHNldEludDQ4KE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIG1faW50NDhWYWx1ZXMuc2V0KG5vZGUsIExvd2VyZWROb2RlVmFsdWUodmFs
dWUsIG1faGlnaEJsb2NrKSk7CisgICAgfQorICAgIHZvaWQgc2V0U3RyaWN0SW50NDgoTm9kZSog
bm9kZSwgTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9zdHJpY3RJbnQ0OFZhbHVlcy5z
ZXQobm9kZSwgTG93ZXJlZE5vZGVWYWx1ZSh2YWx1ZSwgbV9oaWdoQmxvY2spKTsKKyAgICB9Cisg
ICAgdm9pZCBzZXRJbnQ0OChOb2RlKiBub2RlLCBMVmFsdWUgdmFsdWUsIEludDQ4S2luZCBraW5k
KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgSW50NDg6Cisg
ICAgICAgICAgICBzZXRJbnQ0OChub2RlLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ0ODoKKyAgICAgICAgICAgIHNldFN0
cmljdEludDQ4KG5vZGUsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAg
ICAgdm9pZCBzZXRKU1ZhbHVlKE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIG1fanNWYWx1ZVZhbHVlcy5zZXQobm9kZSwgTG93ZXJlZE5vZGVWYWx1ZSh2YWx1ZSwgbV9o
aWdoQmxvY2spKTsKQEAgLTMyNjEsNiArMzY4NiwxOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgc2V0SW50MzIobV9ub2RlLCB2YWx1ZSk7CiAgICAgfQorICAgIHZvaWQgc2V0SW50NDgoTFZh
bHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0SW50NDgobV9ub2RlLCB2YWx1ZSk7CisgICAg
fQorICAgIHZvaWQgc2V0U3RyaWN0SW50NDgoTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAg
c2V0U3RyaWN0SW50NDgobV9ub2RlLCB2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgc2V0SW50NDgo
TFZhbHVlIHZhbHVlLCBJbnQ0OEtpbmQga2luZCkKKyAgICB7CisgICAgICAgIHNldEludDQ4KG1f
bm9kZSwgdmFsdWUsIGtpbmQpOworICAgIH0KICAgICB2b2lkIHNldEpTVmFsdWUoTFZhbHVlIHZh
bHVlKQogICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX25vZGUsIHZhbHVlKTsKQEAgLTMzNDAs
NiArMzc3Nyw4IEBAIHByaXZhdGU6CiAgICAgTFZhbHVlIG1fdGFnTWFzazsKICAgICAKICAgICBI
YXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX2ludDMyVmFsdWVzOworICAgIEhhc2hN
YXA8Tm9kZSosIExvd2VyZWROb2RlVmFsdWU+IG1fc3RyaWN0SW50NDhWYWx1ZXM7CisgICAgSGFz
aE1hcDxOb2RlKiwgTG93ZXJlZE5vZGVWYWx1ZT4gbV9pbnQ0OFZhbHVlczsKICAgICBIYXNoTWFw
PE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX2pzVmFsdWVWYWx1ZXM7CiAgICAgSGFzaE1hcDxO
b2RlKiwgTG93ZXJlZE5vZGVWYWx1ZT4gbV9ib29sZWFuVmFsdWVzOwogICAgIEhhc2hNYXA8Tm9k
ZSosIExvd2VyZWROb2RlVmFsdWU+IG1fc3RvcmFnZVZhbHVlczsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDE1
NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCw4IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVT
dHViKAogICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpub25BcmdHUFIwLCBBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3IoYXJndW1lbnQub3BlcmFuZCgpKSk7CiAgICAgfQogICAgIAorICAg
IC8vIEFsbCB0ZW1wIHJlZ2lzdGVycyBhcmUgZnJlZSBhdCB0aGlzIHBvaW50LgorICAgIAogICAg
IC8vIEJveCBhbnl0aGluZyB0aGF0IGlzIGFscmVhZHkgb24gdGhlIHN0YWNrLCBvciB0aGF0IGlz
IGEgY29uc3RhbnQuCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gZXhpdC5tX3ZhbHVlcy5z
aXplKCk7IGktLTspIHsKQEAgLTEyOCw2ICsxMzAsMTIgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0
dWIoCiAgICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1Qw
LCBhZGRyZXNzKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4aXRWYWx1ZUlu
SlNTdGFja0FzSW50NDg6CisgICAgICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3MsIEdQUkluZm86
OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5yc2hpZnQ2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW0zMigxNiksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5ib3hJbnQ0OChH
UFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpm
cFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBhZGRyZXNz
KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEV4aXRWYWx1ZUluSlNTdGFja0Fz
RG91YmxlOgogICAgICAgICAgICAgaml0LmxvYWREb3VibGUoYWRkcmVzcywgRlBSSW5mbzo6ZnBS
ZWdUMCk7CiAgICAgICAgICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUklu
Zm86OnJlZ1QwKTsKQEAgLTE2MCw5ICsxNjgsMTAgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIo
CiAgICAgZXhpdC5tX2NvZGUgPSBGSU5BTElaRV9DT0RFX0lGKAogICAgICAgICBzaG91bGRTaG93
RGlzYXNzZW1ibHkoKSwKICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICgiRlRMIE9TUiBl
eGl0ICMldSAoYmMjJXUsICVzKSBmcm9tICVzIiwKKyAgICAgICAgKCJGVEwgT1NSIGV4aXQgIyV1
IChiYyMldSwgJXMpIGZyb20gJXMsIHdpdGggb3BlcmFuZHMgPSAlcyIsCiAgICAgICAgICAgICBl
eGl0SUQsIGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsCi0gICAgICAgICAgICBleGl0
S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgdG9DU3RyaW5nKCpjb2RlQmxvY2spLmRhdGEoKSkp
OworICAgICAgICAgICAgZXhpdEtpbmRUb1N0cmluZyhleGl0Lm1fa2luZCksIHRvQ1N0cmluZygq
Y29kZUJsb2NrKS5kYXRhKCksCisgICAgICAgICAgICB0b0NTdHJpbmcoaWdub3JpbmdDb250ZXh0
PER1bXBDb250ZXh0PihleGl0Lm1fdmFsdWVzKSkuZGF0YSgpKSk7CiB9CiAKIGV4dGVybiAiQyIg
dm9pZCogY29tcGlsZUZUTE9TUkV4aXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBleGl0SUQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDE1NTkw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE2Niw2ICsxNjYsMTggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGNh
bGwobXVsV2l0aE92ZXJmbG93MzJJbnRyaW5zaWMoKSwgbGVmdCwgcmlnaHQpOwogICAgIH0KKyAg
ICBMVmFsdWUgYWRkV2l0aE92ZXJmbG93NjQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBjYWxsKGFkZFdpdGhPdmVyZmxvdzY0SW50cmluc2ljKCksIGxl
ZnQsIHJpZ2h0KTsKKyAgICB9CisgICAgTFZhbHVlIHN1YldpdGhPdmVyZmxvdzY0KExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpCisgICAgeworICAgICAgICByZXR1cm4gY2FsbChzdWJXaXRoT3Zl
cmZsb3c2NEludHJpbnNpYygpLCBsZWZ0LCByaWdodCk7CisgICAgfQorICAgIExWYWx1ZSBtdWxX
aXRoT3ZlcmZsb3c2NChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGNhbGwobXVsV2l0aE92ZXJmbG93NjRJbnRyaW5zaWMoKSwgbGVmdCwgcmlnaHQpOwor
ICAgIH0KICAgICBMVmFsdWUgZG91YmxlQWJzKExWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBjYWxsKGRvdWJsZUFic0ludHJpbnNpYygpLCB2YWx1ZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAkocmV2aXNpb24gMTU1OTAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDYgKzQ0LDEyIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBWYWwKICAgICBjYXNlIFZhbHVlRm9ybWF0VUludDMyOgogICAgICAgICBvdXQucHJp
bnQoIlVJbnQzMiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBWYWx1ZUZvcm1hdEludDQ4
OgorICAgICAgICBvdXQucHJpbnQoIkludDQ4Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IFZhbHVlRm9ybWF0U3RyaWN0SW50NDg6CisgICAgICAgIG91dC5wcmludCgiU3RyaWN0SW50NDgi
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmFsdWVGb3JtYXRCb29sZWFuOgogICAgICAg
ICBvdXQucHJpbnQoIkJvb2xlYW4iKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuaAkocmV2aXNpb24gMTU1OTAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw2ICs0MSw4IEBAIGVudW0gVmFsdWVGb3JtYXQgewogICAgIEludmFsaWRWYWx1ZUZv
cm1hdCwKICAgICBWYWx1ZUZvcm1hdEludDMyLAogICAgIFZhbHVlRm9ybWF0VUludDMyLAorICAg
IFZhbHVlRm9ybWF0SW50NDgsCisgICAgVmFsdWVGb3JtYXRTdHJpY3RJbnQ0OCwKICAgICBWYWx1
ZUZvcm1hdEJvb2xlYW4sCiAgICAgVmFsdWVGb3JtYXRKU1ZhbHVlLAogICAgIFZhbHVlRm9ybWF0
RG91YmxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlU291cmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlU291cmNl
LmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExW
YWx1ZVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDkgQEAgdm9pZCBWYWx1
ZVNvdXJjZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogICAgIGNhc2UgSW50MzJJbkpTU3RhY2s6
CiAgICAgICAgIG91dC5wcmludCgiSW50MzJJbkpTU3RhY2siKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgSW50NDhJbkpTU3RhY2s6CisgICAgICAgIG91dC5wcmludCgiSW50NDhJbkpTU3Rh
Y2siKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRG91YmxlSW5KU1N0YWNrOgogICAgICAg
ICBvdXQucHJpbnQoIkRvdWJsZUluSlNTdGFjayIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlU291cmNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVNvdXJjZS5oCShyZXZpc2lvbiAxNTU5
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlU291cmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgZW51bSBWYWx1ZVNvdXJjZUtpbmQgewogICAgIFNv
dXJjZU5vdFNldCwKICAgICBWYWx1ZUluSlNTdGFjaywKICAgICBJbnQzMkluSlNTdGFjaywKKyAg
ICBJbnQ0OEluSlNTdGFjaywKICAgICBEb3VibGVJbkpTU3RhY2ssCiAgICAgU291cmNlSXNEZWFk
LAogICAgIEhhdmVOb2RlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UmVnaXN0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvUmVnaXN0ZXIuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1JlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEluc3RydWN0aW9uKiB2UEMoKSBjb25zdDsKICAgICAg
ICAgSW5saW5lQ2FsbEZyYW1lKiBhc0lubGluZUNhbGxGcmFtZSgpIGNvbnN0OwogICAgICAgICBp
bnQzMl90IHVuYm94ZWRJbnQzMigpIGNvbnN0OworICAgICAgICBpbnQ2NF90IHVuYm94ZWRJbnQ0
OCgpIGNvbnN0OwogICAgICAgICBib29sIHVuYm94ZWRCb29sZWFuKCkgY29uc3Q7CiAgICAgICAg
IGRvdWJsZSB1bmJveGVkRG91YmxlKCkgY29uc3Q7CiAgICAgICAgIEpTQ2VsbCogdW5ib3hlZENl
bGwoKSBjb25zdDsKQEAgLTk4LDYgKzk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgIEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IgZW5jb2RlZFZhbHVlOwogICAgICAgICAgICAgZG91YmxlIG51bWJlcjsK
KyAgICAgICAgICAgIGludDY0X3QgaW50ZWdlcjsKICAgICAgICAgfSB1OwogICAgIH07CiAKQEAg
LTE4NSw2ICsxODcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBwYXlsb2Fk
KCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSBpbnQ2NF90IFJlZ2lzdGVyOjp1bmJveGVk
SW50NDgoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHUuaW50ZWdlciA+PiAxNjsKKyAg
ICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgUmVnaXN0ZXI6OnVuYm94ZWRCb29sZWFuKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhIXBheWxvYWQoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTU1OTAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgzLDYgKzM4Myw5IEBAIHZvaWQgQXJndW1lbnRzOjp0ZWFyT2ZmRm9ySW5saW5l
Q2FsbEZyYW0KICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzI6CiAg
ICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGxvY2F0aW9uLT51bmJveGVkSW50MzIoKSk7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVk
SW50NDg6CisgICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGxvY2F0aW9uLT51bmJveGVkSW50
NDgoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
QXNVbmJveGVkQ2VsbDoKICAgICAgICAgICAgIHZhbHVlID0gbG9jYXRpb24tPnVuYm94ZWRDZWxs
KCk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luZGV4aW5nVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAsMTEgKzUwLDExIEBAIEluZGV4aW5nVHlwZSBsZWFzdFVwcGVyQm91bmRPZkluZGV4aW5nVHkK
ICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICAgICAgaWYgKGlzSW50MzJT
cGVjdWxhdGlvbih0eXBlKSkKICAgICAgICAgICAgIHJldHVybiAoaW5kZXhpbmdUeXBlICYgfklu
ZGV4aW5nU2hhcGVNYXNrKSB8IEludDMyU2hhcGU7Ci0gICAgICAgIGlmIChpc051bWJlclNwZWN1
bGF0aW9uKHR5cGUpKQorICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24odHlwZSkp
CiAgICAgICAgICAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFzaykg
fCBEb3VibGVTaGFwZTsKICAgICAgICAgcmV0dXJuIChpbmRleGluZ1R5cGUgJiB+SW5kZXhpbmdT
aGFwZU1hc2spIHwgQ29udGlndW91c1NoYXBlOwogICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElO
R19UWVBFUzoKLSAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24odHlwZSkpCisgICAgICAg
IGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbih0eXBlKSkKICAgICAgICAgICAgIHJldHVybiBp
bmRleGluZ1R5cGU7CiAgICAgICAgIHJldHVybiAoaW5kZXhpbmdUeXBlICYgfkluZGV4aW5nU2hh
cGVNYXNrKSB8IENvbnRpZ3VvdXNTaGFwZTsKICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVY
SU5HX1RZUEVTOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDcgQEAgcHVibGljOgog
CiAgICAgaW50MzJfdCBhc0ludDMyKCkgY29uc3Q7CiAgICAgdWludDMyX3QgYXNVSW50MzIoKSBj
b25zdDsKKyAgICBpbnQ2NF90IGFzTWFjaGluZUludCgpIGNvbnN0OwogICAgIGRvdWJsZSBhc0Rv
dWJsZSgpIGNvbnN0OwogICAgIGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CiAgICAgZG91YmxlIGFz
TnVtYmVyKCkgY29uc3Q7CkBAIC0yMDIsNiArMjAzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNO
dWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0OwogICAgIGJv
b2wgaXNCb29sZWFuKCkgY29uc3Q7CisgICAgYm9vbCBpc01hY2hpbmVJbnQoKSBjb25zdDsKICAg
ICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwogICAg
IGJvb2wgaXNQcmltaXRpdmUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTU1OTAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDk0LDYgKzQ5NCwzNSBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1
ZTo6YXNDZWxsKCkgCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCitpbmxpbmUgYm9vbCBK
U1ZhbHVlOjppc01hY2hpbmVJbnQoKSBjb25zdAoreworICAgIGlmIChpc0ludDMyKCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmICghaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGRvdWJsZSBudW1iZXIgPSBhc0RvdWJsZSgpOworICAgIGlmIChudW1iZXIgIT0g
bnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50NjRfdCBhc0ludDY0ID0gc3Rh
dGljX2Nhc3Q8aW50NjRfdD4obnVtYmVyKTsKKyAgICBpZiAoYXNJbnQ2NCAhPSBudW1iZXIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWFzSW50NjQgJiYgc3RkOjpzaWduYml0KG51
bWJlcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXNJbnQ2NCA+PSAoc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oMSkgPDwgNDcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KGFzSW50NjQgPCAtKHN0YXRpY19jYXN0PGludDY0X3Q+KDEpIDw8IDQ3KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgaW50NjRfdCBKU1ZhbHVl
Ojphc01hY2hpbmVJbnQoKSBjb25zdAoreworICAgIEFTU0VSVChpc01hY2hpbmVJbnQoKSk7Cisg
ICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGFzSW50MzIoKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50NjRfdD4oYXNEb3VibGUoKSk7Cit9CisKIGlubGluZSBib29sIEpTVmFs
dWU6OmlzU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCkt
PmlzU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1OTI1KQorKysgU291cmNlL1dURi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wOS0xNiAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyBzaG91bGQgc3VwcG9ydCBJ
bnQ0OCBmb3IgbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjEwNjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9QcmludFN0cmVhbS5oOgorICAgICAgICAoV1RGOjpWYWx1
ZUlnbm9yaW5nQ29udGV4dDo6VmFsdWVJZ25vcmluZ0NvbnRleHQpOgorICAgICAgICAoV1RGOjpW
YWx1ZUlnbm9yaW5nQ29udGV4dDo6ZHVtcCk6CisgICAgICAgIChXVEY6Omlnbm9yaW5nQ29udGV4
dCk6CisKIDIwMTMtMDktMTYgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEZpeCBXZWJLaXQxIGJ1aWxkIGFmdGVyIHIxNTU5MTAKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUHJp
bnRTdHJlYW0uaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL1dURi93dGYvUHJpbnRTdHJl
YW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzYwLDExICszNjAsMzYgQEAgVmFsdWVJbkNvbnRleHQ8
VCwgVT4gaW5Db250ZXh0KGNvbnN0IFQmIAogICAgIHJldHVybiBWYWx1ZUluQ29udGV4dDxULCBV
Pih2YWx1ZSwgY29udGV4dCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
CitjbGFzcyBWYWx1ZUlnbm9yaW5nQ29udGV4dCB7CitwdWJsaWM6CisgICAgVmFsdWVJZ25vcmlu
Z0NvbnRleHQoY29uc3QgVSYgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSgmdmFsdWUpCisgICAg
eworICAgIH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAg
ICB7CisgICAgICAgIFQgY29udGV4dDsKKyAgICAgICAgbV92YWx1ZS0+ZHVtcEluQ29udGV4dChv
dXQsICZjb250ZXh0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgVSogbV92YWx1ZTsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitWYWx1ZUlnbm9yaW5nQ29u
dGV4dDxULCBVPiBpZ25vcmluZ0NvbnRleHQoY29uc3QgVSYgdmFsdWUpCit7CisgICAgcmV0dXJu
IFZhbHVlSWdub3JpbmdDb250ZXh0PFQsIFU+KHZhbHVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V1RGCiAKIHVzaW5nIFdURjo6Q2hhcmFjdGVyRHVtcDsKIHVzaW5nIFdURjo6UG9pbnRlckR1bXA7
CiB1c2luZyBXVEY6OlByaW50U3RyZWFtOwordXNpbmcgV1RGOjppZ25vcmluZ0NvbnRleHQ7CiB1
c2luZyBXVEY6OmluQ29udGV4dDsKIHVzaW5nIFdURjo6cG9pbnRlckR1bXA7CiAK
</data>
<flag name="commit-queue"
          id="233984"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211866</attachid>
            <date>2013-09-16 22:53:43 -0700</date>
            <delta_ts>2013-09-17 12:05:00 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>207644</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1OTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwOSBA
QAorMjAxMy0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgc3VwcG9ydCBJbnQ0OCBmb3IgbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEwNjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWRkcyBJ
bnQ0OCBzdXBwb3J0IGZvciBsb2NhbCB2YXJpYWJsZXMgdG8gdGhlIERGRyBhbmQgRlRMLiBJdCdz
IGEgc3BlZWQtdXAgb24KKyAgICAgICAgcHJvZ3JhbXMgdGhhdCBoYXZlIGxvY2FsIGludDMyIG92
ZXJmbG93cyBidXQgd2hlcmUgYSBsYXJnZXIgaW50IHJlcHJlc2VudGF0aW9uIGNhbgorICAgICAg
ICBwcmV2ZW50IHVzIGZyb20gaGF2aW5nIHRvIGNvbnZlcnQgYWxsIHRoZSB3YXkgdXAgdG8gZG91
YmxlLgorICAgICAgICAKKyAgICAgICAgSXQncyBhIHNtYWxsIHNwZWVkLXVwIGZvciBub3cuIEJ1
dCB3ZSdyZSBqdXN0IHN1cHBvcnRpbmcgSW50NDggZm9yIGEgaGFuZGZ1bCBvZgorICAgICAgICBv
cGVyYXRpb25zIChhZGQsIHN1YiwgbXVsLCBuZWcsIGNvbXBhcmUsIGJpdG9wcywgdHlwZWQgYXJy
YXkgYWNjZXNzKSBhbmQgdGhpcyBsYXlzCisgICAgICAgIHRoZSBncm91bmR3b3JrIGZvciBhZGRp
bmcgSW50NDggdG8gSlNWYWx1ZSwgd2hpY2ggd2lsbCBwcm9iYWJseSBiZSBhIGJpZ2dlcgorICAg
ICAgICBzcGVlZC11cC4KKyAgICAgICAgCisgICAgICAgIFRoZSBiYXNpYyBhcHByb2FjaCBpczoK
KyAgICAgICAgCisgICAgICAgIC0gV2UgaGF2ZSBhIG5vdGlvbiBvZiBJbnQ0OCBpbiBvdXIgdHlw
ZXN5c3RlbS4gSW50NDggZG9lc24ndCBiZWxvbmcgdG8gQnl0ZWNvZGVUb3AKKyAgICAgICAgICBv
ciBIZWFwVG9wIC0gaS5lLiBpdCBkb2Vzbid0IGFyaXNlIGZyb20gSlNWYWx1ZXMuCisgICAgICAg
IAorICAgICAgICAtIERGRyB0cmVhdHMgSW50NDggYXMgYmVpbmcgcGFydCBvZiBpdHMgRnVsbFRv
cCBhbmQgd2lsbCB0cmVhdCBpdCBhcyBiZWluZyBhCisgICAgICAgICAgc3VidHlwZSBvZiBkb3Vi
bGUgdW5sZXNzIGluc3RydWN0ZWQgb3RoZXJ3aXNlLgorICAgICAgICAKKyAgICAgICAgLSBQcmVk
aWN0aW9uIHByb3BhZ2F0b3IgY3JlYXRlcyBJbnQ0OHMgd2hlbmV2ZXIgd2UgaGF2ZSBhIG5vZGUg
Z29pbmcgZG91Ymx5IGJ1dCBkdWUKKyAgICAgICAgICB0byBsYXJnZSB2YWx1ZXMgcmF0aGVyIHRo
YW4gZnJhY3Rpb25hbCB2YWx1ZXMsIGFuZCB0aGF0IG5vZGUgaXMga25vd24gdG8gYmUgYWJsZQor
ICAgICAgICAgIHRvIHByb2R1Y2UgSW50NDggbmF0aXZlbHkgaW4gdGhlIERGRyBiYWNrZW5kLgor
ICAgICAgICAKKyAgICAgICAgLSBGaXh1cCBwaGFzZSBjb252ZXJ0cyBlZGdlcyB0byBNYWNoaW5l
SW50VXNlcyBpbiBub2RlcyB0aGF0IGFyZSBrbm93biB0byBiZSBhYmxlCisgICAgICAgICAgdG8g
ZGVhbCB3aXRoIEludDQ4LCBhbmQgd2hlcmUgd2UgaGF2ZSBhIHN1YnR5cGUgb2YgSW50MzJ8SW50
NDggYXMgdGhlIHByZWRpY3RlZAorICAgICAgICAgIGlucHV0LgorICAgICAgICAKKyAgICAgICAg
LSBUaGUgREZHIGJhY2tlbmQgYW5kIEZUTCBMTFZNIElSIGxvd2VyaW5nIGhhdmUgdHdvIG5vdGlv
bnMgb2YgSW50NDhzIC0gb25lcyB0aGF0CisgICAgICAgICAgYXJlIGxlZnQtc2hpZnRlZCBieSAx
NiAoZ3JlYXQgZm9yIG92ZXJmbG93IGNoZWNrcykgYW5kIG9uZXMgdGhhdCBhcmUKKyAgICAgICAg
ICBzaWduLWV4dGVuZGVkLiBCb3RoIGJhY2tlbmRzIGtub3cgaG93IHRvIGNvbnZlcnQgYmV0d2Vl
biBJbnQ0OHMgYW5kIHRoZSBvdGhlcgorICAgICAgICAgIHJlcHJlc2VudGF0aW9ucy4KKworICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4Nl82NDo6cnNoaWZ0NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6bXVsNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YnJhbmNoTXVsNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNo
TmVnNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29udmVydEludDY0
VG9Eb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjppbXVscV9ycik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6Y3Z0c2kyc2RxX3JyKToKKyAgICAgICAgKiBieXRlY29kZS9EYXRhRm9ybWF0Lmg6CisgICAg
ICAgIChKU0M6OmRhdGFGb3JtYXRUb1N0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFu
ZHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Ojo6ZHVtcEluQ29udGV4dCk6CisgICAgICAgICog
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpkdW1wU3BlY3VsYXRp
b24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21WYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGht
ZXRpYyk6CisgICAgICAgIChKU0M6OmlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRp
Yyk6CisgICAgICAgIChKU0M6OmlzQnl0ZWNvZGVSZWFsTnVtYmVyU3BlY3VsYXRpb24pOgorICAg
ICAgICAoSlNDOjppc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpp
c0J5dGVjb2RlTnVtYmVyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQnl0ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAoSlNDOjppc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaDoKKyAg
ICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4
KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6aW5HUFIpOgorICAgICAgICAoSlNDOjpW
YWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2spOgorICAgICAgICAoSlNDOjpWYWx1ZVJl
Y292ZXJ5Ojppc0FscmVhZHlJbkpTU3RhY2spOgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5
OjpncHIpOgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5Ojp2aXJ0dWFsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5OjpkdW1wSW5Db250ZXh0KToKKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI6Om5lZWRzVHlwZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFj
dEludGVycHJldGVyOjpmaWx0ZXJCeVR5cGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6Ojo6ZXhlY3V0ZUVmZmVjdHMp
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y291bGRCZVR5cGUpOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmlzVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RWYWx1ZTo6dmFsaWRhdGVUeXBlKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
Ym94SW50NDgpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Q1NFUGhhc2U6OnB1cmVDU0UpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpn
ZXRCeVZhbExvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBl
cmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAg
ICAgKEpTQzo6REZHOjplbmFibGVJbnQ0OCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cFNldExvY2Fsc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmZpeHVwVW50eXBlZFNldExvY2Fsc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25Ob2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXhFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbmplY3RJ
bnQzMlRvRG91YmxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1w
dFRvTWFrZUludGVnZXJBZGQpOgorICAgICAgICAqIGRmZy9ERkdGbHVzaEZvcm1hdC5jcHA6Cisg
ICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdGbHVzaEZvcm1h
dC5oOgorICAgICAgICAoSlNDOjpERkc6OnJlc3VsdEZvcik6CisgICAgICAgIChKU0M6OkRGRzo6
dXNlS2luZEZvcik6CisgICAgICAgICogZGZnL0RGR0dlbmVyYXRpb25JbmZvLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R2VuZXJhdGlvbkluZm86OmluaXRJbnQ0OCk6CisgICAgICAgIChKU0M6OkRG
Rzo6R2VuZXJhdGlvbkluZm86OmluaXRTdHJpY3RJbnQ0OCk6CisgICAgICAgIChKU0M6OkRGRzo6
R2VuZXJhdGlvbkluZm86OmlzRm9ybWF0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0aW9u
SW5mbzo6aXNJbnQ0OCk6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdGlvbkluZm86OmlzU3Ry
aWN0SW50NDgpOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjpmaWxsSW50NDgp
OgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjpmaWxsU3RyaWN0SW50NDgpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1
bXApOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjphZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6bXVsU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6Om5lZ2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQpOgorICAgICAgICAqIGRmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3Ry
YWN0U3RhdGU6Om1lcmdlU3RhdGVBdFRhaWwpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb2RlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICog
ZGZnL0RGR01pbmlmaWVkTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OmJlbG9uZ3NJbk1pbmlm
aWVkR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkTm9kZTo6aGFzQ2hpbGQpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxk
U3BlY3VsYXRlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxh
dGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKToKKyAgICAgICAgKiBkZmcvREZHTm9kZUZsYWdzLmg6
CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9yd2Fy
ZFJld2lyaW5nU2VsZWN0aW9uU2NvcmUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGls
ZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6c3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0
aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJv
cGFnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6
ZG9Eb3VibGVWb3RpbmcpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTaWxlbnRSZWdpc3Rl
clNhdmVQbGFuLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50U2F2ZVBsYW5Gb3JHUFIpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbmNoKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBl
ZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhNdWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWFjaGluZUludCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlYWxOdW1iZXIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YW5SZXVzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmlzRmlsbGVkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNGaWxsZWREb3VibGUpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp1c2UpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjppc0tub3duSW50ZWdlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmlzS25vd25DZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6aXNLbm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmludDQ4UmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3Ry
aWN0SW50NDhSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjppbml0
Q29uc3RhbnRJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNJbnRl
Z2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YmV0dGVyVXNlU3RyaWN0
SW50NDgpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmF0aW9uSW5m
byk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlSW50NDhPcGVyYW5kOjpTcGVjdWxhdGVJ
bnQ0OE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludDQ4T3BlcmFuZDo6
flNwZWN1bGF0ZUludDQ4T3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlSW50
NDhPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnQ0OE9wZXJh
bmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludDQ4T3BlcmFuZDo6Z3By
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnQ0OE9wZXJhbmQ6OnVzZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kOjpTcGVjdWxhdGVTdHJp
Y3RJbnQ0OE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVN0cmljdEludDQ4
T3BlcmFuZDo6flNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZVN0cmljdEludDQ4T3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQ6OnVzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kOjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJh
bmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZDo6
flNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQ6OnVzZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kOjpmb3JtYXQpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Ym94SW50NDgpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDQ4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50NDhDb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NDhCcmFu
Y2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRl
ckZvcik6CisgICAgICAgIChKU0M6OkRGRzo6aXNOdW1lcmljYWwpOgorICAgICAgICAqIGRmZy9E
RkdWYWx1ZVNvdXJjZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OmR1bXAp
OgorICAgICAgICAqIGRmZy9ERkdWYWx1ZVNvdXJjZS5oOgorICAgICAgICAoSlNDOjpERkc6OmRh
dGFGb3JtYXRUb1ZhbHVlU291cmNlS2luZCk6CisgICAgICAgIChKU0M6OkRGRzo6dmFsdWVTb3Vy
Y2VLaW5kVG9EYXRhRm9ybWF0KToKKyAgICAgICAgKEpTQzo6REZHOjpWYWx1ZVNvdXJjZTo6Zm9y
Rmx1c2hGb3JtYXQpOgorICAgICAgICAoSlNDOjpERkc6OlZhbHVlU291cmNlOjp2YWx1ZVJlY292
ZXJ5KToKKyAgICAgICAgKiBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmg6CisgICAgICAgIChK
U0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjpzaG91bGRVc2VEb3VibGVGb3JtYXRBY2NvcmRp
bmdUb1ZvdGUpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6Zmx1c2hG
b3JtYXQpOgorICAgICAgICAqIGZ0bC9GVExDQXJndW1lbnRHZXR0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkNBcmd1bWVudEdldHRlcjo6bG9hZE5leHRBbmRCb3gpOgorICAgICAgICAqIGZ0
bC9GVExDQXJndW1lbnRHZXR0ZXIuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMRXhp
dFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OmR1bXBJbkNvbnRleHQp
OgorICAgICAgICAqIGZ0bC9GVExFeGl0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0
VmFsdWU6OmluSlNTdGFja0FzSW50NDgpOgorICAgICAgICAqIGZ0bC9GVExJbnRyaW5zaWNSZXBv
c2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y3JlYXRlUGhpVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVXBzaWxvbik6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQaGkpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlU2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUFyaXRoU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFy
aXRoTmVnYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBh
cmVFcSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDb21wYXJl
U3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29t
cGFyZUxlc3MpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29t
cGFyZUxlc3NFcSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVD
b21wYXJlR3JlYXRlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVDb21wYXJlR3JlYXRlckVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
bG93SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dJbnQ0OCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd1N0cmljdEludDQ4KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YmV0dGVyVXNlU3RyaWN0SW50NDgpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpiZXN0SW50NDhLaW5kKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6b3Bwb3NpdGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpJbnQ0OHM6Om9wZXJhdG9yW10pOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpsb3dXaGljaGV2ZXJJbnQ0OCk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd1doaWNoZXZlckludDQ4cyk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd09wcG9zaW5nSW50NDhzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6bG93Q2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdU
b0xMVk06Omxvd0Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjps
b3dEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dKU1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3RyaWN0SW50NDhUb0ludDMy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3RyaWN0SW50NDhUb0RvdWJs
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnN0cmljdEludDQ4VG9KU1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0SW50NDhXaXRoU3Ry
aWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzdHJpY3RJbnQ0
OFRvSW50NDgpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjppbnQ0OFRvU3Ry
aWN0SW50NDgpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVS
ZWFsTnVtYmVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aW5pdGlhbGl6
ZU9TUkV4aXRTdGF0ZUZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6ZW1pdE9TUkV4aXRDYWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
YWRkRXhpdEFyZ3VtZW50Rm9yTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OnNldEludDQ4KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0U3Ry
aWN0SW50NDgpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGRXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpzdWJXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjptdWxXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgICogZnRsL0ZUTFZhbHVlRm9ybWF0
LmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZnRsL0ZUTFZh
bHVlRm9ybWF0Lmg6CisgICAgICAgICogZnRsL0ZUTFZhbHVlU291cmNlLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpWYWx1ZVNvdXJjZTo6ZHVtcCk6CisgICAgICAgICogZnRsL0ZUTFZhbHVlU291
cmNlLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaDoKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXI6OnVuYm94ZWRJbnQ0OCk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3Bw
OgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnRlYXJPZmZGb3JJbmxpbmVDYWxsRnJhbWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bGVhc3RV
cHBlckJvdW5kT2ZJbmRleGluZ1R5cGVBbmRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pT
VmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OmlzTWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmFz
TWFjaGluZUludCk6CisKIDIwMTMtMDktMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJn
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrZWRCbG9ja3Mgc2hvdWxkbid0IGJlIHB1dCBpbiBB
bGxvY2F0ZWQgc3RhdGUgaWYgdGhleSBkaWRuJ3QgcHJvZHVjZSBhIEZyZWVMaXN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw2ICsy
MzAsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zaGxxX2k4cihpbW0ubV92YWx1
ZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgcnNoaWZ0NjQoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2FycV9pOHIo
aW1tLm1fdmFsdWUsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIG11bDY0KFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5pbXVs
cV9ycihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIG5lZzY0KFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfcihkZXN0KTsKQEAgLTUzMCw2
ICs1NDAsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Mo
eDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hNdWw2NChSZXN1
bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG11bDY0KHNyYywgZGVzdCk7CisgICAgICAgIGlmIChjb25kICE9IE92ZXJmbG93
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHFfcnIoZGVzdCwgZGVzdCk7CisgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKKyAgICB9
CisKICAgICBKdW1wIGJyYW5jaFN1YjY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWI2NChpbW0sIGRlc3Qp
OwpAQCAtNTQ4LDYgKzU2NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hTdWI2
NChjb25kLCBzcmMyLCBkZXN0KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaE5lZzY0KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBuZWc2
NChzcmNEZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOworICAgIH0KKwogICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRp
YmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRo
aXMpOwpAQCAtNTk1LDYgKzYxOSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0
ZXIpLCBtYXNrKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbnZlcnRJbnQ2NFRvRG91YmxlKFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmN2dHNpMnNkcV9ycihzcmMsIGRlc3QpOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzRmxvYXRpbmdQb2ludCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAvLyBTZWUgY29tbWVudCBv
biBNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpCiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSB7IHJldHVybiB0
cnVlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyOSwxMyArODI5LDIwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICAg
ICAgfQogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIENQVShYODZfNjQpCiAKICAgICB2b2lkIGlt
dWxsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3QsIHNyYyk7CiAgICAgfQogCisj
aWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGltdWxxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9JTVVM
X0d2RXYsIGRzdCwgc3JjKTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZv
aWQgaW11bGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3Qs
IGJhc2UsIG9mZnNldCk7CkBAIC0xNjExLDYgKzE2MTgsMTQgQEAgcHVibGljOgogICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNJMlNEX1ZzZEVkLCAoUmVnaXN0ZXJJRClkc3Qs
IHNyYyk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGN2dHNpMnNkcV9ycihS
ZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9DVlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBzcmMpOworICAgIH0KKyNlbmRp
ZgorCiAgICAgdm9pZCBjdnRzaTJzZF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhN
TVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9T
U0VfRjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1h
dC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGF0YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiBlbnVtIERhdGFGb3JtYXQgewogICAgIERhdGFGb3JtYXROb25lID0gMCwKICAgICBE
YXRhRm9ybWF0SW50MzIgPSAxLAotICAgIERhdGFGb3JtYXREb3VibGUgPSAyLAotICAgIERhdGFG
b3JtYXRCb29sZWFuID0gMywKLSAgICBEYXRhRm9ybWF0Q2VsbCA9IDQsCi0gICAgRGF0YUZvcm1h
dFN0b3JhZ2UgPSA1LAorICAgIERhdGFGb3JtYXRJbnQ0OCA9IDIsIC8vIEludDQ4J3MgYXJlIGxl
ZnQtc2hpZnRlZCBieSAxNiBieSBkZWZhdWx0LgorICAgIERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA9
IDMsIC8vICJTdHJpY3QiIEludDQ4IG1lYW5zIGl0J3Mgbm90IHNoaWZ0ZWQuCisgICAgRGF0YUZv
cm1hdERvdWJsZSA9IDQsCisgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAorICAgIERhdGFGb3Jt
YXRDZWxsID0gNiwKKyAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCiAgICAgRGF0YUZvcm1hdEpT
ID0gOCwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRJ
bnQzMiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0
RG91YmxlLApAQCAtNjQsNiArNjYsMTAgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRU
b1N0cmluZyhEYQogICAgICAgICByZXR1cm4gIk5vbmUiOwogICAgIGNhc2UgRGF0YUZvcm1hdElu
dDMyOgogICAgICAgICByZXR1cm4gIkludDMyIjsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODoK
KyAgICAgICAgcmV0dXJuICJJbnQ0OCI7CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6
CisgICAgICAgIHJldHVybiAiU3RyaWN0SW50NDgiOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJs
ZToKICAgICAgICAgcmV0dXJuICJEb3VibGUiOwogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzSW5saW5l
cy5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3BlcmFuZHNJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBP
cGVyYW5kczxULCBUcmFpdHM+OjpkdW1wSW5Db250ZXh0KAogICAgIGZvciAoc2l6ZV90IGxvY2Fs
SW5kZXggPSAwOyBsb2NhbEluZGV4IDwgbnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbEluZGV4KSB7
CiAgICAgICAgIGlmIChUcmFpdHM6OmlzRW1wdHlGb3JEdW1wKGxvY2FsKGxvY2FsSW5kZXgpKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwgbG9j
YWxJbmRleCwgIjoiLCBpbkNvbnRleHQobG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgbG9jYWxJbmRleCwgIjoiLCBpbkNvbnRleHQo
bG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNp
b24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsMTMgQEAgdm9pZCBkdW1wU3Bl
Y3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dCwgUwogICAgIH0KICAgICAKICAgICBpZiAodmFsdWUg
JiBTcGVjSW50MzIpCi0gICAgICAgIG15T3V0LnByaW50KCJJbnQiKTsKKyAgICAgICAgbXlPdXQu
cHJpbnQoIkludDMyIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAor
ICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQ0OCkKKyAgICAgICAgbXlPdXQucHJpbnQoIkludDQ4Iik7
CisgICAgICAgIAogICAgIGlmICgodmFsdWUgJiBTcGVjRG91YmxlKSA9PSBTcGVjRG91YmxlKQog
ICAgICAgICBteU91dC5wcmludCgiRG91YmxlIik7CiAgICAgZWxzZSB7CkBAIC0xNjYsMTEgKzE2
OSw2IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBvdXQsIFMKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICh2
YWx1ZSAmIFNwZWNJbnQ0OCkKLSAgICAgICAgICAgIG15T3V0LnByaW50KCJJbnQ0OCIpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgICAgICAKICAgICAgICAg
aWYgKHZhbHVlICYgU3BlY05vbkludEFzRG91YmxlKQogICAgICAgICAgICAgbXlPdXQucHJpbnQo
Ik5vbmludGFzZG91YmxlIik7CiAgICAgICAgIGVsc2UKQEAgLTI0Nyw5ICsyNDUsMTEgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9BYmJyZXZpYQogICAgICAgICByZXR1cm4gIjxJ
bnQ0OEFzRG91YmxlPiI7CiAgICAgaWYgKGlzSW50NDhTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkK
ICAgICAgICAgcmV0dXJuICI8SW50NDg+IjsKKyAgICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCisgICAgICAgIHJldHVybiAiPE1hY2hpbmVJbnQ+IjsKICAgICBpZiAo
aXNEb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8RG91Ymxl
PiI7Ci0gICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgaWYgKGlz
RnVsbE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxOdW1i
ZXI+IjsKICAgICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAg
IHJldHVybiAiPEJvb2xlYW4+IjsKQEAgLTM0NSwxNiArMzQ1LDExIEBAIFNwZWN1bGF0ZWRUeXBl
IHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmEKICAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKICAg
ICBpZiAodmFsdWUuaXNEb3VibGUoKSkgewogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUu
YXNOdW1iZXIoKTsKLSAgICAgICAgaWYgKG51bWJlciA9PSBudW1iZXIpIHsKLSAgICAgICAgICAg
IGludDY0X3QgYXNJbnQ2NCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG51bWJlcik7Ci0gICAgICAg
ICAgICBpZiAoYXNJbnQ2NCA9PSBudW1iZXIgJiYgKGFzSW50NjQgfHwgIXN0ZDo6c2lnbmJpdChu
dW1iZXIpKQotICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPCAoc3RhdGljX2Nhc3Q8aW50NjRf
dD4oMSkgPDwgNDcpCi0gICAgICAgICAgICAgICAgJiYgYXNJbnQ2NCA+PSAtKHN0YXRpY19jYXN0
PGludDY0X3Q+KDEpIDw8IDQ3KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTcGVjSW50NDhB
c0RvdWJsZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNE
b3VibGU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47CisgICAgICAg
IGlmIChudW1iZXIgIT0gbnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVOYU47
CisgICAgICAgIGlmICh2YWx1ZS5pc01hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBT
cGVjSW50NDhBc0RvdWJsZTsKKyAgICAgICAgcmV0dXJuIFNwZWNOb25JbnRBc0RvdWJsZTsKICAg
ICB9CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25G
cm9tQ2VsbCh2YWx1ZS5hc0NlbGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDQ2ICszOCw0OCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cnVjdHVyZTsKIAog
dHlwZWRlZiB1aW50MzJfdCBTcGVjdWxhdGVkVHlwZTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjTm9uZSAgICAgICAgICAgICAgPSAweDAwMDAwMDAwOyAvLyBXZSBkb24ndCBrbm93
IGFueXRoaW5nIHlldC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmpl
Y3QgICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2JqZWN0
Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAgICA9IDB4
MDAwMDAwMDI7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQXJyYXkuCi1zdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uICAgICAgICAgID0gMHgwMDAwMDAwODsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAgICAgID0gMHgwMDAwMDAxMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAgID0gMHgw
MDAwMDAyMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBz
dWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMkFycmF5ICAg
ICAgICA9IDB4MDAwMDAwNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWlu
dDhBcnJheSAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDhB
cnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ID0gMHgwMDAwMDEwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGFuIFVpbnQ4Q2xhbXBlZEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDE2QXJyYXkgICAgICAgPSAweDAwMDAwMjAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2Vz
Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MzJBcnJheSAgICAgICA9IDB4
MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJheSBvciBvbmUgb2YgaXRz
IHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Zsb2F0MzJBcnJh
eSAgICAgID0gMHgwMDAwMDgwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9y
IG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
RmxvYXQ2NEFycmF5ICAgICAgPSAweDAwMDAxMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWlu
dDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNUeXBlZEFycmF5VmlldyAgICA9IFNwZWNJbnQ4QXJyYXkgfCBTcGVjSW50MTZB
cnJheSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkgfCBTcGVjVWludDhDbGFtcGVk
QXJyYXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJyYXkgfCBTcGVjRmxvYXQzMkFy
cmF5IHwgU3BlY0Zsb2F0NjRBcnJheTsKLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
QXJndW1lbnRzICAgICAgICAgPSAweDAwMDAyMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gQXJn
dW1lbnRzIG9iamVjdC4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nT2Jq
ZWN0ICAgICAgPSAweDAwMDA0MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTdHJpbmdPYmplY3Qu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgID0gMHgw
MDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmpl
Y3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY09iamVjdCAgICAgICAgICAgID0gMHgwMDAwZmZmZjsgLy8gQml0bWFzayB1c2VkIGZvciB0
ZXN0aW5nIGZvciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nSWRlbnQgICAgICAgPSAweDAwMDEwMDAwOyAvLyBJdCdz
IGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3MgYW4gaWRlbnRpZmllci4KLXN0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nVmFyICAgICAgICAgPSAweDAwMDIwMDAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAgICAgICAgICAgID0gMHgw
MDAzMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCi1zdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0NlbGxPdGhlciAgICAgICAgID0gMHgwMDA0MDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGEgSlNDZWxsIGJ1dCBub3QgYSBzdWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVm
aW5pdGVseSBub3QgYSBKU1N0cmluZy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
Q2VsbCAgICAgICAgICAgICAgPSAweDAwMDdmZmZmOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Nl
bGwuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyICAgICAgICAgICAgID0g
MHgwMDgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgotc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNJbnQ0OCAgICAgICAgICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBJbnQ0OCwgaXQncyBpbnNpZGUgYSBkb3VibGUsIGJ1dCBpdCBkb2Vzbid0
IG5lZWQgdG8gYmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hpbmVJbnQg
ICAgICAgID0gMHgwMTgwMDAwMDsgLy8gSXQncyBzb21ldGhpbmcgdGhhdCB3ZSBjYW4gZG8gbWFj
aGluZSBpbnQgYXJpdGhtZXRpYyBvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
SW50NDhBc0RvdWJsZSAgICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50
NDggYW5kIGl0J3MgaW5zaWRlIGEgZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNJbnRlZ2VyICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBz
b21lIGtpbmQgb2YgaW50ZWdlci4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9u
SW50QXNEb3VibGUgICAgPSAweDA0MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgbm90IGFuIElu
dDQ4IGJ1dCBpdCdzIGEgcmVhbCBudW1iZXIgYW5kIGl0J3MgYSBkb3VibGUuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgID0gMHgwNzAwMDAwMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RvdWJsZU5hTiAgICAgICAgID0gMHgwODAwMDAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IGEgTmFOLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGUgICAgICAg
ICAgICA9IDB4MGYwMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3Vi
bGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1JlYWxOdW1iZXIgICAgICAgID0g
MHgwNzgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVSZWFsLgotc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAgICAgICAgICA9IDB4MGY4MDAw
MDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEJvb2xlYW4uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090
aGVyICAgICAgICAgICAgID0gMHgyMDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vbmUgb2Yg
dGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAg
ICAgICA9IDB4M2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICA9IDB4NDAwMDAwMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQg
Y2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0Z1bGxUb3AgICAgICAgICAgID0gMHg3ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUg
YWJvdmUgcGx1cyBhbnl0aGluZyB0aGUgREZHIGNob29zZXMuCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY05vbmUgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDA7IC8vIFdlIGRvbid0
IGtub3cgYW55dGhpbmcgeWV0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGaW5h
bE9iamVjdCAgICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFs
T2JqZWN0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBcnJheSAgICAgICAgICAg
ICAgPSAweDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICAgPSAweDAwMDAwMDA4OyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4K
K3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50OEFycmF5ICAgICAgICAgID0gMHgw
MDAwMDAxMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1
YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAg
ICAgICA9IDB4MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50
MzJBcnJheSAgICAgICAgID0gMHgwMDAwMDA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMy
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNVaW50OEFycmF5ICAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRl
bHkgYW4gVWludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5ICA9IDB4MDAwMDAxMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNz
ZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgICA9
IDB4MDAwMDAyMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2Yg
aXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQzMkFy
cmF5ICAgICAgICA9IDB4MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0Zsb2F0MzJBcnJheSAgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBh
biBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0Zsb2F0NjRBcnJheSAgICAgICA9IDB4MDAwMDEwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1R5cGVkQXJyYXlWaWV3ICAgICA9IFNwZWNJbnQ4
QXJyYXkgfCBTcGVjSW50MTZBcnJheSB8IFNwZWNJbnQzMkFycmF5IHwgU3BlY1VpbnQ4QXJyYXkg
fCBTcGVjVWludDhDbGFtcGVkQXJyYXkgfCBTcGVjVWludDE2QXJyYXkgfCBTcGVjVWludDMyQXJy
YXkgfCBTcGVjRmxvYXQzMkFycmF5IHwgU3BlY0Zsb2F0NjRBcnJheTsKK3N0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjQXJndW1lbnRzICAgICAgICAgID0gMHgwMDAwMjAwMDsgLy8gSXQn
cyBkZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBvYmplY3QuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY1N0cmluZ09iamVjdCAgICAgICA9IDB4MDAwMDQwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIFN0cmluZ09iamVjdC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT2Jq
ZWN0T3RoZXIgICAgICAgID0gMHgwMDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVj
dCBidXQgbm90IEpTRmluYWxPYmplY3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAgICAgICAgICAgICA9IDB4MDAwMGZmZmY7
IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRp
Y3Rpb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ0lkZW50ICAgICAg
ICA9IDB4MDAwMTAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLCBhbmQgaXQncyBh
biBpZGVudGlmaWVyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdWYXIg
ICAgICAgICAgPSAweDAwMDIwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5k
IGl0J3Mgbm90IGFuIGlkZW50aWZpZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y1N0cmluZyAgICAgICAgICAgICA9IDB4MDAwMzAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpT
U3RyaW5nLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZXIgICAgICAg
ICAgPSAweDAwMDQwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBhIHN1
YmNsYXNzIG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgPSAweDAwMDdmZmZm
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0ludDMyICAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBJbnQzMi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NDggICAgICAg
ICAgICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4IGFuZCB3ZSBp
bnRlbmQgaXQgdG8gdW5ib3ggaXQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01h
Y2hpbmVJbnQgICAgICAgICA9IDB4MDE4MDAwMDA7IC8vIEl0J3Mgc29tZXRoaW5nIHRoYXQgd2Ug
Y2FuIGRvIG1hY2hpbmUgaW50IGFyaXRobWV0aWMgb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0ludDQ4QXNEb3VibGUgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhbiBJbnQ0OCBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUuCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBzb21lIGtpbmQgb2YgaW50ZWdlci4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjTm9uSW50QXNEb3VibGUgICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IG5vdCBhbiBJbnQ0OCBidXQgaXQncyBhIHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91Ymxl
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICAgPSAw
eDA2MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KK3N0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlTmFOICAgICAgICAgID0gMHgwODAwMDAwMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNEb3VibGUgICAgICAgICAgICAgPSAweDBlMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1O
YU4gb3IgYSBOYU4gZG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRl
Y29kZVJlYWxOdW1iZXIgPSAweDA2ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBh
IERvdWJsZVJlYWwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxSZWFsTnVt
YmVyICAgICA9IDB4MDc4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91Ymxl
UmVhbCwgb3IgYSBJbnQ0OC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNv
ZGVOdW1iZXIgICAgID0gMHgwZTgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBE
b3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bGxOdW1iZXIgICAgICAg
ICA9IDB4MGY4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ0OCwgb3IgYSBEb3Vi
bGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAgICAgICA9
IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICA9IDB4MjAwMDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBub25lIG9mIHRoZSBhYm92ZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgID0gMHgzZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFu
eSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDQ4Lgorc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgPSAweDdlZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55
IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NDguCitzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0Z1bGxUb3AgICAgICAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBi
ZSBhbnkgb2YgdGhlIGFib3ZlIHBsdXMgYW55dGhpbmcgdGhlIERGRyBjaG9vc2VzLgogCiB0eXBl
ZGVmIGJvb2wgKCpTcGVjdWxhdGVkVHlwZUNoZWNrZXIpKFNwZWN1bGF0ZWRUeXBlKTsKIApAQCAt
MjQwLDcgKzI0Miw3IEBAIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGUK
IAogaW5saW5lIGJvb2wgaXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhTcGVjdWxhdGVk
VHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIFNwZWNEb3VibGUpOworICAgIHJl
dHVybiAhKHZhbHVlICYgKFNwZWNEb3VibGUgfCBTcGVjSW50NDgpKTsKIH0KIAogaW5saW5lIGJv
b2wgaXNJbnQzMlNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKQEAgLTI2NSw3ICsyNjcsNyBAQCBpbmxpbmUgYm9vbCBpc01hY2hpbmVJbnRTcGVjdWxhdGlv
bkV4cGVjCiAKIGlubGluZSBib29sIGlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRp
YyhTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVjRG91
YmxlICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRG91Ymxl
KTsKIH0KIAogaW5saW5lIGJvb2wgaXNJbnQ0OEFzRG91YmxlU3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCkBAIC0yOTMsMTkgKzI5NSwzNCBAQCBpbmxpbmUgYm9vbCBpc0RvdWJsZVNw
ZWN1bGF0aW9uRm9yQXJpdGhtCiAgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0RvdWJsZSk7CiB9
CiAKLWlubGluZSBib29sIGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlKQoraW5saW5lIGJvb2wgaXNCeXRlY29kZVJlYWxOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxh
dGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQnl0ZWNvZGVSZWFs
TnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNCeXRlY29kZVJlYWxOdW1iZXIpOworfQorCitpbmxp
bmUgYm9vbCBpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUp
Cit7CisgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0Z1bGxSZWFsTnVtYmVyKSAmJiAhKHZhbHVl
ICYgflNwZWNGdWxsUmVhbE51bWJlcik7Cit9CisKK2lubGluZSBib29sIGlzQnl0ZWNvZGVOdW1i
ZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFs
dWUgJiBTcGVjQnl0ZWNvZGVOdW1iZXIpICYmICEodmFsdWUgJiB+U3BlY0J5dGVjb2RlTnVtYmVy
KTsKK30KKworaW5saW5lIGJvb2wgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY1JlYWxOdW1iZXIpICYmICEo
dmFsdWUgJiB+U3BlY1JlYWxOdW1iZXIpOworICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNGdWxs
TnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNGdWxsTnVtYmVyKTsKIH0KIAotaW5saW5lIGJvb2wg
aXNOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlz
Qnl0ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY051bWJlcikgJiYgISh2YWx1ZSAm
IH5TcGVjTnVtYmVyKTsKKyAgICByZXR1cm4gaXNCeXRlY29kZU51bWJlclNwZWN1bGF0aW9uKHZh
bHVlICYgflNwZWNPdGhlcik7CiB9CiAKLWlubGluZSBib29sIGlzTnVtYmVyU3BlY3VsYXRpb25F
eHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNGdWxs
TnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQog
ewotICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7Cisg
ICAgcmV0dXJuIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlICYgflNwZWNPdGhlcik7CiB9
CiAKIGlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVy
eS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VmFsdWVSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTUgQEAgZW51bSBW
YWx1ZVJlY292ZXJ5VGVjaG5pcXVlIHsKICAgICBBbHJlYWR5SW5KU1N0YWNrLAogICAgIC8vIEl0
J3MgYWxyZWFkeSBpbiB0aGUgc3RhY2sgYnV0IHVuYm94ZWQuCiAgICAgQWxyZWFkeUluSlNTdGFj
a0FzVW5ib3hlZEludDMyLAorICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCwKICAg
ICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNV
bmJveGVkQm9vbGVhbiwKICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlLAogICAg
IC8vIEl0J3MgaW4gYSByZWdpc3Rlci4KICAgICBJbkdQUiwKICAgICBVbmJveGVkSW50MzJJbkdQ
UiwKKyAgICBVbmJveGVkSW50NDhJbkdQUiwKKyAgICBVbmJveGVkU3RyaWN0SW50NDhJbkdQUiwK
ICAgICBVbmJveGVkQm9vbGVhbkluR1BSLAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgSW5Q
YWlyLApAQCAtNjAsNiArNjMsOCBAQCBlbnVtIFZhbHVlUmVjb3ZlcnlUZWNobmlxdWUgewogICAg
IERpc3BsYWNlZEluSlNTdGFjaywKICAgICAvLyBJdCdzIGluIHRoZSBzdGFjaywgYXQgYSBkaWZm
ZXJlbnQgbG9jYXRpb24sIGFuZCBpdCdzIHVuYm94ZWQuCiAgICAgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2ssCisgICAgSW50NDhEaXNwbGFjZWRJbkpTU3RhY2ssCisgICAgU3RyaWN0SW50NDhEaXNw
bGFjZWRJbkpTU3RhY2ssCiAgICAgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrLAogICAgIENlbGxE
aXNwbGFjZWRJbkpTU3RhY2ssCiAgICAgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjaywKQEAgLTk1
LDYgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAorICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0
OCgpCisgICAgeworICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0
Lm1fdGVjaG5pcXVlID0gQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDQ4OworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBhbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpCiAgICAgewogICAgICAgICBWYWx1ZVJlY292ZXJ5
IHJlc3VsdDsKQEAgLTEyNSw2ICsxMzcsMTAgQEAgcHVibGljOgogICAgICAgICBWYWx1ZVJlY292
ZXJ5IHJlc3VsdDsKICAgICAgICAgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKQog
ICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDMySW5HUFI7CisgICAg
ICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAg
cmVzdWx0Lm1fdGVjaG5pcXVlID0gVW5ib3hlZEludDQ4SW5HUFI7CisgICAgICAgIGVsc2UgaWYg
KGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgcmVzdWx0
Lm1fdGVjaG5pcXVlID0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFI7CiAgICAgICAgIGVsc2UgaWYg
KGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdEJvb2xlYW4pCiAgICAgICAgICAgICByZXN1bHQubV90
ZWNobmlxdWUgPSBVbmJveGVkQm9vbGVhbkluR1BSOwogICAgICAgICBlbHNlCkBAIC0xNjgsNiAr
MTg0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDMy
RGlzcGxhY2VkSW5KU1N0YWNrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlx
dWUgPSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OgorICAgICAgICAgICAg
cmVzdWx0Lm1fdGVjaG5pcXVlID0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIERhdGFGb3JtYXREb3Vi
bGU6CiAgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBEb3VibGVEaXNwbGFjZWRJbkpT
U3RhY2s7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyOSw2ICsyNTMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHN3aXRjaCAodGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0
YWNrOgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKKyAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CiAgICAgICAgIGNhc2UgQWxy
ZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFj
a0FzVW5ib3hlZEJvb2xlYW46CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hl
ZERvdWJsZToKQEAgLTI0MCw3ICsyNjUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlJlZ2lzdGVySUQgZ3ByKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Rl
Y2huaXF1ZSA9PSBJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBt
X3RlY2huaXF1ZSA9PSBVbmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQz
MkluR1BSKTsKKyAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8IG1fdGVjaG5p
cXVlID09IFVuYm94ZWRJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94ZWRCb29sZWFu
SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVUludDMySW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5i
b3hlZEludDQ4SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZFN0cmljdEludDQ4SW5HUFIp
OwogICAgICAgICByZXR1cm4gbV9zb3VyY2UuZ3ByOwogICAgIH0KICAgICAKQEAgLTI2Niw3ICsy
OTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rl
cigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2Vk
SW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1f
dGVjaG5pcXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJ
bkpTU3RhY2spOworICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0
YWNrIHx8IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5p
cXVlID09IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlz
cGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3Rh
Y2sgfHwgbV90ZWNobmlxdWUgPT0gSW50NDhEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlx
dWUgPT0gU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2spOwogICAgICAgICByZXR1cm4gbV9z
b3VyY2UudmlydHVhbFJlZzsKICAgICB9CiAgICAgCkBAIC0yODUsNiArMzEwLDkgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAg
ICAgIG91dC5wcmludGYoIihpbnQzMikiKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Y2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NDg6CisgICAgICAgICAgICBvdXQucHJp
bnRmKCIoaW50NDgpIik7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZENlbGw6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoY2VsbCki
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwMCw2ICszMjgsMTIgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgogICAgICAgICAgICAgb3V0LnByaW50ZigiaW50
MzIoJSVyJWQpIiwgZ3ByKCkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVu
Ym94ZWRJbnQ0OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50ZigiaW50NDgoJSVyJWQpIiwg
Z3ByKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJ
bnQ0OEluR1BSOgorICAgICAgICAgICAgb3V0LnByaW50Zigic3RyaWN0SW50NDgoJSVyJWQpIiwg
Z3ByKCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFu
SW5HUFI6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJib29sKCUlciVkKSIsIGdwcigpKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTMyMCw2ICszNTQsMTIgQEAgcHVibGljOgogICAgICAgICBj
YXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKmlu
dDMyKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgY2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG91dC5wcmludGYo
IippbnQ0OCglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGNhc2UgU3RyaWN0SW50NDhEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIqc3RyaWN0SW50NDgoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKICAg
ICAgICAgICAgIG91dC5wcmludGYoIipkb3VibGUoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG5lZWRzVHlwZUNo
ZWNrKE5vZGUqIG5vZGUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBmb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH50eXBlc1Bhc3NlZFRocm91
Z2g7CisgICAgICAgIHJldHVybiAhZm9yTm9kZShub2RlKS5pc1R5cGUodHlwZXNQYXNzZWRUaHJv
dWdoKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBuZWVkc1R5cGVDaGVjayhFZGdlIGVkZ2UsIFNw
ZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCkKQEAgLTE2OCw3ICsxNjgsNyBAQCBwcml2
YXRlOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJCeVR5cGUoTm9kZSogbm9kZSwgRWRn
ZSYgZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIEFic3RyYWN0VmFs
dWUmIHZhbHVlID0gZm9yTm9kZShlZGdlKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fdHlwZSAmIH50
eXBlKSB7CisgICAgICAgIGlmICghdmFsdWUuaXNUeXBlKHR5cGUpKSB7CiAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgZWRnZS5zZXRQcm9vZlN0YXR1cyhO
ZWVkc0NoZWNrKTsKICAgICAgICAgfSBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZp
c2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2ICszMTAsMjkgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAorICAgIGNhc2UgSW50NDhUb0RvdWJsZTogeworICAgICAgICBKU1ZhbHVl
IGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNo
aWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGNoaWxkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAg
ICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZTogeworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxk
LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGU7CisgICAgICAgIGlmICh0eXBlICYgU3Bl
Y0ludDQ4KQorICAgICAgICAgICAgdHlwZSA9ICh0eXBlIHwgU3BlY0ludDMyIHwgU3BlY0ludDQ4
QXNEb3VibGUpICYgflNwZWNJbnQ0ODsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5
cGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6
CiAgICAgY2FzZSBBcml0aEFkZDogewogICAgICAgICBKU1ZhbHVlIGxlZnQgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwpAQCAtMzI0LDkgKzM0NywxNSBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2Fu
VHJ1bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAg
IG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJ
bnQ0OCk7CisgICAgICAgICAgICBpZiAoIWZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShT
cGVjSW50MzIpCisgICAgICAgICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlz
VHlwZShTcGVjSW50MzIpKQorICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgICAg
ICBpZiAoaXNSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90
eXBlKQotICAgICAgICAgICAgICAgICYmIGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUo
bm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSkpCisgICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51bWJl
clNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKKyAgICAgICAgICAg
ICAgICAmJiBpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDIo
KSkubV90eXBlKSkKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0Rv
dWJsZVJlYWwpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjRG91YmxlKTsKQEAgLTMzNCw3ICszNjMsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChub2RlLT5vcCgpID09IFZhbHVlQWRkKTsKICAgICAgICAgICAgIGNs
b2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwotICAgICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNTdHJpbmcgfCBTcGVjSW50MzIgfCBTcGVjTnVtYmVy
KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjU3RyaW5nIHwgU3BlY0J5
dGVjb2RlTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwpAQCAtMzU4LDYgKzM4NywxMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5v
ZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQo
dHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgor
ICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ0OCk7CisgICAgICAgICAg
ICBpZiAoIWZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmlzVHlwZShTcGVjSW50MzIpCisgICAgICAg
ICAgICAgICAgfHwgIWZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjSW50MzIpKQor
ICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM4MCw2ICs0MTUsMTMg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAg
aWYgKCFieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkK
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50NDgpOworICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KSkKKyAgICAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9y
ZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICBu
b2RlLT5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
TnVtYmVyVXNlOgogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC00MDQsOSArNDQ2LDEzIEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICB8fCAhYnl0ZWNvZGVD
YW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0ludDQ4KTsKKyAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6Ci0gICAgICAgICAgICBpZiAoaXNS
ZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKQotICAg
ICAgICAgICAgICAgIHx8IGlzUmVhbE51bWJlclNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS0+Y2hp
bGQyKCkpLm1fdHlwZSkpCisgICAgICAgICAgICBpZiAoaXNGdWxsUmVhbE51bWJlclNwZWN1bGF0
aW9uKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkKKyAgICAgICAgICAgICAgICB8fCBp
c0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBl
KSkKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZVJlYWwp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjRG91YmxlKTsKQEAgLTU4Niw3ICs2MzIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24oYWJzdHJhY3RDaGlsZC5tX3R5cGUp
KSB7CisgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihhYnN0cmFjdENoaWxkLm1f
dHlwZSkpIHsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIHZtLT5zbWFsbFN0cmluZ3Mu
bnVtYmVyU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTgxMSw2
ICs4NTcsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgogICAgICAgICAgICAgaWYgKG5vZGUtPnNob3Vs
ZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNJbnQzMik7CisgICAgICAgICAgICBlbHNlIGlmIChlbmFibGVJbnQ0OCgpICYmIG5vZGUt
PnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUoU3BlY0ludDQ4KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTg2Myw3ICs5MTEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7
CiAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2luLCBjbG9iYmVyTGltaXQpOwot
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY051bWJlcik7CisgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQb3A6CkBAIC05MzQsOCArOTgyLDggQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBOQi4gVGhlIG1v
cmUgY2Fub25pY2FsIHdheSBvZiB3cml0aW5nIHRoaXMgd291bGQgaGF2ZSBiZWVuOgogICAgICAg
ICAvLwogICAgICAgICAvLyBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKLSAgICAgICAgLy8gaWYgKGRl
c3RpbmF0aW9uLm1fdHlwZSAmICEoU3BlY051bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVh
bikpIHsKLSAgICAgICAgLy8gICAgIGRlc3RpbmF0aW9uLmZpbHRlcihTcGVjTnVtYmVyIHwgU3Bl
Y1N0cmluZyB8IFNwZWNCb29sZWFuKTsKKyAgICAgICAgLy8gaWYgKGRlc3RpbmF0aW9uLm1fdHlw
ZSAmICEoU3BlY0Z1bGxOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4pKSB7CisgICAg
ICAgIC8vICAgICBkZXN0aW5hdGlvbi5maWx0ZXIoU3BlY0Z1bGxOdW1iZXIgfCBTcGVjU3RyaW5n
IHwgU3BlY0Jvb2xlYW4pOwogICAgICAgICAvLyAgICAgQWJzdHJhY3RWYWx1ZSBzdHJpbmc7CiAg
ICAgICAgIC8vICAgICBzdHJpbmcuc2V0KHZtLT5zdHJpbmdTdHJ1Y3R1cmUpOwogICAgICAgICAv
LyAgICAgZGVzdGluYXRpb24ubWVyZ2Uoc3RyaW5nKTsKQEAgLTk1NSw3ICsxMDAzLDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+Y29kZU9yaWdpbiwgY2xvYmJlckxpbWl0KTsKICAgICAgICAgCiAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIHR5cGUgPSBzb3VyY2UubV90eXBlOwotICAgICAgICBpZiAodHlwZSAmIH4o
U3BlY051bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpCisgICAgICAgIGlmICh0eXBl
ICYgfihTcGVjRnVsbE51bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpCiAgICAgICAg
ICAgICB0eXBlID0gKFNwZWNIZWFwVG9wICYgflNwZWNDZWxsKSB8IFNwZWNTdHJpbmc7CiAKICAg
ICAgICAgZGVzdGluYXRpb24uc2V0VHlwZSh0eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNiArNjcsOCBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3Jh
cGgsIEpTCiAgICAgfQogICAgICAgICAKICAgICBtX3R5cGUgPSBzcGVjdWxhdGlvbkZyb21WYWx1
ZSh2YWx1ZSk7CisgICAgaWYgKG1fdHlwZSA9PSBTcGVjSW50NDhBc0RvdWJsZSkKKyAgICAgICAg
bV90eXBlID0gU3BlY0ludDQ4OwogICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgCiAgICAg
Y2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtMjI3LDYgKzIyOSw3IEBAIEZpbHRyYXRpb25SZXN1bHQg
QWJzdHJhY3RWYWx1ZTo6bm9ybWFsaXoKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgIUFT
U0VSVF9ESVNBQkxFRAogdm9pZCBBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KCkgY29u
c3QKIHsKICAgICBpZiAoIShtX3R5cGUgJiBTcGVjQ2VsbCkpIHsKQEAgLTIzOCwxNCArMjQxLDE5
IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSgpIGMKICAgICBpZiAoaXND
bGVhcigpKQogICAgICAgICBBU1NFUlQoIW1fdmFsdWUpOwogICAgIAotICAgIGlmICghIW1fdmFs
dWUpCi0gICAgICAgIEFTU0VSVChtZXJnZVNwZWN1bGF0aW9ucyhtX3R5cGUsIHNwZWN1bGF0aW9u
RnJvbVZhbHVlKG1fdmFsdWUpKSA9PSBtX3R5cGUpOworICAgIGlmICghIW1fdmFsdWUpIHsKKyAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fdHlwZTsKKyAgICAgICAgaWYgKHR5cGUgJiBT
cGVjSW50NDgpCisgICAgICAgICAgICB0eXBlIHw9IFNwZWNJbnQ0OEFzRG91YmxlOworICAgICAg
ICBBU1NFUlQobWVyZ2VTcGVjdWxhdGlvbnModHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUobV92
YWx1ZSkpID09IHR5cGUpOworICAgIH0KICAgICAKICAgICAvLyBOb3RlIHRoYXQgaXQncyBwb3Nz
aWJsZSBmb3IgYSBwcmVkaWN0aW9uIGxpa2UgKEZpbmFsLCBbXSkuIFRoaXMgcmVhbGx5IG1lYW5z
IHRoYXQKICAgICAvLyB0aGUgdmFsdWUgaXMgYm90dG9tIGFuZCB0aGF0IGFueSBjb2RlIHRoYXQg
dXNlcyB0aGUgdmFsdWUgaXMgdW5yZWFjaGFibGUuIEJ1dAogICAgIC8vIHdlIGRvbid0IHdhbnQg
dG8gZ2V0IHBlZGFudGljIGFib3V0IHRoaXMgYXMgaXQgd291bGQgb25seSBpbmNyZWFzZSB0aGUg
Y29tcHV0YXRpb25hbAogICAgIC8vIGNvbXBsZXhpdHkgb2YgdGhlIGNvZGUuCiB9CisjZW5kaWYK
IAogdm9pZCBBYnN0cmFjdFZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2
aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsMTYgQEAgc3RydWN0IEFic3RyYWN0
VmFsdWUgewogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIAorICAgIGJv
b2wgY291bGRCZVR5cGUoU3BlY3VsYXRlZFR5cGUgZGVzaXJlZFR5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gISEobV90eXBlICYgZGVzaXJlZFR5cGUpOworICAgIH0KKyAgICAKKyAgICBib29s
IGlzVHlwZShTcGVjdWxhdGVkVHlwZSBkZXNpcmVkVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biAhKG1fdHlwZSAmIH5kZXNpcmVkVHlwZSk7CisgICAgfQorICAgIAogICAgIEZpbHRyYXRpb25S
ZXN1bHQgZmlsdGVyKEdyYXBoJiwgY29uc3QgU3RydWN0dXJlU2V0Jik7CiAgICAgCiAgICAgRmls
dHJhdGlvblJlc3VsdCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMgYXJyYXlNb2Rlcyk7CkBA
IC0xOTMsMjIgKzIwMyw2IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICBGaWx0
cmF0aW9uUmVzdWx0IGZpbHRlckJ5VmFsdWUoSlNWYWx1ZSB2YWx1ZSk7CiAgICAgCi0gICAgYm9v
bCB2YWxpZGF0ZVR5cGUoSlNWYWx1ZSB2YWx1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChp
c0hlYXBUb3AoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAKLSAgICAgICAg
aWYgKG1lcmdlU3BlY3VsYXRpb25zKG1fdHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUp
KSAhPSBtX3R5cGUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlICYgU3Bl
Y0VtcHR5KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCiAgICAgYm9vbCB2YWxpZGF0ZShKU1Zh
bHVlIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzSGVhcFRvcCgpKQpAQCAtMjUx
LDcgKzI0NSwxMSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICB8fCAhYXJy
YXlNb2Rlc0FyZUNsZWFyT3JUb3AobV9hcnJheU1vZGVzKTsKICAgICB9CiAgICAgCisjaWYgQVNT
RVJUX0RJU0FCTEVECisgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QgeyB9CisjZWxz
ZQogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OworI2VuZGlmCiAgICAgCiAgICAg
dm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKQEAgLTM2Myw2ICszNjEsMjkgQEAgcHJp
dmF0ZToKICAgICAgICAgbV9hcnJheU1vZGVzID0gQUxMX0FSUkFZX01PREVTOwogICAgIH0KICAg
ICAKKyAgICBib29sIHZhbGlkYXRlVHlwZShKU1ZhbHVlIHZhbHVlKSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYgKGlzSGVhcFRvcCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IAorICAgICAgICAvLyBDb25zdGFudCBmb2xkaW5nIGFsd2F5cyByZXByZXNlbnRzIEludDQ4J3Mg
aW4gYSBkb3VibGUgKGkuZS4gSW50NDhBc0RvdWJsZSkuCisgICAgICAgIC8vIFNvIHNwZWN1bGF0
aW9uRnJvbVZhbHVlKHZhbHVlKSBmb3IgYW4gSW50NDggdmFsdWUgd2lsbCByZXR1cm4gSW50NDhB
c0RvdWJsZSwKKyAgICAgICAgLy8gYW5kIHRoYXQncyBmaW5lIC0gdGhlIHR5cGUgdmFsaWRhdGVz
IGp1c3QgZmluZS4KKyAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fdHlwZTsKKyAgICAg
ICAgaWYgKHR5cGUgJiBTcGVjSW50NDgpCisgICAgICAgICAgICB0eXBlIHw9IFNwZWNJbnQ0OEFz
RG91YmxlOworICAgICAgICAKKyAgICAgICAgaWYgKG1lcmdlU3BlY3VsYXRpb25zKHR5cGUsIHNw
ZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKSkgIT0gdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX3R5cGUgJiBTcGVjRW1wdHkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAK
ICAgICB2b2lkIG1ha2VUb3AoU3BlY3VsYXRlZFR5cGUgdG9wKQogICAgIHsKICAgICAgICAgbV90
eXBlIHw9IHRvcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9k
ZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlNb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDIxICsxNTcsMjEgQEAgQXJyYXlN
b2RlIEFycmF5TW9kZTo6cmVmaW5lKFNwZWN1bGF0ZWRUeQogICAgICAgICAgICAgcmV0dXJuIHdp
dGhUeXBlKEFycmF5OjpGb3JjZUV4aXQpOwogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9u
KHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6
OkludDMyLCBBcnJheTo6Q29udmVydCk7Ci0gICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9u
KHZhbHVlKSkKKyAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKICAg
ICAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkRvdWJsZSwgQXJy
YXk6OkNvbnZlcnQpOwogICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5
OjpDb250aWd1b3VzLCBBcnJheTo6Q29udmVydCk7CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXk6
OkludDMyOgogICAgICAgICBpZiAoIXZhbHVlIHx8IGlzSW50MzJTcGVjdWxhdGlvbih2YWx1ZSkp
CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0
aW9uKHZhbHVlKSkKKyAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkK
ICAgICAgICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkRvdWJsZSwg
QXJyYXk6OkNvbnZlcnQpOwogICAgICAgICByZXR1cm4gd2l0aFR5cGVBbmRDb252ZXJzaW9uKEFy
cmF5OjpDb250aWd1b3VzLCBBcnJheTo6Q29udmVydCk7CiAgICAgICAgIAogICAgIGNhc2UgQXJy
YXk6OkRvdWJsZToKICAgICAgICAgaWYgKGZsYWdzICYgTm9kZUJ5dGVjb2RlVXNlc0FzSW50KQog
ICAgICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6Q29udGlndW91
cywgQXJyYXk6OlJhZ2VDb252ZXJ0KTsKLSAgICAgICAgaWYgKCF2YWx1ZSB8fCBpc051bWJlclNw
ZWN1bGF0aW9uKHZhbHVlKSkKKyAgICAgICAgaWYgKCF2YWx1ZSB8fCBpc0Z1bGxOdW1iZXJTcGVj
dWxhdGlvbih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIHJldHVy
biB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkNvbnRpZ3VvdXMsIEFycmF5OjpDb252ZXJ0
KTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNz
ZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Myw2ICsyOTMs
MjQgQEAgcHVibGljOgogICAgICAgICBtb3ZlNjRUb0RvdWJsZShncHIsIGZwcik7CiAgICAgICAg
IHJldHVybiBmcHI7CiAgICAgfQorICAgIAorICAgIHZvaWQgYm94SW50NDgoR1BSUmVnIHNvdXJj
ZSwgR1BSUmVnIHRhcmdldCwgR1BSUmVnIHNjcmF0Y2gsIEZQUlJlZyBmcFNjcmF0Y2gpCisgICAg
eworICAgICAgICAvLyBJcyBpdCBhbiBpbnQzMj8KKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIo
c291cmNlLCBzY3JhdGNoKTsKKyAgICAgICAgSnVtcCBpc0ludDMyID0gYnJhbmNoNjQoRXF1YWws
IHNvdXJjZSwgc2NyYXRjaCk7CisgICAgICAgIAorICAgICAgICAvLyBOb3BlLCBpdCdzIG5vdCwg
YnV0IHJlZ1QwIGNvbnRhaW5zIHRoZSBpbnQ2NCB2YWx1ZS4KKyAgICAgICAgY29udmVydEludDY0
VG9Eb3VibGUoc291cmNlLCBmcFNjcmF0Y2gpOworICAgICAgICBib3hEb3VibGUoZnBTY3JhdGNo
LCB0YXJnZXQpOworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIAorICAgICAg
ICBpc0ludDMyLmxpbmsodGhpcyk7CisgICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKHNvdXJjZSwg
dGFyZ2V0KTsKKyAgICAgICAgb3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRh
cmdldCk7CisgICAgICAgIAorICAgICAgICBkb25lLmxpbmsodGhpcyk7CisgICAgfQogI2VuZGlm
CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywyMSArNjMsNiBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIAotICAgIE5vZGUqIGNhbm9uaWNhbGl6ZShO
b2RlKiBub2RlKQotICAgIHsKLSAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIAotICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBWYWx1ZVRvSW50MzIpCi0g
ICAgICAgICAgICBub2RlID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIG5vZGU7Ci0gICAgfQotICAgIE5vZGUqIGNhbm9uaWNhbGl6ZShFZGdlIGVkZ2Up
Ci0gICAgewotICAgICAgICByZXR1cm4gY2Fub25pY2FsaXplKGVkZ2Uubm9kZSgpKTsKLSAgICB9
Ci0gICAgCiAgICAgdW5zaWduZWQgZW5kSW5kZXhGb3JQdXJlQ1NFKCkKICAgICB7CiAgICAgICAg
IHVuc2lnbmVkIHJlc3VsdCA9IG1fbGFzdFNlZW5bbV9jdXJyZW50Tm9kZS0+b3AoKV07CkBAIC05
NCw5ICs3OSw5IEBAIHByaXZhdGU6CiAKICAgICBOb2RlKiBwdXJlQ1NFKE5vZGUqIG5vZGUpCiAg
ICAgewotICAgICAgICBOb2RlKiBjaGlsZDEgPSBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBOb2RlKiBjaGlsZDIgPSBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQyKCkpOwot
ICAgICAgICBOb2RlKiBjaGlsZDMgPSBjYW5vbmljYWxpemUobm9kZS0+Y2hpbGQzKCkpOworICAg
ICAgICBFZGdlIGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBFZGdlIGNoaWxkMiA9
IG5vZGUtPmNoaWxkMigpOworICAgICAgICBFZGdlIGNoaWxkMyA9IG5vZGUtPmNoaWxkMygpOwog
ICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZW5kSW5kZXhGb3JQdXJlQ1NFKCk7
IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIG90aGVyTm9kZSA9IG1fY3VycmVudEJsb2NrLT5h
dChpKTsKQEAgLTEwOSwxOSArOTQsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChub2Rl
LT5hcml0aE5vZGVGbGFncygpICE9IG90aGVyTm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZSogb3Ro
ZXJDaGlsZCA9IGNhbm9uaWNhbGl6ZShvdGhlck5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IEVkZ2Ugb3RoZXJDaGlsZCA9IG90aGVyTm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgICAgICBpZiAo
IW90aGVyQ2hpbGQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyTm9kZTsKICAgICAgICAg
ICAgIGlmIChvdGhlckNoaWxkICE9IGNoaWxkMSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgb3RoZXJDaGlsZCA9IGNhbm9uaWNhbGl6ZShvdGhl
ck5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG90aGVyQ2hpbGQgPSBvdGhlck5vZGUtPmNo
aWxkMigpOwogICAgICAgICAgICAgaWYgKCFvdGhlckNoaWxkKQogICAgICAgICAgICAgICAgIHJl
dHVybiBvdGhlck5vZGU7CiAgICAgICAgICAgICBpZiAob3RoZXJDaGlsZCAhPSBjaGlsZDIpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG90aGVy
Q2hpbGQgPSBjYW5vbmljYWxpemUob3RoZXJOb2RlLT5jaGlsZDMoKSk7CisgICAgICAgICAgICBv
dGhlckNoaWxkID0gb3RoZXJOb2RlLT5jaGlsZDMoKTsKICAgICAgICAgICAgIGlmICghb3RoZXJD
aGlsZCkKICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXJOb2RlOwogICAgICAgICAgICAgaWYg
KG90aGVyQ2hpbGQgIT0gY2hpbGQzKQpAQCAtMzc3LDIxICszNjIsMjEgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CiAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwotICAgICAgICAg
ICAgaWYgKG5vZGUgPT0gY2hpbGQxIHx8IG5vZGUgPT0gY2Fub25pY2FsaXplKGNoaWxkMikpIAor
ICAgICAgICAgICAgaWYgKG5vZGUgPT0gY2hpbGQxIHx8IG5vZGUgPT0gY2hpbGQyKSAKICAgICAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAg
ICAgICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5i
eVZhbElzUHVyZShub2RlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IGNoaWxkMSAmJiBjYW5vbmljYWxpemUobm9k
ZS0+Y2hpbGQyKCkpID09IGNhbm9uaWNhbGl6ZShjaGlsZDIpKQorICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKSA9PSBjaGlsZDEgJiYgbm9kZS0+Y2hpbGQyKCkgPT0gY2hpbGQyKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxp
YXM6IHsKICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGguYnlWYWxJc1B1cmUobm9kZSkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDApID09IGNoaWxkMSAmJiBjYW5vbmljYWxpemUobV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAxKSkgPT0gY2Fub25pY2FsaXplKGNoaWxkMikpCisgICAgICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkgPT0gY2hpbGQxICYmIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMSkgPT0gY2hpbGQyKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKS5ub2RlKCk7CiAgICAgICAgICAgICAg
ICAgLy8gV2UgbXVzdCBhc3N1bWUgdGhhdCB0aGUgUHV0QnlWYWwgd2lsbCBjbG9iYmVyIHRoZSBs
b2NhdGlvbiB3ZSdyZSBnZXR0aW5nIGZyb20uCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdl
IGNhbiBkbyBiZXR0ZXI7IGlmIHdlIGtub3cgdGhhdCB0aGUgUHV0QnlWYWwgaXMgYWNjZXNzaW5n
IGFuIGFycmF5IG9mIGEKQEAgLTEwOTAsNiArMTA3NSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgQ29tcGFyZUVxQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAg
ICBjYXNlIE1ha2VSb3BlOgorICAgICAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIGNh
c2UgSW50NDhUb1ZhbHVlOgogICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5h
dGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50
KHB1cmVDU0Uobm9kZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDggQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgTG9naWNhbE5vdDoK
ICAgICBjYXNlIEludDMyVG9Eb3VibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoK
KyAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CiAgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBNb3ZIaW50QW5kQ2hlY2s6CkBAIC0xODAsNiAr
MTgyLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAg
ICBzd2l0Y2ggKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNl
OgogICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAg
ICByZWFkKFdvcmxkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAko
cmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0MywxNSBAQCBpbmxpbmUgYm9vbCBlbmFibGVD
b25jdXJyZW50SklUKCkKICNlbmRpZgogfQogCitpbmxpbmUgYm9vbCBlbmFibGVJbnQ0OCgpCit7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCit9CisKIGVudW0gU3BpbGxSZWdpc3RlcnNNb2RlIHsgTmVlZFRvU3Bp
bGwsIERvbnRTcGlsbCB9OwogCiBlbnVtIE5vUmVzdWx0VGFnIHsgTm9SZXN1bHQgfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24g
MTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
Zml4dXBTZXRMb2NhbHNJbkJsb2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkpOwogICAgICAg
ICB9CiAgICAgICAgIAorICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJs
b2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpCisgICAgICAgICAg
ICBmaXh1cFVudHlwZWRTZXRMb2NhbHNJbkJsb2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkp
OworICAgICAgICAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC05Miw3ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBTZXRMb2Nh
bDogewogICAgICAgICAgICAgLy8gVGhpcyBnZXRzIGhhbmRsZWQgYnkgZml4dXBTZXRMb2NhbHNJ
bkJsb2NrKCkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQml0QW5kOgpAQCAtMTI0LDYgKzEyNywx
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZU51bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE5Nyw2ICsyMDUsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKSB7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaXhFZGdlPE51
bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTIwNyw2ICsyMTksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
Zml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMzAwLDYgKzMxNywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAgICAgJiYg
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5v
ZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJ
bnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzU1LDYgKzM3OCwxMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChlbmFibGVJbnQ0OCgpCisgICAgICAgICAgICAgICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRl
TWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
IHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2Rl
LT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9k
ZS0+Y2hpbGQyKCkpOwpAQCAtNDc2LDYgKzUwNSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihjaGlsZDEpOwogICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KGNoaWxkMik7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4o
Y2hpbGQzKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5wcmVkaWN0aW9uKCkgJiBTcGVj
SW50NDgpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4oY2hpbGQz
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGNo
aWxkMSk7CkBAIC00OTMsNiArNTI2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihjaGlsZDIpOwogICAgICAgICAgICAgICAgIGlmIChjaGlsZDMtPnNob3Vs
ZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KGNoaWxkMyk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxh
dGVNYWNoaW5lSW50KCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVz
ZT4oY2hpbGQzKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGZp
eEVkZ2U8TnVtYmVyVXNlPihjaGlsZDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODQ3
LDYgKzg4Miw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAg
ICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICAgICAgY2FzZSBDaGVja1RpZXJV
cEFuZE9TUkVudGVyOgorICAgICAgICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIGNhc2Ug
SW50NDhUb1ZhbHVlOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTExODksNiArMTIyNiw5IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE1h
Y2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjAzLDYg
KzEyNDMsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9j
ayk7CiAgICAgfQogICAgIAorICAgIHZvaWQgZml4dXBVbnR5cGVkU2V0TG9jYWxzSW5CbG9jayhC
YXNpY0Jsb2NrKiBibG9jaykKKyAgICB7CisgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIEFTU0VSVChibG9jay0+aXNSZWFjaGFibGUpOworICAgICAgICBt
X2Jsb2NrID0gYmxvY2s7CisgICAgICAgIGZvciAobV9pbmRleEluQmxvY2sgPSAwOyBtX2luZGV4
SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxvY2spIHsKKyAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX2N1cnJlbnROb2RlID0gYmxvY2stPmF0KG1faW5kZXhJbkJsb2NrKTsK
KyAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFNldExvY2FsKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpCisgICAgICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVk
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIH0KKyAgICAgICAgbV9pbnNlcnRpb25TZXQu
ZXhlY3V0ZShibG9jayk7CisgICAgfQorICAgIAogICAgIE5vZGUqIGNoZWNrQXJyYXkoQXJyYXlN
b2RlIGFycmF5TW9kZSwgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgTm9kZSogYXJyYXks
IE5vZGUqIGluZGV4LCBib29sICgqc3RvcmFnZUNoZWNrKShjb25zdCBBcnJheU1vZGUmKSA9IGNh
bkNTRVN0b3JhZ2UpCiAgICAgewogICAgICAgICBBU1NFUlQoYXJyYXlNb2RlLmlzU3BlY2lmaWMo
KSk7CkBAIC0xMzIxLDYgKzEzNzgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB8fCBp
c0Jvb2xlYW5TcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKICAgICAgICAgICAg
ICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJs
ZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNYWNoaW5l
SW50VXNlOgorICAgICAgICAgICAgaWYgKGlzTWFjaGluZUludFNwZWN1bGF0aW9uKHZhcmlhYmxl
LT5wcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQg
fD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENlbGxVc2U6CiAgICAgICAgIGNhc2UgS25vd25DZWxsVXNl
OgogICAgICAgICBjYXNlIE9iamVjdFVzZToKQEAgLTEzNDcsMTIgKzE0MDgsODAgQEAgcHJpdmF0
ZToKICAgICB0ZW1wbGF0ZTxVc2VLaW5kIHVzZUtpbmQ+CiAgICAgdm9pZCBmaXhFZGdlKEVkZ2Um
IGVkZ2UsIFNwZWN1bGF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRp
b24pCiAgICAgewotICAgICAgICBpZiAoaXNEb3VibGUodXNlS2luZCkgJiYgZWRnZS0+c2hvdWxk
U3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkpIHsKLSAgICAgICAgICAgIGluamVjdEludDMy
VG9Eb3VibGVOb2RlKGVkZ2UsIHVzZUtpbmQsIGRpcmVjdGlvbik7CisgICAgICAgIGlmIChpc0Rv
dWJsZSh1c2VLaW5kKSkgeworICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUlu
dDMyRm9yQXJpdGhtZXRpYygpKSB7CisgICAgICAgICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJs
ZU5vZGUoZWRnZSwgdXNlS2luZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ0
OCgpICYmIGVkZ2UtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAg
ICAgIC8vIE1ha2UgYWxsIGRvdWJsZSB1c2VzIG9mIGludDQ4IHZhbHVlcyBoYXZlIGFuIGludGVy
bWVkaWF0ZSBJbnQ0OFRvRG91YmxlLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHRo
ZSBzYW1lIHJlYXNvbiBhcyBJbnQ0OFRvVmFsdWUgKHNlZSBiZWxvdykgZXhjZXB0IHRoYXQKKyAg
ICAgICAgICAgICAgICAvLyBJbnQ4VG9Eb3VibGUgd2lsbCBjb252ZXJ0IGludDQ4J3MgdGhhdCBm
aXQgaW4gYW4gaW50MzIgaW50byBhIGRvdWJsZQorICAgICAgICAgICAgICAgIC8vIHJhdGhlciB0
aGFuIHRyeWluZyB0byBjcmVhdGUgYSBib3hlZCBpbnQzMiBsaWtlIEludDQ4VG9WYWx1ZSBkb2Vz
LgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjSW50NDhBc0RvdWJsZSwgSW50NDhUb0RvdWJsZSwKKyAgICAgICAgICAgICAgICAgICAg
bV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwgRWRnZShlZGdlLm5vZGUoKSwgTnVtYmVyVXNlKSk7
CisgICAgICAgICAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0LCB1c2VLaW5kKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmIChlbmFibGVJbnQ0OCgpICYmIHVzZUtpbmQgIT0gTWFjaGluZUludFVzZQorICAgICAg
ICAgICAgJiYgZWRnZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpICYmICFlZGdlLT5zaG91
bGRTcGVjdWxhdGVJbnQzMigpKSB7CisgICAgICAgICAgICAvLyBXZSBtYWtlIGFsbCBub24taW50
NDggdXNlcyBvZiBpbnQ0OCB2YWx1ZXMgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgSW50NDhUb1ZhbHVl
CisgICAgICAgICAgICAvLyBub2RlIHRvIGVuc3VyZSB0aGF0IHdlIGhhbmRsZSB0aGlzIHByb3Bl
cmx5OgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIGE6IFNvbWVJbnQ0OAorICAgICAg
ICAgICAgLy8gYjogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8vIGM6IENhbGwoLi4u
LCBAYSkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAgICAv
LworICAgICAgICAgICAgLy8gV2l0aG91dCBhbiBpbnRlcm1lZGlhdGUgbm9kZSBhbmQganVzdCBs
YWJlbGluZyB0aGUgdXNlcywgd2Ugd2lsbCBnZXQ6CisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ0ODpAYSwg
Li4uKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVudHlwZWQ6QGEpCisgICAgICAgICAg
ICAvLyBkOiBBcml0aEFkZChJbnQ0ODpAYSwgLi4uKQorICAgICAgICAgICAgLy8KKyAgICAgICAg
ICAgIC8vIEFuZCBub3cgdGhlIGMtPlVudHlwZWQ6QGEgZWRnZSB3aWxsIGJveCB0aGUgdmFsdWUg
b2YgQGEgaW50byBhIGRvdWJsZS4gVGhpcworICAgICAgICAgICAgLy8gaXMgYmFkLCBiZWNhdXNl
IG5vdyB0aGUgZC0+SW50NDg6QGEgZWRnZSB3aWxsIGVpdGhlciBoYXZlIHRvIGRvIGRvdWJsZS10
by1pbnQKKyAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zLCBvciB3aWxsIGhhdmUgdG8gT1NSIGV4
aXQgdW5jb25kaXRpb25hbGx5LiBBbHRlcm5hdGl2ZWx5IHdlIGNvdWxkCisgICAgICAgICAgICAv
LyBoYXZlIHRoZSBjLT5VbnR5cGVkOkBhIGVkZ2UgYm94IHRoZSB2YWx1ZSBieSBjb3B5aW5nIHJh
dGhlciB0aGFuIGluLXBsYWNlLgorICAgICAgICAgICAgLy8gQnV0IHRoZXNlIGJveGluZ3MgYXJl
IGFsc28gY29zdGx5IHNvIHRoaXMgd291bGRuJ3QgYmUgZ3JlYXQuCisgICAgICAgICAgICAvLwor
ICAgICAgICAgICAgLy8gVGhlIHNvbHV0aW9uIHdlIHVzZSBpcyB0byBhbHdheXMgaGF2ZSBub24t
SW50NDggdXNlcyBvZiBwcmVkaWN0ZWQgSW50NDgncyB1c2UKKyAgICAgICAgICAgIC8vIGFuIGlu
dGVydmVuaW5nIEludDQ4VG9WYWx1ZSBub2RlOgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAg
IC8vIGE6IFNvbWVJbnQ0OAorICAgICAgICAgICAgLy8gYjogQXJpdGhBZGQoSW50NDg6QGEsIC4u
LikKKyAgICAgICAgICAgIC8vIHg6IEludDQ4VG9WYWx1ZShJbnQ0ODpAYSkKKyAgICAgICAgICAg
IC8vIGM6IENhbGwoLi4uLCBVbnR5cGVkOkB4KQorICAgICAgICAgICAgLy8gZDogQXJpdGhBZGQo
SW50NDg6QGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
ZXZlbiBpZiB3ZSBoYWQgbXVsdGlwbGUgbm9uLWludDQ4IHVzZXMgb2YgQGEsIHRoZSBtdWx0aXBs
ZQorICAgICAgICAgICAgLy8gSW50NDhUb1ZhbHVlJ3Mgd291bGQgZ2V0IENTRSdkIHRvZ2V0aGVy
LiBTbyB0aGUgYm94aW5nIHdvdWxkIG9ubHkgaGFwcGVuIG9uY2UuCisgICAgICAgICAgICAvLyBB
dCB0aGUgc2FtZSB0aW1lLCBAYSB3b3VsZCBjb250aW51ZSB0byBiZSByZXByZXNlbnRlZCBhcyBh
IG5hdGl2ZSBpbnQ0OC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBBbiBhbHRlcm5h
dGl2ZSB3b3VsZCBoYXZlIGJlZW4gdG8gaW5zZXJ0IFRvTmF0aXZlSW50NDggbm9kZXMgb24gaW50
NDggdXNlcyBvZgorICAgICAgICAgICAgLy8gaW50NDgncy4gVGhpcyB3b3VsZCBoYXZlIGhhbmRs
ZWQgdGhlIGFib3ZlIGV4YW1wbGUgYnV0IHdvdWxkIGZhbGwgb3ZlciBmb3I6CisgICAgICAgICAg
ICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDQ4CisgICAgICAgICAgICAvLyBiOiBDYWxs
KC4uLiwgQGEpCisgICAgICAgICAgICAvLyBjOiBBcml0aEFkZChAYSwgLi4uKQorICAgICAgICAg
ICAgLy8KKyAgICAgICAgICAgIC8vIEJ1dCB0aGUgc29sdXRpb24gd2UgdXNlIGhhbmRsZXMgdGhl
IGFib3ZlIGdyYWNlZnVsbHkuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5vZGUqIHJlc3Vs
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQ0OCwgSW50NDhUb1ZhbHVlLAorICAgICAgICAgICAgICAgIG1fY3VycmVu
dE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIFVudHlwZWRVc2UpKTsKKyAgICAg
ICAgICAgIGVkZ2UgPSBFZGdlKHJlc3VsdCwgdXNlS2luZCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG9ic2VydmVVc2VLaW5kT25Ob2RlPHVzZUtp
bmQ+KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgCiAgICAgICAgIGVkZ2Uuc2V0VXNlS2luZCh1c2VL
aW5kKTsKICAgICB9CiAgICAgCkBAIC0xMzc4LDcgKzE1MDcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoRWRnZSYgZWRnZSwgVXNlS2luZCB1c2VLaW5kID0g
TnVtYmVyVXNlLCBTcGVjdWxhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBCYWNrd2FyZFNwZWN1
bGF0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NDgsIEludDMyVG9E
b3VibGUsCisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDQ4QXNEb3VibGUsIElu
dDMyVG9Eb3VibGUsCiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLCBFZGdl
KGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb3J3
YXJkU3BlY3VsYXRpb24pCiAgICAgICAgICAgICByZXN1bHQtPm1lcmdlRmxhZ3MoTm9kZUV4aXRz
Rm9yd2FyZCk7CkBAIC0xNDM0LDEzICsxNTYzLDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBhdHRl
bXB0VG9NYWtlSW50ZWdlckFkZChOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgQWRkU3BlY3Vs
YXRpb25Nb2RlIG1vZGUgPSBtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShub2RlKTsKLSAgICAg
ICAgaWYgKG1vZGUgPT0gRG9udFNwZWN1bGF0ZUludDMyKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAobW9kZSAhPSBEb250U3BlY3VsYXRlSW50MzIpIHsKKyAgICAgICAg
ICAgIHRydW5jYXRlQ29uc3RhbnRzSWZOZWNlc3Nhcnkobm9kZSwgbW9kZSk7CisgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgdHJ1bmNhdGVDb25zdGFudHNJZk5lY2Vzc2FyeShu
b2RlLCBtb2RlKTsKLSAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50
KG5vZGUpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBhdHRlbXB0VG9NYWtlR2V0QXJy
YXlMZW5ndGgoTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rmx1c2hGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRmx1c2hGb3JtYXQuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
OSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgRmx1CiAgICAgY2FzZSBG
bHVzaGVkSW50MzI6CiAgICAgICAgIG91dC5wcmludCgiRmx1c2hlZEludDMyIik7CiAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgb3V0LnByaW50KCJGbHVz
aGVkSW50NDgiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmx1c2hlZERvdWJsZToKICAg
ICAgICAgb3V0LnByaW50KCJGbHVzaGVkRG91YmxlIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJldmlzaW9uIDE1
NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiBlbnVtIEZsdXNoRm9ybWF0IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMy
LAorICAgIEZsdXNoZWRJbnQ0OCwKICAgICBGbHVzaGVkRG91YmxlLAogICAgIEZsdXNoZWRDZWxs
LAogICAgIEZsdXNoZWRCb29sZWFuLApAQCAtNTUsNiArNTYsOCBAQCBpbmxpbmUgTm9kZUZsYWdz
IHJlc3VsdEZvcihGbHVzaEZvcm1hdCBmCiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0SlM7CiAg
ICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0SW50MzI7Cisg
ICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgIHJldHVybiBOb2RlUmVzdWx0SW50NDg7CiAg
ICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICByZXR1cm4gTm9kZVJlc3VsdE51bWJlcjsK
ICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgpAQCAtNzQsNiArNzcsOCBAQCBpbmxpbmUgVXNlS2lu
ZCB1c2VLaW5kRm9yKEZsdXNoRm9ybWF0IGZvCiAgICAgICAgIHJldHVybiBDZWxsVXNlOwogICAg
IGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICByZXR1cm4gSW50MzJVc2U7CisgICAgY2FzZSBG
bHVzaGVkSW50NDg6CisgICAgICAgIHJldHVybiBNYWNoaW5lSW50VXNlOwogICAgIGNhc2UgRmx1
c2hlZERvdWJsZToKICAgICAgICAgcmV0dXJuIE51bWJlclVzZTsKICAgICBjYXNlIEZsdXNoZWRC
b29sZWFuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlv
bkluZm8uaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHZW5lcmF0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxOSBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCBncHIsIERhdGFGb3Jt
YXRJbnQzMik7CiAgICAgfQorICAgIHZvaWQgaW5pdEludDQ4KE5vZGUqIG5vZGUsIHVpbnQzMl90
IHVzZUNvdW50LCBHUFJSZWcgcmVnLCBEYXRhRm9ybWF0IGZvcm1hdCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChmb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IGZvcm1hdCA9PSBEYXRhRm9ybWF0
U3RyaWN0SW50NDgpOworICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCByZWcsIGZvcm1h
dCk7CisgICAgfQorICAgIHZvaWQgaW5pdEludDQ4KE5vZGUqIG5vZGUsIHVpbnQzMl90IHVzZUNv
dW50LCBHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VDb3VudCwg
cmVnLCBEYXRhRm9ybWF0SW50NDgpOworICAgIH0KKyAgICB2b2lkIGluaXRTdHJpY3RJbnQ0OChO
b2RlKiBub2RlLCB1aW50MzJfdCB1c2VDb3VudCwgR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAg
IGluaXRHUFIobm9kZSwgdXNlQ291bnQsIHJlZywgRGF0YUZvcm1hdFN0cmljdEludDQ4KTsKKyAg
ICB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB2b2lkIGluaXRKU1ZhbHVlKE5vZGUqIG5vZGUs
IHVpbnQzMl90IHVzZUNvdW50LCBHUFJSZWcgZ3ByLCBEYXRhRm9ybWF0IGZvcm1hdCA9IERhdGFG
b3JtYXRKUykKICAgICB7CkBAIC0xODcsNiArMjAwLDExIEBAIHB1YmxpYzoKICAgICAvLyBHZXQg
dGhlIGZvcm1hdCBvZiB0aGUgdmFsdWUgYXMgaXQgaXMgc3BpbGxlZCBpbiB0aGUgSlNTdGFjayAo
b3IgJ25vbmUnKS4KICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0KCkgeyByZXR1cm4gbV9zcGls
bEZvcm1hdDsgfQogICAgIAorICAgIGJvb2wgaXNGb3JtYXQoRGF0YUZvcm1hdCBleHBlY3RlZEZv
cm1hdCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWdpc3RlckZvcm1hdCgpID09IGV4cGVjdGVk
Rm9ybWF0IHx8IHNwaWxsRm9ybWF0KCkgPT0gZXhwZWN0ZWRGb3JtYXQ7CisgICAgfQorICAgIAog
ICAgIGJvb2wgaXNKU0Zvcm1hdChEYXRhRm9ybWF0IGV4cGVjdGVkRm9ybWF0KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIEpTQzo6aXNKU0Zvcm1hdChyZWdpc3RlckZvcm1hdCgpLCBleHBlY3RlZEZv
cm1hdCkgfHwgSlNDOjppc0pTRm9ybWF0KHNwaWxsRm9ybWF0KCksIGV4cGVjdGVkRm9ybWF0KTsK
QEAgLTE5Nyw2ICsyMTUsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaXNKU0Zvcm1hdChE
YXRhRm9ybWF0SlNJbnQzMik7CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNJbnQ0OCgpCisgICAg
eworICAgICAgICByZXR1cm4gaXNGb3JtYXQoRGF0YUZvcm1hdEludDQ4KTsKKyAgICB9CisgICAg
CisgICAgYm9vbCBpc1N0cmljdEludDQ4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0Zvcm1h
dChEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgIH0KKyAgICAKICAgICBib29sIGlzSlNEb3Vi
bGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSlNGb3JtYXQoRGF0YUZvcm1hdEpTRG91Ymxl
KTsKQEAgLTMxNCw2ICszNDIsMTkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgZmlsbEdQUihz
dHJlYW0sIGdwciwgRGF0YUZvcm1hdEludDMyKTsKICAgICB9CisgICAgdm9pZCBmaWxsSW50NDgo
VmFyaWFibGVFdmVudFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByLCBEYXRhRm9ybWF0IGZvcm1h
dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChmb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IGZv
cm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICBmaWxsR1BSKHN0cmVhbSwg
Z3ByLCBmb3JtYXQpOworICAgIH0KKyAgICB2b2lkIGZpbGxJbnQ0OChWYXJpYWJsZUV2ZW50U3Ry
ZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBmaWxsR1BSKHN0cmVhbSwg
Z3ByLCBEYXRhRm9ybWF0SW50NDgpOworICAgIH0KKyAgICB2b2lkIGZpbGxTdHJpY3RJbnQ0OChW
YXJpYWJsZUV2ZW50U3RyZWFtJiBzdHJlYW0sIEdQUlJlZyBncHIpCisgICAgeworICAgICAgICBm
aWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgIH0KICAgICB2
b2lkIGZpbGxCb29sZWFuKFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVnIGdwcikK
ICAgICB7CiAgICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERhdGFGb3JtYXRCb29sZWFuKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxNTU5
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjM2LDE0ICsyMzYsMTQgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0LCBjb25zdAogICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCkpCiAgICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJhcmciLCBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5k
KSwgIigiLCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKCp0aGlzLCB2YXJpYWJsZUFjY2Vzc0RhdGEp
LCAiKSIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwg
b3BlcmFuZCwgIigiLCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKCp0aGlzLCB2YXJpYWJsZUFjY2Vz
c0RhdGEpLCAiKSIpOworICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgb3BlcmFu
ZFRvTG9jYWwob3BlcmFuZCksICIoIiwgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcCgqdGhpcywgdmFy
aWFibGVBY2Nlc3NEYXRhKSwgIikiKTsKICAgICB9CiAgICAgaWYgKG5vZGUtPmhhc1VubGlua2Vk
TG9jYWwoKSkgewogICAgICAgICBpbnQgb3BlcmFuZCA9IG5vZGUtPnVubGlua2VkTG9jYWwoKTsK
ICAgICAgICAgaWYgKG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKQogICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAiYXJnIiwgb3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJyIiwgb3BlcmFuZCk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJsb2MiLCBvcGVyYW5kVG9Mb2NhbChvcGVyYW5kKSk7
CiAgICAgfQogICAgIGlmIChub2RlLT5oYXNDb25zdGFudEJ1ZmZlcigpKSB7CiAgICAgICAgIG91
dC5wcmludChjb21tYSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShy
ZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMCwxNCArMjMwLDE3IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIGFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoTm9kZSogYWRkKQogICAgIHsKKyAgICAg
ICAgaWYgKCFlbmFibGVJbnQ0OCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKICAgICAgICAgTm9kZSogbGVmdCA9IGFkZC0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICBO
b2RlKiByaWdodCA9IGFkZC0+Y2hpbGQyKCkubm9kZSgpOwogCiAgICAgICAgIGJvb2wgc3BlY3Vs
YXRpb247CiAgICAgICAgIGlmIChhZGQtPm9wKCkgPT0gVmFsdWVBZGQpCi0gICAgICAgICAgICBz
cGVjdWxhdGlvbiA9IE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnRFeHBlY3RpbmdEZWZp
bmVkKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uID0gTm9kZTo6c2hvdWxk
U3BlY3VsYXRlTWFjaGluZUludChsZWZ0LCByaWdodCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uID0gTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludEZvckFyaXRo
bWV0aWMobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc3BlY3VsYXRpb24gPSBOb2RlOjpzaG91
bGRTcGVjdWxhdGVNYWNoaW5lSW50KGxlZnQsIHJpZ2h0KTsKIAogICAgICAgICByZXR1cm4gc3Bl
Y3VsYXRpb24gJiYgIWhhc0V4aXRTaXRlKGFkZCwgSW50NDhPdmVyZmxvdyk7CiAgICAgfQpAQCAt
MjU3LDEwICsyNjAsMTMgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKG11bC0+b3Ao
KSA9PSBBcml0aE11bCk7CiAgICAgICAgIAorICAgICAgICBpZiAoIWVuYWJsZUludDQ4KCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICBOb2RlKiBsZWZ0ID0g
bXVsLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgIE5vZGUqIHJpZ2h0ID0gbXVsLT5jaGlsZDIo
KS5ub2RlKCk7CiAKLSAgICAgICAgcmV0dXJuIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJ
bnRGb3JBcml0aG1ldGljKGxlZnQsIHJpZ2h0KQorICAgICAgICByZXR1cm4gTm9kZTo6c2hvdWxk
U3BlY3VsYXRlTWFjaGluZUludChsZWZ0LCByaWdodCkKICAgICAgICAgICAgICYmIG11bC0+Y2Fu
U3BlY3VsYXRlSW50NDgoKQogICAgICAgICAgICAgJiYgIWhhc0V4aXRTaXRlKG11bCwgSW50NDhP
dmVyZmxvdyk7CiAgICAgfQpAQCAtMjc0LDcgKzI4MCw5IEBAIHB1YmxpYzoKICAgICBib29sIG5l
Z2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoTm9kZSogbmVnYXRlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG5lZ2F0ZS0+b3AoKSA9PSBBcml0aE5lZ2F0ZSk7Ci0gICAgICAgIHJldHVybiBu
ZWdhdGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50Rm9yQXJpdGhtZXRpYygp
CisgICAgICAgIGlmICghZW5hYmxlSW50NDgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIG5lZ2F0ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJ
bnQoKQogICAgICAgICAgICAgJiYgIWhhc0V4aXRTaXRlKG5lZ2F0ZSwgSW50NDhPdmVyZmxvdykK
ICAgICAgICAgICAgICYmIG5lZ2F0ZS0+Y2FuU3BlY3VsYXRlSW50NDgoKTsKICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMyw4ICsz
MTMsOCBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUCiAgICAgICAg
ICAgICAvLyBiZWZvcmUgYW5kIGFmdGVyIHNldHRpbmcgaXQuCiAgICAgICAgICAgICBzb3VyY2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKSA9PSBGbHVzaGVkRG91YmxlKSB7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKCEoc291cmNlLm1fdHlwZSAmIH5TcGVjTnVtYmVyKSk7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKCEhKHNvdXJjZS5tX3R5cGUgJiB+U3BlY0RvdWJsZSkgPT0gISEoc291
cmNlLm1fdHlwZSAmIFNwZWNJbnQzMikpOworICAgICAgICAgICAgICAgIEFTU0VSVCghKHNvdXJj
ZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoISEo
c291cmNlLm1fdHlwZSAmIH5TcGVjRG91YmxlKSA9PSAhIShzb3VyY2UubV90eXBlICYgU3BlY01h
Y2hpbmVJbnQpKTsKICAgICAgICAgICAgICAgICBpZiAoIShzb3VyY2UubV90eXBlICYgflNwZWNE
b3VibGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5tZXJnZShTcGVjSW50NDhBc0Rv
dWJsZSk7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5maWx0ZXIoU3BlY0RvdWJsZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDE1
NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMyw2ICsxMDMsOSBAQCB2b2lkIEpJVENvZGU6OnJlY29uc3RydWN0KAog
ICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAg
IHZhbHVlID0ganNOdW1iZXIoZXhlYy0+cihvcGVyYW5kKS51bmJveGVkSW50MzIoKSk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50
NDg6CisgICAgICAgICAgICB2YWx1ZSA9IGpzTnVtYmVyKGV4ZWMtPnIob3BlcmFuZCkudW5ib3hl
ZEludDQ4KCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNT
dGFja0FzVW5ib3hlZERvdWJsZToKICAgICAgICAgICAgIHZhbHVlID0ganNEb3VibGVOdW1iZXIo
ZXhlYy0+cihvcGVyYW5kKS51bmJveGVkRG91YmxlKCkpOwogICAgICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmgJKHJldmlz
aW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgaW5saW5lIGJvb2wgYmVsb25nc0lu
TWluaWZpZWRHcmFwaChOb2RlVAogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgY2FzZSBE
b3VibGVBc0ludDMyOgogICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKKyAgICBjYXNlIEludDQ4
VG9WYWx1ZToKKyAgICBjYXNlIEludDQ4VG9Eb3VibGU6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVCghcGVybWl0c09TUkJhY2t3YXJkUmV3aXJpbmco
dHlwZSkgJiYgIXBlcm1pdHNPU1JGb3J3YXJkUmV3aXJpbmcodHlwZSkpOwpAQCAtMTA0LDYgKzEw
Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAgY2Fz
ZSBVSW50MzJUb051bWJlcjoKICAgICAgICAgY2FzZSBEb3VibGVBc0ludDMyOgorICAgICAgICBj
YXNlIEludDQ4VG9Eb3VibGU6CisgICAgICAgIGNhc2UgSW50NDhUb1ZhbHVlOgogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTU1OTAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNDEsMTIgKzEyNDEsMTIgQEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIGJvb2wgc2hv
dWxkU3BlY3VsYXRlTnVtYmVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc051bWJlclNwZWN1
bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0Z1bGxOdW1iZXJTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0
ZU51bWJlckV4cGVjdGluZ0RlZmluZWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzTnVtYmVy
U3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVy
biBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocHJlZGljdGlvbigpKTsK
ICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVCb29sZWFuKCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsYWdzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkocmV2aXNpb24gMTU1OTAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxhZ3MuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsOCArNDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAjZGVm
aW5lIE5vZGVSZXN1bHRKUyAgICAgICAgICAgICAgICAgICAgIDB4MDAwMQogI2RlZmluZSBOb2Rl
UmVzdWx0TnVtYmVyICAgICAgICAgICAgICAgICAweDAwMDIKICNkZWZpbmUgTm9kZVJlc3VsdElu
dDMyICAgICAgICAgICAgICAgICAgMHgwMDAzCi0jZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAg
ICAgICAgICAgICAgIDB4MDAwNAotI2RlZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAg
ICAgICAweDAwMDUKKyNkZWZpbmUgTm9kZVJlc3VsdEludDQ4ICAgICAgICAgICAgICAgICAgMHgw
MDA0CisjZGVmaW5lIE5vZGVSZXN1bHRCb29sZWFuICAgICAgICAgICAgICAgIDB4MDAwNQorI2Rl
ZmluZSBOb2RlUmVzdWx0U3RvcmFnZSAgICAgICAgICAgICAgICAweDAwMDYKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAjZGVmaW5lIE5vZGVNdXN0R2VuZXJhdGUgICAgICAgICAg
ICAgICAgIDB4MDAwOCAvLyBzZXQgb24gbm9kZXMgdGhhdCBoYXZlIHNpZGUgZWZmZWN0cywgYW5k
IG1heSBub3QgdHJpdmlhbGx5IGJlIHJlbW92ZWQgYnkgRENFLgogI2RlZmluZSBOb2RlSGFzVmFy
QXJncyAgICAgICAgICAgICAgICAgICAweDAwMTAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSW50MzJUb0RvdWJs
ZSwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIC8qIFVzZWQgdG8gc3BlY3VsYXRlIHRoYXQgYSBk
b3VibGUgdmFsdWUgaXMgYWN0dWFsbHkgYW4gaW50ZWdlci4gKi9cCiAgICAgbWFjcm8oRG91Ymxl
QXNJbnQzMiwgTm9kZVJlc3VsdEludDMyIHwgTm9kZUV4aXRzRm9yd2FyZCkgXAorICAgIC8qIFVz
ZWQgdG8gc2VwYXJhdGUgcmVwcmVzZW50YXRpb24gYW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gb2Yg
SW50NDgncyByZXByZXNlbnRlZCAqL1wKKyAgICAvKiBhcyB2YWx1ZXMuICovXAorICAgIG1hY3Jv
KEludDQ4VG9WYWx1ZSwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oSW50NDhUb0RvdWJsZSwg
Tm9kZVJlc3VsdE51bWJlcikgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBv
cGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlciB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTM1Niw2ICszNjAsMTcgQEAgaW5saW5lIHVuc2lnbmVkIGZv
cndhcmRSZXdpcmluZ1NlbGVjdGlvbgogICAgICAgICAvLyBUaGlzIGxvc2VzIGluZm9ybWF0aW9u
LiBPbmx5IHVzZSBpdCBpZiB0aGVyZSBhcmUgbm8gYmV0dGVyIGFsdGVybmF0aXZlcy4KICAgICAg
ICAgcmV0dXJuIDI1OwogICAgICAgICAKKyAgICBjYXNlIEludDQ4VG9WYWx1ZToKKyAgICAgICAg
Ly8gTG9zZXMgbm8gaW5mb3JtYXRpb24uIEl0IGp1c3QgYm94ZXMgdGhlIHZhbHVlLCB3aGljaCBp
cyB3aGF0IE9TUiB3YW50cworICAgICAgICAvLyB0byBkbyBhbnl3YXkuCisgICAgICAgIHJldHVy
biAxMDA7CisgICAgICAgIAorICAgIGNhc2UgSW50NDhUb0RvdWJsZToKKyAgICAgICAgLy8gVGhp
cyBpcyBsaWtlIEludDMyVG9Eb3VibGU7IHdlIGNhbiB1c2UgaXQgYmVjYXVzZSBpdCBnaXZlcyBh
IHNlbWFudGljYWxseQorICAgICAgICAvLyBlcXVpdmFsZW50IHZhbHVlIGJ1dCB0aGF0IHZhbHVl
IG1heSBiZSBhbiBpbnQzMiBpbiBhIGRvdWJsZSwgc28gd2UnZAorICAgICAgICAvLyByYXRoZXIg
bm90IGlmIHdlIGNhbiBhdm9pZCBpdC4KKyAgICAgICAgcmV0dXJuIDc1OworICAgICAgICAKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gMDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24g
MTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw2ICsxOTUsOCBAQCB2b2lkIE9TUkV4aXRDb21w
aWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIGNhc2UgSW5HUFI6CiAgICAgICAgIGNh
c2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgIGNhc2UgVUludDMySW5HUFI6CisgICAgICAg
IGNhc2UgVW5ib3hlZEludDQ4SW5HUFI6CisgICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDQ4
SW5HUFI6CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KHJlY292ZXJ5LmdwcigpLCBzY3JhdGNo
ICsgaW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTIzNSwxMiAr
MjM3LDE1IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAg
ICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJ
bkpTU3RhY2s6CiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAg
ICBjYXNlIEludDQ4RGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIFN0cmljdEludDQ4
RGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJl
Z1QwKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2gg
KyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgY2FzZSBBbHJlYWR5SW5K
U1N0YWNrQXNVbmJveGVkRG91YmxlOgorICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1Vu
Ym94ZWRJbnQ0ODoKICAgICAgICAgICAgIG1faml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFk
ZHJlc3NGb3Iob3BlcmFuZCksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LnN0
b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTI3NCwzMyArMjc5LDM3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhp
dChjb25zdCAKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2Vt
Ymx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAotICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGU6
Ci0gICAgICAgIGNhc2UgSW5GUFI6Ci0gICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgbV9qaXQu
bG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAg
ICBtX2ppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0ODoKKyAgICAgICAgY2FzZSBV
bmJveGVkSW50NDhJbkdQUjoKKyAgICAgICAgY2FzZSBJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoK
KyAgICAgICAgICAgIG1faml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICAgICAgICAgIG1faml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKDE2KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgbV9qaXQuYm94SW50NDgoR1BS
SW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBS
ZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJs
eUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NDhJbkdQUjoKKyAgICAgICAg
Y2FzZSBTdHJpY3RJbnQ0OERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG1faml0Lmxv
YWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0
LmJveEludDQ4KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEs
IEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpy
ZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgVUludDMySW5HUFI6IHsKKyAgICAg
ICAgY2FzZSBVSW50MzJJbkdQUjoKICAgICAgICAgICAgIG1faml0LmxvYWQ2NChzY3JhdGNoICsg
aW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRv
UHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwKLSAgICAgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwotICAgICAg
ICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86
OmZwUmVnVDApOwotICAgICAgICAgICAgbV9qaXQuYWRkRG91YmxlKAotICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZBc3NlbWJseUhlbHBlcnM6OnR3b1Rv
VGhlMzIpLAotICAgICAgICAgICAgICAgIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAg
bV9qaXQuYm94SW50NDgoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUklu
Zm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNr
QXNVbmJveGVkRG91YmxlOgorICAgICAgICBjYXNlIEluRlBSOgorICAgICAgICBjYXNlIERvdWJs
ZURpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAgICAgICAgIG1faml0LmxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVn
VDApOwogICAgICAgICAgICAgbV9qaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUklu
Zm86OnJlZ1QwKTsKLSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBkb25lID0gbV9q
aXQuanVtcCgpOwotICAgICAgICAgICAgcG9zaXRpdmUubGluaygmbV9qaXQpOwotICAgICAgICAg
ICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgbV9qaXQu
c3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJh
bmQpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZp
c2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE0ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAotc3RhdGljIENTdHJpbmcgc2hvcnRPcGVyYW5kc0R1bXAo
Y29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzKQotewotICAgIER1bXBDb250
ZXh0IGNvbnRleHQ7Ci0gICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwotICAgIG91dC5wcmludChp
bkNvbnRleHQob3BlcmFuZHMsICZjb250ZXh0KSk7Ci0gICAgcmV0dXJuIG91dC50b0NTdHJpbmco
KTsKLX0KLQogZXh0ZXJuICJDIiB7CiAKIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBl
eGVjKQpAQCAtMTEzLDcgKzEwNSw3IEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICAgICAgKCJERkcgT1NSIGV4aXQgIyV1ICglcywgJXMpIGZyb20gJXMsIHdp
dGggb3BlcmFuZHMgPSAlcyIsCiAgICAgICAgICAgICAgICAgZXhpdEluZGV4LCB0b0NTdHJpbmco
ZXhpdC5tX2NvZGVPcmlnaW4pLmRhdGEoKSwKICAgICAgICAgICAgICAgICBleGl0S2luZFRvU3Ry
aW5nKGV4aXQubV9raW5kKSwgdG9DU3RyaW5nKCpjb2RlQmxvY2spLmRhdGEoKSwKLSAgICAgICAg
ICAgICAgICBzaG9ydE9wZXJhbmRzRHVtcChvcGVyYW5kcykuZGF0YSgpKSk7CisgICAgICAgICAg
ICAgICAgdG9DU3RyaW5nKGlnbm9yaW5nQ29udGV4dDxEdW1wQ29udGV4dD4ob3BlcmFuZHMpKS5k
YXRhKCkpKTsKICAgICB9CiAgICAgCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGVkRG91YmxlVHlw
ZUZvclByZWRpY3Rpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBpZiAo
IWlzTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQorICAgICAgICBpZiAoIWlzRnVsbE51bWJlclNw
ZWN1bGF0aW9uKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlOwogICAgICAg
ICBpZiAodmFsdWUgJiBTcGVjRG91YmxlTmFOKQogICAgICAgICAgICAgcmV0dXJuIFNwZWNEb3Vi
bGU7CkBAIC0xNDksOCArMTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIEdldExvY2FsOiB7Ci0gICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAg
ICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+
cHJlZGljdGlvbigpOworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiA9IHZhcmlhYmxlLT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBpZiAodmFy
aWFibGUtPnNob3VsZE5ldmVyVW5ib3goKSAmJiAocHJlZGljdGlvbiAmIFNwZWNJbnQ0OCkpCisg
ICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0ludDQ4QXNEb3Vi
bGUpICYgflNwZWNJbnQ0ODsKICAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQogICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0yMDMsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChu
b2RlQ2FuU3BlY3VsYXRlSW50MzIobm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjTnVt
YmVyKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQnl0
ZWNvZGVOdW1iZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjEyLDE0
ICsyMTQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0ID0g
bm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKGxlZnQgJiYgcmlnaHQpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxh
dGlvbkV4cGVjdGluZ0RlZmluZWQobGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGlu
Z0RlZmluZWQocmlnaHQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1
bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQocmlnaHQpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
LmFkZFNwZWN1bGF0aW9uTW9kZShub2RlKSAhPSBEb250U3BlY3VsYXRlSW50MzIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwog
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1h
Y2hpbmVJbnQobm9kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihTcGVjSW50NDgpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihzcGVjdWxhdGVkRG91
YmxlVHlwZUZvclByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSk7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIGlmICghKGxlZnQgJiBTcGVjTnVtYmVyKSB8fCAhKHJpZ2h0ICYgU3BlY051bWJlcikpIHsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEobGVmdCAmIFNwZWNGdWxsTnVtYmVyKSB8fCAh
KHJpZ2h0ICYgU3BlY0Z1bGxOdW1iZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIGxlZnQg
b3IgcmlnaHQgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgb3RoZXIgdGhhbiBhIG51bWJlci4KICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZyk7
CiAgICAgICAgICAgICAgICAgfSBlbHNlCkBAIC0zNjgsMTAgKzM3MCwyMCBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAKICAgICAgICAgY2FzZSBHZXRCeVZhbDogeworICAgICAgICAgICAgaWYgKCFu
b2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgaWYgKCFub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpCiAgICAgICAgICAgICAgICAgfHwgbm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKQogICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNEb3VibGUpOwotICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVVpbnQz
MkFycmF5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG5vZGUt
PmdldEhlYXBQcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihTcGVjSW50MzIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDQ4KTsKKyAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KG5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTU2Niw2ICs1NzgsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrV2F0Y2hk
b2dUaW1lcjoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBMb29wSGlu
dDoKKyAgICAgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CisgICAgICAgIGNhc2UgSW50NDhUb0RvdWJs
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0
cyBpZ25vcmVkIGJlY2F1c2UgaXQgYWxyZWFkeSBoYXMgYSBwcmVkaWN0aW9uLgpAQCAtNjQwLDgg
KzY1NCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBEb3VibGVC
YWxsb3QgYmFsbG90OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzTnVtYmVy
U3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb25F
eHBlY3RpbmdEZWZpbmVkKHJpZ2h0KQotICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmFkZFNo
b3VsZFNwZWN1bGF0ZUludDMyKG5vZGUpKQorICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNw
ZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlv
bkV4cGVjdGluZ0RlZmluZWQocmlnaHQpCisgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguYWRk
U2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSkKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5h
ZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKQogICAgICAgICAgICAgICAgIGJhbGxv
dCA9IFZvdGVEb3VibGU7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFsbG90
ID0gVm90ZVZhbHVlOwpAQCAtNjU3LDggKzY3Miw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBEb3VibGVCYWxsb3QgYmFsbG90OwogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVj
dWxhdGlvbihyaWdodCkKLSAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5tdWxTaG91bGRTcGVj
dWxhdGVJbnQzMihub2RlKSkKKyAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlv
bihsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKKyAgICAgICAgICAgICAg
ICAmJiAhbV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlKQorICAgICAgICAgICAg
ICAgICYmICFtX2dyYXBoLm11bFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpCiAgICAg
ICAgICAgICAgICAgYmFsbG90ID0gVm90ZURvdWJsZTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBiYWxsb3QgPSBWb3RlVmFsdWU7CkBAIC02NzcsNyArNjkzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIERvdWJsZUJhbGxvdCBiYWxsb3Q7CiAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbihsZWZ0
KSAmJiBpc051bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQorICAgICAgICAgICAgaWYgKGlzRnVsbE51
bWJlclNwZWN1bGF0aW9uKGxlZnQpICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQog
ICAgICAgICAgICAgICAgICYmICEoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1l
dGljKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSAmJiBub2Rl
LT5jYW5TcGVjdWxhdGVJbnQzMigpKSkKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlRG91
YmxlOwogICAgICAgICAgICAgZWxzZQpAQCAtNzA2LDcgKzcyMiw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gbm9kZS0+Y2hpbGQxKCktPnByZWRp
Y3Rpb24oKTsKICAgICAgICAgICAgIGlmIChpc0RvdWJsZVNwZWN1bGF0aW9uKHByZWRpY3Rpb24p
KQogICAgICAgICAgICAgICAgIG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT52b3RlKFZvdGVE
b3VibGUpOwotICAgICAgICAgICAgZWxzZSBpZiAoIWlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGlj
dGlvbikgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgZWxz
ZSBpZiAoCisgICAgICAgICAgICAgICAgIWlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rp
b24pCisgICAgICAgICAgICAgICAgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8
IGlzTWFjaGluZUludFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAgICAgIG5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT52b3RlKFZvdGVWYWx1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBA
IHB1YmxpYzoKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAg
Y2FzZSBOb3RDZWxsVXNlOgogICAgICAgICBjYXNlIE90aGVyVXNlOgorICAgICAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBLbm93bkludDMyVXNlOgpAQCAtNjksNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAg
ICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNOdW1iZXIp
CisgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fdHlwZSAmIH5TcGVjRnVs
bE51bWJlcikKICAgICAgICAgICAgICAgICBtX3Jlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgCkBAIC0yMzksNiArMjQwLDggQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoK
ICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBMb29wSGludDoKKyAg
ICBjYXNlIEludDQ4VG9Eb3VibGU6CisgICAgY2FzZSBJbnQ0OFRvVmFsdWU6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFsOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmgJ
KHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50
UmVnaXN0ZXJTYXZlUGxhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIGVudW0g
U2lsZW50U3BpbGxBY3Rpb24gewogZW51bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBEb05vdGhp
bmdGb3JGaWxsLAogICAgIFNldEludDMyQ29uc3RhbnQsCisgICAgU2V0SW50NDhDb25zdGFudCwK
KyAgICBTZXRTdHJpY3RJbnQ0OENvbnN0YW50LAogICAgIFNldEJvb2xlYW5Db25zdGFudCwKICAg
ICBTZXRDZWxsQ29uc3RhbnQsCiAgICAgU2V0VHJ1c3RlZEpTQ29uc3RhbnQsCkBAIC02MSw4ICs2
MywxMiBAQCBlbnVtIFNpbGVudEZpbGxBY3Rpb24gewogICAgIExvYWQzMlRhZywKICAgICBMb2Fk
MzJQYXlsb2FkLAogICAgIExvYWQzMlBheWxvYWRCb3hJbnQsCisgICAgTG9hZDMyUGF5bG9hZENv
bnZlcnRUb0ludDQ4LAorICAgIExvYWQzMlBheWxvYWRTaWduRXh0ZW5kLAogICAgIExvYWRQdHIs
CiAgICAgTG9hZDY0LAorICAgIExvYWQ2NFNoaWZ0UmlnaHQxNiwKKyAgICBMb2FkNjRTaGlmdExl
ZnQxNiwKICAgICBMb2FkRG91YmxlLAogICAgIExvYWREb3VibGVCb3hEb3VibGUsCiAgICAgTG9h
ZEpTVW5ib3hEb3VibGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODg4LDggKzg4OCw4IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZURvdWIKICNlbmRpZgogICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JO
b2RlKGVkZ2UpOwogICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7Ci0gICAg
QVNTRVJUKGVkZ2UudXNlS2luZCgpICE9IEtub3duTnVtYmVyVXNlIHx8ICEodmFsdWUubV90eXBl
ICYgflNwZWNOdW1iZXIpKTsKLSAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY051
bWJlcik7CisgICAgQVNTRVJUKGVkZ2UudXNlS2luZCgpICE9IEtub3duTnVtYmVyVXNlIHx8ICEo
dmFsdWUubV90eXBlICYgflNwZWNGdWxsTnVtYmVyKSk7CisgICAgbV9pbnRlcnByZXRlci5maWx0
ZXIodmFsdWUsIFNwZWNGdWxsTnVtYmVyKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
Z2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGlu
Zm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsK
IApAQCAtOTI4LDcgKzkyOCw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZURvdWIKIAogICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ICE9IERhdGFGb3JtYXRKU0ludDMy
ICYmIHNwaWxsRm9ybWF0ICE9IERhdGFGb3JtYXRJbnQzMikgewogICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICAgICAgICAgICAgICBpZiAodHlwZSAmIH5TcGVj
TnVtYmVyKQorICAgICAgICAgICAgICAgIGlmICh0eXBlICYgflNwZWNGdWxsTnVtYmVyKQogICAg
ICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2Uo
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSksIGVkZ2UsIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKICAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIGZwcik7CiAgICAgICAgICAgICAgICAgaGFzVW5ib3hlZERvdWJsZSA9
IG1faml0Lmp1bXAoKTsKQEAgLTk2Myw3ICs5NjMsNyBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0g
RGF0YUZvcm1hdEpTSW50MzIpIHsKICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpJbnQzMlRhZykpOwotICAgICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY051bWJlcikKKyAgICAg
ICAgICAgIGlmICh0eXBlICYgflNwZWNGdWxsTnVtYmVyKQogICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRn
ZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwogICAgICAgICAgICAgdW5ib3hEb3Vi
bGUodGFnR1BSLCBwYXlsb2FkR1BSLCBmcHIsIHNjcmF0Y2guZnByKCkpOwogICAgICAgICAgICAg
aGFzVW5ib3hlZERvdWJsZSA9IG1faml0Lmp1bXAoKTsKQEAgLTI5MjMsNyArMjkyMyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEZQUlJl
ZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigpOwogCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygK
LSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwgU3BlY1JlYWxO
dW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hpbGQyKCksIFNw
ZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlRlBSLCB2YWx1ZUZQ
UikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgp
KSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0zMTg3LDcgKzMxODcsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBvcDEudXNlKCk7
CiAgICAgICAgIAotICAgICAgICBpZiAoIShtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdHlwZSAmIH4oU3BlY051bWJlciB8IFNwZWNCb29sZWFuKSkpIHsKKyAgICAgICAgaWYgKCEo
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNGdWxsTnVtYmVy
IHwgU3BlY0Jvb2xlYW4pKSkgewogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFUYWdHUFIsIHJl
c3VsdFRhZ0dQUik7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVBheWxvYWRHUFIsIHJlc3Vs
dFBheWxvYWRHUFIpOwogICAgICAgICB9IGVsc2UgewpAQCAtMzI4OSw3ICszMjg5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhpcywgdXNlKTsKICAgICAgICAgICAg
ICAgICAgICAgRlBSUmVnIG9wRlBSID0gb3BlcmFuZC5mcHIoKTsKICAgICAgICAgICAgICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygp
LCB1c2UsIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MoKSwgdXNlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVy
ZWQsIG9wRlBSLCBvcEZQUikpOwogICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbV9qaXQu
c3RvcmVEb3VibGUob3BGUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNp
emVvZihkb3VibGUpICogb3BlcmFuZElkeCkpOwpAQCAtMzM1NCw3ICszMzU0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCB1c2UpOwogICAgICAgICAgICAgICAgIEZQ
UlJlZyBvcEZQUiA9IG9wZXJhbmQuZnByKCk7CiAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY1JlYWxOdW1i
ZXIsCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0Z1bGxSZWFs
TnVtYmVyLAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIG9wRlBSLCBvcEZQUikpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKG9wRlBSLCByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIgKyBvcGVyYW5kSWR4KSk7CkBAIC00Nzk3LDYgKzQ3
OTcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAg
Y2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgorICAgIGNhc2UgSW50NDhUb0RvdWJsZToKKyAg
ICBjYXNlIEludDQ4VG9WYWx1ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCwyOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpib3hJbnQ0OChH
UFJSZWcgc291cmNlR1BSLCBHUFJSZWcgdGFyZ2V0R1BSLCBEYXRhRm9ybWF0IGZvcm1hdCkKK3sK
KyAgICBHUFJSZWcgdGVtcEdQUjsKKyAgICBpZiAoc291cmNlR1BSID09IHRhcmdldEdQUikKKyAg
ICAgICAgdGVtcEdQUiA9IGFsbG9jYXRlKCk7CisgICAgZWxzZQorICAgICAgICB0ZW1wR1BSID0g
dGFyZ2V0R1BSOworICAgIAorICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOworCisgICAg
aWYgKGZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgIG1faml0LnJzaGlmdDY0KFRy
dXN0ZWRJbW0zMigxNiksIHNvdXJjZUdQUik7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoZm9y
bWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgCisgICAgbV9qaXQuYm94SW50NDgo
c291cmNlR1BSLCB0YXJnZXRHUFIsIHRlbXBHUFIsIGZwcik7CisgICAgCisgICAgaWYgKHRlbXBH
UFIgIT0gdGFyZ2V0R1BSKQorICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgCisgICAgdW5s
b2NrKGZwcik7Cit9CisKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBl
ZGdlKQogewogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0
dWFsUmVnaXN0ZXIoKTsKQEAgLTY5LDExICs5MiwyMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBEYXRhRm9y
bWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwogICAgICAgICAgICAgbV9ncHJz
LnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAg
ICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikgeworICAgICAgICAgICAg
c3dpdGNoIChzcGlsbEZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6
IHsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKICAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByKTsKICAgICAgICAgICAgICAgICBzcGlsbEZv
cm1hdCA9IERhdGFGb3JtYXRKU0ludDMyOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGNhc2UgRGF0YUZvcm1hdEludDQ4OgorICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3Ry
aWN0SW50NDg6IHsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBib3hJbnQ0
OChncHIsIGdwciwgc3BpbGxGb3JtYXQpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpLCBncHIpOwogICAgICAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRh
Rm9ybWF0RG91YmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gYm94IHRoZSBk
b3VibGUsIHNpbmNlIHdlIHdhbnQgYSBKU1ZhbHVlLgpAQCAtODEsNiArMTE1LDcgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAgICAgICAgICAgICAgICBz
cGlsbEZvcm1hdCA9IERhdGFGb3JtYXRKU0RvdWJsZTsKICAgICAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9y
bWF0SlMpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwogICAgICAg
ICB9CkBAIC0xMTMsNiArMTQ4LDE2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFs
dWUoRWRnZSAKIAogICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0KKyAgICAgICAgCisgICAgY2Fz
ZSBEYXRhRm9ybWF0SW50NDg6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAg
ICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIGxvY2soZ3ByKTsKKyAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IGFsbG9jYXRlKCk7CisgICAgICAgIGJveEludDQ4KGdwciwg
cmVzdWx0R1BSLCBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpOworICAgICAgICB1bmxvY2soZ3ByKTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdEdQUjsKKyAgICB9CiAKICAgICBjYXNlIERhdGFGb3JtYXRD
ZWxsOgogICAgICAgICAvLyBObyByZXRhZyByZXF1aXJlZCBvbiBKU1ZBTFVFNjQhCkBAIC03Njgs
NyArODEzLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAg
ICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQo
KTsKICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFG
b3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9
PSBEYXRhRm9ybWF0SW50MzIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4IHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCk7CiAgICAgICAgIAogICAgICAgICBt
X2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAg
ICAgICAgIApAQCAtNzg5LDYgKzgzNCwzNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVJbnQzCiAgICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQz
MjsKICAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3Ry
aWN0SW50NDgpIHsKKyAgICAgICAgICAgIC8vIEdlbmVyYWxseSwgdGhpcyBjYW4gb25seSBoYXBw
ZW4gaWYgd2UndmUgYWxyZWFkeSBwcm92ZWQgdGhhdCB0aGUKKyAgICAgICAgICAgIC8vIHZhbHVl
IGlzIGFuIGludDMyLiBUaGF0J3MgYmVjYXVzZSBpZiBhIHZhbHVlIG9yaWdpbmF0ZWQgYXMgYSBK
U1ZhbHVlCisgICAgICAgICAgICAvLyB0aGVuIHdlIHdvdWxkIHNwZWN1bGF0ZSB0aGF0IGl0J3Mg
YW4gaW50MzIgYmVmb3JlIHJlcHJlc2VudGluZyBpdCBhcworICAgICAgICAgICAgLy8gYW4gaW50
NDguIE90aGVyd2lzZSwgaWYgd2Uga25vd2luZ2x5IHByb2R1Y2VkIGFuIGludDQ4LCB0aGVuIHdl
IHdvdWxkCisgICAgICAgICAgICAvLyBiZSBib3hpbmcgaXQgaW50byBhIHZhbHVlIHVzaW5nIElu
dDQ4VG9WYWx1ZS4gVGhpcyBhc3NlcnRpb24gaXMgdmFsaWQKKyAgICAgICAgICAgIC8vIG9ubHkg
YmVjYXVzZSBJbnQ0OCBpcyBzb21ldGhpbmcgdGhhdCB3ZSBpbnRyb2R1Y2UgYXQgcHJlZGljdGlv
biB0aW1lLgorICAgICAgICAgICAgLy8gSG93ZXZlcjogd2UgbWF5IGhhdmUgYW4gaW50MzItcHJv
ZHVjaW5nIG5vZGUgcmVwbGFjZWQgYnkgYW4KKyAgICAgICAgICAgIC8vIGludDQ4LXByb2R1Y2lu
ZyBub2RlIGR1ZSB0byBDU0UuIFNvIHdlIG11c3QgZG8gYSBjaGVjay4KKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCEodHlwZSAmIH5TcGVjTWFjaGluZUludCkpOworICAgICAgICAgICAgaWYg
KHR5cGUgJiBTcGVjSW50NDgpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9j
YXRlKCk7CisgICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoZ3ByLCB0ZW1w
KTsKKyAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBw
cm9maWxpbmcgaW5mb3JtYXRpb24gaGVyZS4gOi0vCisgICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjaygKKyAgICAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwK
KyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBncHIsIHRlbXApKTsKKyAgICAgICAgICAgICAgICB1bmxvY2sodGVtcCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdElu
dDQ4KQorICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIGdwcik7CisgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2
KSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihncHIsIGdw
cik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQzMigqbV9zdHJlYW0s
IGdwcik7CisgICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CisgICAg
ICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CiAgICAgICAgIG1faml0LmxvYWQ2NChKSVRD
b21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogCiAgICAgICAgIC8v
IEZpbGwgYXMgSlNWYWx1ZSwgYW5kIGZhbGwgdGhyb3VnaC4KQEAgLTc5Nyw2ICs4NzIsNyBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgfQogCiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SlM6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoISh0eXBlICYgU3BlY0lu
dDQ4KSk7CiAgICAgICAgIC8vIENoZWNrIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLgogICAgICAg
ICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKQEAg
LTg0Myw2ICs5MTksMzUgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50
MwogICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CiAgICAgICAgIHJldHVy
biBncHI7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0ODoK
KyAgICBjYXNlIERhdGFGb3JtYXRJbnQ0ODogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdDsKKyAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tl
ZChncHIpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAg
bV9qaXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBs
b2NrKGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQzMigqbV9zdHJlYW0sIGdwcik7Cisg
ICAgICAgICAgICByZXN1bHQgPSBncHI7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoISh0eXBlICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgICAgIGlmIChpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkgPT0gRGF0YUZvcm1hdEludDQ4KQorICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQo
VHJ1c3RlZEltbTMyKDE2KSwgcmVzdWx0KTsKKyAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NDgp
IHsKKyAgICAgICAgICAgIEdQUlJlZyB0ZW1wID0gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIG1f
aml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgdGVtcCk7CisgICAgICAgICAgICAvLyBDdXJy
ZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gaGVyZS4g
Oi0vCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIEJhZFR5
cGUsIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1bHQsIHRlbXApKTsKKyAgICAgICAgICAgIHVubG9j
ayh0ZW1wKTsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihyZXN1
bHQsIHJlc3VsdCk7CisgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKKyAg
ICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CiAKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAg
ICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKQEAgLTg4NSw2ICs5OTAsMTgwIEBAIEdQUlJl
ZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ0OChFZGdlIGVkZ2Us
IERhdGFGb3JtYXQgZGVzaXJlZEZvcm1hdCkKK3sKKyAgICBBU1NFUlQoZGVzaXJlZEZvcm1hdCA9
PSBEYXRhRm9ybWF0SW50NDggfHwgZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50
NDgpOworICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwor
ICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CisgICAgbV9pbnRlcnByZXRl
ci5maWx0ZXIodmFsdWUsIFNwZWNNYWNoaW5lSW50KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZ2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgR2VuZXJhdGlvbklu
Zm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lz
dGVyKTsKKworICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CisgICAgY2FzZSBE
YXRhRm9ybWF0Tm9uZTogeworICAgICAgICBpZiAoKGVkZ2UtPmhhc0NvbnN0YW50KCkgJiYgIXZh
bHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKS5pc01hY2hpbmVJbnQoKSkgfHwgaW5mby5zcGls
bEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKKyAgICAgICAgICAgIHRlcm1pbmF0ZVNw
ZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBH
UFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKKworICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQo
KSkgeworICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQoZWRn
ZS5ub2RlKCkpOworICAgICAgICAgICAgQVNTRVJUKGpzVmFsdWUuaXNNYWNoaW5lSW50KCkpOwor
ICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRl
ckNvbnN0YW50KTsKKyAgICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBqc1ZhbHVlLmFzTWFjaGlu
ZUludCgpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDQ4
KQorICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgMTY7CisgICAgICAgICAgICBtX2pp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NCh2YWx1ZSksIGdwcik7CisgICAgICAgICAgICBp
bmZvLmZpbGxHUFIoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOworICAgICAgICAgICAg
cmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgRGF0YUZvcm1hdCBzcGls
bEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKKyAgICAgICAgCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0gRGF0
YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCBzcGlsbEZv
cm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpOworICAgICAgICAKKyAgICAgICAgbV9ncHJz
LnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAgICAg
ICAKKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyIHx8IHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikgeworICAgICAgICAgICAgLy8gSWYgd2Uga25vdyB0
aGlzIHdhcyBzcGlsbGVkIGFzIGFuIGludGVnZXIgd2UgY2FuIGZpbGwgd2l0aG91dCBjaGVja2lu
Zy4KKyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIo
Z3ByLCBncHIpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0
cmljdEludDQ4KSB7CisgICAgICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NDgoKm1fc3Ry
ZWFtLCBncHIpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAg
ICAgICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJu
IGdwcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdElu
dDQ4IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkgeworICAgICAgICAg
ICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IGdwcik7CisgICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0
SW50NDgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdElu
dDQ4KQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYp
LCBncHIpOworICAgICAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KCptX3N0cmVhbSwg
Z3ByKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCkKKyAgICAgICAg
ICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBncHIpOworICAgICAgICAg
ICAgaW5mby5maWxsSW50NDgoKm1fc3RyZWFtLCBncHIpOworICAgICAgICAgICAgcmV0dXJuIGdw
cjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKworICAgICAgICAvLyBGaWxsIGFzIEpTVmFsdWUs
IGFuZCBmYWxsIHRocm91Z2guCisgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBn
cHIsIERhdGFGb3JtYXRKU0ludDMyKTsKKyAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOworICAg
IH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIC8vIENoZWNrIHRoZSB2YWx1
ZSBpcyBhbiBpbnRlZ2VyLiBOb3RlIHRoYXQgd2Ugd291bGQgKmxpa2UqIHRvIHVuYm94IGFuIElu
dDQ4CisgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgYnV0IHRoaXMgaXMgdG9vIGNvc3RseS4gV2Ug
b25seSAqcHJvdmUqIHRoYXQgdGhpcyBpcyBhbiBJbnQ0OAorICAgICAgICAvLyBldmVuIHRob3Vn
aCB3ZSBjaGVjayBpZiBpdCdzIGFuIGludDMyLgorICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdDsKKyAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tl
ZChncHIpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAg
bV9qaXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBt
X2dwcnMubG9jayhncHIpOworICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOworICAgICAgICB9Cisg
ICAgICAgIGlmICh0eXBlICYgflNwZWNJbnQzMikKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MocmVzdWx0KSwgZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFj
cm9Bc3NlbWJsZXI6OkJlbG93LCByZXN1bHQsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cikpOworICAgICAgICBpZiAocmVzdWx0ID09IGdwcikgLy8gVGhlIG5vdC1hbHJlYWR5LWxvY2tl
ZCwgc28gZmlsbCBpbi1wbGFjZSwgY2FzZS4KKyAgICAgICAgICAgIGluZm8uZmlsbEludDQ4KCpt
X3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMy
VG9QdHIocmVzdWx0LCByZXN1bHQpOworICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRh
Rm9ybWF0SW50NDgpCisgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYp
LCByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGNhc2UgRGF0
YUZvcm1hdEludDMyOgorICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50MzI6IHsKKyAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHQ7CisgICAgICAgIGlm
IChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gYWxsb2NhdGUo
KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByLCByZXN1bHQpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbElu
dDQ4KCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IGdwcjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHQs
IHJlc3VsdCk7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkK
KyAgICAgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0
SW50NDg6IHsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIGJvb2wg
d2FzTG9ja2VkID0gbV9ncHJzLmlzTG9ja2VkKGdwcik7CisgICAgICAgIGxvY2soZ3ByKTsKKyAg
ICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAg
ICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgaWYgKHdhc0xvY2tlZCkgeworICAgICAgICAgICAg
R1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwg
cmVzdWx0KTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAgICAgZ3ByID0gcmVz
dWx0OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KCpt
X3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgbV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDE2KSwg
Z3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0
YUZvcm1hdEludDQ4OiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAg
ICBib29sIHdhc0xvY2tlZCA9IG1fZ3Bycy5pc0xvY2tlZChncHIpOworICAgICAgICBsb2NrKGdw
cik7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAg
ICAgICAgIHJldHVybiBncHI7CisgICAgICAgIGlmICh3YXNMb2NrZWQpIHsKKyAgICAgICAgICAg
IEdQUlJlZyByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9qaXQubW92ZShncHIs
IHJlc3VsdCk7CisgICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGdwciA9IHJl
c3VsdDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ0OCgqbV9zdHJl
YW0sIGdwcik7CisgICAgICAgIG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMigxNiksIGdwcik7
CisgICAgICAgIHJldHVybiBncHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0RG91Ymxl
OgorICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgorICAgICAgICBpZiAoZWRnZS0+aGFzQ29u
c3RhbnQoKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpTQ29uc3Rh
bnQoZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKGpzVmFsdWUuaXNNYWNoaW5lSW50KCkp
IHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlID0ganNWYWx1ZS5hc01hY2hpbmVJbnQo
KTsKKyAgICAgICAgICAgICAgICBpZiAoZGVzaXJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgp
CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgMTY7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6SW1tNjQodmFsdWUpLCBncHIpOworICAgICAgICAgICAgICAgIHJldHVy
biBncHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRh
Rm9ybWF0Q2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgorICAgIGNhc2UgRGF0YUZv
cm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46IHsKKyAgICAgICAgdGVy
bWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAp
OworICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3Jt
YXRTdG9yYWdlOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKKyAgICB9Cit9CisKIEZQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlIGVkZ2UpCiB7CiAjaWYgREZHX0VOQUJM
RShERUJVR19WRVJCT1NFKQpAQCAtODkyLDggKzExNzEsOCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAjZW5kaWYKICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9
IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUu
bV90eXBlOwotICAgIEFTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bk51bWJlclVzZSB8fCAh
KHZhbHVlLm1fdHlwZSAmIH5TcGVjTnVtYmVyKSk7Ci0gICAgbV9pbnRlcnByZXRlci5maWx0ZXIo
dmFsdWUsIFNwZWNOdW1iZXIpOworICAgIEFTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bk51
bWJlclVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikpOworICAgIG1faW50
ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjRnVsbE51bWJlcik7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVy
YXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1
YWxSZWdpc3Rlcik7CiAKQEAgLTk0NSw2ICsxMjI0LDI0IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAgICAgIHVubG9jayhncHIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERhdGFGb3Jt
YXRJbnQ0ODogeworICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAgICAg
ICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxl
ZCk7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEludDQ4KCptX3N0cmVh
bSwgZ3ByKTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ0
ODogeworICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBt
X2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7Cisg
ICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJl
Z2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbFN0cmljdEludDQ4KCptX3N0cmVh
bSwgZ3ByKTsKKyAgICAgICAgICAgIHVubG9jayhncHIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFs
bG9jYXRlKCk7CkBAIC05NzgsNyArMTI3NSw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZURvdWIKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBt
X2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBqc1ZhbHVlR3ByLCBH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogCi0gICAgICAgIGlmICh0eXBlICYgflNw
ZWNOdW1iZXIpCisgICAgICAgIGlmICh0eXBlICYgflNwZWNGdWxsTnVtYmVyKQogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhqc1ZhbHVlR3ByKSwgZWRn
ZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBqc1ZhbHVlR3ByLCBH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKIAogICAgICAgICAvLyBGaXJzdCwgaWYg
d2UgZ2V0IGhlcmUgd2UgaGF2ZSBhIGRvdWJsZSBlbmNvZGVkIGFzIGEgSlNWYWx1ZQpAQCAtMTAw
OSw2ICsxMzA2LDI4IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIK
ICAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOwogICAgICAgICByZXR1cm4gZnByOwogICAgIH0K
KyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6IHsKKyAgICAgICAgRlBSUmVnIGZw
ciA9IGZwckFsbG9jYXRlKCk7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAg
ICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7
CisgICAgICAgIG1faml0Lm1vdmUoZ3ByLCB0ZW1wKTsKKyAgICAgICAgbV9qaXQucnNoaWZ0NjQo
VHJ1c3RlZEltbTMyKDE2KSwgdGVtcCk7CisgICAgICAgIG1faml0LmNvbnZlcnRJbnQ2NFRvRG91
YmxlKHRlbXAsIGZwcik7CisgICAgICAgIHVubG9jayh0ZW1wKTsKKyAgICAgICAgbV9ncHJzLnVu
bG9jayhncHIpOworICAgICAgICByZXR1cm4gZnByOworICAgIH0KKyAgICAgICAgCisgICAgY2Fz
ZSBEYXRhRm9ybWF0U3RyaWN0SW50NDg6IHsKKyAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9j
YXRlKCk7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMu
bG9jayhncHIpOworICAgICAgICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShncHIsIGZwcik7
CisgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKKyAgICAgICAgcmV0dXJuIGZwcjsKKyAgICB9
CiAKICAgICAvLyBVbmJveCB0aGUgZG91YmxlCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6
IHsKQEAgLTExMTEsNyArMTQzMCw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUNlbGwKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBjYXNlIERhdGFGb3Jt
YXREb3VibGU6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOgotICAgIGNhc2UgRGF0YUZv
cm1hdEJvb2xlYW46IHsKKyAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgorICAgIGNhc2UgRGF0
YUZvcm1hdEludDQ4OgorICAgIGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDQ4OiB7CiAgICAgICAg
IHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQpAQCAtMTE5NCw3ICsxNTE1
LDkgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogICAgIGNhc2Ug
RGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNl
IERhdGFGb3JtYXRKU0NlbGw6Ci0gICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDogeworICAgIGNhc2Ug
RGF0YUZvcm1hdENlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50NDg6CisgICAgY2FzZSBEYXRh
Rm9ybWF0U3RyaWN0SW50NDg6IHsKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRp
b24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2Nh
dGUoKTsKICAgICB9CkBAIC0xNTAzLDYgKzE4MjYsNDAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUludDMyQ29tcGFyZQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2N1
cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUludDQ4Q29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlV2hpY2hldmVy
SW50NDhPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSwgb3AxKTsKKyAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisgICAgCisgICAgbV9qaXQuY29t
cGFyZTY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Cisg
ICAgCisgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQg
aGVyZS4KKyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0Lmdw
cigpKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jdXJyZW50Tm9kZSwgRGF0
YUZvcm1hdEpTQm9vbGVhbik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVw
SG9sZUludDQ4QnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVy
OjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBCYXNpY0Jsb2NrKiB0YWtl
biA9IGJyYW5jaE5vZGUtPnRha2VuQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9
IGJyYW5jaE5vZGUtPm5vdFRha2VuQmxvY2soKTsKKworICAgIC8vIFRoZSBicmFuY2ggaW5zdHJ1
Y3Rpb24gd2lsbCBicmFuY2ggdG8gdGhlIHRha2VuIGJsb2NrLgorICAgIC8vIElmIHRha2VuIGlz
IG5leHQsIHN3aXRjaCB0YWtlbiB3aXRoIG5vdFRha2VuICYgaW52ZXJ0IHRoZSBicmFuY2ggY29u
ZGl0aW9uIHNvIHdlIGNhbiBmYWxsIHRocm91Z2guCisgICAgaWYgKHRha2VuID09IG5leHRCbG9j
aygpKSB7CisgICAgICAgIGNvbmRpdGlvbiA9IEpJVENvbXBpbGVyOjppbnZlcnQoY29uZGl0aW9u
KTsKKyAgICAgICAgQmFzaWNCbG9jayogdG1wID0gdGFrZW47CisgICAgICAgIHRha2VuID0gbm90
VGFrZW47CisgICAgICAgIG5vdFRha2VuID0gdG1wOworICAgIH0KKyAgICAKKyAgICBTcGVjdWxh
dGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBv
cDEpOworICAgIAorICAgIGJyYW5jaDY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCks
IHRha2VuKTsKKyAgICBqdW1wKG5vdFRha2VuKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZURvdWJsZUNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNv
bmRpdGlvbiBjb25kaXRpb24pCiB7CiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTkwNiw2ICsyMjYzLDE2IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6IHsKKyAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBu
b2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4ocmVzdWx0
LmdwcigpLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAgICAgICAgICBnZW5l
cmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKS5pbml0SW50NDgo
bm9kZSwgbm9kZS0+cmVmQ291bnQoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7CkBAIC0x
OTgxLDYgKzIzNDgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBj
YXNlIEZsdXNoZWRJbnQ0ODogeworICAgICAgICAgICAgU3BlY3VsYXRlSW50NDhPcGVyYW5kIHZh
bHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlNjQodmFs
dWUuZ3ByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpKTsKKyAgICAg
ICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS0+
bG9jYWwoKSwgVmFsdWVTb3VyY2UoSW50NDhJbkpTU3RhY2spKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDogewog
ICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CkBAIC0yMTA0LDYg
KzI0NzksMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgSW50NDhUb1ZhbHVlOiB7Cisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcGVyYW5kKTsKKyAgICAgICAg
bV9qaXQubW92ZShvcGVyYW5kLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAg
ICAgCisgICAgY2FzZSBJbnQ0OFRvRG91YmxlOiB7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9w
ZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEZQUlRlbXBvcmFy
eSByZXN1bHQodGhpcywgb3BlcmFuZCk7CisgICAgICAgIG1faml0Lm1vdmVEb3VibGUob3BlcmFu
ZC5mcHIoKSwgcmVzdWx0LmZwcigpKTsKKyAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIo
KSwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBWYWx1
ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOgogICAgICAgICBjb21waWxlQWRkKG5vZGUpOwpAQCAt
Mjg4OSw3ICszMjgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWUuZnByKCk7CiAKICAgICAgICAg
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIG5vZGUt
PmNoaWxkMigpLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygp
LCBub2RlLT5jaGlsZDIoKSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJl
ZCwgdmFsdWVGUFIsIHZhbHVlRlBSKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9m
ZnNldE9mUHVibGljTGVuZ3RoKCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKQEAgLTMxMDUsNyArMzQ5
Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
CiAgICAgICAgIG9wMS51c2UoKTsKICAgICAgICAgCi0gICAgICAgIGlmICghKG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjTnVtYmVyIHwgU3BlY0Jvb2xlYW4p
KSkKKyAgICAgICAgaWYgKCEobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUg
JiB+KFNwZWNGdWxsTnVtYmVyIHwgU3BlY0Jvb2xlYW4pKSkKICAgICAgICAgICAgIG1faml0Lm1v
dmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Ok5vblplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsK
QEAgLTMyMDIsNyArMzU5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5k
KHRoaXMsIHVzZSk7CiAgICAgICAgICAgICAgICAgICAgIEZQUlJlZyBvcEZQUiA9IG9wZXJhbmQu
ZnByKCk7CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVk
LCBvcEZQUiwgb3BGUFIpKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUo
b3BGUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihkb3VibGUp
ICogb3BlcmFuZElkeCkpOwpAQCAtMzI2Nyw3ICszNjU4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEZQUlJlZyBvcEZQUiA9IG9w
ZXJhbmQuZnByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOwogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncygpLCB1c2UsIFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIG9wRlBSLCBvcEZQUikpOwog
ICAgICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShvcEZQUiwgc2NyYXRjaEdQUik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
cmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw2ICszMzUsOCBAQCBTaWxlbnRSZWdp
c3RlclNhdmVQbGFuIFNwZWN1bGF0aXZlSklUOjpzCiAgICAgICAgICAgICBzcGlsbEFjdGlvbiA9
IFN0b3JlMzJQYXlsb2FkOwogICAgICAgICBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRh
Rm9ybWF0Q2VsbCB8fCByZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RvcmFnZSkKICAgICAg
ICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmVQdHI7CisgICAgICAgIGVsc2UgaWYgKHJlZ2lzdGVy
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQ0OCB8fCByZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0
U3RyaWN0SW50NDgpCisgICAgICAgICAgICBzcGlsbEFjdGlvbiA9IFN0b3JlNjQ7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpT
KTsKICAgICAgICAgICAgIHNwaWxsQWN0aW9uID0gU3RvcmU2NDsKQEAgLTM4Niw2ICszODgsNDIg
QEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgIH0gZWxzZSBp
ZiAocmVnaXN0ZXJGb3JtYXQgPT0gRGF0YUZvcm1hdFN0b3JhZ2UpIHsKICAgICAgICAgQVNTRVJU
KGluZm8uZ3ByKCkgPT0gc291cmNlKTsKICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWRQdHI7Cisg
ICAgfSBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NDgpIHsKKyAgICAg
ICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0
SW50NDhDb25zdGFudDsKKyAgICAgICAgZWxzZSBpZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3Jt
YXQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRKUykKKyAgICAgICAgICAg
IGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2FkQ29udmVydFRvSW50NDg7CisgICAgICAgIGVsc2Ug
aWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50NDgpCisgICAgICAgICAgICBm
aWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdFN0cmljdEludDQ4KQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2
NFNoaWZ0TGVmdDE2OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0
YUZvcm1hdE5vbmUpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uIEFueXRoaW5nIHRoYXQg
cXVhbGlmaWVzIGFzIGFuIGludDMyIHdpbGwgbmV2ZXIKKyAgICAgICAgICAgIC8vIGJlIHR1cm5l
ZCBpbnRvIGEgY2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRvdWJs
ZQorICAgICAgICAgICAgLy8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGZp
bGxBY3Rpb24gPSBMb2FkNjQ7IC8vIE1ha2UgR0NDIGhhcHB5LgorICAgICAgICB9CisgICAgfSBl
bHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpIHsKKyAgICAg
ICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0
U3RyaWN0SW50NDhDb25zdGFudDsKKyAgICAgICAgZWxzZSBpZiAoaXNKU0ludDMyKGluZm8uc3Bp
bGxGb3JtYXQoKSkgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRKUykKKyAgICAg
ICAgICAgIGZpbGxBY3Rpb24gPSBMb2FkMzJQYXlsb2FkU2lnbkV4dGVuZDsKKyAgICAgICAgZWxz
ZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQ0OCkKKyAgICAgICAgICAg
IGZpbGxBY3Rpb24gPSBMb2FkNjRTaGlmdFJpZ2h0MTY7CisgICAgICAgIGVsc2UgaWYgKGluZm8u
c3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NDgpCisgICAgICAgICAgICBmaWxs
QWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0g
RGF0YUZvcm1hdE5vbmUpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uIEFueXRoaW5nIHRo
YXQgcXVhbGlmaWVzIGFzIGFuIGludDMyIHdpbGwgbmV2ZXIKKyAgICAgICAgICAgIC8vIGJlIHR1
cm5lZCBpbnRvIGEgY2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRv
dWJsZQorICAgICAgICAgICAgLy8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUp
LgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IGZpbGxBY3Rpb24gPSBMb2FkNjQ7IC8vIE1ha2UgR0NDIGhhcHB5LgorICAgICAgICB9CiAgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsK
ICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMzkzLDcgKzQzMSw2IEBAIFNpbGVudFJlZ2lzdGVyU2F2
ZVBsYW4gU3BlY3VsYXRpdmVKSVQ6OnMKICAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkp
IHsKICAgICAgICAgICAgIGlmICh2YWx1ZU9mSlNDb25zdGFudChub2RlKS5pc0NlbGwoKSkKICAg
ICAgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0VHJ1c3RlZEpTQ29uc3RhbnQ7Ci0gICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldEpTQ29uc3RhbnQ7CiAg
ICAgICAgIH0gZWxzZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikg
ewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMy
KTsKQEAgLTUxMiw2ICs1NDksMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChj
b25zdCBTaQogICAgIGNhc2UgU2V0SW50MzJDb25zdGFudDoKICAgICAgICAgbV9qaXQubW92ZShJ
bW0zMih2YWx1ZU9mSW50MzJDb25zdGFudChwbGFuLm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAg
ICAgICAgYnJlYWs7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIFNldEludDQ4Q29uc3Rh
bnQ6CisgICAgICAgIG1faml0Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29uc3RhbnQocGxhbi5ub2Rl
KCkpLmFzTWFjaGluZUludCgpIDw8IDE2KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU2V0U3RyaWN0SW50NDhDb25zdGFudDoKKyAgICAgICAgbV9qaXQubW92ZShJbW02
NCh2YWx1ZU9mSlNDb25zdGFudChwbGFuLm5vZGUoKSkuYXNNYWNoaW5lSW50KCkpLCBwbGFuLmdw
cigpKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICBjYXNl
IFNldEJvb2xlYW5Db25zdGFudDoKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIodmFs
dWVPZkJvb2xlYW5Db25zdGFudChwbGFuLm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAgICAgICAg
YnJlYWs7CkBAIC01MzMsNiArNTc4LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZp
bGwoY29uc3QgU2kKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9y
KHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBt
X2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcGxhbi5ncHIoKSk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTG9hZDMyUGF5bG9hZENvbnZlcnRUb0ludDQ4OgorICAg
ICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZp
cnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LnNpZ25FeHRlbmQz
MlRvUHRyKHBsYW4uZ3ByKCksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChU
cnVzdGVkSW1tMzIoMTYpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBM
b2FkMzJQYXlsb2FkU2lnbkV4dGVuZDoKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVy
OjpwYXlsb2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkp
OworICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihwbGFuLmdwcigpLCBwbGFuLmdwcigp
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMb2FkRG91YmxlQm94RG91YmxlOgogICAgICAg
ICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IocGxhbi5ub2RlKCktPnZpcnR1
YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIG1faml0LnN1YjY0KEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcGxhbi5ncHIoKSk7CkBAIC01NzQsNiArNjI4LDE0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICBjYXNlIExvYWQ2
NDoKICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9k
ZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIExvYWQ2NFNoaWZ0UmlnaHQxNjoKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3By
KCkpOworICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoMTYpLCBwbGFuLmdwcigp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkNjRTaGlmdExlZnQxNjoKKyAgICAgICAg
bV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFs
UmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVk
SW1tMzIoMTYpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNl
IExvYWREb3VibGU6CiAgICAgICAgIG1faml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5mcHIoKSk7CkBAIC0x
NDE2LDYgKzE0NzgsMTAgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJh
bgogCiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAgICAg
ICAgICAgY29tcGlsZVBlZXBIb2xlSW50MzJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29uZGl0
aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoTWFjaGluZUludFVzZSkpCisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ0
OEJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOworI2VuZGlmIC8vIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2Up
KQogICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKG5vZGUsIGJyYW5jaE5v
ZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQ29t
cGFyZUVxKSB7CkBAIC0xNTA3LDYgKzE1NzMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW5saW5lU3RhcnQoCiAgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAg
ICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKEludDMySW5KU1N0YWNrKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDQ4OgorICAgICAg
ICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoSW50NDhJbkpTU3RhY2spOworICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKICAgICAg
ICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKENlbGxJbkpTU3RhY2spOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTg3Myw3ICsxOTQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VgogICAgIEZQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmZw
cigpOwogICAgIAogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncygpLCBj
aGlsZDMsIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICBKU1ZhbHVlUmVncygpLCBjaGlsZDMsIFNw
ZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHZhbHVlUmVnLCB2
YWx1ZVJlZykpOwogICAgIApAQCAtMjE0OSw2ICsyMjE4LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0Lmdwcigp
LCBub2RlLCBvcDEuZm9ybWF0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgICAgICAK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICBT
cGVjdWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsKKyAgICAgICAgR1BS
UmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIob3AxR1BSLCByZXN1bHRH
UFIpOworICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIERhdGFGb3JtYXRJbnQz
Mik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAg
ICAKICAgICBjYXNlIE51bWJlclVzZToKICAgICBjYXNlIE5vdENlbGxVc2U6IHsKQEAgLTIxODcs
NyArMjI2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKIAog
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsK
ICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKGdwciksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwK
ICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjI0Myw3ICsyMzI0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogCiAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBOdW1iZXJVc2UpIHsKICAgICAgICAg
ICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiks
IG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIHRhZ0dQUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwpAQCAtMjM4OSwxNSArMjQ3MCwxNSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0RvdWJsCiAgICAgSklUQ29tcGls
ZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoNjQoCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KTsKICAgICAKLSAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1i
ZXIpKSB7CisgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51
bWJlcikpIHsKICAgICAgICAgaWYgKG5vZGUtPmZsYWdzKCkgJiBOb2RlRXhpdHNGb3J3YXJkKSB7
CiAgICAgICAgICAgICBmb3J3YXJkVHlwZUNoZWNrKAotICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjTnVtYmVyLAorICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAg
ICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9w
MUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSwKICAgICAgICAgICAgICAgICBW
YWx1ZVJlY292ZXJ5OjppbkdQUihvcDFHUFIsIERhdGFGb3JtYXRKUykpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgYmFja3dhcmRUeXBlQ2hlY2soCi0gICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVy
LAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTI0MjAsMTUgKzI1MDEsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUludDMyVG9Eb3VibAogICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJy
YW5jaDMyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CiAgICAgCi0gICAgaWYgKG5lZWRzVHlwZUNoZWNr
KG5vZGUtPmNoaWxkMSgpLCBTcGVjTnVtYmVyKSkgeworICAgIGlmIChuZWVkc1R5cGVDaGVjayhu
b2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIpKSB7CiAgICAgICAgIGlmIChub2RlLT5mbGFn
cygpICYgTm9kZUV4aXRzRm9yd2FyZCkgewogICAgICAgICAgICAgZm9yd2FyZFR5cGVDaGVjaygK
LSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBu
b2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhv
cDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIs
CiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSksCiAgICAg
ICAgICAgICAgICAgVmFsdWVSZWNvdmVyeTo6aW5QYWlyKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQ
UikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYmFja3dhcmRUeXBlQ2hlY2soCi0g
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9k
ZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3Ax
VGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAog
ICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1
YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTI1NDksNiArMjYzMCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWxPbkluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7
CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHJlc3VsdFJlZywgcmVzdWx0UmVnKTsK
KyAgICAgICAgc3RyaWN0SW50NDhSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZgorICAgIAogICAgIEZQUlRlbXBvcmFyeSBmcmVzdWx0KHRoaXMp
OwogICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHJlc3VsdFJlZywgZnJlc3VsdC5mcHIo
KSk7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCByZXN1bHRSZWcsIFRydXN0ZWRJbW0zMigw
KSk7CkBAIC0yNjAyLDYgKzI2OTEsMzEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
dEJ5VmFsRm9ySQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAg
ICAgICAgU3BlY3VsYXRlU3RyaWN0SW50NDhPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2Up
OworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgICAgICBtX2ppdC5tb3Zl
KHZhbHVlT3AuZ3ByKCksIHNjcmF0Y2hSZWcpOworICAgICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0
eXBlKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50U2l6ZSh0eXBlKSA9PSAxKTsK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpbkJvdW5kcyA9IG1faml0LmJy
YW5jaDY0KAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFs
LCBzY3JhdGNoUmVnLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTY0KDB4ZmYpKTsKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29CaWcgPSBtX2ppdC5icmFuY2g2NCgKKyAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuLCBzY3JhdGNoUmVn
LCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTY0KDB4ZmYpKTsKKyAgICAgICAgICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgc2NyYXRjaFJlZyk7CisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgY2xhbXBlZCA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAg
ICB0b29CaWcubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW0zMigyNTUpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgICAgICAgICBj
bGFtcGVkLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICBpbkJvdW5kcy5saW5rKCZtX2pp
dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YWx1ZS5hZG9wdChzY3JhdGNoKTsKKyAg
ICAgICAgICAgIHZhbHVlR1BSID0gc2NyYXRjaFJlZzsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIAogICAgICAgICBj
YXNlIE51bWJlclVzZTogewogICAgICAgICAgICAgaWYgKGlzQ2xhbXBlZCh0eXBlKSkgewogICAg
ICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50U2l6ZSh0eXBlKSA9PSAxKTsKQEAgLTI4NzAsNyAr
Mjk4NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICAg
ICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKyAgICAgICAgCiAgICAgICAgIGlmIChp
c051bWJlckNvbnN0YW50KG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgIFNw
ZWN1bGF0ZUludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgaW50MzJfdCBpbW0yID0gdmFsdWVPZkludDMyQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCkubm9k
ZSgpKTsKQEAgLTI5MTUsNiArMzAyOSwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QWRkKE5vZGUqIG5vCiAgICAgICAgIGludDMyUmVzdWx0KGdwclJlc3VsdCwgbm9kZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2Fz
ZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxvdyBj
aGVjaz8gSWYgd2UgY2FuIHByb3ZlIHRoYXQgbmVpdGhlciBpbnB1dCBjYW4gYmUKKyAgICAgICAg
Ly8gSW50NDggdGhlbiB0aGUgb3ZlcmZsb3cgY2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5Lgor
ICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUo
U3BlY0ludDQ4KQorICAgICAgICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIo
KSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KSkgeworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hl
dmVySW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBv
cDEpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxKTsK
KyAgICAgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICAgICAgbV9qaXQuYWRkNjQob3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAg
aW50NDhSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlLCBvcDEuZm9ybWF0KCkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9w
ZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlSW50NDhP
cGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcywgUmV1c2UsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDEuZ3By
KCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAg
ICBJbnQ0OE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJh
bmNoQWRkNjQoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIo
KSkpOworICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgCiAgICAgY2FzZSBO
dW1iZXJVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtMzA2MCw2ICszMjAxLDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBcml0aFN1YihOb2QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgLy8g
V2lsbCB3ZSBuZWVkIGFuIG92ZXJmbG93IGNoZWNrPyBJZiB3ZSBjYW4gcHJvdmUgdGhhdCBuZWl0
aGVyIGlucHV0IGNhbiBiZQorICAgICAgICAvLyBJbnQ0OCB0aGVuIHRoZSBvdmVyZmxvdyBjaGVj
ayB3aWxsIG5vdCBiZSBuZWNlc3NhcnkuCisgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAgICAgICAmJiAhbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpKSB7Cisg
ICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDQ4T3BlcmFuZCBv
cDIodGhpcywgbm9kZS0+Y2hpbGQyKCksIG9wMSk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMsIFJldXNlLCBvcDEpOworICAgICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3By
KCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBtX2ppdC5zdWI2NChvcDIuZ3ByKCksIHJl
c3VsdC5ncHIoKSk7CisgICAgICAgICAgICBpbnQ0OFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUs
IG9wMS5mb3JtYXQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIFNwZWN1bGF0ZUludDQ4T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIpOwor
ICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIEludDQ4T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCks
IDAsCisgICAgICAgICAgICBtX2ppdC5icmFuY2hTdWI2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZs
b3csIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKSk7CisgICAgICAgIGludDQ4UmVzdWx0KHJlc3Vs
dC5ncHIoKSwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKKwogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlRG91
YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzA4OCw2ICszMjU2LDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAogCiAgICAgICAgIG1f
aml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogCisgICAgICAgIC8vIE5vdGU6IHRo
ZXJlIGlzIG5vIG5vdGlvbiBvZiBiZWluZyBub3QgdXNlZCBhcyBhIG51bWJlciwgYnV0IHNvbWVv
bmUKKyAgICAgICAgLy8gY2FyaW5nIGFib3V0IG5lZ2F0aXZlIHplcm8uCisgICAgICAgIAogICAg
ICAgICBpZiAoYnl0ZWNvZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS0+YXJpdGhOb2RlRmxhZ3Mo
KSkpCiAgICAgICAgICAgICBtX2ppdC5uZWczMihyZXN1bHQuZ3ByKCkpOwogICAgICAgICBlbHNl
IHsKQEAgLTMwOTksNiArMzI3MCw0MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhOZWdhdGUoCiAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgTWFjaGlu
ZUludFVzZTogeworICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
Y291bGRCZVR5cGUoU3BlY0ludDQ4KSkgeworICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVy
SW50NDhPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5n
cHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAg
ICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIG1faml0
Lm5lZzY0KHJlc3VsdEdQUik7CisgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVn
YXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVl
UmVncygpLCAwLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Olplcm8sIHJlc3VsdEdQUikpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aW50NDhSZXN1bHQocmVzdWx0R1BSLCBub2RlLCBvcDEuZm9ybWF0KCkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVJbnQ0OE9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgbV9qaXQubW92ZShvcDFHUFIs
IHJlc3VsdEdQUik7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJbnQ0
OE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoTmVn
NjQoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIpKTsKKyAgICAgICAgaWYgKCFi
eXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSkgewor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBOZWdhdGl2ZVpl
cm8sIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0
KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsKKyAgICAgICAgfQorICAgICAgICBp
bnQ0OFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAg
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
QEAgLTMxNjQsNiArMzM3MSw2MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhN
dWwoTm9kCiAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkgICAKKyAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6IHsKKyAgICAgICAgLy8gVGhpcyBpcyBzdXBlciBjbGV2ZXIuIFdlIHdhbnQg
dG8gZG8gYW4gaW50NDggbXVsdGlwbGljYXRpb24gYW5kIGNoZWNrIHRoZQorICAgICAgICAvLyBp
bnQ0OCBvdmVyZmxvdyBiaXQuIFRoZXJlIGlzIG5vIGRpcmVjdCBoYXJkd2FyZSBzdXBwb3J0IGZv
ciB0aGlzLCBidXQgd2UgZG8KKyAgICAgICAgLy8gaGF2ZSB0aGUgYWJpbGl0eSB0byBkbyBhbiBp
bnQ2NCBtdWx0aXBsaWNhdGlvbiBhbmQgY2hlY2sgdGhlIGludDY0IG92ZXJmbG93CisgICAgICAg
IC8vIGJpdC4gV2UgbGV2ZXJhZ2UgdGhhdC4gQ29uc2lkZXIgdGhhdCBhLCBiIGFyZSBpbnQ0OCBu
dW1iZXJzIGluc2lkZSBpbnQ2NAorICAgICAgICAvLyByZWdpc3RlcnMsIHdpdGggdGhlIGhpZ2gg
MTYgYml0cyBiZWluZyBzaWduLWV4dGVuZGVkLiBXZSBjYW4gZG86CisgICAgICAgIC8vCisgICAg
ICAgIC8vICAgICAoYSAqIChiIDw8IDE2KSkKKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhpcyB3
aWxsIGdpdmUgdXMgYSBsZWZ0LXNoaWZ0ZWQgaW50NDggKHZhbHVlIGlzIGluIGhpZ2ggNDggYml0
cywgbG93IDE2CisgICAgICAgIC8vIGJpdHMgYXJlIHplcm8pIHBsdXMgdGhlIGludDQ4IG92ZXJm
bG93IGJpdC4gSS5lLiB3aGV0aGVyIHRoaXMgNjQtYml0CisgICAgICAgIC8vIG11bHRpcGxpY2F0
aW9uIG92ZXJmbG93cyBpcyBpZGVudGljYWwgdG8gd2hldGhlciB0aGUgJ2EgKiBiJyA0OC1iaXQK
KyAgICAgICAgLy8gbXVsdGlwbGljYXRpb24gb3ZlcmZsb3dzLgorICAgICAgICAvLworICAgICAg
ICAvLyBJbiBvdXIgbm9tZW5jbGF0dXJlLCB0aGlzIGlzOgorICAgICAgICAvLworICAgICAgICAv
LyAgICAgc3RyaWN0SW50NDgoYSkgKiBpbnQ0OChiKSA9PiBpbnQ0OAorICAgICAgICAvLworICAg
ICAgICAvLyBUaGF0IGlzICJzdHJpY3RJbnQ0OCIgbWVhbnMgdW5zaGlmdGVkIGFuZCAiaW50NDgi
IG1lYW5zIGxlZnQtc2hpZnRlZCBieSAxNgorICAgICAgICAvLyBiaXRzLgorICAgICAgICAvLwor
ICAgICAgICAvLyBXZSBkb24ndCBjYXJlIHdoaWNoIG9mIG9wMSBvciBvcDIgc2VydmVzIGFzIHRo
ZSBsZWZ0LXNoaWZ0ZWQgb3BlcmFuZCwgc28KKyAgICAgICAgLy8gd2UganVzdCBkbyB3aGF0ZXZl
ciBpcyBtb3JlIGNvbnZlbmllbnQgZm9yIG9wMSBhbmQgaGF2ZSBvcDIgZG8gdGhlCisgICAgICAg
IC8vIG9wcG9zaXRlLiBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBkbyBhdCBtb3N0IG9uZSBzaGlmdC4K
KworICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NDhPcGVyYW5kIG9wMih0
aGlzLCBub2RlLT5jaGlsZDIoKSwgT3Bwb3NpdGVTaGlmdCwgb3AxKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBv
cDEuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBvcDJHUFIgPSBvcDIuZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5t
b3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAg
ICAgICAgIEludDQ4T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBtX2pp
dC5icmFuY2hNdWw2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMkdQUiwgcmVzdWx0R1BS
KSk7CisgICAgICAgIAorICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJv
KG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCByZXN1bHROb25aZXJvID0gbV9qaXQuYnJhbmNoVGVzdDY0KAorICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCByZXN1bHRHUFIpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCks
IDAsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Okxlc3NU
aGFuLCBvcDFHUFIsIFRydXN0ZWRJbW02NCgwKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjaygKKyAgICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCksIDAsCisg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBv
cDJHUFIsIFRydXN0ZWRJbW02NCgwKSkpOworICAgICAgICAgICAgcmVzdWx0Tm9uWmVyby5saW5r
KCZtX2ppdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludDQ4UmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFM
VUU2NCkKICAgICAgICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgU3BlY3VsYXRl
RG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMzU4Nyw3ICszODUw
LDE0IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSogbm9kZSwKICAgICAgICAg
Y29tcGlsZUludDMyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotCisgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAgICAgIGNvbXBpbGVJbnQ0OENvbXBh
cmUobm9kZSwgY29uZGl0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRp
ZiAvLyBVU0UoSlNWQUxVRTY0KQorICAgIAogICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
TnVtYmVyVXNlKSkgewogICAgICAgICBjb21waWxlRG91YmxlQ29tcGFyZShub2RlLCBkb3VibGVD
b25kaXRpb24pOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzM3LDYgKzQwMDcsMjMgQEAg
Ym9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZAogICAgICAgICBjb21waWxl
SW50MzJDb21wYXJlKG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CisgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkgICAKKyAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6IHsKKyAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0
ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBV
SU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0KGJy
YW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQ0OEJyYW5j
aChub2RlLCBicmFuY2hOb2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpOworICAgICAgICAgICAg
dXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5jaEluZGV4SW5CbG9jazsKKyAgICAgICAg
ICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZUludDQ4Q29tcGFyZShub2RlLCBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmIC8vIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgIHVu
c2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CkBAIC00
NDkyLDkgKzQ3NzksMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlSW50MzIoRWRn
ZQogICAgIChTcGVjdWxhdGVJbnQzMk9wZXJhbmQodGhpcywgZWRnZSkpLmdwcigpOwogfQogCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVNYWNoaW5lSW50KEVkZ2UgZWRnZSkKK3sKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY01hY2hp
bmVJbnQpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgKFNwZWN1bGF0ZVdoaWNoZXZlcklu
dDQ4T3BlcmFuZCh0aGlzLCBlZGdlKSkuZ3ByKCk7CisjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQor
ICAgIFVOVVNFRF9QQVJBTShlZGdlKTsKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsK
KyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVOdW1iZXIoRWRnZSBlZGdlKQogewotICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwg
U3BlY051bWJlcikpCisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbE51bWJl
cikpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAoU3BlY3VsYXRlRG91YmxlT3BlcmFuZCh0
aGlzLCBlZGdlKSkuZnByKCk7CkBAIC00NTAyLDEzICs0ODAyLDEzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZU51bWJlcihFZGcKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlUmVhbE51bWJlcihFZGdlIGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdl
LCBTcGVjUmVhbE51bWJlcikpCisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVs
bFJlYWxOdW1iZXIpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwogICAgIEZQUlJlZyBmcHIgPSBvcGVyYW5kLmZw
cigpOwogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBT
cGVjUmVhbE51bWJlciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0Z1bGxSZWFs
TnVtYmVyLAogICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoCiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgZnByLCBmcHIpKTsKIH0KQEAgLTQ3
NzAsNyArNTA3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWQK
ICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBLbm93bk51bWJlclVzZToKLSAgICAgICAgQVNTRVJUKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjTnVtYmVyKSk7CisgICAgICAgIEFTU0VSVCghbmVlZHNUeXBl
Q2hlY2soZWRnZSwgU3BlY0Z1bGxOdW1iZXIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBL
bm93bkNlbGxVc2U6CiAgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0Nl
bGwpKTsKQEAgLTQ3ODEsNiArNTA4MSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZShOb2RlKiwgRWQKICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBzcGVjdWxhdGVJbnQzMihl
ZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBz
cGVjdWxhdGVNYWNoaW5lSW50KGVkZ2UpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFJlYWxO
dW1iZXJVc2U6CiAgICAgICAgIHNwZWN1bGF0ZVJlYWxOdW1iZXIoZWRnZSk7CiAgICAgICAgIGJy
ZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOSArMTU5LDcgQEAgcHVibGlj
OgogICAgIC8vIGFuZCBpdHMgbWFjaGluZSByZWdpc3RlcnMgbWF5IGJlIHJldXNlZC4KICAgICBi
b29sIGNhblJldXNlKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
dmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVy
YXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1
YWxSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBpbmZvLmNhblJldXNlKCk7CisgICAgICAgIHJl
dHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5jYW5SZXVzZSgpOwogICAgIH0KICAgICBib29sIGNh
blJldXNlKEVkZ2Ugbm9kZVVzZSkKICAgICB7CkBAIC0yMzcsMTUgKzIzNSwxMSBAQCBwdWJsaWM6
CiAgICAgLy8gYXZvaWQgc3BpbGxpbmcgdmFsdWVzIHdlIHdpbGwgbmVlZCBpbW1lZGlhdGVseSku
CiAgICAgYm9vbCBpc0ZpbGxlZChOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAg
ICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rl
cih2aXJ0dWFsUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gaW5mby5yZWdpc3RlckZvcm1hdCgp
ICE9IERhdGFGb3JtYXROb25lOworICAgICAgICByZXR1cm4gZ2VuZXJhdGlvbkluZm8obm9kZSku
cmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0Tm9uZTsKICAgICB9CiAgICAgYm9vbCBpc0Zp
bGxlZERvdWJsZShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZp
cnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0
aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFs
UmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFG
b3JtYXREb3VibGU7CisgICAgICAgIHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5yZWdpc3Rl
ckZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGU7CiAgICAgfQogCiAgICAgLy8gQ2FsbGVkIG9u
IGFuIG9wZXJhbmQgb25jZSBpdCBoYXMgYmVlbiBjb25zdW1lZCBieSBhIHBhcmVudCBub2RlLgpA
QCAtMjUzLDggKzI0Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghbm9kZS0+aGFz
UmVzdWx0KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJh
dGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVh
bFJlZ2lzdGVyKTsKKyAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5m
byhub2RlKTsKIAogICAgICAgICAvLyB1c2UoKSByZXR1cm5zIHRydWUgd2hlbiB0aGUgdmFsdWUg
YmVjb21lcyBkZWFkLCBhbmQgYW55CiAgICAgICAgIC8vIGFzc29jaWF0ZWQgcmVzb3VyY2VzIG1h
eSBiZSBmcmVlZC4KQEAgLTMzMyw2ICszMjYsNyBAQCBwdWJsaWM6CiAgICAgLy8gbWFjaGluZSBy
ZWdpc3RlcnMsIGltcGxpY2l0bHkgZ2VuZXJhdGluZyBzcGVjdWxhdGlvbiBjaGVja3MgYXMgbmVl
ZGVkLgogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50MzIoRWRnZSwgRGF0YUZvcm1hdCYgcmV0
dXJuRm9ybWF0KTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludDMyU3RyaWN0KEVkZ2UpOwor
ICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50NDgoRWRnZSwgRGF0YUZvcm1hdCBkZXNpcmVkRm9y
bWF0KTsKICAgICBGUFJSZWcgZmlsbFNwZWN1bGF0ZURvdWJsZShFZGdlKTsKICAgICBHUFJSZWcg
ZmlsbFNwZWN1bGF0ZUNlbGwoRWRnZSk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVCb29sZWFu
KEVkZ2UpOwpAQCAtNDY4LDYgKzQ2Miw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVy
biBib3hEb3VibGUoZnByLCBhbGxvY2F0ZSgpKTsKICAgICB9CisgICAgCisgICAgdm9pZCBib3hJ
bnQ0OChHUFJSZWcgc291cmNlR1BSLCBHUFJSZWcgdGFyZ2V0R1BSLCBEYXRhRm9ybWF0KTsKICNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdm9pZCBib3hEb3VibGUoRlBSUmVnIGZwciwgR1BS
UmVnIHRhZ0dQUiwgR1BSUmVnIHBheWxvYWRHUFIpCiAgICAgewpAQCAtNTU5LDExICs1NTUsMTEg
QEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNLbm93bkludGVn
ZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYg
flNwZWNJbnQzMik7IH0KLSAgICBib29sIGlzS25vd25DZWxsKE5vZGUqIG5vZGUpIHsgcmV0dXJu
ICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIH5TcGVjQ2VsbCk7IH0KKyAgICBib29s
IGlzS25vd25JbnRlZ2VyKE5vZGUqIG5vZGUpIHsgcmV0dXJuIG1fc3RhdGUuZm9yTm9kZShub2Rl
KS5pc1R5cGUoU3BlY0ludDMyKTsgfQorICAgIGJvb2wgaXNLbm93bkNlbGwoTm9kZSogbm9kZSkg
eyByZXR1cm4gbV9zdGF0ZS5mb3JOb2RlKG5vZGUpLmlzVHlwZShTcGVjQ2VsbCk7IH0KICAgICAK
ICAgICBib29sIGlzS25vd25Ob3RJbnRlZ2VyKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0
ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAmIFNwZWNJbnQzMik7IH0KLSAgICBib29sIGlzS25vd25O
b3ROdW1iZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90
eXBlICYgU3BlY051bWJlcik7IH0KKyAgICBib29sIGlzS25vd25Ob3ROdW1iZXIoTm9kZSogbm9k
ZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0Z1bGxOdW1i
ZXIpOyB9CiAgICAgYm9vbCBpc0tub3duTm90Q2VsbChOb2RlKiBub2RlKSB7IHJldHVybiAhKG1f
c3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBTcGVjQ2VsbCk7IH0KICAgICAKICAgICAvLyBD
aGVja3MvYWNjZXNzb3JzIGZvciBjb25zdGFudCB2YWx1ZXMuCkBAIC04MTYsNiArODEyLDI1IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIGludDMyUmVzdWx0KHJlZywgbm9kZSwgRGF0YUZvcm1h
dEludDMyLCBtb2RlKTsKICAgICB9CisgICAgdm9pZCBpbnQ0OFJlc3VsdChHUFJSZWcgcmVnLCBO
b2RlKiBub2RlLCBEYXRhRm9ybWF0IGZvcm1hdCwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxs
VXNlQ2hpbGRyZW4pCisgICAgeworICAgICAgICBpZiAobW9kZSA9PSBDYWxsVXNlQ2hpbGRyZW4p
CisgICAgICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgIEdl
bmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3Rlcik7CisKKyAgICAgICAgbV9ncHJzLnJldGFpbihyZWcsIHZpcnR1YWxSZWdp
c3RlciwgU3BpbGxPcmRlckpTKTsKKyAgICAgICAgaW5mby5pbml0SW50NDgobm9kZSwgbm9kZS0+
cmVmQ291bnQoKSwgcmVnLCBmb3JtYXQpOworICAgIH0KKyAgICB2b2lkIGludDQ4UmVzdWx0KEdQ
UlJlZyByZWcsIE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxk
cmVuKQorICAgIHsKKyAgICAgICAgaW50NDhSZXN1bHQocmVnLCBub2RlLCBEYXRhRm9ybWF0SW50
NDgsIG1vZGUpOworICAgIH0KKyAgICB2b2lkIHN0cmljdEludDQ4UmVzdWx0KEdQUlJlZyByZWcs
IE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVuTW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQorICAg
IHsKKyAgICAgICAgaW50NDhSZXN1bHQocmVnLCBub2RlLCBEYXRhRm9ybWF0U3RyaWN0SW50NDgs
IG1vZGUpOworICAgIH0KICAgICB2b2lkIG5vUmVzdWx0KE5vZGUqIG5vZGUsIFVzZUNoaWxkcmVu
TW9kZSBtb2RlID0gQ2FsbFVzZUNoaWxkcmVuKQogICAgIHsKICAgICAgICAgaWYgKG1vZGUgPT0g
VXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KQpAQCAtOTAwLDcgKzkxNSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGluaXRDb25zdGFudEluZm8oTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVChpc0ludDMyQ29uc3RhbnQobm9kZSkgfHwgaXNOdW1iZXJDb25zdGFudChub2RlKSB8fCBp
c0pTQ29uc3RhbnQobm9kZSkpOwotICAgICAgICBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVn
aXN0ZXIobm9kZS0+dmlydHVhbFJlZ2lzdGVyKCkpLmluaXRDb25zdGFudChub2RlLCBub2RlLT5y
ZWZDb3VudCgpKTsKKyAgICAgICAgZ2VuZXJhdGlvbkluZm8obm9kZSkuaW5pdENvbnN0YW50KG5v
ZGUsIG5vZGUtPnJlZkNvdW50KCkpOwogICAgIH0KICAgICAKICAgICAvLyBUaGVzZSBtZXRob2Rz
IGFkZCBjYWxscyB0byBDKysgaGVscGVyIGZ1bmN0aW9ucy4KQEAgLTE4ODksMTUgKzE5MDQsMjIg
QEAgcHVibGljOgogICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KG5vZGUpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rl
ciA9IG5vZGUtPnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5m
byA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwot
ICAgICAgICAKLSAgICAgICAgcmV0dXJuIGluZm8uaXNKU0ludDMyKCk7CisgICAgICAgIHJldHVy
biBnZW5lcmF0aW9uSW5mbyhub2RlKS5pc0pTSW50MzIoKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBiZXR0ZXJVc2VTdHJpY3RJbnQ0OChOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICFnZW5lcmF0aW9uSW5mbyhub2RlKS5pc0ludDQ4KCk7CisgICAgfQorICAgIGJvb2wgYmV0dGVy
VXNlU3RyaWN0SW50NDgoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJldHRlclVz
ZVN0cmljdEludDQ4KGVkZ2Uubm9kZSgpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBjb21wYXJl
KE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiwgTWFjcm9Bc3NlbWJs
ZXI6OkRvdWJsZUNvbmRpdGlvbiwgU19ERkdPcGVyYXRpb25fRUpKKTsKICAgICBib29sIGNvbXBp
bGVQZWVwSG9sZUJyYW5jaChOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24sIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24sIFNfREZHT3BlcmF0aW9uX0VKSik7
CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnQzMkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNo
Tm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOworICAgIHZvaWQgY29tcGls
ZVBlZXBIb2xlSW50NDhCcmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVy
OjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUJvb2xlYW5C
cmFuY2goTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29u
ZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZURvdWJsZUJyYW5jaChOb2RlKiwgTm9k
ZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OkRvdWJsZUNvbmRpdGlvbik7CiAgICAgdm9pZCBj
b21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CkBA
IC0xOTQ1LDYgKzE5NjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJh
eShOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlSW50MzJDb21wYXJlKE5vZGUqLCBNYWNy
b0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CisgICAgdm9pZCBjb21waWxlSW50NDhD
b21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAg
dm9pZCBjb21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlv
bmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVEb3VibGVDb21wYXJlKE5vZGUqLCBNYWNy
b0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICAKQEAgLTIxMTgsNiArMjE0MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGZvcndhcmRUeXBlQ2hlY2soSlNWYWx1ZVNvdXJjZSwgRWRnZSwg
U3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBq
dW1wVG9GYWlsLCBjb25zdCBWYWx1ZVJlY292ZXJ5Jik7CiAKICAgICB2b2lkIHNwZWN1bGF0ZUlu
dDMyKEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlTWFjaGluZUludChFZGdlKTsKICAgICB2b2lk
IHNwZWN1bGF0ZU51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRn
ZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVCb29sZWFuKEVkZ2UpOwpAQCAtMjE5NSw2ICsyMjE5LDE2
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2dlbmVyYXRpb25JbmZvW29wZXJh
bmRUb0xvY2FsKHZpcnR1YWxSZWdpc3RlcildOwogICAgIH0KKyAgICAKKyAgICBHZW5lcmF0aW9u
SW5mbyYgZ2VuZXJhdGlvbkluZm8oTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBn
ZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIobm9kZS0+dmlydHVhbFJlZ2lzdGVyKCkp
OworICAgIH0KKyAgICAKKyAgICBHZW5lcmF0aW9uSW5mbyYgZ2VuZXJhdGlvbkluZm8oRWRnZSBl
ZGdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKGVkZ2Uubm9kZSgpKTsK
KyAgICB9CiAKICAgICAvLyBUaGUgSklULCB3aGlsZSBhbHNvIHByb3ZpZGVzIE1hY3JvQXNzZW1i
bGVyIGZ1bmN0aW9uYWxpdHkuCiAgICAgSklUQ29tcGlsZXImIG1faml0OwpAQCAtMjY3Niw2ICsy
NzEwLDE3OSBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAKKy8v
IEdpdmVzIHlvdSBhIGNhbm9uaWNhbCBJbnQ0OCAoaS5lLiBpdCdzIGxlZnQtc2hpZnRlZCBieSAx
NiwgbG93IGJpdHMgemVybykuCitjbGFzcyBTcGVjdWxhdGVJbnQ0OE9wZXJhbmQgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZUludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0
LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJh
bmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVk
Z2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24g
fHwgZWRnZS51c2VLaW5kKCkgPT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlz
RmlsbGVkKG5vZGUoKSkpCisgICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgflNw
ZWN1bGF0ZUludDQ4T3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFs
aWQgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFs
aWQpOworICAgIH0KKyAgICAKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fZWRnZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVn
IGdwcigpCisgICAgeworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJl
ZykKKyAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVJbnQ0
OChlZGdlKCksIERhdGFGb3JtYXRJbnQ0OCk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxp
ZDsKKyAgICB9CisgICAgCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVz
ZShub2RlKCkpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1f
aml0OworICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisK
Ky8vIEdpdmVzIHlvdSBhIHN0cmljdCBJbnQ0OCAoaS5lLiB0aGUgcGF5bG9hZCBpcyBpbiB0aGUg
bG93IDQ4IGJpdHMsIGhpZ2ggMTYgYml0cyBhcmUgc2lnbi1leHRlbmRlZCkuCitjbGFzcyBTcGVj
dWxhdGVTdHJpY3RJbnQ0OE9wZXJhbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0
ZVN0cmljdEludDQ4T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJh
bmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAg
ICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9n
cHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
bW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkg
PT0gTWFjaGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisg
ICAgICAgICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgflNwZWN1bGF0ZVN0cmljdEludDQ4
T3BlcmFuZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52YWxp
ZEdQUlJlZyk7CisgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOworICAgIH0K
KyAgICAKKyAgICBFZGdlIGVkZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZWRn
ZTsKKyAgICB9CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gZWRnZSgpLm5vZGUoKTsKKyAgICB9CisgICAgCisgICAgR1BSUmVnIGdwcigpCisgICAg
eworICAgICAgICBpZiAobV9ncHJPckludmFsaWQgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAg
ICAgIG1fZ3ByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVJbnQ0OChlZGdlKCksIERh
dGFGb3JtYXRTdHJpY3RJbnQ0OCk7CisgICAgICAgIHJldHVybiBtX2dwck9ySW52YWxpZDsKKyAg
ICB9CisgICAgCisgICAgdm9pZCB1c2UoKQorICAgIHsKKyAgICAgICAgbV9qaXQtPnVzZShub2Rl
KCkpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQqIG1faml0Owor
ICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKK307CisKK2VudW0g
T3Bwb3NpdGVTaGlmdFRhZyB7IE9wcG9zaXRlU2hpZnQgfTsKKworY2xhc3MgU3BlY3VsYXRlV2hp
Y2hldmVySW50NDhPcGVyYW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVjdWxhdGVXaGlj
aGV2ZXJJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgRWRnZSBlZGdlLCBPcGVyYW5k
U3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAg
ICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAgICAgICAsIG1fZ3By
T3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgICAgICwgbV9zdHJpY3Qoaml0LT5iZXR0ZXJV
c2VTdHJpY3RJbnQ0OChlZGdlKSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwg
bW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFj
aGluZUludFVzZSk7CisgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG5vZGUoKSkpCisgICAgICAg
ICAgICBncHIoKTsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgU3BlY3VsYXRlV2hpY2hldmVy
SW50NDhPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgY29uc3QgU3BlY3Vs
YXRlV2hpY2hldmVySW50NDhPcGVyYW5kJiBvdGhlciwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBt
b2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkK
KyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlk
R1BSUmVnKQorICAgICAgICAsIG1fc3RyaWN0KG90aGVyLm1fc3RyaWN0KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8
fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNG
aWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICBleHBs
aWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0OE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwg
RWRnZSBlZGdlLCBPcHBvc2l0ZVNoaWZ0VGFnLCBjb25zdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ0
OE9wZXJhbmQmIG90aGVyLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNP
cGVyYW5kU3BlY3VsYXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRn
ZShlZGdlKQorICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgICAg
ICwgbV9zdHJpY3QoIW90aGVyLm1fc3RyaWN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQo
KSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkK
KyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAgICAKKyAgICB+U3BlY3VsYXRlV2hpY2hldmVy
SW50NDhPcGVyYW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dwck9ySW52YWxpZCAhPSBJ
bnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayhtX2dwck9ySW52YWxpZCk7Cisg
ICAgfQorICAgIAorICAgIEVkZ2UgZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9lZGdlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcgZ3ByKCkK
KyAgICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVnKSB7Cisg
ICAgICAgICAgICBtX2dwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlSW50NDgoCisg
ICAgICAgICAgICAgICAgZWRnZSgpLCBtX3N0cmljdCA/IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA6
IERhdGFGb3JtYXRJbnQ0OCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZh
bGlkOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVzZSgpCisgICAgeworICAgICAgICBtX2ppdC0+
dXNlKG5vZGUoKSk7CisgICAgfQorICAgIAorICAgIERhdGFGb3JtYXQgZm9ybWF0KCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3N0cmljdCA/IERhdGFGb3JtYXRTdHJpY3RJbnQ0OCA6
IERhdGFGb3JtYXRJbnQ0ODsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRpdmVKSVQq
IG1faml0OworICAgIEVkZ2UgbV9lZGdlOworICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKKyAg
ICBib29sIG1fc3RyaWN0OworfTsKKwogY2xhc3MgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgU3BlY3VsYXRlRG91YmxlT3BlcmFuZChTcGVjdWxhdGl2ZUpJ
VCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRp
Y09wZXJhbmRTcGVjdWxhdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdVc2VLaW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOSBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlCiAgICAgY2FzZSBLbm93bkludDMyVXNl
OgogICAgICAgICBvdXQucHJpbnQoIktub3duSW50MzIiKTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBvdXQucHJpbnQoIk1hY2hpbmVJbnQiKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgogICAgICAgICBvdXQucHJpbnQo
IlJlYWxOdW1iZXIiKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgZW51
bSBVc2VLaW5kIHsKICAgICBVbnR5cGVkVXNlLAogICAgIEludDMyVXNlLAogICAgIEtub3duSW50
MzJVc2UsCisgICAgTWFjaGluZUludFVzZSwKICAgICBSZWFsTnVtYmVyVXNlLAogICAgIE51bWJl
clVzZSwKICAgICBLbm93bk51bWJlclVzZSwKQEAgLTY2LDExICs2NywxMyBAQCBBTFdBWVNfSU5M
SU5FIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGCiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBj
YXNlIEtub3duSW50MzJVc2U6CiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CisgICAgY2FzZSBN
YWNoaW5lSW50VXNlOgorICAgICAgICByZXR1cm4gU3BlY01hY2hpbmVJbnQ7CiAgICAgY2FzZSBS
ZWFsTnVtYmVyVXNlOgotICAgICAgICByZXR1cm4gU3BlY1JlYWxOdW1iZXI7CisgICAgICAgIHJl
dHVybiBTcGVjRnVsbFJlYWxOdW1iZXI7CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgY2FzZSBL
bm93bk51bWJlclVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNOdW1iZXI7CisgICAgICAgIHJldHVy
biBTcGVjRnVsbE51bWJlcjsKICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIHJldHVybiBT
cGVjQm9vbGVhbjsKICAgICBjYXNlIENlbGxVc2U6CkBAIC0xMjUsNiArMTI4LDcgQEAgQUxXQVlT
X0lOTElORSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQgawogICAgIHN3aXRjaCAoa2luZCkgewog
ICAgIGNhc2UgSW50MzJVc2U6CiAgICAgY2FzZSBLbm93bkludDMyVXNlOgorICAgIGNhc2UgTWFj
aGluZUludFVzZToKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgY2FzZSBOdW1iZXJVc2U6
CiAgICAgY2FzZSBLbm93bk51bWJlclVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsdWVTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsdWVTb3VyY2UuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NiArNDUsOSBAQCB2b2lkIFZhbHVlU291cmNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAgICAg
Y2FzZSBJbnQzMkluSlNTdGFjazoKICAgICAgICAgb3V0LnByaW50KCJJbnQzMiIpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEludDQ4SW5KU1N0YWNrOgorICAgICAgICBvdXQucHJpbnQoIklu
dDQ4Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2VsbEluSlNTdGFjazoKICAgICAgICAg
b3V0LnByaW50KCJDZWxsIik7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw3IEBAIGVudW0gVmFsdWVTb3VyY2VLaW5kIHsKICAgICBTb3VyY2VOb3RTZXQsCiAg
ICAgVmFsdWVJbkpTU3RhY2ssCiAgICAgSW50MzJJbkpTU3RhY2ssCisgICAgSW50NDhJbkpTU3Rh
Y2ssCiAgICAgQ2VsbEluSlNTdGFjaywKICAgICBCb29sZWFuSW5KU1N0YWNrLAogICAgIERvdWJs
ZUluSlNTdGFjaywKQEAgLTU2LDYgKzU3LDggQEAgc3RhdGljIGlubGluZSBWYWx1ZVNvdXJjZUtp
bmQgZGF0YUZvcm1hdAogICAgIHN3aXRjaCAoZGF0YUZvcm1hdCkgewogICAgIGNhc2UgRGF0YUZv
cm1hdEludDMyOgogICAgICAgICByZXR1cm4gSW50MzJJbkpTU3RhY2s7CisgICAgY2FzZSBEYXRh
Rm9ybWF0SW50NDg6CisgICAgICAgIHJldHVybiBJbnQ0OEluSlNTdGFjazsKICAgICBjYXNlIERh
dGFGb3JtYXREb3VibGU6CiAgICAgICAgIHJldHVybiBEb3VibGVJbkpTU3RhY2s7CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0Qm9vbGVhbjoKQEAgLTc5LDYgKzgyLDggQEAgc3RhdGljIGlubGluZSBEYXRh
Rm9ybWF0IHZhbHVlU291cmNlS2luZAogICAgICAgICByZXR1cm4gRGF0YUZvcm1hdEpTOwogICAg
IGNhc2UgSW50MzJJbkpTU3RhY2s6CiAgICAgICAgIHJldHVybiBEYXRhRm9ybWF0SW50MzI7Cisg
ICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAgcmV0dXJuIERhdGFGb3JtYXRJbnQ0ODsK
ICAgICBjYXNlIENlbGxJbkpTU3RhY2s6CiAgICAgICAgIHJldHVybiBEYXRhRm9ybWF0Q2VsbDsK
ICAgICBjYXNlIEJvb2xlYW5JbkpTU3RhY2s6CkBAIC0xMzksNiArMTQ0LDggQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKERvdWJsZUluSlNTdGFjayk7CiAgICAgICAg
IGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEludDMy
SW5KU1N0YWNrKTsKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50NDg6CisgICAgICAgICAgICByZXR1
cm4gVmFsdWVTb3VyY2UoSW50NDhJbkpTU3RhY2spOwogICAgICAgICBjYXNlIEZsdXNoZWRDZWxs
OgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKENlbGxJbkpTU3RhY2spOwogICAgICAg
ICBjYXNlIEZsdXNoZWRCb29sZWFuOgpAQCAtMTgxLDYgKzE4OCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBJbnQzMkluSlNTdGFjazoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5
OjphbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzIoKTsKICAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEludDQ4SW5KU1N0YWNrOgorICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6
OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQ0OCgpOworICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgQ2VsbEluSlNTdGFjazoKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5Ojph
bHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQ2VsbCgpOwogICAgICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHJl
dmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVB
Y2Nlc3NEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw3ICsyMzUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgdmFyaWFibGUgaXMgbm90IGEgbnVtYmVyIHByZWRp
Y3Rpb24sIHRoZW4gdGhpcyBkb2Vzbid0CiAgICAgICAgIC8vIG1ha2UgYW55IHNlbnNlLgotICAg
ICAgICBpZiAoIWlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKSkgeworICAgICAgICBp
ZiAoIWlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiB3ZSBtYXkgZW5kIHVwIGZvcmNpbmcgYSBsb2NhbCBpbiBpbmxpbmVkIGFyZ3Vt
ZW50IHBvc2l0aW9uIHRvIGJlIGEgZG91YmxlIGV2ZW4KICAgICAgICAgICAgIC8vIGlmIGl0IGlz
IHNvbWV0aW1lcyBub3QgZXZlbiBudW1lcmljLCBzaW5jZSB0aGlzIG5ldmVyIHNpZ25hbHMgdGhl
IGZhY3QgdGhhdCBpdCBkb2Vzbid0CiAgICAgICAgICAgICAvLyB3YW50IGRvdWJsZXMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk1MTEKQEAgLTMzMyw2ICszMzMs
OSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikp
CiAgICAgICAgICAgICByZXR1cm4gRmx1c2hlZEludDMyOwogICAgICAgICAKKyAgICAgICAgaWYg
KGVuYWJsZUludDQ4KCkgJiYgIW9wZXJhbmRJc0FyZ3VtZW50KG1fbG9jYWwpICYmIGlzTWFjaGlu
ZUludFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRJ
bnQ0ODsKKyAgICAgICAgCiAgICAgICAgIGlmIChpc0NlbGxTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKICAgICAgICAgICAgIHJldHVybiBGbHVzaGVkQ2VsbDsKICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENBcmd1bWVudEdldHRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDQXJndW1lbnRHZXR0ZXIuY3BwCShyZXZp
c2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENBcmd1bWVudEdl
dHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwyMyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAKLXZvaWQgQ0FyZ3Vt
ZW50R2V0dGVyOjpsb2FkTmV4dEFuZEJveChWYWx1ZUZvcm1hdCBmb3JtYXQsIEdQUlJlZyBkZXN0
aW5hdGlvbiwgR1BSUmVnIHNjcmF0Y2gpCit2b2lkIENBcmd1bWVudEdldHRlcjo6bG9hZE5leHRB
bmRCb3goCisgICAgVmFsdWVGb3JtYXQgZm9ybWF0LCBHUFJSZWcgZGVzdGluYXRpb24sIEdQUlJl
ZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyKQogewotICAgIGlmIChzY3JhdGNoID09IEludmFs
aWRHUFJSZWcpIHsKKyAgICBpZiAoc2NyYXRjaDEgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAg
ICBBU1NFUlQoc2NyYXRjaDIgPT0gSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGlmIChkZXN0aW5h
dGlvbiA9PSBHUFJJbmZvOjpub25BcmdHUFIwKQotICAgICAgICAgICAgc2NyYXRjaCA9IEdQUklu
Zm86Om5vbkFyZ0dQUjE7CisgICAgICAgICAgICBzY3JhdGNoMSA9IEdQUkluZm86Om5vbkFyZ0dQ
UjE7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNjcmF0Y2ggPSBHUFJJbmZvOjpub25BcmdH
UFIwOworICAgICAgICAgICAgc2NyYXRjaDEgPSBHUFJJbmZvOjpub25BcmdHUFIwOworICAgIH0K
KyAgICBpZiAoc2NyYXRjaDIgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICBpZiAoZGVzdGlu
YXRpb24gIT0gR1BSSW5mbzo6bm9uQXJnR1BSMCAmJiBzY3JhdGNoMSAhPSBHUFJJbmZvOjpub25B
cmdHUFIwKQorICAgICAgICAgICAgc2NyYXRjaDIgPSBHUFJJbmZvOjpub25BcmdHUFIwOworICAg
ICAgICBlbHNlIGlmIChkZXN0aW5hdGlvbiAhPSBHUFJJbmZvOjpub25BcmdHUFIxICYmIHNjcmF0
Y2gxICE9IEdQUkluZm86Om5vbkFyZ0dQUjEpCisgICAgICAgICAgICBzY3JhdGNoMiA9IEdQUklu
Zm86Om5vbkFyZ0dQUjE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNjcmF0Y2gyID0gR1BS
SW5mbzo6bm9uQXJnR1BSMjsKICAgICB9CiAgICAgCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKQEAg
LTUwLDIxICs2MCwyNiBAQCB2b2lkIENBcmd1bWVudEdldHRlcjo6bG9hZE5leHRBbmRCb3goVmFs
CiAgICAgICAgICAgICAKICAgICBjYXNlIFZhbHVlRm9ybWF0VUludDMyOiB7CiAgICAgICAgIGxv
YWROZXh0MzIoZGVzdGluYXRpb24pOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0lu
dCA9IG1faml0LmJyYW5jaDMyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJU
aGFuT3JFcXVhbCwKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKDApKTsKLSAgICAgICAgICAgIAotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlVG82
NChGUFJJbmZvOjpmcFJlZ1QwLCBzY3JhdGNoKTsKLSAgICAgICAgbV9qaXQuY29udmVydEludDMy
VG9Eb3VibGUoZGVzdGluYXRpb24sIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICBtX2ppdC5i
b3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgZGVzdGluYXRpb24pOwotICAgICAgICBtX2ppdC5t
b3ZlNjRUb0RvdWJsZShzY3JhdGNoLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIAot
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwotICAgICAg
ICAgICAgCi0gICAgICAgIGlzSW50LmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQub3I2NChH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgbV9q
aXQubW92ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRjaDIpOworICAgICAgICBt
X2ppdC5ib3hJbnQ0OChkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24sIHNjcmF0Y2gxLCBGUFJJbmZv
OjpmcFJlZ1QwKTsKKyAgICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUoc2NyYXRjaDIsIEZQUklu
Zm86OmZwUmVnVDApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2Ug
VmFsdWVGb3JtYXRJbnQ0ODogeworICAgICAgICBsb2FkTmV4dDY0KGRlc3RpbmF0aW9uKTsKKyAg
ICAgICAgbV9qaXQucnNoaWZ0NjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTYpLCBk
ZXN0aW5hdGlvbik7CisgICAgICAgIG1faml0Lm1vdmVEb3VibGVUbzY0KEZQUkluZm86OmZwUmVn
VDAsIHNjcmF0Y2gyKTsKKyAgICAgICAgbV9qaXQuYm94SW50NDgoZGVzdGluYXRpb24sIGRlc3Rp
bmF0aW9uLCBzY3JhdGNoMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgIG1faml0Lm1vdmU2
NFRvRG91YmxlKHNjcmF0Y2gyLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgIGNhc2Ug
VmFsdWVGb3JtYXRTdHJpY3RJbnQ0ODogeworICAgICAgICBsb2FkTmV4dDY0KGRlc3RpbmF0aW9u
KTsKKyAgICAgICAgbV9qaXQubW92ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRj
aDIpOworICAgICAgICBtX2ppdC5ib3hJbnQ0OChkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24sIHNj
cmF0Y2gxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUo
c2NyYXRjaDIsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTgwLDEwICs5NSwxMCBAQCB2b2lkIENBcmd1bWVudEdldHRlcjo6bG9hZE5l
eHRBbmRCb3goVmFsCiAgICAgfQogICAgICAgICAgICAgCiAgICAgY2FzZSBWYWx1ZUZvcm1hdERv
dWJsZTogewotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlVG82NChGUFJJbmZvOjpmcFJlZ1QwLCBz
Y3JhdGNoKTsKKyAgICAgICAgbV9qaXQubW92ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwg
c2NyYXRjaDEpOwogICAgICAgICBsb2FkTmV4dERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwKTsKICAg
ICAgICAgbV9qaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIGRlc3RpbmF0aW9uKTsKLSAg
ICAgICAgbV9qaXQubW92ZTY0VG9Eb3VibGUoc2NyYXRjaCwgRlBSSW5mbzo6ZnBSZWdUMCk7Cisg
ICAgICAgIG1faml0Lm1vdmU2NFRvRG91YmxlKHNjcmF0Y2gxLCBGUFJJbmZvOjpmcFJlZ1QwKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENBcmd1bWVudEdldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ0FyZ3VtZW50R2V0dGVyLmgJKHJldmlzaW9uIDE1NTkwMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ0FyZ3VtZW50R2V0dGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExNSw3ICsxMTUsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHZv
aWQgbG9hZE5leHRBbmRCb3goCi0gICAgICAgIFZhbHVlRm9ybWF0IGZvcm1hdCwgREZHOjpHUFJS
ZWcgZGVzdGluYXRpb24sIERGRzo6R1BSUmVnIHNjcmF0Y2ggPSBJbnZhbGlkR1BSUmVnKTsKKyAg
ICAgICAgVmFsdWVGb3JtYXQsIERGRzo6R1BSUmVnIGRlc3RpbmF0aW9uLAorICAgICAgICBERkc6
OkdQUlJlZyBzY3JhdGNoMSA9IEludmFsaWRHUFJSZWcsIERGRzo6R1BSUmVnIHNjcmF0Y2gyID0g
SW52YWxpZEdQUlJlZyk7CiAKIHByaXZhdGU6CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mg
bmV4dEFkZHJlc3MoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0LDgg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29t
cGFyZVN0cmljdEVxOgogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNl
KSkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE1hY2hpbmVJbnRVc2UpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkpCkBAIC0xNzUsNiArMTc3LDggQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgQ29tcGFy
ZUdyZWF0ZXJFcToKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkp
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChN
YWNoaW5lSW50VXNlKSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcmV0
dXJuIENhbm5vdENvbXBpbGU7CkBAIC0yMzYsNiArMjQwLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZToK
ICAgICAgICAgICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25v
d25JbnQzMlVzZToKKyAgICAgICAgICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgICAg
ICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBLbm93bk51bWJl
clVzZToKICAgICAgICAgICAgICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDYgKzUzLDkgQEAgdm9pZCBFeGl0VmFsdWU6OmR1bXBJbkNvbnRleHQoUHJpbnRT
dHJlYQogICAgIGNhc2UgRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQzMjoKICAgICAgICAgb3V0LnBy
aW50KCJJbkpTU3RhY2tBc0ludDMyIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRW
YWx1ZUluSlNTdGFja0FzSW50NDg6CisgICAgICAgIG91dC5wcmludCgiSW5KU1N0YWNrQXNJbnQ0
OCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBFeGl0VmFsdWVJbkpTU3RhY2tBc0RvdWJs
ZToKICAgICAgICAgb3V0LnByaW50KCJJbkpTU3RhY2tBc0RvdWJsZSIpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmgJKHJldmlz
aW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSBFeGl0VmFsdWVLaW5kIHsKICAg
ICBFeGl0VmFsdWVDb25zdGFudCwKICAgICBFeGl0VmFsdWVJbkpTU3RhY2ssCiAgICAgRXhpdFZh
bHVlSW5KU1N0YWNrQXNJbnQzMiwKKyAgICBFeGl0VmFsdWVJbkpTU3RhY2tBc0ludDQ4LAogICAg
IEV4aXRWYWx1ZUluSlNTdGFja0FzRG91YmxlCiB9OwogCkBAIC04Miw2ICs4MywxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBFeGl0
VmFsdWUgaW5KU1N0YWNrQXNJbnQ0OCgpCisgICAgeworICAgICAgICBFeGl0VmFsdWUgcmVzdWx0
OworICAgICAgICByZXN1bHQubV9raW5kID0gRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQ0ODsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIEV4aXRWYWx1ZSBp
bkpTU3RhY2tBc0RvdWJsZSgpCiAgICAgewogICAgICAgICBFeGl0VmFsdWUgcmVzdWx0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0
b3J5LmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCwxMiBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKICNkZWZpbmUgRk9SX0VBQ0hfRlRMX0lO
VFJJTlNJQyhtYWNybykgXAogICAgIG1hY3JvKGFkZFdpdGhPdmVyZmxvdzMyLCAibGx2bS5zYWRk
LndpdGgub3ZlcmZsb3cuaTMyIiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBp
bnQzMiwgYm9vbGVhbiksIGludDMyLCBpbnQzMikpIFwKKyAgICBtYWNybyhhZGRXaXRoT3ZlcmZs
b3c2NCwgImxsdm0uc2FkZC53aXRoLm92ZXJmbG93Lmk2NCIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RU
eXBlKG1fY29udGV4dCwgaW50NjQsIGJvb2xlYW4pLCBpbnQ2NCwgaW50NjQpKSBcCiAgICAgbWFj
cm8oZG91YmxlQWJzLCAibGx2bS5mYWJzLmY2NCIsIGZ1bmN0aW9uVHlwZShkb3VibGVUeXBlLCBk
b3VibGVUeXBlKSkgXAogICAgIG1hY3JvKG11bFdpdGhPdmVyZmxvdzMyLCAibGx2bS5zbXVsLndp
dGgub3ZlcmZsb3cuaTMyIiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQz
MiwgYm9vbGVhbiksIGludDMyLCBpbnQzMikpIFwKKyAgICBtYWNybyhtdWxXaXRoT3ZlcmZsb3c2
NCwgImxsdm0uc211bC53aXRoLm92ZXJmbG93Lmk2NCIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBl
KG1fY29udGV4dCwgaW50NjQsIGJvb2xlYW4pLCBpbnQ2NCwgaW50NjQpKSBcCiAgICAgbWFjcm8o
c3ViV2l0aE92ZXJmbG93MzIsICJsbHZtLnNzdWIud2l0aC5vdmVyZmxvdy5pMzIiLCBmdW5jdGlv
blR5cGUoc3RydWN0VHlwZShtX2NvbnRleHQsIGludDMyLCBib29sZWFuKSwgaW50MzIsIGludDMy
KSkgXAorICAgIG1hY3JvKHN1YldpdGhPdmVyZmxvdzY0LCAibGx2bS5zc3ViLndpdGgub3ZlcmZs
b3cuaTY0IiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQ2NCwgYm9vbGVh
biksIGludDY0LCBpbnQ2NCkpIFwKICAgICBtYWNybyh0cmFwLCAibGx2bS50cmFwIiwgZnVuY3Rp
b25UeXBlKHZvaWRUeXBlKSkgXAogICAgIG1hY3JvKG9zckV4aXQsICJ3ZWJraXRfb3NyX2V4aXQi
LCBmdW5jdGlvblR5cGUodm9pZFR5cGUsIGJvb2xlYW4sIGludDMyLCBWYXJpYWRpYykpCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDYgKzE1MSw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CiAgICAgICAgICAgICAgICAg
ICAgIHR5cGUgPSBtX291dC5pbnQzMjsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50NDg6CisgICAgICAgICAgICAgICAgICAgIHR5
cGUgPSBtX291dC5pbnQ2NDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgY2FzZSBOb2RlUmVzdWx0Qm9vbGVhbjoKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9
IG1fb3V0LmJvb2xlYW47CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM5LDcgKzI0
Miw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjb21waWxlUGhpKCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgotICAgICAgICAgICAgY29tcGlsZUpTQ29u
c3RhbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYWtKU0NvbnN0YW50
OgogICAgICAgICAgICAgY29tcGlsZVdlYWtKU0NvbnN0YW50KCk7CkBAIC00NjEsNiArNDYzLDkg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgIG1fb3V0LnNl
dChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIG1fb3V0LnNl
dChsb3dJbnQ0OChtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgICAgIG1fb3V0LnNldChs
b3dCb29sZWFuKG1fbm9kZS0+Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTQ4Nyw2ICs0OTIsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE5vZGVSZXN1
bHRJbnQzMjoKICAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmdldChzb3VyY2UpKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQ0ODoKKyAgICAgICAgICAg
IHNldEludDQ4KG1fb3V0LmdldChzb3VyY2UpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIE5vZGVSZXN1bHRCb29sZWFuOgogICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5n
ZXQoc291cmNlKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU5MSw2ICs1OTksMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgRmx1c2hlZEludDQ4OiB7CisgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dJ
bnQ0OChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWUs
IGFkZHJlc3NGb3IodmFyaWFibGUtPmxvY2FsKCkpKTsKKyAgICAgICAgICAgIG1fdmFsdWVTb3Vy
Y2VzLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoSW50NDhJbkpTU3Rh
Y2spOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBGbHVzaGVkQ2VsbDogewogICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWUsIGFk
ZHJlc3NGb3IodmFyaWFibGUtPmxvY2FsKCkpKTsKQEAgLTY1NSw2ICs2NzAsMjIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZSht
X25vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgpCisgICAgICAgICAgICAgICAg
JiYgIW1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50
NDgpKSB7CisgICAgICAgICAgICAgICAgSW50NDhzPDI+IGludDQ4cyA9IGxvd1doaWNoZXZlcklu
dDQ4cyhtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAg
ICBzZXRJbnQ0OChtX291dC5hZGQoaW50NDhzWzBdLCBpbnQ0OHNbMV0pLCBpbnQ0OHMua2luZCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SW50NDgobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ0OChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5hZGRXaXRoT3ZlcmZsb3c2NChsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICBzcGVjdWxhdGUoSW50NDhPdmVyZmxvdywgbm9WYWx1ZSgpLCAwLCBt
X291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAxKSk7CisgICAgICAgICAgICBzZXRJbnQ0OChtX291
dC5leHRyYWN0VmFsdWUocmVzdWx0LCAwKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgICAgICBz
ZXREb3VibGUoCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlQWRkKGxvd0RvdWJsZShtX25v
ZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC02ODUsNiAr
NzE2LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAgICAgaWYgKCFt
X3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDQ4KQor
ICAgICAgICAgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDIoKSkuY291
bGRCZVR5cGUoU3BlY0ludDQ4KSkgeworICAgICAgICAgICAgICAgIEludDQ4czwyPiBpbnQ0OHMg
PSBsb3dXaGljaGV2ZXJJbnQ0OHMobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICAgICAgc2V0SW50NDgobV9vdXQuc3ViKGludDQ4c1swXSwgaW50NDhzWzFd
KSwgaW50NDhzLmtpbmQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0ludDQ4KG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NDgobV9ub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuc3ViV2l0aE92ZXJm
bG93NjQobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgc3BlY3VsYXRlKEludDQ4T3ZlcmZsb3cs
IG5vVmFsdWUoKSwgMCwgbV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMSkpOworICAgICAgICAg
ICAgc2V0SW50NDgobV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIE51bWJlclVzZTog
ewogICAgICAgICAgICAgc2V0RG91YmxlKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZVN1
Yihsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigp
KSkpOwpAQCAtNzMwLDYgKzc3NywzMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAg
ICAgICAgICAgIEludDQ4czwyPiBpbnQ0OHMgPSBsb3dPcHBvc2luZ0ludDQ4cyhtX25vZGUtPmNo
aWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTFZh
bHVlIG92ZXJmbG93UmVzdWx0ID0gbV9vdXQubXVsV2l0aE92ZXJmbG93NjQoaW50NDhzWzBdLCBp
bnQ0OHNbMV0pOworICAgICAgICAgICAgc3BlY3VsYXRlKEludDQ4T3ZlcmZsb3csIG5vVmFsdWUo
KSwgMCwgbV9vdXQuZXh0cmFjdFZhbHVlKG92ZXJmbG93UmVzdWx0LCAxKSk7CisgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXh0cmFjdFZhbHVlKG92ZXJmbG93UmVzdWx0LCAwKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZl
WmVybyhtX25vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICAgICAgTEJhc2lj
QmxvY2sgc2xvd0Nhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoTXVsIHNsb3cgY2Fz
ZSIpKTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVX
X0JMT0NLKG1fb3V0LCAoIkFyaXRoTXVsIGNvbnRpbnVhdGlvbiIpKTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90WmVybzY0KHJlc3VsdCks
IGNvbnRpbnVhdGlvbiwgc2xvd0Nhc2UpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRp
bnVhdGlvbik7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE5lZ2F0aXZlWmVybywgbm9WYWx1
ZSgpLCAwLCBtX291dC5sZXNzVGhhbihpbnQ0OHNbMF0sIG1fb3V0LmludDY0WmVybykpOworICAg
ICAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZVplcm8sIG5vVmFsdWUoKSwgMCwgbV9vdXQu
bGVzc1RoYW4oaW50NDhzWzBdLCBtX291dC5pbnQ2NFplcm8pKTsKKyAgICAgICAgICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHNldEludDQ4KHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgICAgICBz
ZXREb3VibGUoCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTXVsKGxvd0RvdWJsZShtX25v
ZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC0xMDMwLDYg
KzExMDEsMjUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgICAgICBpZiAo
IW1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NDgp
KSB7CisgICAgICAgICAgICAgICAgSW50NDhzPDE+IHZhbHVlID0gbG93V2hpY2hldmVySW50NDgo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0
Lm5lZyh2YWx1ZVswXSk7CisgICAgICAgICAgICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9yZU5l
Z2F0aXZlWmVybyhtX25vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAgICAgICAgICAg
ICBzcGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIDAsIG1fb3V0LmlzWmVybzY0KHJl
c3VsdCkpOworICAgICAgICAgICAgICAgIHNldEludDQ4KHJlc3VsdCwgdmFsdWUua2luZCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0ludDQ4KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgTFZhbHVlIG92ZXJmbG93UmVzdWx0ID0gbV9vdXQuc3ViV2l0aE92ZXJmbG93NjQobV9v
dXQuaW50NjRaZXJvLCB2YWx1ZSk7CisgICAgICAgICAgICBzcGVjdWxhdGUoSW50NDhPdmVyZmxv
dywgbm9WYWx1ZSgpLCAwLCBtX291dC5leHRyYWN0VmFsdWUob3ZlcmZsb3dSZXN1bHQsIDEpKTsK
KyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5leHRyYWN0VmFsdWUob3ZlcmZsb3dS
ZXN1bHQsIDApOworICAgICAgICAgICAgc3BlY3VsYXRlKE5lZ2F0aXZlWmVybywgbm9WYWx1ZSgp
LCAwLCBtX291dC5pc1plcm82NChyZXN1bHQpKTsKKyAgICAgICAgICAgIHNldEludDQ4KHJlc3Vs
dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZG91YmxlTmVn
KGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
NDcxLDcgKzE1NjEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0RvdWJsZShjaGlsZDMpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEZU
TF9UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGNo
aWxkMywgU3BlY1JlYWxOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgIGRvdWJsZVZhbHVlKHZh
bHVlKSwgY2hpbGQzLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQodmFsdWUsIHZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgVHlwZWRQb2ludGVyIGVsZW1lbnRQb2ludGVyID0gbV9v
dXQuYmFzZUluZGV4KApAQCAtMTcwNiw2ICsxNzk2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bXBpbGVDb21wYXJlRXEoKQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEludDMyVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFj
aGluZUludFVzZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJl
clVzZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkp
IHsKICAgICAgICAgICAgIGNvbXBpbGVDb21wYXJlU3RyaWN0RXEoKTsKQEAgLTE3MzIsNiArMTgy
MywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IAorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsK
KyAgICAgICAgICAgIEludDQ4czwyPiB2YWx1ZXMgPSBsb3dXaGljaGV2ZXJJbnQ0OHMobV9ub2Rl
LT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBzZXRCb29sZWFuKG1f
b3V0LmVxdWFsKHZhbHVlc1swXSwgdmFsdWVzWzFdKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChO
dW1iZXJVc2UpKSB7CiAgICAgICAgICAgICBzZXRCb29sZWFuKAogICAgICAgICAgICAgICAgIG1f
b3V0LmRvdWJsZUVxdWFsKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1f
bm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC0xNzgwLDYgKzE4NzcsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgaWYgKG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAgICAgICAgICBJbnQ0OHM8Mj4g
dmFsdWVzID0gbG93V2hpY2hldmVySW50NDhzKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5sZXNzVGhhbih2YWx1ZXNbMF0s
IHZhbHVlc1sxXSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAog
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgewogICAgICAg
ICAgICAgc2V0Qm9vbGVhbigKICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVMZXNzVGhhbihs
b3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigpKSkp
OwpAQCAtMTc5Nyw2ICsxOTAwLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChN
YWNoaW5lSW50VXNlKSkgeworICAgICAgICAgICAgSW50NDhzPDI+IHZhbHVlcyA9IGxvd1doaWNo
ZXZlckludDQ4cyhtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIHNldEJvb2xlYW4obV9vdXQubGVzc1RoYW5PckVxdWFsKHZhbHVlc1swXSwgdmFsdWVzWzFd
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlm
IChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgICAgICBzZXRC
b29sZWFuKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUxlc3NUaGFuT3JFcXVhbCgKQEAg
LTE4MTUsNiArMTkyNCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIAorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGlu
ZUludFVzZSkpIHsKKyAgICAgICAgICAgIEludDQ4czwyPiB2YWx1ZXMgPSBsb3dXaGljaGV2ZXJJ
bnQ0OHMobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBz
ZXRCb29sZWFuKG1fb3V0LmdyZWF0ZXJUaGFuKHZhbHVlc1swXSwgdmFsdWVzWzFdKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgICAgICBzZXRCb29sZWFuKAog
ICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUdyZWF0ZXJUaGFuKApAQCAtMTgzNCw2ICsxOTQ5
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkgewor
ICAgICAgICAgICAgSW50NDhzPDI+IHZhbHVlcyA9IGxvd1doaWNoZXZlckludDQ4cyhtX25vZGUt
PmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9v
dXQuZ3JlYXRlclRoYW5PckVxdWFsKHZhbHVlc1swXSwgdmFsdWVzWzFdKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgICAgICBzZXRCb29sZWFuKAogICAgICAg
ICAgICAgICAgIG1fb3V0LmRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCgKQEAgLTIzNTAsMTAgKzI0
NzEsMjcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9k
ZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgKGVkZ2UudXNlS2luZCgpID09IEludDMy
VXNlIHx8IGVkZ2UudXNlS2luZCgpID09IEtub3duSW50MzJVc2UpKTsKICAgICAgICAgCisgICAg
ICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBp
ZiAoIXZhbHVlLmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50
YWJsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmludDMyWmVybzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtX291dC5jb25zdEludDMyKHZhbHVlLmFzSW50MzIo
KSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUg
PSBtX2ludDMyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZh
bHVlKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOwogICAgICAgICAKKyAgICAg
ICAgdmFsdWUgPSBtX3N0cmljdEludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAg
IGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ0OFRvSW50
MzIoZWRnZSwgdmFsdWUudmFsdWUoKSk7CisgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1faW50
NDhWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDQ4VG9JbnQzMihlZGdlLCBpbnQ0OFRvU3RyaWN0
SW50NDgodmFsdWUudmFsdWUoKSkpOworICAgICAgICAKICAgICAgICAgdmFsdWUgPSBtX2pzVmFs
dWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7
CiAgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSB2YWx1ZS52YWx1ZSgpOwpAQCAtMjM2
OSwxMCArMjUwNywxNDggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fb3V0LmludDMyWmVy
bzsKICAgICB9CiAgICAgCisgICAgZW51bSBJbnQ0OEtpbmQgeyBTdHJpY3RJbnQ0OCwgSW50NDgg
fTsKKyAgICBMVmFsdWUgbG93SW50NDgoRWRnZSBlZGdlLCBJbnQ0OEtpbmQga2luZCwgT3BlcmFu
ZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAg
IHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAgICAg
ICBpZiAoIXZhbHVlLmlzTWFjaGluZUludCgpKSB7CisgICAgICAgICAgICAgICAgdGVybWluYXRl
KFVuY291bnRhYmxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuaW50NjRaZXJvOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50NjRfdCByZXN1bHQgPSB2YWx1ZS5hc01hY2hp
bmVJbnQoKTsKKyAgICAgICAgICAgIGlmIChraW5kID09IEludDQ4KQorICAgICAgICAgICAgICAg
IHJlc3VsdCA8PD0gMTY7CisgICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQ2NChyZXN1
bHQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVl
OworICAgICAgICAKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgSW50NDg6
CisgICAgICAgICAgICB2YWx1ZSA9IG1faW50NDhWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAg
ICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWUudmFsdWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFsdWUgPSBtX3N0cmljdElu
dDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1
ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDQ4VG9JbnQ0OCh2YWx1ZS52YWx1
ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgU3Ry
aWN0SW50NDg6CisgICAgICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NDhWYWx1ZXMuZ2V0KGVk
Z2Uubm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFs
dWUgPSBtX2ludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNW
YWxpZCh2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGludDQ4VG9TdHJpY3RJbnQ0OCh2
YWx1ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB2YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAg
aWYgKGlzVmFsaWQodmFsdWUpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0SW50NDhXaXRoU3Ry
aWN0VmFsdWUoCisgICAgICAgICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0LnNpZ25FeHQodmFs
dWUudmFsdWUoKSwgbV9vdXQuaW50NjQpLCBraW5kKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgU3Bl
Y0ludDQ4KSk7CisgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQo
ZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAgICAgICAg
IExWYWx1ZSBib3hlZFJlc3VsdCA9IHZhbHVlLnZhbHVlKCk7CisgICAgICAgICAgICBGVExfVFlQ
RV9DSEVDSygKKyAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoYm94ZWRSZXN1bHQpLCBlZGdl
LCBTcGVjTWFjaGluZUludCwgaXNOb3RJbnQzMihib3hlZFJlc3VsdCkpOworICAgICAgICAgICAg
cmV0dXJuIHNldEludDQ4V2l0aFN0cmljdFZhbHVlKAorICAgICAgICAgICAgICAgIGVkZ2Uubm9k
ZSgpLCBtX291dC5zaWduRXh0KHVuYm94SW50MzIoYm94ZWRSZXN1bHQpLCBtX291dC5pbnQ2NCks
IGtpbmQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1f
c3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjTWFjaGluZUludCkpOworICAgICAgICB0
ZXJtaW5hdGUoVW5jb3VudGFibGUpOworICAgICAgICByZXR1cm4gbV9vdXQuaW50NjRaZXJvOwor
ICAgIH0KKyAgICAKKyAgICBMVmFsdWUgbG93SW50NDgoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3Vs
YXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAg
ICAgICByZXR1cm4gbG93SW50NDgoZWRnZSwgSW50NDgsIG1vZGUpOworICAgIH0KKyAgICAKKyAg
ICBMVmFsdWUgbG93U3RyaWN0SW50NDgoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2Rl
IG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAgICByZXR1
cm4gbG93SW50NDgoZWRnZSwgU3RyaWN0SW50NDgsIG1vZGUpOworICAgIH0KKyAgICAKKyAgICBi
b29sIGJldHRlclVzZVN0cmljdEludDQ4KE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICByZXR1
cm4gIWlzVmFsaWQobV9pbnQ0OFZhbHVlcy5nZXQobm9kZSkpOworICAgIH0KKyAgICBib29sIGJl
dHRlclVzZVN0cmljdEludDQ4KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBiZXR0
ZXJVc2VTdHJpY3RJbnQ0OChlZGdlLm5vZGUoKSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgSW50NDhLaW5kIGJlc3RJbnQ0OEtpbmQoVCBub2RlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJldHRlclVzZVN0cmljdEludDQ4KG5vZGUpID8gU3RyaWN0SW50NDggOiBJbnQ0
ODsKKyAgICB9CisgICAgSW50NDhLaW5kIG9wcG9zaXRlKEludDQ4S2luZCBraW5kKQorICAgIHsK
KyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgSW50NDg6CisgICAgICAgICAg
ICByZXR1cm4gU3RyaWN0SW50NDg7CisgICAgICAgIGNhc2UgU3RyaWN0SW50NDg6CisgICAgICAg
ICAgICByZXR1cm4gSW50NDg7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dW5zaWduZWQgY291bnQ+Cisg
ICAgc3RydWN0IEludDQ4cyB7CisgICAgICAgIExWYWx1ZSBvcGVyYXRvcltdKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdCB7IHJldHVybiB2YWx1ZXNbaW5kZXhdOyB9CisgICAgICAgIExWYWx1ZSYgb3Bl
cmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gdmFsdWVzW2luZGV4XTsgfQorICAgICAg
ICAKKyAgICAgICAgSW50NDhLaW5kIGtpbmQ7CisgICAgICAgIEZpeGVkQXJyYXk8TFZhbHVlLCBj
b3VudD4gdmFsdWVzOworICAgIH07CisgICAgSW50NDhzPDE+IGxvd1doaWNoZXZlckludDQ4KEVk
Z2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNw
ZWN1bGF0aW9uKQorICAgIHsKKyAgICAgICAgSW50NDhzPDE+IHJlc3VsdDsKKyAgICAgICAgcmVz
dWx0LmtpbmQgPSBiZXN0SW50NDhLaW5kKGVkZ2UpOworICAgICAgICByZXN1bHRbMF0gPSBsb3dJ
bnQ0OChlZGdlLCByZXN1bHQua2luZCwgbW9kZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIEludDQ4czwyPiBsb3dXaGljaGV2ZXJJbnQ0OHMoRWRnZSBlZGdlMSwgRWRnZSBl
ZGdlMiwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1
bGF0aW9uKQorICAgIHsKKyAgICAgICAgSW50NDhzPDI+IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0
LmtpbmQgPSBiZXN0SW50NDhLaW5kKGVkZ2UxKTsKKyAgICAgICAgcmVzdWx0WzBdID0gbG93SW50
NDgoZWRnZTEsIHJlc3VsdC5raW5kLCBtb2RlKTsKKyAgICAgICAgcmVzdWx0WzFdID0gbG93SW50
NDgoZWRnZTIsIHJlc3VsdC5raW5kLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisgICAgSW50NDhzPDI+IGxvd09wcG9zaW5nSW50NDhzKEVkZ2UgZWRnZTEsIEVkZ2UgZWRn
ZTIsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxh
dGlvbikKKyAgICB7CisgICAgICAgIEludDQ4czwyPiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5r
aW5kID0gYmVzdEludDQ4S2luZChlZGdlMSk7CisgICAgICAgIHJlc3VsdFswXSA9IGxvd0ludDQ4
KGVkZ2UxLCByZXN1bHQua2luZCwgbW9kZSk7CisgICAgICAgIHJlc3VsdFsxXSA9IGxvd0ludDQ4
KGVkZ2UyLCBvcHBvc2l0ZShyZXN1bHQua2luZCksIG1vZGUpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICAKICAgICBMVmFsdWUgbG93Q2VsbChFZGdlIGVkZ2UsIE9wZXJhbmRT
cGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKICAgICB7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24gfHwgaXNDZWxsKGVkZ2UudXNlS2luZCgpKSk7CiAgICAgICAgIAorICAgICAgICBpZiAo
ZWRnZS0+b3AoKSA9PSBKU0NvbnN0YW50KSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
bV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAo
IXZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxl
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuaW50UHRyWmVybzsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiBtX291dC5jb25zdEludFB0cih2YWx1ZS5hc0NlbGwoKSk7
CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBt
X2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFs
dWUpKSB7CiAgICAgICAgICAgICBMVmFsdWUgdW5jaGVja2VkVmFsdWUgPSB2YWx1ZS52YWx1ZSgp
OwpAQCAtMjQxNyw2ICsyNjkzLDE1IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlRf
VU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNl
S2luZCgpID09IEJvb2xlYW5Vc2UpOwogICAgICAgICAKKyAgICAgICAgaWYgKGVkZ2UtPmhhc0Nv
bnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZK
U0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNCb29sZWFu
KCkpIHsKKyAgICAgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOworICAgICAgICAg
ICAgICAgIHJldHVybiBtX291dC5ib29sZWFuRmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gbV9vdXQuY29uc3RCb29sKHZhbHVlLmFzQm9vbGVhbigpKTsKKyAgICAgICAg
fQorICAgICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1fYm9vbGVhblZh
bHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCiAgICAg
ICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKQEAgLTI0NDAsNiArMjcyNSwxNSBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbiB8fCBpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICAK
KyAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAg
ICAgIGlmICghdmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShV
bmNvdW50YWJsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZVplcm87Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3REb3VibGUodmFsdWUu
YXNOdW1iZXIoKSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFs
dWUgdmFsdWUgPSBtX2RvdWJsZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAo
aXNWYWxpZCh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKQEAgLTI0
NTEsNiArMjc0NSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogICAgICAgICAKKyAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDQ4VmFsdWVzLmdl
dChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAg
IHJldHVybiBzdHJpY3RJbnQ0OFRvRG91YmxlKGVkZ2UsIHZhbHVlLnZhbHVlKCkpOworICAgICAg
ICAKKyAgICAgICAgdmFsdWUgPSBtX2ludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAg
ICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ0OFRv
RG91YmxlKGVkZ2UsIGludDQ4VG9TdHJpY3RJbnQ0OCh2YWx1ZS52YWx1ZSgpKSk7CisgICAgICAg
IAogICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAg
ICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKICAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3Vs
dCA9IHZhbHVlLnZhbHVlKCk7CkBAIC0yNDcwLDcgKzI3NzIsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAganNWYWx1
ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY051bWJlciwgaXNDZWxsT3JNaXNjKGJveGVk
UmVzdWx0KSk7CisgICAgICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRn
ZSwgU3BlY0Z1bGxOdW1iZXIsIGlzQ2VsbE9yTWlzYyhib3hlZFJlc3VsdCkpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayB1bmJveGVkRG91YmxlID0gbV9vdXQuYW5j
aG9yKHVuYm94RG91YmxlKGJveGVkUmVzdWx0KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CkBAIC0yNDgzLDcgKzI3ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgU3BlY051bWJlcikpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjRnVs
bE51bWJlcikpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAgICByZXR1
cm4gbV9vdXQuZG91YmxlWmVybzsKICAgICB9CkBAIC0yNDkyLDYgKzI3OTQsOSBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAg
CisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKQorICAgICAgICAgICAgcmV0dXJuIG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQo
ZWRnZS5ub2RlKCkpKSk7CisgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVl
ID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlk
KHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOwpAQCAtMjUwMyw2ICsy
ODA4LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
CiAgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NDhWYWx1ZXMuZ2V0KGVkZ2Uu
bm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJu
IHN0cmljdEludDQ4VG9KU1ZhbHVlKHZhbHVlLnZhbHVlKCkpOworICAgICAgICAKKyAgICAgICAg
dmFsdWUgPSBtX2ludDQ4VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlmIChpc1Zh
bGlkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ0OFRvSlNWYWx1ZShpbnQ0
OFRvU3RyaWN0SW50NDgodmFsdWUudmFsdWUoKSkpOworICAgICAgICAKICAgICAgICAgdmFsdWUg
PSBtX2Jvb2xlYW5WYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQo
dmFsdWUpKSB7CiAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gYm94Qm9vbGVhbih2YWx1ZS52
YWx1ZSgpKTsKQEAgLTI1MzIsNiArMjg0NSw3NyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KICAgICAKKyAgICBMVmFsdWUgc3RyaWN0SW50NDhUb0ludDMyKEVkZ2Ug
ZWRnZSwgTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0
LmNhc3RUb0ludDMyKHZhbHVlKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCisgICAgICAgICAg
ICBub1ZhbHVlKCksIGVkZ2UsIFNwZWNJbnQzMiwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFs
KG1fb3V0LnNpZ25FeHQocmVzdWx0LCBtX291dC5pbnQ2NCksIHZhbHVlKSk7CisgICAgICAgIHNl
dEludDMyKGVkZ2Uubm9kZSgpLCByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICAKKyAgICBMVmFsdWUgc3RyaWN0SW50NDhUb0RvdWJsZShFZGdlIGVkZ2UsIExWYWx1
ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5pbnRUb0RvdWJs
ZSh2YWx1ZSk7CisgICAgICAgIHNldERvdWJsZShlZGdlLm5vZGUoKSwgcmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgTFZhbHVlIHN0cmljdEludDQ4VG9K
U1ZhbHVlKExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzSW50MzIg
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoInN0cmljdEludDQ4VG9KU1ZhbHVlIGlzSW50MzIgY2Fz
ZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNEb3VibGUgPSBGVExfTkVXX0JMT0NLKG1fb3V0
LCAoInN0cmljdEludDQ4VG9KU1ZhbHVlIGlzRG91YmxlIGNhc2UiKSk7CisgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaWN0SW50NDhU
b0pTVmFsdWUgY29udGludWF0aW9uIikpOworICAgICAgICAKKyAgICAgICAgVmVjdG9yPFZhbHVl
RnJvbUJsb2NrLCAyPiByZXN1bHRzOworICAgICAgICAgICAgCisgICAgICAgIExWYWx1ZSBpbnQz
MlZhbHVlID0gbV9vdXQuY2FzdFRvSW50MzIodmFsdWUpOworICAgICAgICBtX291dC5icmFuY2go
CisgICAgICAgICAgICBtX291dC5lcXVhbChtX291dC5zaWduRXh0KGludDMyVmFsdWUsIG1fb3V0
LmludDY0KSwgdmFsdWUpLAorICAgICAgICAgICAgaXNJbnQzMiwgaXNEb3VibGUpOworICAgICAg
ICAKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0ludDMy
LCBpc0RvdWJsZSk7CisgICAgICAgIAorICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNo
b3IoYm94SW50MzIoaW50MzJWYWx1ZSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNEb3VibGUsIGNvbnRpbnVh
dGlvbik7CisgICAgICAgIAorICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoYm94
RG91YmxlKG1fb3V0LmludFRvRG91YmxlKHZhbHVlKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHJldHVybiBtX291dC5waGkobV9vdXQuaW50NjQsIHJl
c3VsdHMpOworICAgIH0KKyAgICAKKyAgICBMVmFsdWUgc2V0SW50NDhXaXRoU3RyaWN0VmFsdWUo
Tm9kZSogbm9kZSwgTFZhbHVlIHZhbHVlLCBJbnQ0OEtpbmQga2luZCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIFN0cmljdEludDQ4OgorICAgICAgICAgICAg
c2V0U3RyaWN0SW50NDgobm9kZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NDg6CisgICAgICAgICAgICB2YWx1ZSA9IHN0
cmljdEludDQ4VG9JbnQ0OCh2YWx1ZSk7CisgICAgICAgICAgICBzZXRJbnQ0OChub2RlLCB2YWx1
ZSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKworICAgIExWYWx1ZSBzdHJpY3RJbnQ0OFRvSW50NDgoTFZhbHVlIHZhbHVlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fb3V0LnNobCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCgxNikpOwor
ICAgIH0KKyAgICAKKyAgICBMVmFsdWUgaW50NDhUb1N0cmljdEludDQ4KExWYWx1ZSB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX291dC5hU2hyKHZhbHVlLCBtX291dC5jb25zdEludDY0
KDE2KSk7CisgICAgfQorICAgIAogICAgIExWYWx1ZSBpc05vdEludDMyKExWYWx1ZSBqc1ZhbHVl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmJlbG93KGpzVmFsdWUsIG1fdGFnVHlwZU51
bWJlcik7CkBAIC0yNzkyLDcgKzMxNzYsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAg
TFZhbHVlIHZhbHVlID0gbG93RG91YmxlKGVkZ2UpOwogICAgICAgICBGVExfVFlQRV9DSEVDSygK
LSAgICAgICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY1JlYWxOdW1iZXIsCisg
ICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNGdWxsUmVhbE51bWJlciwK
ICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQodmFsdWUsIHZhbHVl
KSk7CiAgICAgfQogICAgIApAQCAtMjgwMCw3ICszMTg0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgICAgIGxvd0Jvb2xlYW4oZWRnZSk7CiAgICAgfQotCisgICAgCiAgICAgYm9vbCBtYXNxdWVy
YWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9ncmFwaC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxp
ZChtX25vZGUtPmNvZGVPcmlnaW4pOwpAQCAtMjkzMSw2ICszMzE1LDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgbV92YWx1ZVNvdXJjZXNbaV0gPSBWYWx1ZVNvdXJjZShJbnQzMkluSlNT
dGFjayk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRJbnQ0ODoKKyAgICAgICAgICAgICAgICBtX3ZhbHVlU291cmNlc1tp
XSA9IFZhbHVlU291cmNlKEludDQ4SW5KU1N0YWNrKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToKICAgICAg
ICAgICAgICAgICBtX3ZhbHVlU291cmNlc1tpXSA9IFZhbHVlU291cmNlKERvdWJsZUluSlNTdGFj
ayk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDM0LDYgKzM0MjIsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgY2FzZSBJbnQzMkluSlNTdGFjazoKICAgICAgICAgICAgICAgICBleGl0
Lm1fdmFsdWVzW2ldID0gRXhpdFZhbHVlOjppbkpTU3RhY2tBc0ludDMyKCk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEludDQ4SW5KU1N0YWNrOgorICAgICAgICAg
ICAgICAgIGV4aXQubV92YWx1ZXNbaV0gPSBFeGl0VmFsdWU6OmluSlNTdGFja0FzSW50NDgoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRG91YmxlSW5KU1N0YWNr
OgogICAgICAgICAgICAgICAgIGV4aXQubV92YWx1ZXNbaV0gPSBFeGl0VmFsdWU6OmluSlNTdGFj
a0FzRG91YmxlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMTM3LDYgKzM1MjgsMTgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAg
ICAgICAgdmFsdWUgPSBtX2ludDQ4VmFsdWVzLmdldChub2RlKTsKKyAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKSB7CisgICAgICAgICAgICBhZGRFeGl0QXJndW1lbnQoZXhpdCwgYXJndW1lbnRz
LCBpbmRleCwgVmFsdWVGb3JtYXRJbnQ0OCwgdmFsdWUudmFsdWUoKSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZhbHVlID0gbV9zdHJpY3RJbnQ0
OFZhbHVlcy5nZXQobm9kZSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAg
ICAgICAgYWRkRXhpdEFyZ3VtZW50KGV4aXQsIGFyZ3VtZW50cywgaW5kZXgsIFZhbHVlRm9ybWF0
U3RyaWN0SW50NDgsIHZhbHVlLnZhbHVlKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIAogICAgICAgICB2YWx1ZSA9IG1fYm9vbGVhblZhbHVlcy5nZXQobm9kZSk7
CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewogICAgICAgICAgICAgYWRkRXhpdEFyZ3Vt
ZW50KGV4aXQsIGFyZ3VtZW50cywgaW5kZXgsIFZhbHVlRm9ybWF0Qm9vbGVhbiwgdmFsdWUudmFs
dWUoKSk7CkBAIC0zMjQwLDYgKzM2NDMsMjggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1f
aW50MzJWYWx1ZXMuc2V0KG5vZGUsIExvd2VyZWROb2RlVmFsdWUodmFsdWUsIG1faGlnaEJsb2Nr
KSk7CiAgICAgfQorICAgIHZvaWQgc2V0SW50NDgoTm9kZSogbm9kZSwgTFZhbHVlIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgbV9pbnQ0OFZhbHVlcy5zZXQobm9kZSwgTG93ZXJlZE5vZGVWYWx1ZSh2
YWx1ZSwgbV9oaWdoQmxvY2spKTsKKyAgICB9CisgICAgdm9pZCBzZXRTdHJpY3RJbnQ0OChOb2Rl
KiBub2RlLCBMVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBtX3N0cmljdEludDQ4VmFsdWVz
LnNldChub2RlLCBMb3dlcmVkTm9kZVZhbHVlKHZhbHVlLCBtX2hpZ2hCbG9jaykpOworICAgIH0K
KyAgICB2b2lkIHNldEludDQ4KE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSwgSW50NDhLaW5kIGtp
bmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBJbnQ0ODoK
KyAgICAgICAgICAgIHNldEludDQ4KG5vZGUsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFN0cmljdEludDQ4OgorICAgICAgICAgICAgc2V0
U3RyaWN0SW50NDgobm9kZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
ICAgICB2b2lkIHNldEpTVmFsdWUoTm9kZSogbm9kZSwgTFZhbHVlIHZhbHVlKQogICAgIHsKICAg
ICAgICAgbV9qc1ZhbHVlVmFsdWVzLnNldChub2RlLCBMb3dlcmVkTm9kZVZhbHVlKHZhbHVlLCBt
X2hpZ2hCbG9jaykpOwpAQCAtMzI2MSw2ICszNjg2LDE4IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBzZXRJbnQzMihtX25vZGUsIHZhbHVlKTsKICAgICB9CisgICAgdm9pZCBzZXRJbnQ0OChM
VmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBzZXRJbnQ0OChtX25vZGUsIHZhbHVlKTsKKyAg
ICB9CisgICAgdm9pZCBzZXRTdHJpY3RJbnQ0OChMVmFsdWUgdmFsdWUpCisgICAgeworICAgICAg
ICBzZXRTdHJpY3RJbnQ0OChtX25vZGUsIHZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBzZXRJbnQ0
OChMVmFsdWUgdmFsdWUsIEludDQ4S2luZCBraW5kKQorICAgIHsKKyAgICAgICAgc2V0SW50NDgo
bV9ub2RlLCB2YWx1ZSwga2luZCk7CisgICAgfQogICAgIHZvaWQgc2V0SlNWYWx1ZShMVmFsdWUg
dmFsdWUpCiAgICAgewogICAgICAgICBzZXRKU1ZhbHVlKG1fbm9kZSwgdmFsdWUpOwpAQCAtMzM0
MCw2ICszNzc3LDggQEAgcHJpdmF0ZToKICAgICBMVmFsdWUgbV90YWdNYXNrOwogICAgIAogICAg
IEhhc2hNYXA8Tm9kZSosIExvd2VyZWROb2RlVmFsdWU+IG1faW50MzJWYWx1ZXM7CisgICAgSGFz
aE1hcDxOb2RlKiwgTG93ZXJlZE5vZGVWYWx1ZT4gbV9zdHJpY3RJbnQ0OFZhbHVlczsKKyAgICBI
YXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX2ludDQ4VmFsdWVzOwogICAgIEhhc2hN
YXA8Tm9kZSosIExvd2VyZWROb2RlVmFsdWU+IG1fanNWYWx1ZVZhbHVlczsKICAgICBIYXNoTWFw
PE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX2Jvb2xlYW5WYWx1ZXM7CiAgICAgSGFzaE1hcDxO
b2RlKiwgTG93ZXJlZE5vZGVWYWx1ZT4gbV9zdG9yYWdlVmFsdWVzOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24g
MTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDggQEAgc3RhdGljIHZvaWQgY29tcGls
ZVN0dWIoCiAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86Om5vbkFyZ0dQUjAsIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0Zvcihhcmd1bWVudC5vcGVyYW5kKCkpKTsKICAgICB9CiAgICAgCisg
ICAgLy8gQWxsIHRlbXAgcmVnaXN0ZXJzIGFyZSBmcmVlIGF0IHRoaXMgcG9pbnQuCisgICAgCiAg
ICAgLy8gQm94IGFueXRoaW5nIHRoYXQgaXMgYWxyZWFkeSBvbiB0aGUgc3RhY2ssIG9yIHRoYXQg
aXMgYSBjb25zdGFudC4KICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBleGl0Lm1fdmFsdWVz
LnNpemUoKTsgaS0tOykgewpAQCAtMTI4LDYgKzEzMCwxMiBAQCBzdGF0aWMgdm9pZCBjb21waWxl
U3R1YigKICAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVn
VDAsIGFkZHJlc3MpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXhpdFZhbHVl
SW5KU1N0YWNrQXNJbnQ0ODoKKyAgICAgICAgICAgIGppdC5sb2FkNjQoYWRkcmVzcywgR1BSSW5m
bzo6cmVnVDApOworICAgICAgICAgICAgaml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LmJveEludDQ4
KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86
OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIGFkZHJl
c3MpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRXhpdFZhbHVlSW5KU1N0YWNr
QXNEb3VibGU6CiAgICAgICAgICAgICBqaXQubG9hZERvdWJsZShhZGRyZXNzLCBGUFJJbmZvOjpm
cFJlZ1QwKTsKICAgICAgICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BS
SW5mbzo6cmVnVDApOwpAQCAtMTYwLDkgKzE2OCwxMCBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1
YigKICAgICBleGl0Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVfSUYoCiAgICAgICAgIHNob3VsZFNo
b3dEaXNhc3NlbWJseSgpLAogICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgKCJGVEwgT1NS
IGV4aXQgIyV1IChiYyMldSwgJXMpIGZyb20gJXMiLAorICAgICAgICAoIkZUTCBPU1IgZXhpdCAj
JXUgKGJjIyV1LCAlcykgZnJvbSAlcywgd2l0aCBvcGVyYW5kcyA9ICVzIiwKICAgICAgICAgICAg
IGV4aXRJRCwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwKLSAgICAgICAgICAgIGV4
aXRLaW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0b0NTdHJpbmcoKmNvZGVCbG9jaykuZGF0YSgp
KSk7CisgICAgICAgICAgICBleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgdG9DU3RyaW5n
KCpjb2RlQmxvY2spLmRhdGEoKSwKKyAgICAgICAgICAgIHRvQ1N0cmluZyhpZ25vcmluZ0NvbnRl
eHQ8RHVtcENvbnRleHQ+KGV4aXQubV92YWx1ZXMpKS5kYXRhKCkpKTsKIH0KIAogZXh0ZXJuICJD
IiB2b2lkKiBjb21waWxlRlRMT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGV4aXRJ
RCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMTU1
OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTY2LDYgKzE2NiwxOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4g
Y2FsbChtdWxXaXRoT3ZlcmZsb3czMkludHJpbnNpYygpLCBsZWZ0LCByaWdodCk7CiAgICAgfQor
ICAgIExWYWx1ZSBhZGRXaXRoT3ZlcmZsb3c2NChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGNhbGwoYWRkV2l0aE92ZXJmbG93NjRJbnRyaW5zaWMoKSwg
bGVmdCwgcmlnaHQpOworICAgIH0KKyAgICBMVmFsdWUgc3ViV2l0aE92ZXJmbG93NjQoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBjYWxsKHN1YldpdGhP
dmVyZmxvdzY0SW50cmluc2ljKCksIGxlZnQsIHJpZ2h0KTsKKyAgICB9CisgICAgTFZhbHVlIG11
bFdpdGhPdmVyZmxvdzY0KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCisgICAgeworICAgICAg
ICByZXR1cm4gY2FsbChtdWxXaXRoT3ZlcmZsb3c2NEludHJpbnNpYygpLCBsZWZ0LCByaWdodCk7
CisgICAgfQogICAgIExWYWx1ZSBkb3VibGVBYnMoTFZhbHVlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGNhbGwoZG91YmxlQWJzSW50cmluc2ljKCksIHZhbHVlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3BwCShyZXZpc2lvbiAxNTU5
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTIgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIFZhbAogICAgIGNhc2UgVmFsdWVGb3JtYXRVSW50MzI6CiAgICAgICAgIG91dC5w
cmludCgiVUludDMyIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZhbHVlRm9ybWF0SW50
NDg6CisgICAgICAgIG91dC5wcmludCgiSW50NDgiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgVmFsdWVGb3JtYXRTdHJpY3RJbnQ0ODoKKyAgICAgICAgb3V0LnByaW50KCJTdHJpY3RJbnQ0
OCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1ZUZvcm1hdEJvb2xlYW46CiAgICAg
ICAgIG91dC5wcmludCgiQm9vbGVhbiIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5oCShyZXZpc2lvbiAxNTU5MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDYgKzQxLDggQEAgZW51bSBWYWx1ZUZvcm1hdCB7CiAgICAgSW52YWxpZFZhbHVl
Rm9ybWF0LAogICAgIFZhbHVlRm9ybWF0SW50MzIsCiAgICAgVmFsdWVGb3JtYXRVSW50MzIsCisg
ICAgVmFsdWVGb3JtYXRJbnQ0OCwKKyAgICBWYWx1ZUZvcm1hdFN0cmljdEludDQ4LAogICAgIFZh
bHVlRm9ybWF0Qm9vbGVhbiwKICAgICBWYWx1ZUZvcm1hdEpTVmFsdWUsCiAgICAgVmFsdWVGb3Jt
YXREb3VibGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVTb3VyY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVTb3Vy
Y2UuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFZhbHVlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOSBAQCB2b2lkIFZh
bHVlU291cmNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAgICAgY2FzZSBJbnQzMkluSlNTdGFj
azoKICAgICAgICAgb3V0LnByaW50KCJJbnQzMkluSlNTdGFjayIpOwogICAgICAgICByZXR1cm47
CisgICAgY2FzZSBJbnQ0OEluSlNTdGFjazoKKyAgICAgICAgb3V0LnByaW50KCJJbnQ0OEluSlNT
dGFjayIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBEb3VibGVJbkpTU3RhY2s6CiAgICAg
ICAgIG91dC5wcmludCgiRG91YmxlSW5KU1N0YWNrIik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVTb3VyY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlU291cmNlLmgJKHJldmlzaW9uIDE1
NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVTb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBlbnVtIFZhbHVlU291cmNlS2luZCB7CiAgICAg
U291cmNlTm90U2V0LAogICAgIFZhbHVlSW5KU1N0YWNrLAogICAgIEludDMySW5KU1N0YWNrLAor
ICAgIEludDQ4SW5KU1N0YWNrLAogICAgIERvdWJsZUluSlNTdGFjaywKICAgICBTb3VyY2VJc0Rl
YWQsCiAgICAgSGF2ZU5vZGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9SZWdpc3Rlci5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHZQQygpIGNvbnN0OwogICAg
ICAgICBJbmxpbmVDYWxsRnJhbWUqIGFzSW5saW5lQ2FsbEZyYW1lKCkgY29uc3Q7CiAgICAgICAg
IGludDMyX3QgdW5ib3hlZEludDMyKCkgY29uc3Q7CisgICAgICAgIGludDY0X3QgdW5ib3hlZElu
dDQ4KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgdW5ib3hlZEJvb2xlYW4oKSBjb25zdDsKICAgICAg
ICAgZG91YmxlIHVuYm94ZWREb3VibGUoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiB1bmJveGVk
Q2VsbCgpIGNvbnN0OwpAQCAtOTgsNiArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciBlbmNvZGVkVmFsdWU7CiAgICAgICAgICAgICBkb3VibGUgbnVtYmVy
OworICAgICAgICAgICAgaW50NjRfdCBpbnRlZ2VyOwogICAgICAgICB9IHU7CiAgICAgfTsKIApA
QCAtMTg1LDYgKzE4NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHBheWxv
YWQoKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIGludDY0X3QgUmVnaXN0ZXI6OnVuYm94
ZWRJbnQ0OCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdS5pbnRlZ2VyID4+IDE2Owor
ICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBSZWdpc3Rlcjo6dW5ib3hlZEJvb2xlYW4o
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICEhcGF5bG9hZCgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCShyZXZpc2lvbiAxNTU5MDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zODMsNiArMzgzLDkgQEAgdm9pZCBBcmd1bWVudHM6OnRlYXJPZmZGb3JJbmxp
bmVDYWxsRnJhbQogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoK
ICAgICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIobG9jYXRpb24tPnVuYm94ZWRJbnQzMigpKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWRJbnQ0ODoKKyAgICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIobG9jYXRpb24tPnVuYm94ZWRJ
bnQ0OCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3Rh
Y2tBc1VuYm94ZWRDZWxsOgogICAgICAgICAgICAgdmFsdWUgPSBsb2NhdGlvbi0+dW5ib3hlZENl
bGwoKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5kZXhpbmdUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbmRleGluZ1R5cGUuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGluZ1R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MCwxMSArNTAsMTEgQEAgSW5kZXhpbmdUeXBlIGxlYXN0VXBwZXJCb3VuZE9mSW5kZXhpbmdU
eQogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBpZiAoaXNJbnQz
MlNwZWN1bGF0aW9uKHR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIChpbmRleGluZ1R5cGUgJiB+
SW5kZXhpbmdTaGFwZU1hc2spIHwgSW50MzJTaGFwZTsKLSAgICAgICAgaWYgKGlzTnVtYmVyU3Bl
Y3VsYXRpb24odHlwZSkpCisgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbih0eXBl
KSkKICAgICAgICAgICAgIHJldHVybiAoaW5kZXhpbmdUeXBlICYgfkluZGV4aW5nU2hhcGVNYXNr
KSB8IERvdWJsZVNoYXBlOwogICAgICAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIH5JbmRleGlu
Z1NoYXBlTWFzaykgfCBDb250aWd1b3VzU2hhcGU7CiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVY
SU5HX1RZUEVTOgotICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbih0eXBlKSkKKyAgICAg
ICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHR5cGUpKQogICAgICAgICAgICAgcmV0dXJu
IGluZGV4aW5nVHlwZTsKICAgICAgICAgcmV0dXJuIChpbmRleGluZ1R5cGUgJiB+SW5kZXhpbmdT
aGFwZU1hc2spIHwgQ29udGlndW91c1NoYXBlOwogICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5E
RVhJTkdfVFlQRVM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw2ICsxOTEsNyBAQCBwdWJsaWM6
CiAKICAgICBpbnQzMl90IGFzSW50MzIoKSBjb25zdDsKICAgICB1aW50MzJfdCBhc1VJbnQzMigp
IGNvbnN0OworICAgIGludDY0X3QgYXNNYWNoaW5lSW50KCkgY29uc3Q7CiAgICAgZG91YmxlIGFz
RG91YmxlKCkgY29uc3Q7CiAgICAgYm9vbCBhc0Jvb2xlYW4oKSBjb25zdDsKICAgICBkb3VibGUg
YXNOdW1iZXIoKSBjb25zdDsKQEAgLTIwMiw2ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c051bGwoKSBjb25zdDsKICAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0Jvb2xlYW4oKSBjb25zdDsKKyAgICBib29sIGlzTWFjaGluZUludCgpIGNvbnN0Owog
ICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1ByaW1pdGl2ZSgpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNTU5MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OTQsNiArNDk0LDM1IEBAIEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1Zh
bHVlOjphc0NlbGwoKSAKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKK2lubGluZSBib29s
IEpTVmFsdWU6OmlzTWFjaGluZUludCgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW50MzIoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFpc051bWJlcigpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgZG91YmxlIG51bWJlciA9IGFzRG91YmxlKCk7CisgICAgaWYgKG51bWJlciAh
PSBudW1iZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbnQ2NF90IGFzSW50NjQgPSBz
dGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIpOworICAgIGlmIChhc0ludDY0ICE9IG51bWJlcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghYXNJbnQ2NCAmJiBzdGQ6OnNpZ25iaXQo
bnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhc0ludDY0ID49IChzdGF0
aWNfY2FzdDxpbnQ2NF90PigxKSA8PCA0NykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoYXNJbnQ2NCA8IC0oc3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgNDcpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBpbnQ2NF90IEpTVmFs
dWU6OmFzTWFjaGluZUludCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFjaGluZUludCgpKTsK
KyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gYXNJbnQzMigpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ2NF90Pihhc0RvdWJsZSgpKTsKK30KKwogaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNTdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwo
KS0+aXNTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTU5MjUpCisrKyBTb3VyY2UvV1RGL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA5LTE2ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBzdXBwb3J0
IEludDQ4IGZvciBsb2NhbCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMTA2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL1ByaW50U3RyZWFtLmg6CisgICAgICAgIChXVEY6OlZh
bHVlSWdub3JpbmdDb250ZXh0OjpWYWx1ZUlnbm9yaW5nQ29udGV4dCk6CisgICAgICAgIChXVEY6
OlZhbHVlSWdub3JpbmdDb250ZXh0OjpkdW1wKToKKyAgICAgICAgKFdURjo6aWdub3JpbmdDb250
ZXh0KToKKwogMjAxMy0wOS0xNiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRml4IFdlYktpdDEgYnVpbGQgYWZ0ZXIgcjE1NTkxMApJbmRleDogU291
cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Q
cmludFN0cmVhbS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvV1RGL3d0Zi9QcmludFN0
cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsMTEgKzM2MCwzNiBAQCBWYWx1ZUluQ29udGV4
dDxULCBVPiBpbkNvbnRleHQoY29uc3QgVCYgCiAgICAgcmV0dXJuIFZhbHVlSW5Db250ZXh0PFQs
IFU+KHZhbHVlLCBjb250ZXh0KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KK2NsYXNzIFZhbHVlSWdub3JpbmdDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBWYWx1ZUlnbm9y
aW5nQ29udGV4dChjb25zdCBVJiB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKCZ2YWx1ZSkKKyAg
ICB7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAor
ICAgIHsKKyAgICAgICAgVCBjb250ZXh0OworICAgICAgICBtX3ZhbHVlLT5kdW1wSW5Db250ZXh0
KG91dCwgJmNvbnRleHQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBVKiBtX3ZhbHVl
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK1ZhbHVlSWdub3JpbmdD
b250ZXh0PFQsIFU+IGlnbm9yaW5nQ29udGV4dChjb25zdCBVJiB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gVmFsdWVJZ25vcmluZ0NvbnRleHQ8VCwgVT4odmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAogdXNpbmcgV1RGOjpDaGFyYWN0ZXJEdW1wOwogdXNpbmcgV1RGOjpQb2ludGVyRHVt
cDsKIHVzaW5nIFdURjo6UHJpbnRTdHJlYW07Cit1c2luZyBXVEY6Omlnbm9yaW5nQ29udGV4dDsK
IHVzaW5nIFdURjo6aW5Db250ZXh0OwogdXNpbmcgV1RGOjpwb2ludGVyRHVtcDsKIAo=
</data>
<flag name="review"
          id="233998"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211929</attachid>
            <date>2013-09-17 12:05:00 -0700</date>
            <delta_ts>2013-09-17 12:05:00 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>213938</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1OTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwOSBA
QAorMjAxMy0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBzaG91bGQgc3VwcG9ydCBJbnQ1MiBmb3IgbG9jYWwgdmFyaWFibGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEwNjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWRkcyBJ
bnQ1MiBzdXBwb3J0IGZvciBsb2NhbCB2YXJpYWJsZXMgdG8gdGhlIERGRyBhbmQgRlRMLiBJdCdz
IGEgc3BlZWQtdXAgb24KKyAgICAgICAgcHJvZ3JhbXMgdGhhdCBoYXZlIGxvY2FsIGludDMyIG92
ZXJmbG93cyBidXQgd2hlcmUgYSBsYXJnZXIgaW50IHJlcHJlc2VudGF0aW9uIGNhbgorICAgICAg
ICBwcmV2ZW50IHVzIGZyb20gaGF2aW5nIHRvIGNvbnZlcnQgYWxsIHRoZSB3YXkgdXAgdG8gZG91
YmxlLgorICAgICAgICAKKyAgICAgICAgSXQncyBhIHNtYWxsIHNwZWVkLXVwIGZvciBub3cuIEJ1
dCB3ZSdyZSBqdXN0IHN1cHBvcnRpbmcgSW50NTIgZm9yIGEgaGFuZGZ1bCBvZgorICAgICAgICBv
cGVyYXRpb25zIChhZGQsIHN1YiwgbXVsLCBuZWcsIGNvbXBhcmUsIGJpdG9wcywgdHlwZWQgYXJy
YXkgYWNjZXNzKSBhbmQgdGhpcyBsYXlzCisgICAgICAgIHRoZSBncm91bmR3b3JrIGZvciBhZGRp
bmcgSW50NTIgdG8gSlNWYWx1ZSwgd2hpY2ggd2lsbCBwcm9iYWJseSBiZSBhIGJpZ2dlcgorICAg
ICAgICBzcGVlZC11cC4KKyAgICAgICAgCisgICAgICAgIFRoZSBiYXNpYyBhcHByb2FjaCBpczoK
KyAgICAgICAgCisgICAgICAgIC0gV2UgaGF2ZSBhIG5vdGlvbiBvZiBJbnQ1MiBpbiBvdXIgdHlw
ZXN5c3RlbS4gSW50NTIgZG9lc24ndCBiZWxvbmcgdG8gQnl0ZWNvZGVUb3AKKyAgICAgICAgICBv
ciBIZWFwVG9wIC0gaS5lLiBpdCBkb2Vzbid0IGFyaXNlIGZyb20gSlNWYWx1ZXMuCisgICAgICAg
IAorICAgICAgICAtIERGRyB0cmVhdHMgSW50NTIgYXMgYmVpbmcgcGFydCBvZiBpdHMgRnVsbFRv
cCBhbmQgd2lsbCB0cmVhdCBpdCBhcyBiZWluZyBhCisgICAgICAgICAgc3VidHlwZSBvZiBkb3Vi
bGUgdW5sZXNzIGluc3RydWN0ZWQgb3RoZXJ3aXNlLgorICAgICAgICAKKyAgICAgICAgLSBQcmVk
aWN0aW9uIHByb3BhZ2F0b3IgY3JlYXRlcyBJbnQ1MnMgd2hlbmV2ZXIgd2UgaGF2ZSBhIG5vZGUg
Z29pbmcgZG91Ymx5IGJ1dCBkdWUKKyAgICAgICAgICB0byBsYXJnZSB2YWx1ZXMgcmF0aGVyIHRo
YW4gZnJhY3Rpb25hbCB2YWx1ZXMsIGFuZCB0aGF0IG5vZGUgaXMga25vd24gdG8gYmUgYWJsZQor
ICAgICAgICAgIHRvIHByb2R1Y2UgSW50NTIgbmF0aXZlbHkgaW4gdGhlIERGRyBiYWNrZW5kLgor
ICAgICAgICAKKyAgICAgICAgLSBGaXh1cCBwaGFzZSBjb252ZXJ0cyBlZGdlcyB0byBNYWNoaW5l
SW50VXNlcyBpbiBub2RlcyB0aGF0IGFyZSBrbm93biB0byBiZSBhYmxlCisgICAgICAgICAgdG8g
ZGVhbCB3aXRoIEludDUyLCBhbmQgd2hlcmUgd2UgaGF2ZSBhIHN1YnR5cGUgb2YgSW50MzJ8SW50
NTIgYXMgdGhlIHByZWRpY3RlZAorICAgICAgICAgIGlucHV0LgorICAgICAgICAKKyAgICAgICAg
LSBUaGUgREZHIGJhY2tlbmQgYW5kIEZUTCBMTFZNIElSIGxvd2VyaW5nIGhhdmUgdHdvIG5vdGlv
bnMgb2YgSW50NTJzIC0gb25lcyB0aGF0CisgICAgICAgICAgYXJlIGxlZnQtc2hpZnRlZCBieSAx
NiAoZ3JlYXQgZm9yIG92ZXJmbG93IGNoZWNrcykgYW5kIG9uZXMgdGhhdCBhcmUKKyAgICAgICAg
ICBzaWduLWV4dGVuZGVkLiBCb3RoIGJhY2tlbmRzIGtub3cgaG93IHRvIGNvbnZlcnQgYmV0d2Vl
biBJbnQ1MnMgYW5kIHRoZSBvdGhlcgorICAgICAgICAgIHJlcHJlc2VudGF0aW9ucy4KKworICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4Nl82NDo6cnNoaWZ0NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6bXVsNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6
YnJhbmNoTXVsNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNo
TmVnNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29udmVydEludDY0
VG9Eb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjppbXVscV9ycik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6Y3Z0c2kyc2RxX3JyKToKKyAgICAgICAgKiBieXRlY29kZS9EYXRhRm9ybWF0Lmg6CisgICAg
ICAgIChKU0M6OmRhdGFGb3JtYXRUb1N0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFu
ZHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Ojo6ZHVtcEluQ29udGV4dCk6CisgICAgICAgICog
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAoSlNDOjpkdW1wU3BlY3VsYXRp
b24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21WYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGht
ZXRpYyk6CisgICAgICAgIChKU0M6OmlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRp
Yyk6CisgICAgICAgIChKU0M6OmlzQnl0ZWNvZGVSZWFsTnVtYmVyU3BlY3VsYXRpb24pOgorICAg
ICAgICAoSlNDOjppc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpp
c0J5dGVjb2RlTnVtYmVyU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQnl0ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAoSlNDOjppc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaDoKKyAg
ICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUy
KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6aW5HUFIpOgorICAgICAgICAoSlNDOjpW
YWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2spOgorICAgICAgICAoSlNDOjpWYWx1ZVJl
Y292ZXJ5Ojppc0FscmVhZHlJbkpTU3RhY2spOgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5
OjpncHIpOgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5Ojp2aXJ0dWFsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5OjpkdW1wSW5Db250ZXh0KToKKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI6Om5lZWRzVHlwZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFj
dEludGVycHJldGVyOjpmaWx0ZXJCeVR5cGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6Ojo6ZXhlY3V0ZUVmZmVjdHMp
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y291bGRCZVR5cGUpOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmlzVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RWYWx1ZTo6dmFsaWRhdGVUeXBlKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OnJlZmluZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
Ym94SW50NTIpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Q1NFUGhhc2U6OnB1cmVDU0UpOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpn
ZXRCeVZhbExvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBl
cmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAg
ICAgKEpTQzo6REZHOjplbmFibGVJbnQ1Mik6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cFNldExvY2Fsc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmZpeHVwVW50eXBlZFNldExvY2Fsc0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25Ob2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXhFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbmplY3RJ
bnQzMlRvRG91YmxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1w
dFRvTWFrZUludGVnZXJBZGQpOgorICAgICAgICAqIGRmZy9ERkdGbHVzaEZvcm1hdC5jcHA6Cisg
ICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdGbHVzaEZvcm1h
dC5oOgorICAgICAgICAoSlNDOjpERkc6OnJlc3VsdEZvcik6CisgICAgICAgIChKU0M6OkRGRzo6
dXNlS2luZEZvcik6CisgICAgICAgICogZGZnL0RGR0dlbmVyYXRpb25JbmZvLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R2VuZXJhdGlvbkluZm86OmluaXRJbnQ1Mik6CisgICAgICAgIChKU0M6OkRG
Rzo6R2VuZXJhdGlvbkluZm86OmluaXRTdHJpY3RJbnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6
R2VuZXJhdGlvbkluZm86OmlzRm9ybWF0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0aW9u
SW5mbzo6aXNJbnQ1Mik6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdGlvbkluZm86OmlzU3Ry
aWN0SW50NTIpOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjpmaWxsSW50NTIp
OgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRpb25JbmZvOjpmaWxsU3RyaWN0SW50NTIpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1
bXApOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjphZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6bXVsU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6Om5lZ2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQpOgorICAgICAgICAqIGRmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3Ry
YWN0U3RhdGU6Om1lcmdlU3RhdGVBdFRhaWwpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb2RlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpyZWNvbnN0cnVjdCk6CisgICAgICAgICog
ZGZnL0RGR01pbmlmaWVkTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OmJlbG9uZ3NJbk1pbmlm
aWVkR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6Ok1pbmlmaWVkTm9kZTo6aGFzQ2hpbGQpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxk
U3BlY3VsYXRlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxh
dGVOdW1iZXJFeHBlY3RpbmdEZWZpbmVkKToKKyAgICAgICAgKiBkZmcvREZHTm9kZUZsYWdzLmg6
CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Zm9yd2Fy
ZFJld2lyaW5nU2VsZWN0aW9uU2NvcmUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGls
ZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6c3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0
aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJv
cGFnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6
ZG9Eb3VibGVWb3RpbmcpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAo
SlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTaWxlbnRSZWdpc3Rl
clNhdmVQbGFuLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50U2F2ZVBsYW5Gb3JHUFIpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbmNoKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBl
ZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhNdWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWFjaGluZUludCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlYWxOdW1iZXIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YW5SZXVzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmlzRmlsbGVkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNGaWxsZWREb3VibGUpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp1c2UpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjppc0tub3duSW50ZWdlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmlzS25vd25DZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6aXNLbm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmludDUyUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3Ry
aWN0SW50NTJSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjppbml0
Q29uc3RhbnRJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNJbnRl
Z2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YmV0dGVyVXNlU3RyaWN0
SW50NTIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmF0aW9uSW5m
byk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlSW50NTJPcGVyYW5kOjpTcGVjdWxhdGVJ
bnQ1Mk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludDUyT3BlcmFuZDo6
flNwZWN1bGF0ZUludDUyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlSW50
NTJPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnQ1Mk9wZXJh
bmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludDUyT3BlcmFuZDo6Z3By
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQ6OnVzZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kOjpTcGVjdWxhdGVTdHJp
Y3RJbnQ1Mk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVN0cmljdEludDUy
T3BlcmFuZDo6flNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQ6OnVzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kOjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJh
bmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZDo6
flNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kOjplZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQ6Om5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQ6OnVzZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kOjpmb3JtYXQpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Ym94SW50NTIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDUyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50NTJDb21wYXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50NTJCcmFu
Y2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRl
ckZvcik6CisgICAgICAgIChKU0M6OkRGRzo6aXNOdW1lcmljYWwpOgorICAgICAgICAqIGRmZy9E
RkdWYWx1ZVNvdXJjZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OmR1bXAp
OgorICAgICAgICAqIGRmZy9ERkdWYWx1ZVNvdXJjZS5oOgorICAgICAgICAoSlNDOjpERkc6OmRh
dGFGb3JtYXRUb1ZhbHVlU291cmNlS2luZCk6CisgICAgICAgIChKU0M6OkRGRzo6dmFsdWVTb3Vy
Y2VLaW5kVG9EYXRhRm9ybWF0KToKKyAgICAgICAgKEpTQzo6REZHOjpWYWx1ZVNvdXJjZTo6Zm9y
Rmx1c2hGb3JtYXQpOgorICAgICAgICAoSlNDOjpERkc6OlZhbHVlU291cmNlOjp2YWx1ZVJlY292
ZXJ5KToKKyAgICAgICAgKiBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmg6CisgICAgICAgIChK
U0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjpzaG91bGRVc2VEb3VibGVGb3JtYXRBY2NvcmRp
bmdUb1ZvdGUpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6Zmx1c2hG
b3JtYXQpOgorICAgICAgICAqIGZ0bC9GVExDQXJndW1lbnRHZXR0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkNBcmd1bWVudEdldHRlcjo6bG9hZE5leHRBbmRCb3gpOgorICAgICAgICAqIGZ0
bC9GVExDQXJndW1lbnRHZXR0ZXIuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMRXhp
dFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OmR1bXBJbkNvbnRleHQp
OgorICAgICAgICAqIGZ0bC9GVExFeGl0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0
VmFsdWU6OmluSlNTdGFja0FzSW50NTIpOgorICAgICAgICAqIGZ0bC9GVExJbnRyaW5zaWNSZXBv
c2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y3JlYXRlUGhpVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVXBzaWxvbik6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQaGkpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlU2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUFyaXRoU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFy
aXRoTmVnYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBh
cmVFcSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDb21wYXJl
U3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29t
cGFyZUxlc3MpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29t
cGFyZUxlc3NFcSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVD
b21wYXJlR3JlYXRlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVDb21wYXJlR3JlYXRlckVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
bG93SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dJbnQ1Mik6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd1N0cmljdEludDUyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YmV0dGVyVXNlU3RyaWN0SW50NTIpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpiZXN0SW50NTJLaW5kKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6b3Bwb3NpdGUpOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpJbnQ1MnM6Om9wZXJhdG9yW10pOgorICAgICAgICAoSlNDOjpG
VEw6Okxvd2VyREZHVG9MTFZNOjpsb3dXaGljaGV2ZXJJbnQ1Mik6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd1doaWNoZXZlckludDUycyk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd09wcG9zaW5nSW50NTJzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6bG93Q2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdU
b0xMVk06Omxvd0Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjps
b3dEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpsb3dKU1ZhbHVl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3RyaWN0SW50NTJUb0ludDMy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3RyaWN0SW50NTJUb0RvdWJs
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnN0cmljdEludDUyVG9KU1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0SW50NTJXaXRoU3Ry
aWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzdHJpY3RJbnQ1
MlRvSW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjppbnQ1MlRvU3Ry
aWN0SW50NTIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVS
ZWFsTnVtYmVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aW5pdGlhbGl6
ZU9TUkV4aXRTdGF0ZUZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6ZW1pdE9TUkV4aXRDYWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
YWRkRXhpdEFyZ3VtZW50Rm9yTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OnNldEludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c2V0U3Ry
aWN0SW50NTIpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGRXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpzdWJXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjptdWxXaXRoT3ZlcmZsb3c2NCk6CisgICAgICAgICogZnRsL0ZUTFZhbHVlRm9ybWF0
LmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZnRsL0ZUTFZh
bHVlRm9ybWF0Lmg6CisgICAgICAgICogZnRsL0ZUTFZhbHVlU291cmNlLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpWYWx1ZVNvdXJjZTo6ZHVtcCk6CisgICAgICAgICogZnRsL0ZUTFZhbHVlU291
cmNlLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaDoKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXI6OnVuYm94ZWRJbnQ1Mik6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3Bw
OgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnRlYXJPZmZGb3JJbmxpbmVDYWxsRnJhbWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bGVhc3RV
cHBlckJvdW5kT2ZJbmRleGluZ1R5cGVBbmRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pT
VmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OmlzTWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmFz
TWFjaGluZUludCk6CisKIDIwMTMtMDktMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJn
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrZWRCbG9ja3Mgc2hvdWxkbid0IGJlIHB1dCBpbiBB
bGxvY2F0ZWQgc3RhdGUgaWYgdGhleSBkaWRuJ3QgcHJvZHVjZSBhIEZyZWVMaXN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw2ICsy
MzAsMTYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zaGxxX2k4cihpbW0ubV92YWx1
ZSwgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgcnNoaWZ0NjQoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2FycV9pOHIo
aW1tLm1fdmFsdWUsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIG11bDY0KFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5pbXVs
cV9ycihzcmMsIGRlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIG5lZzY0KFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfcihkZXN0KTsKQEAgLTUzMCw2
ICs1NDAsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Mo
eDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hNdWw2NChSZXN1
bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG11bDY0KHNyYywgZGVzdCk7CisgICAgICAgIGlmIChjb25kICE9IE92ZXJmbG93
KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHFfcnIoZGVzdCwgZGVzdCk7CisgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKKyAgICB9
CisKICAgICBKdW1wIGJyYW5jaFN1YjY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWI2NChpbW0sIGRlc3Qp
OwpAQCAtNTQ4LDYgKzU2NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hTdWI2
NChjb25kLCBzcmMyLCBkZXN0KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaE5lZzY0KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBuZWc2
NChzcmNEZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOworICAgIH0KKwogICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRp
YmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCA9IENvbnZlcnRpYmxlTG9hZExhYmVsKHRo
aXMpOwpAQCAtNTk1LDYgKzYxOSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0
ZXIpLCBtYXNrKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbnZlcnRJbnQ2NFRvRG91YmxlKFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmN2dHNpMnNkcV9ycihzcmMsIGRlc3QpOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzRmxvYXRpbmdQb2ludCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAvLyBTZWUgY29tbWVudCBv
biBNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpCiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSB7IHJldHVybiB0
cnVlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyOSwxMyArODI5LDIwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICAg
ICAgfQogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIENQVShYODZfNjQpCiAKICAgICB2b2lkIGlt
dWxsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1f
Zm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3QsIHNyYyk7CiAgICAgfQogCisj
aWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGltdWxxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9JTVVM
X0d2RXYsIGRzdCwgc3JjKTsKKyAgICB9CisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogICAgIHZv
aWQgaW11bGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfSU1VTF9HdkV2LCBkc3Qs
IGJhc2UsIG9mZnNldCk7CkBAIC0xNjExLDYgKzE2MTgsMTQgQEAgcHVibGljOgogICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNJMlNEX1ZzZEVkLCAoUmVnaXN0ZXJJRClkc3Qs
IHNyYyk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2b2lkIGN2dHNpMnNkcV9ycihS
ZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0
KE9QMl9DVlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBzcmMpOworICAgIH0KKyNlbmRp
ZgorCiAgICAgdm9pZCBjdnRzaTJzZF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhN
TVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9T
U0VfRjIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGF0YUZvcm1h
dC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGF0YUZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiBlbnVtIERhdGFGb3JtYXQgewogICAgIERhdGFGb3JtYXROb25lID0gMCwKICAgICBE
YXRhRm9ybWF0SW50MzIgPSAxLAotICAgIERhdGFGb3JtYXREb3VibGUgPSAyLAotICAgIERhdGFG
b3JtYXRCb29sZWFuID0gMywKLSAgICBEYXRhRm9ybWF0Q2VsbCA9IDQsCi0gICAgRGF0YUZvcm1h
dFN0b3JhZ2UgPSA1LAorICAgIERhdGFGb3JtYXRJbnQ1MiA9IDIsIC8vIEludDUyJ3MgYXJlIGxl
ZnQtc2hpZnRlZCBieSAxNiBieSBkZWZhdWx0LgorICAgIERhdGFGb3JtYXRTdHJpY3RJbnQ1MiA9
IDMsIC8vICJTdHJpY3QiIEludDUyIG1lYW5zIGl0J3Mgbm90IHNoaWZ0ZWQuCisgICAgRGF0YUZv
cm1hdERvdWJsZSA9IDQsCisgICAgRGF0YUZvcm1hdEJvb2xlYW4gPSA1LAorICAgIERhdGFGb3Jt
YXRDZWxsID0gNiwKKyAgICBEYXRhRm9ybWF0U3RvcmFnZSA9IDcsCiAgICAgRGF0YUZvcm1hdEpT
ID0gOCwKICAgICBEYXRhRm9ybWF0SlNJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRJ
bnQzMiwKICAgICBEYXRhRm9ybWF0SlNEb3VibGUgPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0
RG91YmxlLApAQCAtNjQsNiArNjYsMTAgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRU
b1N0cmluZyhEYQogICAgICAgICByZXR1cm4gIk5vbmUiOwogICAgIGNhc2UgRGF0YUZvcm1hdElu
dDMyOgogICAgICAgICByZXR1cm4gIkludDMyIjsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoK
KyAgICAgICAgcmV0dXJuICJJbnQ1MiI7CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6
CisgICAgICAgIHJldHVybiAiU3RyaWN0SW50NTIiOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJs
ZToKICAgICAgICAgcmV0dXJuICJEb3VibGUiOwogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAJKHJldmlz
aW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDggQEAgY29uc3QgY2hhciogZXhpdEtpbmRU
b1N0cmluZyhFeGl0S2luZCBraQogICAgICAgICByZXR1cm4gIk92ZXJmbG93IjsKICAgICBjYXNl
IE5lZ2F0aXZlWmVybzoKICAgICAgICAgcmV0dXJuICJOZWdhdGl2ZVplcm8iOwotICAgIGNhc2Ug
SW50NDhPdmVyZmxvdzoKLSAgICAgICAgcmV0dXJuICJJbnQ0OE92ZXJmbG93IjsKKyAgICBjYXNl
IEludDUyT3ZlcmZsb3c6CisgICAgICAgIHJldHVybiAiSW50NTJPdmVyZmxvdyI7CiAgICAgY2Fz
ZSBTdG9yZVRvSG9sZToKICAgICAgICAgcmV0dXJuICJTdG9yZVRvSG9sZSI7CiAgICAgY2FzZSBM
b2FkRnJvbUhvbGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtp
bmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtp
bmQuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBFeGl0S2lu
ZCB7CiAgICAgQmFkSW5kZXhpbmdUeXBlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhbiBpbmRleGlu
ZyB0eXBlIHdhcyB3cm9uZy4KICAgICBPdmVyZmxvdywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugb2Yg
b3ZlcmZsb3cuCiAgICAgTmVnYXRpdmVaZXJvLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmNv
dW50ZXJlZCBuZWdhdGl2ZSB6ZXJvLgotICAgIEludDQ4T3ZlcmZsb3csIC8vIFdlIGV4aXRlZCBi
ZWNhdXNlIG9mIGFuIEludDQ4IG92ZXJmbG93LgorICAgIEludDUyT3ZlcmZsb3csIC8vIFdlIGV4
aXRlZCBiZWNhdXNlIG9mIGFuIEludDUyIG92ZXJmbG93LgogICAgIFN0b3JlVG9Ib2xlLCAvLyBX
ZSBoYWQgYSBzdG9yZSB0byBhIGhvbGUuCiAgICAgTG9hZEZyb21Ib2xlLCAvLyBXZSBoYWQgYSBs
b2FkIGZyb20gYSBob2xlLgogICAgIE91dE9mQm91bmRzLCAvLyBXZSBoYWQgYW4gb3V0LW9mLWJv
dW5kcyBhY2Nlc3MgdG8gYW4gYXJyYXkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wZXJhbmRzSW5saW5lcy5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHNJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBPcGVyYW5kczxULCBUcmFpdHM+OjpkdW1wSW5Db250
ZXh0KAogICAgIGZvciAoc2l6ZV90IGxvY2FsSW5kZXggPSAwOyBsb2NhbEluZGV4IDwgbnVtYmVy
T2ZMb2NhbHMoKTsgKytsb2NhbEluZGV4KSB7CiAgICAgICAgIGlmIChUcmFpdHM6OmlzRW1wdHlG
b3JEdW1wKGxvY2FsKGxvY2FsSW5kZXgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJyIiwgbG9jYWxJbmRleCwgIjoiLCBpbkNvbnRleHQobG9jYWwo
bG9jYWxJbmRleCksIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwg
bG9jYWxJbmRleCwgIjoiLCBpbkNvbnRleHQobG9jYWwobG9jYWxJbmRleCksIGNvbnRleHQpKTsK
ICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0
LDIwICsxNTQsMTggQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dCwgUwog
ICAgIH0KICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjSW50MzIpCi0gICAgICAgIG15T3V0LnBy
aW50KCJJbnQiKTsKKyAgICAgICAgbXlPdXQucHJpbnQoIkludDMyIik7CiAgICAgZWxzZQogICAg
ICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAorICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQ1MikKKyAg
ICAgICAgbXlPdXQucHJpbnQoIkludDUyIik7CisgICAgICAgIAogICAgIGlmICgodmFsdWUgJiBT
cGVjRG91YmxlKSA9PSBTcGVjRG91YmxlKQogICAgICAgICBteU91dC5wcmludCgiRG91YmxlIik7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQ0OEFzRG91YmxlKQotICAg
ICAgICAgICAgbXlPdXQucHJpbnQoIkludDQ4YXNkb3VibGUiKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGlmICh2YWx1ZSAmIFNw
ZWNJbnQ0OCkKLSAgICAgICAgICAgIG15T3V0LnByaW50KCJJbnQ0OCIpOworICAgICAgICBpZiAo
dmFsdWUgJiBTcGVjSW50NTJBc0RvdWJsZSkKKyAgICAgICAgICAgIG15T3V0LnByaW50KCJJbnQ1
MmFzZG91YmxlIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAg
ICAgICAgIApAQCAtMjQzLDEzICsyNDEsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHNwZWN1bGF0
aW9uVG9BYmJyZXZpYQogICAgICAgICByZXR1cm4gIjxDZWxsPiI7CiAgICAgaWYgKGlzSW50MzJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8SW50MzI+IjsKLSAgICBp
ZiAoaXNJbnQ0OEFzRG91YmxlU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCi0gICAgICAgIHJldHVy
biAiPEludDQ4QXNEb3VibGU+IjsKLSAgICBpZiAoaXNJbnQ0OFNwZWN1bGF0aW9uKHByZWRpY3Rp
b24pKQotICAgICAgICByZXR1cm4gIjxJbnQ0OD4iOworICAgIGlmIChpc0ludDUyQXNEb3VibGVT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8SW50NTJBc0RvdWJsZT4i
OworICAgIGlmIChpc0ludDUyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgIHJldHVy
biAiPEludDUyPiI7CisgICAgaWYgKGlzTWFjaGluZUludFNwZWN1bGF0aW9uKHByZWRpY3Rpb24p
KQorICAgICAgICByZXR1cm4gIjxNYWNoaW5lSW50PiI7CiAgICAgaWYgKGlzRG91YmxlU3BlY3Vs
YXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPERvdWJsZT4iOwotICAgIGlmIChp
c051bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8TnVtYmVyPiI7CiAgICAgaWYg
KGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxCb29s
ZWFuPiI7CkBAIC0zNDUsMTYgKzM0NSwxMSBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZy
b21WYWx1ZShKU1ZhCiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CiAgICAgaWYgKHZhbHVlLmlz
RG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVlLmFzTnVtYmVyKCk7Ci0g
ICAgICAgIGlmIChudW1iZXIgPT0gbnVtYmVyKSB7Ci0gICAgICAgICAgICBpbnQ2NF90IGFzSW50
NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIpOwotICAgICAgICAgICAgaWYgKGFzSW50
NjQgPT0gbnVtYmVyICYmIChhc0ludDY0IHx8ICFzdGQ6OnNpZ25iaXQobnVtYmVyKSkKLSAgICAg
ICAgICAgICAgICAmJiBhc0ludDY0IDwgKHN0YXRpY19jYXN0PGludDY0X3Q+KDEpIDw8IDQ3KQot
ICAgICAgICAgICAgICAgICYmIGFzSW50NjQgPj0gLShzdGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8
PCA0NykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU3BlY0ludDQ4QXNEb3VibGU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU3BlY05vbkludEFzRG91YmxlOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFOOworICAgICAgICBpZiAobnVtYmVyICE9
IG51bWJlcikKKyAgICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFOOworICAgICAgICBpZiAo
dmFsdWUuaXNNYWNoaW5lSW50KCkpCisgICAgICAgICAgICByZXR1cm4gU3BlY0ludDUyQXNEb3Vi
bGU7CisgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAgICAgfQogICAgIGlmICh2
YWx1ZS5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbUNlbGwodmFsdWUu
YXNDZWxsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw0NiArMzgs
NDggQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTdHJ1Y3R1cmU7CiAKIHR5cGVkZWYgdWludDMy
X3QgU3BlY3VsYXRlZFR5cGU7Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY05vbmUg
ICAgICAgICAgICAgID0gMHgwMDAwMDAwMDsgLy8gV2UgZG9uJ3Qga25vdyBhbnl0aGluZyB5ZXQu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ZpbmFsT2JqZWN0ICAgICAgID0gMHgw
MDAwMDAwMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVjdC4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjQXJyYXkgICAgICAgICAgICAgPSAweDAwMDAwMDAyOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNGdW5jdGlvbiAgICAgICAgICA9IDB4MDAwMDAwMDg7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpT
RnVuY3Rpb24gb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNJbnQ4QXJyYXkgICAgICAgICA9IDB4MDAwMDAwMTA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhbiBJbnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQxNkFycmF5ICAgICAgICA9IDB4MDAwMDAwMjA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50MzJBcnJheSAgICAgICAgPSAweDAwMDAw
MDQwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzJBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNs
YXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQ4QXJyYXkgICAgICAg
ID0gMHgwMDAwMDA4MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQ4QXJyYXkgb3Igb25lIG9m
IGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50OENs
YW1wZWRBcnJheSA9IDB4MDAwMDAxMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50OENsYW1w
ZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgID0gMHgwMDAwMDIwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDMyQXJyYXkgICAgICAgPSAweDAwMDAwNDAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYW4gVWludDMyQXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGbG9hdDMyQXJyYXkgICAgICA9IDB4MDAw
MDA4MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1
YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Zsb2F0NjRBcnJheSAg
ICAgID0gMHgwMDAwMTAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9u
ZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVHlw
ZWRBcnJheVZpZXcgICAgPSBTcGVjSW50OEFycmF5IHwgU3BlY0ludDE2QXJyYXkgfCBTcGVjSW50
MzJBcnJheSB8IFNwZWNVaW50OEFycmF5IHwgU3BlY1VpbnQ4Q2xhbXBlZEFycmF5IHwgU3BlY1Vp
bnQxNkFycmF5IHwgU3BlY1VpbnQzMkFycmF5IHwgU3BlY0Zsb2F0MzJBcnJheSB8IFNwZWNGbG9h
dDY0QXJyYXk7Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0FyZ3VtZW50cyAgICAg
ICAgID0gMHgwMDAwMjAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBvYmplY3Qu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ09iamVjdCAgICAgID0gMHgw
MDAwNDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgU3RyaW5nT2JqZWN0Lgotc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3RPdGhlciAgICAgICA9IDB4MDAwMDgwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBvYmplY3QgYnV0IG5vdCBKU0ZpbmFsT2JqZWN0LCBKU0FycmF5LCBv
ciBKU0Z1bmN0aW9uLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAg
ICAgICAgICA9IDB4MDAwMGZmZmY7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55
IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY1N0cmluZ0lkZW50ICAgICAgID0gMHgwMDAxMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEg
SlNTdHJpbmcsIGFuZCBpdCdzIGFuIGlkZW50aWZpZXIuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY1N0cmluZ1ZhciAgICAgICAgID0gMHgwMDAyMDAwMDsgLy8gSXQncyBkZWZpbml0
ZWx5IGEgSlNTdHJpbmcsIGFuZCBpdCdzIG5vdCBhbiBpZGVudGlmaWVyLgotc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmcgICAgICAgICAgICA9IDB4MDAwMzAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIEpTU3RyaW5nLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNDZWxsT3RoZXIgICAgICAgICA9IDB4MDAwNDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpT
Q2VsbCBidXQgbm90IGEgc3ViY2xhc3Mgb2YgSlNPYmplY3QgYW5kIGRlZmluaXRlbHkgbm90IGEg
SlNTdHJpbmcuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGwgICAgICAgICAg
ICAgID0gMHgwMDA3ZmZmZjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgotc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMiAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBT
cGVjSW50NDggICAgICAgICAgICAgPSAweDAxMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4g
SW50NDgsIGl0J3MgaW5zaWRlIGEgZG91YmxlLCBidXQgaXQgZG9lc24ndCBuZWVkIHRvIGJlLgot
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNNYWNoaW5lSW50ICAgICAgICA9IDB4MDE4
MDAwMDA7IC8vIEl0J3Mgc29tZXRoaW5nIHRoYXQgd2UgY2FuIGRvIG1hY2hpbmUgaW50IGFyaXRo
bWV0aWMgb24uCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDQ4QXNEb3VibGUg
ICAgID0gMHgwMjAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDQ4IGFuZCBpdCdzIGlu
c2lkZSBhIGRvdWJsZS4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50ZWdlciAg
ICAgICAgICAgPSAweDAzODAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgc29tZSBraW5kIG9mIGlu
dGVnZXIuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY05vbkludEFzRG91YmxlICAg
ID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IG5vdCBhbiBJbnQ0OCBidXQgaXQncyBh
IHJlYWwgbnVtYmVyIGFuZCBpdCdzIGEgZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNEb3VibGVSZWFsICAgICAgICA9IDB4MDcwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhIG5vbi1OYU4gZG91YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3Vi
bGVOYU4gICAgICAgICA9IDB4MDgwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIE5hTi4KLXN0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlICAgICAgICAgICAgPSAweDBmMDAw
MDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3IgYSBOYU4gZG91YmxlLgotc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNSZWFsTnVtYmVyICAgICAgICA9IDB4MDc4MDAwMDA7IC8v
IEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlUmVhbC4KLXN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjTnVtYmVyICAgICAgICAgICAgPSAweDBmODAwMDAwOyAvLyBJdCdzIGVp
dGhlciBhbiBJbnQzMiBvciBhIERvdWJsZS4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBT
cGVjQm9vbGVhbiAgICAgICAgICAgPSAweDEwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBC
b29sZWFuLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPdGhlciAgICAgICAgICAg
ICA9IDB4MjAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBub25lIG9mIHRoZSBhYm92ZS4KLXN0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgPSAweDNmZmZm
ZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZS4KLXN0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAgICAgPSAweDQwMDAwMDAwOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNCeXRlY29kZVRvcCAgICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2Yg
dGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdWxsVG9wICAgICAg
ICAgICA9IDB4N2ZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlIHBsdXMgYW55
dGhpbmcgdGhlIERGRyBjaG9vc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNO
b25lICAgICAgICAgICAgICAgPSAweDAwMDAwMDAwOyAvLyBXZSBkb24ndCBrbm93IGFueXRoaW5n
IHlldC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRmluYWxPYmplY3QgICAgICAg
ID0gMHgwMDAwMDAwMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVjdC4KK3N0YXRp
YyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQXJyYXkgICAgICAgICAgICAgID0gMHgwMDAwMDAw
MjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNBcnJheS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjRnVuY3Rpb24gICAgICAgICAgID0gMHgwMDAwMDAwODsgLy8gSXQncyBkZWZpbml0
ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0ludDhBcnJheSAgICAgICAgICA9IDB4MDAwMDAwMTA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBJbnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQxNkFycmF5ICAgICAgICAgPSAweDAwMDAw
MDIwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNs
YXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyQXJyYXkgICAgICAg
ICA9IDB4MDAwMDAwNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMkFycmF5IG9yIG9uZSBv
ZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDhB
cnJheSAgICAgICAgID0gMHgwMDAwMDA4MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQ4QXJy
YXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNVaW50OENsYW1wZWRBcnJheSAgPSAweDAwMDAwMTAwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YW4gVWludDhDbGFtcGVkQXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MTZBcnJheSAgICAgICAgPSAweDAwMDAwMjAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2Vz
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MzJBcnJheSAgICAgICAgPSAw
eDAwMDAwNDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDMyQXJyYXkgb3Igb25lIG9mIGl0
cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGbG9hdDMyQXJy
YXkgICAgICAgPSAweDAwMDAwODAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkg
b3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNGbG9hdDY0QXJyYXkgICAgICAgPSAweDAwMDAxMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4g
VWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNUeXBlZEFycmF5VmlldyAgICAgPSBTcGVjSW50OEFycmF5IHwgU3BlY0lu
dDE2QXJyYXkgfCBTcGVjSW50MzJBcnJheSB8IFNwZWNVaW50OEFycmF5IHwgU3BlY1VpbnQ4Q2xh
bXBlZEFycmF5IHwgU3BlY1VpbnQxNkFycmF5IHwgU3BlY1VpbnQzMkFycmF5IHwgU3BlY0Zsb2F0
MzJBcnJheSB8IFNwZWNGbG9hdDY0QXJyYXk7CitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0FyZ3VtZW50cyAgICAgICAgICA9IDB4MDAwMDIwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBh
biBBcmd1bWVudHMgb2JqZWN0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJp
bmdPYmplY3QgICAgICAgPSAweDAwMDA0MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTdHJpbmdP
YmplY3QuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAg
ICA9IDB4MDAwMDgwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBvYmplY3QgYnV0IG5vdCBKU0Zp
bmFsT2JqZWN0LCBKU0FycmF5LCBvciBKU0Z1bmN0aW9uLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgPSAweDAwMDBmZmZmOyAvLyBCaXRtYXNrIHVz
ZWQgZm9yIHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdJZGVudCAgICAgICAgPSAweDAwMDEwMDAw
OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3MgYW4gaWRlbnRpZmllci4K
K3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nVmFyICAgICAgICAgID0gMHgw
MDAyMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcsIGFuZCBpdCdzIG5vdCBhbiBp
ZGVudGlmaWVyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmcgICAgICAg
ICAgICAgPSAweDAwMDMwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZy4KK3N0YXRp
YyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbE90aGVyICAgICAgICAgID0gMHgwMDA0MDAw
MDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsIGJ1dCBub3QgYSBzdWJjbGFzcyBvZiBKU09i
amVjdCBhbmQgZGVmaW5pdGVseSBub3QgYSBKU1N0cmluZy4KK3N0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgID0gMHgwMDA3ZmZmZjsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgSlNDZWxsLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQzMiAg
ICAgICAgICAgICAgPSAweDAwODAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzIuCitz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDUyICAgICAgICAgICAgICA9IDB4MDEw
MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ1MiBhbmQgd2UgaW50ZW5kIGl0IHRvIHVu
Ym94IGl0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNNYWNoaW5lSW50ICAgICAg
ICAgPSAweDAxODAwMDAwOyAvLyBJdCdzIHNvbWV0aGluZyB0aGF0IHdlIGNhbiBkbyBtYWNoaW5l
IGludCBhcml0aG1ldGljIG9uLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ1
MkFzRG91YmxlICAgICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50NTIg
YW5kIGl0J3MgaW5zaWRlIGEgZG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNJbnRlZ2VyICAgICAgICAgICAgPSAweDAzODAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgc29t
ZSBraW5kIG9mIGludGVnZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY05vbklu
dEFzRG91YmxlICAgICA9IDB4MDQwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBub3QgYW4gSW50
NTIgYnV0IGl0J3MgYSByZWFsIG51bWJlciBhbmQgaXQncyBhIGRvdWJsZS4KK3N0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlUmVhbCAgICAgICAgID0gMHgwNjAwMDAwMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0RvdWJsZU5hTiAgICAgICAgICA9IDB4MDgwMDAwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIE5hTi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlICAgICAg
ICAgICAgID0gMHgwZTAwMDAwMDsgLy8gSXQncyBlaXRoZXIgYSBub24tTmFOIG9yIGEgTmFOIGRv
dWJsZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVSZWFsTnVtYmVy
ID0gMHgwNjgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVSZWFsLgor
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdWxsUmVhbE51bWJlciAgICAgPSAweDA3
ODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBhIERvdWJsZVJlYWwsIG9yIGEgSW50
NTIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlTnVtYmVyICAgICA9
IDB4MGU4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdWxsTnVtYmVyICAgICAgICAgPSAweDBmODAwMDAw
OyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiwgSW50NTIsIG9yIGEgRG91YmxlLgorc3RhdGljIGNv
bnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICAgPSAweDEwMDAwMDAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBCb29sZWFuLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNPdGhlciAgICAgICAgICAgICAgPSAweDIwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkg
bm9uZSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBU
b3AgICAgICAgICAgICA9IDB4M2VmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3Zl
LCBleGNlcHQgZm9yIFNwZWNJbnQ1Mi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
RW1wdHkgICAgICAgICAgICAgID0gMHg0MDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIGVt
cHR5IHZhbHVlIG1hcmtlci4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNv
ZGVUb3AgICAgICAgID0gMHg3ZWZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUs
IGV4Y2VwdCBmb3IgU3BlY0ludDUyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNG
dWxsVG9wICAgICAgICAgICAgPSAweDdmZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBh
Ym92ZSBwbHVzIGFueXRoaW5nIHRoZSBERkcgY2hvb3Nlcy4KIAogdHlwZWRlZiBib29sICgqU3Bl
Y3VsYXRlZFR5cGVDaGVja2VyKShTcGVjdWxhdGVkVHlwZSk7CiAKQEAgLTI0MCw3ICsyNDIsNyBA
QCBpbmxpbmUgYm9vbCBpc0ludDMyU3BlY3VsYXRpb24oU3BlY3VsYXRlCiAKIGlubGluZSBib29s
IGlzSW50MzJTcGVjdWxhdGlvbkZvckFyaXRobWV0aWMoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7
Ci0gICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRG91YmxlKTsKKyAgICByZXR1cm4gISh2YWx1ZSAm
IChTcGVjRG91YmxlIHwgU3BlY0ludDUyKSk7CiB9CiAKIGlubGluZSBib29sIGlzSW50MzJTcGVj
dWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCkBAIC0yNDgsOSAr
MjUwLDkgQEAgaW5saW5lIGJvb2wgaXNJbnQzMlNwZWN1bGF0aW9uRXhwZWN0aW5nRAogICAgIHJl
dHVybiBpc0ludDMyU3BlY3VsYXRpb24odmFsdWUgJiB+U3BlY090aGVyKTsKIH0KIAotaW5saW5l
IGJvb2wgaXNJbnQ0OFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJv
b2wgaXNJbnQ1MlNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVy
biB2YWx1ZSA9PSBTcGVjSW50NDg7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNJbnQ1MjsKIH0K
IAogaW5saW5lIGJvb2wgaXNNYWNoaW5lSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFs
dWUpCkBAIC0yNjUsMTIgKzI2NywxMiBAQCBpbmxpbmUgYm9vbCBpc01hY2hpbmVJbnRTcGVjdWxh
dGlvbkV4cGVjCiAKIGlubGluZSBib29sIGlzTWFjaGluZUludFNwZWN1bGF0aW9uRm9yQXJpdGht
ZXRpYyhTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVj
RG91YmxlICYgflNwZWNNYWNoaW5lSW50KSk7CisgICAgcmV0dXJuICEodmFsdWUgJiBTcGVjRG91
YmxlKTsKIH0KIAotaW5saW5lIGJvb2wgaXNJbnQ0OEFzRG91YmxlU3BlY3VsYXRpb24oU3BlY3Vs
YXRlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc0ludDUyQXNEb3VibGVTcGVjdWxhdGlvbihT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0ludDQ4QXNE
b3VibGU7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNJbnQ1MkFzRG91YmxlOwogfQogCiBpbmxp
bmUgYm9vbCBpc0ludGVnZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKQEAgLTI5
MywxOSArMjk1LDM0IEBAIGlubGluZSBib29sIGlzRG91YmxlU3BlY3VsYXRpb25Gb3JBcml0aG0K
ICAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjRG91YmxlKTsKIH0KIAotaW5saW5lIGJvb2wgaXNS
ZWFsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBp
c0J5dGVjb2RlUmVhbE51bWJlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQorewor
ICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNCeXRlY29kZVJlYWxOdW1iZXIpICYmICEodmFsdWUg
JiB+U3BlY0J5dGVjb2RlUmVhbE51bWJlcik7Cit9CisKK2lubGluZSBib29sIGlzRnVsbFJlYWxO
dW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEo
dmFsdWUgJiBTcGVjRnVsbFJlYWxOdW1iZXIpICYmICEodmFsdWUgJiB+U3BlY0Z1bGxSZWFsTnVt
YmVyKTsKK30KKworaW5saW5lIGJvb2wgaXNCeXRlY29kZU51bWJlclNwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiAhISh2YWx1ZSAmIFNwZWNCeXRlY29kZU51
bWJlcikgJiYgISh2YWx1ZSAmIH5TcGVjQnl0ZWNvZGVOdW1iZXIpOworfQorCitpbmxpbmUgYm9v
bCBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gISEodmFsdWUgJiBTcGVjUmVhbE51bWJlcikgJiYgISh2YWx1ZSAmIH5TcGVjUmVhbE51
bWJlcik7CisgICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0Z1bGxOdW1iZXIpICYmICEodmFsdWUg
JiB+U3BlY0Z1bGxOdW1iZXIpOwogfQogCi1pbmxpbmUgYm9vbCBpc051bWJlclNwZWN1bGF0aW9u
KFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNCeXRlY29kZU51bWJlclNwZWN1
bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1
cm4gISEodmFsdWUgJiBTcGVjTnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNOdW1iZXIpOworICAg
IHJldHVybiBpc0J5dGVjb2RlTnVtYmVyU3BlY3VsYXRpb24odmFsdWUgJiB+U3BlY090aGVyKTsK
IH0KIAotaW5saW5lIGJvb2wgaXNOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGlzTnVt
YmVyU3BlY3VsYXRpb24odmFsdWUgJiB+U3BlY090aGVyKTsKKyAgICByZXR1cm4gaXNGdWxsTnVt
YmVyU3BlY3VsYXRpb24odmFsdWUgJiB+U3BlY090aGVyKTsKIH0KIAogaW5saW5lIGJvb2wgaXNC
b29sZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHJldmlzaW9uIDE1NTkw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDEyICs0NCwxNSBAQCBlbnVtIFZhbHVlUmVjb3ZlcnlUZWNobmlx
dWUgewogICAgIEFscmVhZHlJbkpTU3RhY2ssCiAgICAgLy8gSXQncyBhbHJlYWR5IGluIHRoZSBz
dGFjayBidXQgdW5ib3hlZC4KICAgICBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50MzIsCisg
ICAgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyLAogICAgIEFscmVhZHlJbkpTU3RhY2tB
c1VuYm94ZWRDZWxsLAogICAgIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRCb29sZWFuLAogICAg
IEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWREb3VibGUsCiAgICAgLy8gSXQncyBpbiBhIHJlZ2lz
dGVyLgogICAgIEluR1BSLAogICAgIFVuYm94ZWRJbnQzMkluR1BSLAorICAgIFVuYm94ZWRJbnQ1
MkluR1BSLAorICAgIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSLAogICAgIFVuYm94ZWRCb29sZWFu
SW5HUFIsCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBJblBhaXIsCkBAIC02MCw2ICs2Myw4
IEBAIGVudW0gVmFsdWVSZWNvdmVyeVRlY2huaXF1ZSB7CiAgICAgRGlzcGxhY2VkSW5KU1N0YWNr
LAogICAgIC8vIEl0J3MgaW4gdGhlIHN0YWNrLCBhdCBhIGRpZmZlcmVudCBsb2NhdGlvbiwgYW5k
IGl0J3MgdW5ib3hlZC4KICAgICBJbnQzMkRpc3BsYWNlZEluSlNTdGFjaywKKyAgICBJbnQ1MkRp
c3BsYWNlZEluSlNTdGFjaywKKyAgICBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjaywKICAg
ICBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2ssCiAgICAgQ2VsbERpc3BsYWNlZEluSlNTdGFjaywK
ICAgICBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrLApAQCAtOTUsNiArMTAwLDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCisgICAgc3RhdGljIFZhbHVl
UmVjb3ZlcnkgYWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyKCkKKyAgICB7CisgICAgICAg
IFZhbHVlUmVjb3ZlcnkgcmVzdWx0OworICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBBbHJl
YWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NTI7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIAogICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGFscmVhZHlJbkpTU3RhY2tBc1VuYm94
ZWRDZWxsKCkKICAgICB7CiAgICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVzdWx0OwpAQCAtMTI1LDYg
KzEzNywxMCBAQCBwdWJsaWM6CiAgICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVzdWx0OwogICAgICAg
ICBpZiAoZGF0YUZvcm1hdCA9PSBEYXRhRm9ybWF0SW50MzIpCiAgICAgICAgICAgICByZXN1bHQu
bV90ZWNobmlxdWUgPSBVbmJveGVkSW50MzJJbkdQUjsKKyAgICAgICAgZWxzZSBpZiAoZGF0YUZv
cm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUg
PSBVbmJveGVkSW50NTJJbkdQUjsKKyAgICAgICAgZWxzZSBpZiAoZGF0YUZvcm1hdCA9PSBEYXRh
Rm9ybWF0U3RyaWN0SW50NTIpCisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBVbmJv
eGVkU3RyaWN0SW50NTJJbkdQUjsKICAgICAgICAgZWxzZSBpZiAoZGF0YUZvcm1hdCA9PSBEYXRh
Rm9ybWF0Qm9vbGVhbikKICAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IFVuYm94ZWRC
b29sZWFuSW5HUFI7CiAgICAgICAgIGVsc2UKQEAgLTE2OCw2ICsxODQsMTQgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAgICBjYXNlIERhdGFGb3Jt
YXRJbnQ1MjoKKyAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IEludDUyRGlzcGxhY2Vk
SW5KU1N0YWNrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6CisgICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUg
PSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICAgICAgICAgIHJl
c3VsdC5tX3RlY2huaXF1ZSA9IERvdWJsZURpc3BsYWNlZEluSlNTdGFjazsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjI5LDYgKzI1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoICh0ZWNo
bmlxdWUoKSkgewogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2s6CiAgICAgICAgIGNhc2Ug
QWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgorICAgICAgICBjYXNlIEFscmVhZHlJbkpT
U3RhY2tBc1VuYm94ZWRJbnQ1MjoKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJv
eGVkQ2VsbDoKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkQm9vbGVhbjoK
ICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkRG91YmxlOgpAQCAtMjQwLDcg
KzI2NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBn
cHIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdGVjaG5pcXVlID09IEluR1BSIHx8
IG1fdGVjaG5pcXVlID09IFVuYm94ZWRJbnQzMkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVuYm94
ZWRCb29sZWFuSW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVUludDMySW5HUFIpOworICAgICAgICBB
U1NFUlQobV90ZWNobmlxdWUgPT0gSW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZEludDMy
SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZEJvb2xlYW5JbkdQUiB8fCBtX3RlY2huaXF1
ZSA9PSBVSW50MzJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50NTJJbkdQUiB8fCBt
X3RlY2huaXF1ZSA9PSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUik7CiAgICAgICAgIHJldHVybiBt
X3NvdXJjZS5ncHI7CiAgICAgfQogICAgIApAQCAtMjY2LDcgKzI5MSw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNo
bmlxdWUgPT0gSW50MzJEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0gRG91Ymxl
RGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IENlbGxEaXNwbGFjZWRJbkpTU3Rh
Y2sgfHwgbV90ZWNobmlxdWUgPT0gQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjayk7CisgICAgICAg
IEFTU0VSVChtX3RlY2huaXF1ZSA9PSBEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUg
PT0gSW50MzJEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0gRG91YmxlRGlzcGxh
Y2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IENlbGxEaXNwbGFjZWRJbkpTU3RhY2sgfHwg
bV90ZWNobmlxdWUgPT0gQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9
PSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBTdHJpY3RJbnQ1MkRp
c3BsYWNlZEluSlNTdGFjayk7CiAgICAgICAgIHJldHVybiBtX3NvdXJjZS52aXJ0dWFsUmVnOwog
ICAgIH0KICAgICAKQEAgLTI4NSw2ICszMTAsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQWxy
ZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgogICAgICAgICAgICAgb3V0LnByaW50ZigiKGlu
dDMyKSIpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3Rh
Y2tBc1VuYm94ZWRJbnQ1MjoKKyAgICAgICAgICAgIG91dC5wcmludGYoIihpbnQ1MikiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVk
Q2VsbDoKICAgICAgICAgICAgIG91dC5wcmludGYoIihjZWxsKSIpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzAwLDYgKzMyOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVW5ib3hlZElu
dDMySW5HUFI6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJpbnQzMiglJXIlZCkiLCBncHIoKSk7
CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCJpbnQ1MiglJXIlZCkiLCBncHIoKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDUySW5HUFI6CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCJzdHJpY3RJbnQ1MiglJXIlZCkiLCBncHIoKSk7CisgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKICAgICAgICAgICAg
IG91dC5wcmludGYoImJvb2woJSVyJWQpIiwgZ3ByKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMzIwLDYgKzM1NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJ
bkpTU3RhY2s6CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIqaW50MzIoJWQpIiwgdmlydHVhbFJl
Z2lzdGVyKCkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIEludDUyRGlzcGxh
Y2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgb3V0LnByaW50ZigiKmludDUyKCVkKSIsIHZpcnR1
YWxSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBTdHJpY3RJ
bnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIG91dC5wcmludGYoIipzdHJpY3RJ
bnQ1MiglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgb3V0LnByaW50
ZigiKmRvdWJsZSglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICByZXR1cm47
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcg
QEAgcHVibGljOgogICAgIAogICAgIGJvb2wgbmVlZHNUeXBlQ2hlY2soTm9kZSogbm9kZSwgU3Bl
Y3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGZv
ck5vZGUobm9kZSkubV90eXBlICYgfnR5cGVzUGFzc2VkVGhyb3VnaDsKKyAgICAgICAgcmV0dXJu
ICFmb3JOb2RlKG5vZGUpLmlzVHlwZSh0eXBlc1Bhc3NlZFRocm91Z2gpOwogICAgIH0KICAgICAK
ICAgICBib29sIG5lZWRzVHlwZUNoZWNrKEVkZ2UgZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZXNQ
YXNzZWRUaHJvdWdoKQpAQCAtMTY4LDcgKzE2OCw3IEBAIHByaXZhdGU6CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIGZpbHRlckJ5VHlwZShOb2RlKiBub2RlLCBFZGdlJiBlZGdlLCBTcGVjdWxhdGVk
VHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2Rl
KGVkZ2UpOwotICAgICAgICBpZiAodmFsdWUubV90eXBlICYgfnR5cGUpIHsKKyAgICAgICAgaWYg
KCF2YWx1ZS5pc1R5cGUodHlwZSkpIHsKICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1
ZSk7CiAgICAgICAgICAgICBlZGdlLnNldFByb29mU3RhdHVzKE5lZWRzQ2hlY2spOwogICAgICAg
ICB9IGVsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEwLDYgKzMxMCwyOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAg
Y2FzZSBJbnQ1MlRvRG91YmxlOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1i
ZXIoKSkgeworICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNE
b3VibGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50NTJU
b1ZhbHVlOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkgeworICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLm1fdHlwZTsKKyAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpCisgICAgICAgICAg
ICB0eXBlID0gKHR5cGUgfCBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0RvdWJsZSkgJiB+U3BlY0lu
dDUyOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUodHlwZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRk
OiB7CiAgICAgICAgIEpTVmFsdWUgbGVmdCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVl
KCk7CkBAIC0zMjQsOSArMzQ3LDE1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5UcnVuY2F0ZUludGVnZXIobm9k
ZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0
cnVlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Cisg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDUyKTsKKyAgICAgICAgICAg
IGlmICghZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNJbnQzMikKKyAgICAgICAg
ICAgICAgICB8fCAhZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNJbnQzMikpCisg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIE51bWJlclVzZToKLSAgICAgICAgICAgIGlmIChpc1JlYWxOdW1iZXJT
cGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpCi0gICAgICAgICAgICAg
ICAgJiYgaXNSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90
eXBlKSkKKyAgICAgICAgICAgIGlmIChpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkubV90eXBlKQorICAgICAgICAgICAgICAgICYmIGlzRnVsbFJlYWxO
dW1iZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQogICAgICAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlUmVhbCk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3Vi
bGUpOwpAQCAtMzM0LDcgKzM2Myw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5v
ZGUtPm9wKCkgPT0gVmFsdWVBZGQpOwogICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPmNv
ZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY1N0cmluZyB8IFNwZWNJbnQzMiB8IFNwZWNOdW1iZXIpOworICAgICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKFNwZWNTdHJpbmcgfCBTcGVjQnl0ZWNvZGVOdW1iZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0zNTgsNiArMzg3
LDEyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAg
ICAgIGlmICghYnl0ZWNvZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS0+YXJpdGhOb2RlRmxhZ3Mo
KSkpCiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0ludDUyKTsKKyAgICAgICAgICAgIGlmICghZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNJbnQzMikKKyAgICAgICAgICAgICAgICB8fCAhZm9yTm9k
ZShub2RlLT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNJbnQzMikpCisgICAgICAgICAgICAgICAgbm9k
ZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE51
bWJlclVzZToKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzgwLDYgKzQxNSwxMyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1
bmNhdGVJbnRlZ2VyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIG5v
ZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBN
YWNoaW5lSW50VXNlOgorICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ1
Mik7CisgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jb3Vs
ZEJlVHlwZShTcGVjSW50NTIpKQorICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1
ZSk7CisgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUt
PmFyaXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1
ZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTQwNCw5ICs0NDYsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgICAgIHx8ICFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVy
byhub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgICAgICBub2RlLT5zZXRDYW5F
eGl0KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWFjaGluZUludFVz
ZToKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50NTIpOworICAgICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIE51bWJlclVzZToKLSAgICAgICAgICAgIGlmIChpc1JlYWxOdW1iZXJTcGVjdWxhdGlv
bihmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpCi0gICAgICAgICAgICAgICAgfHwgaXNS
ZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlKSkKKyAg
ICAgICAgICAgIGlmIChpc0Z1bGxSZWFsTnVtYmVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV90eXBlKQorICAgICAgICAgICAgICAgIHx8IGlzRnVsbFJlYWxOdW1iZXJTcGVj
dWxhdGlvbihmb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUpKQogICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRG91YmxlUmVhbCk7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpAQCAt
NTg2LDcgKzYzMiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoaXNO
dW1iZXJTcGVjdWxhdGlvbihhYnN0cmFjdENoaWxkLm1fdHlwZSkpIHsKKyAgICAgICAgaWYgKGlz
RnVsbE51bWJlclNwZWN1bGF0aW9uKGFic3RyYWN0Q2hpbGQubV90eXBlKSkgewogICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwgdm0tPnNtYWxsU3RyaW5ncy5udW1iZXJTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtODExLDYgKzg1Nyw4IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgY2FzZSBBcnJheTo6VWlu
dDMyQXJyYXk6CiAgICAgICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkK
ICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGVuYWJsZUludDUyKCkgJiYgbm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFj
aGluZUludCgpKQorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50
NTIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjRG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODYzLDcgKzkxMSw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIEFycmF5
UHVzaDoKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgY2xvYmJlcldv
cmxkKG5vZGUtPmNvZGVPcmlnaW4sIGNsb2JiZXJMaW1pdCk7Ci0gICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjTnVtYmVyKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNCeXRlY29kZU51bWJlcik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2Fz
ZSBBcnJheVBvcDoKQEAgLTkzNCw4ICs5ODIsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIE5CLiBUaGUgbW9yZSBjYW5vbmljYWwgd2F5IG9m
IHdyaXRpbmcgdGhpcyB3b3VsZCBoYXZlIGJlZW46CiAgICAgICAgIC8vCiAgICAgICAgIC8vIGRl
c3RpbmF0aW9uID0gc291cmNlOwotICAgICAgICAvLyBpZiAoZGVzdGluYXRpb24ubV90eXBlICYg
IShTcGVjTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNwZWNCb29sZWFuKSkgewotICAgICAgICAvLyAg
ICAgZGVzdGluYXRpb24uZmlsdGVyKFNwZWNOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xl
YW4pOworICAgICAgICAvLyBpZiAoZGVzdGluYXRpb24ubV90eXBlICYgIShTcGVjRnVsbE51bWJl
ciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbikpIHsKKyAgICAgICAgLy8gICAgIGRlc3RpbmF0
aW9uLmZpbHRlcihTcGVjRnVsbE51bWJlciB8IFNwZWNTdHJpbmcgfCBTcGVjQm9vbGVhbik7CiAg
ICAgICAgIC8vICAgICBBYnN0cmFjdFZhbHVlIHN0cmluZzsKICAgICAgICAgLy8gICAgIHN0cmlu
Zy5zZXQodm0tPnN0cmluZ1N0cnVjdHVyZSk7CiAgICAgICAgIC8vICAgICBkZXN0aW5hdGlvbi5t
ZXJnZShzdHJpbmcpOwpAQCAtOTU1LDcgKzEwMDMsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5jb2RlT3JpZ2lu
LCBjbG9iYmVyTGltaXQpOwogICAgICAgICAKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9
IHNvdXJjZS5tX3R5cGU7Ci0gICAgICAgIGlmICh0eXBlICYgfihTcGVjTnVtYmVyIHwgU3BlY1N0
cmluZyB8IFNwZWNCb29sZWFuKSkKKyAgICAgICAgaWYgKHR5cGUgJiB+KFNwZWNGdWxsTnVtYmVy
IHwgU3BlY1N0cmluZyB8IFNwZWNCb29sZWFuKSkKICAgICAgICAgICAgIHR5cGUgPSAoU3BlY0hl
YXBUb3AgJiB+U3BlY0NlbGwpIHwgU3BlY1N0cmluZzsKIAogICAgICAgICBkZXN0aW5hdGlvbi5z
ZXRUeXBlKHR5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw4
IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgSlMKICAgICB9CiAgICAg
ICAgIAogICAgIG1fdHlwZSA9IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKTsKKyAgICBpZiAo
bV90eXBlID09IFNwZWNJbnQ1MkFzRG91YmxlKQorICAgICAgICBtX3R5cGUgPSBTcGVjSW50NTI7
CiAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAgICAgICAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7
CkBAIC0yMjcsNiArMjI5LDcgQEAgRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpub3Jt
YWxpegogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECiB2b2lk
IEFic3RyYWN0VmFsdWU6OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAgIGlmICghKG1f
dHlwZSAmIFNwZWNDZWxsKSkgewpAQCAtMjM4LDE0ICsyNDEsMTkgQEAgdm9pZCBBYnN0cmFjdFZh
bHVlOjpjaGVja0NvbnNpc3RlbmN5KCkgYwogICAgIGlmIChpc0NsZWFyKCkpCiAgICAgICAgIEFT
U0VSVCghbV92YWx1ZSk7CiAgICAgCi0gICAgaWYgKCEhbV92YWx1ZSkKLSAgICAgICAgQVNTRVJU
KG1lcmdlU3BlY3VsYXRpb25zKG1fdHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUobV92YWx1ZSkp
ID09IG1fdHlwZSk7CisgICAgaWYgKCEhbV92YWx1ZSkgeworICAgICAgICBTcGVjdWxhdGVkVHlw
ZSB0eXBlID0gbV90eXBlOworICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1MikKKyAgICAgICAg
ICAgIHR5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CisgICAgICAgIEFTU0VSVChtZXJnZVNwZWN1
bGF0aW9ucyh0eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gdHlwZSk7Cisg
ICAgfQogICAgIAogICAgIC8vIE5vdGUgdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBhIHByZWRpY3Rp
b24gbGlrZSAoRmluYWwsIFtdKS4gVGhpcyByZWFsbHkgbWVhbnMgdGhhdAogICAgIC8vIHRoZSB2
YWx1ZSBpcyBib3R0b20gYW5kIHRoYXQgYW55IGNvZGUgdGhhdCB1c2VzIHRoZSB2YWx1ZSBpcyB1
bnJlYWNoYWJsZS4gQnV0CiAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBnZXQgcGVkYW50aWMgYWJv
dXQgdGhpcyBhcyBpdCB3b3VsZCBvbmx5IGluY3JlYXNlIHRoZSBjb21wdXRhdGlvbmFsCiAgICAg
Ly8gY29tcGxleGl0eSBvZiB0aGUgY29kZS4KIH0KKyNlbmRpZgogCiB2b2lkIEFic3RyYWN0VmFs
dWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTg1LDYgKzE4NSwxNiBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGNo
ZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBjb3VsZEJlVHlwZShTcGVj
dWxhdGVkVHlwZSBkZXNpcmVkVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhIShtX3R5cGUg
JiBkZXNpcmVkVHlwZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNUeXBlKFNwZWN1bGF0ZWRU
eXBlIGRlc2lyZWRUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEobV90eXBlICYgfmRlc2ly
ZWRUeXBlKTsKKyAgICB9CisgICAgCiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoR3JhcGgm
LCBjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKICAgICAKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRl
ckFycmF5TW9kZXMoQXJyYXlNb2RlcyBhcnJheU1vZGVzKTsKQEAgLTE5MywyMiArMjAzLDYgQEAg
c3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVy
QnlWYWx1ZShKU1ZhbHVlIHZhbHVlKTsKICAgICAKLSAgICBib29sIHZhbGlkYXRlVHlwZShKU1Zh
bHVlIHZhbHVlKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzSGVhcFRvcCgpKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAotICAgICAgICBpZiAobWVyZ2VTcGVjdWxhdGlv
bnMobV90eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IG1fdHlwZSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgJiBTcGVjRW1wdHkpOwotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICAKICAgICBib29sIHZhbGlkYXRlKEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAg
ICAgewogICAgICAgICBpZiAoaXNIZWFwVG9wKCkpCkBAIC0yNTEsNyArMjQ1LDExIEBAIHN0cnVj
dCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgICAgIHx8ICFhcnJheU1vZGVzQXJlQ2xlYXJPclRv
cChtX2FycmF5TW9kZXMpOwogICAgIH0KICAgICAKKyNpZiBBU1NFUlRfRElTQUJMRUQKKyAgICB2
b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdCB7IH0KKyNlbHNlCiAgICAgdm9pZCBjaGVja0Nv
bnNpc3RlbmN5KCkgY29uc3Q7CisjZW5kaWYKICAgICAKICAgICB2b2lkIGR1bXBJbkNvbnRleHQo
UHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwogICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OwpAQCAtMzYzLDYgKzM2MSwyOSBAQCBwcml2YXRlOgogICAgICAgICBtX2Fy
cmF5TW9kZXMgPSBBTExfQVJSQVlfTU9ERVM7CiAgICAgfQogICAgIAorICAgIGJvb2wgdmFsaWRh
dGVUeXBlKEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNIZWFwVG9w
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIC8vIENvbnN0
YW50IGZvbGRpbmcgYWx3YXlzIHJlcHJlc2VudHMgSW50NTIncyBpbiBhIGRvdWJsZSAoaS5lLiBJ
bnQ1MkFzRG91YmxlKS4KKyAgICAgICAgLy8gU28gc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUp
IGZvciBhbiBJbnQ1MiB2YWx1ZSB3aWxsIHJldHVybiBJbnQ1MkFzRG91YmxlLAorICAgICAgICAv
LyBhbmQgdGhhdCdzIGZpbmUgLSB0aGUgdHlwZSB2YWxpZGF0ZXMganVzdCBmaW5lLgorICAgICAg
ICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gbV90eXBlOworICAgICAgICBpZiAodHlwZSAmIFNwZWNJ
bnQ1MikKKyAgICAgICAgICAgIHR5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CisgICAgICAgIAor
ICAgICAgICBpZiAobWVyZ2VTcGVjdWxhdGlvbnModHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUo
dmFsdWUpKSAhPSB0eXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAg
ICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSAm
IFNwZWNFbXB0eSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAogICAgIHZvaWQgbWFrZVRvcChT
cGVjdWxhdGVkVHlwZSB0b3ApCiAgICAgewogICAgICAgICBtX3R5cGUgfD0gdG9wOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMTU1
OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTcsMjEgKzE1NywyMSBAQCBBcnJheU1vZGUgQXJyYXlNb2RlOjpyZWZp
bmUoU3BlY3VsYXRlZFR5CiAgICAgICAgICAgICByZXR1cm4gd2l0aFR5cGUoQXJyYXk6OkZvcmNl
RXhpdCk7CiAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24odmFsdWUpKQogICAgICAgICAg
ICAgcmV0dXJuIHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6SW50MzIsIEFycmF5OjpDb252
ZXJ0KTsKLSAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQorICAgICAgICBp
ZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHdp
dGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6RG91YmxlLCBBcnJheTo6Q29udmVydCk7CiAgICAg
ICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkNvbnRpZ3VvdXMsIEFycmF5
OjpDb252ZXJ0KTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgIGlm
ICghdmFsdWUgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVy
biAqdGhpczsKLSAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQorICAgICAg
ICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQogICAgICAgICAgICAgcmV0dXJu
IHdpdGhUeXBlQW5kQ29udmVyc2lvbihBcnJheTo6RG91YmxlLCBBcnJheTo6Q29udmVydCk7CiAg
ICAgICAgIHJldHVybiB3aXRoVHlwZUFuZENvbnZlcnNpb24oQXJyYXk6OkNvbnRpZ3VvdXMsIEFy
cmF5OjpDb252ZXJ0KTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAg
ICBpZiAoZmxhZ3MgJiBOb2RlQnl0ZWNvZGVVc2VzQXNJbnQpCiAgICAgICAgICAgICByZXR1cm4g
d2l0aFR5cGVBbmRDb252ZXJzaW9uKEFycmF5OjpDb250aWd1b3VzLCBBcnJheTo6UmFnZUNvbnZl
cnQpOwotICAgICAgICBpZiAoIXZhbHVlIHx8IGlzTnVtYmVyU3BlY3VsYXRpb24odmFsdWUpKQor
ICAgICAgICBpZiAoIXZhbHVlIHx8IGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKICAg
ICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgcmV0dXJuIHdpdGhUeXBlQW5kQ29udmVy
c2lvbihBcnJheTo6Q29udGlndW91cywgQXJyYXk6OkNvbnZlcnQpOwogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAkocmV2
aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhl
bHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDYgKzI5MywyNCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1vdmU2NFRvRG91YmxlKGdwciwgZnByKTsKICAgICAgICAgcmV0dXJuIGZwcjsKICAgICB9
CisgICAgCisgICAgdm9pZCBib3hJbnQ1MihHUFJSZWcgc291cmNlLCBHUFJSZWcgdGFyZ2V0LCBH
UFJSZWcgc2NyYXRjaCwgRlBSUmVnIGZwU2NyYXRjaCkKKyAgICB7CisgICAgICAgIC8vIElzIGl0
IGFuIGludDMyPworICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihzb3VyY2UsIHNjcmF0Y2gpOwor
ICAgICAgICBKdW1wIGlzSW50MzIgPSBicmFuY2g2NChFcXVhbCwgc291cmNlLCBzY3JhdGNoKTsK
KyAgICAgICAgCisgICAgICAgIC8vIE5vcGUsIGl0J3Mgbm90LCBidXQgcmVnVDAgY29udGFpbnMg
dGhlIGludDY0IHZhbHVlLgorICAgICAgICBjb252ZXJ0SW50NjRUb0RvdWJsZShzb3VyY2UsIGZw
U2NyYXRjaCk7CisgICAgICAgIGJveERvdWJsZShmcFNjcmF0Y2gsIHRhcmdldCk7CisgICAgICAg
IEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAgICAgCisgICAgICAgIGlzSW50MzIubGluayh0aGlz
KTsKKyAgICAgICAgemVyb0V4dGVuZDMyVG9QdHIoc291cmNlLCB0YXJnZXQpOworICAgICAgICBv
cjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgdGFyZ2V0KTsKKyAgICAgICAgCisg
ICAgICAgIGRvbmUubGluayh0aGlzKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAko
cmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDIxICs2Myw2IEBAIHB1YmxpYzoKICAgICAKIHBy
aXZhdGU6CiAgICAgCi0gICAgTm9kZSogY2Fub25pY2FsaXplKE5vZGUqIG5vZGUpCi0gICAgewot
ICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgCi0gICAg
ICAgIGlmIChub2RlLT5vcCgpID09IFZhbHVlVG9JbnQzMikKLSAgICAgICAgICAgIG5vZGUgPSBu
b2RlLT5jaGlsZDEoKS5ub2RlKCk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gbm9kZTsKLSAg
ICB9Ci0gICAgTm9kZSogY2Fub25pY2FsaXplKEVkZ2UgZWRnZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBjYW5vbmljYWxpemUoZWRnZS5ub2RlKCkpOwotICAgIH0KLSAgICAKICAgICB1bnNpZ25l
ZCBlbmRJbmRleEZvclB1cmVDU0UoKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0g
bV9sYXN0U2VlblttX2N1cnJlbnROb2RlLT5vcCgpXTsKQEAgLTk0LDkgKzc5LDkgQEAgcHJpdmF0
ZToKIAogICAgIE5vZGUqIHB1cmVDU0UoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIE5vZGUq
IGNoaWxkMSA9IGNhbm9uaWNhbGl6ZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIE5vZGUqIGNo
aWxkMiA9IGNhbm9uaWNhbGl6ZShub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIE5vZGUqIGNoaWxk
MyA9IGNhbm9uaWNhbGl6ZShub2RlLT5jaGlsZDMoKSk7CisgICAgICAgIEVkZ2UgY2hpbGQxID0g
bm9kZS0+Y2hpbGQxKCk7CisgICAgICAgIEVkZ2UgY2hpbGQyID0gbm9kZS0+Y2hpbGQyKCk7Cisg
ICAgICAgIEVkZ2UgY2hpbGQzID0gbm9kZS0+Y2hpbGQzKCk7CiAgICAgICAgIAogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBlbmRJbmRleEZvclB1cmVDU0UoKTsgaS0tOykgewogICAgICAgICAg
ICAgTm9kZSogb3RoZXJOb2RlID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOwpAQCAtMTA5LDE5ICs5
NCwxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkg
IT0gb3RoZXJOb2RlLT5hcml0aE5vZGVGbGFncygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBOb2RlKiBvdGhlckNoaWxkID0gY2Fub25pY2Fs
aXplKG90aGVyTm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgRWRnZSBvdGhlckNoaWxkID0g
b3RoZXJOb2RlLT5jaGlsZDEoKTsKICAgICAgICAgICAgIGlmICghb3RoZXJDaGlsZCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gb3RoZXJOb2RlOwogICAgICAgICAgICAgaWYgKG90aGVyQ2hpbGQg
IT0gY2hpbGQxKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBvdGhlckNoaWxkID0gY2Fub25pY2FsaXplKG90aGVyTm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgb3RoZXJDaGlsZCA9IG90aGVyTm9kZS0+Y2hpbGQyKCk7CiAgICAgICAgICAg
ICBpZiAoIW90aGVyQ2hpbGQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyTm9kZTsKICAg
ICAgICAgICAgIGlmIChvdGhlckNoaWxkICE9IGNoaWxkMikKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgb3RoZXJDaGlsZCA9IGNhbm9uaWNhbGl6
ZShvdGhlck5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgICAgIG90aGVyQ2hpbGQgPSBvdGhlck5v
ZGUtPmNoaWxkMygpOwogICAgICAgICAgICAgaWYgKCFvdGhlckNoaWxkKQogICAgICAgICAgICAg
ICAgIHJldHVybiBvdGhlck5vZGU7CiAgICAgICAgICAgICBpZiAob3RoZXJDaGlsZCAhPSBjaGls
ZDMpCkBAIC0zNzcsMjEgKzM2MiwyMSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAobm9kZSA9PSBjaGls
ZDEgfHwgbm9kZSA9PSBjYW5vbmljYWxpemUoY2hpbGQyKSkgCisgICAgICAgICAgICBpZiAobm9k
ZSA9PSBjaGlsZDEgfHwgbm9kZSA9PSBjaGlsZDIpIAogICAgICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgR2V0
QnlWYWw6CiAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLmJ5VmFsSXNQdXJlKG5vZGUpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCkgPT0gY2hpbGQxICYmIGNhbm9uaWNhbGl6ZShub2RlLT5jaGlsZDIoKSkgPT0gY2Fu
b25pY2FsaXplKGNoaWxkMikpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09
IGNoaWxkMSAmJiBub2RlLT5jaGlsZDIoKSA9PSBjaGlsZDIpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBub2RlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQ
dXRCeVZhbDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewogICAgICAgICAgICAg
ICAgIGlmICghbV9ncmFwaC5ieVZhbElzUHVyZShub2RlKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MCkgPT0gY2hpbGQxICYmIGNhbm9uaWNhbGl6ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEp
KSA9PSBjYW5vbmljYWxpemUoY2hpbGQyKSkKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAwKSA9PSBjaGlsZDEgJiYgbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAxKSA9PSBjaGlsZDIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDIpLm5vZGUoKTsKICAgICAgICAgICAgICAgICAvLyBXZSBtdXN0IGFzc3Vt
ZSB0aGF0IHRoZSBQdXRCeVZhbCB3aWxsIGNsb2JiZXIgdGhlIGxvY2F0aW9uIHdlJ3JlIGdldHRp
bmcgZnJvbS4KICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlcjsgaWYg
d2Uga25vdyB0aGF0IHRoZSBQdXRCeVZhbCBpcyBhY2Nlc3NpbmcgYW4gYXJyYXkgb2YgYQpAQCAt
MTA5MCw2ICsxMDc1LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDb21wYXJlRXFDb25zdGFu
dDoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgICAgIGNhc2UgTWFrZVJvcGU6Cisg
ICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZToKKyAgICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAg
ICAgICAgICAgICBpZiAoY3NlTW9kZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2RlKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24g
MTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdv
cmtpbmcgY29weSkKQEAgLTExMiw2ICsxMTIsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgSW50MzJUb0Rv
dWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgSW50NTJUb0Rv
dWJsZToKKyAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
ICAgICBjYXNlIE1vdkhpbnRBbmRDaGVjazoKQEAgLTE4MCw2ICsxODIsNyBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHN3aXRjaCAobm9kZS0+Ymlu
YXJ5VXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIGNhc2UgTnVt
YmVyVXNlOgorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgICAgIHJlYWQoV29ybGQpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNTU5MDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDMsNiArMTQzLDE1IEBAIGlubGluZSBib29sIGVuYWJsZUNvbmN1cnJlbnRKSVQoKQogI2Vu
ZGlmCiB9CiAKK2lubGluZSBib29sIGVuYWJsZUludDUyKCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30K
KwogZW51bSBTcGlsbFJlZ2lzdGVyc01vZGUgeyBOZWVkVG9TcGlsbCwgRG9udFNwaWxsIH07CiAK
IGVudW0gTm9SZXN1bHRUYWcgeyBOb1Jlc3VsdCB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NCw2ICs2NCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBmaXh1cFNldExvY2Fsc0luQmxv
Y2sobV9ncmFwaC5ibG9jayhibG9ja0luZGV4KSk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAg
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgu
bnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkKKyAgICAgICAgICAgIGZpeHVwVW50eXBlZFNldExv
Y2Fsc0luQmxvY2sobV9ncmFwaC5ibG9jayhibG9ja0luZGV4KSk7CisgICAgICAgIAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTkyLDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFNldExvY2FsOiB7CiAgICAgICAgICAgICAv
LyBUaGlzIGdldHMgaGFuZGxlZCBieSBmaXh1cFNldExvY2Fsc0luQmxvY2soKS4KLSAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBCaXRBbmQ6CkBAIC0xMjQsNiArMTI3LDExIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpIHsKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTk3LDYgKzIwNSwxMCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm5lZ2F0ZVNo
b3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjA3LDYgKzIxOSwxMSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChtX2dyYXBoLm11bFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPE1hY2hpbmVJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZpeEVkZ2U8TnVt
YmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4o
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDAsNiArMzE3LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGVuYWJsZUludDUyKCkKKyAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxh
dGVNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgp
KSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5v
ZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihu
b2RlLT5jaGlsZDIoKSk7CkBAIC0zNTUsNiArMzc4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkKKyAg
ICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZU51bWJlcihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
IHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CkBAIC00
NzYsNiArNTA1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxLbm93bkNl
bGxVc2U+KGNoaWxkMSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQy
KTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGlsZDMpOworICAgICAgICAg
ICAgICAgIGlmIChjaGlsZDMtPnByZWRpY3Rpb24oKSAmIFNwZWNJbnQ1MikKKyAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihjaGlsZDMpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQzKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4oY2hpbGQxKTsKQEAgLTQ5Myw2ICs1
MjYsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KGNoaWxk
Mik7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkMy0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkK
ICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oY2hpbGQzKTsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50VXNlPihjaGlsZDMpOwogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KGNo
aWxkMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04NDcsNiArODgyLDggQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICAgICAgY2FzZSBDaGVja1Rp
ZXJVcEF0UmV0dXJuOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAg
ICAgIGNhc2UgSW50NTJUb0RvdWJsZToKKyAgICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIApAQCAtMTE4OSw2ICsxMjI2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNh
c2UgRmx1c2hlZEludDMyOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1
c2hlZEludDUyOgorICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBGbHVz
aGVkQ2VsbDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyMDMsNiArMTI0MywyMyBAQCBwcml2YXRl
OgogICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9CiAgICAgCisg
ICAgdm9pZCBmaXh1cFVudHlwZWRTZXRMb2NhbHNJbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQor
ICAgIHsKKyAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
QVNTRVJUKGJsb2NrLT5pc1JlYWNoYWJsZSk7CisgICAgICAgIG1fYmxvY2sgPSBibG9jazsKKyAg
ICAgICAgZm9yIChtX2luZGV4SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNp
emUoKTsgKyttX2luZGV4SW5CbG9jaykgeworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fY3Vy
cmVudE5vZGUgPSBibG9jay0+YXQobV9pbmRleEluQmxvY2spOworICAgICAgICAgICAgaWYgKG5v
ZGUtPm9wKCkgIT0gU2V0TG9jYWwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgfQorICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAg
ICB9CisgICAgCiAgICAgTm9kZSogY2hlY2tBcnJheShBcnJheU1vZGUgYXJyYXlNb2RlLCBjb25z
dCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBOb2RlKiBhcnJheSwgTm9kZSogaW5kZXgsIGJvb2wg
KCpzdG9yYWdlQ2hlY2spKGNvbnN0IEFycmF5TW9kZSYpID0gY2FuQ1NFU3RvcmFnZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVChhcnJheU1vZGUuaXNTcGVjaWZpYygpKTsKQEAgLTEzMjEsNiArMTM3
OCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHx8IGlzQm9vbGVhblNwZWN1bGF0aW9u
KHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0
eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAg
ICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCisg
ICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJ
c1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ2VsbFVzZToKICAgICAgICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgIGNhc2UgT2Jq
ZWN0VXNlOgpAQCAtMTM0NywxMiArMTQwOCw4MCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPFVz
ZUtpbmQgdXNlS2luZD4KICAgICB2b2lkIGZpeEVkZ2UoRWRnZSYgZWRnZSwgU3BlY3VsYXRpb25E
aXJlY3Rpb24gZGlyZWN0aW9uID0gQmFja3dhcmRTcGVjdWxhdGlvbikKICAgICB7Ci0gICAgICAg
IGlmIChpc0RvdWJsZSh1c2VLaW5kKSAmJiBlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFy
aXRobWV0aWMoKSkgewotICAgICAgICAgICAgaW5qZWN0SW50MzJUb0RvdWJsZU5vZGUoZWRnZSwg
dXNlS2luZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgaWYgKGlzRG91YmxlKHVzZUtpbmQpKSB7Cisg
ICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJGb3JBcml0aG1ldGljKCkp
IHsKKyAgICAgICAgICAgICAgICBpbmplY3RJbnQzMlRvRG91YmxlTm9kZShlZGdlLCB1c2VLaW5k
LCBkaXJlY3Rpb24pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYgZWRnZS0+c2hvdWxk
U3BlY3VsYXRlTWFjaGluZUludCgpKSB7CisgICAgICAgICAgICAgICAgLy8gTWFrZSBhbGwgZG91
YmxlIHVzZXMgb2YgaW50NTIgdmFsdWVzIGhhdmUgYW4gaW50ZXJtZWRpYXRlIEludDUyVG9Eb3Vi
bGUuCisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIElu
dDUyVG9WYWx1ZSAoc2VlIGJlbG93KSBleGNlcHQgdGhhdAorICAgICAgICAgICAgICAgIC8vIElu
dDhUb0RvdWJsZSB3aWxsIGNvbnZlcnQgaW50NTIncyB0aGF0IGZpdCBpbiBhbiBpbnQzMiBpbnRv
IGEgZG91YmxlCisgICAgICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGNyZWF0
ZSBhIGJveGVkIGludDMyIGxpa2UgSW50NTJUb1ZhbHVlIGRvZXMuCisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ1MkFzRG91Ymxl
LCBJbnQ1MlRvRG91YmxlLAorICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5jb2Rl
T3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBOdW1iZXJVc2UpKTsKKyAgICAgICAgICAgICAgICBl
ZGdlID0gRWRnZShyZXN1bHQsIHVzZUtpbmQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGVuYWJsZUludDUy
KCkgJiYgdXNlS2luZCAhPSBNYWNoaW5lSW50VXNlCisgICAgICAgICAgICAmJiBlZGdlLT5zaG91
bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkgJiYgIWVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkp
IHsKKyAgICAgICAgICAgIC8vIFdlIG1ha2UgYWxsIG5vbi1pbnQ1MiB1c2VzIG9mIGludDUyIHZh
bHVlcyBoYXZlIGFuIGludGVybWVkaWF0ZSBJbnQ1MlRvVmFsdWUKKyAgICAgICAgICAgIC8vIG5v
ZGUgdG8gZW5zdXJlIHRoYXQgd2UgaGFuZGxlIHRoaXMgcHJvcGVybHk6CisgICAgICAgICAgICAv
LworICAgICAgICAgICAgLy8gYTogU29tZUludDUyCisgICAgICAgICAgICAvLyBiOiBBcml0aEFk
ZChAYSwgLi4uKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIEBhKQorICAgICAgICAgICAg
Ly8gZDogQXJpdGhBZGQoQGEsIC4uLikKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBX
aXRob3V0IGFuIGludGVybWVkaWF0ZSBub2RlIGFuZCBqdXN0IGxhYmVsaW5nIHRoZSB1c2VzLCB3
ZSB3aWxsIGdldDoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBhOiBTb21lSW50NTIK
KyAgICAgICAgICAgIC8vIGI6IEFyaXRoQWRkKEludDUyOkBhLCAuLi4pCisgICAgICAgICAgICAv
LyBjOiBDYWxsKC4uLiwgVW50eXBlZDpAYSkKKyAgICAgICAgICAgIC8vIGQ6IEFyaXRoQWRkKElu
dDUyOkBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQW5kIG5vdyB0aGUg
Yy0+VW50eXBlZDpAYSBlZGdlIHdpbGwgYm94IHRoZSB2YWx1ZSBvZiBAYSBpbnRvIGEgZG91Ymxl
LiBUaGlzCisgICAgICAgICAgICAvLyBpcyBiYWQsIGJlY2F1c2Ugbm93IHRoZSBkLT5JbnQ1MjpA
YSBlZGdlIHdpbGwgZWl0aGVyIGhhdmUgdG8gZG8gZG91YmxlLXRvLWludAorICAgICAgICAgICAg
Ly8gY29udmVyc2lvbnMsIG9yIHdpbGwgaGF2ZSB0byBPU1IgZXhpdCB1bmNvbmRpdGlvbmFsbHku
IEFsdGVybmF0aXZlbHkgd2UgY291bGQKKyAgICAgICAgICAgIC8vIGhhdmUgdGhlIGMtPlVudHlw
ZWQ6QGEgZWRnZSBib3ggdGhlIHZhbHVlIGJ5IGNvcHlpbmcgcmF0aGVyIHRoYW4gaW4tcGxhY2Uu
CisgICAgICAgICAgICAvLyBCdXQgdGhlc2UgYm94aW5ncyBhcmUgYWxzbyBjb3N0bHkgc28gdGhp
cyB3b3VsZG4ndCBiZSBncmVhdC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBUaGUg
c29sdXRpb24gd2UgdXNlIGlzIHRvIGFsd2F5cyBoYXZlIG5vbi1JbnQ1MiB1c2VzIG9mIHByZWRp
Y3RlZCBJbnQ1MidzIHVzZQorICAgICAgICAgICAgLy8gYW4gaW50ZXJ2ZW5pbmcgSW50NTJUb1Zh
bHVlIG5vZGU6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gYTogU29tZUludDUyCisg
ICAgICAgICAgICAvLyBiOiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQorICAgICAgICAgICAgLy8g
eDogSW50NTJUb1ZhbHVlKEludDUyOkBhKQorICAgICAgICAgICAgLy8gYzogQ2FsbCguLi4sIFVu
dHlwZWQ6QHgpCisgICAgICAgICAgICAvLyBkOiBBcml0aEFkZChJbnQ1MjpAYSwgLi4uKQorICAg
ICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBldmVuIGlmIHdlIGhhZCBtdWx0
aXBsZSBub24taW50NTIgdXNlcyBvZiBAYSwgdGhlIG11bHRpcGxlCisgICAgICAgICAgICAvLyBJ
bnQ1MlRvVmFsdWUncyB3b3VsZCBnZXQgQ1NFJ2QgdG9nZXRoZXIuIFNvIHRoZSBib3hpbmcgd291
bGQgb25seSBoYXBwZW4gb25jZS4KKyAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIEBh
IHdvdWxkIGNvbnRpbnVlIHRvIGJlIHJlcHJlc2VudGVkIGFzIGEgbmF0aXZlIGludDUyLgorICAg
ICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEFuIGFsdGVybmF0aXZlIHdvdWxkIGhhdmUgYmVl
biB0byBpbnNlcnQgVG9OYXRpdmVJbnQ1MiBub2RlcyBvbiBpbnQ1MiB1c2VzIG9mCisgICAgICAg
ICAgICAvLyBpbnQ1MidzLiBUaGlzIHdvdWxkIGhhdmUgaGFuZGxlZCB0aGUgYWJvdmUgZXhhbXBs
ZSBidXQgd291bGQgZmFsbCBvdmVyIGZvcjoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAv
LyBhOiBTb21lSW50NTIKKyAgICAgICAgICAgIC8vIGI6IENhbGwoLi4uLCBAYSkKKyAgICAgICAg
ICAgIC8vIGM6IEFyaXRoQWRkKEBhLCAuLi4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAg
Ly8gQnV0IHRoZSBzb2x1dGlvbiB3ZSB1c2UgaGFuZGxlcyB0aGUgYWJvdmUgZ3JhY2VmdWxseS4K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDUyLCBJ
bnQ1MlRvVmFsdWUsCisgICAgICAgICAgICAgICAgbV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiwg
RWRnZShlZGdlLm5vZGUoKSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgZWRnZSA9IEVkZ2Uo
cmVzdWx0LCB1c2VLaW5kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8dXNlS2luZD4oZWRnZS5ub2RlKCkpOwor
ICAgICAgICAKICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKHVzZUtpbmQpOwogICAgIH0KICAgICAK
QEAgLTEzNzgsNyArMTUwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmplY3RJbnQzMlRvRG91
YmxlTm9kZShFZGdlJiBlZGdlLCBVc2VLaW5kIHVzZUtpbmQgPSBOdW1iZXJVc2UsIFNwZWN1bGF0
aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEJhY2t3YXJkU3BlY3VsYXRpb24pCiAgICAgewogICAg
ICAgICBOb2RlKiByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAg
ICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQ0OCwgSW50MzJUb0RvdWJsZSwKKyAgICAgICAgICAg
IG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTJBc0RvdWJsZSwgSW50MzJUb0RvdWJsZSwKICAgICAg
ICAgICAgIG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4sIEVkZ2UoZWRnZS5ub2RlKCksIE51bWJl
clVzZSkpOwogICAgICAgICBpZiAoZGlyZWN0aW9uID09IEZvcndhcmRTcGVjdWxhdGlvbikKICAg
ICAgICAgICAgIHJlc3VsdC0+bWVyZ2VGbGFncyhOb2RlRXhpdHNGb3J3YXJkKTsKQEAgLTE0MzQs
MTMgKzE1NjMsMjAgQEAgcHJpdmF0ZToKICAgICBib29sIGF0dGVtcHRUb01ha2VJbnRlZ2VyQWRk
KE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBBZGRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IG1f
Z3JhcGguYWRkU3BlY3VsYXRpb25Nb2RlKG5vZGUpOwotICAgICAgICBpZiAobW9kZSA9PSBEb250
U3BlY3VsYXRlSW50MzIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICht
b2RlICE9IERvbnRTcGVjdWxhdGVJbnQzMikgeworICAgICAgICAgICAgdHJ1bmNhdGVDb25zdGFu
dHNJZk5lY2Vzc2FyeShub2RlLCBtb2RlKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICB0cnVuY2F0ZUNvbnN0YW50c0lmTmVjZXNzYXJ5KG5vZGUsIG1vZGUpOwotICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlm
IChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
Zml4RWRnZTxNYWNoaW5lSW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICAKICAgICBib29sIGF0dGVtcHRUb01ha2VHZXRBcnJheUxlbmd0aChOb2RlKiBub2Rl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5jcHAJ
KHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hG
b3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBGbHUKICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAg
ICAgb3V0LnByaW50KCJGbHVzaGVkSW50MzIiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
Rmx1c2hlZEludDUyOgorICAgICAgICBvdXQucHJpbnQoIkZsdXNoZWRJbnQ1MiIpOworICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAgICBvdXQucHJpbnQoIkZs
dXNoZWREb3VibGUiKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIGVudW0gRmx1c2hGb3Jt
YXQgewogICAgIERlYWRGbHVzaCwKICAgICBGbHVzaGVkSW50MzIsCisgICAgRmx1c2hlZEludDUy
LAogICAgIEZsdXNoZWREb3VibGUsCiAgICAgRmx1c2hlZENlbGwsCiAgICAgRmx1c2hlZEJvb2xl
YW4sCkBAIC01NSw2ICs1Niw4IEBAIGlubGluZSBOb2RlRmxhZ3MgcmVzdWx0Rm9yKEZsdXNoRm9y
bWF0IGYKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRKUzsKICAgICBjYXNlIEZsdXNoZWRJbnQz
MjoKICAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRJbnQzMjsKKyAgICBjYXNlIEZsdXNoZWRJbnQ1
MjoKKyAgICAgICAgcmV0dXJuIE5vZGVSZXN1bHRJbnQ1MjsKICAgICBjYXNlIEZsdXNoZWREb3Vi
bGU6CiAgICAgICAgIHJldHVybiBOb2RlUmVzdWx0TnVtYmVyOwogICAgIGNhc2UgRmx1c2hlZEJv
b2xlYW46CkBAIC03NCw2ICs3Nyw4IEBAIGlubGluZSBVc2VLaW5kIHVzZUtpbmRGb3IoRmx1c2hG
b3JtYXQgZm8KICAgICAgICAgcmV0dXJuIENlbGxVc2U7CiAgICAgY2FzZSBGbHVzaGVkSW50MzI6
CiAgICAgICAgIHJldHVybiBJbnQzMlVzZTsKKyAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKKyAgICAg
ICAgcmV0dXJuIE1hY2hpbmVJbnRVc2U7CiAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgogICAgICAg
ICByZXR1cm4gTnVtYmVyVXNlOwogICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCShyZXZpc2lvbiAx
NTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRpb25JbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IGluaXRHUFIobm9kZSwgdXNlQ291bnQsIGdwciwgRGF0YUZvcm1hdEludDMyKTsKICAgICB9Cisg
ICAgdm9pZCBpbml0SW50NTIoTm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyBy
ZWcsIERhdGFGb3JtYXQgZm9ybWF0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZvcm1hdCA9PSBE
YXRhRm9ybWF0SW50NTIgfHwgZm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CisgICAg
ICAgIGluaXRHUFIobm9kZSwgdXNlQ291bnQsIHJlZywgZm9ybWF0KTsKKyAgICB9CisgICAgdm9p
ZCBpbml0SW50NTIoTm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQsIEdQUlJlZyByZWcpCisg
ICAgeworICAgICAgICBpbml0R1BSKG5vZGUsIHVzZUNvdW50LCByZWcsIERhdGFGb3JtYXRJbnQ1
Mik7CisgICAgfQorICAgIHZvaWQgaW5pdFN0cmljdEludDUyKE5vZGUqIG5vZGUsIHVpbnQzMl90
IHVzZUNvdW50LCBHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgaW5pdEdQUihub2RlLCB1c2VD
b3VudCwgcmVnLCBEYXRhRm9ybWF0U3RyaWN0SW50NTIpOworICAgIH0KICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgIHZvaWQgaW5pdEpTVmFsdWUoTm9kZSogbm9kZSwgdWludDMyX3QgdXNlQ291bnQs
IEdQUlJlZyBncHIsIERhdGFGb3JtYXQgZm9ybWF0ID0gRGF0YUZvcm1hdEpTKQogICAgIHsKQEAg
LTE4Nyw2ICsyMDAsMTEgQEAgcHVibGljOgogICAgIC8vIEdldCB0aGUgZm9ybWF0IG9mIHRoZSB2
YWx1ZSBhcyBpdCBpcyBzcGlsbGVkIGluIHRoZSBKU1N0YWNrIChvciAnbm9uZScpLgogICAgIERh
dGFGb3JtYXQgc3BpbGxGb3JtYXQoKSB7IHJldHVybiBtX3NwaWxsRm9ybWF0OyB9CiAgICAgCisg
ICAgYm9vbCBpc0Zvcm1hdChEYXRhRm9ybWF0IGV4cGVjdGVkRm9ybWF0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJlZ2lzdGVyRm9ybWF0KCkgPT0gZXhwZWN0ZWRGb3JtYXQgfHwgc3BpbGxGb3Jt
YXQoKSA9PSBleHBlY3RlZEZvcm1hdDsKKyAgICB9CisgICAgCiAgICAgYm9vbCBpc0pTRm9ybWF0
KERhdGFGb3JtYXQgZXhwZWN0ZWRGb3JtYXQpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpp
c0pTRm9ybWF0KHJlZ2lzdGVyRm9ybWF0KCksIGV4cGVjdGVkRm9ybWF0KSB8fCBKU0M6OmlzSlNG
b3JtYXQoc3BpbGxGb3JtYXQoKSwgZXhwZWN0ZWRGb3JtYXQpOwpAQCAtMTk3LDYgKzIxNSwxNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBpc0pTRm9ybWF0KERhdGFGb3JtYXRKU0ludDMyKTsK
ICAgICB9CiAgICAgCisgICAgYm9vbCBpc0ludDUyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBp
c0Zvcm1hdChEYXRhRm9ybWF0SW50NTIpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzU3RyaWN0
SW50NTIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzRm9ybWF0KERhdGFGb3JtYXRTdHJpY3RJ
bnQ1Mik7CisgICAgfQorICAgIAogICAgIGJvb2wgaXNKU0RvdWJsZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gaXNKU0Zvcm1hdChEYXRhRm9ybWF0SlNEb3VibGUpOwpAQCAtMzE0LDYgKzM0Miwx
OSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBmaWxsR1BSKHN0cmVhbSwgZ3ByLCBEYXRhRm9y
bWF0SW50MzIpOwogICAgIH0KKyAgICB2b2lkIGZpbGxJbnQ1MihWYXJpYWJsZUV2ZW50U3RyZWFt
JiBzdHJlYW0sIEdQUlJlZyBncHIsIERhdGFGb3JtYXQgZm9ybWF0KQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIgfHwgZm9ybWF0ID09IERhdGFGb3JtYXRT
dHJpY3RJbnQ1Mik7CisgICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIGZvcm1hdCk7CisgICAg
fQorICAgIHZvaWQgZmlsbEludDUyKFZhcmlhYmxlRXZlbnRTdHJlYW0mIHN0cmVhbSwgR1BSUmVn
IGdwcikKKyAgICB7CisgICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIsIERhdGFGb3JtYXRJbnQ1
Mik7CisgICAgfQorICAgIHZvaWQgZmlsbFN0cmljdEludDUyKFZhcmlhYmxlRXZlbnRTdHJlYW0m
IHN0cmVhbSwgR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIGZpbGxHUFIoc3RyZWFtLCBncHIs
IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CisgICAgfQogICAgIHZvaWQgZmlsbEJvb2xlYW4oVmFy
aWFibGVFdmVudFN0cmVhbSYgc3RyZWFtLCBHUFJSZWcgZ3ByKQogICAgIHsKICAgICAgICAgZmls
bEdQUihzdHJlYW0sIGdwciwgRGF0YUZvcm1hdEJvb2xlYW4pOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsMTQgKzIz
NiwxNCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgICAg
IGlmIChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKSkKICAgICAgICAgICAgIG91dC5wcmludChj
b21tYSwgImFyZyIsIG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQpLCAiKCIsIFZhcmlhYmxlQWNj
ZXNzRGF0YUR1bXAoKnRoaXMsIHZhcmlhYmxlQWNjZXNzRGF0YSksICIpIik7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgInIiLCBvcGVyYW5kLCAiKCIsIFZhcmlh
YmxlQWNjZXNzRGF0YUR1bXAoKnRoaXMsIHZhcmlhYmxlQWNjZXNzRGF0YSksICIpIik7CisgICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJsb2MiLCBvcGVyYW5kVG9Mb2NhbChvcGVyYW5kKSwg
IigiLCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKCp0aGlzLCB2YXJpYWJsZUFjY2Vzc0RhdGEpLCAi
KSIpOwogICAgIH0KICAgICBpZiAobm9kZS0+aGFzVW5saW5rZWRMb2NhbCgpKSB7CiAgICAgICAg
IGludCBvcGVyYW5kID0gbm9kZS0+dW5saW5rZWRMb2NhbCgpOwogICAgICAgICBpZiAob3BlcmFu
ZElzQXJndW1lbnQob3BlcmFuZCkpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJhcmci
LCBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5kKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG91dC5wcmludChjb21tYSwgInIiLCBvcGVyYW5kKTsKKyAgICAgICAgICAgIG91dC5wcmludChj
b21tYSwgImxvYyIsIG9wZXJhbmRUb0xvY2FsKG9wZXJhbmQpKTsKICAgICB9CiAgICAgaWYgKG5v
ZGUtPmhhc0NvbnN0YW50QnVmZmVyKCkpIHsKICAgICAgICAgb3V0LnByaW50KGNvbW1hKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE1NTkwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAt
MjMwLDE2ICsyMzAsMTkgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgYWRkU2hvdWxkU3BlY3Vs
YXRlTWFjaGluZUludChOb2RlKiBhZGQpCiAgICAgeworICAgICAgICBpZiAoIWVuYWJsZUludDUy
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICBOb2RlKiBs
ZWZ0ID0gYWRkLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgIE5vZGUqIHJpZ2h0ID0gYWRkLT5j
aGlsZDIoKS5ub2RlKCk7CiAKICAgICAgICAgYm9vbCBzcGVjdWxhdGlvbjsKICAgICAgICAgaWYg
KGFkZC0+b3AoKSA9PSBWYWx1ZUFkZCkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uID0gTm9kZTo6
c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludEV4cGVjdGluZ0RlZmluZWQobGVmdCwgcmlnaHQpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb24gPSBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50
KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BlY3VsYXRpb24gPSBO
b2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50Rm9yQXJpdGhtZXRpYyhsZWZ0LCByaWdodCk7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbiA9IE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJ
bnQobGVmdCwgcmlnaHQpOwogCi0gICAgICAgIHJldHVybiBzcGVjdWxhdGlvbiAmJiAhaGFzRXhp
dFNpdGUoYWRkLCBJbnQ0OE92ZXJmbG93KTsKKyAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uICYm
ICFoYXNFeGl0U2l0ZShhZGQsIEludDUyT3ZlcmZsb3cpOwogICAgIH0KICAgICAKICAgICBib29s
IG11bFNob3VsZFNwZWN1bGF0ZUludDMyKE5vZGUqIG11bCkKQEAgLTI1NywxMiArMjYwLDE1IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVChtdWwtPm9wKCkgPT0gQXJpdGhNdWwpOwog
ICAgICAgICAKKyAgICAgICAgaWYgKCFlbmFibGVJbnQ1MigpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAKICAgICAgICAgTm9kZSogbGVmdCA9IG11bC0+Y2hpbGQxKCkubm9k
ZSgpOwogICAgICAgICBOb2RlKiByaWdodCA9IG11bC0+Y2hpbGQyKCkubm9kZSgpOwogCi0gICAg
ICAgIHJldHVybiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50Rm9yQXJpdGhtZXRpYyhs
ZWZ0LCByaWdodCkKLSAgICAgICAgICAgICYmIG11bC0+Y2FuU3BlY3VsYXRlSW50NDgoKQotICAg
ICAgICAgICAgJiYgIWhhc0V4aXRTaXRlKG11bCwgSW50NDhPdmVyZmxvdyk7CisgICAgICAgIHJl
dHVybiBOb2RlOjpzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KGxlZnQsIHJpZ2h0KQorICAgICAg
ICAgICAgJiYgbXVsLT5jYW5TcGVjdWxhdGVJbnQ1MigpCisgICAgICAgICAgICAmJiAhaGFzRXhp
dFNpdGUobXVsLCBJbnQ1Mk92ZXJmbG93KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBuZWdhdGVT
aG91bGRTcGVjdWxhdGVJbnQzMihOb2RlKiBuZWdhdGUpCkBAIC0yNzQsOSArMjgwLDExIEBAIHB1
YmxpYzoKICAgICBib29sIG5lZ2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoTm9kZSogbmVn
YXRlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5lZ2F0ZS0+b3AoKSA9PSBBcml0aE5lZ2F0ZSk7
Ci0gICAgICAgIHJldHVybiBuZWdhdGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50Rm9yQXJpdGhtZXRpYygpCi0gICAgICAgICAgICAmJiAhaGFzRXhpdFNpdGUobmVnYXRlLCBJ
bnQ0OE92ZXJmbG93KQotICAgICAgICAgICAgJiYgbmVnYXRlLT5jYW5TcGVjdWxhdGVJbnQ0OCgp
OworICAgICAgICBpZiAoIWVuYWJsZUludDUyKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBuZWdhdGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KCkKKyAgICAgICAgICAgICYmICFoYXNFeGl0U2l0ZShuZWdhdGUsIEludDUyT3ZlcmZsb3cp
CisgICAgICAgICAgICAmJiBuZWdhdGUtPmNhblNwZWN1bGF0ZUludDUyKCk7CiAgICAgfQogICAg
IAogICAgIC8vIEhlbHBlciBtZXRob2RzIHRvIGNoZWNrIG5vZGVzIGZvciBjb25zdGFudHMuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMywx
MCArMzEzLDEwIEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlU3RhdGVBdFQKICAg
ICAgICAgICAgIC8vIGJlZm9yZSBhbmQgYWZ0ZXIgc2V0dGluZyBpdC4KICAgICAgICAgICAgIHNv
dXJjZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgaWYgKG5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpID09IEZsdXNoZWREb3VibGUpIHsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQoIShzb3VyY2UubV90eXBlICYgflNwZWNOdW1iZXIpKTsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQoISEoc291cmNlLm1fdHlwZSAmIH5TcGVjRG91YmxlKSA9PSAh
IShzb3VyY2UubV90eXBlICYgU3BlY0ludDMyKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCEo
c291cmNlLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikpOworICAgICAgICAgICAgICAgIEFTU0VS
VCghIShzb3VyY2UubV90eXBlICYgflNwZWNEb3VibGUpID09ICEhKHNvdXJjZS5tX3R5cGUgJiBT
cGVjTWFjaGluZUludCkpOwogICAgICAgICAgICAgICAgIGlmICghKHNvdXJjZS5tX3R5cGUgJiB+
U3BlY0RvdWJsZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgc291cmNlLm1lcmdlKFNwZWNJbnQ0
OEFzRG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlLm1lcmdlKFNwZWNJbnQ1MkFz
RG91YmxlKTsKICAgICAgICAgICAgICAgICAgICAgc291cmNlLmZpbHRlcihTcGVjRG91YmxlKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsx
MDMsOSBAQCB2b2lkIEpJVENvZGU6OnJlY29uc3RydWN0KAogICAgICAgICBjYXNlIEFscmVhZHlJ
bkpTU3RhY2tBc1VuYm94ZWRJbnQzMjoKICAgICAgICAgICAgIHZhbHVlID0ganNOdW1iZXIoZXhl
Yy0+cihvcGVyYW5kKS51bmJveGVkSW50MzIoKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBBbHJlYWR5SW5KU1N0YWNrQXNVbmJveGVkSW50NTI6CisgICAgICAgICAgICB2YWx1
ZSA9IGpzTnVtYmVyKGV4ZWMtPnIob3BlcmFuZCkudW5ib3hlZEludDUyKCkpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToK
ICAgICAgICAgICAgIHZhbHVlID0ganNEb3VibGVOdW1iZXIoZXhlYy0+cihvcGVyYW5kKS51bmJv
eGVkRG91YmxlKCkpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01pbmlmaWVkTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDYgKzQ4LDggQEAgaW5saW5lIGJvb2wgYmVsb25nc0luTWluaWZpZWRHcmFwaChOb2RlVAog
ICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAgY2FzZSBEb3VibGVBc0ludDMyOgogICAgIGNh
c2UgUGhhbnRvbUFyZ3VtZW50czoKKyAgICBjYXNlIEludDUyVG9WYWx1ZToKKyAgICBjYXNlIElu
dDUyVG9Eb3VibGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEFTU0VSVCghcGVybWl0c09TUkJhY2t3YXJkUmV3aXJpbmcodHlwZSkgJiYgIXBlcm1pdHNPU1JG
b3J3YXJkUmV3aXJpbmcodHlwZSkpOwpAQCAtMTA0LDYgKzEwNiw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKICAg
ICAgICAgY2FzZSBEb3VibGVBc0ludDMyOgorICAgICAgICBjYXNlIEludDUyVG9Eb3VibGU6Cisg
ICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNDEsMTIgKzEyNDEsMTIg
QEAgc3RydWN0IE5vZGUgewogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBpc051bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7
CisgICAgICAgIHJldHVybiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwog
ICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZU51bWJlckV4cGVjdGluZ0RlZmlu
ZWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdE
ZWZpbmVkKHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0Z1bGxOdW1iZXJTcGVjdWxh
dGlvbkV4cGVjdGluZ0RlZmluZWQocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgYm9v
bCBzaG91bGRTcGVjdWxhdGVCb29sZWFuKCkKQEAgLTE0MjQsOSArMTQyNCw5IEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgcmV0dXJuIG5vZGVDYW5TcGVjdWxhdGVJbnQzMihhcml0aE5vZGVGbGFn
cygpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBjYW5TcGVjdWxhdGVJbnQ0OCgpCisgICAgYm9v
bCBjYW5TcGVjdWxhdGVJbnQ1MigpCiAgICAgewotICAgICAgICByZXR1cm4gbm9kZUNhblNwZWN1
bGF0ZUludDQ4KGFyaXRoTm9kZUZsYWdzKCkpOworICAgICAgICByZXR1cm4gbm9kZUNhblNwZWN1
bGF0ZUludDUyKGFyaXRoTm9kZUZsYWdzKCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXBD
aGlsZHJlbihQcmludFN0cmVhbSYgb3V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlRmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVGbGFncy5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVGbGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw5IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICNkZWZpbmUgTm9kZVJlc3VsdEpTICAgICAg
ICAgICAgICAgICAgICAgMHgwMDAxCiAjZGVmaW5lIE5vZGVSZXN1bHROdW1iZXIgICAgICAgICAg
ICAgICAgIDB4MDAwMgogI2RlZmluZSBOb2RlUmVzdWx0SW50MzIgICAgICAgICAgICAgICAgICAw
eDAwMDMKLSNkZWZpbmUgTm9kZVJlc3VsdEJvb2xlYW4gICAgICAgICAgICAgICAgMHgwMDA0Ci0j
ZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdlICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBO
b2RlUmVzdWx0SW50NTIgICAgICAgICAgICAgICAgICAweDAwMDQKKyNkZWZpbmUgTm9kZVJlc3Vs
dEJvb2xlYW4gICAgICAgICAgICAgICAgMHgwMDA1CisjZGVmaW5lIE5vZGVSZXN1bHRTdG9yYWdl
ICAgICAgICAgICAgICAgIDB4MDAwNgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICNkZWZpbmUgTm9kZU11c3RHZW5lcmF0ZSAgICAgICAgICAgICAgICAgMHgwMDA4IC8vIHNldCBv
biBub2RlcyB0aGF0IGhhdmUgc2lkZSBlZmZlY3RzLCBhbmQgbWF5IG5vdCB0cml2aWFsbHkgYmUg
cmVtb3ZlZCBieSBEQ0UuCiAjZGVmaW5lIE5vZGVIYXNWYXJBcmdzICAgICAgICAgICAgICAgICAg
IDB4MDAxMApAQCAtMTA3LDcgKzEwOCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBub2RlQ2FuU3Bl
Y3VsYXRlSW50MzIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIG5v
ZGVDYW5TcGVjdWxhdGVJbnQ0OChOb2RlRmxhZ3MgZmxhZ3MpCitzdGF0aWMgaW5saW5lIGJvb2wg
bm9kZUNhblNwZWN1bGF0ZUludDUyKE5vZGVGbGFncyBmbGFncykKIHsKICAgICBpZiAobm9kZU1h
eU5lZ1plcm8oZmxhZ3MpKQogICAgICAgICByZXR1cm4gYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2
ZVplcm8oZmxhZ3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhJbnQzMlRvRG91YmxlLCBOb2RlUmVzdWx0TnVt
YmVyKSBcCiAgICAgLyogVXNlZCB0byBzcGVjdWxhdGUgdGhhdCBhIGRvdWJsZSB2YWx1ZSBpcyBh
Y3R1YWxseSBhbiBpbnRlZ2VyLiAqL1wKICAgICBtYWNybyhEb3VibGVBc0ludDMyLCBOb2RlUmVz
dWx0SW50MzIgfCBOb2RlRXhpdHNGb3J3YXJkKSBcCisgICAgLyogVXNlZCB0byBzZXBhcmF0ZSBy
ZXByZXNlbnRhdGlvbiBhbmQgcmVnaXN0ZXIgYWxsb2NhdGlvbiBvZiBJbnQ1MidzIHJlcHJlc2Vu
dGVkICovXAorICAgIC8qIGFzIHZhbHVlcy4gKi9cCisgICAgbWFjcm8oSW50NTJUb1ZhbHVlLCBO
b2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhJbnQ1MlRvRG91YmxlLCBOb2RlUmVzdWx0TnVtYmVy
KSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBhcml0aG1ldGljIG9wZXJhdGlvbnMuICovXAog
ICAgIG1hY3JvKEFyaXRoQWRkLCBOb2RlUmVzdWx0TnVtYmVyIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XApAQCAtMzU2LDYgKzM2MCwxNyBAQCBpbmxpbmUgdW5zaWduZWQgZm9yd2FyZFJld2lyaW5nU2Vs
ZWN0aW9uCiAgICAgICAgIC8vIFRoaXMgbG9zZXMgaW5mb3JtYXRpb24uIE9ubHkgdXNlIGl0IGlm
IHRoZXJlIGFyZSBubyBiZXR0ZXIgYWx0ZXJuYXRpdmVzLgogICAgICAgICByZXR1cm4gMjU7CiAg
ICAgICAgIAorICAgIGNhc2UgSW50NTJUb1ZhbHVlOgorICAgICAgICAvLyBMb3NlcyBubyBpbmZv
cm1hdGlvbi4gSXQganVzdCBib3hlcyB0aGUgdmFsdWUsIHdoaWNoIGlzIHdoYXQgT1NSIHdhbnRz
CisgICAgICAgIC8vIHRvIGRvIGFueXdheS4KKyAgICAgICAgcmV0dXJuIDEwMDsKKyAgICAgICAg
CisgICAgY2FzZSBJbnQ1MlRvRG91YmxlOgorICAgICAgICAvLyBUaGlzIGlzIGxpa2UgSW50MzJU
b0RvdWJsZTsgd2UgY2FuIHVzZSBpdCBiZWNhdXNlIGl0IGdpdmVzIGEgc2VtYW50aWNhbGx5Cisg
ICAgICAgIC8vIGVxdWl2YWxlbnQgdmFsdWUgYnV0IHRoYXQgdmFsdWUgbWF5IGJlIGFuIGludDMy
IGluIGEgZG91YmxlLCBzbyB3ZSdkCisgICAgICAgIC8vIHJhdGhlciBub3QgaWYgd2UgY2FuIGF2
b2lkIGl0LgorICAgICAgICByZXR1cm4gNzU7CisgICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk1LDYgKzE5NSw4IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhp
dChjb25zdCAKICAgICAgICAgY2FzZSBJbkdQUjoKICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJ
bkdQUjoKICAgICAgICAgY2FzZSBVSW50MzJJbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVkSW50
NTJJbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoKICAgICAgICAg
ICAgIG1faml0LnN0b3JlNjQocmVjb3ZlcnkuZ3ByKCksIHNjcmF0Y2ggKyBpbmRleCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMjM1LDEyICsyMzcsMTUgQEAgdm9pZCBP
U1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICBjYXNlIERpc3BsYWNl
ZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAg
ICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgSW50NTJEaXNw
bGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgU3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3Rh
Y2s6CiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAg
ICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFj
a0FzVW5ib3hlZEludDMyOgogICAgICAgICBjYXNlIEFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRE
b3VibGU6CisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyOgogICAg
ICAgICAgICAgbV9qaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5k
KSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpy
ZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc0LDMzICsy
NzksMzggQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAg
ICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAg
ICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKLSAgICAgICAgY2FzZSBJ
bkZQUjoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAg
ICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5k
ZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEdQUklu
Zm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LmJveERvdWJs
ZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGNhc2UgQWxyZWFk
eUluSlNTdGFja0FzVW5ib3hlZEludDUyOgorICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BS
OgorICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgbV9q
aXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAg
bV9qaXQucnNoaWZ0NjQoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAg
ICAgICAgIG1faml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BS
SW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgbV9qaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgVW5ib3hlZFN0
cmljdEludDUySW5HUFI6CisgICAgICAgIGNhc2UgU3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3Rh
Y2s6CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpy
ZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAg
IG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBj
YXNlIFVJbnQzMkluR1BSOiB7CisgICAgICAgIGNhc2UgVUludDMySW5HUFI6CiAgICAgICAgICAg
ICBtX2ppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAg
ICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVn
VDApOwotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIHBvc2l0aXZlID0gbV9qaXQu
YnJhbmNoMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpHcmVhdGVyVGhhbk9y
RXF1YWwsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKDApKTsKLSAgICAgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91Ymxl
KEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIG1faml0LmFk
ZERvdWJsZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVz
cygmQXNzZW1ibHlIZWxwZXJzOjp0d29Ub1RoZTMyKSwKLSAgICAgICAgICAgICAgICBGUFJJbmZv
OjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAg
ICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZERvdWJsZToKKyAgICAgICAgY2FzZSBJ
bkZQUjoKKyAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAg
ICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5k
ZXgpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEdQUklu
Zm86OnJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIG1faml0LmJveERvdWJs
ZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAgICAgICAgICAgIHBvc2l0aXZl
LmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBkb25lLmxpbmsoJm1f
aml0KTsKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ29uc3RhbnQ6CiAgICAgICAgICAgICBt
X2ppdC5zdG9yZTY0KApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwx
NCArNDAsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXN0YXRpYyBD
U3RyaW5nIHNob3J0T3BlcmFuZHNEdW1wKGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBv
cGVyYW5kcykKLXsKLSAgICBEdW1wQ29udGV4dCBjb250ZXh0OwotICAgIFN0cmluZ1ByaW50U3Ry
ZWFtIG91dDsKLSAgICBvdXQucHJpbnQoaW5Db250ZXh0KG9wZXJhbmRzLCAmY29udGV4dCkpOwot
ICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7Ci19Ci0KIGV4dGVybiAiQyIgewogCiB2b2lkIGNv
bXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTExMyw3ICsxMDUsNyBAQCB2b2lkIGNv
bXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICgiREZHIE9TUiBleGl0
ICMldSAoJXMsICVzKSBmcm9tICVzLCB3aXRoIG9wZXJhbmRzID0gJXMiLAogICAgICAgICAgICAg
ICAgIGV4aXRJbmRleCwgdG9DU3RyaW5nKGV4aXQubV9jb2RlT3JpZ2luKS5kYXRhKCksCiAgICAg
ICAgICAgICAgICAgZXhpdEtpbmRUb1N0cmluZyhleGl0Lm1fa2luZCksIHRvQ1N0cmluZygqY29k
ZUJsb2NrKS5kYXRhKCksCi0gICAgICAgICAgICAgICAgc2hvcnRPcGVyYW5kc0R1bXAob3BlcmFu
ZHMpLmRhdGEoKSkpOworICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhpZ25vcmluZ0NvbnRleHQ8
RHVtcENvbnRleHQ+KG9wZXJhbmRzKSkuZGF0YSgpKSk7CiAgICAgfQogICAgIAogICAgIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgU3BlY3VsYXRl
ZFR5cGUgc3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0aW9uKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlKQogICAgIHsKLSAgICAgICAgaWYgKCFpc051bWJlclNwZWN1bGF0aW9uKHZhbHVlKSkKKyAg
ICAgICAgaWYgKCFpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbih2YWx1ZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gU3BlY0RvdWJsZTsKICAgICAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZU5hTikKICAg
ICAgICAgICAgIHJldHVybiBTcGVjRG91YmxlOwpAQCAtMTQyLDE1ICsxNDIsMTcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgogICAgICAgICBjYXNlIFdlYWtKU0NvbnN0YW50
OiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gc3BlY3VsYXRpb25Gcm9tVmFs
dWUobV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChub2RlKSk7Ci0gICAgICAgICAgICBpZiAodHlw
ZSA9PSBTcGVjSW50NDhBc0RvdWJsZSkKLSAgICAgICAgICAgICAgICB0eXBlID0gU3BlY0ludDQ4
OworICAgICAgICAgICAgaWYgKHR5cGUgPT0gU3BlY0ludDUyQXNEb3VibGUpCisgICAgICAgICAg
ICAgICAgdHlwZSA9IFNwZWNJbnQ1MjsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGlj
dGlvbih0eXBlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBHZXRMb2NhbDogewotICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRh
KiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAg
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPnBy
ZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBu
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24gPSB2YXJpYWJsZS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAgaWYgKHZhcmlh
YmxlLT5zaG91bGROZXZlclVuYm94KCkgJiYgKHByZWRpY3Rpb24gJiBTcGVjSW50NTIpKQorICAg
ICAgICAgICAgICAgIHByZWRpY3Rpb24gPSAocHJlZGljdGlvbiB8IFNwZWNJbnQ1MkFzRG91Ymxl
KSAmIH5TcGVjSW50NTI7CiAgICAgICAgICAgICBpZiAocHJlZGljdGlvbikKICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjAzLDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobm9k
ZUNhblNwZWN1bGF0ZUludDMyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY051bWJl
cik7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0J5dGVj
b2RlTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIxMiwxNCAr
MjE0LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG5v
ZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChsZWZ0ICYmIHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3VsYXRp
b25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdE
ZWZpbmVkKHJpZ2h0KSkgeworICAgICAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxh
dGlvbkV4cGVjdGluZ0RlZmluZWQobGVmdCkgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb25FeHBl
Y3RpbmdEZWZpbmVkKHJpZ2h0KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5h
ZGRTcGVjdWxhdGlvbk1vZGUobm9kZSkgIT0gRG9udFNwZWN1bGF0ZUludDMyKQogICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNo
aW5lSW50KG5vZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oU3BlY0ludDQ4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ1Mik7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHNwZWN1bGF0
ZWREb3VibGVUeXBlRm9yUHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKCEobGVmdCAmIFNwZWNOdW1iZXIpIHx8ICEocmlnaHQgJiBTcGVjTnVtYmVy
KSkgeworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIShsZWZ0ICYgU3BlY0Z1bGxOdW1iZXIp
IHx8ICEocmlnaHQgJiBTcGVjRnVsbE51bWJlcikpIHsKICAgICAgICAgICAgICAgICAgICAgLy8g
bGVmdCBvciByaWdodCBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBvdGhlciB0aGFuIGEgbnVtYmVy
LgogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3Ry
aW5nKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKQEAgLTIzNiw3ICsyMzgsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShub2RlKSAh
PSBEb250U3BlY3VsYXRlSW50MzIpCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9ncmFw
aC5hZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKQotICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NDgpOworICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NTIpOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
c3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpOwogICAgICAg
ICAgICAgfQpAQCAtMjUxLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGguYWRkU3BlY3VsYXRpb25Nb2RlKG5vZGUpICE9IERvbnRTcGVjdWxhdGVJbnQzMikK
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMy
KTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1h
Y2hpbmVJbnQobm9kZSkpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFNwZWNJbnQ0OCk7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNJbnQ1Mik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihzcGVjdWxhdGVkRG91YmxlVHlwZUZv
clByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSk7CiAgICAgICAgICAgICB9CkBAIC0yNjMsNyArMjY1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5uZWdhdGVTaG91bGRT
cGVjdWxhdGVJbnQzMihub2RlKSkKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX2dyYXBo
Lm5lZ2F0ZVNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpCi0gICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ0OCk7CisgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ1Mik7CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlv
bihzcGVjdWxhdGVkRG91YmxlVHlwZUZvclByZWRpY3Rpb24obm9kZS0+Y2hpbGQxKCktPnByZWRp
Y3Rpb24oKSkpOwogICAgICAgICAgICAgfQpAQCAtMjkyLDcgKzI5NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSkp
CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQz
Mik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVN
YWNoaW5lSW50KG5vZGUpKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihTcGVjSW50NDgpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihTcGVjSW50NTIpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oc3BlY3VsYXRlZERvdWJsZVR5cGVG
b3JQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpOwogICAgICAgICAgICAgfQpAQCAtMzY4LDEwICsz
NzAsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgR2V0QnlWYWw6IHsK
KyAgICAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSkKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmICghbm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24o
KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKQogICAgICAgICAg
ICAgICAgIHx8IG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKSkK
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsK
LSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzSW50
MzJTcGVjdWxhdGlvbihub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKSkKKyAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KFNwZWNJbnQ1Mik7CisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC01NjYsNiArNTc4LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBDaGVja1dhdGNoZG9nVGltZXI6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAg
ICAgICAgIGNhc2UgTG9vcEhpbnQ6CisgICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgorICAgICAg
ICBjYXNlIEludDUyVG9Eb3VibGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAog
ICAgICAgICAvLyBUaGlzIGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IGFscmVhZHkgaGFzIGEgcHJl
ZGljdGlvbi4KQEAgLTY0MCw4ICs2NTQsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgRG91YmxlQmFsbG90IGJhbGxvdDsKICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChsZWZ0KSAmJiBp
c051bWJlclNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChyaWdodCkKLSAgICAgICAgICAgICAg
ICAmJiAhbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlKSkKKyAgICAgICAgICAg
IGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQobGVmdCkgJiYgaXNG
dWxsTnVtYmVyU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHJpZ2h0KQorICAgICAgICAgICAg
ICAgICYmICFtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludDMyKG5vZGUpCisgICAgICAgICAg
ICAgICAgJiYgIW1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkKICAg
ICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlRG91YmxlOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIGJhbGxvdCA9IFZvdGVWYWx1ZTsKQEAgLTY1Nyw4ICs2NzIsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgRG91YmxlQmFsbG90IGJhbGxvdDsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKGxl
ZnQpICYmIGlzTnVtYmVyU3BlY3VsYXRpb24ocmlnaHQpCi0gICAgICAgICAgICAgICAgJiYgIW1f
Z3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSkpCisgICAgICAgICAgICBpZiAoaXNG
dWxsTnVtYmVyU3BlY3VsYXRpb24obGVmdCkgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24ocmln
aHQpCisgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlSW50MzIo
bm9kZSkKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVNYWNo
aW5lSW50KG5vZGUpKQogICAgICAgICAgICAgICAgIGJhbGxvdCA9IFZvdGVEb3VibGU7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZVZhbHVlOwpAQCAtNjc3
LDcgKzY5Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBEb3Vi
bGVCYWxsb3QgYmFsbG90OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzTnVt
YmVyU3BlY3VsYXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKKyAgICAg
ICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbihyaWdodCkKICAgICAgICAgICAgICAgICAmJiAhKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZUludDMyRm9yQXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkgJiYgbm9kZS0+Y2FuU3BlY3VsYXRlSW50MzIoKSkpCiAgICAgICAgICAgICAg
ICAgYmFsbG90ID0gVm90ZURvdWJsZTsKICAgICAgICAgICAgIGVsc2UKQEAgLTcwNiw3ICs3MjIs
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IG5v
ZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBpZiAoaXNEb3VibGVTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAgICAgICBub2RlLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKS0+dm90ZShWb3RlRG91YmxlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFpc051bWJl
clNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgICAgIGVsc2UgaWYgKAorICAgICAgICAgICAgICAgICFpc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKQorICAgICAgICAgICAgICAgIHx8IGlzSW50MzJTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKSB8fCBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkK
ICAgICAgICAgICAgICAgICBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+dm90ZShWb3RlVmFs
dWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdP
YmplY3RVc2U6CiAgICAgICAgIGNhc2UgTm90Q2VsbFVzZToKICAgICAgICAgY2FzZSBPdGhlclVz
ZToKKyAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgS25vd25JbnQzMlVzZToKQEAgLTY5LDcgKzcwLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
S25vd25OdW1iZXJVc2U6Ci0gICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1f
dHlwZSAmIH5TcGVjTnVtYmVyKQorICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdl
KS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1iZXIpCiAgICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBm
YWxzZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIApAQCAtMjM5LDYgKzI0MCw4
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENo
ZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAg
IGNhc2UgTG9vcEhpbnQ6CisgICAgY2FzZSBJbnQ1MlRvRG91YmxlOgorICAgIGNhc2UgSW50NTJU
b1ZhbHVlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBHZXRCeVZh
bDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZl
UGxhbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50
UmVnaXN0ZXJTYXZlUGxhbi5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNiArNDgsOCBAQCBlbnVtIFNpbGVudFNwaWxsQWN0aW9uIHsKIGVudW0gU2lsZW50RmlsbEFj
dGlvbiB7CiAgICAgRG9Ob3RoaW5nRm9yRmlsbCwKICAgICBTZXRJbnQzMkNvbnN0YW50LAorICAg
IFNldEludDUyQ29uc3RhbnQsCisgICAgU2V0U3RyaWN0SW50NTJDb25zdGFudCwKICAgICBTZXRC
b29sZWFuQ29uc3RhbnQsCiAgICAgU2V0Q2VsbENvbnN0YW50LAogICAgIFNldFRydXN0ZWRKU0Nv
bnN0YW50LApAQCAtNjEsOCArNjMsMTIgQEAgZW51bSBTaWxlbnRGaWxsQWN0aW9uIHsKICAgICBM
b2FkMzJUYWcsCiAgICAgTG9hZDMyUGF5bG9hZCwKICAgICBMb2FkMzJQYXlsb2FkQm94SW50LAor
ICAgIExvYWQzMlBheWxvYWRDb252ZXJ0VG9JbnQ1MiwKKyAgICBMb2FkMzJQYXlsb2FkU2lnbkV4
dGVuZCwKICAgICBMb2FkUHRyLAogICAgIExvYWQ2NCwKKyAgICBMb2FkNjRTaGlmdEludDUyUmln
aHQsCisgICAgTG9hZDY0U2hpZnRJbnQ1MkxlZnQsCiAgICAgTG9hZERvdWJsZSwKICAgICBMb2Fk
RG91YmxlQm94RG91YmxlLAogICAgIExvYWRKU1VuYm94RG91YmxlCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJl
dmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4OCw4ICs4ODgsOCBAQCBGUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAjZW5kaWYKICAgICBBYnN0cmFjdFZh
bHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKICAgICBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gdmFsdWUubV90eXBlOwotICAgIEFTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bk51
bWJlclVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjTnVtYmVyKSk7Ci0gICAgbV9pbnRlcnBy
ZXRlci5maWx0ZXIodmFsdWUsIFNwZWNOdW1iZXIpOworICAgIEFTU0VSVChlZGdlLnVzZUtpbmQo
KSAhPSBLbm93bk51bWJlclVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjRnVsbE51bWJlcikp
OworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjRnVsbE51bWJlcik7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2UtPnZpcnR1YWxSZWdpc3Rlcigp
OwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJl
Z2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CiAKQEAgLTkyOCw3ICs5MjgsNyBAQCBGUFJSZWcgU3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAKICAgICAgICAgICAgIGlmIChzcGlsbEZv
cm1hdCAhPSBEYXRhRm9ybWF0SlNJbnQzMiAmJiBzcGlsbEZvcm1hdCAhPSBEYXRhRm9ybWF0SW50
MzIpIHsKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY051bWJlcikKKyAgICAgICAgICAgICAgICBpZiAodHlw
ZSAmIH5TcGVjRnVsbE51bWJlcikKICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlcikpLCBlZGdlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpMb3dlc3RUYWcpKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBmcHIpOwogICAgICAgICAg
ICAgICAgIGhhc1VuYm94ZWREb3VibGUgPSBtX2ppdC5qdW1wKCk7CkBAIC05NjMsNyArOTYzLDcg
QEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogICAgICAgICBpZiAo
aW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXRKU0ludDMyKSB7CiAgICAgICAgICAg
ICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdGFn
R1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICAgICAgICAgIGlmICh0
eXBlICYgflNwZWNOdW1iZXIpCisgICAgICAgICAgICBpZiAodHlwZSAmIH5TcGVjRnVsbE51bWJl
cikKICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdz
KHRhZ0dQUiwgcGF5bG9hZEdQUiksIGVkZ2UsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykp
KTsKICAgICAgICAgICAgIHVuYm94RG91YmxlKHRhZ0dQUiwgcGF5bG9hZEdQUiwgZnByLCBzY3Jh
dGNoLmZwcigpKTsKICAgICAgICAgICAgIGhhc1VuYm94ZWREb3VibGUgPSBtX2ppdC5qdW1wKCk7
CkBAIC0yOTIzLDcgKzI5MjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBGUFJSZWcgdmFsdWVGUFIgPSB2YWx1ZS5mcHIoKTsKIAogICAg
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwg
bm9kZS0+Y2hpbGQyKCksIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKCksIG5vZGUtPmNoaWxkMigpLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5v
cmRlcmVkLCB2YWx1ZUZQUiwgdmFsdWVGUFIpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
bV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZs
eTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwpAQCAtMzE4Nyw3
ICszMTg3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAKICAgICAgICAgb3AxLnVzZSgpOwogICAgICAgICAKLSAgICAgICAgaWYgKCEobV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNOdW1iZXIgfCBTcGVjQm9v
bGVhbikpKSB7CisgICAgICAgIGlmICghKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV90eXBlICYgfihTcGVjRnVsbE51bWJlciB8IFNwZWNCb29sZWFuKSkpIHsKICAgICAgICAgICAg
IG1faml0Lm1vdmUob3AxVGFnR1BSLCByZXN1bHRUYWdHUFIpOwogICAgICAgICAgICAgbV9qaXQu
bW92ZShvcDFQYXlsb2FkR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgfSBlbHNlIHsK
QEAgLTMyODksNyArMzI4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5k
KHRoaXMsIHVzZSk7CiAgICAgICAgICAgICAgICAgICAgIEZQUlJlZyBvcEZQUiA9IG9wZXJhbmQu
ZnByKCk7CiAgICAgICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgdXNlLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIHVzZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVy
OjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBvcEZQUiwgb3BGUFIpKTsKICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKG9wRlBSLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoZG91YmxlKSAqIG9wZXJhbmRJZHgpKTsKQEAg
LTMzNTQsNyArMzM1NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhpcywg
dXNlKTsKICAgICAgICAgICAgICAgICBGUFJSZWcgb3BGUFIgPSBvcGVyYW5kLmZwcigpOwogICAg
ICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVncygpLCB1c2UsIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVncygpLCB1c2UsIFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVk
LCBvcEZQUiwgb3BGUFIpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2pp
dC5zdG9yZURvdWJsZShvcEZQUiwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyICsgb3Bl
cmFuZElkeCkpOwpAQCAtNDc5Nyw2ICs0Nzk3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBD
aGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKKyAg
ICBjYXNlIEludDUyVG9Eb3VibGU6CisgICAgY2FzZSBJbnQ1MlRvVmFsdWU6CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsMjkgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Ym94SW50NTIoR1BSUmVnIHNvdXJjZUdQUiwgR1BSUmVnIHRhcmdldEdQ
UiwgRGF0YUZvcm1hdCBmb3JtYXQpCit7CisgICAgR1BSUmVnIHRlbXBHUFI7CisgICAgaWYgKHNv
dXJjZUdQUiA9PSB0YXJnZXRHUFIpCisgICAgICAgIHRlbXBHUFIgPSBhbGxvY2F0ZSgpOworICAg
IGVsc2UKKyAgICAgICAgdGVtcEdQUiA9IHRhcmdldEdQUjsKKyAgICAKKyAgICBGUFJSZWcgZnBy
ID0gZnByQWxsb2NhdGUoKTsKKworICAgIGlmIChmb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQor
ICAgICAgICBtX2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFt
b3VudCksIHNvdXJjZUdQUik7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoZm9ybWF0ID09IERh
dGFGb3JtYXRTdHJpY3RJbnQ1Mik7CisgICAgCisgICAgbV9qaXQuYm94SW50NTIoc291cmNlR1BS
LCB0YXJnZXRHUFIsIHRlbXBHUFIsIGZwcik7CisgICAgCisgICAgaWYgKHRlbXBHUFIgIT0gdGFy
Z2V0R1BSKQorICAgICAgICB1bmxvY2sodGVtcEdQUik7CisgICAgCisgICAgdW5sb2NrKGZwcik7
Cit9CisKIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogewog
ICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0
ZXIoKTsKQEAgLTY5LDExICs5MiwyMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1Zh
bHVlKEVkZ2UgCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBEYXRhRm9ybWF0IHNwaWxs
Rm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgpOwogICAgICAgICAgICAgbV9ncHJzLnJldGFpbihn
cHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwotICAgICAgICAgICAgaWYg
KHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikgeworICAgICAgICAgICAgc3dpdGNoIChz
cGlsbEZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6IHsKICAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJl
Z2lzdGVyKSwgZ3ByKTsKICAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3RlciwgZ3ByKTsKICAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERh
dGFGb3JtYXRKU0ludDMyOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2Ug
RGF0YUZvcm1hdEludDUyOgorICAgICAgICAgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6
IHsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBib3hJbnQ1MihncHIsIGdw
ciwgc3BpbGxGb3JtYXQpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIp
LCBncHIpOwogICAgICAgICAgICAgICAgIGlmIChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0RG91
YmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gYm94IHRoZSBkb3VibGUsIHNp
bmNlIHdlIHdhbnQgYSBKU1ZhbHVlLgpAQCAtODEsNiArMTE1LDcgQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIAogICAgICAgICAgICAgICAgICAgICBzcGlsbEZvcm1h
dCA9IERhdGFGb3JtYXRKU0RvdWJsZTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW5mby5m
aWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwogICAgICAgICB9CkBAIC0x
MTMsNiArMTQ4LDE2IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAK
IAogICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9y
bWF0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6IHsKKyAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIGxvY2soZ3ByKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IGFsbG9jYXRlKCk7CisgICAgICAgIGJveEludDUyKGdwciwgcmVzdWx0R1BS
LCBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpOworICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdEdQUjsKKyAgICB9CiAKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgogICAg
ICAgICAvLyBObyByZXRhZyByZXF1aXJlZCBvbiBKU1ZBTFVFNjQhCkBAIC03NjgsNyArODEzLDcg
QEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICAKICAg
ICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAg
ICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykg
fHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9y
bWF0SW50MzIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8IHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1Mik7CiAgICAgICAgIAogICAgICAgICBtX2dwcnMucmV0
YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAgIApA
QCAtNzg5LDYgKzgzNCwzNiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJ
bnQzCiAgICAgICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQzMjsKICAgICAg
ICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09
IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIp
IHsKKyAgICAgICAgICAgIC8vIEdlbmVyYWxseSwgdGhpcyBjYW4gb25seSBoYXBwZW4gaWYgd2Un
dmUgYWxyZWFkeSBwcm92ZWQgdGhhdCB0aGUKKyAgICAgICAgICAgIC8vIHZhbHVlIGlzIGFuIGlu
dDMyLiBUaGF0J3MgYmVjYXVzZSBpZiBhIHZhbHVlIG9yaWdpbmF0ZWQgYXMgYSBKU1ZhbHVlCisg
ICAgICAgICAgICAvLyB0aGVuIHdlIHdvdWxkIHNwZWN1bGF0ZSB0aGF0IGl0J3MgYW4gaW50MzIg
YmVmb3JlIHJlcHJlc2VudGluZyBpdCBhcworICAgICAgICAgICAgLy8gYW4gaW50NTIuIE90aGVy
d2lzZSwgaWYgd2Uga25vd2luZ2x5IHByb2R1Y2VkIGFuIGludDUyLCB0aGVuIHdlIHdvdWxkCisg
ICAgICAgICAgICAvLyBiZSBib3hpbmcgaXQgaW50byBhIHZhbHVlIHVzaW5nIEludDUyVG9WYWx1
ZS4gVGhpcyBhc3NlcnRpb24gaXMgdmFsaWQKKyAgICAgICAgICAgIC8vIG9ubHkgYmVjYXVzZSBJ
bnQ1MiBpcyBzb21ldGhpbmcgdGhhdCB3ZSBpbnRyb2R1Y2UgYXQgcHJlZGljdGlvbiB0aW1lLgor
ICAgICAgICAgICAgLy8gSG93ZXZlcjogd2UgbWF5IGhhdmUgYW4gaW50MzItcHJvZHVjaW5nIG5v
ZGUgcmVwbGFjZWQgYnkgYW4KKyAgICAgICAgICAgIC8vIGludDUyLXByb2R1Y2luZyBub2RlIGR1
ZSB0byBDU0UuIFNvIHdlIG11c3QgZG8gYSBjaGVjay4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCEodHlwZSAmIH5TcGVjTWFjaGluZUludCkpOworICAgICAgICAgICAgaWYgKHR5cGUgJiBT
cGVjSW50NTIpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgdGVtcCA9IGFsbG9jYXRlKCk7Cisg
ICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoZ3ByLCB0ZW1wKTsKKyAgICAg
ICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIGNhbid0IHN1cHBseSB2YWx1ZSBwcm9maWxpbmcg
aW5mb3JtYXRpb24gaGVyZS4gOi0vCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygK
KyAgICAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBncHIs
IHRlbXApKTsKKyAgICAgICAgICAgICAgICB1bmxvY2sodGVtcCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKQorICAg
ICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbV9q
aXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7
CisgICAgICAgICAgICAgICAgbV9qaXQucnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6Omlu
dDUyU2hpZnRBbW91bnQpLCBncHIpOworICAgICAgICAgICAgICAgIG1faml0Lnplcm9FeHRlbmQz
MlRvUHRyKGdwciwgZ3ByKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluZm8uZmlsbElu
dDMyKCptX3N0cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3Jt
YXRJbnQzMjsKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIH0KICAgICAgICAgbV9q
aXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7
CiAKICAgICAgICAgLy8gRmlsbCBhcyBKU1ZhbHVlLCBhbmQgZmFsbCB0aHJvdWdoLgpAQCAtNzk3
LDYgKzg3Miw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMKICAg
ICB9CiAKICAgICBjYXNlIERhdGFGb3JtYXRKUzogeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
KHR5cGUgJiBTcGVjSW50NTIpKTsKICAgICAgICAgLy8gQ2hlY2sgdGhlIHZhbHVlIGlzIGFuIGlu
dGVnZXIuCiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dwcnMu
bG9jayhncHIpOwpAQCAtODQzLDYgKzkxOSwzNSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsK
ICAgICAgICAgcmV0dXJuIGdwcjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1h
dFN0cmljdEludDUyOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOiB7CisgICAgICAgIEdQUlJl
ZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0OworICAgICAgICBpZiAo
bV9ncHJzLmlzTG9ja2VkKGdwcikpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFsbG9jYXRlKCk7
CisgICAgICAgICAgICBtX2ppdC5tb3ZlKGdwciwgcmVzdWx0KTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGxvY2soZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmlsbEludDMyKCptX3N0
cmVhbSwgZ3ByKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGdwcjsKKyAgICAgICAgfQorICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghKHR5cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsKKyAgICAgICAgaWYg
KGluZm8ucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50NTIpCisgICAgICAgICAgICBt
X2ppdC5yc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIHJl
c3VsdCk7CisgICAgICAgIGlmICh0eXBlICYgU3BlY0ludDUyKSB7CisgICAgICAgICAgICBHUFJS
ZWcgdGVtcCA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0
cihyZXN1bHQsIHRlbXApOworICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBjYW4ndCBzdXBw
bHkgdmFsdWUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGhlcmUuIDotLworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAw
LAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgcmVzdWx0LCB0ZW1wKSk7CisgICAgICAgICAgICB1bmxvY2sodGVtcCk7CisgICAgICAgIH0K
KyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIocmVzdWx0LCByZXN1bHQpOworICAgICAg
ICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50MzI7CisgICAgICAgIHJldHVybiBncHI7Cisg
ICAgfQogCiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdEpT
RG91YmxlOiB7CkBAIC04ODUsNiArOTkwLDE4MCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVJbnQzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NTIoRWRnZSBlZGdlLCBEYXRhRm9ybWF0IGRlc2lyZWRG
b3JtYXQpCit7CisgICAgQVNTRVJUKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyIHx8
IGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdFN0cmljdEludDUyKTsKKyAgICBBYnN0cmFjdFZh
bHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShlZGdlKTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gdmFsdWUubV90eXBlOworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVj
TWFjaGluZUludCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGVkZ2Ut
PnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlv
bkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7CisKKyAgICBzd2l0Y2gg
KGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgeworICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKKyAg
ICAgICAgaWYgKChlZGdlLT5oYXNDb25zdGFudCgpICYmICF2YWx1ZU9mSlNDb25zdGFudChlZGdl
Lm5vZGUoKSkuaXNNYWNoaW5lSW50KCkpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0RG91YmxlKSB7CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgICAgICByZXR1cm4gYWxsb2Nh
dGUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRl
KCk7CisKKyAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpT
VmFsdWUganNWYWx1ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVChqc1ZhbHVlLmlzTWFjaGluZUludCgpKTsKKyAgICAgICAgICAgIG1fZ3Bycy5y
ZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7CisgICAgICAg
ICAgICBpbnQ2NF90IHZhbHVlID0ganNWYWx1ZS5hc01hY2hpbmVJbnQoKTsKKyAgICAgICAgICAg
IGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IHZhbHVlIDw8IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQ7CisgICAgICAgICAgICBt
X2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW02NCh2YWx1ZSksIGdwcik7CisgICAgICAgICAg
ICBpbmZvLmZpbGxHUFIoKm1fc3RyZWFtLCBncHIsIGRlc2lyZWRGb3JtYXQpOworICAgICAgICAg
ICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgRGF0YUZvcm1hdCBz
cGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKKyAgICAgICAgCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3JtYXQgPT0g
RGF0YUZvcm1hdEludDMyIHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBzcGls
bEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpOworICAgICAgICAKKyAgICAgICAgbV9n
cHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOworICAg
ICAgICAKKyAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyIHx8IHNw
aWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikgeworICAgICAgICAgICAgLy8gSWYgd2Uga25v
dyB0aGlzIHdhcyBzcGlsbGVkIGFzIGFuIGludGVnZXIgd2UgY2FuIGZpbGwgd2l0aG91dCBjaGVj
a2luZy4KKyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOworICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9Q
dHIoZ3ByLCBncHIpOworICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1h
dFN0cmljdEludDUyKSB7CisgICAgICAgICAgICAgICAgaW5mby5maWxsU3RyaWN0SW50NTIoKm1f
c3RyZWFtLCBncHIpOworICAgICAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJT
aGlmdEFtb3VudCksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0s
IGdwcik7CisgICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICB9CisgICAgICAgIGlmIChz
cGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIgfHwgc3BpbGxGb3JtYXQgPT0gRGF0YUZvcm1h
dFN0cmljdEludDUyKSB7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKyAgICAgICAgICAgIGlmIChkZXNpcmVk
Rm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikgeworICAgICAgICAgICAgICAgIGlmIChz
cGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCisgICAgICAgICAgICAgICAgICAgIG1faml0
LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgZ3ByKTsK
KyAgICAgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ1MigqbV9zdHJlYW0sIGdwcik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChzcGlsbEZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCisgICAgICAgICAgICAgICAg
bV9qaXQubHNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBn
cHIpOworICAgICAgICAgICAgaW5mby5maWxsSW50NTIoKm1fc3RyZWFtLCBncHIpOworICAgICAg
ICAgICAgcmV0dXJuIGdwcjsKKyAgICAgICAgfQorICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29t
cGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKKworICAgICAgICAvLyBG
aWxsIGFzIEpTVmFsdWUsIGFuZCBmYWxsIHRocm91Z2guCisgICAgICAgIGluZm8uZmlsbEpTVmFs
dWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0ludDMyKTsKKyAgICAgICAgbV9ncHJzLnVu
bG9jayhncHIpOworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CisgICAgICAgIC8v
IENoZWNrIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLiBOb3RlIHRoYXQgd2Ugd291bGQgKmxpa2Uq
IHRvIHVuYm94IGFuIEludDUyCisgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgYnV0IHRoaXMgaXMg
dG9vIGNvc3RseS4gV2Ugb25seSAqcHJvdmUqIHRoYXQgdGhpcyBpcyBhbiBJbnQ1MgorICAgICAg
ICAvLyBldmVuIHRob3VnaCB3ZSBjaGVjayBpZiBpdCdzIGFuIGludDMyLgorICAgICAgICBHUFJS
ZWcgZ3ByID0gaW5mby5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdDsKKyAgICAgICAgaWYg
KG1fZ3Bycy5pc0xvY2tlZChncHIpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgp
OworICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAgICAgICAgcmVzdWx0ID0gZ3By
OworICAgICAgICB9CisgICAgICAgIGlmICh0eXBlICYgflNwZWNJbnQzMikKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MocmVzdWx0KSwgZWRnZSwgbV9q
aXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCByZXN1bHQsIEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICBpZiAocmVzdWx0ID09IGdwcikgLy8gVGhlIG5v
dC1hbHJlYWR5LWxvY2tlZCwgc28gZmlsbCBpbi1wbGFjZSwgY2FzZS4KKyAgICAgICAgICAgIGlu
Zm8uZmlsbEludDUyKCptX3N0cmVhbSwgZ3ByLCBkZXNpcmVkRm9ybWF0KTsKKyAgICAgICAgbV9q
aXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0LCByZXN1bHQpOworICAgICAgICBpZiAoZGVzaXJl
ZEZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpCisgICAgICAgICAgICBtX2ppdC5sc2hpZnQ2NChU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CisgICAg
Y2FzZSBEYXRhRm9ybWF0SlNJbnQzMjogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIo
KTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdDsKKyAgICAgICAgaWYgKG1fZ3Bycy5pc0xvY2tlZChn
cHIpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9q
aXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2dw
cnMubG9jayhncHIpOworICAgICAgICAgICAgaW5mby5maWxsSW50NTIoKm1fc3RyZWFtLCBncHIs
IGRlc2lyZWRGb3JtYXQpOworICAgICAgICAgICAgcmVzdWx0ID0gZ3ByOworICAgICAgICB9Cisg
ICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdCwgcmVzdWx0KTsKKyAgICAgICAg
aWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdEludDUyKQorICAgICAgICAgICAgbV9qaXQu
bHNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCByZXN1bHQp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGNhc2UgRGF0YUZvcm1hdFN0
cmljdEludDUyOiB7CisgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBi
b29sIHdhc0xvY2tlZCA9IG1fZ3Bycy5pc0xvY2tlZChncHIpOworICAgICAgICBsb2NrKGdwcik7
CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJpY3RJbnQ1MikKKyAg
ICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIGlmICh3YXNMb2NrZWQpIHsKKyAgICAgICAg
ICAgIEdQUlJlZyByZXN1bHQgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9qaXQubW92ZShn
cHIsIHJlc3VsdCk7CisgICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAgICAgICAgIGdwciA9
IHJlc3VsdDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbmZvLmZpbGxTdHJpY3RJbnQ1
MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIG1faml0LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgZ3ByKTsKKyAgICAgICAgcmV0dXJuIGdwcjsKKyAg
ICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOiB7CisgICAgICAgIEdQUlJl
ZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBib29sIHdhc0xvY2tlZCA9IG1fZ3Bycy5pc0xv
Y2tlZChncHIpOworICAgICAgICBsb2NrKGdwcik7CisgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQ1MikKKyAgICAgICAgICAgIHJldHVybiBncHI7CisgICAgICAgIGlm
ICh3YXNMb2NrZWQpIHsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHQgPSBhbGxvY2F0ZSgpOwor
ICAgICAgICAgICAgbV9qaXQubW92ZShncHIsIHJlc3VsdCk7CisgICAgICAgICAgICB1bmxvY2so
Z3ByKTsKKyAgICAgICAgICAgIGdwciA9IHJlc3VsdDsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBpbmZvLmZpbGxJbnQ1MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgIG1faml0LnJzaGlm
dDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgZ3ByKTsKKyAgICAg
ICAgcmV0dXJuIGdwcjsKKyAgICB9CisKKyAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CisgICAg
Y2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6CisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgp
KSB7CisgICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB2YWx1ZU9mSlNDb25zdGFudChlZGdl
Lm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoanNWYWx1ZS5pc01hY2hpbmVJbnQoKSkgeworICAg
ICAgICAgICAgICAgIGludDY0X3QgdmFsdWUgPSBqc1ZhbHVlLmFzTWFjaGluZUludCgpOworICAg
ICAgICAgICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MikKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA8PCBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50
OworICAgICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAg
ICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHZhbHVlKSwgZ3ByKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ3ByOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IAorICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjoK
KyAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CisgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFu
OiB7CisgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCAwKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CisgICAgfQorCisg
ICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZToKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CisgICAgfQorfQor
CiBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUoRWRnZSBlZGdlKQog
ewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKQEAgLTg5Miw4ICsxMTcxLDggQEAgRlBS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogI2VuZGlmCiAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7CiAgICAgU3BlY3VsYXRlZFR5
cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKLSAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25v
d25OdW1iZXJVc2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY051bWJlcikpOwotICAgIG1faW50
ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjTnVtYmVyKTsKKyAgICBBU1NFUlQoZWRnZS51c2VL
aW5kKCkgIT0gS25vd25OdW1iZXJVc2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0Z1bGxOdW1i
ZXIpKTsKKyAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY0Z1bGxOdW1iZXIpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBlZGdlLT52aXJ0dWFsUmVnaXN0
ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1
YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwogCkBAIC05NDUsNiArMTIyNCwyNCBAQCBGUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAgICAgICAgICAgICB1bmxvY2so
Z3ByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6IHsKKyAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxv
Y2F0ZSgpOworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3Rlciwg
U3BpbGxPcmRlclNwaWxsZWQpOworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZp
bGxJbnQ1MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0U3RyaWN0SW50NTI6IHsKKyAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgp
OworICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxP
cmRlclNwaWxsZWQpOworICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxTdHJp
Y3RJbnQ1MigqbV9zdHJlYW0sIGdwcik7CisgICAgICAgICAgICB1bmxvY2soZ3ByKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwpAQCAtOTc4LDcgKzEyNzUsNyBAQCBGUFJSZWcgU3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKIAotICAgICAg
ICBpZiAodHlwZSAmIH5TcGVjTnVtYmVyKQorICAgICAgICBpZiAodHlwZSAmIH5TcGVjRnVsbE51
bWJlcikKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
anNWYWx1ZUdwciksIGVkZ2UsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVy
bywganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CiAKICAgICAg
ICAgLy8gRmlyc3QsIGlmIHdlIGdldCBoZXJlIHdlIGhhdmUgYSBkb3VibGUgZW5jb2RlZCBhcyBh
IEpTVmFsdWUKQEAgLTEwMDksNiArMTMwNiwyOCBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVEb3ViCiAgICAgICAgIG1fZ3Bycy51bmxvY2soZ3ByKTsKICAgICAgICAgcmV0
dXJuIGZwcjsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOiB7Cisg
ICAgICAgIEZQUlJlZyBmcHIgPSBmcHJBbGxvY2F0ZSgpOworICAgICAgICBHUFJSZWcgZ3ByID0g
aW5mby5ncHIoKTsKKyAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKKyAgICAgICAgR1BSUmVnIHRl
bXAgPSBhbGxvY2F0ZSgpOworICAgICAgICBtX2ppdC5tb3ZlKGdwciwgdGVtcCk7CisgICAgICAg
IG1faml0LnJzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwg
dGVtcCk7CisgICAgICAgIG1faml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHRlbXAsIGZwcik7Cisg
ICAgICAgIHVubG9jayh0ZW1wKTsKKyAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOworICAgICAg
ICByZXR1cm4gZnByOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0
SW50NTI6IHsKKyAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CisgICAgICAgIEdQ
UlJlZyBncHIgPSBpbmZvLmdwcigpOworICAgICAgICBtX2dwcnMubG9jayhncHIpOworICAgICAg
ICBtX2ppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShncHIsIGZwcik7CisgICAgICAgIG1fZ3Bycy51
bmxvY2soZ3ByKTsKKyAgICAgICAgcmV0dXJuIGZwcjsKKyAgICB9CiAKICAgICAvLyBVbmJveCB0
aGUgZG91YmxlCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKQEAgLTExMTEsNyArMTQz
MCw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICBjYXNl
IERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CiAgICAgY2Fz
ZSBEYXRhRm9ybWF0SlNCb29sZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46IHsKKyAg
ICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgorICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOgorICAg
IGNhc2UgRGF0YUZvcm1hdFN0cmljdEludDUyOiB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0
aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0
dXJuIGFsbG9jYXRlKCk7CiAgICAgfQpAQCAtMTE5NCw3ICsxNTE1LDkgQEAgR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91Ymxl
OgogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6
Ci0gICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDogeworICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Cisg
ICAgY2FzZSBEYXRhRm9ybWF0SW50NTI6CisgICAgY2FzZSBEYXRhRm9ybWF0U3RyaWN0SW50NTI6
IHsKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIDApOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CkBAIC0x
NTAzLDYgKzE4MjYsNDAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyQ29tcGFy
ZQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9y
bWF0SlNCb29sZWFuKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDUyQ29t
cGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25k
aXRpb24pCit7CisgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kIG9wMih0
aGlzLCBub2RlLT5jaGlsZDIoKSwgb3AxKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMs
IFJldXNlLCBvcDEsIG9wMik7CisgICAgCisgICAgbV9qaXQuY29tcGFyZTY0KGNvbmRpdGlvbiwg
b3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgCisgICAgLy8gSWYgd2Ug
YWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KKyAgICBtX2ppdC5v
cjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jdXJyZW50Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7
Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUludDUyQnJhbmNoKE5v
ZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmRpdGlvbikKK3sKKyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPnRh
a2VuQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPm5vdFRh
a2VuQmxvY2soKTsKKworICAgIC8vIFRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2lsbCBicmFuY2gg
dG8gdGhlIHRha2VuIGJsb2NrLgorICAgIC8vIElmIHRha2VuIGlzIG5leHQsIHN3aXRjaCB0YWtl
biB3aXRoIG5vdFRha2VuICYgaW52ZXJ0IHRoZSBicmFuY2ggY29uZGl0aW9uIHNvIHdlIGNhbiBm
YWxsIHRocm91Z2guCisgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGNv
bmRpdGlvbiA9IEpJVENvbXBpbGVyOjppbnZlcnQoY29uZGl0aW9uKTsKKyAgICAgICAgQmFzaWNC
bG9jayogdG1wID0gdGFrZW47CisgICAgICAgIHRha2VuID0gbm90VGFrZW47CisgICAgICAgIG5v
dFRha2VuID0gdG1wOworICAgIH0KKyAgICAKKyAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9w
ZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVXaGljaGV2ZXJJ
bnQ1Mk9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBvcDEpOworICAgIAorICAgIGJy
YW5jaDY0KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHRha2VuKTsKKyAgICBqdW1w
KG5vdFRha2VuKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUNvbXBh
cmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24p
CiB7CiAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwpAQCAtMTkwNiw2ICsyMjYzLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBGbHVzaGVkSW50NTI6IHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3Iobm9kZS0+bG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0
ZXIoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4ocmVzdWx0LmdwcigpLCB2aXJ0dWFsUmVn
aXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAgICAgICAgICBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0
dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKS5pbml0SW50NTIobm9kZSwgbm9kZS0+cmVmQ291
bnQoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3Iobm9kZS0+bG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7CkBAIC0xOTgxLDYgKzIzNDgsMTQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNlIEZsdXNoZWRJbnQ1Mjog
eworICAgICAgICAgICAgU3BlY3VsYXRlSW50NTJPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlNjQodmFsdWUuZ3ByKCksIEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpKTsKKyAgICAgICAgICAgIG5vUmVzdWx0KG5v
ZGUpOworICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS0+bG9jYWwoKSwgVmFsdWVTb3Vy
Y2UoSW50NTJJbkpTU3RhY2spKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDogewogICAgICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBH
UFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CkBAIC0yMTA0LDYgKzI0NzksMjIgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIAorICAgIGNhc2UgSW50NTJUb1ZhbHVlOiB7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMsIFJldXNlLCBvcGVyYW5kKTsKKyAgICAgICAgbV9qaXQubW92ZShvcGVyYW5k
LmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBJbnQ1
MlRvRG91YmxlOiB7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3BlcmFuZCh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3Bl
cmFuZCk7CisgICAgICAgIG1faml0Lm1vdmVEb3VibGUob3BlcmFuZC5mcHIoKSwgcmVzdWx0LmZw
cigpKTsKKyAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFy
aXRoQWRkOgogICAgICAgICBjb21waWxlQWRkKG5vZGUpOwpAQCAtMjg4OSw3ICszMjgwLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgRlBS
UmVnIHZhbHVlRlBSID0gdmFsdWUuZnByKCk7CiAKICAgICAgICAgICAgIERGR19UWVBFX0NIRUNL
KAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIG5vZGUtPmNoaWxkMigpLCBTcGVjUmVh
bE51bWJlciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBub2RlLT5jaGlsZDIoKSwg
U3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaERvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgdmFsdWVGUFIsIHZhbHVl
RlBSKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKQEAgLTMxMDUsNyArMzQ5Niw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIG9wMS51c2Uo
KTsKICAgICAgICAgCi0gICAgICAgIGlmICghKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV90eXBlICYgfihTcGVjTnVtYmVyIHwgU3BlY0Jvb2xlYW4pKSkKKyAgICAgICAgaWYgKCEo
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNwZWNGdWxsTnVtYmVy
IHwgU3BlY0Jvb2xlYW4pKSkKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRH
UFIpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFs
cmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKQEAgLTMyMDIsNyArMzU5Myw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
ICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIHVzZSk7CiAgICAg
ICAgICAgICAgICAgICAgIEZQUlJlZyBvcEZQUiA9IG9wZXJhbmQuZnByKCk7CiAgICAgICAgICAg
ICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MoKSwgdXNlLCBTcGVjUmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKCksIHVzZSwgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoRG91YmxlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBvcEZQUiwgb3BGUFIpKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUob3BGUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihkb3VibGUpICogb3BlcmFuZElkeCkpOwpA
QCAtMzI2Nyw3ICszNjU4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgICAgIEZQUlJlZyBvcEZQUiA9IG9wZXJhbmQuZnByKCk7CiAgICAg
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICAg
ICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygp
LCB1c2UsIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygp
LCB1c2UsIFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJh
bmNoRG91YmxlKAogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZU5vdEVxdWFsT3JVbm9yZGVyZWQsIG9wRlBSLCBvcEZQUikpOwogICAgICAgICAgICAgICAgIG1f
aml0LmJveERvdWJsZShvcEZQUiwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTU1OTAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzNSw2ICszMzUsOCBAQCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIFNwZWN1
bGF0aXZlSklUOjpzCiAgICAgICAgICAgICBzcGlsbEFjdGlvbiA9IFN0b3JlMzJQYXlsb2FkOwog
ICAgICAgICBlbHNlIGlmIChyZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0Q2VsbCB8fCByZWdp
c3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RvcmFnZSkKICAgICAgICAgICAgIHNwaWxsQWN0aW9u
ID0gU3RvcmVQdHI7CisgICAgICAgIGVsc2UgaWYgKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3Jt
YXRJbnQ1MiB8fCByZWdpc3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCisgICAg
ICAgICAgICBzcGlsbEFjdGlvbiA9IFN0b3JlNjQ7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAgIHNw
aWxsQWN0aW9uID0gU3RvcmU2NDsKQEAgLTM4Niw2ICszODgsNDIgQEAgU2lsZW50UmVnaXN0ZXJT
YXZlUGxhbiBTcGVjdWxhdGl2ZUpJVDo6cwogICAgIH0gZWxzZSBpZiAocmVnaXN0ZXJGb3JtYXQg
PT0gRGF0YUZvcm1hdFN0b3JhZ2UpIHsKICAgICAgICAgQVNTRVJUKGluZm8uZ3ByKCkgPT0gc291
cmNlKTsKICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWRQdHI7CisgICAgfSBlbHNlIGlmIChyZWdp
c3RlckZvcm1hdCA9PSBEYXRhRm9ybWF0SW50NTIpIHsKKyAgICAgICAgaWYgKG5vZGUtPmhhc0Nv
bnN0YW50KCkpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0SW50NTJDb25zdGFudDsKKyAg
ICAgICAgZWxzZSBpZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwgaW5mby5zcGls
bEZvcm1hdCgpID09IERhdGFGb3JtYXRKUykKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2Fk
MzJQYXlsb2FkQ29udmVydFRvSW50NTI7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3Jt
YXQoKSA9PSBEYXRhRm9ybWF0SW50NTIpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0
OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdFN0cmlj
dEludDUyKQorICAgICAgICAgICAgZmlsbEFjdGlvbiA9IExvYWQ2NFNoaWZ0SW50NTJMZWZ0Owor
ICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5vbmUpCisg
ICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVzIGFzIGFu
IGludDMyIHdpbGwgbmV2ZXIKKyAgICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEgY2VsbCAo
aW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRvdWJsZQorICAgICAgICAgICAg
Ly8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBMb2Fk
NjQ7IC8vIE1ha2UgR0NDIGhhcHB5LgorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChyZWdpc3Rl
ckZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpIHsKKyAgICAgICAgaWYgKG5vZGUtPmhh
c0NvbnN0YW50KCkpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gU2V0U3RyaWN0SW50NTJDb25z
dGFudDsKKyAgICAgICAgZWxzZSBpZiAoaXNKU0ludDMyKGluZm8uc3BpbGxGb3JtYXQoKSkgfHwg
aW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRKUykKKyAgICAgICAgICAgIGZpbGxBY3Rp
b24gPSBMb2FkMzJQYXlsb2FkU2lnbkV4dGVuZDsKKyAgICAgICAgZWxzZSBpZiAoaW5mby5zcGls
bEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQ1MikKKyAgICAgICAgICAgIGZpbGxBY3Rpb24gPSBM
b2FkNjRTaGlmdEludDUyUmlnaHQ7CisgICAgICAgIGVsc2UgaWYgKGluZm8uc3BpbGxGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9h
ZDY0OworICAgICAgICBlbHNlIGlmIChpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdE5v
bmUpCisgICAgICAgICAgICBmaWxsQWN0aW9uID0gTG9hZDY0OworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uIEFueXRoaW5nIHRoYXQgcXVhbGlmaWVz
IGFzIGFuIGludDMyIHdpbGwgbmV2ZXIKKyAgICAgICAgICAgIC8vIGJlIHR1cm5lZCBpbnRvIGEg
Y2VsbCAoaW1tZWRpYXRlIHNwZWMgZmFpbCkgb3IgYSBkb3VibGUgKHRvLWRvdWJsZQorICAgICAg
ICAgICAgLy8gY29udmVyc2lvbnMgaW52b2x2ZSBhIHNlcGFyYXRlIG5vZGUpLgorICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGZpbGxBY3Rpb24g
PSBMb2FkNjQ7IC8vIE1ha2UgR0NDIGhhcHB5LgorICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICNpZiBVU0UoSlNW
QUxVRTY0KQpAQCAtMzkzLDcgKzQzMSw2IEBAIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4gU3BlY3Vs
YXRpdmVKSVQ6OnMKICAgICAgICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAg
ICAgIGlmICh2YWx1ZU9mSlNDb25zdGFudChub2RlKS5pc0NlbGwoKSkKICAgICAgICAgICAgICAg
ICBmaWxsQWN0aW9uID0gU2V0VHJ1c3RlZEpTQ29uc3RhbnQ7Ci0gICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgZmlsbEFjdGlvbiA9IFNldEpTQ29uc3RhbnQ7CiAgICAgICAgIH0gZWxz
ZSBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRJbnQzMikgewogICAgICAgICAg
ICAgQVNTRVJUKHJlZ2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRKU0ludDMyKTsKQEAgLTUxMiw2
ICs1NDksMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBTaQogICAg
IGNhc2UgU2V0SW50MzJDb25zdGFudDoKICAgICAgICAgbV9qaXQubW92ZShJbW0zMih2YWx1ZU9m
SW50MzJDb25zdGFudChwbGFuLm5vZGUoKSkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIFNldEludDUyQ29uc3RhbnQ6CisgICAgICAg
IG1faml0Lm1vdmUoSW1tNjQodmFsdWVPZkpTQ29uc3RhbnQocGxhbi5ub2RlKCkpLmFzTWFjaGlu
ZUludCgpIDw8IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBwbGFuLmdwcigpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBTZXRTdHJpY3RJbnQ1MkNvbnN0YW50OgorICAgICAgICBtX2pp
dC5tb3ZlKEltbTY0KHZhbHVlT2ZKU0NvbnN0YW50KHBsYW4ubm9kZSgpKS5hc01hY2hpbmVJbnQo
KSksIHBsYW4uZ3ByKCkpOworICAgICAgICBicmVhazsKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQogICAgIGNhc2UgU2V0Qm9vbGVhbkNvbnN0YW50OgogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW0zMih2YWx1ZU9mQm9vbGVhbkNvbnN0YW50KHBsYW4ubm9kZSgpKSksIHBsYW4uZ3ByKCkp
OwogICAgICAgICBicmVhazsKQEAgLTUzMyw2ICs1NzgsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c2lsZW50RmlsbChjb25zdCBTaQogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7
CiAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBwbGFu
LmdwcigpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkMzJQYXlsb2FkQ29udmVydFRv
SW50NTI6CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFu
Lm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQu
c2lnbkV4dGVuZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0
LmxzaGlmdDY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgcGxhbi5n
cHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTG9hZDMyUGF5bG9hZFNpZ25FeHRlbmQ6
CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihwbGFuLm5vZGUo
KS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQuc2lnbkV4
dGVuZDMyVG9QdHIocGxhbi5ncHIoKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTG9hZERvdWJsZUJveERvdWJsZToKICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3By
KCkpOwogICAgICAgICBtX2ppdC5zdWI2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IHBsYW4uZ3ByKCkpOwpAQCAtNTc0LDYgKzYyOCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
aWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgY2FzZSBMb2FkNjQ6CiAgICAgICAgIG1faml0LmxvYWQ2
NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkp
LCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkNjRTaGlmdEludDUy
UmlnaHQ6CisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFu
Lm5vZGUoKS0+dmlydHVhbFJlZ2lzdGVyKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQu
cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBwbGFuLmdw
cigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkNjRTaGlmdEludDUyTGVmdDoKKyAg
ICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHBsYW4ubm9kZSgpLT52
aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBtX2ppdC5sc2hpZnQ2NChU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIHBsYW4uZ3ByKCkpOworICAg
ICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgTG9hZERvdWJsZToKICAgICAgICAgbV9qaXQu
bG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihwbGFuLm5vZGUoKS0+dmlydHVhbFJl
Z2lzdGVyKCkpLCBwbGFuLmZwcigpKTsKQEAgLTE0MTYsNiArMTQ3OCwxMCBAQCBib29sIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuCiAKICAgICAgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChJbnQzMlVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnQzMkJy
YW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkKKyAg
ICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZUludDUyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNv
bmRpdGlvbik7CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgZWxzZSBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpCiAgICAgICAgICAgICBjb21waWxlUGVlcEhv
bGVEb3VibGVCcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgZG91YmxlQ29uZGl0aW9uKTsKICAgICAg
ICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBDb21wYXJlRXEpIHsKQEAgLTE1MDcsNiArMTU3Myw5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmxpbmVTdGFydCgKICAgICAgICAgICAg
IGNhc2UgRmx1c2hlZEludDMyOgogICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVT
b3VyY2UoSW50MzJJbkpTU3RhY2spOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkSW50NTI6CisgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1
ZVNvdXJjZShJbnQ1MkluSlNTdGFjayk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRDZWxsOgogICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFs
dWVTb3VyY2UoQ2VsbEluSlNTdGFjayk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xODcz
LDcgKzE5NDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUHV0QnlWCiAg
ICAgRlBSUmVnIHZhbHVlUmVnID0gdmFsdWUuZnByKCk7CiAgICAgCiAgICAgREZHX1RZUEVfQ0hF
Q0soCi0gICAgICAgIEpTVmFsdWVSZWdzKCksIGNoaWxkMywgU3BlY1JlYWxOdW1iZXIsCisgICAg
ICAgIEpTVmFsdWVSZWdzKCksIGNoaWxkMywgU3BlY0Z1bGxSZWFsTnVtYmVyLAogICAgICAgICBt
X2ppdC5icmFuY2hEb3VibGUoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90
RXF1YWxPclVub3JkZXJlZCwgdmFsdWVSZWcsIHZhbHVlUmVnKSk7CiAgICAgCkBAIC0yMTQ5LDYg
KzIyMTgsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogICAg
ICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG9wMS5mb3JtYXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY2Fz
ZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCBv
cDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIFJldXNlLCBvcDEpOworICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBtX2ppdC56ZXJv
RXh0ZW5kMzJUb1B0cihvcDFHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIGludDMyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdEludDMyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgIAogICAgIGNhc2UgTnVtYmVyVXNlOgogICAg
IGNhc2UgTm90Q2VsbFVzZTogewpAQCAtMjE4Nyw3ICsyMjY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IE51bWJlclVzZSkgewogICAgICAgICAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBub2RlLT5jaGlsZDEo
KSwgU3BlY051bWJlciwKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9k
ZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2hUZXN0NjQoCiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC0yMjQzLDcgKzIzMjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVUb0ludDMyCiAKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IE51bWJlclVzZSkgewogICAgICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygK
LSAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiks
IG5vZGUtPmNoaWxkMSgpLCBTcGVjTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVt
YmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RU
YWcpKSk7CkBAIC0yMzg5LDE1ICsyNDcwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbnQzMlRvRG91YmwKICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5i
cmFuY2g2NCgKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxR1BSLCBH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogICAgIAotICAgIGlmIChuZWVkc1R5cGVD
aGVjayhub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlcikpIHsKKyAgICBpZiAobmVlZHNUeXBlQ2hl
Y2sobm9kZS0+Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyKSkgewogICAgICAgICBpZiAobm9kZS0+
ZmxhZ3MoKSAmIE5vZGVFeGl0c0ZvcndhcmQpIHsKICAgICAgICAgICAgIGZvcndhcmRUeXBlQ2hl
Y2soCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCks
IFNwZWNOdW1iZXIsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+
Y2hpbGQxKCksIFNwZWNGdWxsTnVtYmVyLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIpLAogICAgICAgICAgICAgICAgIFZhbHVlUmVjb3Zlcnk6OmluR1BSKG9wMUdQUiwg
RGF0YUZvcm1hdEpTKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBiYWNrd2FyZFR5
cGVDaGVjaygKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLT5jaGls
ZDEoKSwgU3BlY051bWJlciwKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFHUFIpLCBu
b2RlLT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJh
bmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlcikpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQyMCwxNSArMjUwMSwxNSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0RvdWJsCiAgICAgSklUQ29tcGls
ZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsK
ICAgICAKLSAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNOdW1iZXIp
KSB7CisgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJl
cikpIHsKICAgICAgICAgaWYgKG5vZGUtPmZsYWdzKCkgJiBOb2RlRXhpdHNGb3J3YXJkKSB7CiAg
ICAgICAgICAgICBmb3J3YXJkVHlwZUNoZWNrKAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjTnVtYmVyLAor
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiksIG5v
ZGUtPmNoaWxkMSgpLCBTcGVjRnVsbE51bWJlciwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpMb3dlc3RUYWcpKSwKICAgICAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5Ojpp
blBhaXIob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBiYWNrd2FyZFR5cGVDaGVjaygKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhv
cDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY051bWJlciwKKyAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpLCBub2Rl
LT5jaGlsZDEoKSwgU3BlY0Z1bGxOdW1iZXIsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjU0OSw2ICsyNjMw
LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW4KICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChub2RlLT5z
aG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpIHsKKyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMy
VG9QdHIocmVzdWx0UmVnLCByZXN1bHRSZWcpOworICAgICAgICBzdHJpY3RJbnQ1MlJlc3VsdChy
ZXN1bHRSZWcsIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgCiAg
ICAgRlBSVGVtcG9yYXJ5IGZyZXN1bHQodGhpcyk7CiAgICAgbV9qaXQuY29udmVydEludDMyVG9E
b3VibGUocmVzdWx0UmVnLCBmcmVzdWx0LmZwcigpKTsKICAgICBKSVRDb21waWxlcjo6SnVtcCBw
b3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbk9yRXF1
YWwsIHJlc3VsdFJlZywgVHJ1c3RlZEltbTMyKDApKTsKQEAgLTI2MDIsNiArMjY5MSwzMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
Y2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9w
ZXJhbmQgdmFsdWVPcCh0aGlzLCB2YWx1ZVVzZSk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5n
cHIoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUodmFsdWVPcC5ncHIoKSwgc2NyYXRjaFJlZyk7
CisgICAgICAgICAgICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGVsZW1lbnRTaXplKHR5cGUpID09IDEpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGluQm91bmRzID0gbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpCZWxvd09yRXF1YWwsIHNjcmF0Y2hSZWcsIEpJVENvbXBpbGVyOjpU
cnVzdGVkSW1tNjQoMHhmZikpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IHRvb0JpZyA9IG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6R3JlYXRlclRoYW4sIHNjcmF0Y2hSZWcsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQo
MHhmZikpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBzY3Jh
dGNoUmVnKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjbGFtcGVkID0g
bV9qaXQuanVtcCgpOworICAgICAgICAgICAgICAgIHRvb0JpZy5saW5rKCZtX2ppdCk7CisgICAg
ICAgICAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKDI1NSksIHNj
cmF0Y2hSZWcpOworICAgICAgICAgICAgICAgIGNsYW1wZWQubGluaygmbV9qaXQpOworICAgICAg
ICAgICAgICAgIGluQm91bmRzLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHZhbHVlLmFkb3B0KHNjcmF0Y2gpOworICAgICAgICAgICAgdmFsdWVHUFIgPSBzY3JhdGNo
UmVnOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxV
RTY0KQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgICAg
ICBpZiAoaXNDbGFtcGVkKHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnRT
aXplKHR5cGUpID09IDEpOwpAQCAtMjg3MCw3ICsyOTg0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFkZChOb2RlKiBubwogICAgICAgICAgICAgaW50MzJSZXN1bHQocmVzdWx0Lmdw
cigpLCBub2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIAorICAgICAgICAKICAgICAgICAgaWYgKGlzTnVtYmVyQ29uc3RhbnQobm9kZS0+Y2hpbGQy
KCkubm9kZSgpKSkgewogICAgICAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBpbnQzMl90IGltbTIgPSB2YWx1ZU9mSW50
MzJDb25zdGFudChub2RlLT5jaGlsZDIoKS5ub2RlKCkpOwpAQCAtMjkxNSw2ICszMDI5LDMzIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSogbm8KICAgICAgICAgaW50MzJS
ZXN1bHQoZ3ByUmVzdWx0LCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAgICAg
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAg
Ly8gV2lsbCB3ZSBuZWVkIGFuIG92ZXJmbG93IGNoZWNrPyBJZiB3ZSBjYW4gcHJvdmUgdGhhdCBu
ZWl0aGVyIGlucHV0IGNhbiBiZQorICAgICAgICAvLyBJbnQ1MiB0aGVuIHRoZSBvdmVyZmxvdyBj
aGVjayB3aWxsIG5vdCBiZSBuZWNlc3NhcnkuCisgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpCisgICAgICAgICAgICAmJiAh
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpKSB7
CisgICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQgb3AxKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFu
ZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCksIG9wMSk7CisgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEpOworICAgICAgICAgICAgbV9qaXQubW92ZShvcDEu
Z3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBtX2ppdC5hZGQ2NChvcDIuZ3ByKCks
IHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICBpbnQ1MlJlc3VsdChyZXN1bHQuZ3ByKCksIG5v
ZGUsIG9wMS5mb3JtYXQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIFNwZWN1bGF0ZUludDUyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBTcGVjdWxhdGVJbnQ1Mk9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3AxLCBvcDIp
OworICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAg
c3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgIEludDUyT3ZlcmZsb3csIEpTVmFsdWVSZWdz
KCksIDAsCisgICAgICAgICAgICBtX2ppdC5icmFuY2hBZGQ2NChNYWNyb0Fzc2VtYmxlcjo6T3Zl
cmZsb3csIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKSk7CisgICAgICAgIGludDUyUmVzdWx0KHJl
c3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNF
KEpTVkFMVUU2NCkKICAgICAKICAgICBjYXNlIE51bWJlclVzZTogewogICAgICAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0zMDYwLDYgKzMy
MDEsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZAogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2Ug
TWFjaGluZUludFVzZTogeworICAgICAgICAvLyBXaWxsIHdlIG5lZWQgYW4gb3ZlcmZsb3cgY2hl
Y2s/IElmIHdlIGNhbiBwcm92ZSB0aGF0IG5laXRoZXIgaW5wdXQgY2FuIGJlCisgICAgICAgIC8v
IEludDUyIHRoZW4gdGhlIG92ZXJmbG93IGNoZWNrIHdpbGwgbm90IGJlIG5lY2Vzc2FyeS4KKyAg
ICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNw
ZWNJbnQ1MikKKyAgICAgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkp
LmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikpIHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZl
ckludDUyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgU3Bl
Y3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSwgb3Ax
KTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIG9wMSk7Cisg
ICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAg
ICAgIG1faml0LnN1YjY0KG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIGlu
dDUyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgb3AxLmZvcm1hdCgpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3BlY3VsYXRlSW50NTJPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUludDUyT3Bl
cmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIFJldXNlLCBvcDEsIG9wMik7CisgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigp
LCByZXN1bHQuZ3ByKCkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAg
SW50NTJPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgIG1faml0LmJyYW5j
aFN1YjY0KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkp
KTsKKyAgICAgICAgaW50NTJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorCiAgICAgY2FzZSBOdW1iZXJV
c2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CkBAIC0zMDg4LDYgKzMyNTYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJpdGhOZWdhdGUoCiAKICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5n
cHIoKSk7CiAKKyAgICAgICAgLy8gTm90ZTogdGhlcmUgaXMgbm8gbm90aW9uIG9mIGJlaW5nIG5v
dCB1c2VkIGFzIGEgbnVtYmVyLCBidXQgc29tZW9uZQorICAgICAgICAvLyBjYXJpbmcgYWJvdXQg
bmVnYXRpdmUgemVyby4KKyAgICAgICAgCiAgICAgICAgIGlmIChieXRlY29kZUNhblRydW5jYXRl
SW50ZWdlcihub2RlLT5hcml0aE5vZGVGbGFncygpKSkKICAgICAgICAgICAgIG1faml0Lm5lZzMy
KHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGVsc2UgewpAQCAtMzA5OSw2ICszMjcwLDQyIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSgKICAgICAgICAgaW50MzJSZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgY2FzZSBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgIGlmICghbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpKSB7Cisg
ICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAg
ICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCBy
ZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQubmVnNjQocmVzdWx0R1BSKTsKKyAgICAgICAg
ICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxh
Z3MoKSkpIHsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAg
ICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0R1BSKSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQ1MlJlc3VsdChyZXN1bHRHUFIsIG5vZGUs
IG9wMS5mb3JtYXQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIFNwZWN1bGF0ZUludDUyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgb3Ax
R1BSID0gb3AxLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OworICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3BlY3Vs
YXRpb25DaGVjaygKKyAgICAgICAgICAgIEludDUyT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAs
CisgICAgICAgICAgICBtX2ppdC5icmFuY2hOZWc2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3cs
IHJlc3VsdEdQUikpOworICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJv
KG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KAorICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3Vs
dEdQUikpOworICAgICAgICB9CisgICAgICAgIGludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgCiAgICAgY2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMzE2NCw2ICszMzcxLDYyIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bChOb2QKICAgICAgICAgaW50MzJSZXN1bHQo
cmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyNpZiBV
U0UoSlNWQUxVRTY0KSAgIAorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAvLyBU
aGlzIGlzIHN1cGVyIGNsZXZlci4gV2Ugd2FudCB0byBkbyBhbiBpbnQ1MiBtdWx0aXBsaWNhdGlv
biBhbmQgY2hlY2sgdGhlCisgICAgICAgIC8vIGludDUyIG92ZXJmbG93IGJpdC4gVGhlcmUgaXMg
bm8gZGlyZWN0IGhhcmR3YXJlIHN1cHBvcnQgZm9yIHRoaXMsIGJ1dCB3ZSBkbworICAgICAgICAv
LyBoYXZlIHRoZSBhYmlsaXR5IHRvIGRvIGFuIGludDY0IG11bHRpcGxpY2F0aW9uIGFuZCBjaGVj
ayB0aGUgaW50NjQgb3ZlcmZsb3cKKyAgICAgICAgLy8gYml0LiBXZSBsZXZlcmFnZSB0aGF0LiBD
b25zaWRlciB0aGF0IGEsIGIgYXJlIGludDUyIG51bWJlcnMgaW5zaWRlIGludDY0CisgICAgICAg
IC8vIHJlZ2lzdGVycywgd2l0aCB0aGUgaGlnaCAxMiBiaXRzIGJlaW5nIHNpZ24tZXh0ZW5kZWQu
IFdlIGNhbiBkbzoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICAgIChhICogKGIgPDwgMTIpKQor
ICAgICAgICAvLworICAgICAgICAvLyBUaGlzIHdpbGwgZ2l2ZSB1cyBhIGxlZnQtc2hpZnRlZCBp
bnQ1MiAodmFsdWUgaXMgaW4gaGlnaCA0OCBiaXRzLCBsb3cgMTYKKyAgICAgICAgLy8gYml0cyBh
cmUgemVybykgcGx1cyB0aGUgaW50NTIgb3ZlcmZsb3cgYml0LiBJLmUuIHdoZXRoZXIgdGhpcyA2
NC1iaXQKKyAgICAgICAgLy8gbXVsdGlwbGljYXRpb24gb3ZlcmZsb3dzIGlzIGlkZW50aWNhbCB0
byB3aGV0aGVyIHRoZSAnYSAqIGInIDQ4LWJpdAorICAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBv
dmVyZmxvd3MuCisgICAgICAgIC8vCisgICAgICAgIC8vIEluIG91ciBub21lbmNsYXR1cmUsIHRo
aXMgaXM6CisgICAgICAgIC8vCisgICAgICAgIC8vICAgICBzdHJpY3RJbnQ1MihhKSAqIGludDUy
KGIpID0+IGludDUyCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoYXQgaXMgInN0cmljdEludDUy
IiBtZWFucyB1bnNoaWZ0ZWQgYW5kICJpbnQ1MiIgbWVhbnMgbGVmdC1zaGlmdGVkIGJ5IDE2Cisg
ICAgICAgIC8vIGJpdHMuCisgICAgICAgIC8vCisgICAgICAgIC8vIFdlIGRvbid0IGNhcmUgd2hp
Y2ggb2Ygb3AxIG9yIG9wMiBzZXJ2ZXMgYXMgdGhlIGxlZnQtc2hpZnRlZCBvcGVyYW5kLCBzbwor
ICAgICAgICAvLyB3ZSBqdXN0IGRvIHdoYXRldmVyIGlzIG1vcmUgY29udmVuaWVudCBmb3Igb3Ax
IGFuZCBoYXZlIG9wMiBkbyB0aGUKKyAgICAgICAgLy8gb3Bwb3NpdGUuIFRoaXMgZW5zdXJlcyB0
aGF0IHdlIGRvIGF0IG1vc3Qgb25lIHNoaWZ0LgorCisgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZl
ckludDUyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxh
dGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBPcHBvc2l0
ZVNoaWZ0LCBvcDEpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAg
ICAKKyAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIG9w
MkdQUiA9IG9wMi5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyAgICAgICAgCisgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOworICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgSW50NTJPdmVyZmxvdywgSlNWYWx1
ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaE11bDY0KE1hY3JvQXNzZW1ibGVy
OjpPdmVyZmxvdywgb3AyR1BSLCByZXN1bHRHUFIpKTsKKyAgICAgICAgCisgICAgICAgIGlmICgh
Ynl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsK
KyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJlc3VsdE5vblplcm8gPSBtX2ppdC5i
cmFuY2hUZXN0NjQoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHJl
c3VsdEdQUik7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAg
IE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMUdQUiwgVHJ1c3RlZEltbTY0KDAp
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIE5lZ2F0
aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2
NChNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMkdQUiwgVHJ1c3RlZEltbTY0KDApKSk7Cisg
ICAgICAgICAgICByZXN1bHROb25aZXJvLmxpbmsoJm1faml0KTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgaW50NTJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICAKICAgICBjYXNlIE51
bWJlclVzZTogewogICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CkBAIC0zNTg3LDcgKzM4NTAsMTQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGFyZShOb2RlKiBub2RlLAogICAgICAgICBjb21waWxlSW50MzJDb21wYXJlKG5vZGUsIGNv
bmRpdGlvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KKyAgICAKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkp
IHsKKyAgICAgICAgY29tcGlsZUludDUyQ29tcGFyZShub2RlLCBjb25kaXRpb24pOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgCiAg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAgIGNvbXBp
bGVEb3VibGVDb21wYXJlKG5vZGUsIGRvdWJsZUNvbmRpdGlvbik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTM3MzcsNiArNDAwNywyMyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
U3RyaWN0RXEoTm9kCiAgICAgICAgIGNvbXBpbGVJbnQzMkNvbXBhcmUobm9kZSwgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICAKKyNpZiBV
U0UoSlNWQUxVRTY0KSAgIAorICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICB1bnNp
Z25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOworICAgICAg
ICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CisgICAgICAgICAgICBOb2Rl
KiBicmFuY2hOb2RlID0gbV9ibG9jay0+YXQoYnJhbmNoSW5kZXhJbkJsb2NrKTsKKyAgICAgICAg
ICAgIGNvbXBpbGVQZWVwSG9sZUludDUyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCk7CisgICAgICAgICAgICB1c2Uobm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrID0g
YnJhbmNoSW5kZXhJbkJsb2NrOworICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJyYW5jaE5v
ZGU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBjb21waWxl
SW50NTJDb21wYXJlKG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICAgICAgCiAgICAg
Y2FzZSBOdW1iZXJVc2U6IHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0g
ZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKQEAgLTQ0OTIsOSArNDc3OSwyMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVJbnQzMihFZGdlCiAgICAgKFNwZWN1bGF0ZUludDMyT3BlcmFu
ZCh0aGlzLCBlZGdlKSkuZ3ByKCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZU1hY2hpbmVJbnQoRWRnZSBlZGdlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKCFu
ZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTWFjaGluZUludCkpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICAoU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIo
KTsKKyNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCisgICAgVU5VU0VEX1BBUkFNKGVkZ2UpOworICAg
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCit9
CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcihFZGdlIGVkZ2UpCiB7Ci0g
ICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjTnVtYmVyKSkKKyAgICBpZiAoIW5lZWRz
VHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsTnVtYmVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIChTcGVjdWxhdGVEb3VibGVPcGVyYW5kKHRoaXMsIGVkZ2UpKS5mcHIoKTsKQEAgLTQ1MDIs
MTMgKzQ4MDIsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTnVtYmVyKEVkZwog
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVSZWFsTnVtYmVyKEVkZ2UgZWRnZSkKIHsK
LSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNSZWFsTnVtYmVyKSkKKyAgICBpZiAo
IW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNGdWxsUmVhbE51bWJlcikpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7
CiAgICAgRlBSUmVnIGZwciA9IG9wZXJhbmQuZnByKCk7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0g
ICAgICAgIEpTVmFsdWVSZWdzKCksIGVkZ2UsIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICBKU1Zh
bHVlUmVncygpLCBlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgIG1faml0LmJyYW5j
aERvdWJsZSgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5v
cmRlcmVkLCBmcHIsIGZwcikpOwogfQpAQCAtNDc3MCw3ICs1MDcwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNo
ZWNrKGVkZ2UsIFNwZWNJbnQzMikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEtub3duTnVt
YmVyVXNlOgotICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNOdW1iZXIp
KTsKKyAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbE51bWJlcikp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICAgICAgQVNTRVJU
KCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCkpOwpAQCAtNDc4MSw2ICs1MDgxLDkgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgIGNhc2UgSW50MzJV
c2U6CiAgICAgICAgIHNwZWN1bGF0ZUludDMyKGVkZ2UpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZU1hY2hpbmVJbnQoZWRnZSk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVhbE51bWJlclVzZToKICAgICAgICAgc3BlY3VsYXRl
UmVhbE51bWJlcihlZGdlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1OSw5ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgLy8gYW5kIGl0cyBtYWNoaW5lIHJl
Z2lzdGVycyBtYXkgYmUgcmV1c2VkLgogICAgIGJvb2wgY2FuUmV1c2UoTm9kZSogbm9kZSkKICAg
ICB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0
dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9u
SW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJu
IGluZm8uY2FuUmV1c2UoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKG5vZGUpLmNh
blJldXNlKCk7CiAgICAgfQogICAgIGJvb2wgY2FuUmV1c2UoRWRnZSBub2RlVXNlKQogICAgIHsK
QEAgLTIzNywxNSArMjM1LDExIEBAIHB1YmxpYzoKICAgICAvLyBhdm9pZCBzcGlsbGluZyB2YWx1
ZXMgd2Ugd2lsbCBuZWVkIGltbWVkaWF0ZWx5KS4KICAgICBib29sIGlzRmlsbGVkKE5vZGUqIG5v
ZGUpCiAgICAgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9k
ZS0+dmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2Vu
ZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAg
IHJldHVybiBpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdE5vbmU7CisgICAgICAg
IHJldHVybiBnZW5lcmF0aW9uSW5mbyhub2RlKS5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3Jt
YXROb25lOwogICAgIH0KICAgICBib29sIGlzRmlsbGVkRG91YmxlKE5vZGUqIG5vZGUpCiAgICAg
ewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVh
bFJlZ2lzdGVyKCk7Ci0gICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBp
bmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZTsKKyAgICAgICAgcmV0dXJu
IGdlbmVyYXRpb25JbmZvKG5vZGUpLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJs
ZTsKICAgICB9CiAKICAgICAvLyBDYWxsZWQgb24gYW4gb3BlcmFuZCBvbmNlIGl0IGhhcyBiZWVu
IGNvbnN1bWVkIGJ5IGEgcGFyZW50IG5vZGUuCkBAIC0yNTMsOCArMjQ3LDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgaWYgKCFub2RlLT5oYXNSZXN1bHQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUtPnZpcnR1
YWxSZWdpc3RlcigpOwotICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25J
bmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICBHZW5lcmF0
aW9uSW5mbyYgaW5mbyA9IGdlbmVyYXRpb25JbmZvKG5vZGUpOwogCiAgICAgICAgIC8vIHVzZSgp
IHJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2YWx1ZSBiZWNvbWVzIGRlYWQsIGFuZCBhbnkKICAgICAg
ICAgLy8gYXNzb2NpYXRlZCByZXNvdXJjZXMgbWF5IGJlIGZyZWVkLgpAQCAtMzMzLDYgKzMyNiw3
IEBAIHB1YmxpYzoKICAgICAvLyBtYWNoaW5lIHJlZ2lzdGVycywgaW1wbGljaXRseSBnZW5lcmF0
aW5nIHNwZWN1bGF0aW9uIGNoZWNrcyBhcyBuZWVkZWQuCiAgICAgR1BSUmVnIGZpbGxTcGVjdWxh
dGVJbnQzMihFZGdlLCBEYXRhRm9ybWF0JiByZXR1cm5Gb3JtYXQpOwogICAgIEdQUlJlZyBmaWxs
U3BlY3VsYXRlSW50MzJTdHJpY3QoRWRnZSk7CisgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVJbnQ1
MihFZGdlLCBEYXRhRm9ybWF0IGRlc2lyZWRGb3JtYXQpOwogICAgIEZQUlJlZyBmaWxsU3BlY3Vs
YXRlRG91YmxlKEVkZ2UpOwogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlQ2VsbChFZGdlKTsKICAg
ICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSk7CkBAIC00NjgsNiArNDYyLDggQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGJveERvdWJsZShmcHIsIGFsbG9jYXRlKCkp
OwogICAgIH0KKyAgICAKKyAgICB2b2lkIGJveEludDUyKEdQUlJlZyBzb3VyY2VHUFIsIEdQUlJl
ZyB0YXJnZXRHUFIsIERhdGFGb3JtYXQpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2
b2lkIGJveERvdWJsZShGUFJSZWcgZnByLCBHUFJSZWcgdGFnR1BSLCBHUFJSZWcgcGF5bG9hZEdQ
UikKICAgICB7CkBAIC01NTksMTEgKzU1NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgYm9vbCBpc0tub3duSW50ZWdlcihOb2RlKiBub2RlKSB7IHJldHVybiAhKG1f
c3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiB+U3BlY0ludDMyKTsgfQotICAgIGJvb2wgaXNL
bm93bkNlbGwoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90
eXBlICYgflNwZWNDZWxsKTsgfQorICAgIGJvb2wgaXNLbm93bkludGVnZXIoTm9kZSogbm9kZSkg
eyByZXR1cm4gbV9zdGF0ZS5mb3JOb2RlKG5vZGUpLmlzVHlwZShTcGVjSW50MzIpOyB9CisgICAg
Ym9vbCBpc0tub3duQ2VsbChOb2RlKiBub2RlKSB7IHJldHVybiBtX3N0YXRlLmZvck5vZGUobm9k
ZSkuaXNUeXBlKFNwZWNDZWxsKTsgfQogICAgIAogICAgIGJvb2wgaXNLbm93bk5vdEludGVnZXIo
Tm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3Bl
Y0ludDMyKTsgfQotICAgIGJvb2wgaXNLbm93bk5vdE51bWJlcihOb2RlKiBub2RlKSB7IHJldHVy
biAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBTcGVjTnVtYmVyKTsgfQorICAgIGJv
b2wgaXNLbm93bk5vdE51bWJlcihOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9k
ZShub2RlKS5tX3R5cGUgJiBTcGVjRnVsbE51bWJlcik7IH0KICAgICBib29sIGlzS25vd25Ob3RD
ZWxsKE5vZGUqIG5vZGUpIHsgcmV0dXJuICEobV9zdGF0ZS5mb3JOb2RlKG5vZGUpLm1fdHlwZSAm
IFNwZWNDZWxsKTsgfQogICAgIAogICAgIC8vIENoZWNrcy9hY2Nlc3NvcnMgZm9yIGNvbnN0YW50
IHZhbHVlcy4KQEAgLTgxNiw2ICs4MTIsMjUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaW50
MzJSZXN1bHQocmVnLCBub2RlLCBEYXRhRm9ybWF0SW50MzIsIG1vZGUpOwogICAgIH0KKyAgICB2
b2lkIGludDUyUmVzdWx0KEdQUlJlZyByZWcsIE5vZGUqIG5vZGUsIERhdGFGb3JtYXQgZm9ybWF0
LCBVc2VDaGlsZHJlbk1vZGUgbW9kZSA9IENhbGxVc2VDaGlsZHJlbikKKyAgICB7CisgICAgICAg
IGlmIChtb2RlID09IENhbGxVc2VDaGlsZHJlbikKKyAgICAgICAgICAgIHVzZUNoaWxkcmVuKG5v
ZGUpOworCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52
aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0
aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKKworICAgICAgICBt
X2dwcnMucmV0YWluKHJlZywgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAg
ICBpbmZvLmluaXRJbnQ1Mihub2RlLCBub2RlLT5yZWZDb3VudCgpLCByZWcsIGZvcm1hdCk7Cisg
ICAgfQorICAgIHZvaWQgaW50NTJSZXN1bHQoR1BSUmVnIHJlZywgTm9kZSogbm9kZSwgVXNlQ2hp
bGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRyZW4pCisgICAgeworICAgICAgICBpbnQ1MlJl
c3VsdChyZWcsIG5vZGUsIERhdGFGb3JtYXRJbnQ1MiwgbW9kZSk7CisgICAgfQorICAgIHZvaWQg
c3RyaWN0SW50NTJSZXN1bHQoR1BSUmVnIHJlZywgTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2Rl
IG1vZGUgPSBDYWxsVXNlQ2hpbGRyZW4pCisgICAgeworICAgICAgICBpbnQ1MlJlc3VsdChyZWcs
IG5vZGUsIERhdGFGb3JtYXRTdHJpY3RJbnQ1MiwgbW9kZSk7CisgICAgfQogICAgIHZvaWQgbm9S
ZXN1bHQoTm9kZSogbm9kZSwgVXNlQ2hpbGRyZW5Nb2RlIG1vZGUgPSBDYWxsVXNlQ2hpbGRyZW4p
CiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkp
CkBAIC05MDAsNyArOTE1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdENvbnN0YW50SW5mbyhO
b2RlKiBub2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzSW50MzJDb25zdGFudChub2RlKSB8
fCBpc051bWJlckNvbnN0YW50KG5vZGUpIHx8IGlzSlNDb25zdGFudChub2RlKSk7Ci0gICAgICAg
IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcihub2RlLT52aXJ0dWFsUmVnaXN0ZXIo
KSkuaW5pdENvbnN0YW50KG5vZGUsIG5vZGUtPnJlZkNvdW50KCkpOworICAgICAgICBnZW5lcmF0
aW9uSW5mbyhub2RlKS5pbml0Q29uc3RhbnQobm9kZSwgbm9kZS0+cmVmQ291bnQoKSk7CiAgICAg
fQogICAgIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYWRkIGNhbGxzIHRvIEMrKyBoZWxwZXIgZnVu
Y3Rpb25zLgpAQCAtMTg4OSwxNSArMTkwNCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc0lu
dDMyQ29uc3RhbnQobm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7
Ci0gICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVh
bFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gaW5m
by5pc0pTSW50MzIoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvKG5vZGUpLmlzSlNJ
bnQzMigpOworICAgIH0KKyAgICAKKyAgICBib29sIGJldHRlclVzZVN0cmljdEludDUyKE5vZGUq
IG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gIWdlbmVyYXRpb25JbmZvKG5vZGUpLmlzSW50
NTIoKTsKKyAgICB9CisgICAgYm9vbCBiZXR0ZXJVc2VTdHJpY3RJbnQ1MihFZGdlIGVkZ2UpCisg
ICAgeworICAgICAgICByZXR1cm4gYmV0dGVyVXNlU3RyaWN0SW50NTIoZWRnZS5ub2RlKCkpOwog
ICAgIH0KICAgICAKICAgICBib29sIGNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxh
dGlvbmFsQ29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBTX0RGR09w
ZXJhdGlvbl9FSkopOwogICAgIGJvb2wgY29tcGlsZVBlZXBIb2xlQnJhbmNoKE5vZGUqLCBNYWNy
b0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNv
bmRpdGlvbiwgU19ERkdPcGVyYXRpb25fRUpKKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZUlu
dDMyQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbik7CisgICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnQ1MkJyYW5jaChOb2RlKiwg
Tm9kZSogYnJhbmNoTm9kZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAg
IHZvaWQgY29tcGlsZVBlZXBIb2xlQm9vbGVhbkJyYW5jaChOb2RlKiwgTm9kZSogYnJhbmNoTm9k
ZSwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29tcGlsZVBl
ZXBIb2xlRG91YmxlQnJhbmNoKE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBKSVRDb21waWxlcjo6
RG91YmxlQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5
KE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlKTsKQEAgLTE5NDUsNiArMTk2Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqKTsKICAgICAKICAgICB2b2lkIGNv
bXBpbGVJbnQzMkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uKTsKKyAgICB2b2lkIGNvbXBpbGVJbnQ1MkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVy
OjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVCb29sZWFuQ29tcGFyZShO
b2RlKiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZvaWQgY29t
cGlsZURvdWJsZUNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24p
OwogICAgIApAQCAtMjExOCw2ICsyMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9yd2FyZFR5
cGVDaGVjayhKU1ZhbHVlU291cmNlLCBFZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRo
cm91Z2gsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNvbnN0IFZhbHVlUmVjb3Zl
cnkmKTsKIAogICAgIHZvaWQgc3BlY3VsYXRlSW50MzIoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxh
dGVNYWNoaW5lSW50KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2UpOwogICAg
IHZvaWQgc3BlY3VsYXRlUmVhbE51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZUJvb2xl
YW4oRWRnZSk7CkBAIC0yMTk1LDYgKzIyMTksMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fZ2VuZXJhdGlvbkluZm9bb3BlcmFuZFRvTG9jYWwodmlydHVhbFJlZ2lzdGVyKV07
CiAgICAgfQorICAgIAorICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mbyhOb2RlKiBu
b2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdp
c3Rlcihub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgfQorICAgIAorICAgIEdlbmVyYXRp
b25JbmZvJiBnZW5lcmF0aW9uSW5mbyhFZGdlIGVkZ2UpCisgICAgeworICAgICAgICByZXR1cm4g
Z2VuZXJhdGlvbkluZm8oZWRnZS5ub2RlKCkpOworICAgIH0KIAogICAgIC8vIFRoZSBKSVQsIHdo
aWxlIGFsc28gcHJvdmlkZXMgTWFjcm9Bc3NlbWJsZXIgZnVuY3Rpb25hbGl0eS4KICAgICBKSVRD
b21waWxlciYgbV9qaXQ7CkBAIC0yNjc2LDYgKzI3MTAsMTc5IEBAIHByaXZhdGU6CiAgICAgR1BS
UmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAorLy8gR2l2ZXMgeW91IGEgY2Fub25pY2FsIEludDUy
IChpLmUuIGl0J3MgbGVmdC1zaGlmdGVkIGJ5IDE2LCBsb3cgYml0cyB6ZXJvKS4KK2NsYXNzIFNw
ZWN1bGF0ZUludDUyT3BlcmFuZCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU3BlY3VsYXRlSW50
NTJPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0
aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1f
aml0KGppdCkKKyAgICAgICAgLCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxp
ZChJbnZhbGlkR1BSUmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2Rl
ID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5l
SW50VXNlKTsKKyAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAg
IGdwcigpOworICAgIH0KKyAgICAKKyAgICB+U3BlY3VsYXRlSW50NTJPcGVyYW5kKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX2dwck9ySW52YWxpZCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAg
ICAgbV9qaXQtPnVubG9jayhtX2dwck9ySW52YWxpZCk7CisgICAgfQorICAgIAorICAgIEVkZ2Ug
ZWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lZGdlOworICAgIH0KKyAgICAK
KyAgICBOb2RlKiBub2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlZGdlKCkubm9k
ZSgpOworICAgIH0KKyAgICAKKyAgICBHUFJSZWcgZ3ByKCkKKyAgICB7CisgICAgICAgIGlmICht
X2dwck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9ncHJPckludmFs
aWQgPSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZUludDUyKGVkZ2UoKSwgRGF0YUZvcm1hdEludDUyKTsK
KyAgICAgICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVz
ZSgpCisgICAgeworICAgICAgICBtX2ppdC0+dXNlKG5vZGUoKSk7CisgICAgfQorICAgIAorcHJp
dmF0ZToKKyAgICBTcGVjdWxhdGl2ZUpJVCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAg
R1BSUmVnIG1fZ3ByT3JJbnZhbGlkOworfTsKKworLy8gR2l2ZXMgeW91IGEgc3RyaWN0IEludDUy
IChpLmUuIHRoZSBwYXlsb2FkIGlzIGluIHRoZSBsb3cgNDggYml0cywgaGlnaCAxNiBiaXRzIGFy
ZSBzaWduLWV4dGVuZGVkKS4KK2NsYXNzIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgU3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kKFNwZWN1bGF0
aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0
b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQorICAgICAgICA6IG1faml0KGppdCkKKyAgICAgICAg
LCBtX2VkZ2UoZWRnZSkKKyAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAg
aWYgKGppdC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAg
ICAKKyAgICB+U3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kKCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX2dwck9ySW52YWxpZCAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgbV9qaXQtPnVu
bG9jayhtX2dwck9ySW52YWxpZCk7CisgICAgfQorICAgIAorICAgIEVkZ2UgZWRnZSgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9lZGdlOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBu
b2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlZGdlKCkubm9kZSgpOworICAgIH0K
KyAgICAKKyAgICBHUFJSZWcgZ3ByKCkKKyAgICB7CisgICAgICAgIGlmIChtX2dwck9ySW52YWxp
ZCA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9ncHJPckludmFsaWQgPSBtX2ppdC0+
ZmlsbFNwZWN1bGF0ZUludDUyKGVkZ2UoKSwgRGF0YUZvcm1hdFN0cmljdEludDUyKTsKKyAgICAg
ICAgcmV0dXJuIG1fZ3ByT3JJbnZhbGlkOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVzZSgpCisg
ICAgeworICAgICAgICBtX2ppdC0+dXNlKG5vZGUoKSk7CisgICAgfQorICAgIAorcHJpdmF0ZToK
KyAgICBTcGVjdWxhdGl2ZUpJVCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7CisgICAgR1BSUmVn
IG1fZ3ByT3JJbnZhbGlkOworfTsKKworZW51bSBPcHBvc2l0ZVNoaWZ0VGFnIHsgT3Bwb3NpdGVT
aGlmdCB9OworCitjbGFzcyBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZChTcGVjdWxhdGl2
ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9t
YXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAgOiBtX2ppdChqaXQpCisgICAgICAgICwg
bV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKKyAg
ICAgICAgLCBtX3N0cmljdChqaXQtPmJldHRlclVzZVN0cmljdEludDUyKGVkZ2UpKQorICAgIHsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgaWYgKGpp
dC0+aXNGaWxsZWQobm9kZSgpKSkKKyAgICAgICAgICAgIGdwcigpOworICAgIH0KKyAgICAKKyAg
ICBleHBsaWNpdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQq
IGppdCwgRWRnZSBlZGdlLCBjb25zdCBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQmIG90
aGVyLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3Vs
YXRpb24pCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAgICAsIG1fZWRnZShlZGdlKQorICAg
ICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCisgICAgICAgICwgbV9zdHJpY3Qo
b3RoZXIubV9zdHJpY3QpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUg
PT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJ
bnRVc2UpOworICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAg
Z3ByKCk7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUy
T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIGVkZ2UsIE9wcG9zaXRlU2hpZnRUYWcs
IGNvbnN0IFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCYgb3RoZXIsIE9wZXJhbmRTcGVj
dWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICAgICAg
OiBtX2ppdChqaXQpCisgICAgICAgICwgbV9lZGdlKGVkZ2UpCisgICAgICAgICwgbV9ncHJPcklu
dmFsaWQoSW52YWxpZEdQUlJlZykKKyAgICAgICAgLCBtX3N0cmljdCghb3RoZXIubV9zdHJpY3Qp
CisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IE1hY2hpbmVJbnRVc2UpOworICAgICAg
ICBpZiAoaml0LT5pc0ZpbGxlZChub2RlKCkpKQorICAgICAgICAgICAgZ3ByKCk7CisgICAgfQor
ICAgIAorICAgIH5TcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBtX2pp
dC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsKKyAgICB9CisgICAgCisgICAgRWRnZSBlZGdlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VkZ2U7CisgICAgfQorICAgIAorICAgIE5v
ZGUqIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UoKS5ub2RlKCk7Cisg
ICAgfQorICAgIAorICAgIEdQUlJlZyBncHIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ3ByT3JJ
bnZhbGlkID09IEludmFsaWRHUFJSZWcpIHsKKyAgICAgICAgICAgIG1fZ3ByT3JJbnZhbGlkID0g
bV9qaXQtPmZpbGxTcGVjdWxhdGVJbnQ1MigKKyAgICAgICAgICAgICAgICBlZGdlKCksIG1fc3Ry
aWN0ID8gRGF0YUZvcm1hdFN0cmljdEludDUyIDogRGF0YUZvcm1hdEludDUyKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbV9ncHJPckludmFsaWQ7CisgICAgfQorICAgIAorICAgIHZvaWQg
dXNlKCkKKyAgICB7CisgICAgICAgIG1faml0LT51c2Uobm9kZSgpKTsKKyAgICB9CisgICAgCisg
ICAgRGF0YUZvcm1hdCBmb3JtYXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3Ry
aWN0ID8gRGF0YUZvcm1hdFN0cmljdEludDUyIDogRGF0YUZvcm1hdEludDUyOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBTcGVjdWxhdGl2ZUpJVCogbV9qaXQ7CisgICAgRWRnZSBtX2VkZ2U7Cisg
ICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOworICAgIGJvb2wgbV9zdHJpY3Q7Cit9OworCiBjbGFz
cyBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kKFNwZWN1bGF0aXZlSklUKiBqaXQsIEVkZ2UgZWRnZSwgT3BlcmFuZFNw
ZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0aW9uKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCShyZXZpc2lvbiAxNTU5MDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw2ICs0NCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBVc2UKICAgICBjYXNlIEtub3duSW50MzJVc2U6CiAgICAgICAgIG91dC5wcmludCgiS25vd25J
bnQzMiIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAg
IG91dC5wcmludCgiTWFjaGluZUludCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFJlYWxO
dW1iZXJVc2U6CiAgICAgICAgIG91dC5wcmludCgiUmVhbE51bWJlciIpOwogICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAx
NTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBlbnVtIFVzZUtpbmQgewogICAgIFVudHlwZWRVc2Us
CiAgICAgSW50MzJVc2UsCiAgICAgS25vd25JbnQzMlVzZSwKKyAgICBNYWNoaW5lSW50VXNlLAog
ICAgIFJlYWxOdW1iZXJVc2UsCiAgICAgTnVtYmVyVXNlLAogICAgIEtub3duTnVtYmVyVXNlLApA
QCAtNjYsMTEgKzY3LDEzIEBAIEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRl
ckYKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKICAgICAgICAg
cmV0dXJuIFNwZWNJbnQzMjsKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIHJldHVy
biBTcGVjTWFjaGluZUludDsKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6Ci0gICAgICAgIHJldHVy
biBTcGVjUmVhbE51bWJlcjsKKyAgICAgICAgcmV0dXJuIFNwZWNGdWxsUmVhbE51bWJlcjsKICAg
ICBjYXNlIE51bWJlclVzZToKICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgotICAgICAgICByZXR1
cm4gU3BlY051bWJlcjsKKyAgICAgICAgcmV0dXJuIFNwZWNGdWxsTnVtYmVyOwogICAgIGNhc2Ug
Qm9vbGVhblVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCb29sZWFuOwogICAgIGNhc2UgQ2VsbFVz
ZToKQEAgLTEyNSw2ICsxMjgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOdW1lcmljYWwoVXNl
S2luZCBrCiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBJbnQzMlVzZToKICAgICBjYXNl
IEtub3duSW50MzJVc2U6CisgICAgY2FzZSBNYWNoaW5lSW50VXNlOgogICAgIGNhc2UgUmVhbE51
bWJlclVzZToKICAgICBjYXNlIE51bWJlclVzZToKICAgICBjYXNlIEtub3duTnVtYmVyVXNlOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAJKHJl
dmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3Vy
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIHZvaWQgVmFsdWVTb3VyY2U6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkKICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAgICAg
ICBvdXQucHJpbnQoIkludDMyIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50NTJJbkpT
U3RhY2s6CisgICAgICAgIG91dC5wcmludCgiSW50NTIiKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDZWxsSW5KU1N0YWNrOgogICAgICAgICBvdXQucHJpbnQoIkNlbGwiKTsKICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5o
CShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVl
U291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgZW51bSBWYWx1ZVNvdXJj
ZUtpbmQgewogICAgIFNvdXJjZU5vdFNldCwKICAgICBWYWx1ZUluSlNTdGFjaywKICAgICBJbnQz
MkluSlNTdGFjaywKKyAgICBJbnQ1MkluSlNTdGFjaywKICAgICBDZWxsSW5KU1N0YWNrLAogICAg
IEJvb2xlYW5JbkpTU3RhY2ssCiAgICAgRG91YmxlSW5KU1N0YWNrLApAQCAtNTYsNiArNTcsOCBA
QCBzdGF0aWMgaW5saW5lIFZhbHVlU291cmNlS2luZCBkYXRhRm9ybWF0CiAgICAgc3dpdGNoIChk
YXRhRm9ybWF0KSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6CiAgICAgICAgIHJldHVybiBJ
bnQzMkluSlNTdGFjazsKKyAgICBjYXNlIERhdGFGb3JtYXRJbnQ1MjoKKyAgICAgICAgcmV0dXJu
IEludDUySW5KU1N0YWNrOwogICAgIGNhc2UgRGF0YUZvcm1hdERvdWJsZToKICAgICAgICAgcmV0
dXJuIERvdWJsZUluSlNTdGFjazsKICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgpAQCAtNzks
NiArODIsOCBAQCBzdGF0aWMgaW5saW5lIERhdGFGb3JtYXQgdmFsdWVTb3VyY2VLaW5kCiAgICAg
ICAgIHJldHVybiBEYXRhRm9ybWF0SlM7CiAgICAgY2FzZSBJbnQzMkluSlNTdGFjazoKICAgICAg
ICAgcmV0dXJuIERhdGFGb3JtYXRJbnQzMjsKKyAgICBjYXNlIEludDUySW5KU1N0YWNrOgorICAg
ICAgICByZXR1cm4gRGF0YUZvcm1hdEludDUyOwogICAgIGNhc2UgQ2VsbEluSlNTdGFjazoKICAg
ICAgICAgcmV0dXJuIERhdGFGb3JtYXRDZWxsOwogICAgIGNhc2UgQm9vbGVhbkluSlNTdGFjazoK
QEAgLTEzOSw2ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3Vy
Y2UoRG91YmxlSW5KU1N0YWNrKTsKICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAg
ICAgICByZXR1cm4gVmFsdWVTb3VyY2UoSW50MzJJbkpTU3RhY2spOworICAgICAgICBjYXNlIEZs
dXNoZWRJbnQ1MjoKKyAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShJbnQ1MkluSlNTdGFj
ayk7CiAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVT
b3VyY2UoQ2VsbEluSlNTdGFjayk7CiAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CkBAIC0x
ODEsNiArMTg4LDkgQEAgcHVibGljOgogICAgICAgICBjYXNlIEludDMySW5KU1N0YWNrOgogICAg
ICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRJ
bnQzMigpOwogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSW50NTJJbkpTU3RhY2s6CisgICAg
ICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZElu
dDUyKCk7CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgogICAgICAg
ICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJbkpTU3RhY2tBc1VuYm94ZWRDZWxs
KCk7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
aWFibGVBY2Nlc3NEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtMjM1LDcgKzIzNSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSB2
YXJpYWJsZSBpcyBub3QgYSBudW1iZXIgcHJlZGljdGlvbiwgdGhlbiB0aGlzIGRvZXNuJ3QKICAg
ICAgICAgLy8gbWFrZSBhbnkgc2Vuc2UuCi0gICAgICAgIGlmICghaXNOdW1iZXJTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKCkpKSB7CisgICAgICAgIGlmICghaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24o
cHJlZGljdGlvbigpKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IHdlIG1heSBlbmQgdXAgZm9y
Y2luZyBhIGxvY2FsIGluIGlubGluZWQgYXJndW1lbnQgcG9zaXRpb24gdG8gYmUgYSBkb3VibGUg
ZXZlbgogICAgICAgICAgICAgLy8gaWYgaXQgaXMgc29tZXRpbWVzIG5vdCBldmVuIG51bWVyaWMs
IHNpbmNlIHRoaXMgbmV2ZXIgc2lnbmFscyB0aGUgZmFjdCB0aGF0IGl0IGRvZXNuJ3QKICAgICAg
ICAgICAgIC8vIHdhbnQgZG91Ymxlcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwOTUxMQpAQCAtMzMzLDYgKzMzMyw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlz
SW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBGbHVzaGVk
SW50MzI7CiAgICAgICAgIAorICAgICAgICBpZiAoZW5hYmxlSW50NTIoKSAmJiAhb3BlcmFuZElz
QXJndW1lbnQobV9sb2NhbCkgJiYgaXNNYWNoaW5lSW50U3BlY3VsYXRpb24ocHJlZGljdGlvbikp
CisgICAgICAgICAgICByZXR1cm4gRmx1c2hlZEludDUyOworICAgICAgICAKICAgICAgICAgaWYg
KGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIEZsdXNo
ZWRDZWxsOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ0Fy
Z3VtZW50R2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENBcmd1bWVudEdldHRlci5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ0FyZ3VtZW50R2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsMTMgKzMyLDIzIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdXNpbmcg
bmFtZXNwYWNlIERGRzsKIAotdm9pZCBDQXJndW1lbnRHZXR0ZXI6OmxvYWROZXh0QW5kQm94KFZh
bHVlRm9ybWF0IGZvcm1hdCwgR1BSUmVnIGRlc3RpbmF0aW9uLCBHUFJSZWcgc2NyYXRjaCkKK3Zv
aWQgQ0FyZ3VtZW50R2V0dGVyOjpsb2FkTmV4dEFuZEJveCgKKyAgICBWYWx1ZUZvcm1hdCBmb3Jt
YXQsIEdQUlJlZyBkZXN0aW5hdGlvbiwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIp
CiB7Ci0gICAgaWYgKHNjcmF0Y2ggPT0gSW52YWxpZEdQUlJlZykgeworICAgIGlmIChzY3JhdGNo
MSA9PSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAgIEFTU0VSVChzY3JhdGNoMiA9PSBJbnZhbGlk
R1BSUmVnKTsKICAgICAgICAgaWYgKGRlc3RpbmF0aW9uID09IEdQUkluZm86Om5vbkFyZ0dQUjAp
Ci0gICAgICAgICAgICBzY3JhdGNoID0gR1BSSW5mbzo6bm9uQXJnR1BSMTsKKyAgICAgICAgICAg
IHNjcmF0Y2gxID0gR1BSSW5mbzo6bm9uQXJnR1BSMTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc2NyYXRjaCA9IEdQUkluZm86Om5vbkFyZ0dQUjA7CisgICAgICAgICAgICBzY3JhdGNoMSA9
IEdQUkluZm86Om5vbkFyZ0dQUjA7CisgICAgfQorICAgIGlmIChzY3JhdGNoMiA9PSBJbnZhbGlk
R1BSUmVnKSB7CisgICAgICAgIGlmIChkZXN0aW5hdGlvbiAhPSBHUFJJbmZvOjpub25BcmdHUFIw
ICYmIHNjcmF0Y2gxICE9IEdQUkluZm86Om5vbkFyZ0dQUjApCisgICAgICAgICAgICBzY3JhdGNo
MiA9IEdQUkluZm86Om5vbkFyZ0dQUjA7CisgICAgICAgIGVsc2UgaWYgKGRlc3RpbmF0aW9uICE9
IEdQUkluZm86Om5vbkFyZ0dQUjEgJiYgc2NyYXRjaDEgIT0gR1BSSW5mbzo6bm9uQXJnR1BSMSkK
KyAgICAgICAgICAgIHNjcmF0Y2gyID0gR1BSSW5mbzo6bm9uQXJnR1BSMTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgc2NyYXRjaDIgPSBHUFJJbmZvOjpub25BcmdHUFIyOwogICAgIH0KICAg
ICAKICAgICBzd2l0Y2ggKGZvcm1hdCkgewpAQCAtNTAsMjEgKzYwLDI2IEBAIHZvaWQgQ0FyZ3Vt
ZW50R2V0dGVyOjpsb2FkTmV4dEFuZEJveChWYWwKICAgICAgICAgICAgIAogICAgIGNhc2UgVmFs
dWVGb3JtYXRVSW50MzI6IHsKICAgICAgICAgbG9hZE5leHQzMihkZXN0aW5hdGlvbik7Ci0gICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzSW50ID0gbV9qaXQuYnJhbmNoMzIoCi0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW5PckVxdWFsLAotICAgICAgICAgICAgZGVz
dGluYXRpb24sIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCkpOwotICAgICAgICAgICAg
Ci0gICAgICAgIG1faml0Lm1vdmVEb3VibGVUbzY0KEZQUkluZm86OmZwUmVnVDAsIHNjcmF0Y2gp
OwotICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShkZXN0aW5hdGlvbiwgRlBSSW5m
bzo6ZnBSZWdUMCk7Ci0gICAgICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBk
ZXN0aW5hdGlvbik7Ci0gICAgICAgIG1faml0Lm1vdmU2NFRvRG91YmxlKHNjcmF0Y2gsIEZQUklu
Zm86OmZwUmVnVDApOwotICAgICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgaXNJbnQubGluaygm
bV9qaXQpOwotICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwgZGVzdGluYXRpb24pOworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlVG82NChGUFJJbmZvOjpm
cFJlZ1QwLCBzY3JhdGNoMik7CisgICAgICAgIG1faml0LmJveEludDUyKGRlc3RpbmF0aW9uLCBk
ZXN0aW5hdGlvbiwgc2NyYXRjaDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICBtX2ppdC5t
b3ZlNjRUb0RvdWJsZShzY3JhdGNoMiwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBWYWx1ZUZvcm1hdEludDUyOiB7CisgICAgICAg
IGxvYWROZXh0NjQoZGVzdGluYXRpb24pOworICAgICAgICBtX2ppdC5yc2hpZnQ2NChBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgZGVzdGlu
YXRpb24pOworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlVG82NChGUFJJbmZvOjpmcFJlZ1QwLCBz
Y3JhdGNoMik7CisgICAgICAgIG1faml0LmJveEludDUyKGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlv
biwgc2NyYXRjaDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICBtX2ppdC5tb3ZlNjRUb0Rv
dWJsZShzY3JhdGNoMiwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICAgICAgICAgIAotICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICBjYXNlIFZhbHVl
Rm9ybWF0U3RyaWN0SW50NTI6IHsKKyAgICAgICAgbG9hZE5leHQ2NChkZXN0aW5hdGlvbik7Cisg
ICAgICAgIG1faml0Lm1vdmVEb3VibGVUbzY0KEZQUkluZm86OmZwUmVnVDAsIHNjcmF0Y2gyKTsK
KyAgICAgICAgbV9qaXQuYm94SW50NTIoZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLCBzY3JhdGNo
MSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgIG1faml0Lm1vdmU2NFRvRG91YmxlKHNjcmF0
Y2gyLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAg
ICAgCkBAIC04MCwxMCArOTUsMTAgQEAgdm9pZCBDQXJndW1lbnRHZXR0ZXI6OmxvYWROZXh0QW5k
Qm94KFZhbAogICAgIH0KICAgICAgICAgICAgIAogICAgIGNhc2UgVmFsdWVGb3JtYXREb3VibGU6
IHsKLSAgICAgICAgbV9qaXQubW92ZURvdWJsZVRvNjQoRlBSSW5mbzo6ZnBSZWdUMCwgc2NyYXRj
aCk7CisgICAgICAgIG1faml0Lm1vdmVEb3VibGVUbzY0KEZQUkluZm86OmZwUmVnVDAsIHNjcmF0
Y2gxKTsKICAgICAgICAgbG9hZE5leHREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAg
IG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBkZXN0aW5hdGlvbik7Ci0gICAgICAg
IG1faml0Lm1vdmU2NFRvRG91YmxlKHNjcmF0Y2gsIEZQUkluZm86OmZwUmVnVDApOworICAgICAg
ICBtX2ppdC5tb3ZlNjRUb0RvdWJsZShzY3JhdGNoMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDQXJndW1lbnRHZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENBcmd1bWVudEdldHRlci5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENBcmd1bWVudEdldHRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTUsNyArMTE1LDggQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB2b2lkIGxv
YWROZXh0QW5kQm94KAotICAgICAgICBWYWx1ZUZvcm1hdCBmb3JtYXQsIERGRzo6R1BSUmVnIGRl
c3RpbmF0aW9uLCBERkc6OkdQUlJlZyBzY3JhdGNoID0gSW52YWxpZEdQUlJlZyk7CisgICAgICAg
IFZhbHVlRm9ybWF0LCBERkc6OkdQUlJlZyBkZXN0aW5hdGlvbiwKKyAgICAgICAgREZHOjpHUFJS
ZWcgc2NyYXRjaDEgPSBJbnZhbGlkR1BSUmVnLCBERkc6OkdQUlJlZyBzY3JhdGNoMiA9IEludmFs
aWRHUFJSZWcpOwogCiBwcml2YXRlOgogICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIG5leHRB
ZGRyZXNzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw4IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbXBhcmVT
dHJpY3RFcToKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkpCiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNo
aW5lSW50VXNlKSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE51bWJlclVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpKQpAQCAtMTc1LDYgKzE3Nyw4IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENvbXBhcmVHcmVh
dGVyRXE6CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKQogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGlu
ZUludFVzZSkpCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChOdW1iZXJVc2UpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHJldHVybiBD
YW5ub3RDb21waWxlOwpAQCAtMjM2LDYgKzI0MCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAg
ICAgICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgICAgICAgICBjYXNlIEtub3duSW50
MzJVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgogICAgICAgICAgICAg
ICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25OdW1iZXJVc2U6
CiAgICAgICAgICAgICAgICAgY2FzZSBSZWFsTnVtYmVyVXNlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmNwcAkocmV2aXNpb24gMTU1OTAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw2ICs1Myw5IEBAIHZvaWQgRXhpdFZhbHVlOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWEK
ICAgICBjYXNlIEV4aXRWYWx1ZUluSlNTdGFja0FzSW50MzI6CiAgICAgICAgIG91dC5wcmludCgi
SW5KU1N0YWNrQXNJbnQzMiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBFeGl0VmFsdWVJ
bkpTU3RhY2tBc0ludDUyOgorICAgICAgICBvdXQucHJpbnQoIkluSlNTdGFja0FzSW50NTIiKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRXhpdFZhbHVlSW5KU1N0YWNrQXNEb3VibGU6CiAg
ICAgICAgIG91dC5wcmludCgiSW5KU1N0YWNrQXNEb3VibGUiKTsKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5oCShyZXZpc2lvbiAx
NTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIGVudW0gRXhpdFZhbHVlS2luZCB7CiAgICAgRXhp
dFZhbHVlQ29uc3RhbnQsCiAgICAgRXhpdFZhbHVlSW5KU1N0YWNrLAogICAgIEV4aXRWYWx1ZUlu
SlNTdGFja0FzSW50MzIsCisgICAgRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQ1MiwKICAgICBFeGl0
VmFsdWVJbkpTU3RhY2tBc0RvdWJsZQogfTsKIApAQCAtODIsNiArODMsMTMgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgRXhpdFZhbHVl
IGluSlNTdGFja0FzSW50NTIoKQorICAgIHsKKyAgICAgICAgRXhpdFZhbHVlIHJlc3VsdDsKKyAg
ICAgICAgcmVzdWx0Lm1fa2luZCA9IEV4aXRWYWx1ZUluSlNTdGFja0FzSW50NTI7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIHN0YXRpYyBFeGl0VmFsdWUgaW5KU1N0
YWNrQXNEb3VibGUoKQogICAgIHsKICAgICAgICAgRXhpdFZhbHVlIHJlc3VsdDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5o
CShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJp
bnNpY1JlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsMTIgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiAjZGVmaW5lIEZPUl9FQUNIX0ZUTF9JTlRSSU5T
SUMobWFjcm8pIFwKICAgICBtYWNybyhhZGRXaXRoT3ZlcmZsb3czMiwgImxsdm0uc2FkZC53aXRo
Lm92ZXJmbG93LmkzMiIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50MzIs
IGJvb2xlYW4pLCBpbnQzMiwgaW50MzIpKSBcCisgICAgbWFjcm8oYWRkV2l0aE92ZXJmbG93NjQs
ICJsbHZtLnNhZGQud2l0aC5vdmVyZmxvdy5pNjQiLCBmdW5jdGlvblR5cGUoc3RydWN0VHlwZSht
X2NvbnRleHQsIGludDY0LCBib29sZWFuKSwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKGRv
dWJsZUFicywgImxsdm0uZmFicy5mNjQiLCBmdW5jdGlvblR5cGUoZG91YmxlVHlwZSwgZG91Ymxl
VHlwZSkpIFwKICAgICBtYWNybyhtdWxXaXRoT3ZlcmZsb3czMiwgImxsdm0uc211bC53aXRoLm92
ZXJmbG93LmkzMiIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50MzIsIGJv
b2xlYW4pLCBpbnQzMiwgaW50MzIpKSBcCisgICAgbWFjcm8obXVsV2l0aE92ZXJmbG93NjQsICJs
bHZtLnNtdWwud2l0aC5vdmVyZmxvdy5pNjQiLCBmdW5jdGlvblR5cGUoc3RydWN0VHlwZShtX2Nv
bnRleHQsIGludDY0LCBib29sZWFuKSwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKHN1Yldp
dGhPdmVyZmxvdzMyLCAibGx2bS5zc3ViLndpdGgub3ZlcmZsb3cuaTMyIiwgZnVuY3Rpb25UeXBl
KHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQzMiwgYm9vbGVhbiksIGludDMyLCBpbnQzMikpIFwK
KyAgICBtYWNybyhzdWJXaXRoT3ZlcmZsb3c2NCwgImxsdm0uc3N1Yi53aXRoLm92ZXJmbG93Lmk2
NCIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50NjQsIGJvb2xlYW4pLCBp
bnQ2NCwgaW50NjQpKSBcCiAgICAgbWFjcm8odHJhcCwgImxsdm0udHJhcCIsIGZ1bmN0aW9uVHlw
ZSh2b2lkVHlwZSkpIFwKICAgICBtYWNybyhvc3JFeGl0LCAid2Via2l0X29zcl9leGl0IiwgZnVu
Y3Rpb25UeXBlKHZvaWRUeXBlLCBib29sZWFuLCBpbnQzMiwgVmFyaWFkaWMpKQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2
aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsOSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgogICAgICAgICAgICAgICAgICAgICB0
eXBlID0gbV9vdXQuaW50MzI7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDUyOgorICAgICAgICAgICAgICAgICAgICB0eXBlID0g
bV9vdXQuaW50NjQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IGNhc2UgTm9kZVJlc3VsdEJvb2xlYW46CiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBtX291
dC5ib29sZWFuOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIzOSw3ICsyNDIsNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZVBoaSgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgSlNDb25zdGFudDoKLSAgICAgICAgICAgIGNvbXBpbGVKU0NvbnN0YW50
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWFrSlNDb25zdGFudDoKICAg
ICAgICAgICAgIGNvbXBpbGVXZWFrSlNDb25zdGFudCgpOwpAQCAtNDYxLDYgKzQ2Myw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgICAgICBtX291dC5zZXQobG93
SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBtX291dC5zZXQobG93
SW50NTIobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBtX291dC5zZXQobG93Qm9v
bGVhbihtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC00ODcsNiArNDkyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50
MzI6CiAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5nZXQoc291cmNlKSk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50NTI6CisgICAgICAgICAgICBzZXRJ
bnQ1MihtX291dC5nZXQoc291cmNlKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBOb2RlUmVzdWx0Qm9vbGVhbjoKICAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQuZ2V0KHNv
dXJjZSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01OTEsNiArNTk5LDEzIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBj
YXNlIEZsdXNoZWRJbnQ1MjogeworICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SW50NTIo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlLCBhZGRy
ZXNzRm9yKHZhcmlhYmxlLT5sb2NhbCgpKSk7CisgICAgICAgICAgICBtX3ZhbHVlU291cmNlcy5v
cGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9IFZhbHVlU291cmNlKEludDUySW5KU1N0YWNrKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgRmx1c2hlZENlbGw6IHsKICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlLCBhZGRyZXNz
Rm9yKHZhcmlhYmxlLT5sb2NhbCgpKSk7CkBAIC02NTUsNiArNjcwLDI0IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
TWFjaGluZUludFVzZTogeworICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobV9ub2Rl
LT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKQorICAgICAgICAgICAgICAgICYmICFt
X3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDIoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKSkg
eworICAgICAgICAgICAgICAgIEludDUyS2luZCBraW5kOworICAgICAgICAgICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CisgICAg
ICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9ub2RlLT5jaGlsZDIoKSwga2lu
ZCk7CisgICAgICAgICAgICAgICAgc2V0SW50NTIobV9vdXQuYWRkKGxlZnQsIHJpZ2h0KSwga2lu
ZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ1MihtX25vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5hZGRXaXRoT3ZlcmZsb3c2NChsZWZ0LCBy
aWdodCk7CisgICAgICAgICAgICBzcGVjdWxhdGUoSW50NTJPdmVyZmxvdywgbm9WYWx1ZSgpLCAw
LCBtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAxKSk7CisgICAgICAgICAgICBzZXRJbnQ1Miht
X291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAwKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTnVtYmVyVXNlOiB7CiAgICAgICAgICAg
ICBzZXREb3VibGUoCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlQWRkKGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CkBAIC02ODUs
NiArNzE4LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgICAgICAgICAgaWYg
KCFtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDUy
KQorICAgICAgICAgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDIoKSku
Y291bGRCZVR5cGUoU3BlY0ludDUyKSkgeworICAgICAgICAgICAgICAgIEludDUyS2luZCBraW5k
OworICAgICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2Rl
LT5jaGlsZDEoKSwga2luZCk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50
NTIobV9ub2RlLT5jaGlsZDIoKSwga2luZCk7CisgICAgICAgICAgICAgICAgc2V0SW50NTIobV9v
dXQuc3ViKGxlZnQsIHJpZ2h0KSwga2luZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SW50
NTIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ1
MihtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5z
dWJXaXRoT3ZlcmZsb3c2NChsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBzcGVjdWxhdGUoSW50
NTJPdmVyZmxvdywgbm9WYWx1ZSgpLCAwLCBtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAxKSk7
CisgICAgICAgICAgICBzZXRJbnQ1MihtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAwKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
TnVtYmVyVXNlOiB7CiAgICAgICAgICAgICBzZXREb3VibGUoCiAgICAgICAgICAgICAgICAgbV9v
dXQuZG91YmxlU3ViKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9k
ZS0+Y2hpbGQyKCkpKSk7CkBAIC03MzAsNiArNzgxLDMyIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTWFjaGluZUlu
dFVzZTogeworICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CisgICAgICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQpOworICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9ub2RlLT5jaGlsZDIoKSwgb3Bwb3NpdGUo
a2luZCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMVmFsdWUgb3ZlcmZsb3dSZXN1bHQg
PSBtX291dC5tdWxXaXRoT3ZlcmZsb3c2NChsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBzcGVj
dWxhdGUoSW50NTJPdmVyZmxvdywgbm9WYWx1ZSgpLCAwLCBtX291dC5leHRyYWN0VmFsdWUob3Zl
cmZsb3dSZXN1bHQsIDEpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5leHRy
YWN0VmFsdWUob3ZlcmZsb3dSZXN1bHQsIDApOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG1fbm9kZS0+YXJpdGhOb2RlRmxhZ3Mo
KSkpIHsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IEZUTF9ORVdfQkxP
Q0sobV9vdXQsICgiQXJpdGhNdWwgc2xvdyBjYXNlIikpOworICAgICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhNdWwgY29u
dGludWF0aW9uIikpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1fb3V0LmJy
YW5jaChtX291dC5ub3RaZXJvNjQocmVzdWx0KSwgY29udGludWF0aW9uLCBzbG93Q2FzZSk7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIDAsIG1fb3V0Lmxlc3NUaGFuKGxlZnQs
IG1fb3V0LmludDY0WmVybykpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZVpl
cm8sIG5vVmFsdWUoKSwgMCwgbV9vdXQubGVzc1RoYW4ocmlnaHQsIG1fb3V0LmludDY0WmVybykp
OworICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2V0SW50NTIocmVzdWx0KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOdW1iZXJV
c2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZSgKICAgICAgICAgICAgICAgICBtX291dC5kb3Vi
bGVNdWwobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGls
ZDIoKSkpKTsKQEAgLTEwMzAsNiArMTEwNywyNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6
IHsKKyAgICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLmNv
dWxkQmVUeXBlKFNwZWNJbnQ1MikpIHsKKyAgICAgICAgICAgICAgICBJbnQ1MktpbmQga2luZDsK
KyAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUt
PmNoaWxkMSgpLCBraW5kKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQu
bmVnKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRp
dmVaZXJvKG1fbm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpCisgICAgICAgICAgICAgICAgICAgIHNw
ZWN1bGF0ZShOZWdhdGl2ZVplcm8sIG5vVmFsdWUoKSwgMCwgbV9vdXQuaXNaZXJvNjQocmVzdWx0
KSk7CisgICAgICAgICAgICAgICAgc2V0SW50NTIocmVzdWx0LCBraW5kKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgTFZh
bHVlIHZhbHVlID0gbG93SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFs
dWUgb3ZlcmZsb3dSZXN1bHQgPSBtX291dC5zdWJXaXRoT3ZlcmZsb3c2NChtX291dC5pbnQ2NFpl
cm8sIHZhbHVlKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShJbnQ1Mk92ZXJmbG93LCBub1ZhbHVl
KCksIDAsIG1fb3V0LmV4dHJhY3RWYWx1ZShvdmVyZmxvd1Jlc3VsdCwgMSkpOworICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmV4dHJhY3RWYWx1ZShvdmVyZmxvd1Jlc3VsdCwgMCk7
CisgICAgICAgICAgICBzcGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIDAsIG1fb3V0
LmlzWmVybzY0KHJlc3VsdCkpOworICAgICAgICAgICAgc2V0SW50NTIocmVzdWx0KTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOdW1i
ZXJVc2U6IHsKICAgICAgICAgICAgIHNldERvdWJsZShtX291dC5kb3VibGVOZWcobG93RG91Ymxl
KG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NzEsNyArMTU2
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91Ymxl
KGNoaWxkMyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgRlRMX1RZUEVfQ0hF
Q0soCi0gICAgICAgICAgICAgICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgY2hpbGQzLCBTcGVj
UmVhbE51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBjaGls
ZDMsIFNwZWNGdWxsUmVhbE51bWJlciwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZG91Ymxl
Tm90RXF1YWxPclVub3JkZXJlZCh2YWx1ZSwgdmFsdWUpKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBUeXBlZFBvaW50ZXIgZWxlbWVudFBvaW50ZXIgPSBtX291dC5iYXNlSW5k
ZXgoCkBAIC0xNzA2LDYgKzE4MDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUNvbXBh
cmVFcSgpCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJV
c2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNl
KQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKQogICAg
ICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSkgewogICAgICAg
ICAgICAgY29tcGlsZUNvbXBhcmVTdHJpY3RFcSgpOwpAQCAtMTczMiw2ICsxODMwLDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAg
IGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNYWNoaW5lSW50VXNlKSkgeworICAgICAgICAg
ICAgSW50NTJLaW5kIGtpbmQ7CisgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZl
ckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93SW50NTIobV9ub2RlLT5jaGlsZDIoKSwga2luZCk7CisgICAgICAgICAgICBzZXRCb29s
ZWFuKG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1i
ZXJVc2UpKSB7CiAgICAgICAgICAgICBzZXRCb29sZWFuKAogICAgICAgICAgICAgICAgIG1fb3V0
LmRvdWJsZUVxdWFsKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbG93RG91YmxlKG1fbm9k
ZS0+Y2hpbGQyKCkpKSk7CkBAIC0xNzgwLDYgKzE4ODYsMTQgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKE1hY2hpbmVJbnRVc2UpKSB7CisgICAgICAgICAgICBJbnQ1MktpbmQga2lu
ZDsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5j
aGlsZDEoKSwga2luZCk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ1MihtX25v
ZGUtPmNoaWxkMigpLCBraW5kKTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQubGVzc1Ro
YW4obGVmdCwgcmlnaHQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICAKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKICAg
ICAgICAgICAgIHNldEJvb2xlYW4oCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTGVzc1Ro
YW4obG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDIo
KSkpKTsKQEAgLTE3OTcsNiArMTkxMSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoTWFjaGluZUludFVzZSkpIHsKKyAgICAgICAgICAgIEludDUyS2luZCBraW5kOworICAgICAg
ICAgICAgTFZhbHVlIGxlZnQgPSBsb3dXaGljaGV2ZXJJbnQ1MihtX25vZGUtPmNoaWxkMSgpLCBr
aW5kKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQy
KCksIGtpbmQpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5sZXNzVGhhbk9yRXF1YWwo
bGVmdCwgcmlnaHQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE51bWJlclVzZSkpIHsKICAgICAg
ICAgICAgIHNldEJvb2xlYW4oCiAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTGVzc1RoYW5P
ckVxdWFsKApAQCAtMTgxNSw2ICsxOTM3LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChNYWNoaW5lSW50VXNlKSkgeworICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CisgICAg
ICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCks
IGtpbmQpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9ub2RlLT5jaGls
ZDIoKSwga2luZCk7CisgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0LmdyZWF0ZXJUaGFuKGxl
ZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAg
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOdW1iZXJVc2UpKSB7CiAgICAgICAg
ICAgICBzZXRCb29sZWFuKAogICAgICAgICAgICAgICAgIG1fb3V0LmRvdWJsZUdyZWF0ZXJUaGFu
KApAQCAtMTgzNCw2ICsxOTY0LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChN
YWNoaW5lSW50VXNlKSkgeworICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CisgICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQp
OworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9ub2RlLT5jaGlsZDIoKSwg
a2luZCk7CisgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0LmdyZWF0ZXJUaGFuT3JFcXVhbChs
ZWZ0LCByaWdodCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAog
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgewogICAgICAg
ICAgICAgc2V0Qm9vbGVhbigKICAgICAgICAgICAgICAgICBtX291dC5kb3VibGVHcmVhdGVyVGhh
bk9yRXF1YWwoCkBAIC0yMzUwLDEwICsyNDg4LDI3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAg
ICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8
IChlZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBLbm93bklu
dDMyVXNlKSk7CiAgICAgICAgIAorICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkgewor
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRn
ZS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAg
ICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOworICAgICAgICAgICAgICAgIHJldHVybiBt
X291dC5pbnQzMlplcm87CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbV9vdXQu
Y29uc3RJbnQzMih2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICB9CisgICAgICAgIAogICAgICAg
ICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9pbnQzMlZhbHVlcy5nZXQoZWRnZS5ub2RlKCkp
OwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUu
dmFsdWUoKTsKICAgICAgICAgCisgICAgICAgIHZhbHVlID0gbV9zdHJpY3RJbnQ1MlZhbHVlcy5n
ZXQoZWRnZS5ub2RlKCkpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAgICAgICAg
ICByZXR1cm4gc3RyaWN0SW50NTJUb0ludDMyKGVkZ2UsIHZhbHVlLnZhbHVlKCkpOworICAgICAg
ICAKKyAgICAgICAgdmFsdWUgPSBtX2ludDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAg
ICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ1MlRv
SW50MzIoZWRnZSwgaW50NTJUb1N0cmljdEludDUyKHZhbHVlLnZhbHVlKCkpKTsKKyAgICAgICAg
CiAgICAgICAgIHZhbHVlID0gbV9qc1ZhbHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAg
ICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgewogICAgICAgICAgICAgTFZhbHVlIGJveGVkUmVzdWx0
ID0gdmFsdWUudmFsdWUoKTsKQEAgLTIzNjksMTAgKzI1MjQsMTIyIEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiBtX291dC5pbnQzMlplcm87CiAgICAgfQogICAgIAorICAgIGVudW0gSW50NTJL
aW5kIHsgU3RyaWN0SW50NTIsIEludDUyIH07CisgICAgTFZhbHVlIGxvd0ludDUyKEVkZ2UgZWRn
ZSwgSW50NTJLaW5kIGtpbmQsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRp
Y09wZXJhbmRTcGVjdWxhdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwg
bW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gTWFj
aGluZUludFVzZSk7CisgICAgICAgIAorICAgICAgICBpZiAoZWRnZS0+aGFzQ29uc3RhbnQoKSkg
eworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQo
ZWRnZS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc01hY2hpbmVJbnQoKSkgewor
ICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1fb3V0LmludDY0WmVybzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludDY0
X3QgcmVzdWx0ID0gdmFsdWUuYXNNYWNoaW5lSW50KCk7CisgICAgICAgICAgICBpZiAoa2luZCA9
PSBJbnQ1MikKKyAgICAgICAgICAgICAgICByZXN1bHQgPDw9IEpTVmFsdWU6OmludDUyU2hpZnRB
bW91bnQ7CisgICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQ2NChyZXN1bHQpOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlOworICAgICAg
ICAKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgSW50NTI6CisgICAgICAg
ICAgICB2YWx1ZSA9IG1faW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAg
IGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUo
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDUyVmFsdWVz
LmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDUyVG9JbnQ1Mih2YWx1ZS52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgU3RyaWN0SW50NTI6
CisgICAgICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgp
KTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdmFsdWUudmFsdWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFsdWUgPSBtX2lu
dDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoaXNWYWxpZCh2YWx1
ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGludDUyVG9TdHJpY3RJbnQ1Mih2YWx1ZS52YWx1
ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2
YWx1ZSA9IG1faW50MzJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgaWYgKGlzVmFs
aWQodmFsdWUpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0SW50NTJXaXRoU3RyaWN0VmFsdWUo
CisgICAgICAgICAgICAgICAgZWRnZS5ub2RlKCksIG1fb3V0LnNpZ25FeHQodmFsdWUudmFsdWUo
KSwgbV9vdXQuaW50NjQpLCBraW5kKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIShtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgU3BlY0ludDUyKSk7
CisgICAgICAgIAorICAgICAgICB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2Rl
KCkpOworICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBi
b3hlZFJlc3VsdCA9IHZhbHVlLnZhbHVlKCk7CisgICAgICAgICAgICBGVExfVFlQRV9DSEVDSygK
KyAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoYm94ZWRSZXN1bHQpLCBlZGdlLCBTcGVjTWFj
aGluZUludCwgaXNOb3RJbnQzMihib3hlZFJlc3VsdCkpOworICAgICAgICAgICAgcmV0dXJuIHNl
dEludDUyV2l0aFN0cmljdFZhbHVlKAorICAgICAgICAgICAgICAgIGVkZ2Uubm9kZSgpLCBtX291
dC5zaWduRXh0KHVuYm94SW50MzIoYm94ZWRSZXN1bHQpLCBtX291dC5pbnQ2NCksIGtpbmQpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fc3RhdGUuZm9y
Tm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjTWFjaGluZUludCkpOworICAgICAgICB0ZXJtaW5hdGUo
VW5jb3VudGFibGUpOworICAgICAgICByZXR1cm4gbV9vdXQuaW50NjRaZXJvOworICAgIH0KKyAg
ICAKKyAgICBMVmFsdWUgbG93SW50NTIoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2Rl
IG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAgICByZXR1
cm4gbG93SW50NTIoZWRnZSwgSW50NTIsIG1vZGUpOworICAgIH0KKyAgICAKKyAgICBMVmFsdWUg
bG93U3RyaWN0SW50NTIoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBB
dXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gbG93SW50
NTIoZWRnZSwgU3RyaWN0SW50NTIsIG1vZGUpOworICAgIH0KKyAgICAKKyAgICBib29sIGJldHRl
clVzZVN0cmljdEludDUyKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gIWlzVmFs
aWQobV9pbnQ1MlZhbHVlcy5nZXQobm9kZSkpOworICAgIH0KKyAgICBib29sIGJldHRlclVzZVN0
cmljdEludDUyKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBiZXR0ZXJVc2VTdHJp
Y3RJbnQ1MihlZGdlLm5vZGUoKSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgSW50NTJLaW5kIGJlc3RJbnQ1MktpbmQoVCBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJldHRlclVzZVN0cmljdEludDUyKG5vZGUpID8gU3RyaWN0SW50NTIgOiBJbnQ1MjsKKyAgICB9
CisgICAgSW50NTJLaW5kIG9wcG9zaXRlKEludDUyS2luZCBraW5kKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgSW50NTI6CisgICAgICAgICAgICByZXR1cm4g
U3RyaWN0SW50NTI7CisgICAgICAgIGNhc2UgU3RyaWN0SW50NTI6CisgICAgICAgICAgICByZXR1
cm4gSW50NTI7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisgICAgCisgICAgTFZhbHVlIGxvd1doaWNoZXZlckludDUyKEVkZ2UgZWRnZSwg
SW50NTJLaW5kJiBraW5kLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNP
cGVyYW5kU3BlY3VsYXRpb24pCisgICAgeworICAgICAgICBraW5kID0gYmVzdEludDUyS2luZChl
ZGdlKTsKKyAgICAgICAgcmV0dXJuIGxvd0ludDUyKGVkZ2UsIGtpbmQsIG1vZGUpOworICAgIH0K
KyAgICAKICAgICBMVmFsdWUgbG93Q2VsbChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1v
ZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikKICAgICB7CiAgICAgICAgIEFT
U0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgaXND
ZWxsKGVkZ2UudXNlS2luZCgpKSk7CiAgICAgICAgIAorICAgICAgICBpZiAoZWRnZS0+b3AoKSA9
PSBKU0NvbnN0YW50KSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC52YWx1
ZU9mSlNDb25zdGFudChlZGdlLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2Vs
bCgpKSB7CisgICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbV9vdXQuaW50UHRyWmVybzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiBtX291dC5jb25zdEludFB0cih2YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgIH0K
KyAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1
ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CiAgICAg
ICAgICAgICBMVmFsdWUgdW5jaGVja2VkVmFsdWUgPSB2YWx1ZS52YWx1ZSgpOwpAQCAtMjQxNyw2
ICsyNjg0LDE1IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUs
IG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IEJv
b2xlYW5Vc2UpOwogICAgICAgICAKKyAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsK
KyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KGVk
Z2Uubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNCb29sZWFuKCkpIHsKKyAgICAg
ICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOworICAgICAgICAgICAgICAgIHJldHVy
biBtX291dC5ib29sZWFuRmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
bV9vdXQuY29uc3RCb29sKHZhbHVlLmFzQm9vbGVhbigpKTsKKyAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1fYm9vbGVhblZhbHVlcy5nZXQoZWRn
ZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gdmFsdWUudmFsdWUoKTsKQEAgLTI0NDAsNiArMjcxNiwxNSBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbiB8fCBpc0RvdWJsZShlZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICAKKyAgICAgICAgaWYg
KGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dy
YXBoLnZhbHVlT2ZKU0NvbnN0YW50KGVkZ2Uubm9kZSgpKTsKKyAgICAgICAgICAgIGlmICghdmFs
dWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShVbmNvdW50YWJsZSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmRvdWJsZVplcm87CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3REb3VibGUodmFsdWUuYXNOdW1iZXIoKSk7
CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBt
X2RvdWJsZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1
ZSkpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUoKTsKQEAgLTI0NTEsNiArMjczNiwx
NCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAg
ICAgICAKKyAgICAgICAgdmFsdWUgPSBtX3N0cmljdEludDUyVmFsdWVzLmdldChlZGdlLm5vZGUo
KSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJp
Y3RJbnQ1MlRvRG91YmxlKGVkZ2UsIHZhbHVlLnZhbHVlKCkpOworICAgICAgICAKKyAgICAgICAg
dmFsdWUgPSBtX2ludDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlmIChpc1Zh
bGlkKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ1MlRvRG91YmxlKGVkZ2Us
IGludDUyVG9TdHJpY3RJbnQ1Mih2YWx1ZS52YWx1ZSgpKSk7CisgICAgICAgIAogICAgICAgICB2
YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwogICAgICAgICBpZiAoaXNW
YWxpZCh2YWx1ZSkpIHsKICAgICAgICAgICAgIExWYWx1ZSBib3hlZFJlc3VsdCA9IHZhbHVlLnZh
bHVlKCk7CkBAIC0yNDcwLDcgKzI3NjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVk
UmVzdWx0KSwgZWRnZSwgU3BlY051bWJlciwgaXNDZWxsT3JNaXNjKGJveGVkUmVzdWx0KSk7Cisg
ICAgICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY0Z1bGxO
dW1iZXIsIGlzQ2VsbE9yTWlzYyhib3hlZFJlc3VsdCkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayB1bmJveGVkRG91YmxlID0gbV9vdXQuYW5jaG9yKHVuYm94RG91
YmxlKGJveGVkUmVzdWx0KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CkBAIC0yNDgzLDcgKzI3NzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3N0YXRl
LmZvck5vZGUoZWRnZSkubV90eXBlICYgU3BlY051bWJlcikpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVCghKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiBTcGVjRnVsbE51bWJlcikpOwog
ICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAgICByZXR1cm4gbV9vdXQuZG91
YmxlWmVybzsKICAgICB9CkBAIC0yNDkyLDYgKzI3ODUsOSBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
biB8fCBlZGdlLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgCisgICAgICAgIGlm
IChlZGdlLT5oYXNDb25zdGFudCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50
NjQoSlNWYWx1ZTo6ZW5jb2RlKG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQoZWRnZS5ub2RlKCkp
KSk7CisgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9qc1ZhbHVl
VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkKICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZSgpOwpAQCAtMjUwMyw2ICsyNzk5LDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAor
ICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NTJWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKKyAg
ICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHN0cmljdEludDUy
VG9KU1ZhbHVlKHZhbHVlLnZhbHVlKCkpOworICAgICAgICAKKyAgICAgICAgdmFsdWUgPSBtX2lu
dDUyVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkK
KyAgICAgICAgICAgIHJldHVybiBzdHJpY3RJbnQ1MlRvSlNWYWx1ZShpbnQ1MlRvU3RyaWN0SW50
NTIodmFsdWUudmFsdWUoKSkpOworICAgICAgICAKICAgICAgICAgdmFsdWUgPSBtX2Jvb2xlYW5W
YWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CiAg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gYm94Qm9vbGVhbih2YWx1ZS52YWx1ZSgpKTsKQEAg
LTI1MzIsNiArMjgzNiw3NyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KICAgICAKKyAgICBMVmFsdWUgc3RyaWN0SW50NTJUb0ludDMyKEVkZ2UgZWRnZSwgTFZhbHVl
IHZhbHVlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmNhc3RUb0ludDMy
KHZhbHVlKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCisgICAgICAgICAgICBub1ZhbHVlKCks
IGVkZ2UsIFNwZWNJbnQzMiwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKG1fb3V0LnNpZ25F
eHQocmVzdWx0LCBtX291dC5pbnQ2NCksIHZhbHVlKSk7CisgICAgICAgIHNldEludDMyKGVkZ2Uu
bm9kZSgpLCByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAg
ICBMVmFsdWUgc3RyaWN0SW50NTJUb0RvdWJsZShFZGdlIGVkZ2UsIExWYWx1ZSB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5pbnRUb0RvdWJsZSh2YWx1ZSk7Cisg
ICAgICAgIHNldERvdWJsZShlZGdlLm5vZGUoKSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgCisgICAgTFZhbHVlIHN0cmljdEludDUyVG9KU1ZhbHVlKExWYWx1
ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzSW50MzIgPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoInN0cmljdEludDUyVG9KU1ZhbHVlIGlzSW50MzIgY2FzZSIpKTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgaXNEb3VibGUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoInN0cmljdElu
dDUyVG9KU1ZhbHVlIGlzRG91YmxlIGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgic3RyaWN0SW50NTJUb0pTVmFsdWUgY29u
dGludWF0aW9uIikpOworICAgICAgICAKKyAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJsb2NrLCAy
PiByZXN1bHRzOworICAgICAgICAgICAgCisgICAgICAgIExWYWx1ZSBpbnQzMlZhbHVlID0gbV9v
dXQuY2FzdFRvSW50MzIodmFsdWUpOworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAg
ICBtX291dC5lcXVhbChtX291dC5zaWduRXh0KGludDMyVmFsdWUsIG1fb3V0LmludDY0KSwgdmFs
dWUpLAorICAgICAgICAgICAgaXNJbnQzMiwgaXNEb3VibGUpOworICAgICAgICAKKyAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0ludDMyLCBpc0RvdWJsZSk7
CisgICAgICAgIAorICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoYm94SW50MzIo
aW50MzJWYWx1ZSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAg
ICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNEb3VibGUsIGNvbnRpbnVhdGlvbik7CisgICAg
ICAgIAorICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoYm94RG91YmxlKG1fb3V0
LmludFRvRG91YmxlKHZhbHVlKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7CisgICAgICAgIHJldHVybiBtX291dC5waGkobV9vdXQuaW50NjQsIHJlc3VsdHMpOworICAg
IH0KKyAgICAKKyAgICBMVmFsdWUgc2V0SW50NTJXaXRoU3RyaWN0VmFsdWUoTm9kZSogbm9kZSwg
TFZhbHVlIHZhbHVlLCBJbnQ1MktpbmQga2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoa2lu
ZCkgeworICAgICAgICBjYXNlIFN0cmljdEludDUyOgorICAgICAgICAgICAgc2V0U3RyaWN0SW50
NTIobm9kZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgSW50NTI6CisgICAgICAgICAgICB2YWx1ZSA9IHN0cmljdEludDUyVG9J
bnQ1Mih2YWx1ZSk7CisgICAgICAgICAgICBzZXRJbnQ1Mihub2RlLCB2YWx1ZSk7CisgICAgICAg
ICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIExW
YWx1ZSBzdHJpY3RJbnQ1MlRvSW50NTIoTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fb3V0LnNobCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjppbnQ1MlNoaWZ0
QW1vdW50KSk7CisgICAgfQorICAgIAorICAgIExWYWx1ZSBpbnQ1MlRvU3RyaWN0SW50NTIoTFZh
bHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmFTaHIodmFsdWUsIG1fb3V0
LmNvbnN0SW50NjQoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCkpOworICAgIH0KKyAgICAKICAg
ICBMVmFsdWUgaXNOb3RJbnQzMihMVmFsdWUganNWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBtX291dC5iZWxvdyhqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpOwpAQCAtMjc5Miw3ICszMTY3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0RvdWJs
ZShlZGdlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBkb3VibGVWYWx1
ZSh2YWx1ZSksIGVkZ2UsIFNwZWNSZWFsTnVtYmVyLAorICAgICAgICAgICAgZG91YmxlVmFsdWUo
dmFsdWUpLCBlZGdlLCBTcGVjRnVsbFJlYWxOdW1iZXIsCiAgICAgICAgICAgICBtX291dC5kb3Vi
bGVOb3RFcXVhbE9yVW5vcmRlcmVkKHZhbHVlLCB2YWx1ZSkpOwogICAgIH0KICAgICAKQEAgLTI4
MDAsNyArMzE3NSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBsb3dCb29sZWFuKGVkZ2Up
OwogICAgIH0KLQorICAgIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnRJc1N0aWxsVmFsaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZ3JhcGgubWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQobV9ub2RlLT5jb2RlT3JpZ2luKTsK
QEAgLTI5MzEsNiArMzMwNiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fdmFsdWVT
b3VyY2VzW2ldID0gVmFsdWVTb3VyY2UoSW50MzJJbkpTU3RhY2spOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50NTI6
CisgICAgICAgICAgICAgICAgbV92YWx1ZVNvdXJjZXNbaV0gPSBWYWx1ZVNvdXJjZShJbnQ1Mklu
SlNTdGFjayk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjYXNlIEZsdXNoZWREb3VibGU6CiAgICAgICAgICAgICAgICAgbV92YWx1ZVNvdXJj
ZXNbaV0gPSBWYWx1ZVNvdXJjZShEb3VibGVJbkpTU3RhY2spOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMzAzNCw2ICszNDEzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgSW50
MzJJbkpTU3RhY2s6CiAgICAgICAgICAgICAgICAgZXhpdC5tX3ZhbHVlc1tpXSA9IEV4aXRWYWx1
ZTo6aW5KU1N0YWNrQXNJbnQzMigpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBJbnQ1MkluSlNTdGFjazoKKyAgICAgICAgICAgICAgICBleGl0Lm1fdmFsdWVzW2ld
ID0gRXhpdFZhbHVlOjppbkpTU3RhY2tBc0ludDUyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIERvdWJsZUluSlNTdGFjazoKICAgICAgICAgICAgICAgICBleGl0
Lm1fdmFsdWVzW2ldID0gRXhpdFZhbHVlOjppbkpTU3RhY2tBc0RvdWJsZSgpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMzEzNyw2ICszNTE5LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHZhbHVlID0gbV9pbnQ1MlZh
bHVlcy5nZXQobm9kZSk7CisgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkgeworICAgICAgICAg
ICAgYWRkRXhpdEFyZ3VtZW50KGV4aXQsIGFyZ3VtZW50cywgaW5kZXgsIFZhbHVlRm9ybWF0SW50
NTIsIHZhbHVlLnZhbHVlKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB2YWx1ZSA9IG1fc3RyaWN0SW50NTJWYWx1ZXMuZ2V0KG5vZGUpOworICAg
ICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKKyAgICAgICAgICAgIGFkZEV4aXRBcmd1bWVudChl
eGl0LCBhcmd1bWVudHMsIGluZGV4LCBWYWx1ZUZvcm1hdFN0cmljdEludDUyLCB2YWx1ZS52YWx1
ZSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAg
dmFsdWUgPSBtX2Jvb2xlYW5WYWx1ZXMuZ2V0KG5vZGUpOwogICAgICAgICBpZiAoaXNWYWxpZCh2
YWx1ZSkpIHsKICAgICAgICAgICAgIGFkZEV4aXRBcmd1bWVudChleGl0LCBhcmd1bWVudHMsIGlu
ZGV4LCBWYWx1ZUZvcm1hdEJvb2xlYW4sIHZhbHVlLnZhbHVlKCkpOwpAQCAtMzI0MCw2ICszNjM0
LDI4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2ludDMyVmFsdWVzLnNldChub2RlLCBM
b3dlcmVkTm9kZVZhbHVlKHZhbHVlLCBtX2hpZ2hCbG9jaykpOwogICAgIH0KKyAgICB2b2lkIHNl
dEludDUyKE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1faW50NTJW
YWx1ZXMuc2V0KG5vZGUsIExvd2VyZWROb2RlVmFsdWUodmFsdWUsIG1faGlnaEJsb2NrKSk7Cisg
ICAgfQorICAgIHZvaWQgc2V0U3RyaWN0SW50NTIoTm9kZSogbm9kZSwgTFZhbHVlIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgbV9zdHJpY3RJbnQ1MlZhbHVlcy5zZXQobm9kZSwgTG93ZXJlZE5vZGVW
YWx1ZSh2YWx1ZSwgbV9oaWdoQmxvY2spKTsKKyAgICB9CisgICAgdm9pZCBzZXRJbnQ1MihOb2Rl
KiBub2RlLCBMVmFsdWUgdmFsdWUsIEludDUyS2luZCBraW5kKQorICAgIHsKKyAgICAgICAgc3dp
dGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgSW50NTI6CisgICAgICAgICAgICBzZXRJbnQ1Mihu
b2RlLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBTdHJpY3RJbnQ1MjoKKyAgICAgICAgICAgIHNldFN0cmljdEludDUyKG5vZGUsIHZhbHVl
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAgICAgdm9pZCBzZXRKU1ZhbHVlKE5v
ZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1fanNWYWx1ZVZhbHVlcy5z
ZXQobm9kZSwgTG93ZXJlZE5vZGVWYWx1ZSh2YWx1ZSwgbV9oaWdoQmxvY2spKTsKQEAgLTMyNjEs
NiArMzY3NywxOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgc2V0SW50MzIobV9ub2RlLCB2
YWx1ZSk7CiAgICAgfQorICAgIHZvaWQgc2V0SW50NTIoTFZhbHVlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgc2V0SW50NTIobV9ub2RlLCB2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgc2V0U3RyaWN0
SW50NTIoTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0U3RyaWN0SW50NTIobV9ub2Rl
LCB2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgc2V0SW50NTIoTFZhbHVlIHZhbHVlLCBJbnQ1Mktp
bmQga2luZCkKKyAgICB7CisgICAgICAgIHNldEludDUyKG1fbm9kZSwgdmFsdWUsIGtpbmQpOwor
ICAgIH0KICAgICB2b2lkIHNldEpTVmFsdWUoTFZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAg
c2V0SlNWYWx1ZShtX25vZGUsIHZhbHVlKTsKQEAgLTMzNDAsNiArMzc2OCw4IEBAIHByaXZhdGU6
CiAgICAgTFZhbHVlIG1fdGFnTWFzazsKICAgICAKICAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVk
Tm9kZVZhbHVlPiBtX2ludDMyVmFsdWVzOworICAgIEhhc2hNYXA8Tm9kZSosIExvd2VyZWROb2Rl
VmFsdWU+IG1fc3RyaWN0SW50NTJWYWx1ZXM7CisgICAgSGFzaE1hcDxOb2RlKiwgTG93ZXJlZE5v
ZGVWYWx1ZT4gbV9pbnQ1MlZhbHVlczsKICAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZh
bHVlPiBtX2pzVmFsdWVWYWx1ZXM7CiAgICAgSGFzaE1hcDxOb2RlKiwgTG93ZXJlZE5vZGVWYWx1
ZT4gbV9ib29sZWFuVmFsdWVzOwogICAgIEhhc2hNYXA8Tm9kZSosIExvd2VyZWROb2RlVmFsdWU+
IG1fc3RvcmFnZVZhbHVlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NS
RXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA0LDYgKzEwNCw4IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICBqaXQuc3Rv
cmU2NChHUFJJbmZvOjpub25BcmdHUFIwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoYXJn
dW1lbnQub3BlcmFuZCgpKSk7CiAgICAgfQogICAgIAorICAgIC8vIEFsbCB0ZW1wIHJlZ2lzdGVy
cyBhcmUgZnJlZSBhdCB0aGlzIHBvaW50LgorICAgIAogICAgIC8vIEJveCBhbnl0aGluZyB0aGF0
IGlzIGFscmVhZHkgb24gdGhlIHN0YWNrLCBvciB0aGF0IGlzIGEgY29uc3RhbnQuCiAgICAgCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gZXhpdC5tX3ZhbHVlcy5zaXplKCk7IGktLTspIHsKQEAgLTEy
OCw2ICsxMzAsMTMgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgICAgICAgICBqaXQu
b3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBhZGRyZXNzKTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4aXRWYWx1ZUluSlNTdGFja0FzSW50NTI6CisgICAg
ICAgICAgICBqaXQubG9hZDY0KGFkZHJlc3MsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAg
IGppdC5yc2hpZnQ2NCgKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BS
SW5mbzo6cmVnVDAsIGFkZHJlc3MpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
RXhpdFZhbHVlSW5KU1N0YWNrQXNEb3VibGU6CiAgICAgICAgICAgICBqaXQubG9hZERvdWJsZShh
ZGRyZXNzLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGppdC5ib3hEb3VibGUoRlBS
SW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOwpAQCAtMTYwLDkgKzE2OSwxMCBAQCBzdGF0
aWMgdm9pZCBjb21waWxlU3R1YigKICAgICBleGl0Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVfSUYo
CiAgICAgICAgIHNob3VsZFNob3dEaXNhc3NlbWJseSgpLAogICAgICAgICBwYXRjaEJ1ZmZlciwK
LSAgICAgICAgKCJGVEwgT1NSIGV4aXQgIyV1IChiYyMldSwgJXMpIGZyb20gJXMiLAorICAgICAg
ICAoIkZUTCBPU1IgZXhpdCAjJXUgKGJjIyV1LCAlcykgZnJvbSAlcywgd2l0aCBvcGVyYW5kcyA9
ICVzIiwKICAgICAgICAgICAgIGV4aXRJRCwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCwKLSAgICAgICAgICAgIGV4aXRLaW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0b0NTdHJpbmco
KmNvZGVCbG9jaykuZGF0YSgpKSk7CisgICAgICAgICAgICBleGl0S2luZFRvU3RyaW5nKGV4aXQu
bV9raW5kKSwgdG9DU3RyaW5nKCpjb2RlQmxvY2spLmRhdGEoKSwKKyAgICAgICAgICAgIHRvQ1N0
cmluZyhpZ25vcmluZ0NvbnRleHQ8RHVtcENvbnRleHQ+KGV4aXQubV92YWx1ZXMpKS5kYXRhKCkp
KTsKIH0KIAogZXh0ZXJuICJDIiB2b2lkKiBjb21waWxlRlRMT1NSRXhpdChFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGV4aXRJRCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3V0cHV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRw
dXQuaAkocmV2aXNpb24gMTU1OTAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
dXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2NiwxOCBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gY2FsbChtdWxXaXRoT3ZlcmZsb3czMkludHJpbnNpYygpLCBsZWZ0
LCByaWdodCk7CiAgICAgfQorICAgIExWYWx1ZSBhZGRXaXRoT3ZlcmZsb3c2NChMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNhbGwoYWRkV2l0aE92ZXJm
bG93NjRJbnRyaW5zaWMoKSwgbGVmdCwgcmlnaHQpOworICAgIH0KKyAgICBMVmFsdWUgc3ViV2l0
aE92ZXJmbG93NjQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBjYWxsKHN1YldpdGhPdmVyZmxvdzY0SW50cmluc2ljKCksIGxlZnQsIHJpZ2h0KTsKKyAg
ICB9CisgICAgTFZhbHVlIG11bFdpdGhPdmVyZmxvdzY0KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpCisgICAgeworICAgICAgICByZXR1cm4gY2FsbChtdWxXaXRoT3ZlcmZsb3c2NEludHJpbnNp
YygpLCBsZWZ0LCByaWdodCk7CisgICAgfQogICAgIExWYWx1ZSBkb3VibGVBYnMoTFZhbHVlIHZh
bHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGNhbGwoZG91YmxlQWJzSW50cmluc2ljKCksIHZh
bHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGb3JtYXQu
Y3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZh
bHVlRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTIgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFZhbAogICAgIGNhc2UgVmFsdWVGb3JtYXRVSW50
MzI6CiAgICAgICAgIG91dC5wcmludCgiVUludDMyIik7CiAgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIFZhbHVlRm9ybWF0SW50NTI6CisgICAgICAgIG91dC5wcmludCgiSW50NTIiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgVmFsdWVGb3JtYXRTdHJpY3RJbnQ1MjoKKyAgICAgICAgb3V0
LnByaW50KCJTdHJpY3RJbnQ1MiIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1ZUZv
cm1hdEJvb2xlYW46CiAgICAgICAgIG91dC5wcmludCgiQm9vbGVhbiIpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9ybWF0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZvcm1hdC5oCShy
ZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRm9y
bWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgZW51bSBWYWx1ZUZvcm1hdCB7
CiAgICAgSW52YWxpZFZhbHVlRm9ybWF0LAogICAgIFZhbHVlRm9ybWF0SW50MzIsCiAgICAgVmFs
dWVGb3JtYXRVSW50MzIsCisgICAgVmFsdWVGb3JtYXRJbnQ1MiwKKyAgICBWYWx1ZUZvcm1hdFN0
cmljdEludDUyLAogICAgIFZhbHVlRm9ybWF0Qm9vbGVhbiwKICAgICBWYWx1ZUZvcm1hdEpTVmFs
dWUsCiAgICAgVmFsdWVGb3JtYXREb3VibGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMVmFsdWVTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMVmFsdWVTb3VyY2UuY3BwCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NiArNDIsOSBAQCB2b2lkIFZhbHVlU291cmNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAgICAg
Y2FzZSBJbnQzMkluSlNTdGFjazoKICAgICAgICAgb3V0LnByaW50KCJJbnQzMkluSlNTdGFjayIp
OwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBJbnQ1MkluSlNTdGFjazoKKyAgICAgICAgb3V0
LnByaW50KCJJbnQ1MkluSlNTdGFjayIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBEb3Vi
bGVJbkpTU3RhY2s6CiAgICAgICAgIG91dC5wcmludCgiRG91YmxlSW5KU1N0YWNrIik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVTb3Vy
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlU291
cmNlLmgJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VmFsdWVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBlbnVtIFZhbHVl
U291cmNlS2luZCB7CiAgICAgU291cmNlTm90U2V0LAogICAgIFZhbHVlSW5KU1N0YWNrLAogICAg
IEludDMySW5KU1N0YWNrLAorICAgIEludDUySW5KU1N0YWNrLAogICAgIERvdWJsZUluSlNTdGFj
aywKICAgICBTb3VyY2VJc0RlYWQsCiAgICAgSGF2ZU5vZGUKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNiArNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSW5zdHJ1Y3Rpb24q
IHZQQygpIGNvbnN0OwogICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGFzSW5saW5lQ2FsbEZyYW1l
KCkgY29uc3Q7CiAgICAgICAgIGludDMyX3QgdW5ib3hlZEludDMyKCkgY29uc3Q7CisgICAgICAg
IGludDY0X3QgdW5ib3hlZEludDUyKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgdW5ib3hlZEJvb2xl
YW4oKSBjb25zdDsKICAgICAgICAgZG91YmxlIHVuYm94ZWREb3VibGUoKSBjb25zdDsKICAgICAg
ICAgSlNDZWxsKiB1bmJveGVkQ2VsbCgpIGNvbnN0OwpAQCAtOTgsNiArOTksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOwog
ICAgICAgICAgICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRvciBlbmNvZGVkVmFsdWU7CiAgICAgICAg
ICAgICBkb3VibGUgbnVtYmVyOworICAgICAgICAgICAgaW50NjRfdCBpbnRlZ2VyOwogICAgICAg
ICB9IHU7CiAgICAgfTsKIApAQCAtMTg1LDYgKzE4NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgcmV0dXJuIHBheWxvYWQoKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIGludDY0
X3QgUmVnaXN0ZXI6OnVuYm94ZWRJbnQ1MigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
dS5pbnRlZ2VyID4+IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQ7CisgICAgfQorCiAgICAgQUxX
QVlTX0lOTElORSBib29sIFJlZ2lzdGVyOjp1bmJveGVkQm9vbGVhbigpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gISFwYXlsb2FkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Myw2
ICszODMsOSBAQCB2b2lkIEFyZ3VtZW50czo6dGVhck9mZkZvcklubGluZUNhbGxGcmFtCiAgICAg
ICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDMyOgogICAgICAgICAgICAgdmFs
dWUgPSBqc051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDMyKCkpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZEludDUyOgorICAgICAg
ICAgICAgdmFsdWUgPSBqc051bWJlcihsb2NhdGlvbi0+dW5ib3hlZEludDUyKCkpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWxyZWFkeUluSlNTdGFja0FzVW5ib3hlZENlbGw6
CiAgICAgICAgICAgICB2YWx1ZSA9IGxvY2F0aW9uLT51bmJveGVkQ2VsbCgpOwogICAgICAgICAg
ICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGluZ1R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGV4
aW5nVHlwZS5jcHAJKHJldmlzaW9uIDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGV4aW5nVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDExICs1MCwxMSBA
QCBJbmRleGluZ1R5cGUgbGVhc3RVcHBlckJvdW5kT2ZJbmRleGluZ1R5CiAgICAgY2FzZSBBTExf
SU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24odHlw
ZSkpCiAgICAgICAgICAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFz
aykgfCBJbnQzMlNoYXBlOwotICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbih0eXBlKSkK
KyAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHR5cGUpKQogICAgICAgICAgICAg
cmV0dXJuIChpbmRleGluZ1R5cGUgJiB+SW5kZXhpbmdTaGFwZU1hc2spIHwgRG91YmxlU2hhcGU7
CiAgICAgICAgIHJldHVybiAoaW5kZXhpbmdUeXBlICYgfkluZGV4aW5nU2hhcGVNYXNrKSB8IENv
bnRpZ3VvdXNTaGFwZTsKICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAg
ICAgIGlmIChpc051bWJlclNwZWN1bGF0aW9uKHR5cGUpKQorICAgICAgICBpZiAoaXNGdWxsTnVt
YmVyU3BlY3VsYXRpb24odHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gaW5kZXhpbmdUeXBlOwog
ICAgICAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFzaykgfCBDb250
aWd1b3VzU2hhcGU7CiAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9u
IDE1NTkwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTkxLDYgKzE5MSw3IEBAIHB1YmxpYzoKIAogICAgIGludDMyX3Qg
YXNJbnQzMigpIGNvbnN0OwogICAgIHVpbnQzMl90IGFzVUludDMyKCkgY29uc3Q7CisgICAgaW50
NjRfdCBhc01hY2hpbmVJbnQoKSBjb25zdDsKICAgICBkb3VibGUgYXNEb3VibGUoKSBjb25zdDsK
ICAgICBib29sIGFzQm9vbGVhbigpIGNvbnN0OwogICAgIGRvdWJsZSBhc051bWJlcigpIGNvbnN0
OwpAQCAtMjAyLDYgKzIwMyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVsbCgpIGNvbnN0Owog
ICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdDsKICAgICBib29sIGlzQm9vbGVhbigp
IGNvbnN0OworICAgIGJvb2wgaXNNYWNoaW5lSW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc051bWJl
cigpIGNvbnN0OwogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzUHJpbWl0
aXZlKCkgY29uc3Q7CkBAIC0yNzQsNiArMjc2LDEzIEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiBzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSopIGNvbnN0
OwogCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAvLyBDb25zdGFudHMgdXNlZCBmb3IgSW50NTIu
IEludDUyIGlzbid0IHBhcnQgb2YgSlNWYWx1ZSByaWdodCBub3csIGJ1dCBKU1ZhbHVlcyBtYXkg
YmUKKyAgICAvLyBjb252ZXJ0ZWQgdG8gSW50NTJzIGFuZCBiYWNrIGFnYWluLgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkludDUyQml0cyA9IDUyOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpbnQ1MlNoaWZ0QW1vdW50ID0gMTI7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJpZXJCYXNlPFQ+KTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCShyZXZpc2lvbiAxNTU5MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTQsNiArNDk0LDM1IEBAIEFM
V0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSAKIAogI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCiAKK2lubGluZSBib29sIEpTVmFsdWU6OmlzTWFjaGluZUludCgpIGNvbnN0Cit7
CisgICAgaWYgKGlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFpc051
bWJlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZG91YmxlIG51bWJlciA9IGFzRG91
YmxlKCk7CisgICAgaWYgKG51bWJlciAhPSBudW1iZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIpOworICAg
IGlmIChhc0ludDY0ICE9IG51bWJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
YXNJbnQ2NCAmJiBzdGQ6OnNpZ25iaXQobnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChhc0ludDY0ID49IChzdGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCA0NykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXNJbnQ2NCA8IC0oc3RhdGljX2Nhc3Q8aW50NjRf
dD4oMSkgPDwgNDcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2lubGluZSBpbnQ2NF90IEpTVmFsdWU6OmFzTWFjaGluZUludCgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGlzTWFjaGluZUludCgpKTsKKyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1
cm4gYXNJbnQzMigpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90Pihhc0RvdWJsZSgp
KTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAogewogICAgIHJl
dHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NTU5MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE1IEBACisyMDEzLTA5LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgREZHIHNob3VsZCBzdXBwb3J0IEludDUyIGZvciBsb2NhbCB2YXJpYWJsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTA2NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1ByaW50U3Ry
ZWFtLmg6CisgICAgICAgIChXVEY6OlZhbHVlSWdub3JpbmdDb250ZXh0OjpWYWx1ZUlnbm9yaW5n
Q29udGV4dCk6CisgICAgICAgIChXVEY6OlZhbHVlSWdub3JpbmdDb250ZXh0OjpkdW1wKToKKyAg
ICAgICAgKFdURjo6aWdub3JpbmdDb250ZXh0KToKKwogMjAxMy0wOS0xNiAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdlYktpdDEgYnVpbGQg
YWZ0ZXIgcjE1NTkxMApJbmRleDogU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCShyZXZpc2lvbiAxNTU5MDMpCisr
KyBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsMTEg
KzM2MCwzNiBAQCBWYWx1ZUluQ29udGV4dDxULCBVPiBpbkNvbnRleHQoY29uc3QgVCYgCiAgICAg
cmV0dXJuIFZhbHVlSW5Db250ZXh0PFQsIFU+KHZhbHVlLCBjb250ZXh0KTsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2NsYXNzIFZhbHVlSWdub3JpbmdDb250ZXh0IHsK
K3B1YmxpYzoKKyAgICBWYWx1ZUlnbm9yaW5nQ29udGV4dChjb25zdCBVJiB2YWx1ZSkKKyAgICAg
ICAgOiBtX3ZhbHVlKCZ2YWx1ZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAgICAgVCBjb250ZXh0OworICAgICAg
ICBtX3ZhbHVlLT5kdW1wSW5Db250ZXh0KG91dCwgJmNvbnRleHQpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBjb25zdCBVKiBtX3ZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KK1ZhbHVlSWdub3JpbmdDb250ZXh0PFQsIFU+IGlnbm9yaW5nQ29udGV4dChjb25z
dCBVJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gVmFsdWVJZ25vcmluZ0NvbnRleHQ8VCwgVT4odmFs
dWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpDaGFyYWN0ZXJEdW1w
OwogdXNpbmcgV1RGOjpQb2ludGVyRHVtcDsKIHVzaW5nIFdURjo6UHJpbnRTdHJlYW07Cit1c2lu
ZyBXVEY6Omlnbm9yaW5nQ29udGV4dDsKIHVzaW5nIFdURjo6aW5Db250ZXh0OwogdXNpbmcgV1RG
Ojpwb2ludGVyRHVtcDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>