<?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>147988</bug_id>
          
          <creation_ts>2015-08-13 13:35:46 -0700</creation_ts>
          <short_desc>DFG callOperations should not implicitly emit an exception check. At callOperation call sites, we should explicitly emit exception checks</short_desc>
          <delta_ts>2015-08-21 12:12:32 -0700</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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147374</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117359</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-13 13:35:46 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117870</commentid>
    <comment_count>1</comment_count>
      <attachid>259073</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-14 19:24:39 -0700</bug_when>
    <thetext>Created attachment 259073
patch

I still am failing 3d-cube under exception fuzzing.
I need to see why this is. I can&apos;t reproduce this under
the same exception fire target as the exception-fuzzing perl
script is using. Once I figure this out, this patch is ready
to go. It passes the other tests.

Also, this patch includes comments for where we aren&apos;t
emitting exception checks. This will not necessarily be
in the landed patch (though we could add some variant of it
if it&apos;s helpful). Those comments exist to let the reviewer of
this patch know which callOperations aren&apos;t emitting exception
checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117872</commentid>
    <comment_count>2</comment_count>
      <attachid>259074</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-14 19:27:04 -0700</bug_when>
    <thetext>Created attachment 259074
patch

rebased, same patch as before .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117873</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-14 19:30:10 -0700</bug_when>
    <thetext>Attachment 259074 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGSlowPathGenerator.h:100:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3685:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3748:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3807:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3840:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3852:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5978:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5993:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6430:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1693:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1694:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1697:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:575:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:612:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:624:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2263:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1852:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2181:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2383:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2396:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4882:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4915:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/AssemblyHelpers.cpp:205:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/jit/AssemblyHelpers.cpp:207:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 24 in 11 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>1117913</commentid>
    <comment_count>4</comment_count>
      <attachid>259086</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-15 01:37:34 -0700</bug_when>
    <thetext>Created attachment 259086
patch

fixed exception fuzzing issues.
I&apos;m just making operationExceptionFuzz an almost
normal operation that takes an ExecState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117914</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 01:38:44 -0700</bug_when>
    <thetext>Attachment 259086 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGSlowPathGenerator.h:100:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3685:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3748:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3807:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3840:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3852:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5978:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5993:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6430:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1693:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1694:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1697:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:575:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:612:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:624:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2263:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1852:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2181:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2383:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2396:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4882:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4915:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 22 in 16 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>1117991</commentid>
    <comment_count>6</comment_count>
      <attachid>259107</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-15 16:14:43 -0700</bug_when>
    <thetext>Created attachment 259107
patch

free buffer used for exception fuzzing on VM destruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117992</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 16:16:34 -0700</bug_when>
    <thetext>Attachment 259107 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGSlowPathGenerator.h:100:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3685:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3748:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3807:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3840:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3852:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5978:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5993:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6430:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1693:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1694:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1697:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:575:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:612:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:624:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2263:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1852:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2181:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2383:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2396:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4882:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4915:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 22 in 17 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>1117997</commentid>
    <comment_count>8</comment_count>
      <attachid>259107</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-15 17:31:33 -0700</bug_when>
    <thetext>Comment on attachment 259107
patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1887
&gt; +    void checkException()

I want to switch this name to checkExceptionAfterCall().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118640</commentid>
    <comment_count>9</comment_count>
      <attachid>259107</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-18 14:46:20 -0700</bug_when>
    <thetext>Comment on attachment 259107
patch

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

&gt; Source/JavaScriptCore/dfg/DFGSlowPathGenerator.h:96
&gt; +        SpillRegistersMode spillMode, bool needsExceptionCheck, ResultType result)

Instead of using a boolean, can you use an enum type like:

enum class ExceptionCheckRequirement {
    CheckNotNeeded,
    CheckNeeded
};

Ditto for all other places where you pass the needsExceptionCheck param.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:565
&gt;          callOperation(operationCompareStrictEqCell, resultPayloadGPR, arg1TagGPR, arg1PayloadGPR, arg2TagGPR, arg2PayloadGPR);

For cases like these where you expect the operation to not throw an exception, you could assert in the operation function that no exception was thrown.  Alternatively, Fil&apos;s idea to generate an assertion at each node boundary that you told me about sounds good too.  Even if the assertion check is not needed right now, I think it would be good to have some form of an assertion in case someone modifies the operation function later in such a way that can throw an exception.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:566
&gt; +        // checkException(); // Maybe not needed?

operationCompareStrictEqCell() can throw OutOfMemoryError due to JSRopeString::resolveRope() called from JSString::value(), called from JSValue::strictEqualSlowCaseInline().

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:574
&gt; -        callOperation(operationCompareStrictEq, resultPayloadGPR, arg1TagGPR, arg1PayloadGPR, arg2TagGPR, arg2PayloadGPR);
&gt; +        callOperation(operationCompareStrictEq, resultPayloadGPR, arg1TagGPR, arg1PayloadGPR, arg2TagGPR, arg2PayloadGPR); // Maybe not needed?

I don&apos;t think you intended to add the &quot;// Maybe not needed?&quot; comment at the end of the callOperation line.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:575
&gt; +        //checkException(); // Maybe not needed?

Ditto.  operationCompareStrictEq() can throw OutOfMemoryError.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:612
&gt; +        //checkException(); // Maybe not needed?

Ditto.  operationCompareStrictEqCell can throw OutOfMemoryError.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:624
&gt; +        //checkException(); // Maybe not needed?

Ditto.  operationCompareStrictEq() can throw OutOfMemoryError.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:1693
&gt; +        // checkException(); // Not needed.

Yes, exception check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2250
&gt; +        // checkException(); // Not needed.

Yes, check not needed.  sin() has no knowledge of the VM and cannot throw.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2263
&gt; +        //checkException(); // Not needed.

Yes, check not needed.  cos() has no knowledge of the VM and cannot throw.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:516
&gt; +        checkException(); // Maybe not needed?

Exception check needed.  operationCompareStrictEqCell can throw OutOfMemoryError.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:543
&gt; +        checkException(); // Maybe not needed?

Exception check needed.  operationCompareStrictEq can throw OutOfMemoryError.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:579
&gt; +        checkException(); // Maybe not needed?

Exception check needed.  operationCompareStrictEqCell can throw OutOfMemoryError.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1698
&gt; +            slowPathCall(slowCase, this, operationConvertJSValueToBoolean, resultGPR, arg1GPR, NeedToSpill, false)); // Does not need exception check.

Yes, operationConvertJSValueToBoolean does not need an exception check.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1852
&gt; +            //checkException(); // Maybe not needed?

Yes, operationConvertJSValueToBoolean does not need an exception check.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2181
&gt; +            //checkException(); // Not needed.

Yes, operationConvertDoubleToInt52 does not need an exception check.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2383
&gt; +        //checkException(); // Not needed. 

Yes, check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2396
&gt; +        //checkException(); // Not needed.

Yes, check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4882
&gt; +    //checkException(); // Not needed.

Yes, operationConvertBoxedDoubleToInt52 does not need an exception check.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4915
&gt;      callOperation(operationConvertDoubleToInt52, resultGPR, valueFPR);
&gt; +    //checkException(); // Not needed.

Yes, check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3685
&gt;          callOperation(fmodAsDFGOperation, result.fpr(), op1FPR, op2FPR);
&gt; +        //checkException(); // Not needed.

Yes, check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3748
&gt;          callOperation(sqrt, result.fpr(), op1FPR);
&gt; +        //checkException(); // Not needed.

Yes, check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3807
&gt;          callOperation(operationMathPow, resultFpr, xOperandfpr, yOperandfpr.fpr());
&gt; +        //checkException(); // Not needed.

Yes, check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3840
&gt;      callOperation(operationMathPow, resultFpr, xOperandfpr, yOperandfpr);
&gt; +    //checkException(); // Not Needed.

Yes, check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3852
&gt;      callOperation(log, result.fpr(), op1FPR);
&gt; +    //checkException(); // Not needed.

Yes, check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5052
&gt; +        slowPathCall(slowCase, this, operationNotifyWrite, NoResult, set, NeedToSpill, false)); // Does not need exception check.

Yes, check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5978
&gt; +        //checkException(); // Not needed.

Yes, check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:5993
&gt; +        //checkException(); // Not needed.

Yes, check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6430
&gt; +    //checkException(); // Not needed.

Yes, check not needed.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1697
&gt; +    //JITCompiler::Call callOperation(S_JITOperation_J operation, GPRReg result, GPRReg arg1Tag, GPRReg arg1Payload)
&gt; +    //{
&gt; +    //    m_jit.setupArguments(arg1Payload, arg1Tag);
&gt; +    //    return appendCallSetResult(operation, result);
&gt; +    //}

Have you done a 32-bit build to verify that this is not needed?  If so, let&apos;s remove it.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1887
&gt;&gt; +    void checkException()
&gt; 
&gt; I want to switch this name to checkExceptionAfterCall().

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119690</commentid>
    <comment_count>10</comment_count>
      <attachid>259591</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-21 01:41:17 -0700</bug_when>
    <thetext>Created attachment 259591
patch

addressed Mark&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119694</commentid>
    <comment_count>11</comment_count>
      <attachid>259593</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-21 02:01:28 -0700</bug_when>
    <thetext>Created attachment 259593
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119695</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-21 02:02:28 -0700</bug_when>
    <thetext>Attachment 259593 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGSlowPathGenerator.h:105:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 1 in 19 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>1119696</commentid>
    <comment_count>13</comment_count>
      <attachid>259594</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-21 02:05:36 -0700</bug_when>
    <thetext>Created attachment 259594
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119697</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-21 02:07:15 -0700</bug_when>
    <thetext>Attachment 259594 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGSlowPathGenerator.h:105:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 1 in 19 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>1119808</commentid>
    <comment_count>15</comment_count>
      <attachid>259594</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-21 11:07:48 -0700</bug_when>
    <thetext>Comment on attachment 259594
patch

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

r=me with some suggestions

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1505
&gt; +        m_jit.jitAssertNoException();

Can we do something to avoid paying the cost of this check in release builds?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1897
&gt; +    void checkExceptionAfterCall()

It looks like this function can be used not after a call too. I would name this function &quot;exceptionCheck&quot;, or name it &quot;checkException&quot; and rename JIT::exceptionCheck to checkException, or eliminate this function because it&apos;s not onerous to call &quot;m_jit.exceptionCheck()&quot;.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1901
&gt; +    // These methods add call instructions, with optional exception checks &amp; setting results.

, optionally emitting exception checks and/or setting results.

&gt; Source/JavaScriptCore/runtime/VM.h:623
&gt; +    EncodedJSValue* m_exceptionFuzzBuffer { nullptr };

Let&apos;s use MallocPtr here, to avoid the need for manual destruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119851</commentid>
    <comment_count>16</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-21 12:12:32 -0700</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/188764</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259073</attachid>
            <date>2015-08-14 19:24:39 -0700</date>
            <delta_ts>2015-08-14 19:27:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>116175</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NTA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDE1LTA4LTE0ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBERkcgY2FsbE9wZXJhdGlvbnMgc2hvdWxkIG5vdCBpbXBsaWNpdGx5IGVtaXQgYW4gZXhj
ZXB0aW9uIGNoZWNrLiBBdCBjYWxsT3BlcmF0aW9uIGNhbGwgc2l0ZXMsIHdlIHNob3VsZCBleHBs
aWNpdGx5IGVtaXQgZXhjZXB0aW9uIGNoZWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3OTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIERGRyBi
ZWluZyBhYmxlIHRvIGhhbmRsZSBleGNlcHRpb25zLiAKKyAgICAgICAgVG8gZG8gdGhpcywgd2Ug
bmVlZCBtb3JlIGNvbnRyb2wgb3ZlciB3aGVuIHdlIGVtaXQgZXhjZXB0aW9uIGNoZWNrcy4KKyAg
ICAgICAgU3BlY2lmaWNhbGx5LCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gc2lsZW50RmlsbCBiZWZv
cmUgZW1pdHRpbmcgYW4gZXhjZXB0aW9uIGNoZWNrLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXMg
dGhhdC4gVGhpcyBwYXRjaCBhbHNvIGFsbG93cyB1cyB0byBlYXNpbHkgc2VlIHdoaWNoCisgICAg
ICAgIG9wZXJhdGlvbnMgZG8gYW5kIGRvIG5vdCBlbWl0IGV4Y2VwdGlvbiBjaGVja3MuIEZpbmRp
bmcgdGhpcyBpbmZvcm1hdGlvbgorICAgICAgICBvdXQgYmVmb3JlIHdhcyBhIHBhaW4uCisKKyAg
ICAgICAgKiBkZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRm
Zy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRm
Zy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmV4Y2VwdGlv
bkNoZWNrKToKKyAgICAgICAgKiBkZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5l
cmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpDYWxsU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxTbG93UGF0aEdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbFNsb3dQYXRoR2VuZXJhdG9yOjp0ZWFyRG93bik6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0
b3I6OkNhbGxSZXN1bHRBbmROb0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6REZHOjpDYWxsUmVzdWx0QW5kT25lQXJndW1lbnRTbG93UGF0aEdlbmVyYXRvcjo6Q2Fs
bFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNhbGxSZXN1bHRBbmRUd29Bcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3Vs
dEFuZFR3b0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpD
YWxsUmVzdWx0QW5kVGhyZWVBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3VsdEFu
ZFRocmVlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNh
bGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRG
b3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxS
ZXN1bHRBbmRGaXZlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRGaXZl
QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRo
Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3FydCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aFBvdyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aExvZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90aWZ5V3JpdGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwRXhlYyk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcik6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tFeGNlcHRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09u
RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2Fs
bFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uU2V0UmVzdWx0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OkNvbXBh
cmVBbmRCb3hCb29sZWFuU2xvd1BhdGhHZW5lcmF0b3I6OkNvbXBhcmVBbmRCb3hCb29sZWFuU2xv
d1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21wYXJlQW5kQm94Qm9v
bGVhblNsb3dQYXRoR2VuZXJhdG9yOjpDb21wYXJlQW5kQm94Qm9vbGVhblNsb3dQYXRoR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVO
b25QZWVwaG9sZUNvbXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpu
b25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb252
ZXJ0TWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZURvdWJsZVJlcE1hY2hpbmVJbnQpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNhbGxFeGNlcHRpb25GdXp6KToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0RXhjZXB0aW9uQ2hlY2spOgorCiAy
MDE1LTA4LTE0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVXNl
IFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6Ok11dGV4LCBXVEY6
OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5l
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5
aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNpb24gMTg4MzczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMyw2ICsxMTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBqaXQtPnNp
bGVudEZpbGwobV9wbGFuc1tpXSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBqaXQtPmNoZWNr
RXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBpZiAobV9vcCA9PSBBcnJheWlmeVRvU3Ry
dWN0dXJlKSB7CiAgICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNpb24gMTg4MzczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGxhbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAg
ICBqaXQtPnNpbGVudFNwaWxsKG1fcGxhbnNbaV0pOwogICAgICAgICBqaXQtPmNhbGxPcGVyYXRp
b24obV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIsIG1fc3RydWN0dXJlLCBtX3NpemUpOworICAgICAg
ICBqaXQtPmNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3Bl
Y3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBqaXQtPnNpbGVu
dEZpbGwobV9wbGFuc1tpXSwgY2FuVHJhbXBsZSk7CkBAIC0xMDMsNiArMTA0LDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICBqaXQtPm1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9hcnJheVN0b3JhZ2VTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZG9uZS5s
aW5rKCZqaXQtPm1faml0KTsKICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKG1fZnVuY3Rpb24s
IG1fcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBtX3NpemVHUFIpOworICAgICAgICBqaXQtPmNoZWNr
RXhjZXB0aW9uKCk7CiAgICAgICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6
OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9wbGFucy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFu
c1tpXSwgY2FuVHJhbXBsZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
bGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Ns
b3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE4ODM3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAg
aml0LT5zaWxlbnRTcGlsbChtX3BsYW5zW2ldKTsKICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9u
KAogICAgICAgICAgICAgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCBtX3Jlc3VsdEdQ
UiwgbV9zdHJ1Y3R1cmUsIG1fbGVuZ3RoR1BSLCBtX21pbkNhcGFjaXR5KTsKKyAgICAgICAgaml0
LT5jaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBHUFJSZWcgY2FuVHJhbXBsZSA9IFNwZWN1bGF0
aXZlSklUOjpwaWNrQ2FuVHJhbXBsZShtX3Jlc3VsdEdQUik7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgaml0LT5zaWxlbnRGaWxs
KG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTg4MzczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMTEgKzE2
NSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBleGNlcHRpb25DaGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCi0gICAgewotICAg
ICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoanVtcFRvSGFuZGxlcik7Ci0gICAgfQotICAg
IAogICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soKQogICAgIHsKICAgICAgICAgbV9leGNlcHRpb25D
aGVja3MuYXBwZW5kKGVtaXRFeGNlcHRpb25DaGVjaygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE4ODM3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEdQUlJlZyBj
YW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKGV4dHJhY3RSZXN1bHQo
bV9yZXN1bHRSZWdzKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgp
OyBpLS07KQogICAgICAgICAgICAgaml0LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1w
bGUpOworICAgICAgICBqaXQtPmNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBq
dW1wVG8oaml0KTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ns
b3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxODgzNzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkzLDEwICs5MywxMSBAQCBjbGFzcyBDYWxsU2xvd1BhdGhHZW5lcmF0b3IgOiBwdWJsaWMgSnVt
CiBwdWJsaWM6CiAgICAgQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBm
cm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAg
IFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0KQorICAgICAg
ICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ss
IFJlc3VsdFR5cGUgcmVzdWx0KQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxK
dW1wVHlwZT4oZnJvbSwgaml0KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAg
ICAgICwgbV9zcGlsbE1vZGUoc3BpbGxNb2RlKQorICAgICAgICAsIG1fbmVlZHNFeGNlcHRpb25D
aGVjayhuZWVkc0V4Y2VwdGlvbkNoZWNrKQogICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKICAg
ICB7CiAgICAgICAgIGlmIChtX3NwaWxsTW9kZSA9PSBOZWVkVG9TcGlsbCkKQEAgLTEzMCwxMSAr
MTMxLDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxh
bnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5z
W2ldLCBjYW5UcmFtcGxlKTsKICAgICAgICAgfQorICAgICAgICBpZiAobV9uZWVkc0V4Y2VwdGlv
bkNoZWNrKQorICAgICAgICAgICAgaml0LT5jaGVja0V4Y2VwdGlvbigpOwogICAgICAgICB0aGlz
LT5qdW1wVG8oaml0KTsKICAgICB9CiAKICAgICBGdW5jdGlvblR5cGUgbV9mdW5jdGlvbjsKICAg
ICBTcGlsbFJlZ2lzdGVyc01vZGUgbV9zcGlsbE1vZGU7CisgICAgYm9vbCBtX25lZWRzRXhjZXB0
aW9uQ2hlY2s7CiAgICAgUmVzdWx0VHlwZSBtX3Jlc3VsdDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBtX2NhbGw7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxh
bnM7CkBAIC0xNDYsOSArMTUwLDkgQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xv
d1BhdGhHZQogcHVibGljOgogICAgIENhbGxSZXN1bHRBbmROb0FyZ3VtZW50c1Nsb3dQYXRoR2Vu
ZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5j
dGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUs
IFJlc3VsdFR5cGUgcmVzdWx0KQorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2Rl
LCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJlc3VsdFR5cGUgcmVzdWx0KQogICAgICAgICA6
IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBl
PigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVzdWx0KQor
ICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCBuZWVkc0V4Y2VwdGlv
bkNoZWNrLCByZXN1bHQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTE2OSw5ICsxNzMsOSBAQCBj
bGFzcyBDYWxsUmVzdWx0QW5kT25lQXJndW1lbnRTbG93UGF0aEdlCiBwdWJsaWM6CiAgICAgQ2Fs
bFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBl
IGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAg
ICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3Vt
ZW50VHlwZTEgYXJndW1lbnQxKQorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2Rl
LCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5
cGUxIGFyZ3VtZW50MSkKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0
aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24s
IHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywgcmVzdWx0KQogICAgICAgICAsIG1fYXJn
dW1lbnQxKGFyZ3VtZW50MSkKICAgICB7CiAgICAgfQpAQCAtMTk1LDEwICsxOTksMTAgQEAgY2xh
c3MgQ2FsbFJlc3VsdEFuZFR3b0FyZ3VtZW50c1Nsb3dQYXRoRwogcHVibGljOgogICAgIENhbGxS
ZXN1bHRBbmRUd29Bcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgSnVtcFR5cGUg
ZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAotICAgICAg
ICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1l
bnRUeXBlMSBhcmd1bWVudDEsCisgICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUs
IGJvb2wgbmVlZHNFeGNlcHRpb25DaGVjaywgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlw
ZTEgYXJndW1lbnQxLAogICAgICAgICBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MikKICAgICAgICAg
OiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlw
ZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkK
KyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRp
b25DaGVjaywgcmVzdWx0KQogICAgICAgICAsIG1fYXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICAg
ICAgLCBtX2FyZ3VtZW50Mihhcmd1bWVudDIpCiAgICAgewpAQCAtMjI0LDEwICsyMjgsMTAgQEAg
Y2xhc3MgQ2FsbFJlc3VsdEFuZFRocmVlQXJndW1lbnRzU2xvd1BhdAogcHVibGljOgogICAgIENh
bGxSZXN1bHRBbmRUaHJlZUFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1w
VHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0g
ICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0LCBB
cmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKKyAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxs
TW9kZSwgYm9vbCBuZWVkc0V4Y2VwdGlvbkNoZWNrLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1l
bnRUeXBlMSBhcmd1bWVudDEsCiAgICAgICAgIEFyZ3VtZW50VHlwZTIgYXJndW1lbnQyLCBBcmd1
bWVudFR5cGUzIGFyZ3VtZW50MykKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVt
cFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQs
IGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVu
Y3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywgcmVzdWx0KQogICAgICAgICAs
IG1fYXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICAgICAgLCBtX2FyZ3VtZW50Mihhcmd1bWVudDIp
CiAgICAgICAgICwgbV9hcmd1bWVudDMoYXJndW1lbnQzKQpAQCAtMjU5LDEwICsyNjMsMTAgQEAg
Y2xhc3MgQ2FsbFJlc3VsdEFuZEZvdXJBcmd1bWVudHNTbG93UGF0aAogcHVibGljOgogICAgIENh
bGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIEp1bXBU
eXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAg
ICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFy
Z3VtZW50VHlwZTEgYXJndW1lbnQxLAorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxN
b2RlLCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVu
dFR5cGUxIGFyZ3VtZW50MSwKICAgICAgICAgQXJndW1lbnRUeXBlMiBhcmd1bWVudDIsIEFyZ3Vt
ZW50VHlwZTMgYXJndW1lbnQzLCBBcmd1bWVudFR5cGU0IGFyZ3VtZW50NCkKICAgICAgICAgOiBD
YWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4o
Ci0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAg
ICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25D
aGVjaywgcmVzdWx0KQogICAgICAgICAsIG1fYXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICAgICAg
LCBtX2FyZ3VtZW50Mihhcmd1bWVudDIpCiAgICAgICAgICwgbV9hcmd1bWVudDMoYXJndW1lbnQz
KQpAQCAtMjk2LDExICszMDAsMTEgQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZEZpdmVBcmd1bWVudHNT
bG93UGF0aAogcHVibGljOgogICAgIENhbGxSZXN1bHRBbmRGaXZlQXJndW1lbnRzU2xvd1BhdGhH
ZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1
bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAorICAgICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJl
c3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKICAgICAgICAgQXJndW1l
bnRUeXBlMiBhcmd1bWVudDIsIEFyZ3VtZW50VHlwZTMgYXJndW1lbnQzLCBBcmd1bWVudFR5cGU0
IGFyZ3VtZW50NCwKICAgICAgICAgQXJndW1lbnRUeXBlNSBhcmd1bWVudDUpCiAgICAgICAgIDog
Q2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGU+
KAotICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQpCisg
ICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIG5lZWRzRXhjZXB0aW9u
Q2hlY2ssIHJlc3VsdCkKICAgICAgICAgLCBtX2FyZ3VtZW50MShhcmd1bWVudDEpCiAgICAgICAg
ICwgbV9hcmd1bWVudDIoYXJndW1lbnQyKQogICAgICAgICAsIG1fYXJndW1lbnQzKGFyZ3VtZW50
MykKQEAgLTMzMCwxMCArMzM0LDEwIEBAIHByb3RlY3RlZDogICAgCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlPgog
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAog
ICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5j
dGlvbiwKLSAgICBSZXN1bHRUeXBlIHJlc3VsdCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSA9IE5lZWRUb1NwaWxsKQorICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBTcGlsbFJlZ2lzdGVyc01v
ZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIGJvb2wgbmVlZHNFeGNlcHRpb25DaGVjayA9IHRy
dWUpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3VsdEFuZE5vQXJndW1l
bnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4+
KAotICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCk7CisgICAg
ICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywg
cmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8CkBAIC0zNDIsMTAgKzM0NiwxMCBAQCB0ZW1wbGF0ZTwK
IGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgK
ICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVu
Y3Rpb24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAot
ICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCkKKyAgICBTcGls
bFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIGJvb2wgbmVlZHNFeGNlcHRp
b25DaGVjayA9IHRydWUpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3Vs
dEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwg
UmVzdWx0VHlwZSwgQXJndW1lbnRUeXBlMT4+KAotICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9u
LCBzcGlsbE1vZGUsIHJlc3VsdCwgYXJndW1lbnQxKTsKKyAgICAgICAgZnJvbSwgaml0LCBmdW5j
dGlvbiwgc3BpbGxNb2RlLCBuZWVkc0V4Y2VwdGlvbkNoZWNrLCByZXN1bHQsIGFyZ3VtZW50MSk7
CiB9CiAKIHRlbXBsYXRlPApAQCAtMzU0LDEwICszNTgsMTAgQEAgdGVtcGxhdGU8CiBpbmxpbmUg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aENhbGwoCiAgICAgSnVt
cFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAog
ICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwgQXJndW1lbnRU
eXBlMiBhcmd1bWVudDIsCi0gICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSA9IE5lZWRU
b1NwaWxsKQorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCwg
Ym9vbCBuZWVkc0V4Y2VwdGlvbkNoZWNrID0gdHJ1ZSkKIHsKICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsUmVzdWx0QW5kVHdvQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5
cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRUeXBlMSwgQXJndW1lbnRUeXBl
Mj4+KAotICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCwgYXJn
dW1lbnQxLCBhcmd1bWVudDIpOworICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1v
ZGUsIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwog
fQogCiB0ZW1wbGF0ZTwKQEAgLTM2NiwxMCArMzcwLDEwIEBAIHRlbXBsYXRlPAogaW5saW5lIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAogICAgIEp1bXBU
eXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKICAg
ICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVudDEsIEFyZ3VtZW50VHlw
ZTIgYXJndW1lbnQyLAotICAgIEFyZ3VtZW50VHlwZTMgYXJndW1lbnQzLCBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwpCisgICAgQXJndW1lbnRUeXBlMyBhcmd1bWVu
dDMsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCwgYm9vbCBuZWVk
c0V4Y2VwdGlvbkNoZWNrID0gdHJ1ZSkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
YWxsUmVzdWx0QW5kVGhyZWVBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVu
Y3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudFR5cGUxLCBBcmd1bWVudFR5cGUyLAotICAg
ICAgICBBcmd1bWVudFR5cGUzPj4oZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1
bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQyLCBhcmd1bWVudDMpOworICAgICAgICBBcmd1bWVudFR5
cGUzPj4oZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCBuZWVkc0V4Y2VwdGlvbkNoZWNr
LCByZXN1bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQyLCBhcmd1bWVudDMpOwogfQogCiB0ZW1wbGF0
ZTwKQEAgLTM4MCwxMCArMzg0LDEwIEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhH
ZW5lcmF0b3IKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlv
blR5cGUgZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJn
dW1lbnQxLCBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MiwKICAgICBBcmd1bWVudFR5cGUzIGFyZ3Vt
ZW50MywgQXJndW1lbnRUeXBlNCBhcmd1bWVudDQsCi0gICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNw
aWxsTW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUg
PSBOZWVkVG9TcGlsbCwgYm9vbCBuZWVkc0V4Y2VwdGlvbkNoZWNrID0gdHJ1ZSkKIHsKICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kRm91ckFyZ3VtZW50c1Nsb3dQYXRo
R2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50VHlw
ZTEsIEFyZ3VtZW50VHlwZTIsCi0gICAgICAgIEFyZ3VtZW50VHlwZTMsIEFyZ3VtZW50VHlwZTQ+
Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1
bWVudDIsIGFyZ3VtZW50MywgYXJndW1lbnQ0KTsKKyAgICAgICAgQXJndW1lbnRUeXBlMywgQXJn
dW1lbnRUeXBlND4+KGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRp
b25DaGVjaywgcmVzdWx0LCBhcmd1bWVudDEsIGFyZ3VtZW50MiwgYXJndW1lbnQzLCBhcmd1bWVu
dDQpOwogfQogCiB0ZW1wbGF0ZTwKQEAgLTM5NCwxMCArMzk4LDEwIEBAIGlubGluZSBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3IKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2
ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQs
IEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLCBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MiwKICAgICBB
cmd1bWVudFR5cGUzIGFyZ3VtZW50MywgQXJndW1lbnRUeXBlNCBhcmd1bWVudDQsIEFyZ3VtZW50
VHlwZTUgYXJndW1lbnQ1LAotICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVk
VG9TcGlsbCkKKyAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGws
IGJvb2wgbmVlZHNFeGNlcHRpb25DaGVjayA9IHRydWUpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbFJlc3VsdEFuZEZpdmVBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjxKdW1w
VHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudFR5cGUxLCBBcmd1bWVudFR5
cGUyLAotICAgICAgICBBcmd1bWVudFR5cGUzLCBBcmd1bWVudFR5cGU0LCBBcmd1bWVudFR5cGU1
Pj4oZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQsIGFyZ3VtZW50MSwgYXJn
dW1lbnQyLCBhcmd1bWVudDMsCisgICAgICAgIEFyZ3VtZW50VHlwZTMsIEFyZ3VtZW50VHlwZTQs
IEFyZ3VtZW50VHlwZTU+Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIG5lZWRzRXhj
ZXB0aW9uQ2hlY2ssIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIsIGFyZ3VtZW50MywKICAg
ICAgICAgYXJndW1lbnQ0LCBhcmd1bWVudDUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9u
IDE4ODM3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw2ICs0MDksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxVGFn
R1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAg
ICBjaGVja0V4Y2VwdGlvbigpOwogCiAgICAgICAgIGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29u
ZGl0aW9uLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9IGVsc2UgewpAQCAtNDMyLDYgKzQzMyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAKICAgICAg
ICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQ
YXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CisgICAgICAgICAgICBjaGVj
a0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRH
UFIpOwogICAgICAgICAKICAgICAgICAgICAgIGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0
aW9uLCByZXN1bHRHUFIsIHRha2VuKTsKQEAgLTQ1Myw3ICs0NTUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFNfSklUT3BlcmF0aW9uX0VKSiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwKICAgICAgICAgR1BSUmVnIGFyZzJUYWcsIEdQUlJl
ZyBhcmcyUGF5bG9hZCkKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IFNfSklUT3BlcmF0aW9uX0VKSiwgR1BSUmVnPigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVu
Y3Rpb24sIE5lZWRUb1NwaWxsLCByZXN1bHQpCisgICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0
aW9uLCBOZWVkVG9TcGlsbCwgdHJ1ZSwgcmVzdWx0KQogICAgICAgICAsIG1fYXJnMVRhZyhhcmcx
VGFnKQogICAgICAgICAsIG1fYXJnMVBheWxvYWQoYXJnMVBheWxvYWQpCiAgICAgICAgICwgbV9h
cmcyVGFnKGFyZzJUYWcpCkBAIC01MDAsNiArNTAyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVOb25QZQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
IGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFUYWdH
UFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CisgICAgICAg
IGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBib29sZWFuUmVzdWx0KHJlc3Vs
dFBheWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgfSBl
bHNlIHsKQEAgLTU2MCw2ICs1NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBoCiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1
bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3Ry
aWN0RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwg
YXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICAvLyBjaGVja0V4Y2VwdGlvbigp
OyAvLyBNYXliZSBub3QgbmVlZGVkPwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdFBheWxvYWRHUFIpOwogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/
IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdFBheWxvYWRH
UFIsIHRha2VuKTsKQEAgLTU2Nyw3ICs1NzEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIC8vIEZJWE1FOiBBZGQgZmFzdCBwYXRocyBmb3IgdHdv
Q2VsbHMsIG51bWJlciBldGMuCiAKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVz
dWx0UGF5bG9hZEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0
cmljdEVxLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJn
MlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxv
YWRHUFIsIGFyZzJUYWdHUFIsIGFyZzJQYXlsb2FkR1BSKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8K
KyAgICAgICAgLy9jaGVja0V4Y2VwdGlvbigpOyAvLyBNYXliZSBub3QgbmVlZGVkPwogICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICAKICAg
ICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGls
ZXI6Ok5vblplcm8sIHJlc3VsdFBheWxvYWRHUFIsIHRha2VuKTsKQEAgLTYwNCw2ICs2MDksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIAogICAg
ICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRQYXlsb2Fk
R1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRH
UFIpOworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE1heWJlIG5vdCBuZWVkZWQ/CiAg
ICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAg
IAogICAgICAgICBtX2ppdC5hbmRQdHIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMigxKSwgcmVz
dWx0UGF5bG9hZEdQUik7CkBAIC02MTUsNiArNjIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1
bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3Ry
aWN0RXEsIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcy
VGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
cmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgIC8vY2hlY2tFeGNlcHRpb24oKTsgLy8gTWF5YmUg
bm90IG5lZWRlZD8KICAgICAgICAgCiAgICAgICAgIG1faml0LmFuZFB0cihKSVRDb21waWxlcjo6
VHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICB9CkBAIC03MDAsNiArNzA3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIHNs
b3dDYXNlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncyk7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlv
bigpOwogICAgICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2lu
Z1BhdGhEaWROb3RUaHJvdyk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAg
ICAgICAgIHJlc3VsdEdQUiA9IHNjcmF0Y2hHUFIyOwpAQCAtNzMyLDYgKzc0MCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIC8vIFJpZ2h0
IG5vdywgYXJndW1lbnRzIGlzIGluIGFyZ3VtZW50c1RhZ0dQUi9hcmd1bWVudHNQYXlsb2FkR1BS
IGFuZCB0aGUgcmVnaXN0ZXIgZmlsZSBpcwogICAgICAgICAgICAgLy8gZmx1c2hlZC4KICAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwg
bnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICAgICAgICAg
IGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE5vdyB3ZSBo
YXZlIHRoZSBhcmd1bWVudCBjb3VudCBvZiB0aGUgY2FsbGVlIGZyYW1lLCBidXQgd2UndmUgbG9z
dCB0aGUgYXJndW1lbnRzIG9wZXJhbmQuCiAgICAgICAgICAgICAvLyBSZWNvbnN0cnVjdCB0aGUg
YXJndW1lbnRzIG9wZXJhbmQgd2hpbGUgcHJlc2VydmluZyB0aGUgY2FsbGVlIGZyYW1lLgpAQCAt
NzQxLDYgKzc1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUK
ICAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykgKyBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygp
LCA2ICogc2l6ZW9mKHZvaWQqKSkpKSwgc2NyYXRjaEdQUjEsIEpJVENvbXBpbGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBzY3Jh
dGNoR1BSMSwgYXJndW1lbnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BSLCBkYXRhLT5maXJz
dFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgY2hl
Y2tFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHJlc3VsdEdQUiA9IEdQUkluZm86OnJldHVyblZh
bHVlR1BSOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE1MzQsNyArMTU0NCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAg
c2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZXN1bHRQ
YXlsb2FkR1BSLCBhcmcxVGFnR1BSLAotICAgICAgICAgICAgICAgIGFyZzFQYXlsb2FkR1BSKSk7
CisgICAgICAgICAgICAgICAgYXJnMVBheWxvYWRHUFIsIE5lZWRUb1NwaWxsLCBmYWxzZSkpOyAv
LyBEb2VzIG5vdCBuZWVkIGV4Y2VwdGlvbiBjaGVjay4KICAgICAKICAgICAgICAgbV9qaXQueG9y
MzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgYm9vbGVhblJl
c3VsdChyZXN1bHRQYXlsb2FkR1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkp
OwpAQCAtMTY4MCw2ICsxNjkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChO
b2RlKiBubwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZXN1
bHRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpOwogICAgICAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAgIC8vIGNoZWNrRXhjZXB0aW9uKCk7IC8v
IE5vdCBuZWVkZWQuCiAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6Tm9u
WmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgICAgIGp1bXAobm90VGFrZW4pOwpAQCAtMjA2
MCw2ICsyMDcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVz
dWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBvcDFUYWdHUFIsIG9wMVBheWxvYWRH
UFIsIG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGQsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0
UGF5bG9hZC5ncHIoKSwgb3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSLCBvcDJUYWdHUFIsIG9wMlBh
eWxvYWRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUp
OwogICAgICAgICBicmVhazsKQEAgLTIyMzUsNiArMjI0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEZQUlJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oc2luLCByZXN1bHQuZnByKCksIG9wMUZQ
Uik7CisgICAgICAgIC8vIGNoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgICAg
IGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC0yMjQ3LDYgKzIyNjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIAogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBjYWxsT3BlcmF0aW9uKGNvcywgcmVzdWx0LmZwcigpLCBvcDFGUFIpOworICAgICAgICAvL2No
ZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1
bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMzQyLDYgKzIzNTYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxDZWxsLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBh
eWxvYWQuZ3ByKCksIGJhc2VHUFIsIHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVBheWxvYWRHUFIp
OworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5v
ZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjA5LDYgKzI2MjQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxOb25TdHJpY3Qs
IGJhc2VHUFIsIHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVBheWxvYWRHUFIsIHZhbHVlVGFnR1BS
LCB2YWx1ZVBheWxvYWRHUFIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24obV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9u
UHV0QnlWYWxDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsTm9uU3RyaWN0LCBiYXNl
R1BSLCBwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHlQYXlsb2FkR1BSLCB2YWx1ZVRhZ0dQUiwgdmFs
dWVQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICAgICAgYWxyZWFkeUhhbmRs
ZWQgPSB0cnVlOwpAQCAtMjc2Miw2ICsyNzc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdCwgcmVzdWx0LmdwcigpLCBiYXNlR1BSLCBhcmd1
bWVudEdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBNdXN0IHVzZSBqc1ZhbHVlUmVzdWx0IGJlY2F1c2Ugb3RoZXJ3aXNlIHdl
IHNjcmV3IHVwIHJlZ2lzdGVyCiAgICAgICAgICAgICAvLyBhbGxvY2F0aW9uLCB3aGljaCB0aGlu
a3MgdGhhdCB0aGlzIG5vZGUgaGFzIGEgcmVzdWx0LgpAQCAtMjc3OCw2ICsyNzk1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVk
Q2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJl
Z0V4cEV4ZWMsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgYmFzZUdQUiwg
YXJndW1lbnRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAKICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTI3OTIsNiArMjgxMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1l
bnRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAKICAgICAgICAgLy8g
SWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KICAgICAg
ICAgYm9vbGVhblJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtMzIxMiw2ICszMjMxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
ICAgIEFTU0VSVChvcCA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOwogICAgICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIs
IG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUik7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBj
aGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKICAgICAgICAg
ICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKQEAgLTMzMDYsNiArMzMyNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uTmV3RW1wdHlBcnJheSwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUo
KSkpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgICAgIGNlbGxSZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC0zMzgzLDYgKzM0MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICBvcGVyYXRpb25OZXdBcnJh
eSwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksCiAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx2b2lkKj4oYnVmZmVyKSwgbm9kZS0+bnVtQ2hpbGRyZW4oKSk7CisgICAgICAg
IGNoZWNrRXhjZXB0aW9uKCk7CiAKICAgICAgICAgaWYgKHNjcmF0Y2hTaXplKSB7CiAgICAgICAg
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTM0NjMsNiArMzQ4NSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZG9uZS5saW5r
KCZtX2ppdCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICBvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUik7CisgICAg
ICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzUwOCw2ICszNTMxLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgp
KSwgbm9kZS0+c3RhcnRDb25zdGFudCgpLCBub2RlLT5udW1Db25zdGFudHMoKSk7CisgICAgICAg
IGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzUzMyw2ICszNTU3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIG9wZXJh
dGlvbk5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1lbnRGb3JUeXBlKG5vZGUtPnR5cGVkQXJyYXlU
eXBlKCkpLAogICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT50eXBlZEFy
cmF5U3RydWN0dXJlKG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpLAogICAgICAgICAgICAgICAgIGFy
Z3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOworICAgICAgICAgICAgY2hlY2tFeGNl
cHRpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNTUwLDYgKzM1NzUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld1JlZ2V4cCwgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigp
LCBtX2ppdC5jb2RlQmxvY2soKS0+cmVnZXhwKG5vZGUtPnJlZ2V4cEluZGV4KCkpKTsKKyAgICAg
ICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHRo
ZSBjYWxsT3BlcmF0aW9uIGFib3ZlIGV4cGxpY2l0bHkgcmV0dXJuIGEgY2VsbCByZXN1bHQsIG9y
IGppdEFzc2VydCB0aGUgdGFnIGlzIGEgY2VsbCB0YWcuCiAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CkBAIC00MjQzLDYgKzQyNjksNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZU9mVmFyYXJncywgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIsIGFyZ3VtZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwgZGF0YS0+b2Zm
c2V0KTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIGxvY2so
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICB7CkBAIC00MjcyLDYgKzQyOTksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0
LnN0b3JlMzIoYXJnQ291bnRJbmNsdWRpbmdUaGlzR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZv
cihkYXRhLT5tYWNoaW5lQ291bnQpKTsKICAgICAgICAgCiAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTG9hZFZhcmFyZ3MsIGRhdGEtPm1hY2hpbmVTdGFydC5vZmZzZXQoKSwgYXJndW1l
bnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BSLCBkYXRhLT5vZmZzZXQsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCBkYXRhLT5tYW5kYXRvcnlNaW5pbXVtKTsKKyAgICAgICAgY2hlY2tFeGNl
cHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTQzNDYsNiArNDM3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgcHJvcGVydHkuZ3ByKCkpOworICAg
ICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdFBheWxv
YWRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00NDY2LDYgKzQ0OTUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uR2V0QnlWYWxDZWxsLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIs
IGJhc2VHUFIsIHNjcmF0Y2hHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRp
b24oKTsKICNlbHNlCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwog
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMpOwpAQCAtNDUyOSw2ICs0NTU5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVy
dHlFbnVtZXJhdG9yLCByZXN1bHRHUFIsIGJhc2UuZ3ByKCkpOworICAgICAgICBjaGVja0V4Y2Vw
dGlvbigpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KQEAgLTQ1NzIsNiArNDYwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvSW5kZXhTdHJpbmcsIHJlc3VsdEdQUiwgaW5kZXguZ3By
KCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTg4
MzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBh
cmcyR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKIAogICAgICAgICBicmFuY2hUZXN0
MzIoY2FsbFJlc3VsdENvbmRpdGlvbiwgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgfSBlbHNlIHsK
QEAgLTM5MSw2ICszOTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBl
ZXBoCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxR1BS
LCBhcmcyR1BSKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BS
KTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICAgICAg
YnJhbmNoVGVzdDMyKGNhbGxSZXN1bHRDb25kaXRpb24sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAg
ICAgICB9CkBAIC00MTAsNyArNDEyLDcgQEAgcHVibGljOgogICAgICAgICBKdW1wVHlwZSBmcm9t
LCBTcGVjdWxhdGl2ZUpJVCogaml0LAogICAgICAgICBTX0pJVE9wZXJhdGlvbl9FSkogZnVuY3Rp
b24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICAgICAgOiBD
YWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFNfSklUT3BlcmF0aW9uX0VKSiwgR1BSUmVn
PigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIE5lZWRUb1NwaWxsLCByZXN1bHQp
CisgICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBOZWVkVG9TcGlsbCwgdHJ1ZSwgcmVz
dWx0KQogICAgICAgICAsIG1fYXJnMShhcmcxKQogICAgICAgICAsIG1fYXJnMihhcmcyKQogICAg
IHsKQEAgLTQ1MCw2ICs0NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlCiAgICAgCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVy
YXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAg
ICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5vcjMyKFRydXN0
ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRHUFIsIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4sIFVzZUNoaWxkcmVu
Q2FsbGVkRXhwbGljaXRseSk7CkBAIC01MTAsNiArNTEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RF
cUNlbGwsIHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxB
bGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsgLy8gTWF5
YmUgbm90IG5lZWRlZD8KICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBK
SVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2Vu
KTsKICAgICB9IGVsc2UgewpAQCAtNTM2LDYgKzU0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVz
dWx0R1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEs
IHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsgLy8gTWF5YmUgbm90
IG5lZWRlZD8KICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21w
aWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAg
ICB9CkBAIC01NzEsNiArNTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVOb25QZQogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQ
UiwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVz
dWx0R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8K
ICAgICAgICAgCiAgICAgICAgIG1faml0LmFuZDY0KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIo
MSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0Lm9yMzIoSklUQ29tcGlsZXI6OlRydXN0ZWRJ
bW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKQEAgLTY4Niw2ICs2OTIsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAgICAgc2xvd0Nhc2UubGluaygm
bV9qaXQpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3Zl
cmZsb3dGb3JWYXJhcmdzKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAg
ICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJnc1Rocm93aW5nUGF0aERpZE5vdFRo
cm93KTsKICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgcmVzdWx0
R1BSID0gc2NyYXRjaEdQUjI7CkBAIC03MTUsNiArNzIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBSaWdo
dCBub3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1bWVudHNHUFIgYW5kIHRoZSByZWdpc3RlciBmaWxl
IGlzIGZsdXNoZWQuCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFt
ZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudHNHUFIsIG51bVVz
ZWRTdGFja1Nsb3RzLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCk7CisgICAgICAgICAgICBjaGVj
a0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBOb3cgd2UgaGF2ZSB0
aGUgYXJndW1lbnQgY291bnQgb2YgdGhlIGNhbGxlZSBmcmFtZSwgYnV0IHdlJ3ZlIGxvc3QgdGhl
IGFyZ3VtZW50cyBvcGVyYW5kLgogICAgICAgICAgICAgLy8gUmVjb25zdHJ1Y3QgdGhlIGFyZ3Vt
ZW50cyBvcGVyYW5kIHdoaWxlIHByZXNlcnZpbmcgdGhlIGNhbGxlZSBmcmFtZS4KQEAgLTcyNCw2
ICs3MzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAg
ICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKC0oc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpICsgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNSAq
IHNpemVvZih2b2lkKikpKSksIHNjcmF0Y2hHUFIxLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblNldHVwVmFyYXJnc0ZyYW1lLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRjaEdQ
UjEsIGFyZ3VtZW50c0dQUiwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBy
ZXN1bHRHUFIgPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjsKICAgICAgICAgfQogICAgICAgICAK
QEAgLTE2ODYsNyArMTY5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2Fs
Tm90KE4KICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hU
ZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KH4xKSkpOwogICAgIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKLSAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29u
dmVydEpTVmFsdWVUb0Jvb2xlYW4sIHJlc3VsdEdQUiwgYXJnMUdQUikpOworICAgICAgICAgICAg
c2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9v
bGVhbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBOZWVkVG9TcGlsbCwgZmFsc2UpKTsgLy8gRG9lcyBu
b3QgbmVlZCBleGNlcHRpb24gY2hlY2suCiAgICAgCiAgICAgICAgIG1faml0LnhvcjY0KFRydXN0
ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZVRydWUpKSwgcmVzdWx0R1BSKTsKICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4s
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0xODQwLDYgKzE4NDksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5vZGUqIG5vCiAgICAgICAgICAgICBzaWxlbnRT
cGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0R1BSLCB2YWx1ZUdQUik7CiAg
ICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAgICAg
ICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE1heWJlIG5vdCBuZWVkZWQ/CiAgICAgCiAgICAgICAg
ICAgICBicmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFr
ZW4pOwogICAgICAgICAgICAganVtcChub3RUYWtlbik7CkBAIC0yMTY4LDYgKzIxNzgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkNvbnZlcnREb3VibGVUb0ludDUyLCByZXN1bHRHUFIsIHZhbHVlRlBSKTsKKyAgICAg
ICAgICAgIC8vY2hlY2tFeGNlcHRpb24oKTsgLy8gTm90IG5lZWRlZC4KICAgICAgICAgICAgIAog
ICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
KSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNJbnQ1MkFzRG91YmxlLApAQCAtMjE5OSw2ICsyMjEwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0LmdwcigpLCBv
cDFHUFIsIG9wMkdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVmFsdWVBZGQsIHJlc3VsdC5ncHIoKSwgb3AxR1BSLCBvcDJHUFIpOworICAgICAg
ICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTIzNjgsNiArMjM4MCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAg
IEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oc2luLCByZXN1
bHQuZnByKCksIG9wMUZQUik7CisgICAgICAgIC8vY2hlY2tFeGNlcHRpb24oKTsgLy8gTm90IG5l
ZWRlZC4gCiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0yMzgwLDYgKzIzOTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0
KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKGNvcywgcmVzdWx0LmZwcigpLCBvcDFGUFIp
OworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgICAgIGRv
dWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0yNDcwLDYgKzI0ODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25HZXRCeVZhbCwgcmVzdWx0LmdwcigpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAg
ICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI2
ODksNiArMjcwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5p
c1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFs
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIGFyZzFHUFIsIGFyZzJHUFIsIGFy
ZzNHUFIpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRy
dWU7CkBAIC0yOTAwLDYgKzI5MTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BS
KTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIC8vIE11c3QgdXNlIGpzVmFsdWVSZXN1bHQgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugc2NyZXcg
dXAgcmVnaXN0ZXIKICAgICAgICAgICAgIC8vIGFsbG9jYXRpb24sIHdoaWNoIHRoaW5rcyB0aGF0
IHRoaXMgbm9kZSBoYXMgYSByZXN1bHQuCkBAIC0yOTE1LDYgKzI5MzIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjLCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFy
Z3VtZW50R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgCiAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0y
OTI5LDYgKzI5NDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0
LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgY2hlY2tFeGNl
cHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29s
LCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCiAgICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMy
KFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMzI3MCw2ICszMjg5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEFTU0VS
VChvcCA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOwogICAgICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIsIG9wMUdQUik7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAg
ICAgaWYgKGRvbmUuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsK
ICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTMzNjIsNiArMzM4
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0VtcHR5
QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAg
ICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzQ0NCw2ICszNDY1
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBj
YWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9uTmV3QXJyYXksIHJlc3VsdC5ncHIo
KSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dm9p
ZCo+KGJ1ZmZlciksIG5vZGUtPm51bUNoaWxkcmVuKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlv
bigpOwogCiAgICAgICAgIGlmIChzY3JhdGNoU2l6ZSkgewogICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0zNTIxLDYgKzM1NDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlX
aXRoU2l6ZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmVHUFIsIHNpemVHUFIpOworICAgICAgICBjaGVj
a0V4Y2VwdGlvbigpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTM1NjQsNiArMzU4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJheUJ1ZmZlciwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksIG5vZGUt
PnN0YXJ0Q29uc3RhbnQoKSwgbm9kZS0+bnVtQ29uc3RhbnRzKCkpOworICAgICAgICBjaGVja0V4
Y2VwdGlvbigpOwogICAgICAgICAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTM1ODgsNiArMzYxMiw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdU
eXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50Rm9yVHlwZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwK
ICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVj
dHVyZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKICAgICAgICAgICAgICAgICBhcmd1bWVudEdQ
Uik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTM2MDQsNiArMzYyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAK
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHAsIHJlc3VsdC5ncHIoKSwg
bV9qaXQuY29kZUJsb2NrKCktPnJlZ2V4cChub2RlLT5yZWdleHBJbmRleCgpKSk7CisgICAgICAg
IGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDI1Myw2ICs0Mjc5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVPZlZhcmFyZ3MsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCBhcmd1bWVudHNHUFIsIGRhdGEtPm9mZnNldCk7CisgICAgICAgIGNoZWNr
RXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBsb2NrKEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKICAgICAgICAgewpAQCAtNDI4MSw2ICs0MzA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC5zdG9yZTMyKGFyZ0NvdW50SW5j
bHVkaW5nVGhpc0dQUiwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoZGF0YS0+bWFjaGluZUNvdW50
KSk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdz
LCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCksIGFyZ3VtZW50c0dQUiwgZGF0YS0+b2Zmc2V0
LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgZGF0YS0+bWFuZGF0b3J5TWluaW11bSk7CisgICAg
ICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChub2RlKTsK
ICAgICAgICAgYnJlYWs7CkBAIC00MzkyLDYgKzQ0MjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHksIHJlc3VsdEdQUiwg
YmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVh
bik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQ1NTksNiArNDU4OCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRv
ciwgcmVzdWx0R1BSLCBiYXNlLmdwcigpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC00NTk4LDYgKzQ2MjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Ub0luZGV4U3RyaW5nLCByZXN1bHRHUFIsIGluZGV4LmdwcigpKTsKKyAgICAg
ICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00ODMyLDYgKzQ4NjMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb252ZXJ0TWFjaGluZUludChFCiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3Rl
cnMocmVzdWx0R1BSKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERv
dWJsZVRvSW50NTIsIHJlc3VsdEdQUiwgdmFsdWVHUFIpOwogICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMocmVzdWx0R1BSKTsKKyAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQu
CiAKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCB2
YWx1ZUVkZ2UsIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91YmxlLApAQCAtNDg2NCw2ICs0ODk2
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRG91YmxlUmVwTQogICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0RG91
YmxlVG9JbnQ1MiwgcmVzdWx0R1BSLCB2YWx1ZUZQUik7CisgICAgLy9jaGVja0V4Y2VwdGlvbigp
OyAvLyBOb3QgbmVlZGVkLgogICAgIAogICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICBKU1Zh
bHVlUmVncygpLCBlZGdlLCBTcGVjSW50NTJBc0RvdWJsZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxODgzNzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTg4LDYgKzk4OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbihOb2RlKiBub2QKICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICBvcGVyYXRpb25HZW5l
cmljSW4sIGV4dHJhY3RSZXN1bHQoSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlc3VsdEdQUikp
LAogICAgICAgICBiYXNlR1BSLCByZWdzKTsKKyAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgIGJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBs
aWNpdGx5KTsKIH0KIApAQCAtMTk4Miw2ICsxOTgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMo
cmVzdWx0R3ByKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24odG9JbnQzMiwgcmVzdWx0R3By
LCBmcHIpOwogICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOwor
ICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKIAogICAgICAgICAgICAgY29udmVydGVkLmFw
cGVuZChtX2ppdC5qdW1wKCkpOwogCkBAIC0yMDQxLDYgKzIwNDMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAgICAgICAgICAgICAgICAgc2lsZW50U3BpbGxB
bGxSZWdpc3RlcnMocmVzdWx0R3ByKTsKICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKHRv
SW50MzIsIHJlc3VsdEdwciwgZnByKTsKICAgICAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKHJlc3VsdEdwcik7CisgICAgICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKIAog
ICAgICAgICAgICAgICAgIGNvbnZlcnRlZC5hcHBlbmQobV9qaXQuanVtcCgpKTsKIApAQCAtMzY3
NSw2ICszNjc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZAog
ICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihmbW9kQXNERkdPcGVyYXRpb24sIHJlc3VsdC5mcHIoKSwgb3AxRlBSLCBvcDJGUFIp
OworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgICAgIAog
ICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzcxMyw2ICszNzE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRo
Um91bmQoTgogICAgIEZQUlJlc3VsdCByb3VuZGVkUmVzdWx0QXNEb3VibGUodGhpcyk7CiAgICAg
RlBSUmVnIHJlc3VsdEZQUiA9IHJvdW5kZWRSZXN1bHRBc0RvdWJsZS5mcHIoKTsKICAgICBjYWxs
T3BlcmF0aW9uKGpzUm91bmQsIHJlc3VsdEZQUiwgdmFsdWVGUFIpOworICAgIGNoZWNrRXhjZXB0
aW9uKCk7CiAgICAgaWYgKHByb2R1Y2VzSW50ZWdlcihub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgp
KSkgewogICAgICAgICBHUFJUZW1wb3Jhcnkgcm91bmRlZFJlc3VsdEFzSW50MzIodGhpcyk7CiAg
ICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwpAQCAtMzczNiw2ICszNzQxLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3FydChObwogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKHNxcnQsIHJlc3VsdC5mcHIoKSwgb3AxRlBSKTsKKyAgICAgICAgLy9jaGVja0V4
Y2VwdGlvbigpOyAvLyBOb3QgbmVlZGVkLgogICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZw
cigpLCBub2RlKTsKICAgICB9IGVsc2UgewogICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIG9wMSk7CkBAIC0zNzk0LDYgKzM4MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJpdGhQb3coTm9kCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNraXBGYWxsYmFj
ayA9IGNvbXBpbGVBcml0aFBvd0ludGVnZXJGYXN0UGF0aChtX2ppdCwgeE9wZXJhbmRDb3B5RnBy
LCBjb3VudGVyR3ByLCByZXN1bHRGcHIpOwogICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0Rv
dWJsZSh5T3BlcmFuZEdwciwgeU9wZXJhbmRmcHIuZnByKCkpOwogICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk1hdGhQb3csIHJlc3VsdEZwciwgeE9wZXJhbmRmcHIsIHlPcGVyYW5kZnBy
LmZwcigpKTsKKyAgICAgICAgLy9jaGVja0V4Y2VwdGlvbigpOyAvLyBOb3QgbmVlZGVkLgogCiAg
ICAgICAgIHNraXBGYWxsYmFjay5saW5rKCZtX2ppdCk7CiAgICAgICAgIGRvdWJsZVJlc3VsdChy
ZXN1bHRGcHIsIG5vZGUpOwpAQCAtMzgyNiw2ICszODMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFyaXRoUG93KE5vZAogICAgIGZhaWxlZEV4cG9uZW50Q29udmVyc2lvblRvSW50
ZWdlci5saW5rKCZtX2ppdCk7CiAKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hdGhQb3cs
IHJlc3VsdEZwciwgeE9wZXJhbmRmcHIsIHlPcGVyYW5kZnByKTsKKyAgICAvL2NoZWNrRXhjZXB0
aW9uKCk7IC8vIE5vdCBOZWVkZWQuCiAgICAgc2tpcEZhbGxiYWNrLmxpbmsoJm1faml0KTsKICAg
ICBkb3VibGVSZXN1bHQocmVzdWx0RnByLCBub2RlKTsKIH0KQEAgLTM4MzcsNiArMzg0NSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aExvZyhOb2QKICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgY2FsbE9wZXJhdGlvbihs
b2csIHJlc3VsdC5mcHIoKSwgb3AxRlBSKTsKKyAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5v
dCBuZWVkZWQuCiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiB9CiAKQEAg
LTQ2MTUsNiArNDYyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlv
bigKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uLCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKTsKKyAg
ICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDc0MCw2ICs0NzUwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFjdGl2YQogICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QsCiAgICAgICAgICAgICByZXN1bHRHUFIs
IHN0cnVjdHVyZSwgc2NvcGVHUFIsIHRhYmxlLCBUcnVzdGVkSW1tMzIoaW5pdGlhbGl6YXRpb25W
YWx1ZS50YWcoKSksIFRydXN0ZWRJbW0zMihpbml0aWFsaXphdGlvblZhbHVlLnBheWxvYWQoKSkp
OwogI2VuZGlmCisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ5OTAsNyArNTAw
MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWQKICAgICAgICAg
fSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1f
aml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGRlc3RHUFIpOyB9KTsKICAgICAK
LSAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0
ZVNjb3BlZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBjaGVja0V4Y2Vw
dGlvbigpOwogICAgIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTUw
MTcsNyArNTAyOSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWQK
ICAgICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0
R1BSKSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGRlc3RHUFIpOyB9
KTsKICAgICAKLSAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBj
aGVja0V4Y2VwdGlvbigpOwogICAgIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
IH0KQEAgLTUwMzIsNyArNTA0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3Rp
ZnlXcml0ZSgKICAgICAgICAgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKTsKICAgICAKICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0
aGlzLCBvcGVyYXRpb25Ob3RpZnlXcml0ZSwgTm9SZXN1bHQsIHNldCkpOworICAgICAgICBzbG93
UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbk5vdGlmeVdyaXRlLCBOb1Jlc3VsdCwg
c2V0LCBOZWVkVG9TcGlsbCwgZmFsc2UpKTsgLy8gRG9lcyBub3QgbmVlZCBleGNlcHRpb24gY2hl
Y2suCiAgICAgCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC01MDY0LDYgKzUwNzcsNyBAQCBi
b29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwRXhlYyhOCiAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3Vt
ZW50R1BSKTsKKyAgICBjaGVja0V4Y2VwdGlvbigpOwogCiAgICAgYnJhbmNoVGVzdDMyKGludmVy
dCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdC5ncHIo
KSwgdGFrZW4pOwogICAgIGp1bXAobm90VGFrZW4pOwpAQCAtNTE5OSw2ICs1MjEzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRlUHJvcAogCiAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25SZWFsbG9jYXRlQnV0dGVyZmx5VG9IYXZlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBh
Y2l0eSwgcmVzdWx0LmdwcigpLCBiYXNlR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsK
ICAgICAgICAgCiAgICAgICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNTI0Miw2ICs1MjU3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlYWxsb2NhdGVQcgogCiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVy
Zmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlLCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIG5ld1NpemUg
LyBzaXplb2YoSlNWYWx1ZSkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogCiAgICAgICAg
IHN0b3JhZ2VSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
NTM0OSw2ICs1MzY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JD
YQogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9y
KTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVj
dG9yT25DZWxsLCByZXN1bHRHUFIsIG9wMUdQUik7CiAgICAgICAgIH0KKyAgICAgICAgY2hlY2tF
eGNlcHRpb24oKTsKICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKICAgICAgICAgICAgIGRvbmUu
bGluaygmbV9qaXQpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC01
OTU0LDYgKzU5NzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKE5vZGUq
CiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2gpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkZpbmRTd2l0Y2hJbW1UYXJnZXRGb3JEb3VibGUsIHNjcmF0Y2gs
IHZhbHVlUmVncy5ncHIoKSwgZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CiAgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7CisgICAgICAgIC8vY2hlY2tFeGNlcHRpb24oKTsg
Ly8gTm90IG5lZWRlZC4KICAgICAgICAgbV9qaXQuanVtcChzY3JhdGNoKTsKICNlbHNlCiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEludCA9IG1faml0LmJyYW5jaDMyKApAQCAtNTk2OCw2
ICs1OTg2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbShOb2RlKgogICAg
ICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhzY3JhdGNoKTsKICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFyZ2V0Rm9yRG91YmxlLCBzY3JhdGNoLCB2YWx1
ZVJlZ3MsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKHNjcmF0Y2gpOworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVk
ZWQuCisKICAgICAgICAgbV9qaXQuanVtcChzY3JhdGNoKTsKICNlbmRpZgogICAgICAgICBub1Jl
c3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtNjIyNyw2ICs2MjQ3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uUwogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3Bl
cmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgsIHN0cmlu
Zyk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIG1faml0Lmp1bXAoc3RyaW5n
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYyNjQsNiArNjI4NSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmdPblMKICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lz
dGVycyhzdHJpbmcpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBz
dHJpbmcsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgsIHN0cmluZyk7CiAgICAgc2lsZW50RmlsbEFs
bFJlZ2lzdGVycyhzdHJpbmcpOworICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgbV9qaXQuanVt
cChzdHJpbmcpOwogfQogCkBAIC02NDAxLDYgKzY0MjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzdG9yZVRvV3JpdGVCYXJyaWVyCiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoSW52YWxp
ZEdQUlJlZyk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25GbHVzaFdyaXRlQmFycmllckJ1
ZmZlciwgY2VsbCk7CiAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhJbnZhbGlkR1BSUmVnKTsK
KyAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAKICAgICBkb25lLmxpbmso
Jm1faml0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHJldmlzaW9uIDE4ODM3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtODg3LDIzOSArODg3LDIz
OSBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FIG9wZXJhdGlvbikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
RXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGNlbGwpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FTyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBvYmplY3QpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUob2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRU9TIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVjdCwgc2l6ZV90IHNpemUpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUob2JqZWN0LCBUcnVzdGVkSW1t
UHRyKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRU9aIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIG9iamVjdCwgaW50MzJfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9iamVjdCwgVHJ1c3RlZEltbVB0cihzaXplKSk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KENfSklUT3BlcmF0aW9uX0VPWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvYmpl
Y3QsIGludDMyX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShvYmplY3QsIFRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXpl
KSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgb2xkLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShvbGQsIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlv
bl9FUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc2l6ZSkp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FU0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHNpemVf
dCBpbmRleCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihpbmRleCksIGFyZzEpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJh
dGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGFyZzIpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJ
VE9wZXJhdGlvbl9FU3RQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRy
dXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJh
dGlvbl9FU3RTUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBzaXplX3QgaW5kZXgsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZElt
bVB0cihpbmRleCksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9F
Q1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
Mik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKENfSklUT3BlcmF0aW9uX0VDWkMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9w
ZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0Nl
bGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VJY2Ygb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0SnNjU3ltdGFiSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc2Nv
cGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3RlZEltbTY0IGluaXRpYWxWYWx1ZSkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSksIHNjb3BlLCBUcnVzdGVkSW1tUHRyKHRhYmxlKSwgaW5pdGlhbFZhbHVlKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogI2Vsc2UKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpzY1N5bXRhYkogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSog
dGFibGUsIFRydXN0ZWRJbW0zMiB0YWcsIFRydXN0ZWRJbW0zMiBwYXlsb2FkKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHIodGFibGUpLCBwYXlsb2FkLCB0YWcpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAjZW5kaWYKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
LCBUcnVzdGVkSW1tMzIoa25vd25MZW5ndGgpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25v
d25MZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3Rl
ZEltbTMyKGtub3duTGVuZ3RoKSwgVHJ1c3RlZEltbTMyKG1pbkNhcGFjaXR5KSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklU
T3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgR1BSUmVnIGxlbmd0aCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxlbmd0aCk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklU
T3BlcmF0aW9uX0VTdFpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEdQUlJlZyBsZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5KQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgbGVuZ3RoLCBUcnVzdGVkSW1tMzIobWluQ2FwYWNpdHkpKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRp
b25fRUpzc1N0IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9u
X0VKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc3NKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FR0Mgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VH
QyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMik7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSnNzX0pJVE9w
ZXJhdGlvbl9FWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEpTQ2VsbCogYXJnMSkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9
CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VD
SWNmIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRUNDSWNmIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1t
UHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIGludCBhcmcyKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0z
MihhcmcyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBKU0Nl
bGwqIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgSlNDZWxsKiBhcmcxLCBHUFJSZWcgYXJnMikK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKGFyZzEpLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxG
cmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRPcGVyYXRpb25fRUNiIG9wZXJhdGlvbiwgdm9p
ZCogcG9pbnRlcikKQEAgLTExMzYsNyArMTEzNiw3IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KQEAgLTExODgsMjggKzExODgsMjggQEAgcHVibGlj
OgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVF9KSVRPcGVyYXRpb25fRUpz
cyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlv
bl9FSnNjWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBpbnQzMl90IGFy
ZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgVHJ1c3RlZEltbTMyKGFyZzIpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0Nl
bGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVdzIG9w
ZXJhdGlvbiwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCkKQEAgLTEyMjIsMTIgKzEyMjIs
MTIgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpf
SklUT3BlcmF0aW9uX0Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSkKICAg
ICB7CkBAIC0xMjQ5LDEwMiArMTI0OSwxMDIgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUkgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VBWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzc1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQ
UyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHZvaWQqIHBvaW50ZXIsIHNpemVfdCBzaXplKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIocG9pbnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
U1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQgc3RhcnRDb25zdGFudCwgaW50IG51bUNv
bnN0YW50cykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIoc3RhcnRDb25zdGFudCksIFRydXN0ZWRJbW0zMihudW1Db25zdGFudHMp
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IGFyZzEsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
Y2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lDSSBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BS
UmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyks
IGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVn
IGFyZzEsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRy
dXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VEQSBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUpDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKQSBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJn
MSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90
IGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVpaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgaW50MzJfdCBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzIp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FWkljZlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQz
Ml90IGFyZzEsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcgYXJnMikK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tMzIoYXJnMSksIFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgYXJnMik7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRUpTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVl
LCBzaXplX3QgaW5kZXgpCkBAIC0xMzU2LDI4ICsxMzU2LDI4IEBAIHB1YmxpYzoKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdEogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGFyZzIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSkpDIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSlpD
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fSiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKQEAgLTEzODcsMTIyICsxMzg3LDEyMiBAQCBw
dWJsaWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlv
bl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
Skogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
Mik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSkKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0ubV92YWx1ZSkpKSk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIgaW1tLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0
KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0ubV92YWx1ZSkpKSwgYXJnMik7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNKIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
Q0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJn
MikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLmdwcigpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1pEIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKUFAgb3BlcmF0aW9uLCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0
cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNz
aUpKSSBvcGVyYXRpb24sIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBh
cmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VKSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklU
T3BlcmF0aW9uX0VQWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJl
ZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRU9aSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25f
RUNKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQog
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0pJVE9wZXJhdGlvbl9FSiBv
cGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9u
X0VKWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgdW5zaWduZWQgYXJn
MiwgdW5zaWduZWQgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJnMiksIFRydXN0ZWRJbW0zMihhcmczKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEZfSklUT3BlcmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCB1bnNpZ25lZCBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVz
dGVkSW1tMzIoYXJnMyksIGFyZzQpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgdW5zaWduZWQgYXJnMikKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJn
MikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWkpaWlogb3BlcmF0aW9uLCB1bnNpZ25lZCBhcmcxLCBH
UFJSZWcgYXJnMiwgdW5zaWduZWQgYXJnMywgR1BSUmVnIGFyZzQsIHVuc2lnbmVkIGFyZzUpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyKGFyZzEpLCBhcmcyLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQsIFRydXN0ZWRJbW0zMihh
cmc1KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogI2Vs
c2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKIApAQCAtMTUzNCwxNDMgKzE1MzQsMTQzIEBAIHB1Ymxp
YzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0Ug
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIHZvaWQqIHBvaW50ZXIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VQUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQ
YXlsb2FkLCBHUFJSZWcgYXJnMSwgdm9pZCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIp
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BS
UmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxv
YWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUEgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBWiBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJl
ZyByZXN1bHRUYWcsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwg
R1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNz
WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0
VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KHBvaW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCBy
ZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGludCBzdGFydENvbnN0YW50LCBpbnQgbnVtQ29u
c3RhbnRzKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50KSwgVHJ1c3RlZEltbTMyKG51bUNvbnN0YW50cykp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
SlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BS
UmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgdm9pZCogcG9pbnRlcikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKUCBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcx
UGF5bG9hZCwgYXJnMVRhZywgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9h
ZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJl
ZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIo
Y2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FU3NpQ0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgY29uc3QgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZEltbVB0
cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzFUYWcsIEdQUlJl
ZyBhcmcxUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwg
YXJnMVBheWxvYWQsIGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIGludDMyX3QgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgVHJ1c3RlZElt
bTMyKGFyZzFUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQs
IHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FREEgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJC
SVRfRFVNTVlfQVJHIGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwg
R1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgVHJ1c3Rl
ZEltbTMyIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1N
WV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQs
IHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQ
YXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGludDMyX3QgYXJn
MSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tMzIoYXJnMSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FWkljZlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZCwgaW50MzJfdCBhcmcxLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpLCBUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxG
cmFtZSksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVz
dWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0
UGF5bG9hZCwgaW50MzJfdCBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzIpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9
CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VK
UyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTVmFsdWVSZWdzIHZhbHVlLCBzaXplX3QgaW5k
ZXgpCkBAIC0xNjgyLDEzNyArMTY4MiwxMzcgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQ
YXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENf
SklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcs
IEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKLSAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihTX0pJVE9wZXJhdGlvbl9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICAvL0pJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCisgICAgLy97CisgICAgLy8g
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoYXJnMVBheWxvYWQsIGFyZzFUYWcpOworICAgIC8vICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAvL30K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJ
XzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRp
b25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBh
cmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9h
ZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQ
YXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBh
cmcyVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxv
YWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRf
MzJCSVRfRFVNTVlfQVJHIGltbSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5
bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShF
QUJJXzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyks
IFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJn
Mi50YWdHUFIoKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigp
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQu
cGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcp
OwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRU9aRCBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFy
ZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJS
ZWcgYXJnMVBheWxvYWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpQUCBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2lu
dGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVB
QklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1t
UHRyKHBvaW50ZXIpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
U3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJn
MVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlBheWxvYWQsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcy
UGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBUcnVzdGVkSW1tUHRyKHVp
ZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRp
b24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDSkogb3BlcmF0
aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BS
UmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJn
M1BheWxvYWQsIGFyZzNUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRf
MzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8z
MkJJVF9EVU1NWV9BUkcgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9aSiBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzNUYWcsIEdQUlJlZyBh
cmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJH
IGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklU
T3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQ
UlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oWl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIHVuc2lnbmVkIGFyZzIsIHVuc2lnbmVkIGFyZzMp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8z
MkJJVF9EVU1NWV9BUkcgIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tMzIoYXJnMiks
IFRydXN0ZWRJbW0zMihhcmczKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBh
eWxvYWQsIHVuc2lnbmVkIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBU
cnVzdGVkSW1tMzIoYXJnMyksIGFyZzQpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCB1bnNp
Z25lZCBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1t
MzIoYXJnMikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWkpaWlogb3BlcmF0aW9uLCB1bnNpZ25lZCBh
cmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCB1bnNpZ25lZCBhcmczLCBH
UFJSZWcgYXJnNCwgdW5zaWduZWQgYXJnNSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzJQYXlsb2FkLCBhcmcy
VGFnLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQsIFRydXN0ZWRJbW0zMihhcmc1KSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogI3VuZGVmIEVBQklfMzJC
SVRfRFVNTVlfQVJHCiAjdW5kZWYgU0g0XzMyQklUX0RVTU1ZX0FSRwpAQCAtMTg4NCwyOCArMTg4
NCwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkgeyB9CiAj
ZW5kaWYKIAotICAgIC8vIFRoZXNlIG1ldGhvZHMgYWRkIGNhbGwgaW5zdHJ1Y3Rpb25zLCB3aXRo
IG9wdGlvbmFsIGV4Y2VwdGlvbiBjaGVja3MgJiBzZXR0aW5nIHJlc3VsdHMuCi0gICAgSklUQ29t
cGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0
ciYgZnVuY3Rpb24pCisgICAgdm9pZCBjaGVja0V4Y2VwdGlvbigpCiAgICAgewotICAgICAgICBw
cmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7Ci0gICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmln
aW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwotICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNv
bnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxs
IGluc3RydWN0aW9ucywgd2l0aCBvcHRpb25hbCBleGNlcHRpb24gY2hlY2tzICYgc2V0dGluZyBy
ZXN1bHRzLgorICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25Q
dHImIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwog
ICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRD
YWxsKGZ1bmN0aW9uKTsKLSAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2tXaXRoQ2FsbEZyYW1l
Um9sbGJhY2soKTsKLSAgICAgICAgcmV0dXJuIGNhbGw7CisgICAgICAgIHJldHVybiBtX2ppdC5h
cHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rp
b24sIEdQUlJlZyByZXN1bHQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhD
YWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikK
ICAgICB7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKLSAgICAgICAgaWYgKChyZXN1bHQgIT0gSW52YWxpZEdQ
UlJlZykgJiYgKHJlc3VsdCAhPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpCi0gICAgICAgICAg
ICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOworICAgICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrV2l0aENhbGxGcmFtZVJvbGxiYWNrKCk7CiAgICAgICAgIHJldHVy
biBjYWxsOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxG
cmFtZVJvbGxiYWNrT25FeGNlcHRpb25TZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0
aW9uLCBHUFJSZWcgcmVzdWx0KQpAQCAtMTkxNywzNSArMTkxMCwxOCBAQCBwdWJsaWM6CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rp
b25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcHJlcGFyZUZv
ckV4dGVybmFsQ2FsbCgpOwotICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3Vy
cmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgICAgICBpZiAocmVzdWx0ICE9IElu
dmFsaWRHUFJSZWcpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVl
R1BSLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgYXBwZW5kQ2FsbChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCi0gICAgewot
ICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7Ci0gICAgICAgIG1faml0LmVtaXRTdG9y
ZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgcmV0
dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOwotICAgIH0KLSAgICBKSVRDb21waWxlcjo6
Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9u
UHRyJiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdDEsIEdQUlJlZyByZXN1bHQyKQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0
aW9uLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCiAgICAgewotICAgICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlv
bik7CisgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9u
KTsKICAgICAgICAgbV9qaXQuc2V0dXBSZXN1bHRzKHJlc3VsdDEsIHJlc3VsdDIpOwogICAgICAg
ICByZXR1cm4gY2FsbDsKICAgICB9CiAjaWYgQ1BVKFg4NikKLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRy
JiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKLSAgICAg
ICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkRlBSUmVnKSB7Ci0gICAgICAgICAgICBtX2ppdC5hc3Nl
bWJsZXIoKS5mc3RwbCgwLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAg
ICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGNhbGw7Ci0gICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHIm
IGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0KQogICAgIHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24pOwpAQCAtMTk1NiwxMyArMTkzMiw2IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQogI2VsaWYgQ1BVKEFSTSkgJiYgIUNQ
VShBUk1fSEFSREZQKQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVz
dWx0KQotICAgIHsKLSAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOwotICAgICAgICBpZiAocmVzdWx0ICE9IEludmFs
aWRGUFJSZWcpCi0gICAgICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS52bW92KHJlc3VsdCwgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7Ci0gICAgICAg
IHJldHVybiBjYWxsOwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0
UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7
CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsK
QEAgLTE5NzEsMTMgKzE5NDAsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjYWxsOwogICAg
IH0KICNlbHNlIC8vIENQVShYODZfNjQpIHx8IChDUFUoQVJNKSAmJiBDUFUoQVJNX0hBUkRGUCkp
IHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShTSDQpCi0gICAgSklUQ29tcGlsZXI6
OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlv
blB0ciYgZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQpCi0gICAgewotICAgICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7Ci0g
ICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZEZQUlJlZykKLSAgICAgICAgICAgIG1faml0Lm1v
dmVEb3VibGUoRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVy
biBjYWxsOwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0
KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7CiAgICAg
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlz
aW9uIDE4ODM3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDE1ICsyMDEsNDAgQEAgdm9pZCBBc3NlbWJseUhl
bHBlcnM6OmNhbGxFeGNlcHRpb25GdXp6KAogICAgIGlmICghT3B0aW9uczo6ZW5hYmxlRXhjZXB0
aW9uRnV6eigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoc3RhY2tBbGlnbm1lbnRC
eXRlcygpID49IHNpemVvZih2b2lkKikgKiAyKTsKLSAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKHN0
YWNrQWxpZ25tZW50Qnl0ZXMoKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBwb2tlKEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCAwKTsKLSAgICBwb2tlKEdQUkluZm86OnJldHVyblZhbHVl
R1BSMiwgMSk7CisgICAgc2l6ZV90IG9mZnNldFNpemUgPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
ICogKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnMpOworICAgIGlmICgob2Zmc2V0U2l6ZSAlIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSkgIT0gMCkK
KyAgICAgICAgb2Zmc2V0U2l6ZSArPSAob2Zmc2V0U2l6ZSAlIHN0YWNrQWxpZ25tZW50Qnl0ZXMo
KSk7CisgICAgQVNTRVJUKG9mZnNldFNpemUgJSBzdGFja0FsaWdubWVudEJ5dGVzKCkgPT0gMCk7
CisKKyAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKG9mZnNldFNpemUpLCBzdGFja1BvaW50ZXJSZWdp
c3Rlcik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzOyArK2kpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBzdG9yZTY0KEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOworI2Vsc2UKKyAgICAgICAgc3Rv
cmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGFj
a1BvaW50ZXJSZWdpc3RlciwgaSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKKyNlbmRpZgor
ICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVyczsgKytpKQorICAgICAgICBzdG9yZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkp
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKEdQUkluZm86
Om51bWJlck9mUmVnaXN0ZXJzICsgaSkqc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOworCisKICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25FeGNlcHRp
b25GdXp6KSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgY2FsbChH
UFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwotICAgIHBlZWsoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIDApOwotICAgIHBlZWsoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCAxKTsK
LSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIHN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKKworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86
Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBs
b2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGkgKiBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisjZWxzZQor
ICAgICAgICBsb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIGkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7
CisjZW5kaWYKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkKKyAgICAgICAgbG9hZERvdWJsZShNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKEdQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzICsgaSkqc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkp
OworCisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihvZmZzZXRTaXplKSwgc3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogfQogCiBBc3NlbWJseUhlbHBlcnM6Okp1bXAgQXNzZW1ibHlIZWxwZXJzOjplbWl0
RXhjZXB0aW9uQ2hlY2soRXhjZXB0aW9uQ2hlY2tLaW5kIGtpbmQsIEV4Y2VwdGlvbkp1bXBXaWR0
aCB3aWR0aCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259074</attachid>
            <date>2015-08-14 19:27:04 -0700</date>
            <delta_ts>2015-08-15 01:37:34 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>116175</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NTA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDE1LTA4LTE0ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBERkcgY2FsbE9wZXJhdGlvbnMgc2hvdWxkIG5vdCBpbXBsaWNpdGx5IGVtaXQgYW4gZXhj
ZXB0aW9uIGNoZWNrLiBBdCBjYWxsT3BlcmF0aW9uIGNhbGwgc2l0ZXMsIHdlIHNob3VsZCBleHBs
aWNpdGx5IGVtaXQgZXhjZXB0aW9uIGNoZWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3OTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIERGRyBi
ZWluZyBhYmxlIHRvIGhhbmRsZSBleGNlcHRpb25zLiAKKyAgICAgICAgVG8gZG8gdGhpcywgd2Ug
bmVlZCBtb3JlIGNvbnRyb2wgb3ZlciB3aGVuIHdlIGVtaXQgZXhjZXB0aW9uIGNoZWNrcy4KKyAg
ICAgICAgU3BlY2lmaWNhbGx5LCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gc2lsZW50RmlsbCBiZWZv
cmUgZW1pdHRpbmcgYW4gZXhjZXB0aW9uIGNoZWNrLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXMg
dGhhdC4gVGhpcyBwYXRjaCBhbHNvIGFsbG93cyB1cyB0byBlYXNpbHkgc2VlIHdoaWNoCisgICAg
ICAgIG9wZXJhdGlvbnMgZG8gYW5kIGRvIG5vdCBlbWl0IGV4Y2VwdGlvbiBjaGVja3MuIEZpbmRp
bmcgdGhpcyBpbmZvcm1hdGlvbgorICAgICAgICBvdXQgYmVmb3JlIHdhcyBhIHBhaW4uCisKKyAg
ICAgICAgKiBkZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRm
Zy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRm
Zy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmV4Y2VwdGlv
bkNoZWNrKToKKyAgICAgICAgKiBkZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5l
cmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpDYWxsU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxTbG93UGF0aEdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbFNsb3dQYXRoR2VuZXJhdG9yOjp0ZWFyRG93bik6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0
b3I6OkNhbGxSZXN1bHRBbmROb0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6REZHOjpDYWxsUmVzdWx0QW5kT25lQXJndW1lbnRTbG93UGF0aEdlbmVyYXRvcjo6Q2Fs
bFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNhbGxSZXN1bHRBbmRUd29Bcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3Vs
dEFuZFR3b0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpD
YWxsUmVzdWx0QW5kVGhyZWVBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3VsdEFu
ZFRocmVlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNh
bGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRG
b3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxS
ZXN1bHRBbmRGaXZlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRGaXZl
QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRo
Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3FydCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aFBvdyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aExvZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90aWZ5V3JpdGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwRXhlYyk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcik6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tFeGNlcHRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09u
RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2Fs
bFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uU2V0UmVzdWx0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OkNvbXBh
cmVBbmRCb3hCb29sZWFuU2xvd1BhdGhHZW5lcmF0b3I6OkNvbXBhcmVBbmRCb3hCb29sZWFuU2xv
d1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21wYXJlQW5kQm94Qm9v
bGVhblNsb3dQYXRoR2VuZXJhdG9yOjpDb21wYXJlQW5kQm94Qm9vbGVhblNsb3dQYXRoR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVO
b25QZWVwaG9sZUNvbXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpu
b25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb252
ZXJ0TWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZURvdWJsZVJlcE1hY2hpbmVJbnQpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNhbGxFeGNlcHRpb25GdXp6KToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0RXhjZXB0aW9uQ2hlY2spOgorCiAy
MDE1LTA4LTE0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVXNl
IFdURjo6TG9jayBhbmQgV1RGOjpDb25kaXRpb24gaW5zdGVhZCBvZiBXVEY6Ok11dGV4LCBXVEY6
OlRocmVhZENvbmRpdGlvbiwgc3RkOjptdXRleCwgYW5kIHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5l
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5
aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNpb24gMTg4NTA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMyw2ICsxMTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBqaXQtPnNp
bGVudEZpbGwobV9wbGFuc1tpXSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBqaXQtPmNoZWNr
RXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBpZiAobV9vcCA9PSBBcnJheWlmeVRvU3Ry
dWN0dXJlKSB7CiAgICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNpb24gMTg4NTA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGxhbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAg
ICBqaXQtPnNpbGVudFNwaWxsKG1fcGxhbnNbaV0pOwogICAgICAgICBqaXQtPmNhbGxPcGVyYXRp
b24obV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIsIG1fc3RydWN0dXJlLCBtX3NpemUpOworICAgICAg
ICBqaXQtPmNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3Bl
Y3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBqaXQtPnNpbGVu
dEZpbGwobV9wbGFuc1tpXSwgY2FuVHJhbXBsZSk7CkBAIC0xMDMsNiArMTA0LDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICBqaXQtPm1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9hcnJheVN0b3JhZ2VTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZG9uZS5s
aW5rKCZqaXQtPm1faml0KTsKICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKG1fZnVuY3Rpb24s
IG1fcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBtX3NpemVHUFIpOworICAgICAgICBqaXQtPmNoZWNr
RXhjZXB0aW9uKCk7CiAgICAgICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6
OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9wbGFucy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFu
c1tpXSwgY2FuVHJhbXBsZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
bGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Ns
b3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE4ODUwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAg
aml0LT5zaWxlbnRTcGlsbChtX3BsYW5zW2ldKTsKICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9u
KAogICAgICAgICAgICAgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCBtX3Jlc3VsdEdQ
UiwgbV9zdHJ1Y3R1cmUsIG1fbGVuZ3RoR1BSLCBtX21pbkNhcGFjaXR5KTsKKyAgICAgICAgaml0
LT5jaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBHUFJSZWcgY2FuVHJhbXBsZSA9IFNwZWN1bGF0
aXZlSklUOjpwaWNrQ2FuVHJhbXBsZShtX3Jlc3VsdEdQUik7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgaml0LT5zaWxlbnRGaWxs
KG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTg4NTA0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMTEgKzE2
NSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICB9CiAgICAg
Ci0gICAgdm9pZCBleGNlcHRpb25DaGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCi0gICAgewotICAg
ICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoanVtcFRvSGFuZGxlcik7Ci0gICAgfQotICAg
IAogICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soKQogICAgIHsKICAgICAgICAgbV9leGNlcHRpb25D
aGVja3MuYXBwZW5kKGVtaXRFeGNlcHRpb25DaGVjaygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE4ODUwNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEdQUlJlZyBj
YW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKGV4dHJhY3RSZXN1bHQo
bV9yZXN1bHRSZWdzKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgp
OyBpLS07KQogICAgICAgICAgICAgaml0LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1w
bGUpOworICAgICAgICBqaXQtPmNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBq
dW1wVG8oaml0KTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ns
b3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxODg1MDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkzLDEwICs5MywxMSBAQCBjbGFzcyBDYWxsU2xvd1BhdGhHZW5lcmF0b3IgOiBwdWJsaWMgSnVt
CiBwdWJsaWM6CiAgICAgQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBm
cm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAg
IFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0KQorICAgICAg
ICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ss
IFJlc3VsdFR5cGUgcmVzdWx0KQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxK
dW1wVHlwZT4oZnJvbSwgaml0KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAg
ICAgICwgbV9zcGlsbE1vZGUoc3BpbGxNb2RlKQorICAgICAgICAsIG1fbmVlZHNFeGNlcHRpb25D
aGVjayhuZWVkc0V4Y2VwdGlvbkNoZWNrKQogICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKICAg
ICB7CiAgICAgICAgIGlmIChtX3NwaWxsTW9kZSA9PSBOZWVkVG9TcGlsbCkKQEAgLTEzMCwxMSAr
MTMxLDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxh
bnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5z
W2ldLCBjYW5UcmFtcGxlKTsKICAgICAgICAgfQorICAgICAgICBpZiAobV9uZWVkc0V4Y2VwdGlv
bkNoZWNrKQorICAgICAgICAgICAgaml0LT5jaGVja0V4Y2VwdGlvbigpOwogICAgICAgICB0aGlz
LT5qdW1wVG8oaml0KTsKICAgICB9CiAKICAgICBGdW5jdGlvblR5cGUgbV9mdW5jdGlvbjsKICAg
ICBTcGlsbFJlZ2lzdGVyc01vZGUgbV9zcGlsbE1vZGU7CisgICAgYm9vbCBtX25lZWRzRXhjZXB0
aW9uQ2hlY2s7CiAgICAgUmVzdWx0VHlwZSBtX3Jlc3VsdDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBtX2NhbGw7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxh
bnM7CkBAIC0xNDYsOSArMTUwLDkgQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xv
d1BhdGhHZQogcHVibGljOgogICAgIENhbGxSZXN1bHRBbmROb0FyZ3VtZW50c1Nsb3dQYXRoR2Vu
ZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5j
dGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUs
IFJlc3VsdFR5cGUgcmVzdWx0KQorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2Rl
LCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJlc3VsdFR5cGUgcmVzdWx0KQogICAgICAgICA6
IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBl
PigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVzdWx0KQor
ICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCBuZWVkc0V4Y2VwdGlv
bkNoZWNrLCByZXN1bHQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTE2OSw5ICsxNzMsOSBAQCBj
bGFzcyBDYWxsUmVzdWx0QW5kT25lQXJndW1lbnRTbG93UGF0aEdlCiBwdWJsaWM6CiAgICAgQ2Fs
bFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBl
IGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAg
ICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3Vt
ZW50VHlwZTEgYXJndW1lbnQxKQorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2Rl
LCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5
cGUxIGFyZ3VtZW50MSkKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0
aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24s
IHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywgcmVzdWx0KQogICAgICAgICAsIG1fYXJn
dW1lbnQxKGFyZ3VtZW50MSkKICAgICB7CiAgICAgfQpAQCAtMTk1LDEwICsxOTksMTAgQEAgY2xh
c3MgQ2FsbFJlc3VsdEFuZFR3b0FyZ3VtZW50c1Nsb3dQYXRoRwogcHVibGljOgogICAgIENhbGxS
ZXN1bHRBbmRUd29Bcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgSnVtcFR5cGUg
ZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAotICAgICAg
ICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1l
bnRUeXBlMSBhcmd1bWVudDEsCisgICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUs
IGJvb2wgbmVlZHNFeGNlcHRpb25DaGVjaywgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlw
ZTEgYXJndW1lbnQxLAogICAgICAgICBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MikKICAgICAgICAg
OiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlw
ZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkK
KyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRp
b25DaGVjaywgcmVzdWx0KQogICAgICAgICAsIG1fYXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICAg
ICAgLCBtX2FyZ3VtZW50Mihhcmd1bWVudDIpCiAgICAgewpAQCAtMjI0LDEwICsyMjgsMTAgQEAg
Y2xhc3MgQ2FsbFJlc3VsdEFuZFRocmVlQXJndW1lbnRzU2xvd1BhdAogcHVibGljOgogICAgIENh
bGxSZXN1bHRBbmRUaHJlZUFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1w
VHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0g
ICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0LCBB
cmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKKyAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxs
TW9kZSwgYm9vbCBuZWVkc0V4Y2VwdGlvbkNoZWNrLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1l
bnRUeXBlMSBhcmd1bWVudDEsCiAgICAgICAgIEFyZ3VtZW50VHlwZTIgYXJndW1lbnQyLCBBcmd1
bWVudFR5cGUzIGFyZ3VtZW50MykKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVt
cFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQs
IGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVu
Y3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywgcmVzdWx0KQogICAgICAgICAs
IG1fYXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICAgICAgLCBtX2FyZ3VtZW50Mihhcmd1bWVudDIp
CiAgICAgICAgICwgbV9hcmd1bWVudDMoYXJndW1lbnQzKQpAQCAtMjU5LDEwICsyNjMsMTAgQEAg
Y2xhc3MgQ2FsbFJlc3VsdEFuZEZvdXJBcmd1bWVudHNTbG93UGF0aAogcHVibGljOgogICAgIENh
bGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIEp1bXBU
eXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAg
ICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFy
Z3VtZW50VHlwZTEgYXJndW1lbnQxLAorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxN
b2RlLCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVu
dFR5cGUxIGFyZ3VtZW50MSwKICAgICAgICAgQXJndW1lbnRUeXBlMiBhcmd1bWVudDIsIEFyZ3Vt
ZW50VHlwZTMgYXJndW1lbnQzLCBBcmd1bWVudFR5cGU0IGFyZ3VtZW50NCkKICAgICAgICAgOiBD
YWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4o
Ci0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAg
ICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25D
aGVjaywgcmVzdWx0KQogICAgICAgICAsIG1fYXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICAgICAg
LCBtX2FyZ3VtZW50Mihhcmd1bWVudDIpCiAgICAgICAgICwgbV9hcmd1bWVudDMoYXJndW1lbnQz
KQpAQCAtMjk2LDExICszMDAsMTEgQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZEZpdmVBcmd1bWVudHNT
bG93UGF0aAogcHVibGljOgogICAgIENhbGxSZXN1bHRBbmRGaXZlQXJndW1lbnRzU2xvd1BhdGhH
ZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1
bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAorICAgICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJl
c3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKICAgICAgICAgQXJndW1l
bnRUeXBlMiBhcmd1bWVudDIsIEFyZ3VtZW50VHlwZTMgYXJndW1lbnQzLCBBcmd1bWVudFR5cGU0
IGFyZ3VtZW50NCwKICAgICAgICAgQXJndW1lbnRUeXBlNSBhcmd1bWVudDUpCiAgICAgICAgIDog
Q2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGU+
KAotICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQpCisg
ICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIG5lZWRzRXhjZXB0aW9u
Q2hlY2ssIHJlc3VsdCkKICAgICAgICAgLCBtX2FyZ3VtZW50MShhcmd1bWVudDEpCiAgICAgICAg
ICwgbV9hcmd1bWVudDIoYXJndW1lbnQyKQogICAgICAgICAsIG1fYXJndW1lbnQzKGFyZ3VtZW50
MykKQEAgLTMzMCwxMCArMzM0LDEwIEBAIHByb3RlY3RlZDogICAgCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlPgog
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAog
ICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5j
dGlvbiwKLSAgICBSZXN1bHRUeXBlIHJlc3VsdCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSA9IE5lZWRUb1NwaWxsKQorICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBTcGlsbFJlZ2lzdGVyc01v
ZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIGJvb2wgbmVlZHNFeGNlcHRpb25DaGVjayA9IHRy
dWUpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3VsdEFuZE5vQXJndW1l
bnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4+
KAotICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCk7CisgICAg
ICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywg
cmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8CkBAIC0zNDIsMTAgKzM0NiwxMCBAQCB0ZW1wbGF0ZTwK
IGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgK
ICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVu
Y3Rpb24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAot
ICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCkKKyAgICBTcGls
bFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIGJvb2wgbmVlZHNFeGNlcHRp
b25DaGVjayA9IHRydWUpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3Vs
dEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwg
UmVzdWx0VHlwZSwgQXJndW1lbnRUeXBlMT4+KAotICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9u
LCBzcGlsbE1vZGUsIHJlc3VsdCwgYXJndW1lbnQxKTsKKyAgICAgICAgZnJvbSwgaml0LCBmdW5j
dGlvbiwgc3BpbGxNb2RlLCBuZWVkc0V4Y2VwdGlvbkNoZWNrLCByZXN1bHQsIGFyZ3VtZW50MSk7
CiB9CiAKIHRlbXBsYXRlPApAQCAtMzU0LDEwICszNTgsMTAgQEAgdGVtcGxhdGU8CiBpbmxpbmUg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aENhbGwoCiAgICAgSnVt
cFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAog
ICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwgQXJndW1lbnRU
eXBlMiBhcmd1bWVudDIsCi0gICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSA9IE5lZWRU
b1NwaWxsKQorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCwg
Ym9vbCBuZWVkc0V4Y2VwdGlvbkNoZWNrID0gdHJ1ZSkKIHsKICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsUmVzdWx0QW5kVHdvQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5
cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRUeXBlMSwgQXJndW1lbnRUeXBl
Mj4+KAotICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCwgYXJn
dW1lbnQxLCBhcmd1bWVudDIpOworICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1v
ZGUsIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwog
fQogCiB0ZW1wbGF0ZTwKQEAgLTM2NiwxMCArMzcwLDEwIEBAIHRlbXBsYXRlPAogaW5saW5lIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAogICAgIEp1bXBU
eXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKICAg
ICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVudDEsIEFyZ3VtZW50VHlw
ZTIgYXJndW1lbnQyLAotICAgIEFyZ3VtZW50VHlwZTMgYXJndW1lbnQzLCBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwpCisgICAgQXJndW1lbnRUeXBlMyBhcmd1bWVu
dDMsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCwgYm9vbCBuZWVk
c0V4Y2VwdGlvbkNoZWNrID0gdHJ1ZSkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
YWxsUmVzdWx0QW5kVGhyZWVBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVu
Y3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudFR5cGUxLCBBcmd1bWVudFR5cGUyLAotICAg
ICAgICBBcmd1bWVudFR5cGUzPj4oZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1
bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQyLCBhcmd1bWVudDMpOworICAgICAgICBBcmd1bWVudFR5
cGUzPj4oZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCBuZWVkc0V4Y2VwdGlvbkNoZWNr
LCByZXN1bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQyLCBhcmd1bWVudDMpOwogfQogCiB0ZW1wbGF0
ZTwKQEAgLTM4MCwxMCArMzg0LDEwIEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhH
ZW5lcmF0b3IKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlv
blR5cGUgZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJn
dW1lbnQxLCBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MiwKICAgICBBcmd1bWVudFR5cGUzIGFyZ3Vt
ZW50MywgQXJndW1lbnRUeXBlNCBhcmd1bWVudDQsCi0gICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNw
aWxsTW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUg
PSBOZWVkVG9TcGlsbCwgYm9vbCBuZWVkc0V4Y2VwdGlvbkNoZWNrID0gdHJ1ZSkKIHsKICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kRm91ckFyZ3VtZW50c1Nsb3dQYXRo
R2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50VHlw
ZTEsIEFyZ3VtZW50VHlwZTIsCi0gICAgICAgIEFyZ3VtZW50VHlwZTMsIEFyZ3VtZW50VHlwZTQ+
Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1
bWVudDIsIGFyZ3VtZW50MywgYXJndW1lbnQ0KTsKKyAgICAgICAgQXJndW1lbnRUeXBlMywgQXJn
dW1lbnRUeXBlND4+KGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRp
b25DaGVjaywgcmVzdWx0LCBhcmd1bWVudDEsIGFyZ3VtZW50MiwgYXJndW1lbnQzLCBhcmd1bWVu
dDQpOwogfQogCiB0ZW1wbGF0ZTwKQEAgLTM5NCwxMCArMzk4LDEwIEBAIGlubGluZSBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3IKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2
ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQs
IEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLCBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MiwKICAgICBB
cmd1bWVudFR5cGUzIGFyZ3VtZW50MywgQXJndW1lbnRUeXBlNCBhcmd1bWVudDQsIEFyZ3VtZW50
VHlwZTUgYXJndW1lbnQ1LAotICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVk
VG9TcGlsbCkKKyAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGws
IGJvb2wgbmVlZHNFeGNlcHRpb25DaGVjayA9IHRydWUpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbFJlc3VsdEFuZEZpdmVBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjxKdW1w
VHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudFR5cGUxLCBBcmd1bWVudFR5
cGUyLAotICAgICAgICBBcmd1bWVudFR5cGUzLCBBcmd1bWVudFR5cGU0LCBBcmd1bWVudFR5cGU1
Pj4oZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQsIGFyZ3VtZW50MSwgYXJn
dW1lbnQyLCBhcmd1bWVudDMsCisgICAgICAgIEFyZ3VtZW50VHlwZTMsIEFyZ3VtZW50VHlwZTQs
IEFyZ3VtZW50VHlwZTU+Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIG5lZWRzRXhj
ZXB0aW9uQ2hlY2ssIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIsIGFyZ3VtZW50MywKICAg
ICAgICAgYXJndW1lbnQ0LCBhcmd1bWVudDUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9u
IDE4ODUwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw2ICs0MDksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxVGFn
R1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAg
ICBjaGVja0V4Y2VwdGlvbigpOwogCiAgICAgICAgIGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29u
ZGl0aW9uLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9IGVsc2UgewpAQCAtNDMyLDYgKzQzMyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAKICAgICAg
ICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQ
YXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CisgICAgICAgICAgICBjaGVj
a0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRH
UFIpOwogICAgICAgICAKICAgICAgICAgICAgIGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0
aW9uLCByZXN1bHRHUFIsIHRha2VuKTsKQEAgLTQ1Myw3ICs0NTUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFNfSklUT3BlcmF0aW9uX0VKSiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwKICAgICAgICAgR1BSUmVnIGFyZzJUYWcsIEdQUlJl
ZyBhcmcyUGF5bG9hZCkKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IFNfSklUT3BlcmF0aW9uX0VKSiwgR1BSUmVnPigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVu
Y3Rpb24sIE5lZWRUb1NwaWxsLCByZXN1bHQpCisgICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0
aW9uLCBOZWVkVG9TcGlsbCwgdHJ1ZSwgcmVzdWx0KQogICAgICAgICAsIG1fYXJnMVRhZyhhcmcx
VGFnKQogICAgICAgICAsIG1fYXJnMVBheWxvYWQoYXJnMVBheWxvYWQpCiAgICAgICAgICwgbV9h
cmcyVGFnKGFyZzJUYWcpCkBAIC01MDAsNiArNTAyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVOb25QZQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
IGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFUYWdH
UFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CisgICAgICAg
IGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBib29sZWFuUmVzdWx0KHJlc3Vs
dFBheWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgfSBl
bHNlIHsKQEAgLTU2MCw2ICs1NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBoCiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1
bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3Ry
aWN0RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwg
YXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICAvLyBjaGVja0V4Y2VwdGlvbigp
OyAvLyBNYXliZSBub3QgbmVlZGVkPwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdFBheWxvYWRHUFIpOwogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/
IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdFBheWxvYWRH
UFIsIHRha2VuKTsKQEAgLTU2Nyw3ICs1NzEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIC8vIEZJWE1FOiBBZGQgZmFzdCBwYXRocyBmb3IgdHdv
Q2VsbHMsIG51bWJlciBldGMuCiAKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVz
dWx0UGF5bG9hZEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0
cmljdEVxLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJn
MlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxv
YWRHUFIsIGFyZzJUYWdHUFIsIGFyZzJQYXlsb2FkR1BSKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8K
KyAgICAgICAgLy9jaGVja0V4Y2VwdGlvbigpOyAvLyBNYXliZSBub3QgbmVlZGVkPwogICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICAKICAg
ICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGls
ZXI6Ok5vblplcm8sIHJlc3VsdFBheWxvYWRHUFIsIHRha2VuKTsKQEAgLTYwNCw2ICs2MDksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIAogICAg
ICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRQYXlsb2Fk
R1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRH
UFIpOworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE1heWJlIG5vdCBuZWVkZWQ/CiAg
ICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAg
IAogICAgICAgICBtX2ppdC5hbmRQdHIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMigxKSwgcmVz
dWx0UGF5bG9hZEdQUik7CkBAIC02MTUsNiArNjIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1
bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3Ry
aWN0RXEsIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcy
VGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
cmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgIC8vY2hlY2tFeGNlcHRpb24oKTsgLy8gTWF5YmUg
bm90IG5lZWRlZD8KICAgICAgICAgCiAgICAgICAgIG1faml0LmFuZFB0cihKSVRDb21waWxlcjo6
VHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICB9CkBAIC03MDAsNiArNzA3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIHNs
b3dDYXNlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncyk7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlv
bigpOwogICAgICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2lu
Z1BhdGhEaWROb3RUaHJvdyk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAg
ICAgICAgIHJlc3VsdEdQUiA9IHNjcmF0Y2hHUFIyOwpAQCAtNzMyLDYgKzc0MCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIC8vIFJpZ2h0
IG5vdywgYXJndW1lbnRzIGlzIGluIGFyZ3VtZW50c1RhZ0dQUi9hcmd1bWVudHNQYXlsb2FkR1BS
IGFuZCB0aGUgcmVnaXN0ZXIgZmlsZSBpcwogICAgICAgICAgICAgLy8gZmx1c2hlZC4KICAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwg
bnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICAgICAgICAg
IGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE5vdyB3ZSBo
YXZlIHRoZSBhcmd1bWVudCBjb3VudCBvZiB0aGUgY2FsbGVlIGZyYW1lLCBidXQgd2UndmUgbG9z
dCB0aGUgYXJndW1lbnRzIG9wZXJhbmQuCiAgICAgICAgICAgICAvLyBSZWNvbnN0cnVjdCB0aGUg
YXJndW1lbnRzIG9wZXJhbmQgd2hpbGUgcHJlc2VydmluZyB0aGUgY2FsbGVlIGZyYW1lLgpAQCAt
NzQxLDYgKzc1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUK
ICAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykgKyBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygp
LCA2ICogc2l6ZW9mKHZvaWQqKSkpKSwgc2NyYXRjaEdQUjEsIEpJVENvbXBpbGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBzY3Jh
dGNoR1BSMSwgYXJndW1lbnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BSLCBkYXRhLT5maXJz
dFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgY2hl
Y2tFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHJlc3VsdEdQUiA9IEdQUkluZm86OnJldHVyblZh
bHVlR1BSOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE1MzQsNyArMTU0NCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAg
c2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZXN1bHRQ
YXlsb2FkR1BSLCBhcmcxVGFnR1BSLAotICAgICAgICAgICAgICAgIGFyZzFQYXlsb2FkR1BSKSk7
CisgICAgICAgICAgICAgICAgYXJnMVBheWxvYWRHUFIsIE5lZWRUb1NwaWxsLCBmYWxzZSkpOyAv
LyBEb2VzIG5vdCBuZWVkIGV4Y2VwdGlvbiBjaGVjay4KICAgICAKICAgICAgICAgbV9qaXQueG9y
MzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgYm9vbGVhblJl
c3VsdChyZXN1bHRQYXlsb2FkR1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkp
OwpAQCAtMTY4MCw2ICsxNjkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChO
b2RlKiBubwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZXN1
bHRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpOwogICAgICAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAgIC8vIGNoZWNrRXhjZXB0aW9uKCk7IC8v
IE5vdCBuZWVkZWQuCiAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6Tm9u
WmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgICAgIGp1bXAobm90VGFrZW4pOwpAQCAtMjA2
MCw2ICsyMDcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVz
dWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBvcDFUYWdHUFIsIG9wMVBheWxvYWRH
UFIsIG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGQsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0
UGF5bG9hZC5ncHIoKSwgb3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSLCBvcDJUYWdHUFIsIG9wMlBh
eWxvYWRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUp
OwogICAgICAgICBicmVhazsKQEAgLTIyMzUsNiArMjI0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEZQUlJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oc2luLCByZXN1bHQuZnByKCksIG9wMUZQ
Uik7CisgICAgICAgIC8vIGNoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgICAg
IGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC0yMjQ3LDYgKzIyNjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIAogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBjYWxsT3BlcmF0aW9uKGNvcywgcmVzdWx0LmZwcigpLCBvcDFGUFIpOworICAgICAgICAvL2No
ZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1
bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMzYyLDYgKzIzNzYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxDZWxsLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBh
eWxvYWQuZ3ByKCksIGJhc2VHUFIsIHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVBheWxvYWRHUFIp
OworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5v
ZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjI5LDYgKzI2NDQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxOb25TdHJpY3Qs
IGJhc2VHUFIsIHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVBheWxvYWRHUFIsIHZhbHVlVGFnR1BS
LCB2YWx1ZVBheWxvYWRHUFIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24obV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9u
UHV0QnlWYWxDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsTm9uU3RyaWN0LCBiYXNl
R1BSLCBwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHlQYXlsb2FkR1BSLCB2YWx1ZVRhZ0dQUiwgdmFs
dWVQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICAgICAgYWxyZWFkeUhhbmRs
ZWQgPSB0cnVlOwpAQCAtMjc4Miw2ICsyNzk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdCwgcmVzdWx0LmdwcigpLCBiYXNlR1BSLCBhcmd1
bWVudEdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBNdXN0IHVzZSBqc1ZhbHVlUmVzdWx0IGJlY2F1c2Ugb3RoZXJ3aXNlIHdl
IHNjcmV3IHVwIHJlZ2lzdGVyCiAgICAgICAgICAgICAvLyBhbGxvY2F0aW9uLCB3aGljaCB0aGlu
a3MgdGhhdCB0aGlzIG5vZGUgaGFzIGEgcmVzdWx0LgpAQCAtMjc5OCw2ICsyODE1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVk
Q2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJl
Z0V4cEV4ZWMsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgYmFzZUdQUiwg
YXJndW1lbnRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAKICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTI4MTIsNiArMjgzMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1l
bnRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAKICAgICAgICAgLy8g
SWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KICAgICAg
ICAgYm9vbGVhblJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtMzIzMiw2ICszMjUxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
ICAgIEFTU0VSVChvcCA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOwogICAgICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIs
IG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUik7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBj
aGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKICAgICAgICAg
ICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKQEAgLTMzMjYsNiArMzM0Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uTmV3RW1wdHlBcnJheSwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUo
KSkpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgICAgIGNlbGxSZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC0zNDAzLDYgKzM0MjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICBvcGVyYXRpb25OZXdBcnJh
eSwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksCiAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx2b2lkKj4oYnVmZmVyKSwgbm9kZS0+bnVtQ2hpbGRyZW4oKSk7CisgICAgICAg
IGNoZWNrRXhjZXB0aW9uKCk7CiAKICAgICAgICAgaWYgKHNjcmF0Y2hTaXplKSB7CiAgICAgICAg
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTM0ODMsNiArMzUwNSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZG9uZS5saW5r
KCZtX2ppdCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICBvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUik7CisgICAg
ICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzUyOCw2ICszNTUxLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgp
KSwgbm9kZS0+c3RhcnRDb25zdGFudCgpLCBub2RlLT5udW1Db25zdGFudHMoKSk7CisgICAgICAg
IGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzU1Myw2ICszNTc3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIG9wZXJh
dGlvbk5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1lbnRGb3JUeXBlKG5vZGUtPnR5cGVkQXJyYXlU
eXBlKCkpLAogICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT50eXBlZEFy
cmF5U3RydWN0dXJlKG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpLAogICAgICAgICAgICAgICAgIGFy
Z3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOworICAgICAgICAgICAgY2hlY2tFeGNl
cHRpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNTcwLDYgKzM1OTUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld1JlZ2V4cCwgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigp
LCBtX2ppdC5jb2RlQmxvY2soKS0+cmVnZXhwKG5vZGUtPnJlZ2V4cEluZGV4KCkpKTsKKyAgICAg
ICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHRo
ZSBjYWxsT3BlcmF0aW9uIGFib3ZlIGV4cGxpY2l0bHkgcmV0dXJuIGEgY2VsbCByZXN1bHQsIG9y
IGppdEFzc2VydCB0aGUgdGFnIGlzIGEgY2VsbCB0YWcuCiAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CkBAIC00MjYzLDYgKzQyODksNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZU9mVmFyYXJncywgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIsIGFyZ3VtZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwgZGF0YS0+b2Zm
c2V0KTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIGxvY2so
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICB7CkBAIC00MjkyLDYgKzQzMTksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0
LnN0b3JlMzIoYXJnQ291bnRJbmNsdWRpbmdUaGlzR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZv
cihkYXRhLT5tYWNoaW5lQ291bnQpKTsKICAgICAgICAgCiAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTG9hZFZhcmFyZ3MsIGRhdGEtPm1hY2hpbmVTdGFydC5vZmZzZXQoKSwgYXJndW1l
bnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BSLCBkYXRhLT5vZmZzZXQsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCBkYXRhLT5tYW5kYXRvcnlNaW5pbXVtKTsKKyAgICAgICAgY2hlY2tFeGNl
cHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTQzNjYsNiArNDM5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgcHJvcGVydHkuZ3ByKCkpOworICAg
ICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdFBheWxv
YWRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00NDg2LDYgKzQ1MTUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uR2V0QnlWYWxDZWxsLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIs
IGJhc2VHUFIsIHNjcmF0Y2hHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRp
b24oKTsKICNlbHNlCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwog
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMpOwpAQCAtNDU0OSw2ICs0NTc5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVy
dHlFbnVtZXJhdG9yLCByZXN1bHRHUFIsIGJhc2UuZ3ByKCkpOworICAgICAgICBjaGVja0V4Y2Vw
dGlvbigpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KQEAgLTQ1OTIsNiArNDYyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvSW5kZXhTdHJpbmcsIHJlc3VsdEdQUiwgaW5kZXguZ3By
KCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTg4
NTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBh
cmcyR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKIAogICAgICAgICBicmFuY2hUZXN0
MzIoY2FsbFJlc3VsdENvbmRpdGlvbiwgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgfSBlbHNlIHsK
QEAgLTM5MSw2ICszOTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBl
ZXBoCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxR1BS
LCBhcmcyR1BSKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BS
KTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICAgICAg
YnJhbmNoVGVzdDMyKGNhbGxSZXN1bHRDb25kaXRpb24sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAg
ICAgICB9CkBAIC00MTAsNyArNDEyLDcgQEAgcHVibGljOgogICAgICAgICBKdW1wVHlwZSBmcm9t
LCBTcGVjdWxhdGl2ZUpJVCogaml0LAogICAgICAgICBTX0pJVE9wZXJhdGlvbl9FSkogZnVuY3Rp
b24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICAgICAgOiBD
YWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFNfSklUT3BlcmF0aW9uX0VKSiwgR1BSUmVn
PigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIE5lZWRUb1NwaWxsLCByZXN1bHQp
CisgICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBOZWVkVG9TcGlsbCwgdHJ1ZSwgcmVz
dWx0KQogICAgICAgICAsIG1fYXJnMShhcmcxKQogICAgICAgICAsIG1fYXJnMihhcmcyKQogICAg
IHsKQEAgLTQ1MCw2ICs0NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlCiAgICAgCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVy
YXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAg
ICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5vcjMyKFRydXN0
ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRHUFIsIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4sIFVzZUNoaWxkcmVu
Q2FsbGVkRXhwbGljaXRseSk7CkBAIC01MTAsNiArNTEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RF
cUNlbGwsIHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxB
bGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsgLy8gTWF5
YmUgbm90IG5lZWRlZD8KICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBK
SVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2Vu
KTsKICAgICB9IGVsc2UgewpAQCAtNTM2LDYgKzU0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVz
dWx0R1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEs
IHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsgLy8gTWF5YmUgbm90
IG5lZWRlZD8KICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21w
aWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAg
ICB9CkBAIC01NzEsNiArNTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVOb25QZQogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQ
UiwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVz
dWx0R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8K
ICAgICAgICAgCiAgICAgICAgIG1faml0LmFuZDY0KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIo
MSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0Lm9yMzIoSklUQ29tcGlsZXI6OlRydXN0ZWRJ
bW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKQEAgLTY4Niw2ICs2OTIsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAgICAgc2xvd0Nhc2UubGluaygm
bV9qaXQpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3Zl
cmZsb3dGb3JWYXJhcmdzKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAg
ICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJnc1Rocm93aW5nUGF0aERpZE5vdFRo
cm93KTsKICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgcmVzdWx0
R1BSID0gc2NyYXRjaEdQUjI7CkBAIC03MTUsNiArNzIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBSaWdo
dCBub3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1bWVudHNHUFIgYW5kIHRoZSByZWdpc3RlciBmaWxl
IGlzIGZsdXNoZWQuCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFt
ZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudHNHUFIsIG51bVVz
ZWRTdGFja1Nsb3RzLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCk7CisgICAgICAgICAgICBjaGVj
a0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBOb3cgd2UgaGF2ZSB0
aGUgYXJndW1lbnQgY291bnQgb2YgdGhlIGNhbGxlZSBmcmFtZSwgYnV0IHdlJ3ZlIGxvc3QgdGhl
IGFyZ3VtZW50cyBvcGVyYW5kLgogICAgICAgICAgICAgLy8gUmVjb25zdHJ1Y3QgdGhlIGFyZ3Vt
ZW50cyBvcGVyYW5kIHdoaWxlIHByZXNlcnZpbmcgdGhlIGNhbGxlZSBmcmFtZS4KQEAgLTcyNCw2
ICs3MzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAg
ICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKC0oc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpICsgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNSAq
IHNpemVvZih2b2lkKikpKSksIHNjcmF0Y2hHUFIxLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblNldHVwVmFyYXJnc0ZyYW1lLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRjaEdQ
UjEsIGFyZ3VtZW50c0dQUiwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBy
ZXN1bHRHUFIgPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjsKICAgICAgICAgfQogICAgICAgICAK
QEAgLTE2ODYsNyArMTY5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2Fs
Tm90KE4KICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hU
ZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KH4xKSkpOwogICAgIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKLSAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29u
dmVydEpTVmFsdWVUb0Jvb2xlYW4sIHJlc3VsdEdQUiwgYXJnMUdQUikpOworICAgICAgICAgICAg
c2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9v
bGVhbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBOZWVkVG9TcGlsbCwgZmFsc2UpKTsgLy8gRG9lcyBu
b3QgbmVlZCBleGNlcHRpb24gY2hlY2suCiAgICAgCiAgICAgICAgIG1faml0LnhvcjY0KFRydXN0
ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZVRydWUpKSwgcmVzdWx0R1BSKTsKICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4s
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0xODQwLDYgKzE4NDksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5vZGUqIG5vCiAgICAgICAgICAgICBzaWxlbnRT
cGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0R1BSLCB2YWx1ZUdQUik7CiAg
ICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAgICAg
ICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE1heWJlIG5vdCBuZWVkZWQ/CiAgICAgCiAgICAgICAg
ICAgICBicmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFr
ZW4pOwogICAgICAgICAgICAganVtcChub3RUYWtlbik7CkBAIC0yMTY4LDYgKzIxNzgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkNvbnZlcnREb3VibGVUb0ludDUyLCByZXN1bHRHUFIsIHZhbHVlRlBSKTsKKyAgICAg
ICAgICAgIC8vY2hlY2tFeGNlcHRpb24oKTsgLy8gTm90IG5lZWRlZC4KICAgICAgICAgICAgIAog
ICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
KSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNJbnQ1MkFzRG91YmxlLApAQCAtMjE5OSw2ICsyMjEwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0LmdwcigpLCBv
cDFHUFIsIG9wMkdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVmFsdWVBZGQsIHJlc3VsdC5ncHIoKSwgb3AxR1BSLCBvcDJHUFIpOworICAgICAg
ICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTIzNjgsNiArMjM4MCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAg
IEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oc2luLCByZXN1
bHQuZnByKCksIG9wMUZQUik7CisgICAgICAgIC8vY2hlY2tFeGNlcHRpb24oKTsgLy8gTm90IG5l
ZWRlZC4gCiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0yMzgwLDYgKzIzOTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0
KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKGNvcywgcmVzdWx0LmZwcigpLCBvcDFGUFIp
OworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgICAgIGRv
dWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0yNDg2LDYgKzI1MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25HZXRCeVZhbCwgcmVzdWx0LmdwcigpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAg
ICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3
MDUsNiArMjcyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5p
c1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFs
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIGFyZzFHUFIsIGFyZzJHUFIsIGFy
ZzNHUFIpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRy
dWU7CkBAIC0yOTE2LDYgKzI5MzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BS
KTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIC8vIE11c3QgdXNlIGpzVmFsdWVSZXN1bHQgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugc2NyZXcg
dXAgcmVnaXN0ZXIKICAgICAgICAgICAgIC8vIGFsbG9jYXRpb24sIHdoaWNoIHRoaW5rcyB0aGF0
IHRoaXMgbm9kZSBoYXMgYSByZXN1bHQuCkBAIC0yOTMxLDYgKzI5NDgsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjLCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFy
Z3VtZW50R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgCiAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0y
OTQ1LDYgKzI5NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0
LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgY2hlY2tFeGNl
cHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29s
LCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCiAgICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMy
KFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMzI4Niw2ICszMzA1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEFTU0VS
VChvcCA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOwogICAgICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIsIG9wMUdQUik7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAg
ICAgaWYgKGRvbmUuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsK
ICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTMzNzgsNiArMzM5
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0VtcHR5
QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAg
ICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzQ2MCw2ICszNDgx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBj
YWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9uTmV3QXJyYXksIHJlc3VsdC5ncHIo
KSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dm9p
ZCo+KGJ1ZmZlciksIG5vZGUtPm51bUNoaWxkcmVuKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlv
bigpOwogCiAgICAgICAgIGlmIChzY3JhdGNoU2l6ZSkgewogICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0zNTM3LDYgKzM1NTksNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlX
aXRoU2l6ZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmVHUFIsIHNpemVHUFIpOworICAgICAgICBjaGVj
a0V4Y2VwdGlvbigpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTM1ODAsNiArMzYwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJheUJ1ZmZlciwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksIG5vZGUt
PnN0YXJ0Q29uc3RhbnQoKSwgbm9kZS0+bnVtQ29uc3RhbnRzKCkpOworICAgICAgICBjaGVja0V4
Y2VwdGlvbigpOwogICAgICAgICAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2MDQsNiArMzYyOCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdU
eXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50Rm9yVHlwZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwK
ICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVj
dHVyZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKICAgICAgICAgICAgICAgICBhcmd1bWVudEdQ
Uik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTM2MjAsNiArMzY0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAK
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHAsIHJlc3VsdC5ncHIoKSwg
bV9qaXQuY29kZUJsb2NrKCktPnJlZ2V4cChub2RlLT5yZWdleHBJbmRleCgpKSk7CisgICAgICAg
IGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDI2OSw2ICs0Mjk1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVPZlZhcmFyZ3MsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCBhcmd1bWVudHNHUFIsIGRhdGEtPm9mZnNldCk7CisgICAgICAgIGNoZWNr
RXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBsb2NrKEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKICAgICAgICAgewpAQCAtNDI5Nyw2ICs0MzI0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC5zdG9yZTMyKGFyZ0NvdW50SW5j
bHVkaW5nVGhpc0dQUiwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoZGF0YS0+bWFjaGluZUNvdW50
KSk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdz
LCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCksIGFyZ3VtZW50c0dQUiwgZGF0YS0+b2Zmc2V0
LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgZGF0YS0+bWFuZGF0b3J5TWluaW11bSk7CisgICAg
ICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChub2RlKTsK
ICAgICAgICAgYnJlYWs7CkBAIC00NDA4LDYgKzQ0MzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHksIHJlc3VsdEdQUiwg
YmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVh
bik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQ1NzUsNiArNDYwNCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRv
ciwgcmVzdWx0R1BSLCBiYXNlLmdwcigpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC00NjE0LDYgKzQ2NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Ub0luZGV4U3RyaW5nLCByZXN1bHRHUFIsIGluZGV4LmdwcigpKTsKKyAgICAg
ICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00ODQ4LDYgKzQ4NzksNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb252ZXJ0TWFjaGluZUludChFCiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3Rl
cnMocmVzdWx0R1BSKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERv
dWJsZVRvSW50NTIsIHJlc3VsdEdQUiwgdmFsdWVHUFIpOwogICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMocmVzdWx0R1BSKTsKKyAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQu
CiAKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCB2
YWx1ZUVkZ2UsIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91YmxlLApAQCAtNDg4MCw2ICs0OTEy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRG91YmxlUmVwTQogICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0RG91
YmxlVG9JbnQ1MiwgcmVzdWx0R1BSLCB2YWx1ZUZQUik7CisgICAgLy9jaGVja0V4Y2VwdGlvbigp
OyAvLyBOb3QgbmVlZGVkLgogICAgIAogICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICBKU1Zh
bHVlUmVncygpLCBlZGdlLCBTcGVjSW50NTJBc0RvdWJsZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxODg1MDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTkyLDYgKzk5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbihOb2RlKiBub2QKICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICBvcGVyYXRpb25HZW5l
cmljSW4sIGV4dHJhY3RSZXN1bHQoSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlc3VsdEdQUikp
LAogICAgICAgICBiYXNlR1BSLCByZWdzKTsKKyAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgIGJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBs
aWNpdGx5KTsKIH0KIApAQCAtMTk4Niw2ICsxOTg3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMo
cmVzdWx0R3ByKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24odG9JbnQzMiwgcmVzdWx0R3By
LCBmcHIpOwogICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOwor
ICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKIAogICAgICAgICAgICAgY29udmVydGVkLmFw
cGVuZChtX2ppdC5qdW1wKCkpOwogCkBAIC0yMDQ1LDYgKzIwNDcsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAgICAgICAgICAgICAgICAgc2lsZW50U3BpbGxB
bGxSZWdpc3RlcnMocmVzdWx0R3ByKTsKICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKHRv
SW50MzIsIHJlc3VsdEdwciwgZnByKTsKICAgICAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKHJlc3VsdEdwcik7CisgICAgICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKIAog
ICAgICAgICAgICAgICAgIGNvbnZlcnRlZC5hcHBlbmQobV9qaXQuanVtcCgpKTsKIApAQCAtMzY3
OSw2ICszNjgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZAog
ICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihmbW9kQXNERkdPcGVyYXRpb24sIHJlc3VsdC5mcHIoKSwgb3AxRlBSLCBvcDJGUFIp
OworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgICAgIAog
ICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzcxNyw2ICszNzIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRo
Um91bmQoTgogICAgIEZQUlJlc3VsdCByb3VuZGVkUmVzdWx0QXNEb3VibGUodGhpcyk7CiAgICAg
RlBSUmVnIHJlc3VsdEZQUiA9IHJvdW5kZWRSZXN1bHRBc0RvdWJsZS5mcHIoKTsKICAgICBjYWxs
T3BlcmF0aW9uKGpzUm91bmQsIHJlc3VsdEZQUiwgdmFsdWVGUFIpOworICAgIGNoZWNrRXhjZXB0
aW9uKCk7CiAgICAgaWYgKHByb2R1Y2VzSW50ZWdlcihub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgp
KSkgewogICAgICAgICBHUFJUZW1wb3Jhcnkgcm91bmRlZFJlc3VsdEFzSW50MzIodGhpcyk7CiAg
ICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwpAQCAtMzc0MCw2ICszNzQ1LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3FydChObwogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKHNxcnQsIHJlc3VsdC5mcHIoKSwgb3AxRlBSKTsKKyAgICAgICAgLy9jaGVja0V4
Y2VwdGlvbigpOyAvLyBOb3QgbmVlZGVkLgogICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZw
cigpLCBub2RlKTsKICAgICB9IGVsc2UgewogICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIG9wMSk7CkBAIC0zNzk4LDYgKzM4MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJpdGhQb3coTm9kCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNraXBGYWxsYmFj
ayA9IGNvbXBpbGVBcml0aFBvd0ludGVnZXJGYXN0UGF0aChtX2ppdCwgeE9wZXJhbmRDb3B5RnBy
LCBjb3VudGVyR3ByLCByZXN1bHRGcHIpOwogICAgICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0Rv
dWJsZSh5T3BlcmFuZEdwciwgeU9wZXJhbmRmcHIuZnByKCkpOwogICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk1hdGhQb3csIHJlc3VsdEZwciwgeE9wZXJhbmRmcHIsIHlPcGVyYW5kZnBy
LmZwcigpKTsKKyAgICAgICAgLy9jaGVja0V4Y2VwdGlvbigpOyAvLyBOb3QgbmVlZGVkLgogCiAg
ICAgICAgIHNraXBGYWxsYmFjay5saW5rKCZtX2ppdCk7CiAgICAgICAgIGRvdWJsZVJlc3VsdChy
ZXN1bHRGcHIsIG5vZGUpOwpAQCAtMzgzMCw2ICszODM3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFyaXRoUG93KE5vZAogICAgIGZhaWxlZEV4cG9uZW50Q29udmVyc2lvblRvSW50
ZWdlci5saW5rKCZtX2ppdCk7CiAKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hdGhQb3cs
IHJlc3VsdEZwciwgeE9wZXJhbmRmcHIsIHlPcGVyYW5kZnByKTsKKyAgICAvL2NoZWNrRXhjZXB0
aW9uKCk7IC8vIE5vdCBOZWVkZWQuCiAgICAgc2tpcEZhbGxiYWNrLmxpbmsoJm1faml0KTsKICAg
ICBkb3VibGVSZXN1bHQocmVzdWx0RnByLCBub2RlKTsKIH0KQEAgLTM4NDEsNiArMzg0OSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aExvZyhOb2QKICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgY2FsbE9wZXJhdGlvbihs
b2csIHJlc3VsdC5mcHIoKSwgb3AxRlBSKTsKKyAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5v
dCBuZWVkZWQuCiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiB9CiAKQEAg
LTQ2MTksNiArNDYyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlv
bigKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uLCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKTsKKyAg
ICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDc0NCw2ICs0NzU0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFjdGl2YQogICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QsCiAgICAgICAgICAgICByZXN1bHRHUFIs
IHN0cnVjdHVyZSwgc2NvcGVHUFIsIHRhYmxlLCBUcnVzdGVkSW1tMzIoaW5pdGlhbGl6YXRpb25W
YWx1ZS50YWcoKSksIFRydXN0ZWRJbW0zMihpbml0aWFsaXphdGlvblZhbHVlLnBheWxvYWQoKSkp
OwogI2VuZGlmCisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ5OTQsNyArNTAw
NSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWQKICAgICAgICAg
fSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1f
aml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGRlc3RHUFIpOyB9KTsKICAgICAK
LSAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0
ZVNjb3BlZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBjaGVja0V4Y2Vw
dGlvbigpOwogICAgIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTUw
MjEsNyArNTAzMyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWQK
ICAgICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0
R1BSKSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGRlc3RHUFIpOyB9
KTsKICAgICAKLSAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBj
aGVja0V4Y2VwdGlvbigpOwogICAgIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
IH0KQEAgLTUwMzYsNyArNTA0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3Rp
ZnlXcml0ZSgKICAgICAgICAgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKTsKICAgICAKICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0
aGlzLCBvcGVyYXRpb25Ob3RpZnlXcml0ZSwgTm9SZXN1bHQsIHNldCkpOworICAgICAgICBzbG93
UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbk5vdGlmeVdyaXRlLCBOb1Jlc3VsdCwg
c2V0LCBOZWVkVG9TcGlsbCwgZmFsc2UpKTsgLy8gRG9lcyBub3QgbmVlZCBleGNlcHRpb24gY2hl
Y2suCiAgICAgCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC01MDY4LDYgKzUwODEsNyBAQCBi
b29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwRXhlYyhOCiAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3Vt
ZW50R1BSKTsKKyAgICBjaGVja0V4Y2VwdGlvbigpOwogCiAgICAgYnJhbmNoVGVzdDMyKGludmVy
dCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdC5ncHIo
KSwgdGFrZW4pOwogICAgIGp1bXAobm90VGFrZW4pOwpAQCAtNTIwMyw2ICs1MjE3LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRlUHJvcAogCiAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25SZWFsbG9jYXRlQnV0dGVyZmx5VG9IYXZlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBh
Y2l0eSwgcmVzdWx0LmdwcigpLCBiYXNlR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsK
ICAgICAgICAgCiAgICAgICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNTI0Niw2ICs1MjYxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlYWxsb2NhdGVQcgogCiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVy
Zmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlLCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIG5ld1NpemUg
LyBzaXplb2YoSlNWYWx1ZSkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogCiAgICAgICAg
IHN0b3JhZ2VSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
NTM1Myw2ICs1MzY5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JD
YQogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9y
KTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVj
dG9yT25DZWxsLCByZXN1bHRHUFIsIG9wMUdQUik7CiAgICAgICAgIH0KKyAgICAgICAgY2hlY2tF
eGNlcHRpb24oKTsKICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKICAgICAgICAgICAgIGRvbmUu
bGluaygmbV9qaXQpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC01
OTU4LDYgKzU5NzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKE5vZGUq
CiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2gpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkZpbmRTd2l0Y2hJbW1UYXJnZXRGb3JEb3VibGUsIHNjcmF0Y2gs
IHZhbHVlUmVncy5ncHIoKSwgZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CiAgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7CisgICAgICAgIC8vY2hlY2tFeGNlcHRpb24oKTsg
Ly8gTm90IG5lZWRlZC4KICAgICAgICAgbV9qaXQuanVtcChzY3JhdGNoKTsKICNlbHNlCiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEludCA9IG1faml0LmJyYW5jaDMyKApAQCAtNTk3Miw2
ICs1OTkwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbShOb2RlKgogICAg
ICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhzY3JhdGNoKTsKICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFyZ2V0Rm9yRG91YmxlLCBzY3JhdGNoLCB2YWx1
ZVJlZ3MsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKHNjcmF0Y2gpOworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVk
ZWQuCisKICAgICAgICAgbV9qaXQuanVtcChzY3JhdGNoKTsKICNlbmRpZgogICAgICAgICBub1Jl
c3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtNjIzMSw2ICs2MjUx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uUwogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3Bl
cmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgsIHN0cmlu
Zyk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIG1faml0Lmp1bXAoc3RyaW5n
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYyNjgsNiArNjI4OSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmdPblMKICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lz
dGVycyhzdHJpbmcpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBz
dHJpbmcsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgsIHN0cmluZyk7CiAgICAgc2lsZW50RmlsbEFs
bFJlZ2lzdGVycyhzdHJpbmcpOworICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgbV9qaXQuanVt
cChzdHJpbmcpOwogfQogCkBAIC02NDA1LDYgKzY0MjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzdG9yZVRvV3JpdGVCYXJyaWVyCiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoSW52YWxp
ZEdQUlJlZyk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25GbHVzaFdyaXRlQmFycmllckJ1
ZmZlciwgY2VsbCk7CiAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhJbnZhbGlkR1BSUmVnKTsK
KyAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAKICAgICBkb25lLmxpbmso
Jm1faml0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHJldmlzaW9uIDE4ODUwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtODg3LDIzOSArODg3LDIz
OSBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FIG9wZXJhdGlvbikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
RXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGNlbGwpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FTyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBvYmplY3QpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUob2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRU9TIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVjdCwgc2l6ZV90IHNpemUpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUob2JqZWN0LCBUcnVzdGVkSW1t
UHRyKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRU9aIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIG9iamVjdCwgaW50MzJfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9iamVjdCwgVHJ1c3RlZEltbVB0cihzaXplKSk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KENfSklUT3BlcmF0aW9uX0VPWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvYmpl
Y3QsIGludDMyX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShvYmplY3QsIFRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXpl
KSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgb2xkLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShvbGQsIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlv
bl9FUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc2l6ZSkp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FU0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHNpemVf
dCBpbmRleCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihpbmRleCksIGFyZzEpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJh
dGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGFyZzIpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJ
VE9wZXJhdGlvbl9FU3RQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRy
dXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJh
dGlvbl9FU3RTUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBzaXplX3QgaW5kZXgsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZElt
bVB0cihpbmRleCksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9F
Q1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
Mik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKENfSklUT3BlcmF0aW9uX0VDWkMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9w
ZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0Nl
bGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VJY2Ygb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0SnNjU3ltdGFiSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc2Nv
cGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3RlZEltbTY0IGluaXRpYWxWYWx1ZSkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSksIHNjb3BlLCBUcnVzdGVkSW1tUHRyKHRhYmxlKSwgaW5pdGlhbFZhbHVlKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogI2Vsc2UKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpzY1N5bXRhYkogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSog
dGFibGUsIFRydXN0ZWRJbW0zMiB0YWcsIFRydXN0ZWRJbW0zMiBwYXlsb2FkKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHIodGFibGUpLCBwYXlsb2FkLCB0YWcpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAjZW5kaWYKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
LCBUcnVzdGVkSW1tMzIoa25vd25MZW5ndGgpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25v
d25MZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3Rl
ZEltbTMyKGtub3duTGVuZ3RoKSwgVHJ1c3RlZEltbTMyKG1pbkNhcGFjaXR5KSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklU
T3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgR1BSUmVnIGxlbmd0aCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxlbmd0aCk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklU
T3BlcmF0aW9uX0VTdFpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEdQUlJlZyBsZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5KQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgbGVuZ3RoLCBUcnVzdGVkSW1tMzIobWluQ2FwYWNpdHkpKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRp
b25fRUpzc1N0IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9u
X0VKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc3NKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FR0Mgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VH
QyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMik7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSnNzX0pJVE9w
ZXJhdGlvbl9FWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEpTQ2VsbCogYXJnMSkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9
CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VD
SWNmIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRUNDSWNmIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1t
UHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIGludCBhcmcyKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0z
MihhcmcyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBKU0Nl
bGwqIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgSlNDZWxsKiBhcmcxLCBHUFJSZWcgYXJnMikK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKGFyZzEpLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxG
cmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRPcGVyYXRpb25fRUNiIG9wZXJhdGlvbiwgdm9p
ZCogcG9pbnRlcikKQEAgLTExMzYsNyArMTEzNiw3IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KQEAgLTExODgsMjggKzExODgsMjggQEAgcHVibGlj
OgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVF9KSVRPcGVyYXRpb25fRUpz
cyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlv
bl9FSnNjWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBpbnQzMl90IGFy
ZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgVHJ1c3RlZEltbTMyKGFyZzIpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0Nl
bGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVdzIG9w
ZXJhdGlvbiwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCkKQEAgLTEyMjIsMTIgKzEyMjIs
MTIgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpf
SklUT3BlcmF0aW9uX0Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSkKICAg
ICB7CkBAIC0xMjQ5LDEwMiArMTI0OSwxMDIgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUkgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VBWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzc1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQ
UyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHZvaWQqIHBvaW50ZXIsIHNpemVfdCBzaXplKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIocG9pbnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
U1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQgc3RhcnRDb25zdGFudCwgaW50IG51bUNv
bnN0YW50cykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIoc3RhcnRDb25zdGFudCksIFRydXN0ZWRJbW0zMihudW1Db25zdGFudHMp
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IGFyZzEsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
Y2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lDSSBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BS
UmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyks
IGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVn
IGFyZzEsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRy
dXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VEQSBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUpDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKQSBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJn
MSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90
IGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVpaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgaW50MzJfdCBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzIp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FWkljZlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQz
Ml90IGFyZzEsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcgYXJnMikK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tMzIoYXJnMSksIFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgYXJnMik7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRUpTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVl
LCBzaXplX3QgaW5kZXgpCkBAIC0xMzU2LDI4ICsxMzU2LDI4IEBAIHB1YmxpYzoKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdEogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGFyZzIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSkpDIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSlpD
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fSiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKQEAgLTEzODcsMTIyICsxMzg3LDEyMiBAQCBw
dWJsaWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlv
bl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
Skogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
Mik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSkKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0ubV92YWx1ZSkpKSk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIgaW1tLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0
KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0ubV92YWx1ZSkpKSwgYXJnMik7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNKIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
Q0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJn
MikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLmdwcigpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1pEIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKUFAgb3BlcmF0aW9uLCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0
cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNz
aUpKSSBvcGVyYXRpb24sIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBh
cmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VKSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklU
T3BlcmF0aW9uX0VQWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJl
ZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRU9aSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25f
RUNKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQog
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0pJVE9wZXJhdGlvbl9FSiBv
cGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9u
X0VKWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgdW5zaWduZWQgYXJn
MiwgdW5zaWduZWQgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJnMiksIFRydXN0ZWRJbW0zMihhcmczKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEZfSklUT3BlcmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCB1bnNpZ25lZCBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVz
dGVkSW1tMzIoYXJnMyksIGFyZzQpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgdW5zaWduZWQgYXJnMikKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJn
MikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWkpaWlogb3BlcmF0aW9uLCB1bnNpZ25lZCBhcmcxLCBH
UFJSZWcgYXJnMiwgdW5zaWduZWQgYXJnMywgR1BSUmVnIGFyZzQsIHVuc2lnbmVkIGFyZzUpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyKGFyZzEpLCBhcmcyLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQsIFRydXN0ZWRJbW0zMihh
cmc1KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogI2Vs
c2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKIApAQCAtMTUzNCwxNDMgKzE1MzQsMTQzIEBAIHB1Ymxp
YzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0Ug
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIHZvaWQqIHBvaW50ZXIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VQUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQ
YXlsb2FkLCBHUFJSZWcgYXJnMSwgdm9pZCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIp
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BS
UmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxv
YWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUEgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBWiBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJl
ZyByZXN1bHRUYWcsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwg
R1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNz
WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0
VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KHBvaW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCBy
ZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGludCBzdGFydENvbnN0YW50LCBpbnQgbnVtQ29u
c3RhbnRzKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50KSwgVHJ1c3RlZEltbTMyKG51bUNvbnN0YW50cykp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
SlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BS
UmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgdm9pZCogcG9pbnRlcikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKUCBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcx
UGF5bG9hZCwgYXJnMVRhZywgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9h
ZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJl
ZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIo
Y2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FU3NpQ0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgY29uc3QgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZEltbVB0
cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzFUYWcsIEdQUlJl
ZyBhcmcxUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwg
YXJnMVBheWxvYWQsIGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIGludDMyX3QgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgVHJ1c3RlZElt
bTMyKGFyZzFUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQs
IHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FREEgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJC
SVRfRFVNTVlfQVJHIGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwg
R1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgVHJ1c3Rl
ZEltbTMyIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1N
WV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQs
IHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQ
YXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGludDMyX3QgYXJn
MSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tMzIoYXJnMSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FWkljZlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZCwgaW50MzJfdCBhcmcxLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpLCBUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxG
cmFtZSksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVz
dWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0
UGF5bG9hZCwgaW50MzJfdCBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzIpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9
CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VK
UyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTVmFsdWVSZWdzIHZhbHVlLCBzaXplX3QgaW5k
ZXgpCkBAIC0xNjgyLDEzNyArMTY4MiwxMzcgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQ
YXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENf
SklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcs
IEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKLSAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihTX0pJVE9wZXJhdGlvbl9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICAvL0pJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCisgICAgLy97CisgICAgLy8g
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoYXJnMVBheWxvYWQsIGFyZzFUYWcpOworICAgIC8vICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAvL30K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJ
XzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRp
b25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBh
cmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9h
ZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQ
YXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBh
cmcyVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxv
YWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRf
MzJCSVRfRFVNTVlfQVJHIGltbSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5
bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShF
QUJJXzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyks
IFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJn
Mi50YWdHUFIoKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigp
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQu
cGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcp
OwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRU9aRCBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFy
ZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJS
ZWcgYXJnMVBheWxvYWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpQUCBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2lu
dGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVB
QklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1t
UHRyKHBvaW50ZXIpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
U3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJn
MVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlBheWxvYWQsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcy
UGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBUcnVzdGVkSW1tUHRyKHVp
ZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRp
b24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDSkogb3BlcmF0
aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BS
UmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJn
M1BheWxvYWQsIGFyZzNUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRf
MzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8z
MkJJVF9EVU1NWV9BUkcgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9aSiBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzNUYWcsIEdQUlJlZyBh
cmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJH
IGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklU
T3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQ
UlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oWl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIHVuc2lnbmVkIGFyZzIsIHVuc2lnbmVkIGFyZzMp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8z
MkJJVF9EVU1NWV9BUkcgIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tMzIoYXJnMiks
IFRydXN0ZWRJbW0zMihhcmczKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBh
eWxvYWQsIHVuc2lnbmVkIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBU
cnVzdGVkSW1tMzIoYXJnMyksIGFyZzQpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCB1bnNp
Z25lZCBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1t
MzIoYXJnMikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWkpaWlogb3BlcmF0aW9uLCB1bnNpZ25lZCBh
cmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCB1bnNpZ25lZCBhcmczLCBH
UFJSZWcgYXJnNCwgdW5zaWduZWQgYXJnNSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzJQYXlsb2FkLCBhcmcy
VGFnLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQsIFRydXN0ZWRJbW0zMihhcmc1KSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogI3VuZGVmIEVBQklfMzJC
SVRfRFVNTVlfQVJHCiAjdW5kZWYgU0g0XzMyQklUX0RVTU1ZX0FSRwpAQCAtMTg4NCwyOCArMTg4
NCwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkgeyB9CiAj
ZW5kaWYKIAotICAgIC8vIFRoZXNlIG1ldGhvZHMgYWRkIGNhbGwgaW5zdHJ1Y3Rpb25zLCB3aXRo
IG9wdGlvbmFsIGV4Y2VwdGlvbiBjaGVja3MgJiBzZXR0aW5nIHJlc3VsdHMuCi0gICAgSklUQ29t
cGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0
ciYgZnVuY3Rpb24pCisgICAgdm9pZCBjaGVja0V4Y2VwdGlvbigpCiAgICAgewotICAgICAgICBw
cmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7Ci0gICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmln
aW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwotICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNv
bnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxs
IGluc3RydWN0aW9ucywgd2l0aCBvcHRpb25hbCBleGNlcHRpb24gY2hlY2tzICYgc2V0dGluZyBy
ZXN1bHRzLgorICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25Q
dHImIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwog
ICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRD
YWxsKGZ1bmN0aW9uKTsKLSAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2tXaXRoQ2FsbEZyYW1l
Um9sbGJhY2soKTsKLSAgICAgICAgcmV0dXJuIGNhbGw7CisgICAgICAgIHJldHVybiBtX2ppdC5h
cHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rp
b24sIEdQUlJlZyByZXN1bHQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhD
YWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikK
ICAgICB7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKLSAgICAgICAgaWYgKChyZXN1bHQgIT0gSW52YWxpZEdQ
UlJlZykgJiYgKHJlc3VsdCAhPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpCi0gICAgICAgICAg
ICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOworICAgICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrV2l0aENhbGxGcmFtZVJvbGxiYWNrKCk7CiAgICAgICAgIHJldHVy
biBjYWxsOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxG
cmFtZVJvbGxiYWNrT25FeGNlcHRpb25TZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0
aW9uLCBHUFJSZWcgcmVzdWx0KQpAQCAtMTkxNywzNSArMTkxMCwxOCBAQCBwdWJsaWM6CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rp
b25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcHJlcGFyZUZv
ckV4dGVybmFsQ2FsbCgpOwotICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3Vy
cmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgICAgICBpZiAocmVzdWx0ICE9IElu
dmFsaWRHUFJSZWcpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVl
R1BSLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgYXBwZW5kQ2FsbChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCi0gICAgewot
ICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7Ci0gICAgICAgIG1faml0LmVtaXRTdG9y
ZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgcmV0
dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOwotICAgIH0KLSAgICBKSVRDb21waWxlcjo6
Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9u
UHRyJiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdDEsIEdQUlJlZyByZXN1bHQyKQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0
aW9uLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCiAgICAgewotICAgICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlv
bik7CisgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9u
KTsKICAgICAgICAgbV9qaXQuc2V0dXBSZXN1bHRzKHJlc3VsdDEsIHJlc3VsdDIpOwogICAgICAg
ICByZXR1cm4gY2FsbDsKICAgICB9CiAjaWYgQ1BVKFg4NikKLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRy
JiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKLSAgICAg
ICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkRlBSUmVnKSB7Ci0gICAgICAgICAgICBtX2ppdC5hc3Nl
bWJsZXIoKS5mc3RwbCgwLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAg
ICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGNhbGw7Ci0gICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHIm
IGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0KQogICAgIHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24pOwpAQCAtMTk1NiwxMyArMTkzMiw2IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQogI2VsaWYgQ1BVKEFSTSkgJiYgIUNQ
VShBUk1fSEFSREZQKQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVz
dWx0KQotICAgIHsKLSAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOwotICAgICAgICBpZiAocmVzdWx0ICE9IEludmFs
aWRGUFJSZWcpCi0gICAgICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS52bW92KHJlc3VsdCwgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7Ci0gICAgICAg
IHJldHVybiBjYWxsOwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0
UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7
CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsK
QEAgLTE5NzEsMTMgKzE5NDAsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjYWxsOwogICAg
IH0KICNlbHNlIC8vIENQVShYODZfNjQpIHx8IChDUFUoQVJNKSAmJiBDUFUoQVJNX0hBUkRGUCkp
IHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShTSDQpCi0gICAgSklUQ29tcGlsZXI6
OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlv
blB0ciYgZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQpCi0gICAgewotICAgICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7Ci0g
ICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZEZQUlJlZykKLSAgICAgICAgICAgIG1faml0Lm1v
dmVEb3VibGUoRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVy
biBjYWxsOwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0
KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7CiAgICAg
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlz
aW9uIDE4ODUwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDE1ICsyMDEsNDAgQEAgdm9pZCBBc3NlbWJseUhl
bHBlcnM6OmNhbGxFeGNlcHRpb25GdXp6KAogICAgIGlmICghT3B0aW9uczo6ZW5hYmxlRXhjZXB0
aW9uRnV6eigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoc3RhY2tBbGlnbm1lbnRC
eXRlcygpID49IHNpemVvZih2b2lkKikgKiAyKTsKLSAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKHN0
YWNrQWxpZ25tZW50Qnl0ZXMoKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBwb2tlKEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCAwKTsKLSAgICBwb2tlKEdQUkluZm86OnJldHVyblZhbHVl
R1BSMiwgMSk7CisgICAgc2l6ZV90IG9mZnNldFNpemUgPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
ICogKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnMpOworICAgIGlmICgob2Zmc2V0U2l6ZSAlIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSkgIT0gMCkK
KyAgICAgICAgb2Zmc2V0U2l6ZSArPSAob2Zmc2V0U2l6ZSAlIHN0YWNrQWxpZ25tZW50Qnl0ZXMo
KSk7CisgICAgQVNTRVJUKG9mZnNldFNpemUgJSBzdGFja0FsaWdubWVudEJ5dGVzKCkgPT0gMCk7
CisKKyAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKG9mZnNldFNpemUpLCBzdGFja1BvaW50ZXJSZWdp
c3Rlcik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzOyArK2kpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBzdG9yZTY0KEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOworI2Vsc2UKKyAgICAgICAgc3Rv
cmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGFj
a1BvaW50ZXJSZWdpc3RlciwgaSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKKyNlbmRpZgor
ICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVyczsgKytpKQorICAgICAgICBzdG9yZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkp
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKEdQUkluZm86
Om51bWJlck9mUmVnaXN0ZXJzICsgaSkqc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOworCisKICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25FeGNlcHRp
b25GdXp6KSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgY2FsbChH
UFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwotICAgIHBlZWsoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIDApOwotICAgIHBlZWsoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCAxKTsK
LSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIHN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKKworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86
Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBs
b2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGkgKiBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisjZWxzZQor
ICAgICAgICBsb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIGkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7
CisjZW5kaWYKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkKKyAgICAgICAgbG9hZERvdWJsZShNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKEdQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzICsgaSkqc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkp
OworCisgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihvZmZzZXRTaXplKSwgc3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogfQogCiBBc3NlbWJseUhlbHBlcnM6Okp1bXAgQXNzZW1ibHlIZWxwZXJzOjplbWl0
RXhjZXB0aW9uQ2hlY2soRXhjZXB0aW9uQ2hlY2tLaW5kIGtpbmQsIEV4Y2VwdGlvbkp1bXBXaWR0
aCB3aWR0aCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259086</attachid>
            <date>2015-08-15 01:37:34 -0700</date>
            <delta_ts>2015-08-15 16:14:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>120104</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDE1LTA4LTE1ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBERkcgY2FsbE9wZXJhdGlvbnMgc2hvdWxkIG5vdCBpbXBsaWNpdGx5IGVtaXQgYW4gZXhj
ZXB0aW9uIGNoZWNrLiBBdCBjYWxsT3BlcmF0aW9uIGNhbGwgc2l0ZXMsIHdlIHNob3VsZCBleHBs
aWNpdGx5IGVtaXQgZXhjZXB0aW9uIGNoZWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3OTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIERGRyBi
ZWluZyBhYmxlIHRvIGhhbmRsZSBleGNlcHRpb25zLiAKKyAgICAgICAgVG8gZG8gdGhpcywgd2Ug
bmVlZCBtb3JlIGNvbnRyb2wgb3ZlciB3aGVuIHdlIGVtaXQgZXhjZXB0aW9uIGNoZWNrcy4KKyAg
ICAgICAgU3BlY2lmaWNhbGx5LCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gc2lsZW50RmlsbCBiZWZv
cmUgZW1pdHRpbmcgYW4gZXhjZXB0aW9uIGNoZWNrLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXMg
dGhhdC4gVGhpcyBwYXRjaCBhbHNvIGFsbG93cyB1cyB0byBlYXNpbHkgc2VlIHdoaWNoCisgICAg
ICAgIG9wZXJhdGlvbnMgZG8gYW5kIGRvIG5vdCBlbWl0IGV4Y2VwdGlvbiBjaGVja3MuIEZpbmRp
bmcgdGhpcyBpbmZvcm1hdGlvbgorICAgICAgICBvdXQgYmVmb3JlIHdhcyBhIHBhaW4uCisKKyAg
ICAgICAgKiBkZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRm
Zy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRm
Zy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmV4Y2VwdGlv
bkNoZWNrKToKKyAgICAgICAgKiBkZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5l
cmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpDYWxsU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxTbG93UGF0aEdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbFNsb3dQYXRoR2VuZXJhdG9yOjp0ZWFyRG93bik6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0
b3I6OkNhbGxSZXN1bHRBbmROb0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6REZHOjpDYWxsUmVzdWx0QW5kT25lQXJndW1lbnRTbG93UGF0aEdlbmVyYXRvcjo6Q2Fs
bFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNhbGxSZXN1bHRBbmRUd29Bcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3Vs
dEFuZFR3b0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpD
YWxsUmVzdWx0QW5kVGhyZWVBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3VsdEFu
ZFRocmVlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNh
bGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRG
b3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxS
ZXN1bHRBbmRGaXZlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRGaXZl
QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRo
Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3FydCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aFBvdyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aExvZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90aWZ5V3JpdGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwRXhlYyk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcik6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tFeGNlcHRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09u
RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2Fs
bFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uU2V0UmVzdWx0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OkNvbXBh
cmVBbmRCb3hCb29sZWFuU2xvd1BhdGhHZW5lcmF0b3I6OkNvbXBhcmVBbmRCb3hCb29sZWFuU2xv
d1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21wYXJlQW5kQm94Qm9v
bGVhblNsb3dQYXRoR2VuZXJhdG9yOjpDb21wYXJlQW5kQm94Qm9vbGVhblNsb3dQYXRoR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVO
b25QZWVwaG9sZUNvbXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpu
b25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb252
ZXJ0TWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZURvdWJsZVJlcE1hY2hpbmVJbnQpOgorICAgICAgICAqIGZ0bC9GVExJbnRyaW5zaWNSZXBv
c2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjYWxsQ2hlY2spOgorICAgICAgICAqIGpp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNh
bGxFeGNlcHRpb25GdXp6KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0RXhj
ZXB0aW9uQ2hlY2spOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KEpTQzo6Vk06OnNjcmF0Y2hCdWZmZXJGb3JTaXplKToKKyAgICAgICAgKEpTQzo6Vk06OmV4Y2Vw
dGlvbkZ1enppbmdCdWZmZXIpOgorCiAyMDE1LTA4LTE0ICBCYXNpbGUgQ2xlbWVudCAgPGJhc2ls
ZV9jbGVtZW50QGFwcGxlLmNvbT4KIAogICAgICAgICBPY2Nhc2lvbmFsIGZhaWx1cmUgaW4gdjgt
djYvdjgtcmF5dHJhY2UuanMuZnRsLWVhZ2VyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNp
b24gMTg4NTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQ
YXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIH0KICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7
IGktLTspCiAgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSwgR1BSSW5mbzo6
cmVnVDApOworICAgICAgICBqaXQtPmNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAg
ICBpZiAobV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9zdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJy
YXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAko
cmV2aXNpb24gMTg4NTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJy
YXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1
OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGxh
bnMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBqaXQtPnNpbGVudFNwaWxsKG1fcGxhbnNbaV0p
OwogICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24obV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIsIG1f
c3RydWN0dXJlLCBtX3NpemUpOworICAgICAgICBqaXQtPmNoZWNrRXhjZXB0aW9uKCk7CiAgICAg
ICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1f
cmVzdWx0R1BSKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGkt
LTspCiAgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSwgY2FuVHJhbXBsZSk7
CkBAIC0xMDMsNiArMTA0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBqaXQtPm1faml0Lm1vdmUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9hcnJheVN0b3JhZ2VTdHJ1Y3R1cmUpLCBz
Y3JhdGNoR1BSKTsKICAgICAgICAgZG9uZS5saW5rKCZqaXQtPm1faml0KTsKICAgICAgICAgaml0
LT5jYWxsT3BlcmF0aW9uKG1fZnVuY3Rpb24sIG1fcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBtX3Np
emVHUFIpOworICAgICAgICBqaXQtPmNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIEdQUlJlZyBj
YW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTspCiAgICAgICAg
ICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSwgY2FuVHJhbXBsZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0
aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE4
ODUwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbENyZWF0ZURpcmVjdEFy
Z3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgaml0LT5zaWxlbnRTcGlsbChtX3BsYW5zW2ldKTsK
ICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9uQ3JlYXRl
RGlyZWN0QXJndW1lbnRzLCBtX3Jlc3VsdEdQUiwgbV9zdHJ1Y3R1cmUsIG1fbGVuZ3RoR1BSLCBt
X21pbkNhcGFjaXR5KTsKKyAgICAgICAgaml0LT5jaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBH
UFJSZWcgY2FuVHJhbXBsZSA9IFNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZShtX3Jlc3Vs
dEdQUik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQog
ICAgICAgICAgICAgaml0LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24g
MTg4NTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjUsMTEgKzE2NSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uQ2FsbDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBleGNlcHRpb25DaGVjayhKdW1w
IGp1bXBUb0hhbmRsZXIpCi0gICAgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBlbmQo
anVtcFRvSGFuZGxlcik7Ci0gICAgfQotICAgIAogICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soKQog
ICAgIHsKICAgICAgICAgbV9leGNlcHRpb25DaGVja3MuYXBwZW5kKGVtaXRFeGNlcHRpb25DaGVj
aygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5
VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9u
IDE4ODUwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5
VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBp
Y2tDYW5UcmFtcGxlKGV4dHJhY3RSZXN1bHQobV9yZXN1bHRSZWdzKSk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgaml0LT5zaWxl
bnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOworICAgICAgICBqaXQtPmNoZWNrRXhjZXB0
aW9uKCk7CiAgICAgICAgIAogICAgICAgICBqdW1wVG8oaml0KTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCShyZXZp
c2lvbiAxODg1MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2Vu
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDEwICs5MywxMSBAQCBjbGFzcyBDYWxsU2xv
d1BhdGhHZW5lcmF0b3IgOiBwdWJsaWMgSnVtCiBwdWJsaWM6CiAgICAgQ2FsbFNsb3dQYXRoR2Vu
ZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5j
dGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUs
IFJlc3VsdFR5cGUgcmVzdWx0KQorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2Rl
LCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJlc3VsdFR5cGUgcmVzdWx0KQogICAgICAgICA6
IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZT4oZnJvbSwgaml0KQogICAgICAgICAs
IG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9zcGlsbE1vZGUoc3BpbGxNb2RlKQor
ICAgICAgICAsIG1fbmVlZHNFeGNlcHRpb25DaGVjayhuZWVkc0V4Y2VwdGlvbkNoZWNrKQogICAg
ICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKICAgICB7CiAgICAgICAgIGlmIChtX3NwaWxsTW9kZSA9
PSBOZWVkVG9TcGlsbCkKQEAgLTEzMCwxMSArMTMxLDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAg
ICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldLCBjYW5UcmFtcGxlKTsKICAgICAgICAgfQor
ICAgICAgICBpZiAobV9uZWVkc0V4Y2VwdGlvbkNoZWNrKQorICAgICAgICAgICAgaml0LT5jaGVj
a0V4Y2VwdGlvbigpOwogICAgICAgICB0aGlzLT5qdW1wVG8oaml0KTsKICAgICB9CiAKICAgICBG
dW5jdGlvblR5cGUgbV9mdW5jdGlvbjsKICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgbV9zcGlsbE1v
ZGU7CisgICAgYm9vbCBtX25lZWRzRXhjZXB0aW9uQ2hlY2s7CiAgICAgUmVzdWx0VHlwZSBtX3Jl
c3VsdDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBtX2NhbGw7CiAgICAgVmVjdG9yPFNpbGVu
dFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7CkBAIC0xNDYsOSArMTUwLDkgQEAgY2xhc3Mg
Q2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZQogcHVibGljOgogICAgIENhbGxSZXN1
bHRBbmROb0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBmcm9t
LCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAgIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0KQorICAgICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJl
c3VsdFR5cGUgcmVzdWx0KQogICAgICAgICA6IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlw
ZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlPigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVu
Y3Rpb24sIHNwaWxsTW9kZSwgcmVzdWx0KQorICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlv
biwgc3BpbGxNb2RlLCBuZWVkc0V4Y2VwdGlvbkNoZWNrLCByZXN1bHQpCiAgICAgewogICAgIH0K
ICAgICAKQEAgLTE2OSw5ICsxNzMsOSBAQCBjbGFzcyBDYWxsUmVzdWx0QW5kT25lQXJndW1lbnRT
bG93UGF0aEdlCiBwdWJsaWM6CiAgICAgQ2FsbFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhH
ZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1
bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxKQorICAgICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJl
c3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSkKICAgICAgICAgOiBDYWxs
U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0g
ICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAg
ICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVj
aywgcmVzdWx0KQogICAgICAgICAsIG1fYXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICB7CiAgICAg
fQpAQCAtMTk1LDEwICsxOTksMTAgQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZFR3b0FyZ3VtZW50c1Ns
b3dQYXRoRwogcHVibGljOgogICAgIENhbGxSZXN1bHRBbmRUd29Bcmd1bWVudHNTbG93UGF0aEdl
bmVyYXRvcigKICAgICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVu
Y3Rpb25UeXBlIGZ1bmN0aW9uLAotICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2Rl
LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVudDEsCisgICAgICAgIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIGJvb2wgbmVlZHNFeGNlcHRpb25DaGVjaywgUmVz
dWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAogICAgICAgICBBcmd1bWVu
dFR5cGUyIGFyZ3VtZW50MikKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5
cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1
bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rp
b24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywgcmVzdWx0KQogICAgICAgICAsIG1f
YXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICAgICAgLCBtX2FyZ3VtZW50Mihhcmd1bWVudDIpCiAg
ICAgewpAQCAtMjI0LDEwICsyMjgsMTAgQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZFRocmVlQXJndW1l
bnRzU2xvd1BhdAogcHVibGljOgogICAgIENhbGxSZXN1bHRBbmRUaHJlZUFyZ3VtZW50c1Nsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0
LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGls
bE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKKyAgICAg
ICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgYm9vbCBuZWVkc0V4Y2VwdGlvbkNoZWNr
LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVudDEsCiAgICAgICAgIEFy
Z3VtZW50VHlwZTIgYXJndW1lbnQyLCBBcmd1bWVudFR5cGUzIGFyZ3VtZW50MykKICAgICAgICAg
OiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlw
ZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkK
KyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRp
b25DaGVjaywgcmVzdWx0KQogICAgICAgICAsIG1fYXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICAg
ICAgLCBtX2FyZ3VtZW50Mihhcmd1bWVudDIpCiAgICAgICAgICwgbV9hcmd1bWVudDMoYXJndW1l
bnQzKQpAQCAtMjU5LDEwICsyNjMsMTAgQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZEZvdXJBcmd1bWVu
dHNTbG93UGF0aAogcHVibGljOgogICAgIENhbGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1Bh
dGhHZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQs
IEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxs
TW9kZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAorICAgICAg
ICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ss
IFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKICAgICAgICAgQXJn
dW1lbnRUeXBlMiBhcmd1bWVudDIsIEFyZ3VtZW50VHlwZTMgYXJndW1lbnQzLCBBcmd1bWVudFR5
cGU0IGFyZ3VtZW50NCkKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0
aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24s
IHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywgcmVzdWx0KQogICAgICAgICAsIG1fYXJn
dW1lbnQxKGFyZ3VtZW50MSkKICAgICAgICAgLCBtX2FyZ3VtZW50Mihhcmd1bWVudDIpCiAgICAg
ICAgICwgbV9hcmd1bWVudDMoYXJndW1lbnQzKQpAQCAtMjk2LDExICszMDAsMTEgQEAgY2xhc3Mg
Q2FsbFJlc3VsdEFuZEZpdmVBcmd1bWVudHNTbG93UGF0aAogcHVibGljOgogICAgIENhbGxSZXN1
bHRBbmRGaXZlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBlIGZy
b20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAgICAg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50
VHlwZTEgYXJndW1lbnQxLAorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBi
b29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUx
IGFyZ3VtZW50MSwKICAgICAgICAgQXJndW1lbnRUeXBlMiBhcmd1bWVudDIsIEFyZ3VtZW50VHlw
ZTMgYXJndW1lbnQzLCBBcmd1bWVudFR5cGU0IGFyZ3VtZW50NCwKICAgICAgICAgQXJndW1lbnRU
eXBlNSBhcmd1bWVudDUpCiAgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBl
LCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGU+KAotICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5j
dGlvbiwgc3BpbGxNb2RlLCByZXN1bHQpCisgICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9u
LCBzcGlsbE1vZGUsIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIHJlc3VsdCkKICAgICAgICAgLCBtX2Fy
Z3VtZW50MShhcmd1bWVudDEpCiAgICAgICAgICwgbV9hcmd1bWVudDIoYXJndW1lbnQyKQogICAg
ICAgICAsIG1fYXJndW1lbnQzKGFyZ3VtZW50MykKQEAgLTMzMCwxMCArMzM0LDEwIEBAIHByb3Rl
Y3RlZDogICAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25U
eXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlPgogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAogICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZl
SklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICBSZXN1bHRUeXBlIHJlc3VsdCwg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIFJlc3VsdFR5
cGUgcmVzdWx0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIGJv
b2wgbmVlZHNFeGNlcHRpb25DaGVjayA9IHRydWUpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4+KAotICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9u
LCBzcGlsbE1vZGUsIHJlc3VsdCk7CisgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxs
TW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywgcmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8CkBAIC0z
NDIsMTAgKzM0NiwxMCBAQCB0ZW1wbGF0ZTwKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1Bh
dGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2
ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQs
IEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAotICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1v
ZGUgPSBOZWVkVG9TcGlsbCkKKyAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVl
ZFRvU3BpbGwsIGJvb2wgbmVlZHNFeGNlcHRpb25DaGVjayA9IHRydWUpCiB7CiAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0
b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRUeXBlMT4+KAot
ICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCwgYXJndW1lbnQx
KTsKKyAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCBuZWVkc0V4Y2VwdGlv
bkNoZWNrLCByZXN1bHQsIGFyZ3VtZW50MSk7CiB9CiAKIHRlbXBsYXRlPApAQCAtMzU0LDEwICsz
NTgsMTAgQEAgdGVtcGxhdGU8CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aENhbGwoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAogICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVu
dFR5cGUxIGFyZ3VtZW50MSwgQXJndW1lbnRUeXBlMiBhcmd1bWVudDIsCi0gICAgU3BpbGxSZWdp
c3RlcnNNb2RlIHNwaWxsTW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIFNwaWxsUmVnaXN0ZXJzTW9k
ZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCwgYm9vbCBuZWVkc0V4Y2VwdGlvbkNoZWNrID0gdHJ1
ZSkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kVHdvQXJndW1l
bnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwg
QXJndW1lbnRUeXBlMSwgQXJndW1lbnRUeXBlMj4+KAotICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0
aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIpOworICAgICAgICBm
cm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIHJlc3Vs
dCwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwogfQogCiB0ZW1wbGF0ZTwKQEAgLTM2NiwxMCArMzcw
LDEwIEBAIHRlbXBsYXRlPAogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGhDYWxsKAogICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQs
IEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKICAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRU
eXBlMSBhcmd1bWVudDEsIEFyZ3VtZW50VHlwZTIgYXJndW1lbnQyLAotICAgIEFyZ3VtZW50VHlw
ZTMgYXJndW1lbnQzLCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwp
CisgICAgQXJndW1lbnRUeXBlMyBhcmd1bWVudDMsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1v
ZGUgPSBOZWVkVG9TcGlsbCwgYm9vbCBuZWVkc0V4Y2VwdGlvbkNoZWNrID0gdHJ1ZSkKIHsKICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kVGhyZWVBcmd1bWVudHNTbG93
UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVu
dFR5cGUxLCBBcmd1bWVudFR5cGUyLAotICAgICAgICBBcmd1bWVudFR5cGUzPj4oZnJvbSwgaml0
LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQyLCBhcmd1
bWVudDMpOworICAgICAgICBBcmd1bWVudFR5cGUzPj4oZnJvbSwgaml0LCBmdW5jdGlvbiwgc3Bp
bGxNb2RlLCBuZWVkc0V4Y2VwdGlvbkNoZWNrLCByZXN1bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQy
LCBhcmd1bWVudDMpOwogfQogCiB0ZW1wbGF0ZTwKQEAgLTM4MCwxMCArMzg0LDEwIEBAIGlubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3IKICAgICBKdW1wVHlwZSBmcm9tLCBT
cGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlw
ZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLCBBcmd1bWVudFR5cGUyIGFyZ3VtZW50
MiwKICAgICBBcmd1bWVudFR5cGUzIGFyZ3VtZW50MywgQXJndW1lbnRUeXBlNCBhcmd1bWVudDQs
Ci0gICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCwgYm9vbCBuZWVkc0V4Y2Vw
dGlvbkNoZWNrID0gdHJ1ZSkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVz
dWx0QW5kRm91ckFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5
cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50VHlwZTEsIEFyZ3VtZW50VHlwZTIsCi0gICAgICAgIEFy
Z3VtZW50VHlwZTMsIEFyZ3VtZW50VHlwZTQ+Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1v
ZGUsIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIsIGFyZ3VtZW50MywgYXJndW1lbnQ0KTsK
KyAgICAgICAgQXJndW1lbnRUeXBlMywgQXJndW1lbnRUeXBlND4+KGZyb20sIGppdCwgZnVuY3Rp
b24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywgcmVzdWx0LCBhcmd1bWVudDEsIGFy
Z3VtZW50MiwgYXJndW1lbnQzLCBhcmd1bWVudDQpOwogfQogCiB0ZW1wbGF0ZTwKQEAgLTM5NCwx
MCArMzk4LDEwIEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3IKICAg
ICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rp
b24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLCBBcmd1
bWVudFR5cGUyIGFyZ3VtZW50MiwKICAgICBBcmd1bWVudFR5cGUzIGFyZ3VtZW50MywgQXJndW1l
bnRUeXBlNCBhcmd1bWVudDQsIEFyZ3VtZW50VHlwZTUgYXJndW1lbnQ1LAotICAgIFNwaWxsUmVn
aXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCkKKyAgICBTcGlsbFJlZ2lzdGVyc01v
ZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIGJvb2wgbmVlZHNFeGNlcHRpb25DaGVjayA9IHRy
dWUpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3VsdEFuZEZpdmVBcmd1
bWVudHNTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBl
LCBBcmd1bWVudFR5cGUxLCBBcmd1bWVudFR5cGUyLAotICAgICAgICBBcmd1bWVudFR5cGUzLCBB
cmd1bWVudFR5cGU0LCBBcmd1bWVudFR5cGU1Pj4oZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxN
b2RlLCByZXN1bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQyLCBhcmd1bWVudDMsCisgICAgICAgIEFy
Z3VtZW50VHlwZTMsIEFyZ3VtZW50VHlwZTQsIEFyZ3VtZW50VHlwZTU+Pihmcm9tLCBqaXQsIGZ1
bmN0aW9uLCBzcGlsbE1vZGUsIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIHJlc3VsdCwgYXJndW1lbnQx
LCBhcmd1bWVudDIsIGFyZ3VtZW50MywKICAgICAgICAgYXJndW1lbnQ0LCBhcmd1bWVudDUpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE4ODUwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
OSw2ICs0MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAK
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJG
dW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQ
UiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogCiAgICAgICAg
IGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1bHRHUFIsIHRha2VuKTsKICAg
ICB9IGVsc2UgewpAQCAtNDMyLDYgKzQzMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNw
ZWN1bGF0aXZlUGVlcGgKICAgICAKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdEdQUik7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCBy
ZXN1bHRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5
bG9hZEdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgc2ls
ZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAgICAgIGJy
YW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1bHRHUFIsIHRha2VuKTsKQEAgLTQ1
Myw3ICs0NTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNfSklUT3BlcmF0aW9uX0VKSiBmdW5jdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwKICAg
ICAgICAgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICAgICAgOiBDYWxs
U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFNfSklUT3BlcmF0aW9uX0VKSiwgR1BSUmVnPigK
LSAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIE5lZWRUb1NwaWxsLCByZXN1bHQpCisg
ICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBOZWVkVG9TcGlsbCwgdHJ1ZSwgcmVzdWx0
KQogICAgICAgICAsIG1fYXJnMVRhZyhhcmcxVGFnKQogICAgICAgICAsIG1fYXJnMVBheWxvYWQo
YXJnMVBheWxvYWQpCiAgICAgICAgICwgbV9hcmcyVGFnKGFyZzJUYWcpCkBAIC01MDAsNiArNTAy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24s
IHJlc3VsdFBheWxvYWRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BS
LCBhcmcyUGF5bG9hZEdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAog
ICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdFBheWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxkcmVu
Q2FsbGVkRXhwbGljaXRseSk7CiAgICAgfSBlbHNlIHsKQEAgLTU2MCw2ICs1NjMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIAogICAgICAgICBz
aWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BSLCBh
cmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOwor
ICAgICAgICAvLyBjaGVja0V4Y2VwdGlvbigpOyAvLyBNYXliZSBub3QgbmVlZGVkPwogICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICAKICAg
ICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGls
ZXI6Ok5vblplcm8sIHJlc3VsdFBheWxvYWRHUFIsIHRha2VuKTsKQEAgLTU2Nyw3ICs1NzEsOCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIC8vIEZJ
WE1FOiBBZGQgZmFzdCBwYXRocyBmb3IgdHdvQ2VsbHMsIG51bWJlciBldGMuCiAKICAgICAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcx
VGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9h
ZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxvYWRHUFIsIGFyZzJUYWdHUFIsIGFyZzJQYXlsb2Fk
R1BSKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8KKyAgICAgICAgLy9jaGVja0V4Y2VwdGlvbigpOyAv
LyBNYXliZSBub3QgbmVlZGVkPwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3Vs
dFBheWxvYWRHUFIpOwogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJ
VENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdFBheWxvYWRHUFIs
IHRha2VuKTsKQEAgLTYwNCw2ICs2MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZU5vblBlCiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJl
U3RyaWN0RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQ
UiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICAvL2NoZWNrRXhjZXB0aW9u
KCk7IC8vIE1heWJlIG5vdCBuZWVkZWQ/CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
cmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5hbmRQdHIoSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW0zMigxKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC02MTUsNiArNjIx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBz
aWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFU
YWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CiAgICAg
ICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgIC8v
Y2hlY2tFeGNlcHRpb24oKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8KICAgICAgICAgCiAgICAgICAg
IG1faml0LmFuZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQYXlsb2Fk
R1BSKTsKICAgICB9CkBAIC03MDAsNiArNzA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJm1faml0KTsKICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncyk7
CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgbV9qaXQuYWJvcnRX
aXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhEaWROb3RUaHJvdyk7CiAgICAgICAgICAg
ICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHJlc3VsdEdQUiA9IHNjcmF0Y2hHUFIy
OwpAQCAtNzMyLDYgKzc0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUKICAgICAgICAgICAgIC8vIFJpZ2h0IG5vdywgYXJndW1lbnRzIGlzIGluIGFyZ3VtZW50
c1RhZ0dQUi9hcmd1bWVudHNQYXlsb2FkR1BSIGFuZCB0aGUgcmVnaXN0ZXIgZmlsZSBpcwogICAg
ICAgICAgICAgLy8gZmx1c2hlZC4KICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
U2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50c1Rh
Z0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwgbnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0
VmFyQXJnT2Zmc2V0KTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIC8vIE5vdyB3ZSBoYXZlIHRoZSBhcmd1bWVudCBjb3VudCBvZiB0aGUg
Y2FsbGVlIGZyYW1lLCBidXQgd2UndmUgbG9zdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQuCiAgICAg
ICAgICAgICAvLyBSZWNvbnN0cnVjdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQgd2hpbGUgcHJlc2Vy
dmluZyB0aGUgY2FsbGVlIGZyYW1lLgpAQCAtNzQxLDYgKzc1MCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVz
dGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA2ICogc2l6ZW9mKHZvaWQqKSkpKSwgc2NyYXRj
aEdQUjEsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCBzY3JhdGNoR1BSMSwgYXJndW1lbnRzVGFnR1BSLCBhcmd1
bWVudHNQYXlsb2FkR1BSLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHJl
c3VsdEdQUiA9IEdQUkluZm86OnJldHVyblZhbHVlR1BSOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTE1MzQsNyArMTU0NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dp
Y2FsTm90KE4KICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkNvbnZl
cnRKU1ZhbHVlVG9Cb29sZWFuLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLAotICAgICAg
ICAgICAgICAgIGFyZzFQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICAgICAgYXJnMVBheWxvYWRH
UFIsIE5lZWRUb1NwaWxsLCBmYWxzZSkpOyAvLyBEb2VzIG5vdCBuZWVkIGV4Y2VwdGlvbiBjaGVj
ay4KICAgICAKICAgICAgICAgbV9qaXQueG9yMzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQYXls
b2FkR1BSKTsKICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHRQYXlsb2FkR1BSLCBub2RlLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtMTY4MCw2ICsxNjkwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlKiBubwogICAgICAgICBzaWxlbnRTcGlsbEFs
bFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNv
bnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZXN1bHRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxv
YWRHUFIpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAg
ICAgIC8vIGNoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgCiAgICAgICAgIGJy
YW5jaFRlc3QzMihKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAg
ICAgIGp1bXAobm90VGFrZW4pOwpAQCAtMjA2MCw2ICsyMDcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdw
cigpLCBvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIsIG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUik7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVB
ZGQsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgb3AxVGFnR1BSLCBvcDFQ
YXlsb2FkR1BSLCBvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpOworICAgICAgICBjaGVja0V4Y2Vw
dGlvbigpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCks
IHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTIyMzUsNiAr
MjI0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgCiAgICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIGNhbGxPcGVyYXRp
b24oc2luLCByZXN1bHQuZnByKCksIG9wMUZQUik7CisgICAgICAgIC8vIGNoZWNrRXhjZXB0aW9u
KCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMjQ3LDYgKzIyNjAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBGUFJS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKGNvcywgcmVzdWx0LmZw
cigpLCBvcDFGUFIpOworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQu
CiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0yMzYyLDYgKzIzNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0
VGFnKHRoaXMpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9h
ZCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxDZWxs
LCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIGJhc2VHUFIsIHByb3BlcnR5
VGFnR1BSLCBwcm9wZXJ0eVBheWxvYWRHUFIpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24o
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3By
KCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0y
NjI5LDYgKzI2NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJp
Y3RNb2RlKCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdENlbGxOb25TdHJpY3QsIGJhc2VHUFIsIHByb3BlcnR5VGFnR1BSLCBwcm9w
ZXJ0eVBheWxvYWRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuY29kZUJsb2NrKCkt
PmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlWYWxDZWxsTm9uU3RyaWN0LCBiYXNlR1BSLCBwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHlQ
YXlsb2FkR1BSLCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGNo
ZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUp
OwogICAgICAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOwpAQCAtMjc4Miw2ICsyNzk4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdCwg
cmVzdWx0LmdwcigpLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CisgICAgICAgICAgICBjaGVja0V4
Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBNdXN0IHVzZSBqc1ZhbHVl
UmVzdWx0IGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHNjcmV3IHVwIHJlZ2lzdGVyCiAgICAgICAgICAg
ICAvLyBhbGxvY2F0aW9uLCB3aGljaCB0aGlua3MgdGhhdCB0aGlzIG5vZGUgaGFzIGEgcmVzdWx0
LgpAQCAtMjc5OCw2ICsyODE1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwog
ICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWMsIHJlc3VsdFRhZy5ncHIoKSwgcmVz
dWx0UGF5bG9hZC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAgICBjaGVja0V4
Y2VwdGlvbigpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3By
KCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTI4MTIs
NiArMjgzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJl
c3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlv
bigpOwogICAgICAgICAKICAgICAgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdl
IHNob3VsZCB1c2UgaXQgaGVyZS4KICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHQuZ3ByKCks
IG5vZGUpOwpAQCAtMzIzMiw2ICszMjUxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBDYWxsU3RyaW5nQ29u
c3RydWN0b3IpOwogICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0
cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIsIG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUik7CiAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAg
aWYgKGRvbmUuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAg
ICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTMzMjYsNiArMzM0Niw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24oCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3RW1wdHlBcnJheSwgcmVzdWx0Lmdw
cigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRp
b24oKTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zNDAzLDYgKzM0MjQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAg
ICAgICAgICAgICBvcGVyYXRpb25OZXdBcnJheSwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRl
eGluZ1R5cGUoKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2b2lkKj4oYnVmZmVyKSwgbm9k
ZS0+bnVtQ2hpbGRyZW4oKSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAKICAgICAgICAg
aWYgKHNjcmF0Y2hTaXplKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKQEAgLTM0ODMsNiArMzUwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGNhbGxPcGVyYXRp
b24oCiAgICAgICAgICAgICBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0
cnVjdHVyZUdQUiwgc2l6ZUdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MzUyOCw2ICszNTUxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIAog
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHQuZ3By
KCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwgbm9kZS0+c3RhcnRDb25zdGFudCgpLCBub2Rl
LT5udW1Db25zdGFudHMoKSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMzU1Myw2ICszNTc3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1l
bnRGb3JUeXBlKG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpLAogICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUiwgZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlKG5vZGUtPnR5cGVkQXJyYXlU
eXBlKCkpLAogICAgICAgICAgICAgICAgIGFyZ3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRH
UFIpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0zNTcwLDYgKzM1OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CiAgICAg
ICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1JlZ2V4cCwgcmVzdWx0VGFn
LmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBtX2ppdC5jb2RlQmxvY2soKS0+cmVnZXhwKG5v
ZGUtPnJlZ2V4cEluZGV4KCkpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAg
CiAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHRoZSBjYWxsT3BlcmF0aW9uIGFib3ZlIGV4cGxpY2l0
bHkgcmV0dXJuIGEgY2VsbCByZXN1bHQsIG9yIGppdEFzc2VydCB0aGUgdGFnIGlzIGEgY2VsbCB0
YWcuCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CkBAIC00
MjYzLDYgKzQyODksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6
ZU9mVmFyYXJncywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50c1RhZ0dQUiwgYXJn
dW1lbnRzUGF5bG9hZEdQUiwgZGF0YS0+b2Zmc2V0KTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24o
KTsKICAgICAgICAgCiAgICAgICAgIGxvY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAg
ICAgICB7CkBAIC00MjkyLDYgKzQzMTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0LnN0b3JlMzIoYXJnQ291bnRJbmNsdWRpbmdUaGlz
R1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihkYXRhLT5tYWNoaW5lQ291bnQpKTsKICAgICAg
ICAgCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIGRhdGEtPm1h
Y2hpbmVTdGFydC5vZmZzZXQoKSwgYXJndW1lbnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BS
LCBkYXRhLT5vZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBkYXRhLT5tYW5kYXRvcnlN
aW5pbXVtKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIG5v
UmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzNjYsNiArNDM5NCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0
eSwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9h
ZEdQUiwgcHJvcGVydHkuZ3ByKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAg
ICBib29sZWFuUmVzdWx0KHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC00NDg2LDYgKzQ1MTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgc2NyYXRj
aEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxDZWxsLCByZXN1
bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIGJhc2VHUFIsIHNjcmF0Y2hHUFIsIHByb3BlcnR5
R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICNlbHNlCiAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFn
KHRoaXMpOwpAQCAtNDU0OSw2ICs0NTc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yLCByZXN1bHRHUFIsIGJhc2Uu
Z3ByKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQ1OTIsNiArNDYyMyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvSW5kZXhT
dHJpbmcsIHJlc3VsdEdQUiwgaW5kZXguZ3ByKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigp
OwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTg4NTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5j
dGlvbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBhcmcyR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRp
b24oKTsKIAogICAgICAgICBicmFuY2hUZXN0MzIoY2FsbFJlc3VsdENvbmRpdGlvbiwgcmVzdWx0
R1BSLCB0YWtlbik7CiAgICAgfSBlbHNlIHsKQEAgLTM5MSw2ICszOTIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFs
bFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJG
dW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICAgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9u
KCk7CiAgICAgICAgIAogICAgICAgICAgICAgYnJhbmNoVGVzdDMyKGNhbGxSZXN1bHRDb25kaXRp
b24sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAgICAgICB9CkBAIC00MTAsNyArNDEyLDcgQEAgcHVi
bGljOgogICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LAogICAgICAg
ICBTX0pJVE9wZXJhdGlvbl9FSkogZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMikKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IFNfSklUT3BlcmF0aW9uX0VKSiwgR1BSUmVnPigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVu
Y3Rpb24sIE5lZWRUb1NwaWxsLCByZXN1bHQpCisgICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0
aW9uLCBOZWVkVG9TcGlsbCwgdHJ1ZSwgcmVzdWx0KQogICAgICAgICAsIG1fYXJnMShhcmcxKQog
ICAgICAgICAsIG1fYXJnMihhcmcyKQogICAgIHsKQEAgLTQ1MCw2ICs0NTIsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQ
UiwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAg
IAogICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BS
KTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY3VycmVudE5vZGUsIERhdGFG
b3JtYXRKU0Jvb2xlYW4sIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC01MTAsNiAr
NTEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJn
MkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAg
ICAgY2hlY2tFeGNlcHRpb24oKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8KICAgICAgICAgCiAgICAg
ICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVy
OjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9IGVsc2UgewpAQCAtNTM2LDYgKzU0
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7
CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgY2hl
Y2tFeGNlcHRpb24oKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8KICAgICAgICAgCiAgICAgICAgIGJy
YW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25a
ZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9CkBAIC01NzEsNiArNTc2LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBzaWxlbnRTcGlsbEFs
bFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAg
IHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRp
b24oKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8KICAgICAgICAgCiAgICAgICAgIG1faml0LmFuZDY0
KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0
Lm9yMzIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsK
QEAgLTY4Niw2ICs2OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwog
ICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmbV9qaXQpOwogICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKTsKKyAgICAgICAgICAg
IGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZH
VmFyYXJnc1Rocm93aW5nUGF0aERpZE5vdFRocm93KTsKICAgICAgICAgICAgIGRvbmUubGluaygm
bV9qaXQpOwogICAgICAgICAgICAgcmVzdWx0R1BSID0gc2NyYXRjaEdQUjI7CkBAIC03MTUsNiAr
NzIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAvLyBSaWdodCBub3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1bWVu
dHNHUFIgYW5kIHRoZSByZWdpc3RlciBmaWxlIGlzIGZsdXNoZWQuCiAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBhcmd1bWVudHNHUFIsIG51bVVzZWRTdGFja1Nsb3RzLCBkYXRhLT5maXJzdFZhckFy
Z09mZnNldCk7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBOb3cgd2UgaGF2ZSB0aGUgYXJndW1lbnQgY291bnQgb2YgdGhlIGNhbGxl
ZSBmcmFtZSwgYnV0IHdlJ3ZlIGxvc3QgdGhlIGFyZ3VtZW50cyBvcGVyYW5kLgogICAgICAgICAg
ICAgLy8gUmVjb25zdHJ1Y3QgdGhlIGFyZ3VtZW50cyBvcGVyYW5kIHdoaWxlIHByZXNlcnZpbmcg
dGhlIGNhbGxlZSBmcmFtZS4KQEAgLTcyNCw2ICs3MzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZElt
bTMyKC0oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
KHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNSAqIHNpemVvZih2b2lkKikpKSksIHNjcmF0Y2hHUFIx
LCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRjaEdQUjEsIGFyZ3VtZW50c0dQUiwgZGF0YS0+Zmlyc3RW
YXJBcmdPZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGNoZWNr
RXhjZXB0aW9uKCk7CiAgICAgICAgICAgICByZXN1bHRHUFIgPSBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE2ODYsNyArMTY5NSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSkpOwogICAgIAog
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChz
bG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29udmVydEpTVmFsdWVUb0Jvb2xlYW4sIHJlc3VsdEdQ
UiwgYXJnMUdQUikpOworICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBv
cGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBOZWVk
VG9TcGlsbCwgZmFsc2UpKTsgLy8gRG9lcyBub3QgbmVlZCBleGNlcHRpb24gY2hlY2suCiAgICAg
CiAgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihW
YWx1ZVRydWUpKSwgcmVzdWx0R1BSKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIs
IG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4sIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
CkBAIC0xODQwLDYgKzE4NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5v
ZGUqIG5vCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwog
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVh
biwgcmVzdWx0R1BSLCB2YWx1ZUdQUik7CiAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdEdQUik7CisgICAgICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE1heWJl
IG5vdCBuZWVkZWQ/CiAgICAgCiAgICAgICAgICAgICBicmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAgICAgICAgICAganVtcChub3RUYWtl
bik7CkBAIC0yMTY4LDYgKzIxNzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnREb3VibGVUb0ludDUyLCBy
ZXN1bHRHUFIsIHZhbHVlRlBSKTsKKyAgICAgICAgICAgIC8vY2hlY2tFeGNlcHRpb24oKTsgLy8g
Tm90IG5lZWRlZC4KICAgICAgICAgICAgIAogICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNJbnQ1MkFz
RG91YmxlLApAQCAtMjE5OSw2ICsyMjEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFk
ZE5vdE51bWJlciwgcmVzdWx0LmdwcigpLCBvcDFHUFIsIG9wMkdQUik7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGQsIHJlc3VsdC5ncHIo
KSwgb3AxR1BSLCBvcDJHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTIzNjgsNiArMjM4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIGNhbGxPcGVyYXRpb24oc2luLCByZXN1bHQuZnByKCksIG9wMUZQUik7CisgICAgICAgIC8v
Y2hlY2tFeGNlcHRpb24oKTsgLy8gTm90IG5lZWRlZC4gCiAgICAgICAgIGRvdWJsZVJlc3VsdChy
ZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMzgwLDYgKzIz
OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IAogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9u
KGNvcywgcmVzdWx0LmZwcigpLCBvcDFGUFIpOworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7
IC8vIE5vdCBuZWVkZWQuCiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNDg2LDYgKzI1MDAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbCwgcmVzdWx0LmdwcigpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3MDUsNiArMjcyMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9u
UHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwg
YXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25T
dHJpY3QsIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNHUFIpOworICAgICAgICAgICAgY2hlY2tFeGNl
cHRpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAg
ICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7CkBAIC0yOTE2LDYgKzI5MzIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQu
Z3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9u
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE11c3QgdXNlIGpzVmFsdWVSZXN1bHQg
YmVjYXVzZSBvdGhlcndpc2Ugd2Ugc2NyZXcgdXAgcmVnaXN0ZXIKICAgICAgICAgICAgIC8vIGFs
bG9jYXRpb24sIHdoaWNoIHRoaW5rcyB0aGF0IHRoaXMgbm9kZSBoYXMgYSByZXN1bHQuCkBAIC0y
OTMxLDYgKzI5NDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVj
LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgY2hlY2tFeGNl
cHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0yOTQ1LDYgKzI5NjMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3Vt
ZW50R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIC8v
IElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCiAgICAg
ICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwpA
QCAtMzI4Niw2ICszMzA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3Ip
OwogICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0
cnVjdG9yLCByZXN1bHRHUFIsIG9wMUdQUik7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBj
aGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKICAgICAgICAg
ICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKQEAgLTMzNzgsNiArMzM5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+
aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMzQ2MCw2ICszNDgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3Bl
cmF0aW9uTmV3QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpLAog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZCo+KGJ1ZmZlciksIG5vZGUtPm51bUNoaWxkcmVu
KCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogCiAgICAgICAgIGlmIChzY3JhdGNoU2l6
ZSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0zNTM3LDYg
KzM1NTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSwg
c3RydWN0dXJlR1BSKTsKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmVH
UFIsIHNpemVHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM1ODAsNiAr
MzYwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAKICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0LmdwcigpLCBnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihu
b2RlLT5pbmRleGluZ1R5cGUoKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwgbm9kZS0+bnVtQ29u
c3RhbnRzKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2MDQs
NiArMzYyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50Rm9yVHlw
ZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIGds
b2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwK
ICAgICAgICAgICAgICAgICBhcmd1bWVudEdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlv
bigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM2MjAsNiArMzY0NSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdSZWdleHAsIHJlc3VsdC5ncHIoKSwgbV9qaXQuY29kZUJsb2NrKCktPnJlZ2V4cChub2Rl
LT5yZWdleHBJbmRleCgpKSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtNDI2OSw2ICs0Mjk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blNpemVPZlZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudHNHUFIsIGRh
dGEtPm9mZnNldCk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAg
ICBsb2NrKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgewpAQCAtNDI5Nyw2ICs0
MzI0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBtX2ppdC5zdG9yZTMyKGFyZ0NvdW50SW5jbHVkaW5nVGhpc0dQUiwgSklUQ29tcGlsZXI6OnBh
eWxvYWRGb3IoZGF0YS0+bWFjaGluZUNvdW50KSk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCks
IGFyZ3VtZW50c0dQUiwgZGF0YS0+b2Zmc2V0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgZGF0
YS0+bWFuZGF0b3J5TWluaW11bSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAg
IAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00NDA4LDYgKzQ0
MzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNH
ZW5lcmljUHJvcGVydHksIHJlc3VsdEdQUiwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCkpOwor
ICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTQ1NzUsNiArNDYwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciwgcmVzdWx0R1BSLCBiYXNlLmdwcigpKTsKKyAg
ICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00NjE0LDYgKzQ2NDQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0luZGV4U3RyaW5nLCByZXN1
bHRHUFIsIGluZGV4LmdwcigpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00
ODQ4LDYgKzQ4NzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0TWFjaGluZUludChF
CiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERvdWJsZVRvSW50NTIsIHJlc3VsdEdQUiwgdmFsdWVH
UFIpOwogICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAvL2NoZWNr
RXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAg
ICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCB2YWx1ZUVkZ2UsIFNwZWNJbnQzMiB8IFNwZWNJbnQ1
MkFzRG91YmxlLApAQCAtNDg4MCw2ICs0OTEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlRG91YmxlUmVwTQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgCiAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0RG91YmxlVG9JbnQ1MiwgcmVzdWx0R1BSLCB2YWx1ZUZQ
Uik7CisgICAgLy9jaGVja0V4Y2VwdGlvbigpOyAvLyBOb3QgbmVlZGVkLgogICAgIAogICAgIERG
R19UWVBFX0NIRUNLKAogICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjSW50NTJBc0Rv
dWJsZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCShyZXZpc2lvbiAxODg1MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTkyLDYgKzk5Miw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbihOb2RlKiBub2QKICAgICBjYWxsT3BlcmF0
aW9uKAogICAgICAgICBvcGVyYXRpb25HZW5lcmljSW4sIGV4dHJhY3RSZXN1bHQoSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KHJlc3VsdEdQUikpLAogICAgICAgICBiYXNlR1BSLCByZWdzKTsKKyAg
ICBjaGVja0V4Y2VwdGlvbigpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIApAQCAtMTk4Niw2ICsxOTg3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgICAgICAg
ICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R3ByKTsKICAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24odG9JbnQzMiwgcmVzdWx0R3ByLCBmcHIpOwogICAgICAgICAgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsK
IAogICAgICAgICAgICAgY29udmVydGVkLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCkBAIC0yMDQ1
LDYgKzIwNDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAg
ICAgICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R3ByKTsKICAgICAg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKHRvSW50MzIsIHJlc3VsdEdwciwgZnByKTsKICAgICAg
ICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7CisgICAgICAgICAg
ICAgICAgY2hlY2tFeGNlcHRpb24oKTsKIAogICAgICAgICAgICAgICAgIGNvbnZlcnRlZC5hcHBl
bmQobV9qaXQuanVtcCgpKTsKIApAQCAtMzY3OSw2ICszNjgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZAogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbihmbW9kQXNERkdPcGVyYXRpb24sIHJl
c3VsdC5mcHIoKSwgb3AxRlBSLCBvcDJGUFIpOworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7
IC8vIE5vdCBuZWVkZWQuCiAgICAgICAgIAogICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZw
cigpLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzcxNyw2ICszNzIxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmQoTgogICAgIEZQUlJlc3VsdCByb3VuZGVk
UmVzdWx0QXNEb3VibGUodGhpcyk7CiAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJvdW5kZWRSZXN1
bHRBc0RvdWJsZS5mcHIoKTsKICAgICBjYWxsT3BlcmF0aW9uKGpzUm91bmQsIHJlc3VsdEZQUiwg
dmFsdWVGUFIpOworICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgaWYgKHByb2R1Y2VzSW50ZWdl
cihub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgpKSkgewogICAgICAgICBHUFJUZW1wb3Jhcnkgcm91
bmRlZFJlc3VsdEFzSW50MzIodGhpcyk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwpAQCAtMzc0MCw2ICszNzQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
aXRoU3FydChObwogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBGUFJSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKHNxcnQsIHJlc3VsdC5mcHIoKSwg
b3AxRlBSKTsKKyAgICAgICAgLy9jaGVja0V4Y2VwdGlvbigpOyAvLyBOb3QgbmVlZGVkLgogICAg
ICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CkBAIC0zNzk4LDYgKzM4MDQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhQb3coTm9kCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHNraXBGYWxsYmFjayA9IGNvbXBpbGVBcml0aFBvd0ludGVnZXJGYXN0
UGF0aChtX2ppdCwgeE9wZXJhbmRDb3B5RnByLCBjb3VudGVyR3ByLCByZXN1bHRGcHIpOwogICAg
ICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZSh5T3BlcmFuZEdwciwgeU9wZXJhbmRmcHIu
ZnByKCkpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hdGhQb3csIHJlc3VsdEZw
ciwgeE9wZXJhbmRmcHIsIHlPcGVyYW5kZnByLmZwcigpKTsKKyAgICAgICAgLy9jaGVja0V4Y2Vw
dGlvbigpOyAvLyBOb3QgbmVlZGVkLgogCiAgICAgICAgIHNraXBGYWxsYmFjay5saW5rKCZtX2pp
dCk7CiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHRGcHIsIG5vZGUpOwpAQCAtMzgzMCw2ICsz
ODM3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUG93KE5vZAogICAgIGZh
aWxlZEV4cG9uZW50Q29udmVyc2lvblRvSW50ZWdlci5saW5rKCZtX2ppdCk7CiAKICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk1hdGhQb3csIHJlc3VsdEZwciwgeE9wZXJhbmRmcHIsIHlPcGVy
YW5kZnByKTsKKyAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBOZWVkZWQuCiAgICAgc2tp
cEZhbGxiYWNrLmxpbmsoJm1faml0KTsKICAgICBkb3VibGVSZXN1bHQocmVzdWx0RnByLCBub2Rl
KTsKIH0KQEAgLTM4NDEsNiArMzg0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cml0aExvZyhOb2QKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEZQUlJlc3VsdCByZXN1bHQo
dGhpcyk7CiAgICAgY2FsbE9wZXJhdGlvbihsb2csIHJlc3VsdC5mcHIoKSwgb3AxRlBSKTsKKyAg
ICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgZG91YmxlUmVzdWx0KHJl
c3VsdC5mcHIoKSwgbm9kZSk7CiB9CiAKQEAgLTQ2MTksNiArNDYyOCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbigKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
IAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCByZXN1bHRHUFIs
IHNjb3BlR1BSLCBleGVjdXRhYmxlKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNDc0NCw2ICs0NzU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFj
dGl2YQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJl
Y3QsCiAgICAgICAgICAgICByZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NvcGVHUFIsIHRhYmxlLCBU
cnVzdGVkSW1tMzIoaW5pdGlhbGl6YXRpb25WYWx1ZS50YWcoKSksIFRydXN0ZWRJbW0zMihpbml0
aWFsaXphdGlvblZhbHVlLnBheWxvYWQoKSkpOwogI2VuZGlmCisgICAgICAgIGNoZWNrRXhjZXB0
aW9uKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTQ5OTQsNyArNTAwNSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDcmVhdGVTY29wZWQKICAgICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgw
LCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIGRlc3RHUFIpOyB9KTsKICAgICAKLSAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsK
KyAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywg
cmVzdWx0R1BSKTsKKyAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgIAogICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTUwMjEsNyArNTAzMyw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWQKICAgICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIGRlc3RHUFIpOyB9KTsKICAgICAKLSAgICBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVz
dWx0R1BSKTsKKyAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFy
Z3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgIAogICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTUwMzYsNyArNTA0OSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3RpZnlXcml0ZSgKICAgICAgICAgVHJ1c3RlZEltbTMy
KElzSW52YWxpZGF0ZWQpKTsKICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAg
ICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25Ob3RpZnlXcml0ZSwgTm9S
ZXN1bHQsIHNldCkpOworICAgICAgICBzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJh
dGlvbk5vdGlmeVdyaXRlLCBOb1Jlc3VsdCwgc2V0LCBOZWVkVG9TcGlsbCwgZmFsc2UpKTsgLy8g
RG9lcyBub3QgbmVlZCBleGNlcHRpb24gY2hlY2suCiAgICAgCiAgICAgbm9SZXN1bHQobm9kZSk7
CiB9CkBAIC01MDY4LDYgKzUwODEsNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVn
RXhwRXhlYyhOCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCBy
ZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICBjaGVja0V4Y2VwdGlvbigp
OwogCiAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29t
cGlsZXI6Ok5vblplcm8sIHJlc3VsdC5ncHIoKSwgdGFrZW4pOwogICAgIGp1bXAobm90VGFrZW4p
OwpAQCAtNTIwMyw2ICs1MjE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9j
YXRlUHJvcAogCiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9IYXZlUHJv
cGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eSwgcmVzdWx0LmdwcigpLCBiYXNlR1BSKTsK
KyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIHN0b3JhZ2VSZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTI0Niw2ICs1MjYx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlYWxsb2NhdGVQcgogCiAgICAgICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlLCByZXN1
bHQuZ3ByKCksIGJhc2VHUFIsIG5ld1NpemUgLyBzaXplb2YoSlNWYWx1ZSkpOworICAgICAgICBj
aGVja0V4Y2VwdGlvbigpOwogCiAgICAgICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTM1Myw2ICs1MzY5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYQogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9w
KCkgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsLCByZXN1bHRHUFIsIG9wMUdQUik7
CiAgICAgICAgIH0KKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgaWYgKGRvbmUu
aXNTZXQoKSkKICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC01OTU4LDYgKzU5NzUsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0U3dpdGNoSW1tKE5vZGUqCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHNjcmF0Y2gpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkZpbmRTd2l0Y2hJ
bW1UYXJnZXRGb3JEb3VibGUsIHNjcmF0Y2gsIHZhbHVlUmVncy5ncHIoKSwgZGF0YS0+c3dpdGNo
VGFibGVJbmRleCk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7Cisg
ICAgICAgIC8vY2hlY2tFeGNlcHRpb24oKTsgLy8gTm90IG5lZWRlZC4KICAgICAgICAgbV9qaXQu
anVtcChzY3JhdGNoKTsKICNlbHNlCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEludCA9
IG1faml0LmJyYW5jaDMyKApAQCAtNTk3Miw2ICs1OTkwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaEltbShOb2RlKgogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhz
Y3JhdGNoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFy
Z2V0Rm9yRG91YmxlLCBzY3JhdGNoLCB2YWx1ZVJlZ3MsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgp
OwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2gpOworICAgICAgICAvL2No
ZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCisKICAgICAgICAgbV9qaXQuanVtcChzY3Jh
dGNoKTsKICNlbmRpZgogICAgICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOwpAQCAtNjIzMSw2ICs2MjUxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaFN0cmluZ09uUwogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIGRh
dGEtPnN3aXRjaFRhYmxlSW5kZXgsIHN0cmluZyk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7
CiAgICAgICAgIG1faml0Lmp1bXAoc3RyaW5nKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTYyNjgsNiArNjI4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmdP
blMKICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhzdHJpbmcpOwogICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgs
IHN0cmluZyk7CiAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhzdHJpbmcpOworICAgIGNoZWNr
RXhjZXB0aW9uKCk7CiAgICAgbV9qaXQuanVtcChzdHJpbmcpOwogfQogCkBAIC02NDA1LDYgKzY0
MjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzdG9yZVRvV3JpdGVCYXJyaWVyCiAgICAgc2ls
ZW50U3BpbGxBbGxSZWdpc3RlcnMoSW52YWxpZEdQUlJlZyk7CiAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25GbHVzaFdyaXRlQmFycmllckJ1ZmZlciwgY2VsbCk7CiAgICAgc2lsZW50RmlsbEFs
bFJlZ2lzdGVycyhJbnZhbGlkR1BSUmVnKTsKKyAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5v
dCBuZWVkZWQuCiAKICAgICBkb25lLmxpbmsoJm1faml0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE4ODUwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODg3LDIzOSArODg3LDIzOSBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJh
dGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBjZWxsKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGNlbGwpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9w
ZXJhdGlvbl9FTyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvYmplY3QpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUob2JqZWN0KTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRU9TIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVj
dCwgc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUob2JqZWN0LCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25f
RU9aIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVjdCwgaW50MzJfdCBzaXpl
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9iamVj
dCwgVHJ1c3RlZEltbVB0cihzaXplKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VPWiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvYmplY3QsIGludDMyX3Qgc2l6ZSkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvYmplY3QsIFRydXN0ZWRJbW1Q
dHIoc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUFMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgb2xkLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvbGQsIFRydXN0ZWRJbW1Q
dHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU0pzcyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIHNpemVfdCBpbmRleCwgR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihp
bmRleCksIGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9w
ZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMik7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0
aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQ
X0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RQUyBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qg
c2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJ
bW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RTUyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgaW5kZXgsIHNpemVfdCBzaXplKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihpbmRleCksIFRydXN0ZWRJbW1QdHIoc2l6
ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0
aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3Bl
cmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
Y2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDWkMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKENfSklUT3BlcmF0aW9uX0VJY2Ygb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRVN0SnNjU3ltdGFiSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3Rl
ZEltbTY0IGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHNjb3BlLCBUcnVzdGVkSW1t
UHRyKHRhYmxlKSwgaW5pdGlhbFZhbHVlKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogI2Vsc2UK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpz
Y1N5bXRhYkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
R1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIFRydXN0ZWRJbW0zMiB0YWcsIFRydXN0
ZWRJbW0zMiBwYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHIo
dGFibGUpLCBwYXlsb2FkLCB0YWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAjZW5kaWYKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25v
d25MZW5ndGgpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoa25vd25MZW5ndGgpKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbTMyKGtub3duTGVuZ3RoKSwgVHJ1c3RlZElt
bTMyKG1pbkNhcGFjaXR5KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGxlbmd0aCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSksIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFpaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBsZW5ndGgsIHVuc2lnbmVk
IG1pbkNhcGFjaXR5KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgbGVuZ3RoLCBUcnVzdGVkSW1tMzIobWlu
Q2FwYWNpdHkpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzc1N0IG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VK
c3NKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihTX0pJVE9wZXJhdGlvbl9FR0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIGFy
ZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VHQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2Jq
ZWN0KSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSnNzX0pJVE9wZXJhdGlvbl9FWiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BS
UmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQog
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQyBv
cGVyYXRpb24sIEpTQ2VsbCogYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDSWNmIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZy
YW1lKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDSWNmIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIGludCBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihhcmcyKSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhv
cGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDQyBv
cGVyYXRpb24sIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGFyZzIpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwg
SlNDZWxsKiBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFyZzEpLCBhcmcyKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRP
cGVyYXRpb25fRUNiIG9wZXJhdGlvbiwgdm9pZCogcG9pbnRlcikKQEAgLTExMzYsNyArMTEzNiw3
IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3Bl
cmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KQEAg
LTExODgsMjggKzExODgsMjggQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVF9KSVRPcGVyYXRpb25fRUpzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxLCBpbnQzMl90IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbTMyKGFyZzIpKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Q19KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRVdzIG9wZXJhdGlvbiwgV2F0Y2hwb2ludFNldCogd2F0Y2hw
b2ludFNldCkKQEAgLTEyMjIsMTIgKzEyMjIsMTIgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHZvaWQqIHBvaW50
ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0Qgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSkKICAgICB7CkBAIC0xMjQ5LDEwMiArMTI0OSwxMDIgQEAg
cHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBWiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUpzc1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHZv
aWQqIHBvaW50ZXIsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJbW1QdHIo
c2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBp
bnQgc3RhcnRDb25zdGFudCwgaW50IG51bUNvbnN0YW50cykKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoc3RhcnRDb25zdGFudCks
IFRydXN0ZWRJbW0zMihudW1Db25zdGFudHMpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIHZvaWQqIHBvaW50ZXIpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZElt
bVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1og
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lDSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VEQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSlog
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VKQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRVpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgaW50MzJfdCBhcmcxLCBHUFJS
ZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWkljZlogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEsIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIFRydXN0ZWRJbW1QdHIoaW5s
aW5lQ2FsbEZyYW1lKSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBzaXplX3QgaW5kZXgpCkBAIC0xMzU2LDI4ICsx
MzU2LDI4IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBf
SklUT3BlcmF0aW9uX0VTdEogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBhcmcyKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJ
VE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0pJVE9wZXJhdGlvbl9FSkpDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25f
RUpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSlpDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRP
cGVyYXRpb25fSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsK
QEAgLTEzODcsMTIyICsxMzg3LDEyMiBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRVBQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyIGltbSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihpbW0ubV92YWx1ZSkpKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tLCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0u
bV92YWx1ZSkpKSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUNKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLmdwcigpKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FT1pEIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJn
MykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
SiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklU
T3BlcmF0aW9uX0VKUFAgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIHZvaWQq
IHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGVyYXRpb24sIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHVpZCkp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24p
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VQWkogb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9aSiBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihEX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VKWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgYXJnMSwgdW5zaWduZWQgYXJnMiwgdW5zaWduZWQgYXJnMykKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIo
YXJnMiksIFRydXN0ZWRJbW0zMihhcmczKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlpaIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCB1bnNpZ25lZCBh
cmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJ
VE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgdW5z
aWduZWQgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWkpaWlog
b3BlcmF0aW9uLCB1bnNpZ25lZCBhcmcxLCBHUFJSZWcgYXJnMiwgdW5zaWduZWQgYXJnMywgR1BS
UmVnIGFyZzQsIHVuc2lnbmVkIGFyZzUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpLCBhcmcyLCBUcnVzdGVkSW1tMzIo
YXJnMyksIGFyZzQsIFRydXN0ZWRJbW0zMihhcmc1KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsKG9wZXJhdGlvbik7CiAgICAgfQogI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKIApAQCAt
MTUzNCwxNDMgKzE1MzQsMTQzIEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0Ugb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
RXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5
bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUCBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgdm9pZCogcG9p
bnRlcikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9h
ZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VJIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3Vs
dFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRUEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VBWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyBhcmcxKQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
MVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNzWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUyBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCB2b2lkKiBw
b2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNpemUp
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RVNTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGlu
dCBzdGFydENvbnN0YW50LCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50KSwg
VHJ1c3RlZEltbTMyKG51bUNvbnN0YW50cykpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3Vs
dFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCwgdm9pZCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1
c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXls
b2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VKUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJl
ZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJS
ZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMik7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KIAog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgSlNDZWxsKiBj
ZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9h
ZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwg
SlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQs
IHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpQ0kgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBHUFJSZWcgYXJnMSwgY29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFRydXN0ZWRJ
bW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1
bHRQYXlsb2FkLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIGludDMyX3QgYXJnMVRhZywg
R1BSUmVnIGFyZzFQYXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1Yklu
Zm8pLCBhcmcxUGF5bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzFUYWcpLCBUcnVzdGVkSW1tUHRyKHVp
ZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FREEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwg
RlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEsIGFyZzIpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
MVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgVHJ1c3RlZEltbTMyIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5
bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFy
ZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBH
UFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXls
b2FkLCBhcmcxVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJl
c3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0
UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXls
b2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVn
IHJlc3VsdFBheWxvYWQsIGludDMyX3QgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSkpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWkljZlogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgaW50MzJfdCBhcmcxLCBJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEp
LCBUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSksIGFyZzIpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBh
eWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgaW50MzJfdCBhcmcxLCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIoYXJnMSksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpT
VmFsdWVSZWdzIHZhbHVlLCBzaXplX3QgaW5kZXgpCkBAIC0xNjgyLDEzNyArMTY4MiwxMzcgQEAg
cHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRp
b25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBH
UFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJn
MlBheWxvYWQsIGFyZzJUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKLSAgICB9Ci0gICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9KIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKLSAg
ICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KKyAgICAvL0pJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRp
b25fSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJn
MVBheWxvYWQpCisgICAgLy97CisgICAgLy8gICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoYXJnMVBh
eWxvYWQsIGFyZzFUYWcpOworICAgIC8vICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAvL30KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwg
YXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQ
UlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0
XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBH
UFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVn
IGFyZzJQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJC
SVRfRFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJn
MVBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGltbSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSwgR1BS
UmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxv
YWQsIGFyZzJUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVz
dWx0VGFnKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1
bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9h
ZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQ
YXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNK
IG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3Mg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBh
eWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9aRCBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSiBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMVBheWxvYWQsIGFyZzFUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRUpQUCBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxv
YWQsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2ludGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2Fk
LCBhcmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJS
ZWcgYXJnMlBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyks
IGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VDSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJU
YWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9h
ZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBh
cmczVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3Bl
cmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPWkog
b3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJS
ZWcgYXJnM1BheWxvYWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgU0g0XzMyQklUX0RVTU1Z
X0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRU9aSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1
c3RlZEltbTMyIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RV
TU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgRlBSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIHVu
c2lnbmVkIGFyZzIsIHVuc2lnbmVkIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgIGFyZzFQYXlsb2FkLCBh
cmcxVGFnLCBUcnVzdGVkSW1tMzIoYXJnMiksIFRydXN0ZWRJbW0zMihhcmczKSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklU
T3BlcmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIHVuc2lnbmVkIGFyZzMsIEdQUlJlZyBh
cmc0KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbiha
X0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRh
ZywgR1BSUmVnIGFyZzFQYXlsb2FkLCB1bnNpZ25lZCBhcmcyKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQ
YXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
WkpaWlogb3BlcmF0aW9uLCB1bnNpZ25lZCBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFy
ZzJQYXlsb2FkLCB1bnNpZ25lZCBhcmczLCBHUFJSZWcgYXJnNCwgdW5zaWduZWQgYXJnNSkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIoYXJnMSksIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQs
IFRydXN0ZWRJbW0zMihhcmc1KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlv
bik7CiAgICAgfQogI3VuZGVmIEVBQklfMzJCSVRfRFVNTVlfQVJHCiAjdW5kZWYgU0g0XzMyQklU
X0RVTU1ZX0FSRwpAQCAtMTg4NCwyOCArMTg4NCwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVw
YXJlRm9yRXh0ZXJuYWxDYWxsKCkgeyB9CiAjZW5kaWYKIAotICAgIC8vIFRoZXNlIG1ldGhvZHMg
YWRkIGNhbGwgaW5zdHJ1Y3Rpb25zLCB3aXRoIG9wdGlvbmFsIGV4Y2VwdGlvbiBjaGVja3MgJiBz
ZXR0aW5nIHJlc3VsdHMuCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCisgICAgdm9pZCBjaGVja0V4
Y2VwdGlvbigpCiAgICAgewotICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7Ci0gICAg
ICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKLSAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENhbGwo
ZnVuY3Rpb24pOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgICAgICByZXR1
cm4gY2FsbDsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxs
RnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKKyAg
ICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxsIGluc3RydWN0aW9ucywgd2l0aCBvcHRpb25hbCBl
eGNlcHRpb24gY2hlY2tzICYgc2V0dGluZyByZXN1bHRzLgorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAg
cHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwogICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3Jp
Z2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKLSAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2tXaXRoQ2FsbEZyYW1lUm9sbGJhY2soKTsKLSAgICAgICAgcmV0dXJuIGNh
bGw7CisgICAgICAgIHJldHVybiBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICB9Ci0g
ICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCisgICAgSklUQ29t
cGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNv
bnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKICAgICB7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKLSAgICAg
ICAgaWYgKChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykgJiYgKHJlc3VsdCAhPSBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUikpCi0gICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCByZXN1bHQpOworICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5k
Q2FsbChmdW5jdGlvbik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrV2l0aENhbGxGcmFt
ZVJvbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb25TZXRSZXN1
bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQpAQCAtMTkxNywz
NSArMTkxMCwxOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVu
ZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0
KQogICAgIHsKLSAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwotICAgICAgICBtX2pp
dC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9u
KTsKKyAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24p
OwogICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICBtX2pp
dC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOwogICAgICAgICByZXR1cm4g
Y2FsbDsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbChjb25zdCBGdW5j
dGlvblB0ciYgZnVuY3Rpb24pCi0gICAgewotICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxs
KCk7Ci0gICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24p
OwotICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdDEs
IEdQUlJlZyByZXN1bHQyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1
bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJl
c3VsdDIpCiAgICAgewotICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisgICAgICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICAgICAgbV9qaXQuc2V0dXBSZXN1bHRz
KHJlc3VsdDEsIHJlc3VsdDIpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAjaWYgQ1BV
KFg4NikKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKLSAg
ICB7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKGZ1bmN0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkRlBSUmVn
KSB7Ci0gICAgICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS5mc3RwbCgwLCBKSVRDb21waWxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRD
b21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIGNhbGw7Ci0gICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxT
ZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0KQogICAg
IHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24p
OwpAQCAtMTk1NiwxMyArMTkzMiw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNhbGw7CiAg
ICAgfQogI2VsaWYgQ1BVKEFSTSkgJiYgIUNQVShBUk1fSEFSREZQKQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3QgRnVuY3Rp
b25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0KQotICAgIHsKLSAgICAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOwot
ICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRGUFJSZWcpCi0gICAgICAgICAgICBtX2ppdC5h
c3NlbWJsZXIoKS52bW92KHJlc3VsdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86
OnJldHVyblZhbHVlR1BSMik7Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5j
dGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKQEAgLTE5NzEsMTMgKzE5NDAsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KICNlbHNlIC8vIENQVShYODZfNjQpIHx8IChD
UFUoQVJNKSAmJiBDUFUoQVJNX0hBUkRGUCkpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8
IENQVShTSDQpCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQp
Ci0gICAgewotICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhmdW5jdGlvbik7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZEZQ
UlJlZykKLSAgICAgICAgICAgIG1faml0Lm1vdmVEb3VibGUoRlBSSW5mbzo6cmV0dXJuVmFsdWVG
UFIsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwg
RlBSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBh
cHBlbmRDYWxsKGZ1bmN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAxODg1MDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE0LDYgKzExNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
ICAgICBtYWNybyhWX0pJVE9wZXJhdGlvbl9FWkpaWlosIGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSwg
aW50UHRyLCBpbnQzMiwgaW50NjQsIGludDMyLCBpbnQzMiwgaW50MzIpKSBcCiAgICAgbWFjcm8o
Vl9KSVRPcGVyYXRpb25fSiwgZnVuY3Rpb25UeXBlKHZvaWRUeXBlLCBpbnQ2NCkpIFwKICAgICBt
YWNybyhWX0pJVE9wZXJhdGlvbl9aLCBmdW5jdGlvblR5cGUodm9pZFR5cGUsIGludDMyKSkgXAor
ICAgIG1hY3JvKFZfSklUT3BlcmF0aW9uX0UsIGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSwgaW50UHRy
KSkgXAogICAgIG1hY3JvKFpfSklUT3BlcmF0aW9uX0QsIGZ1bmN0aW9uVHlwZShpbnQzMiwgZG91
YmxlVHlwZSkpIFwKICAgICBtYWNybyhaX0pJVE9wZXJhdGlvbl9FQywgZnVuY3Rpb25UeXBlKGlu
dDMyLCBpbnRQdHIsIGludFB0cikpIFwKICAgICBtYWNybyhaX0pJVE9wZXJhdGlvbl9FR0MsIGZ1
bmN0aW9uVHlwZShpbnQzMiwgaW50UHRyLCBpbnRQdHIsIGludFB0cikpIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lv
biAxODg1MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk5NCw3ICs3OTk0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNhbGxDaGVjaygpCiAgICAgewogICAgICAgICBpZiAoT3B0aW9uczo6ZW5hYmxlRXhjZXB0
aW9uRnV6eigpKQotICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uRXhjZXB0aW9uRnV6eikpOworICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eiksIG1fY2FsbEZyYW1lKTsKICAgICAgICAgCiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRXhj
ZXB0aW9uIGNoZWNrIGNvbnRpbnVhdGlvbiIpKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAxODg1MDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIwMSwxNSArMjAxLDQwIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWxs
RXhjZXB0aW9uRnV6eigKICAgICBpZiAoIU9wdGlvbnM6OmVuYWJsZUV4Y2VwdGlvbkZ1enooKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSA+PSBz
aXplb2Yodm9pZCopICogMik7Ci0gICAgc3ViUHRyKFRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVu
dEJ5dGVzKCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgcG9rZShHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwgMCk7Ci0gICAgcG9rZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIDEpOwor
ICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSB2bSgpLT5leGNlcHRpb25GdXp6aW5nQnVmZmVy
KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBG
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycykpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgICAgICBzdG9yZTY0KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwor
I2Vsc2UKKyAgICAgICAgc3RvcmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBp
KTsKKyNlbmRpZgorICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVm
ZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICBzdG9yZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBBZGRyZXNzKEdQUklu
Zm86OnJlZ1QwKSk7CisgICAgfQorCisgICAgLy8gU2V0IHVwIG9uZSBhcmd1bWVudC4KKyNpZiBD
UFUoWDg2KQorICAgIHBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDApOworI2Vsc2UK
KyAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworI2VuZGlmCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
b3BlcmF0aW9uRXhjZXB0aW9uRnV6eikpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5H
UFIpOwogICAgIGNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKLSAgICBw
ZWVrKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCAwKTsKLSAgICBwZWVrKEdQUkluZm86OnJldHVy
blZhbHVlR1BSMiwgMSk7Ci0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5
dGVzKCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BS
SW5mbzo6cmVnVDApOworICAgICAgICBsb2FkRG91YmxlKEFkZHJlc3MoR1BSSW5mbzo6cmVnVDAp
LCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBsb2FkNjQoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7
CisjZWxzZQorICAgICAgICBsb2FkMzIoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3Rlcihp
KSk7CisjZW5kaWYKKyAgICB9CiB9CiAKIEFzc2VtYmx5SGVscGVyczo6SnVtcCBBc3NlbWJseUhl
bHBlcnM6OmVtaXRFeGNlcHRpb25DaGVjayhFeGNlcHRpb25DaGVja0tpbmQga2luZCwgRXhjZXB0
aW9uSnVtcFdpZHRoIHdpZHRoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxODg1MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODk4LDEwICsxODk4
LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25WTUhhbmRsZUV4Y2UKIC8vIG91cnNl
bHZlcyB0byBwbGF5IHNvbWUgZ25hcmx5IEFCSSB0cmlja3MganVzdCB0byBzaW1wbGlmeSB0aGUg
Y2FsbGluZyBjb252ZW50aW9uLiBUaGlzIGlzCiAvLyBwYXJ0aWN1bGFybHkgc2FmZSBoZXJlIHNp
bmNlIHRoaXMgaXMgbmV2ZXIgY2FsbGVkIG9uIHRoZSBjcml0aWNhbCBwYXRoIC0gaXQncyBvbmx5
IGZvcgogLy8gdGVzdGluZy4KLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25FeGNlcHRpb25G
dXp6KCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25FeGNlcHRpb25GdXp6KEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICNpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCi0g
ICAgRXhlY1N0YXRlKiBleGVjID0gc3RhdGljX2Nhc3Q8RXhlY1N0YXRlKj4oX19idWlsdGluX2Zy
YW1lX2FkZHJlc3MoMSkpOwogICAgIHZvaWQqIHJldHVyblBDID0gX19idWlsdGluX3JldHVybl9h
ZGRyZXNzKDApOwogICAgIGRvRXhjZXB0aW9uRnV6emluZyhleGVjLCAiSklUT3BlcmF0aW9ucyIs
IHJldHVyblBDKTsKICNlbmRpZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMTg4NTA0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT1NSV3Jp
dGVCYXJyCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jbml0R2xvYmFsQ29uc3QoRXhl
Y1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4
Y2VwdGlvbkZ1enooKTsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25FeGNlcHRpb25GdXp6
KEV4ZWNTdGF0ZSopOwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhh
c0dlbmVyaWNQcm9wZXJ0eShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKik7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eShF
eGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkocmV2aXNpb24gMTg4NTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDYgKzQ3NiwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgRW5jb2RlZEpTVmFsdWUqIGV4Y2VwdGlv
bkZ1enppbmdCdWZmZXIoc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBBU1NFUlQoT3B0aW9u
czo6ZW5hYmxlRXhjZXB0aW9uRnV6eigpKTsKKyAgICAgICAgaWYgKCFtX2V4Y2VwdGlvbkZ1enpC
dWZmZXIpCisgICAgICAgICAgICBtX2V4Y2VwdGlvbkZ1enpCdWZmZXIgPSBzdGF0aWNfY2FzdDxF
bmNvZGVkSlNWYWx1ZSo+KGZhc3RNYWxsb2Moc2l6ZSkpOworICAgICAgICByZXR1cm4gbV9leGNl
cHRpb25GdXp6QnVmZmVyOworICAgIH0KKwogICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9v
dHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKIAogICAgIFZNRW50cnlTY29wZSogZW50cnlTY29wZTsK
QEAgLTYxMyw2ICs2MjEsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250cm9s
Rmxvd1Byb2ZpbGVyPiBtX2NvbnRyb2xGbG93UHJvZmlsZXI7CiAgICAgdW5zaWduZWQgbV9jb250
cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50OwogICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxR
dWV1ZWRUYXNrPj4gbV9taWNyb3Rhc2tRdWV1ZTsKKyAgICBFbmNvZGVkSlNWYWx1ZSogbV9leGNl
cHRpb25GdXp6QnVmZmVyIHsgbnVsbHB0ciB9OwogfTsKIAogI2lmIEVOQUJMRShHQ19WQUxJREFU
SU9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259107</attachid>
            <date>2015-08-15 16:14:43 -0700</date>
            <delta_ts>2015-08-21 01:41:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>120597</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDE1LTA4LTE1ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBERkcgY2FsbE9wZXJhdGlvbnMgc2hvdWxkIG5vdCBpbXBsaWNpdGx5IGVtaXQgYW4gZXhj
ZXB0aW9uIGNoZWNrLiBBdCBjYWxsT3BlcmF0aW9uIGNhbGwgc2l0ZXMsIHdlIHNob3VsZCBleHBs
aWNpdGx5IGVtaXQgZXhjZXB0aW9uIGNoZWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3OTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIERGRyBi
ZWluZyBhYmxlIHRvIGhhbmRsZSBleGNlcHRpb25zLiAKKyAgICAgICAgVG8gZG8gdGhpcywgd2Ug
bmVlZCBtb3JlIGNvbnRyb2wgb3ZlciB3aGVuIHdlIGVtaXQgZXhjZXB0aW9uIGNoZWNrcy4KKyAg
ICAgICAgU3BlY2lmaWNhbGx5LCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gc2lsZW50RmlsbCBiZWZv
cmUgZW1pdHRpbmcgYW4gZXhjZXB0aW9uIGNoZWNrLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXMg
dGhhdC4gVGhpcyBwYXRjaCBhbHNvIGFsbG93cyB1cyB0byBlYXNpbHkgc2VlIHdoaWNoCisgICAg
ICAgIG9wZXJhdGlvbnMgZG8gYW5kIGRvIG5vdCBlbWl0IGV4Y2VwdGlvbiBjaGVja3MuIEZpbmRp
bmcgdGhpcyBpbmZvcm1hdGlvbgorICAgICAgICBvdXQgYmVmb3JlIHdhcyBhIHBhaW4uCisKKyAg
ICAgICAgKiBkZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRm
Zy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRm
Zy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmV4Y2VwdGlv
bkNoZWNrKToKKyAgICAgICAgKiBkZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5l
cmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpDYWxsU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxTbG93UGF0aEdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbFNsb3dQYXRoR2VuZXJhdG9yOjp0ZWFyRG93bik6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0
b3I6OkNhbGxSZXN1bHRBbmROb0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6REZHOjpDYWxsUmVzdWx0QW5kT25lQXJndW1lbnRTbG93UGF0aEdlbmVyYXRvcjo6Q2Fs
bFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNhbGxSZXN1bHRBbmRUd29Bcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3Vs
dEFuZFR3b0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpD
YWxsUmVzdWx0QW5kVGhyZWVBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3VsdEFu
ZFRocmVlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNh
bGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRG
b3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxS
ZXN1bHRBbmRGaXZlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRGaXZl
QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRo
Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3FydCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aFBvdyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aExvZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90aWZ5V3JpdGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwRXhlYyk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcik6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tFeGNlcHRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09u
RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2Fs
bFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uU2V0UmVzdWx0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OkNvbXBh
cmVBbmRCb3hCb29sZWFuU2xvd1BhdGhHZW5lcmF0b3I6OkNvbXBhcmVBbmRCb3hCb29sZWFuU2xv
d1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21wYXJlQW5kQm94Qm9v
bGVhblNsb3dQYXRoR2VuZXJhdG9yOjpDb21wYXJlQW5kQm94Qm9vbGVhblNsb3dQYXRoR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVO
b25QZWVwaG9sZUNvbXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpu
b25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb252
ZXJ0TWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZURvdWJsZVJlcE1hY2hpbmVJbnQpOgorICAgICAgICAqIGZ0bC9GVExJbnRyaW5zaWNSZXBv
c2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjYWxsQ2hlY2spOgorICAgICAgICAqIGpp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNh
bGxFeGNlcHRpb25GdXp6KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0RXhj
ZXB0aW9uQ2hlY2spOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KEpTQzo6Vk06OnNjcmF0Y2hCdWZmZXJGb3JTaXplKToKKyAgICAgICAgKEpTQzo6Vk06OmV4Y2Vw
dGlvbkZ1enppbmdCdWZmZXIpOgorCiAyMDE1LTA4LTE0ICBCYXNpbGUgQ2xlbWVudCAgPGJhc2ls
ZV9jbGVtZW50QGFwcGxlLmNvbT4KIAogICAgICAgICBPY2Nhc2lvbmFsIGZhaWx1cmUgaW4gdjgt
djYvdjgtcmF5dHJhY2UuanMuZnRsLWVhZ2VyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNp
b24gMTg4NTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQ
YXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIH0KICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7
IGktLTspCiAgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSwgR1BSSW5mbzo6
cmVnVDApOworICAgICAgICBqaXQtPmNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAg
ICBpZiAobV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9zdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJy
YXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAko
cmV2aXNpb24gMTg4NTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJy
YXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1
OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGxh
bnMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBqaXQtPnNpbGVudFNwaWxsKG1fcGxhbnNbaV0p
OwogICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24obV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIsIG1f
c3RydWN0dXJlLCBtX3NpemUpOworICAgICAgICBqaXQtPmNoZWNrRXhjZXB0aW9uKCk7CiAgICAg
ICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1f
cmVzdWx0R1BSKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGkt
LTspCiAgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSwgY2FuVHJhbXBsZSk7
CkBAIC0xMDMsNiArMTA0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBqaXQtPm1faml0Lm1vdmUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9hcnJheVN0b3JhZ2VTdHJ1Y3R1cmUpLCBz
Y3JhdGNoR1BSKTsKICAgICAgICAgZG9uZS5saW5rKCZqaXQtPm1faml0KTsKICAgICAgICAgaml0
LT5jYWxsT3BlcmF0aW9uKG1fZnVuY3Rpb24sIG1fcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBtX3Np
emVHUFIpOworICAgICAgICBqaXQtPmNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIEdQUlJlZyBj
YW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTspCiAgICAgICAg
ICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSwgY2FuVHJhbXBsZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0
aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE4
ODUwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbENyZWF0ZURpcmVjdEFy
Z3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgaml0LT5zaWxlbnRTcGlsbChtX3BsYW5zW2ldKTsK
ICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9uQ3JlYXRl
RGlyZWN0QXJndW1lbnRzLCBtX3Jlc3VsdEdQUiwgbV9zdHJ1Y3R1cmUsIG1fbGVuZ3RoR1BSLCBt
X21pbkNhcGFjaXR5KTsKKyAgICAgICAgaml0LT5jaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBH
UFJSZWcgY2FuVHJhbXBsZSA9IFNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZShtX3Jlc3Vs
dEdQUik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQog
ICAgICAgICAgICAgaml0LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24g
MTg4NTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjUsMTEgKzE2NSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uQ2FsbDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBleGNlcHRpb25DaGVjayhKdW1w
IGp1bXBUb0hhbmRsZXIpCi0gICAgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBlbmQo
anVtcFRvSGFuZGxlcik7Ci0gICAgfQotICAgIAogICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soKQog
ICAgIHsKICAgICAgICAgbV9leGNlcHRpb25DaGVja3MuYXBwZW5kKGVtaXRFeGNlcHRpb25DaGVj
aygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5
VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9u
IDE4ODUwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5
VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBp
Y2tDYW5UcmFtcGxlKGV4dHJhY3RSZXN1bHQobV9yZXN1bHRSZWdzKSk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgaml0LT5zaWxl
bnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOworICAgICAgICBqaXQtPmNoZWNrRXhjZXB0
aW9uKCk7CiAgICAgICAgIAogICAgICAgICBqdW1wVG8oaml0KTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCShyZXZp
c2lvbiAxODg1MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2Vu
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDEwICs5MywxMSBAQCBjbGFzcyBDYWxsU2xv
d1BhdGhHZW5lcmF0b3IgOiBwdWJsaWMgSnVtCiBwdWJsaWM6CiAgICAgQ2FsbFNsb3dQYXRoR2Vu
ZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5j
dGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUs
IFJlc3VsdFR5cGUgcmVzdWx0KQorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2Rl
LCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJlc3VsdFR5cGUgcmVzdWx0KQogICAgICAgICA6
IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZT4oZnJvbSwgaml0KQogICAgICAgICAs
IG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9zcGlsbE1vZGUoc3BpbGxNb2RlKQor
ICAgICAgICAsIG1fbmVlZHNFeGNlcHRpb25DaGVjayhuZWVkc0V4Y2VwdGlvbkNoZWNrKQogICAg
ICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKICAgICB7CiAgICAgICAgIGlmIChtX3NwaWxsTW9kZSA9
PSBOZWVkVG9TcGlsbCkKQEAgLTEzMCwxMSArMTMxLDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAg
ICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldLCBjYW5UcmFtcGxlKTsKICAgICAgICAgfQor
ICAgICAgICBpZiAobV9uZWVkc0V4Y2VwdGlvbkNoZWNrKQorICAgICAgICAgICAgaml0LT5jaGVj
a0V4Y2VwdGlvbigpOwogICAgICAgICB0aGlzLT5qdW1wVG8oaml0KTsKICAgICB9CiAKICAgICBG
dW5jdGlvblR5cGUgbV9mdW5jdGlvbjsKICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgbV9zcGlsbE1v
ZGU7CisgICAgYm9vbCBtX25lZWRzRXhjZXB0aW9uQ2hlY2s7CiAgICAgUmVzdWx0VHlwZSBtX3Jl
c3VsdDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBtX2NhbGw7CiAgICAgVmVjdG9yPFNpbGVu
dFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7CkBAIC0xNDYsOSArMTUwLDkgQEAgY2xhc3Mg
Q2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZQogcHVibGljOgogICAgIENhbGxSZXN1
bHRBbmROb0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBmcm9t
LCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAgIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0KQorICAgICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJl
c3VsdFR5cGUgcmVzdWx0KQogICAgICAgICA6IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlw
ZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlPigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVu
Y3Rpb24sIHNwaWxsTW9kZSwgcmVzdWx0KQorICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlv
biwgc3BpbGxNb2RlLCBuZWVkc0V4Y2VwdGlvbkNoZWNrLCByZXN1bHQpCiAgICAgewogICAgIH0K
ICAgICAKQEAgLTE2OSw5ICsxNzMsOSBAQCBjbGFzcyBDYWxsUmVzdWx0QW5kT25lQXJndW1lbnRT
bG93UGF0aEdlCiBwdWJsaWM6CiAgICAgQ2FsbFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhH
ZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1
bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxKQorICAgICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJl
c3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSkKICAgICAgICAgOiBDYWxs
U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0g
ICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAg
ICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVj
aywgcmVzdWx0KQogICAgICAgICAsIG1fYXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICB7CiAgICAg
fQpAQCAtMTk1LDEwICsxOTksMTAgQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZFR3b0FyZ3VtZW50c1Ns
b3dQYXRoRwogcHVibGljOgogICAgIENhbGxSZXN1bHRBbmRUd29Bcmd1bWVudHNTbG93UGF0aEdl
bmVyYXRvcigKICAgICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVu
Y3Rpb25UeXBlIGZ1bmN0aW9uLAotICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2Rl
LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVudDEsCisgICAgICAgIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIGJvb2wgbmVlZHNFeGNlcHRpb25DaGVjaywgUmVz
dWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAogICAgICAgICBBcmd1bWVu
dFR5cGUyIGFyZ3VtZW50MikKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5
cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1
bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rp
b24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywgcmVzdWx0KQogICAgICAgICAsIG1f
YXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICAgICAgLCBtX2FyZ3VtZW50Mihhcmd1bWVudDIpCiAg
ICAgewpAQCAtMjI0LDEwICsyMjgsMTAgQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZFRocmVlQXJndW1l
bnRzU2xvd1BhdAogcHVibGljOgogICAgIENhbGxSZXN1bHRBbmRUaHJlZUFyZ3VtZW50c1Nsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0
LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGls
bE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKKyAgICAg
ICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgYm9vbCBuZWVkc0V4Y2VwdGlvbkNoZWNr
LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVudDEsCiAgICAgICAgIEFy
Z3VtZW50VHlwZTIgYXJndW1lbnQyLCBBcmd1bWVudFR5cGUzIGFyZ3VtZW50MykKICAgICAgICAg
OiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlw
ZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkK
KyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRp
b25DaGVjaywgcmVzdWx0KQogICAgICAgICAsIG1fYXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICAg
ICAgLCBtX2FyZ3VtZW50Mihhcmd1bWVudDIpCiAgICAgICAgICwgbV9hcmd1bWVudDMoYXJndW1l
bnQzKQpAQCAtMjU5LDEwICsyNjMsMTAgQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZEZvdXJBcmd1bWVu
dHNTbG93UGF0aAogcHVibGljOgogICAgIENhbGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1Bh
dGhHZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQs
IEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxs
TW9kZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAorICAgICAg
ICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBib29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ss
IFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKICAgICAgICAgQXJn
dW1lbnRUeXBlMiBhcmd1bWVudDIsIEFyZ3VtZW50VHlwZTMgYXJndW1lbnQzLCBBcmd1bWVudFR5
cGU0IGFyZ3VtZW50NCkKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0
aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24s
IHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywgcmVzdWx0KQogICAgICAgICAsIG1fYXJn
dW1lbnQxKGFyZ3VtZW50MSkKICAgICAgICAgLCBtX2FyZ3VtZW50Mihhcmd1bWVudDIpCiAgICAg
ICAgICwgbV9hcmd1bWVudDMoYXJndW1lbnQzKQpAQCAtMjk2LDExICszMDAsMTEgQEAgY2xhc3Mg
Q2FsbFJlc3VsdEFuZEZpdmVBcmd1bWVudHNTbG93UGF0aAogcHVibGljOgogICAgIENhbGxSZXN1
bHRBbmRGaXZlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBlIGZy
b20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAgICAg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50
VHlwZTEgYXJndW1lbnQxLAorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBi
b29sIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUx
IGFyZ3VtZW50MSwKICAgICAgICAgQXJndW1lbnRUeXBlMiBhcmd1bWVudDIsIEFyZ3VtZW50VHlw
ZTMgYXJndW1lbnQzLCBBcmd1bWVudFR5cGU0IGFyZ3VtZW50NCwKICAgICAgICAgQXJndW1lbnRU
eXBlNSBhcmd1bWVudDUpCiAgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBl
LCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGU+KAotICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5j
dGlvbiwgc3BpbGxNb2RlLCByZXN1bHQpCisgICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9u
LCBzcGlsbE1vZGUsIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIHJlc3VsdCkKICAgICAgICAgLCBtX2Fy
Z3VtZW50MShhcmd1bWVudDEpCiAgICAgICAgICwgbV9hcmd1bWVudDIoYXJndW1lbnQyKQogICAg
ICAgICAsIG1fYXJndW1lbnQzKGFyZ3VtZW50MykKQEAgLTMzMCwxMCArMzM0LDEwIEBAIHByb3Rl
Y3RlZDogICAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25U
eXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlPgogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAogICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZl
SklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICBSZXN1bHRUeXBlIHJlc3VsdCwg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIFJlc3VsdFR5
cGUgcmVzdWx0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIGJv
b2wgbmVlZHNFeGNlcHRpb25DaGVjayA9IHRydWUpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4+KAotICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9u
LCBzcGlsbE1vZGUsIHJlc3VsdCk7CisgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxs
TW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywgcmVzdWx0KTsKIH0KIAogdGVtcGxhdGU8CkBAIC0z
NDIsMTAgKzM0NiwxMCBAQCB0ZW1wbGF0ZTwKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1Bh
dGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2
ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQs
IEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAotICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1v
ZGUgPSBOZWVkVG9TcGlsbCkKKyAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVl
ZFRvU3BpbGwsIGJvb2wgbmVlZHNFeGNlcHRpb25DaGVjayA9IHRydWUpCiB7CiAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0
b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRUeXBlMT4+KAot
ICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCwgYXJndW1lbnQx
KTsKKyAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCBuZWVkc0V4Y2VwdGlv
bkNoZWNrLCByZXN1bHQsIGFyZ3VtZW50MSk7CiB9CiAKIHRlbXBsYXRlPApAQCAtMzU0LDEwICsz
NTgsMTAgQEAgdGVtcGxhdGU8CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aENhbGwoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAogICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVu
dFR5cGUxIGFyZ3VtZW50MSwgQXJndW1lbnRUeXBlMiBhcmd1bWVudDIsCi0gICAgU3BpbGxSZWdp
c3RlcnNNb2RlIHNwaWxsTW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIFNwaWxsUmVnaXN0ZXJzTW9k
ZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCwgYm9vbCBuZWVkc0V4Y2VwdGlvbkNoZWNrID0gdHJ1
ZSkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kVHdvQXJndW1l
bnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwg
QXJndW1lbnRUeXBlMSwgQXJndW1lbnRUeXBlMj4+KAotICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0
aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIpOworICAgICAgICBm
cm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIHJlc3Vs
dCwgYXJndW1lbnQxLCBhcmd1bWVudDIpOwogfQogCiB0ZW1wbGF0ZTwKQEAgLTM2NiwxMCArMzcw
LDEwIEBAIHRlbXBsYXRlPAogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGhDYWxsKAogICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQs
IEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKICAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRU
eXBlMSBhcmd1bWVudDEsIEFyZ3VtZW50VHlwZTIgYXJndW1lbnQyLAotICAgIEFyZ3VtZW50VHlw
ZTMgYXJndW1lbnQzLCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwp
CisgICAgQXJndW1lbnRUeXBlMyBhcmd1bWVudDMsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1v
ZGUgPSBOZWVkVG9TcGlsbCwgYm9vbCBuZWVkc0V4Y2VwdGlvbkNoZWNrID0gdHJ1ZSkKIHsKICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kVGhyZWVBcmd1bWVudHNTbG93
UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVu
dFR5cGUxLCBBcmd1bWVudFR5cGUyLAotICAgICAgICBBcmd1bWVudFR5cGUzPj4oZnJvbSwgaml0
LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQyLCBhcmd1
bWVudDMpOworICAgICAgICBBcmd1bWVudFR5cGUzPj4oZnJvbSwgaml0LCBmdW5jdGlvbiwgc3Bp
bGxNb2RlLCBuZWVkc0V4Y2VwdGlvbkNoZWNrLCByZXN1bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQy
LCBhcmd1bWVudDMpOwogfQogCiB0ZW1wbGF0ZTwKQEAgLTM4MCwxMCArMzg0LDEwIEBAIGlubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3IKICAgICBKdW1wVHlwZSBmcm9tLCBT
cGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlw
ZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLCBBcmd1bWVudFR5cGUyIGFyZ3VtZW50
MiwKICAgICBBcmd1bWVudFR5cGUzIGFyZ3VtZW50MywgQXJndW1lbnRUeXBlNCBhcmd1bWVudDQs
Ci0gICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCwgYm9vbCBuZWVkc0V4Y2Vw
dGlvbkNoZWNrID0gdHJ1ZSkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVz
dWx0QW5kRm91ckFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5
cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50VHlwZTEsIEFyZ3VtZW50VHlwZTIsCi0gICAgICAgIEFy
Z3VtZW50VHlwZTMsIEFyZ3VtZW50VHlwZTQ+Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1v
ZGUsIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIsIGFyZ3VtZW50MywgYXJndW1lbnQ0KTsK
KyAgICAgICAgQXJndW1lbnRUeXBlMywgQXJndW1lbnRUeXBlND4+KGZyb20sIGppdCwgZnVuY3Rp
b24sIHNwaWxsTW9kZSwgbmVlZHNFeGNlcHRpb25DaGVjaywgcmVzdWx0LCBhcmd1bWVudDEsIGFy
Z3VtZW50MiwgYXJndW1lbnQzLCBhcmd1bWVudDQpOwogfQogCiB0ZW1wbGF0ZTwKQEAgLTM5NCwx
MCArMzk4LDEwIEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3IKICAg
ICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rp
b24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLCBBcmd1
bWVudFR5cGUyIGFyZ3VtZW50MiwKICAgICBBcmd1bWVudFR5cGUzIGFyZ3VtZW50MywgQXJndW1l
bnRUeXBlNCBhcmd1bWVudDQsIEFyZ3VtZW50VHlwZTUgYXJndW1lbnQ1LAotICAgIFNwaWxsUmVn
aXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCkKKyAgICBTcGlsbFJlZ2lzdGVyc01v
ZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIGJvb2wgbmVlZHNFeGNlcHRpb25DaGVjayA9IHRy
dWUpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3VsdEFuZEZpdmVBcmd1
bWVudHNTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBl
LCBBcmd1bWVudFR5cGUxLCBBcmd1bWVudFR5cGUyLAotICAgICAgICBBcmd1bWVudFR5cGUzLCBB
cmd1bWVudFR5cGU0LCBBcmd1bWVudFR5cGU1Pj4oZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxN
b2RlLCByZXN1bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQyLCBhcmd1bWVudDMsCisgICAgICAgIEFy
Z3VtZW50VHlwZTMsIEFyZ3VtZW50VHlwZTQsIEFyZ3VtZW50VHlwZTU+Pihmcm9tLCBqaXQsIGZ1
bmN0aW9uLCBzcGlsbE1vZGUsIG5lZWRzRXhjZXB0aW9uQ2hlY2ssIHJlc3VsdCwgYXJndW1lbnQx
LCBhcmd1bWVudDIsIGFyZ3VtZW50MywKICAgICAgICAgYXJndW1lbnQ0LCBhcmd1bWVudDUpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE4ODUwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
OSw2ICs0MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAK
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJG
dW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQ
UiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogCiAgICAgICAg
IGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1bHRHUFIsIHRha2VuKTsKICAg
ICB9IGVsc2UgewpAQCAtNDMyLDYgKzQzMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNw
ZWN1bGF0aXZlUGVlcGgKICAgICAKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdEdQUik7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCBy
ZXN1bHRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5
bG9hZEdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgc2ls
ZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAgICAgIGJy
YW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1bHRHUFIsIHRha2VuKTsKQEAgLTQ1
Myw3ICs0NTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNfSklUT3BlcmF0aW9uX0VKSiBmdW5jdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwKICAg
ICAgICAgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICAgICAgOiBDYWxs
U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFNfSklUT3BlcmF0aW9uX0VKSiwgR1BSUmVnPigK
LSAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIE5lZWRUb1NwaWxsLCByZXN1bHQpCisg
ICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBOZWVkVG9TcGlsbCwgdHJ1ZSwgcmVzdWx0
KQogICAgICAgICAsIG1fYXJnMVRhZyhhcmcxVGFnKQogICAgICAgICAsIG1fYXJnMVBheWxvYWQo
YXJnMVBheWxvYWQpCiAgICAgICAgICwgbV9hcmcyVGFnKGFyZzJUYWcpCkBAIC01MDAsNiArNTAy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24s
IHJlc3VsdFBheWxvYWRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BS
LCBhcmcyUGF5bG9hZEdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAog
ICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdFBheWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxkcmVu
Q2FsbGVkRXhwbGljaXRseSk7CiAgICAgfSBlbHNlIHsKQEAgLTU2MCw2ICs1NjMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIAogICAgICAgICBz
aWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BSLCBh
cmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOwor
ICAgICAgICAvLyBjaGVja0V4Y2VwdGlvbigpOyAvLyBNYXliZSBub3QgbmVlZGVkPwogICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICAKICAg
ICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGls
ZXI6Ok5vblplcm8sIHJlc3VsdFBheWxvYWRHUFIsIHRha2VuKTsKQEAgLTU2Nyw3ICs1NzEsOCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIC8vIEZJ
WE1FOiBBZGQgZmFzdCBwYXRocyBmb3IgdHdvQ2VsbHMsIG51bWJlciBldGMuCiAKICAgICAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcx
VGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9h
ZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxvYWRHUFIsIGFyZzJUYWdHUFIsIGFyZzJQYXlsb2Fk
R1BSKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8KKyAgICAgICAgLy9jaGVja0V4Y2VwdGlvbigpOyAv
LyBNYXliZSBub3QgbmVlZGVkPwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3Vs
dFBheWxvYWRHUFIpOwogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJ
VENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdFBheWxvYWRHUFIs
IHRha2VuKTsKQEAgLTYwNCw2ICs2MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZU5vblBlCiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJl
U3RyaWN0RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQ
UiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICAvL2NoZWNrRXhjZXB0aW9u
KCk7IC8vIE1heWJlIG5vdCBuZWVkZWQ/CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
cmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5hbmRQdHIoSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW0zMigxKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC02MTUsNiArNjIx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBz
aWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFU
YWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CiAgICAg
ICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgIC8v
Y2hlY2tFeGNlcHRpb24oKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8KICAgICAgICAgCiAgICAgICAg
IG1faml0LmFuZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQYXlsb2Fk
R1BSKTsKICAgICB9CkBAIC03MDAsNiArNzA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJm1faml0KTsKICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncyk7
CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgbV9qaXQuYWJvcnRX
aXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhEaWROb3RUaHJvdyk7CiAgICAgICAgICAg
ICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHJlc3VsdEdQUiA9IHNjcmF0Y2hHUFIy
OwpAQCAtNzMyLDYgKzc0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUKICAgICAgICAgICAgIC8vIFJpZ2h0IG5vdywgYXJndW1lbnRzIGlzIGluIGFyZ3VtZW50
c1RhZ0dQUi9hcmd1bWVudHNQYXlsb2FkR1BSIGFuZCB0aGUgcmVnaXN0ZXIgZmlsZSBpcwogICAg
ICAgICAgICAgLy8gZmx1c2hlZC4KICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
U2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50c1Rh
Z0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwgbnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0
VmFyQXJnT2Zmc2V0KTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIC8vIE5vdyB3ZSBoYXZlIHRoZSBhcmd1bWVudCBjb3VudCBvZiB0aGUg
Y2FsbGVlIGZyYW1lLCBidXQgd2UndmUgbG9zdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQuCiAgICAg
ICAgICAgICAvLyBSZWNvbnN0cnVjdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQgd2hpbGUgcHJlc2Vy
dmluZyB0aGUgY2FsbGVlIGZyYW1lLgpAQCAtNzQxLDYgKzc1MCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVz
dGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA2ICogc2l6ZW9mKHZvaWQqKSkpKSwgc2NyYXRj
aEdQUjEsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCBzY3JhdGNoR1BSMSwgYXJndW1lbnRzVGFnR1BSLCBhcmd1
bWVudHNQYXlsb2FkR1BSLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHJl
c3VsdEdQUiA9IEdQUkluZm86OnJldHVyblZhbHVlR1BSOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTE1MzQsNyArMTU0NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dp
Y2FsTm90KE4KICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkNvbnZl
cnRKU1ZhbHVlVG9Cb29sZWFuLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLAotICAgICAg
ICAgICAgICAgIGFyZzFQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICAgICAgYXJnMVBheWxvYWRH
UFIsIE5lZWRUb1NwaWxsLCBmYWxzZSkpOyAvLyBEb2VzIG5vdCBuZWVkIGV4Y2VwdGlvbiBjaGVj
ay4KICAgICAKICAgICAgICAgbV9qaXQueG9yMzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQYXls
b2FkR1BSKTsKICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHRQYXlsb2FkR1BSLCBub2RlLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtMTY4MCw2ICsxNjkwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlKiBubwogICAgICAgICBzaWxlbnRTcGlsbEFs
bFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNv
bnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZXN1bHRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxv
YWRHUFIpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAg
ICAgIC8vIGNoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgCiAgICAgICAgIGJy
YW5jaFRlc3QzMihKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAg
ICAgIGp1bXAobm90VGFrZW4pOwpAQCAtMjA2MCw2ICsyMDcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdw
cigpLCBvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIsIG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUik7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVB
ZGQsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgb3AxVGFnR1BSLCBvcDFQ
YXlsb2FkR1BSLCBvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpOworICAgICAgICBjaGVja0V4Y2Vw
dGlvbigpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCks
IHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTIyMzUsNiAr
MjI0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgCiAgICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIGNhbGxPcGVyYXRp
b24oc2luLCByZXN1bHQuZnByKCksIG9wMUZQUik7CisgICAgICAgIC8vIGNoZWNrRXhjZXB0aW9u
KCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMjQ3LDYgKzIyNjAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBGUFJS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKGNvcywgcmVzdWx0LmZw
cigpLCBvcDFGUFIpOworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQu
CiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0yMzYyLDYgKzIzNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0
VGFnKHRoaXMpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9h
ZCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxDZWxs
LCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIGJhc2VHUFIsIHByb3BlcnR5
VGFnR1BSLCBwcm9wZXJ0eVBheWxvYWRHUFIpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24o
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3By
KCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0y
NjI5LDYgKzI2NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJp
Y3RNb2RlKCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdENlbGxOb25TdHJpY3QsIGJhc2VHUFIsIHByb3BlcnR5VGFnR1BSLCBwcm9w
ZXJ0eVBheWxvYWRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuY29kZUJsb2NrKCkt
PmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlWYWxDZWxsTm9uU3RyaWN0LCBiYXNlR1BSLCBwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHlQ
YXlsb2FkR1BSLCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGNo
ZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUp
OwogICAgICAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOwpAQCAtMjc4Miw2ICsyNzk4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdCwg
cmVzdWx0LmdwcigpLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CisgICAgICAgICAgICBjaGVja0V4
Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBNdXN0IHVzZSBqc1ZhbHVl
UmVzdWx0IGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHNjcmV3IHVwIHJlZ2lzdGVyCiAgICAgICAgICAg
ICAvLyBhbGxvY2F0aW9uLCB3aGljaCB0aGlua3MgdGhhdCB0aGlzIG5vZGUgaGFzIGEgcmVzdWx0
LgpAQCAtMjc5OCw2ICsyODE1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwog
ICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWMsIHJlc3VsdFRhZy5ncHIoKSwgcmVz
dWx0UGF5bG9hZC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAgICBjaGVja0V4
Y2VwdGlvbigpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3By
KCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTI4MTIs
NiArMjgzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJl
c3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlv
bigpOwogICAgICAgICAKICAgICAgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdl
IHNob3VsZCB1c2UgaXQgaGVyZS4KICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHQuZ3ByKCks
IG5vZGUpOwpAQCAtMzIzMiw2ICszMjUxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBDYWxsU3RyaW5nQ29u
c3RydWN0b3IpOwogICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0
cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIsIG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUik7CiAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAg
aWYgKGRvbmUuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAg
ICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTMzMjYsNiArMzM0Niw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24oCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3RW1wdHlBcnJheSwgcmVzdWx0Lmdw
cigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRp
b24oKTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zNDAzLDYgKzM0MjQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAg
ICAgICAgICAgICBvcGVyYXRpb25OZXdBcnJheSwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRl
eGluZ1R5cGUoKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2b2lkKj4oYnVmZmVyKSwgbm9k
ZS0+bnVtQ2hpbGRyZW4oKSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAKICAgICAgICAg
aWYgKHNjcmF0Y2hTaXplKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKQEAgLTM0ODMsNiArMzUwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGNhbGxPcGVyYXRp
b24oCiAgICAgICAgICAgICBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0
cnVjdHVyZUdQUiwgc2l6ZUdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MzUyOCw2ICszNTUxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIAog
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHQuZ3By
KCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwgbm9kZS0+c3RhcnRDb25zdGFudCgpLCBub2Rl
LT5udW1Db25zdGFudHMoKSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMzU1Myw2ICszNTc3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1l
bnRGb3JUeXBlKG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpLAogICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUiwgZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlKG5vZGUtPnR5cGVkQXJyYXlU
eXBlKCkpLAogICAgICAgICAgICAgICAgIGFyZ3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRH
UFIpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0zNTcwLDYgKzM1OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CiAgICAg
ICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1JlZ2V4cCwgcmVzdWx0VGFn
LmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBtX2ppdC5jb2RlQmxvY2soKS0+cmVnZXhwKG5v
ZGUtPnJlZ2V4cEluZGV4KCkpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAg
CiAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHRoZSBjYWxsT3BlcmF0aW9uIGFib3ZlIGV4cGxpY2l0
bHkgcmV0dXJuIGEgY2VsbCByZXN1bHQsIG9yIGppdEFzc2VydCB0aGUgdGFnIGlzIGEgY2VsbCB0
YWcuCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CkBAIC00
MjYzLDYgKzQyODksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6
ZU9mVmFyYXJncywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50c1RhZ0dQUiwgYXJn
dW1lbnRzUGF5bG9hZEdQUiwgZGF0YS0+b2Zmc2V0KTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24o
KTsKICAgICAgICAgCiAgICAgICAgIGxvY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAg
ICAgICB7CkBAIC00MjkyLDYgKzQzMTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0LnN0b3JlMzIoYXJnQ291bnRJbmNsdWRpbmdUaGlz
R1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihkYXRhLT5tYWNoaW5lQ291bnQpKTsKICAgICAg
ICAgCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIGRhdGEtPm1h
Y2hpbmVTdGFydC5vZmZzZXQoKSwgYXJndW1lbnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BS
LCBkYXRhLT5vZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBkYXRhLT5tYW5kYXRvcnlN
aW5pbXVtKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIG5v
UmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzNjYsNiArNDM5NCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0
eSwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9h
ZEdQUiwgcHJvcGVydHkuZ3ByKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAg
ICBib29sZWFuUmVzdWx0KHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC00NDg2LDYgKzQ1MTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgc2NyYXRj
aEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxDZWxsLCByZXN1
bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIGJhc2VHUFIsIHNjcmF0Y2hHUFIsIHByb3BlcnR5
R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICNlbHNlCiAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFn
KHRoaXMpOwpAQCAtNDU0OSw2ICs0NTc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yLCByZXN1bHRHUFIsIGJhc2Uu
Z3ByKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQ1OTIsNiArNDYyMyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvSW5kZXhT
dHJpbmcsIHJlc3VsdEdQUiwgaW5kZXguZ3ByKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigp
OwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTg4NTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5j
dGlvbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBhcmcyR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRp
b24oKTsKIAogICAgICAgICBicmFuY2hUZXN0MzIoY2FsbFJlc3VsdENvbmRpdGlvbiwgcmVzdWx0
R1BSLCB0YWtlbik7CiAgICAgfSBlbHNlIHsKQEAgLTM5MSw2ICszOTIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFs
bFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJG
dW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICAgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9u
KCk7CiAgICAgICAgIAogICAgICAgICAgICAgYnJhbmNoVGVzdDMyKGNhbGxSZXN1bHRDb25kaXRp
b24sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAgICAgICB9CkBAIC00MTAsNyArNDEyLDcgQEAgcHVi
bGljOgogICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LAogICAgICAg
ICBTX0pJVE9wZXJhdGlvbl9FSkogZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMikKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IFNfSklUT3BlcmF0aW9uX0VKSiwgR1BSUmVnPigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVu
Y3Rpb24sIE5lZWRUb1NwaWxsLCByZXN1bHQpCisgICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0
aW9uLCBOZWVkVG9TcGlsbCwgdHJ1ZSwgcmVzdWx0KQogICAgICAgICAsIG1fYXJnMShhcmcxKQog
ICAgICAgICAsIG1fYXJnMihhcmcyKQogICAgIHsKQEAgLTQ1MCw2ICs0NTIsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQ
UiwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAg
IAogICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BS
KTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY3VycmVudE5vZGUsIERhdGFG
b3JtYXRKU0Jvb2xlYW4sIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC01MTAsNiAr
NTEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJn
MkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAg
ICAgY2hlY2tFeGNlcHRpb24oKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8KICAgICAgICAgCiAgICAg
ICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVy
OjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9IGVsc2UgewpAQCAtNTM2LDYgKzU0
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7
CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgY2hl
Y2tFeGNlcHRpb24oKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8KICAgICAgICAgCiAgICAgICAgIGJy
YW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25a
ZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9CkBAIC01NzEsNiArNTc2LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBzaWxlbnRTcGlsbEFs
bFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAg
IHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRp
b24oKTsgLy8gTWF5YmUgbm90IG5lZWRlZD8KICAgICAgICAgCiAgICAgICAgIG1faml0LmFuZDY0
KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0
Lm9yMzIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsK
QEAgLTY4Niw2ICs2OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwog
ICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmbV9qaXQpOwogICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKTsKKyAgICAgICAgICAg
IGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZH
VmFyYXJnc1Rocm93aW5nUGF0aERpZE5vdFRocm93KTsKICAgICAgICAgICAgIGRvbmUubGluaygm
bV9qaXQpOwogICAgICAgICAgICAgcmVzdWx0R1BSID0gc2NyYXRjaEdQUjI7CkBAIC03MTUsNiAr
NzIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAvLyBSaWdodCBub3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1bWVu
dHNHUFIgYW5kIHRoZSByZWdpc3RlciBmaWxlIGlzIGZsdXNoZWQuCiAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBhcmd1bWVudHNHUFIsIG51bVVzZWRTdGFja1Nsb3RzLCBkYXRhLT5maXJzdFZhckFy
Z09mZnNldCk7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBOb3cgd2UgaGF2ZSB0aGUgYXJndW1lbnQgY291bnQgb2YgdGhlIGNhbGxl
ZSBmcmFtZSwgYnV0IHdlJ3ZlIGxvc3QgdGhlIGFyZ3VtZW50cyBvcGVyYW5kLgogICAgICAgICAg
ICAgLy8gUmVjb25zdHJ1Y3QgdGhlIGFyZ3VtZW50cyBvcGVyYW5kIHdoaWxlIHByZXNlcnZpbmcg
dGhlIGNhbGxlZSBmcmFtZS4KQEAgLTcyNCw2ICs3MzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZElt
bTMyKC0oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
KHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNSAqIHNpemVvZih2b2lkKikpKSksIHNjcmF0Y2hHUFIx
LCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRjaEdQUjEsIGFyZ3VtZW50c0dQUiwgZGF0YS0+Zmlyc3RW
YXJBcmdPZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGNoZWNr
RXhjZXB0aW9uKCk7CiAgICAgICAgICAgICByZXN1bHRHUFIgPSBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE2ODYsNyArMTY5NSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSkpOwogICAgIAog
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChz
bG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29udmVydEpTVmFsdWVUb0Jvb2xlYW4sIHJlc3VsdEdQ
UiwgYXJnMUdQUikpOworICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBv
cGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBOZWVk
VG9TcGlsbCwgZmFsc2UpKTsgLy8gRG9lcyBub3QgbmVlZCBleGNlcHRpb24gY2hlY2suCiAgICAg
CiAgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihW
YWx1ZVRydWUpKSwgcmVzdWx0R1BSKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIs
IG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4sIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
CkBAIC0xODQwLDYgKzE4NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5v
ZGUqIG5vCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwog
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVh
biwgcmVzdWx0R1BSLCB2YWx1ZUdQUik7CiAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdEdQUik7CisgICAgICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE1heWJl
IG5vdCBuZWVkZWQ/CiAgICAgCiAgICAgICAgICAgICBicmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAgICAgICAgICAganVtcChub3RUYWtl
bik7CkBAIC0yMTY4LDYgKzIxNzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnREb3VibGVUb0ludDUyLCBy
ZXN1bHRHUFIsIHZhbHVlRlBSKTsKKyAgICAgICAgICAgIC8vY2hlY2tFeGNlcHRpb24oKTsgLy8g
Tm90IG5lZWRlZC4KICAgICAgICAgICAgIAogICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNJbnQ1MkFz
RG91YmxlLApAQCAtMjE5OSw2ICsyMjEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFk
ZE5vdE51bWJlciwgcmVzdWx0LmdwcigpLCBvcDFHUFIsIG9wMkdQUik7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGQsIHJlc3VsdC5ncHIo
KSwgb3AxR1BSLCBvcDJHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTIzNjgsNiArMjM4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIGNhbGxPcGVyYXRpb24oc2luLCByZXN1bHQuZnByKCksIG9wMUZQUik7CisgICAgICAgIC8v
Y2hlY2tFeGNlcHRpb24oKTsgLy8gTm90IG5lZWRlZC4gCiAgICAgICAgIGRvdWJsZVJlc3VsdChy
ZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMzgwLDYgKzIz
OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IAogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9u
KGNvcywgcmVzdWx0LmZwcigpLCBvcDFGUFIpOworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7
IC8vIE5vdCBuZWVkZWQuCiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNDg2LDYgKzI1MDAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbCwgcmVzdWx0LmdwcigpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3MDUsNiArMjcyMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9u
UHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwg
YXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25T
dHJpY3QsIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNHUFIpOworICAgICAgICAgICAgY2hlY2tFeGNl
cHRpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAg
ICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7CkBAIC0yOTE2LDYgKzI5MzIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQu
Z3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9u
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE11c3QgdXNlIGpzVmFsdWVSZXN1bHQg
YmVjYXVzZSBvdGhlcndpc2Ugd2Ugc2NyZXcgdXAgcmVnaXN0ZXIKICAgICAgICAgICAgIC8vIGFs
bG9jYXRpb24sIHdoaWNoIHRoaW5rcyB0aGF0IHRoaXMgbm9kZSBoYXMgYSByZXN1bHQuCkBAIC0y
OTMxLDYgKzI5NDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVj
LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgY2hlY2tFeGNl
cHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0yOTQ1LDYgKzI5NjMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3Vt
ZW50R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIC8v
IElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCiAgICAg
ICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwpA
QCAtMzI4Niw2ICszMzA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3Ip
OwogICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0
cnVjdG9yLCByZXN1bHRHUFIsIG9wMUdQUik7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBj
aGVja0V4Y2VwdGlvbigpOwogICAgICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKICAgICAgICAg
ICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKQEAgLTMzNzgsNiArMzM5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+
aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMzQ2MCw2ICszNDgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3Bl
cmF0aW9uTmV3QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpLAog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZCo+KGJ1ZmZlciksIG5vZGUtPm51bUNoaWxkcmVu
KCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogCiAgICAgICAgIGlmIChzY3JhdGNoU2l6
ZSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0zNTM3LDYg
KzM1NTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSwg
c3RydWN0dXJlR1BSKTsKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmVH
UFIsIHNpemVHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM1ODAsNiAr
MzYwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAKICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0LmdwcigpLCBnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihu
b2RlLT5pbmRleGluZ1R5cGUoKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwgbm9kZS0+bnVtQ29u
c3RhbnRzKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICAKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2MDQs
NiArMzYyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50Rm9yVHlw
ZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIGds
b2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwK
ICAgICAgICAgICAgICAgICBhcmd1bWVudEdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlv
bigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM2MjAsNiArMzY0NSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdSZWdleHAsIHJlc3VsdC5ncHIoKSwgbV9qaXQuY29kZUJsb2NrKCktPnJlZ2V4cChub2Rl
LT5yZWdleHBJbmRleCgpKSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtNDI2OSw2ICs0Mjk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blNpemVPZlZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudHNHUFIsIGRh
dGEtPm9mZnNldCk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAgIAogICAgICAg
ICBsb2NrKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgewpAQCAtNDI5Nyw2ICs0
MzI0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBtX2ppdC5zdG9yZTMyKGFyZ0NvdW50SW5jbHVkaW5nVGhpc0dQUiwgSklUQ29tcGlsZXI6OnBh
eWxvYWRGb3IoZGF0YS0+bWFjaGluZUNvdW50KSk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCks
IGFyZ3VtZW50c0dQUiwgZGF0YS0+b2Zmc2V0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgZGF0
YS0+bWFuZGF0b3J5TWluaW11bSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgICAg
IAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00NDA4LDYgKzQ0
MzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNH
ZW5lcmljUHJvcGVydHksIHJlc3VsdEdQUiwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCkpOwor
ICAgICAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTQ1NzUsNiArNDYwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciwgcmVzdWx0R1BSLCBiYXNlLmdwcigpKTsKKyAg
ICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00NjE0LDYgKzQ2NDQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0luZGV4U3RyaW5nLCByZXN1
bHRHUFIsIGluZGV4LmdwcigpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00
ODQ4LDYgKzQ4NzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0TWFjaGluZUludChF
CiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERvdWJsZVRvSW50NTIsIHJlc3VsdEdQUiwgdmFsdWVH
UFIpOwogICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAvL2NoZWNr
RXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAg
ICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCB2YWx1ZUVkZ2UsIFNwZWNJbnQzMiB8IFNwZWNJbnQ1
MkFzRG91YmxlLApAQCAtNDg4MCw2ICs0OTEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlRG91YmxlUmVwTQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgCiAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0RG91YmxlVG9JbnQ1MiwgcmVzdWx0R1BSLCB2YWx1ZUZQ
Uik7CisgICAgLy9jaGVja0V4Y2VwdGlvbigpOyAvLyBOb3QgbmVlZGVkLgogICAgIAogICAgIERG
R19UWVBFX0NIRUNLKAogICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjSW50NTJBc0Rv
dWJsZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCShyZXZpc2lvbiAxODg1MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTkyLDYgKzk5Miw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbihOb2RlKiBub2QKICAgICBjYWxsT3BlcmF0
aW9uKAogICAgICAgICBvcGVyYXRpb25HZW5lcmljSW4sIGV4dHJhY3RSZXN1bHQoSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KHJlc3VsdEdQUikpLAogICAgICAgICBiYXNlR1BSLCByZWdzKTsKKyAg
ICBjaGVja0V4Y2VwdGlvbigpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIApAQCAtMTk4Niw2ICsxOTg3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgICAgICAg
ICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R3ByKTsKICAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24odG9JbnQzMiwgcmVzdWx0R3ByLCBmcHIpOwogICAgICAgICAgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsK
IAogICAgICAgICAgICAgY29udmVydGVkLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCkBAIC0yMDQ1
LDYgKzIwNDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAg
ICAgICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R3ByKTsKICAgICAg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKHRvSW50MzIsIHJlc3VsdEdwciwgZnByKTsKICAgICAg
ICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7CisgICAgICAgICAg
ICAgICAgY2hlY2tFeGNlcHRpb24oKTsKIAogICAgICAgICAgICAgICAgIGNvbnZlcnRlZC5hcHBl
bmQobV9qaXQuanVtcCgpKTsKIApAQCAtMzY3OSw2ICszNjgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZAogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbihmbW9kQXNERkdPcGVyYXRpb24sIHJl
c3VsdC5mcHIoKSwgb3AxRlBSLCBvcDJGUFIpOworICAgICAgICAvL2NoZWNrRXhjZXB0aW9uKCk7
IC8vIE5vdCBuZWVkZWQuCiAgICAgICAgIAogICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZw
cigpLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzcxNyw2ICszNzIxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmQoTgogICAgIEZQUlJlc3VsdCByb3VuZGVk
UmVzdWx0QXNEb3VibGUodGhpcyk7CiAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJvdW5kZWRSZXN1
bHRBc0RvdWJsZS5mcHIoKTsKICAgICBjYWxsT3BlcmF0aW9uKGpzUm91bmQsIHJlc3VsdEZQUiwg
dmFsdWVGUFIpOworICAgIGNoZWNrRXhjZXB0aW9uKCk7CiAgICAgaWYgKHByb2R1Y2VzSW50ZWdl
cihub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgpKSkgewogICAgICAgICBHUFJUZW1wb3Jhcnkgcm91
bmRlZFJlc3VsdEFzSW50MzIodGhpcyk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwpAQCAtMzc0MCw2ICszNzQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
aXRoU3FydChObwogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBGUFJSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKHNxcnQsIHJlc3VsdC5mcHIoKSwg
b3AxRlBSKTsKKyAgICAgICAgLy9jaGVja0V4Y2VwdGlvbigpOyAvLyBOb3QgbmVlZGVkLgogICAg
ICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CkBAIC0zNzk4LDYgKzM4MDQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhQb3coTm9kCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHNraXBGYWxsYmFjayA9IGNvbXBpbGVBcml0aFBvd0ludGVnZXJGYXN0
UGF0aChtX2ppdCwgeE9wZXJhbmRDb3B5RnByLCBjb3VudGVyR3ByLCByZXN1bHRGcHIpOwogICAg
ICAgICBtX2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZSh5T3BlcmFuZEdwciwgeU9wZXJhbmRmcHIu
ZnByKCkpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hdGhQb3csIHJlc3VsdEZw
ciwgeE9wZXJhbmRmcHIsIHlPcGVyYW5kZnByLmZwcigpKTsKKyAgICAgICAgLy9jaGVja0V4Y2Vw
dGlvbigpOyAvLyBOb3QgbmVlZGVkLgogCiAgICAgICAgIHNraXBGYWxsYmFjay5saW5rKCZtX2pp
dCk7CiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHRGcHIsIG5vZGUpOwpAQCAtMzgzMCw2ICsz
ODM3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUG93KE5vZAogICAgIGZh
aWxlZEV4cG9uZW50Q29udmVyc2lvblRvSW50ZWdlci5saW5rKCZtX2ppdCk7CiAKICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk1hdGhQb3csIHJlc3VsdEZwciwgeE9wZXJhbmRmcHIsIHlPcGVy
YW5kZnByKTsKKyAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBOZWVkZWQuCiAgICAgc2tp
cEZhbGxiYWNrLmxpbmsoJm1faml0KTsKICAgICBkb3VibGVSZXN1bHQocmVzdWx0RnByLCBub2Rl
KTsKIH0KQEAgLTM4NDEsNiArMzg0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cml0aExvZyhOb2QKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEZQUlJlc3VsdCByZXN1bHQo
dGhpcyk7CiAgICAgY2FsbE9wZXJhdGlvbihsb2csIHJlc3VsdC5mcHIoKSwgb3AxRlBSKTsKKyAg
ICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCiAgICAgZG91YmxlUmVzdWx0KHJl
c3VsdC5mcHIoKSwgbm9kZSk7CiB9CiAKQEAgLTQ2MTksNiArNDYyOCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbigKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
IAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCByZXN1bHRHUFIs
IHNjb3BlR1BSLCBleGVjdXRhYmxlKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNDc0NCw2ICs0NzU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFj
dGl2YQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJl
Y3QsCiAgICAgICAgICAgICByZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NvcGVHUFIsIHRhYmxlLCBU
cnVzdGVkSW1tMzIoaW5pdGlhbGl6YXRpb25WYWx1ZS50YWcoKSksIFRydXN0ZWRJbW0zMihpbml0
aWFsaXphdGlvblZhbHVlLnBheWxvYWQoKSkpOwogI2VuZGlmCisgICAgICAgIGNoZWNrRXhjZXB0
aW9uKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTQ5OTQsNyArNTAwNSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDcmVhdGVTY29wZWQKICAgICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgw
LCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIGRlc3RHUFIpOyB9KTsKICAgICAKLSAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsK
KyAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywg
cmVzdWx0R1BSKTsKKyAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgIAogICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTUwMjEsNyArNTAzMyw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWQKICAgICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIGRlc3RHUFIpOyB9KTsKICAgICAKLSAgICBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVz
dWx0R1BSKTsKKyAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFy
Z3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBjaGVja0V4Y2VwdGlvbigpOwogICAgIAogICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTUwMzYsNyArNTA0OSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3RpZnlXcml0ZSgKICAgICAgICAgVHJ1c3RlZEltbTMy
KElzSW52YWxpZGF0ZWQpKTsKICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAg
ICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25Ob3RpZnlXcml0ZSwgTm9S
ZXN1bHQsIHNldCkpOworICAgICAgICBzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJh
dGlvbk5vdGlmeVdyaXRlLCBOb1Jlc3VsdCwgc2V0LCBOZWVkVG9TcGlsbCwgZmFsc2UpKTsgLy8g
RG9lcyBub3QgbmVlZCBleGNlcHRpb24gY2hlY2suCiAgICAgCiAgICAgbm9SZXN1bHQobm9kZSk7
CiB9CkBAIC01MDY4LDYgKzUwODEsNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVn
RXhwRXhlYyhOCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCBy
ZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICBjaGVja0V4Y2VwdGlvbigp
OwogCiAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29t
cGlsZXI6Ok5vblplcm8sIHJlc3VsdC5ncHIoKSwgdGFrZW4pOwogICAgIGp1bXAobm90VGFrZW4p
OwpAQCAtNTIwMyw2ICs1MjE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9j
YXRlUHJvcAogCiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9IYXZlUHJv
cGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eSwgcmVzdWx0LmdwcigpLCBiYXNlR1BSKTsK
KyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgCiAgICAgICAgIHN0b3JhZ2VSZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTI0Niw2ICs1MjYx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlYWxsb2NhdGVQcgogCiAgICAgICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlLCByZXN1
bHQuZ3ByKCksIGJhc2VHUFIsIG5ld1NpemUgLyBzaXplb2YoSlNWYWx1ZSkpOworICAgICAgICBj
aGVja0V4Y2VwdGlvbigpOwogCiAgICAgICAgIHN0b3JhZ2VSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTM1Myw2ICs1MzY5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYQogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9w
KCkgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsLCByZXN1bHRHUFIsIG9wMUdQUik7
CiAgICAgICAgIH0KKyAgICAgICAgY2hlY2tFeGNlcHRpb24oKTsKICAgICAgICAgaWYgKGRvbmUu
aXNTZXQoKSkKICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC01OTU4LDYgKzU5NzUsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0U3dpdGNoSW1tKE5vZGUqCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHNjcmF0Y2gpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkZpbmRTd2l0Y2hJ
bW1UYXJnZXRGb3JEb3VibGUsIHNjcmF0Y2gsIHZhbHVlUmVncy5ncHIoKSwgZGF0YS0+c3dpdGNo
VGFibGVJbmRleCk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7Cisg
ICAgICAgIC8vY2hlY2tFeGNlcHRpb24oKTsgLy8gTm90IG5lZWRlZC4KICAgICAgICAgbV9qaXQu
anVtcChzY3JhdGNoKTsKICNlbHNlCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEludCA9
IG1faml0LmJyYW5jaDMyKApAQCAtNTk3Miw2ICs1OTkwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaEltbShOb2RlKgogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhz
Y3JhdGNoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFy
Z2V0Rm9yRG91YmxlLCBzY3JhdGNoLCB2YWx1ZVJlZ3MsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgp
OwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2gpOworICAgICAgICAvL2No
ZWNrRXhjZXB0aW9uKCk7IC8vIE5vdCBuZWVkZWQuCisKICAgICAgICAgbV9qaXQuanVtcChzY3Jh
dGNoKTsKICNlbmRpZgogICAgICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOwpAQCAtNjIzMSw2ICs2MjUxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaFN0cmluZ09uUwogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIGRh
dGEtPnN3aXRjaFRhYmxlSW5kZXgsIHN0cmluZyk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uKCk7
CiAgICAgICAgIG1faml0Lmp1bXAoc3RyaW5nKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTYyNjgsNiArNjI4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmdP
blMKICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhzdHJpbmcpOwogICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgs
IHN0cmluZyk7CiAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhzdHJpbmcpOworICAgIGNoZWNr
RXhjZXB0aW9uKCk7CiAgICAgbV9qaXQuanVtcChzdHJpbmcpOwogfQogCkBAIC02NDA1LDYgKzY0
MjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzdG9yZVRvV3JpdGVCYXJyaWVyCiAgICAgc2ls
ZW50U3BpbGxBbGxSZWdpc3RlcnMoSW52YWxpZEdQUlJlZyk7CiAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25GbHVzaFdyaXRlQmFycmllckJ1ZmZlciwgY2VsbCk7CiAgICAgc2lsZW50RmlsbEFs
bFJlZ2lzdGVycyhJbnZhbGlkR1BSUmVnKTsKKyAgICAvL2NoZWNrRXhjZXB0aW9uKCk7IC8vIE5v
dCBuZWVkZWQuCiAKICAgICBkb25lLmxpbmsoJm1faml0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE4ODUwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODg3LDIzOSArODg3LDIzOSBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJh
dGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBjZWxsKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGNlbGwpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9w
ZXJhdGlvbl9FTyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvYmplY3QpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUob2JqZWN0KTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRU9TIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVj
dCwgc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUob2JqZWN0LCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25f
RU9aIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVjdCwgaW50MzJfdCBzaXpl
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9iamVj
dCwgVHJ1c3RlZEltbVB0cihzaXplKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VPWiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvYmplY3QsIGludDMyX3Qgc2l6ZSkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvYmplY3QsIFRydXN0ZWRJbW1Q
dHIoc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUFMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgb2xkLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvbGQsIFRydXN0ZWRJbW1Q
dHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU0pzcyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIHNpemVfdCBpbmRleCwgR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihp
bmRleCksIGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9w
ZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMik7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0
aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQ
X0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RQUyBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qg
c2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJ
bW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RTUyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgaW5kZXgsIHNpemVfdCBzaXplKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihpbmRleCksIFRydXN0ZWRJbW1QdHIoc2l6
ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0
aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3Bl
cmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
Y2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDWkMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKENfSklUT3BlcmF0aW9uX0VJY2Ygb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRVN0SnNjU3ltdGFiSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3Rl
ZEltbTY0IGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHNjb3BlLCBUcnVzdGVkSW1t
UHRyKHRhYmxlKSwgaW5pdGlhbFZhbHVlKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogI2Vsc2UK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpz
Y1N5bXRhYkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
R1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIFRydXN0ZWRJbW0zMiB0YWcsIFRydXN0
ZWRJbW0zMiBwYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHIo
dGFibGUpLCBwYXlsb2FkLCB0YWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAjZW5kaWYKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25v
d25MZW5ndGgpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoa25vd25MZW5ndGgpKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbTMyKGtub3duTGVuZ3RoKSwgVHJ1c3RlZElt
bTMyKG1pbkNhcGFjaXR5KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGxlbmd0aCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSksIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFpaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBsZW5ndGgsIHVuc2lnbmVk
IG1pbkNhcGFjaXR5KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgbGVuZ3RoLCBUcnVzdGVkSW1tMzIobWlu
Q2FwYWNpdHkpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzc1N0IG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VK
c3NKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihTX0pJVE9wZXJhdGlvbl9FR0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIGFy
ZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VHQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2Jq
ZWN0KSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSnNzX0pJVE9wZXJhdGlvbl9FWiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BS
UmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQog
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQyBv
cGVyYXRpb24sIEpTQ2VsbCogYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDSWNmIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZy
YW1lKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDSWNmIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIGludCBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihhcmcyKSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhv
cGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDQyBv
cGVyYXRpb24sIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGFyZzIpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwg
SlNDZWxsKiBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFyZzEpLCBhcmcyKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRP
cGVyYXRpb25fRUNiIG9wZXJhdGlvbiwgdm9pZCogcG9pbnRlcikKQEAgLTExMzYsNyArMTEzNiw3
IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3Bl
cmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KQEAg
LTExODgsMjggKzExODgsMjggQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVF9KSVRPcGVyYXRpb25fRUpzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxLCBpbnQzMl90IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbTMyKGFyZzIpKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Q19KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRVdzIG9wZXJhdGlvbiwgV2F0Y2hwb2ludFNldCogd2F0Y2hw
b2ludFNldCkKQEAgLTEyMjIsMTIgKzEyMjIsMTIgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHZvaWQqIHBvaW50
ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0Qgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSkKICAgICB7CkBAIC0xMjQ5LDEwMiArMTI0OSwxMDIgQEAg
cHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBWiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUpzc1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHZv
aWQqIHBvaW50ZXIsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJbW1QdHIo
c2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBp
bnQgc3RhcnRDb25zdGFudCwgaW50IG51bUNvbnN0YW50cykKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoc3RhcnRDb25zdGFudCks
IFRydXN0ZWRJbW0zMihudW1Db25zdGFudHMpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIHZvaWQqIHBvaW50ZXIpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZElt
bVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1og
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lDSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VEQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSlog
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VKQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRVpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgaW50MzJfdCBhcmcxLCBHUFJS
ZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWkljZlogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEsIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIFRydXN0ZWRJbW1QdHIoaW5s
aW5lQ2FsbEZyYW1lKSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBzaXplX3QgaW5kZXgpCkBAIC0xMzU2LDI4ICsx
MzU2LDI4IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBf
SklUT3BlcmF0aW9uX0VTdEogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBhcmcyKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJ
VE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0pJVE9wZXJhdGlvbl9FSkpDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25f
RUpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSlpDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRP
cGVyYXRpb25fSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsK
QEAgLTEzODcsMTIyICsxMzg3LDEyMiBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRVBQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyIGltbSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihpbW0ubV92YWx1ZSkpKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tLCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0u
bV92YWx1ZSkpKSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUNKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLmdwcigpKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FT1pEIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJn
MykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
SiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklU
T3BlcmF0aW9uX0VKUFAgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIHZvaWQq
IHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGVyYXRpb24sIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHVpZCkp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24p
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VQWkogb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9aSiBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihEX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VKWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgYXJnMSwgdW5zaWduZWQgYXJnMiwgdW5zaWduZWQgYXJnMykKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIo
YXJnMiksIFRydXN0ZWRJbW0zMihhcmczKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlpaIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCB1bnNpZ25lZCBh
cmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJ
VE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgdW5z
aWduZWQgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWkpaWlog
b3BlcmF0aW9uLCB1bnNpZ25lZCBhcmcxLCBHUFJSZWcgYXJnMiwgdW5zaWduZWQgYXJnMywgR1BS
UmVnIGFyZzQsIHVuc2lnbmVkIGFyZzUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpLCBhcmcyLCBUcnVzdGVkSW1tMzIo
YXJnMyksIGFyZzQsIFRydXN0ZWRJbW0zMihhcmc1KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsKG9wZXJhdGlvbik7CiAgICAgfQogI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKIApAQCAt
MTUzNCwxNDMgKzE1MzQsMTQzIEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0Ugb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
RXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5
bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUCBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgdm9pZCogcG9p
bnRlcikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9h
ZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VJIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3Vs
dFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRUEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VBWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyBhcmcxKQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
MVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNzWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUyBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCB2b2lkKiBw
b2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNpemUp
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RVNTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGlu
dCBzdGFydENvbnN0YW50LCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50KSwg
VHJ1c3RlZEltbTMyKG51bUNvbnN0YW50cykpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3Vs
dFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCwgdm9pZCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1
c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXls
b2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VKUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJl
ZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJS
ZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMik7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KIAog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgSlNDZWxsKiBj
ZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9h
ZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwg
SlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQs
IHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpQ0kgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBHUFJSZWcgYXJnMSwgY29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFRydXN0ZWRJ
bW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1
bHRQYXlsb2FkLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIGludDMyX3QgYXJnMVRhZywg
R1BSUmVnIGFyZzFQYXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1Yklu
Zm8pLCBhcmcxUGF5bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzFUYWcpLCBUcnVzdGVkSW1tUHRyKHVp
ZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FREEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwg
RlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEsIGFyZzIpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
MVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgVHJ1c3RlZEltbTMyIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5
bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFy
ZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBH
UFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXls
b2FkLCBhcmcxVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJl
c3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0
UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXls
b2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVn
IHJlc3VsdFBheWxvYWQsIGludDMyX3QgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSkpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWkljZlogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgaW50MzJfdCBhcmcxLCBJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEp
LCBUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSksIGFyZzIpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBh
eWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgaW50MzJfdCBhcmcxLCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIoYXJnMSksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpT
VmFsdWVSZWdzIHZhbHVlLCBzaXplX3QgaW5kZXgpCkBAIC0xNjgyLDEzNyArMTY4MiwxMzcgQEAg
cHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRp
b25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBH
UFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJn
MlBheWxvYWQsIGFyZzJUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKLSAgICB9Ci0gICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9KIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKLSAg
ICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KKyAgICAvL0pJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRp
b25fSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJn
MVBheWxvYWQpCisgICAgLy97CisgICAgLy8gICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoYXJnMVBh
eWxvYWQsIGFyZzFUYWcpOworICAgIC8vICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAvL30KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwg
YXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQ
UlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0
XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBH
UFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVn
IGFyZzJQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJC
SVRfRFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJn
MVBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGltbSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSwgR1BS
UmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxv
YWQsIGFyZzJUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVz
dWx0VGFnKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1
bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9h
ZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQ
YXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNK
IG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3Mg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBh
eWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9aRCBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSiBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMVBheWxvYWQsIGFyZzFUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRUpQUCBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxv
YWQsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2ludGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2Fk
LCBhcmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJS
ZWcgYXJnMlBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyks
IGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VDSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJU
YWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9h
ZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBh
cmczVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3Bl
cmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPWkog
b3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJS
ZWcgYXJnM1BheWxvYWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgU0g0XzMyQklUX0RVTU1Z
X0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRU9aSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1
c3RlZEltbTMyIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RV
TU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgRlBSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIHVu
c2lnbmVkIGFyZzIsIHVuc2lnbmVkIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgIGFyZzFQYXlsb2FkLCBh
cmcxVGFnLCBUcnVzdGVkSW1tMzIoYXJnMiksIFRydXN0ZWRJbW0zMihhcmczKSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklU
T3BlcmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIHVuc2lnbmVkIGFyZzMsIEdQUlJlZyBh
cmc0KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbiha
X0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRh
ZywgR1BSUmVnIGFyZzFQYXlsb2FkLCB1bnNpZ25lZCBhcmcyKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQ
YXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
WkpaWlogb3BlcmF0aW9uLCB1bnNpZ25lZCBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFy
ZzJQYXlsb2FkLCB1bnNpZ25lZCBhcmczLCBHUFJSZWcgYXJnNCwgdW5zaWduZWQgYXJnNSkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIoYXJnMSksIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQs
IFRydXN0ZWRJbW0zMihhcmc1KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlv
bik7CiAgICAgfQogI3VuZGVmIEVBQklfMzJCSVRfRFVNTVlfQVJHCiAjdW5kZWYgU0g0XzMyQklU
X0RVTU1ZX0FSRwpAQCAtMTg4NCwyOCArMTg4NCwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVw
YXJlRm9yRXh0ZXJuYWxDYWxsKCkgeyB9CiAjZW5kaWYKIAotICAgIC8vIFRoZXNlIG1ldGhvZHMg
YWRkIGNhbGwgaW5zdHJ1Y3Rpb25zLCB3aXRoIG9wdGlvbmFsIGV4Y2VwdGlvbiBjaGVja3MgJiBz
ZXR0aW5nIHJlc3VsdHMuCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCisgICAgdm9pZCBjaGVja0V4
Y2VwdGlvbigpCiAgICAgewotICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7Ci0gICAg
ICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKLSAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENhbGwo
ZnVuY3Rpb24pOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgICAgICByZXR1
cm4gY2FsbDsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxs
RnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKKyAg
ICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxsIGluc3RydWN0aW9ucywgd2l0aCBvcHRpb25hbCBl
eGNlcHRpb24gY2hlY2tzICYgc2V0dGluZyByZXN1bHRzLgorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAg
cHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwogICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3Jp
Z2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKLSAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2tXaXRoQ2FsbEZyYW1lUm9sbGJhY2soKTsKLSAgICAgICAgcmV0dXJuIGNh
bGw7CisgICAgICAgIHJldHVybiBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICB9Ci0g
ICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCisgICAgSklUQ29t
cGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNv
bnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKICAgICB7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKLSAgICAg
ICAgaWYgKChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykgJiYgKHJlc3VsdCAhPSBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUikpCi0gICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCByZXN1bHQpOworICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5k
Q2FsbChmdW5jdGlvbik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrV2l0aENhbGxGcmFt
ZVJvbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb25TZXRSZXN1
bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQpAQCAtMTkxNywz
NSArMTkxMCwxOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVu
ZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0
KQogICAgIHsKLSAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwotICAgICAgICBtX2pp
dC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9u
KTsKKyAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24p
OwogICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICBtX2pp
dC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOwogICAgICAgICByZXR1cm4g
Y2FsbDsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbChjb25zdCBGdW5j
dGlvblB0ciYgZnVuY3Rpb24pCi0gICAgewotICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxs
KCk7Ci0gICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24p
OwotICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdDEs
IEdQUlJlZyByZXN1bHQyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1
bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJl
c3VsdDIpCiAgICAgewotICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisgICAgICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICAgICAgbV9qaXQuc2V0dXBSZXN1bHRz
KHJlc3VsdDEsIHJlc3VsdDIpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAjaWYgQ1BV
KFg4NikKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKLSAg
ICB7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKGZ1bmN0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkRlBSUmVn
KSB7Ci0gICAgICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS5mc3RwbCgwLCBKSVRDb21waWxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRD
b21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIGNhbGw7Ci0gICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxT
ZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0KQogICAg
IHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24p
OwpAQCAtMTk1NiwxMyArMTkzMiw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNhbGw7CiAg
ICAgfQogI2VsaWYgQ1BVKEFSTSkgJiYgIUNQVShBUk1fSEFSREZQKQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3QgRnVuY3Rp
b25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0KQotICAgIHsKLSAgICAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOwot
ICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRGUFJSZWcpCi0gICAgICAgICAgICBtX2ppdC5h
c3NlbWJsZXIoKS52bW92KHJlc3VsdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86
OnJldHVyblZhbHVlR1BSMik7Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5j
dGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKQEAgLTE5NzEsMTMgKzE5NDAsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KICNlbHNlIC8vIENQVShYODZfNjQpIHx8IChD
UFUoQVJNKSAmJiBDUFUoQVJNX0hBUkRGUCkpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8
IENQVShTSDQpCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQp
Ci0gICAgewotICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhmdW5jdGlvbik7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZEZQ
UlJlZykKLSAgICAgICAgICAgIG1faml0Lm1vdmVEb3VibGUoRlBSSW5mbzo6cmV0dXJuVmFsdWVG
UFIsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwg
RlBSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBh
cHBlbmRDYWxsKGZ1bmN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SW50cmluc2ljUmVwb3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAxODg1MDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE0LDYgKzExNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
ICAgICBtYWNybyhWX0pJVE9wZXJhdGlvbl9FWkpaWlosIGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSwg
aW50UHRyLCBpbnQzMiwgaW50NjQsIGludDMyLCBpbnQzMiwgaW50MzIpKSBcCiAgICAgbWFjcm8o
Vl9KSVRPcGVyYXRpb25fSiwgZnVuY3Rpb25UeXBlKHZvaWRUeXBlLCBpbnQ2NCkpIFwKICAgICBt
YWNybyhWX0pJVE9wZXJhdGlvbl9aLCBmdW5jdGlvblR5cGUodm9pZFR5cGUsIGludDMyKSkgXAor
ICAgIG1hY3JvKFZfSklUT3BlcmF0aW9uX0UsIGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSwgaW50UHRy
KSkgXAogICAgIG1hY3JvKFpfSklUT3BlcmF0aW9uX0QsIGZ1bmN0aW9uVHlwZShpbnQzMiwgZG91
YmxlVHlwZSkpIFwKICAgICBtYWNybyhaX0pJVE9wZXJhdGlvbl9FQywgZnVuY3Rpb25UeXBlKGlu
dDMyLCBpbnRQdHIsIGludFB0cikpIFwKICAgICBtYWNybyhaX0pJVE9wZXJhdGlvbl9FR0MsIGZ1
bmN0aW9uVHlwZShpbnQzMiwgaW50UHRyLCBpbnRQdHIsIGludFB0cikpIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lv
biAxODg1MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk5NCw3ICs3OTk0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNhbGxDaGVjaygpCiAgICAgewogICAgICAgICBpZiAoT3B0aW9uczo6ZW5hYmxlRXhjZXB0
aW9uRnV6eigpKQotICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uRXhjZXB0aW9uRnV6eikpOworICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eiksIG1fY2FsbEZyYW1lKTsKICAgICAgICAgCiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRXhj
ZXB0aW9uIGNoZWNrIGNvbnRpbnVhdGlvbiIpKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAxODg1MDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIwMSwxNSArMjAxLDQwIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWxs
RXhjZXB0aW9uRnV6eigKICAgICBpZiAoIU9wdGlvbnM6OmVuYWJsZUV4Y2VwdGlvbkZ1enooKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSA+PSBz
aXplb2Yodm9pZCopICogMik7Ci0gICAgc3ViUHRyKFRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVu
dEJ5dGVzKCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgcG9rZShHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwgMCk7Ci0gICAgcG9rZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIDEpOwor
ICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSB2bSgpLT5leGNlcHRpb25GdXp6aW5nQnVmZmVy
KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBG
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycykpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgICAgICBzdG9yZTY0KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwor
I2Vsc2UKKyAgICAgICAgc3RvcmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBp
KTsKKyNlbmRpZgorICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVm
ZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICBzdG9yZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBBZGRyZXNzKEdQUklu
Zm86OnJlZ1QwKSk7CisgICAgfQorCisgICAgLy8gU2V0IHVwIG9uZSBhcmd1bWVudC4KKyNpZiBD
UFUoWDg2KQorICAgIHBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDApOworI2Vsc2UK
KyAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworI2VuZGlmCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
b3BlcmF0aW9uRXhjZXB0aW9uRnV6eikpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5H
UFIpOwogICAgIGNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKLSAgICBw
ZWVrKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCAwKTsKLSAgICBwZWVrKEdQUkluZm86OnJldHVy
blZhbHVlR1BSMiwgMSk7Ci0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5
dGVzKCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BS
SW5mbzo6cmVnVDApOworICAgICAgICBsb2FkRG91YmxlKEFkZHJlc3MoR1BSSW5mbzo6cmVnVDAp
LCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBsb2FkNjQoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7
CisjZWxzZQorICAgICAgICBsb2FkMzIoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3Rlcihp
KSk7CisjZW5kaWYKKyAgICB9CiB9CiAKIEFzc2VtYmx5SGVscGVyczo6SnVtcCBBc3NlbWJseUhl
bHBlcnM6OmVtaXRFeGNlcHRpb25DaGVjayhFeGNlcHRpb25DaGVja0tpbmQga2luZCwgRXhjZXB0
aW9uSnVtcFdpZHRoIHdpZHRoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxODg1MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODk4LDEwICsxODk4
LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25WTUhhbmRsZUV4Y2UKIC8vIG91cnNl
bHZlcyB0byBwbGF5IHNvbWUgZ25hcmx5IEFCSSB0cmlja3MganVzdCB0byBzaW1wbGlmeSB0aGUg
Y2FsbGluZyBjb252ZW50aW9uLiBUaGlzIGlzCiAvLyBwYXJ0aWN1bGFybHkgc2FmZSBoZXJlIHNp
bmNlIHRoaXMgaXMgbmV2ZXIgY2FsbGVkIG9uIHRoZSBjcml0aWNhbCBwYXRoIC0gaXQncyBvbmx5
IGZvcgogLy8gdGVzdGluZy4KLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25FeGNlcHRpb25G
dXp6KCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25FeGNlcHRpb25GdXp6KEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICNpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCi0g
ICAgRXhlY1N0YXRlKiBleGVjID0gc3RhdGljX2Nhc3Q8RXhlY1N0YXRlKj4oX19idWlsdGluX2Zy
YW1lX2FkZHJlc3MoMSkpOwogICAgIHZvaWQqIHJldHVyblBDID0gX19idWlsdGluX3JldHVybl9h
ZGRyZXNzKDApOwogICAgIGRvRXhjZXB0aW9uRnV6emluZyhleGVjLCAiSklUT3BlcmF0aW9ucyIs
IHJldHVyblBDKTsKICNlbmRpZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMTg4NTA0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT1NSV3Jp
dGVCYXJyCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jbml0R2xvYmFsQ29uc3QoRXhl
Y1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4
Y2VwdGlvbkZ1enooKTsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25FeGNlcHRpb25GdXp6
KEV4ZWNTdGF0ZSopOwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhh
c0dlbmVyaWNQcm9wZXJ0eShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKik7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eShF
eGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAJKHJldmlzaW9uIDE4ODUwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDYgKzM0MCw5IEBAIFZNOjp+Vk0o
KQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzY3JhdGNoQnVmZmVycy5zaXplKCk7ICsr
aSkKICAgICAgICAgZmFzdEZyZWUoc2NyYXRjaEJ1ZmZlcnNbaV0pOwogI2VuZGlmCisKKyAgICBp
ZiAobV9leGNlcHRpb25GdXp6QnVmZmVyKQorICAgICAgICBmYXN0RnJlZShtX2V4Y2VwdGlvbkZ1
enpCdWZmZXIpOwogfQogCiBSZWY8Vk0+IFZNOjpjcmVhdGVDb250ZXh0R3JvdXAoSGVhcFR5cGUg
aGVhcFR5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE4
ODUwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3Niw2ICs0NzYsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAorICAgIEVuY29kZWRKU1ZhbHVlKiBleGNlcHRpb25GdXp6aW5nQnVmZmVyKHNpemVf
dCBzaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKE9wdGlvbnM6OmVuYWJsZUV4Y2VwdGlvbkZ1
enooKSk7CisgICAgICAgIGlmICghbV9leGNlcHRpb25GdXp6QnVmZmVyKQorICAgICAgICAgICAg
bV9leGNlcHRpb25GdXp6QnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihmYXN0
TWFsbG9jKHNpemUpKTsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uRnV6ekJ1ZmZlcjsKKyAg
ICB9CisKICAgICB2b2lkIGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3Rz
Jik7CiAKICAgICBWTUVudHJ5U2NvcGUqIGVudHJ5U2NvcGU7CkBAIC02MTMsNiArNjIxLDcgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udHJvbEZsb3dQcm9maWxlcj4gbV9jb250
cm9sRmxvd1Byb2ZpbGVyOwogICAgIHVuc2lnbmVkIG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJs
ZWRDb3VudDsKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4+IG1fbWljcm90
YXNrUXVldWU7CisgICAgRW5jb2RlZEpTVmFsdWUqIG1fZXhjZXB0aW9uRnV6ekJ1ZmZlciB7IG51
bGxwdHIgfTsKIH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259591</attachid>
            <date>2015-08-21 01:41:17 -0700</date>
            <delta_ts>2015-08-21 02:01:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>115932</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDE1LTA4LTE1ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBERkcgY2FsbE9wZXJhdGlvbnMgc2hvdWxkIG5vdCBpbXBsaWNpdGx5IGVtaXQgYW4gZXhj
ZXB0aW9uIGNoZWNrLiBBdCBjYWxsT3BlcmF0aW9uIGNhbGwgc2l0ZXMsIHdlIHNob3VsZCBleHBs
aWNpdGx5IGVtaXQgZXhjZXB0aW9uIGNoZWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3OTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIERGRyBi
ZWluZyBhYmxlIHRvIGhhbmRsZSBleGNlcHRpb25zLiAKKyAgICAgICAgVG8gZG8gdGhpcywgd2Ug
bmVlZCBtb3JlIGNvbnRyb2wgb3ZlciB3aGVuIHdlIGVtaXQgZXhjZXB0aW9uIGNoZWNrcy4KKyAg
ICAgICAgU3BlY2lmaWNhbGx5LCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gc2lsZW50RmlsbCBiZWZv
cmUgZW1pdHRpbmcgYW4gZXhjZXB0aW9uIGNoZWNrLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXMg
dGhhdC4gVGhpcyBwYXRjaCBhbHNvIGFsbG93cyB1cyB0byBlYXNpbHkgc2VlIHdoaWNoCisgICAg
ICAgIG9wZXJhdGlvbnMgZG8gYW5kIGRvIG5vdCBlbWl0IGV4Y2VwdGlvbiBjaGVja3MuIEZpbmRp
bmcgdGhpcyBpbmZvcm1hdGlvbgorICAgICAgICBvdXQgYmVmb3JlIHdhcyBhIHBhaW4uCisKKyAg
ICAgICAgKiBkZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRm
Zy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRm
Zy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmV4Y2VwdGlv
bkNoZWNrKToKKyAgICAgICAgKiBkZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5l
cmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpDYWxsU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxTbG93UGF0aEdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbFNsb3dQYXRoR2VuZXJhdG9yOjp0ZWFyRG93bik6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0
b3I6OkNhbGxSZXN1bHRBbmROb0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6REZHOjpDYWxsUmVzdWx0QW5kT25lQXJndW1lbnRTbG93UGF0aEdlbmVyYXRvcjo6Q2Fs
bFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNhbGxSZXN1bHRBbmRUd29Bcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3Vs
dEFuZFR3b0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpD
YWxsUmVzdWx0QW5kVGhyZWVBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3VsdEFu
ZFRocmVlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNh
bGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRG
b3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxS
ZXN1bHRBbmRGaXZlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRGaXZl
QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRo
Q2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3FydCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aFBvdyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aExvZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90aWZ5V3JpdGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwRXhlYyk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcik6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tFeGNlcHRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09u
RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2Fs
bFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uU2V0UmVzdWx0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OkNvbXBh
cmVBbmRCb3hCb29sZWFuU2xvd1BhdGhHZW5lcmF0b3I6OkNvbXBhcmVBbmRCb3hCb29sZWFuU2xv
d1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21wYXJlQW5kQm94Qm9v
bGVhblNsb3dQYXRoR2VuZXJhdG9yOjpDb21wYXJlQW5kQm94Qm9vbGVhblNsb3dQYXRoR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVO
b25QZWVwaG9sZUNvbXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpu
b25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb252
ZXJ0TWFjaGluZUludCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZURvdWJsZVJlcE1hY2hpbmVJbnQpOgorICAgICAgICAqIGZ0bC9GVExJbnRyaW5zaWNSZXBv
c2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjYWxsQ2hlY2spOgorICAgICAgICAqIGpp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNh
bGxFeGNlcHRpb25GdXp6KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0RXhj
ZXB0aW9uQ2hlY2spOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KEpTQzo6Vk06OnNjcmF0Y2hCdWZmZXJGb3JTaXplKToKKyAgICAgICAgKEpTQzo6Vk06OmV4Y2Vw
dGlvbkZ1enppbmdCdWZmZXIpOgorCiAyMDE1LTA4LTE0ICBCYXNpbGUgQ2xlbWVudCAgPGJhc2ls
ZV9jbGVtZW50QGFwcGxlLmNvbT4KIAogICAgICAgICBPY2Nhc2lvbmFsIGZhaWx1cmUgaW4gdjgt
djYvdjgtcmF5dHJhY2UuanMuZnRsLWVhZ2VyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNp
b24gMTg4NTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQ
YXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIH0KICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7
IGktLTspCiAgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSwgR1BSSW5mbzo6
cmVnVDApOworICAgICAgICBqaXQtPmNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAg
IAogICAgICAgICBpZiAobV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7CiAgICAgICAgICAg
ICBBU1NFUlQobV9zdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5l
cmF0b3IuaAkocmV2aXNpb24gMTg4NTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MSw2ICs2MSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgR1BSUmVnIGNhblRyYW1wbGUgPSBT
cGVjdWxhdGl2ZUpJVDo6cGlja0NhblRyYW1wbGUobV9yZXN1bHRHUFIpOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIGppdC0+c2ls
ZW50RmlsbChtX3BsYW5zW2ldLCBjYW5UcmFtcGxlKTsKKyAgICAgICAgaml0LT5jaGVja0V4Y2Vw
dGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICBqaXQtPm1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MobV9yZXN1bHRHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIG1f
c3RvcmFnZUdQUik7CiAgICAgICAgIGp1bXBUbyhqaXQpOwogICAgIH0KQEAgLTEwNiw2ICsxMDcs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3VsYXRpdmVK
SVQ6OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9wbGFucy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9w
bGFuc1tpXSwgY2FuVHJhbXBsZSk7CisgICAgICAgIGppdC0+Y2hlY2tFeGNlcHRpb25BZnRlckNh
bGwoKTsKICAgICAgICAganVtcFRvKGppdCk7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxD
cmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxODg1MDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVu
dHNTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgR1BSUmVnIGNhblRyYW1wbGUgPSBTcGVjdWxhdGl2ZUpJVDo6cGlj
a0NhblRyYW1wbGUobV9yZXN1bHRHUFIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3Bs
YW5zLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ld
LCBjYW5UcmFtcGxlKTsKKyAgICAgICAgaml0LT5jaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
ICAgICAgICBqaXQtPm1faml0LmxvYWRQdHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhtX3Jlc3VsdEdQUiwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgpKSwg
bV9sZW5ndGhHUFIpOwogICAgICAgICBqdW1wVG8oaml0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDE4ODUwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTY1LDExICsxNjUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmdW5jdGlvbkNhbGw7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soSnVtcCBqdW1wVG9IYW5kbGVyKQot
ICAgIHsKLSAgICAgICAgbV9leGNlcHRpb25DaGVja3MuYXBwZW5kKGp1bXBUb0hhbmRsZXIpOwot
ICAgIH0KLSAgICAKICAgICB2b2lkIGV4Y2VwdGlvbkNoZWNrKCkKICAgICB7CiAgICAgICAgIG1f
ZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2soKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5lU3Ry
aW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxODg1MDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBHUFJSZWcgY2FuVHJhbXBsZSA9IFNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZShleHRy
YWN0UmVzdWx0KG1fcmVzdWx0UmVncykpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3Bs
YW5zLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ld
LCBjYW5UcmFtcGxlKTsKKyAgICAgICAgaml0LT5jaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
ICAgICAgICAKICAgICAgICAganVtcFRvKGppdCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNpb24gMTg4
NTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OCwxNSArODgsMjEgQEAgcHJvdGVjdGVkOgogICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBtX3RvOwogfTsKIAorZW51bSBjbGFzcyBFeGNlcHRpb25DaGVja1Jl
cXVpcmVtZW50IHsKKyAgICBDaGVja05lZWRlZCwKKyAgICBDaGVja05vdE5lZWRlZAorfTsKKwog
dGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5h
bWUgUmVzdWx0VHlwZT4KIGNsYXNzIENhbGxTbG93UGF0aEdlbmVyYXRvciA6IHB1YmxpYyBKdW1w
aW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGU+IHsKIHB1YmxpYzoKICAgICBDYWxsU2xvd1Bh
dGhHZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQs
IEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxs
TW9kZSwgUmVzdWx0VHlwZSByZXN1bHQpCisgICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGls
bE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsIFJlc3VsdFR5cGUg
cmVzdWx0KQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZT4oZnJv
bSwgaml0KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9zcGls
bE1vZGUoc3BpbGxNb2RlKQorICAgICAgICAsIG1fZXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudChy
ZXF1aXJlbWVudCkKICAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCiAgICAgewogICAgICAgICBp
ZiAobV9zcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwpCkBAIC0xMzAsMTEgKzEzNiwxNCBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0t
OykKICAgICAgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSwgY2FuVHJhbXBs
ZSk7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKG1fZXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCA9
PSBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCkKKyAgICAgICAgICAgIGpp
dC0+Y2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgdGhpcy0+anVtcFRvKGppdCk7
CiAgICAgfQogCiAgICAgRnVuY3Rpb25UeXBlIG1fZnVuY3Rpb247CiAgICAgU3BpbGxSZWdpc3Rl
cnNNb2RlIG1fc3BpbGxNb2RlOworICAgIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgbV9leGNl
cHRpb25DaGVja1JlcXVpcmVtZW50OwogICAgIFJlc3VsdFR5cGUgbV9yZXN1bHQ7CiAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgbV9jYWxsOwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQ
bGFuLCAyPiBtX3BsYW5zOwpAQCAtMTQ2LDkgKzE1NSw5IEBAIGNsYXNzIENhbGxSZXN1bHRBbmRO
b0FyZ3VtZW50c1Nsb3dQYXRoR2UKIHB1YmxpYzoKICAgICBDYWxsUmVzdWx0QW5kTm9Bcmd1bWVu
dHNTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVK
SVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAotICAgICAgICBTcGlsbFJlZ2lzdGVyc01v
ZGUgc3BpbGxNb2RlLCBSZXN1bHRUeXBlIHJlc3VsdCkKKyAgICAgICAgU3BpbGxSZWdpc3RlcnNN
b2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwgUmVz
dWx0VHlwZSByZXN1bHQpCiAgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBl
LCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGU+KAotICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5j
dGlvbiwgc3BpbGxNb2RlLCByZXN1bHQpCisgICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9u
LCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQpCiAgICAgewogICAgIH0KICAgICAKQEAg
LTE2OSw5ICsxNzgsOSBAQCBjbGFzcyBDYWxsUmVzdWx0QW5kT25lQXJndW1lbnRTbG93UGF0aEdl
CiBwdWJsaWM6CiAgICAgQ2FsbFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0b3Io
CiAgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlw
ZSBmdW5jdGlvbiwKLSAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgUmVzdWx0
VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxKQorICAgICAgICBTcGlsbFJlZ2lz
dGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50
LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVudDEpCiAgICAgICAgIDog
Q2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGU+
KAotICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQpCisg
ICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCBy
ZXN1bHQpCiAgICAgICAgICwgbV9hcmd1bWVudDEoYXJndW1lbnQxKQogICAgIHsKICAgICB9CkBA
IC0xOTUsMTAgKzIwNCwxMCBAQCBjbGFzcyBDYWxsUmVzdWx0QW5kVHdvQXJndW1lbnRzU2xvd1Bh
dGhHCiBwdWJsaWM6CiAgICAgQ2FsbFJlc3VsdEFuZFR3b0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJh
dG9yKAogICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlv
blR5cGUgZnVuY3Rpb24sCi0gICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIFJl
c3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKKyAgICAgICAgU3BpbGxS
ZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJl
bWVudCwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAogICAgICAg
ICBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MikKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0
b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9t
LCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGpp
dCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCkKICAgICAgICAgLCBt
X2FyZ3VtZW50MShhcmd1bWVudDEpCiAgICAgICAgICwgbV9hcmd1bWVudDIoYXJndW1lbnQyKQog
ICAgIHsKQEAgLTIyNCwxMCArMjMzLDEwIEBAIGNsYXNzIENhbGxSZXN1bHRBbmRUaHJlZUFyZ3Vt
ZW50c1Nsb3dQYXQKIHB1YmxpYzoKICAgICBDYWxsUmVzdWx0QW5kVGhyZWVBcmd1bWVudHNTbG93
UGF0aEdlbmVyYXRvcigKICAgICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAotICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3Bp
bGxNb2RlLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVudDEsCisgICAg
ICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1l
bnQgcmVxdWlyZW1lbnQsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50
MSwKICAgICAgICAgQXJndW1lbnRUeXBlMiBhcmd1bWVudDIsIEFyZ3VtZW50VHlwZTMgYXJndW1l
bnQzKQogICAgICAgICA6IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25U
eXBlLCBSZXN1bHRUeXBlPigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxs
TW9kZSwgcmVzdWx0KQorICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2Rl
LCByZXF1aXJlbWVudCwgcmVzdWx0KQogICAgICAgICAsIG1fYXJndW1lbnQxKGFyZ3VtZW50MSkK
ICAgICAgICAgLCBtX2FyZ3VtZW50Mihhcmd1bWVudDIpCiAgICAgICAgICwgbV9hcmd1bWVudDMo
YXJndW1lbnQzKQpAQCAtMjU5LDEwICsyNjgsMTAgQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZEZvdXJB
cmd1bWVudHNTbG93UGF0aAogcHVibGljOgogICAgIENhbGxSZXN1bHRBbmRGb3VyQXJndW1lbnRz
U2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklU
KiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2Rl
IHNwaWxsTW9kZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAor
ICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVp
cmVtZW50IHJlcXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1
bWVudDEsCiAgICAgICAgIEFyZ3VtZW50VHlwZTIgYXJndW1lbnQyLCBBcmd1bWVudFR5cGUzIGFy
Z3VtZW50MywgQXJndW1lbnRUeXBlNCBhcmd1bWVudDQpCiAgICAgICAgIDogQ2FsbFNsb3dQYXRo
R2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGU+KAotICAgICAgICAg
ICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQpCisgICAgICAgICAgICBm
cm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQpCiAgICAg
ICAgICwgbV9hcmd1bWVudDEoYXJndW1lbnQxKQogICAgICAgICAsIG1fYXJndW1lbnQyKGFyZ3Vt
ZW50MikKICAgICAgICAgLCBtX2FyZ3VtZW50Myhhcmd1bWVudDMpCkBAIC0yOTYsMTEgKzMwNSwx
MSBAQCBjbGFzcyBDYWxsUmVzdWx0QW5kRml2ZUFyZ3VtZW50c1Nsb3dQYXRoCiBwdWJsaWM6CiAg
ICAgQ2FsbFJlc3VsdEFuZEZpdmVBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAg
SnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9u
LAotICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBSZXN1bHRUeXBlIHJlc3Vs
dCwgQXJndW1lbnRUeXBlMSBhcmd1bWVudDEsCisgICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBz
cGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsIFJlc3VsdFR5
cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKICAgICAgICAgQXJndW1lbnRUeXBl
MiBhcmd1bWVudDIsIEFyZ3VtZW50VHlwZTMgYXJndW1lbnQzLCBBcmd1bWVudFR5cGU0IGFyZ3Vt
ZW50NCwKICAgICAgICAgQXJndW1lbnRUeXBlNSBhcmd1bWVudDUpCiAgICAgICAgIDogQ2FsbFNs
b3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGU+KAotICAg
ICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQpCisgICAgICAg
ICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQp
CiAgICAgICAgICwgbV9hcmd1bWVudDEoYXJndW1lbnQxKQogICAgICAgICAsIG1fYXJndW1lbnQy
KGFyZ3VtZW50MikKICAgICAgICAgLCBtX2FyZ3VtZW50Myhhcmd1bWVudDMpCkBAIC0zMzAsMTAg
KzMzOSwxMCBAQCBwcm90ZWN0ZWQ6ICAgIAogdGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5
cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZT4KIGlubGluZSBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1wVHlwZSBm
cm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0gICAgUmVz
dWx0VHlwZSByZXN1bHQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGls
bCkKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSA9
IE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50ID0gRXhj
ZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQpCiB7CiAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVt
cFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4+KAotICAgICAgICBmcm9tLCBqaXQsIGZ1
bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCk7CisgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24s
IHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCk7CiB9CiAKIHRlbXBsYXRlPApAQCAtMzQy
LDEwICszNTEsMTAgQEAgdGVtcGxhdGU8CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aENhbGwoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVK
SVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAogICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBB
cmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKLSAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2Rl
ID0gTmVlZFRvU3BpbGwpCisgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSA9IE5lZWRU
b1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50ID0gRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRUeXBlMT4+KAotICAgICAgICBmcm9t
LCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCwgYXJndW1lbnQxKTsKKyAgICAgICAg
ZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0LCBhcmd1
bWVudDEpOwogfQogCiB0ZW1wbGF0ZTwKQEAgLTM1NCwxMCArMzYzLDEwIEBAIHRlbXBsYXRlPAog
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAog
ICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5j
dGlvbiwKICAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVudDEsIEFy
Z3VtZW50VHlwZTIgYXJndW1lbnQyLAotICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUg
PSBOZWVkVG9TcGlsbCkKKyAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRv
U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQgPSBFeGNlcHRpb25D
aGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxsUmVzdWx0QW5kVHdvQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRUeXBlMSwgQXJndW1lbnRUeXBlMj4+
KAotICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCwgYXJndW1l
bnQxLCBhcmd1bWVudDIpOworICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUs
IHJlcXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQyKTsKIH0KIAogdGVtcGxh
dGU8CkBAIC0zNjYsMTAgKzM3NSwxMCBAQCB0ZW1wbGF0ZTwKIGlubGluZSBzdGQ6OnVuaXF1ZV9w
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1wVHlwZSBmcm9tLCBT
cGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlw
ZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLCBBcmd1bWVudFR5cGUyIGFyZ3VtZW50
MiwKLSAgICBBcmd1bWVudFR5cGUzIGFyZ3VtZW50MywgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxs
TW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIEFyZ3VtZW50VHlwZTMgYXJndW1lbnQzLCBTcGlsbFJl
Z2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQgcmVxdWlyZW1lbnQgPSBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRl
ZCkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kVGhyZWVBcmd1
bWVudHNTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBl
LCBBcmd1bWVudFR5cGUxLCBBcmd1bWVudFR5cGUyLAotICAgICAgICBBcmd1bWVudFR5cGUzPj4o
ZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQsIGFyZ3VtZW50MSwgYXJndW1l
bnQyLCBhcmd1bWVudDMpOworICAgICAgICBBcmd1bWVudFR5cGUzPj4oZnJvbSwgaml0LCBmdW5j
dGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0LCBhcmd1bWVudDEsIGFyZ3VtZW50
MiwgYXJndW1lbnQzKTsKIH0KIAogdGVtcGxhdGU8CkBAIC0zODAsMTAgKzM4OSwxMCBAQCBpbmxp
bmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yCiAgICAgSnVtcFR5cGUgZnJvbSwg
U3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAogICAgIFJlc3VsdFR5
cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwgQXJndW1lbnRUeXBlMiBhcmd1bWVu
dDIsCiAgICAgQXJndW1lbnRUeXBlMyBhcmd1bWVudDMsIEFyZ3VtZW50VHlwZTQgYXJndW1lbnQ0
LAotICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCkKKyAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNr
UmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQgPSBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVj
a05lZWRlZCkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kRm91
ckFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3Vs
dFR5cGUsIEFyZ3VtZW50VHlwZTEsIEFyZ3VtZW50VHlwZTIsCi0gICAgICAgIEFyZ3VtZW50VHlw
ZTMsIEFyZ3VtZW50VHlwZTQ+Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3Vs
dCwgYXJndW1lbnQxLCBhcmd1bWVudDIsIGFyZ3VtZW50MywgYXJndW1lbnQ0KTsKKyAgICAgICAg
QXJndW1lbnRUeXBlMywgQXJndW1lbnRUeXBlND4+KGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxs
TW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIsIGFyZ3VtZW50
MywgYXJndW1lbnQ0KTsKIH0KIAogdGVtcGxhdGU8CkBAIC0zOTQsMTAgKzQwMywxMCBAQCBpbmxp
bmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yCiAgICAgSnVtcFR5cGUgZnJvbSwg
U3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAogICAgIFJlc3VsdFR5
cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwgQXJndW1lbnRUeXBlMiBhcmd1bWVu
dDIsCiAgICAgQXJndW1lbnRUeXBlMyBhcmd1bWVudDMsIEFyZ3VtZW50VHlwZTQgYXJndW1lbnQ0
LCBBcmd1bWVudFR5cGU1IGFyZ3VtZW50NSwKLSAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxN
b2RlID0gTmVlZFRvU3BpbGwpCisgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSA9IE5l
ZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50ID0gRXhjZXB0
aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbFJlc3VsdEFuZEZpdmVBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjxKdW1w
VHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudFR5cGUxLCBBcmd1bWVudFR5
cGUyLAotICAgICAgICBBcmd1bWVudFR5cGUzLCBBcmd1bWVudFR5cGU0LCBBcmd1bWVudFR5cGU1
Pj4oZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQsIGFyZ3VtZW50MSwgYXJn
dW1lbnQyLCBhcmd1bWVudDMsCisgICAgICAgIEFyZ3VtZW50VHlwZTMsIEFyZ3VtZW50VHlwZTQs
IEFyZ3VtZW50VHlwZTU+Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVt
ZW50LCByZXN1bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQyLCBhcmd1bWVudDMsCiAgICAgICAgIGFy
Z3VtZW50NCwgYXJndW1lbnQ1KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxODg1MDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MDksNiArNDA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaAogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
IGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgYXJnMVRhZ0dQUiwgYXJn
MVBheWxvYWRHUFIsIGFyZzJUYWdHUFIsIGFyZzJQYXlsb2FkR1BSKTsKKyAgICAgICAgY2hlY2tF
eGNlcHRpb25BZnRlckNhbGwoKTsKIAogICAgICAgICBicmFuY2hUZXN0MzIoY2FsbFJlc3VsdENv
bmRpdGlvbiwgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgfSBlbHNlIHsKQEAgLTQzMiw2ICs0MzMs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgCiAgICAg
ICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxVGFnR1BSLCBhcmcx
UGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICAgICAgY2hl
Y2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMocmVzdWx0R1BSKTsKICAgICAgICAgCiAgICAgICAgICAgICBicmFuY2hUZXN0MzIoY2FsbFJl
c3VsdENvbmRpdGlvbiwgcmVzdWx0R1BSLCB0YWtlbik7CkBAIC00NTMsNyArNDU1LDcgQEAgcHVi
bGljOgogICAgICAgICBTX0pJVE9wZXJhdGlvbl9FSkogZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsCiAgICAgICAgIEdQUlJlZyBhcmcy
VGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCiAgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJhdG9y
PEp1bXBUeXBlLCBTX0pJVE9wZXJhdGlvbl9FSkosIEdQUlJlZz4oCi0gICAgICAgICAgICBmcm9t
LCBqaXQsIGZ1bmN0aW9uLCBOZWVkVG9TcGlsbCwgcmVzdWx0KQorICAgICAgICAgICAgZnJvbSwg
aml0LCBmdW5jdGlvbiwgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNo
ZWNrTmVlZGVkLCByZXN1bHQpCiAgICAgICAgICwgbV9hcmcxVGFnKGFyZzFUYWcpCiAgICAgICAg
ICwgbV9hcmcxUGF5bG9hZChhcmcxUGF5bG9hZCkKICAgICAgICAgLCBtX2FyZzJUYWcoYXJnMlRh
ZykKQEAgLTUwMCw2ICs1MDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlv
bihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxv
YWRHUFIsIGFyZzJUYWdHUFIsIGFyZzJQYXlsb2FkR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRp
b25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0UGF5
bG9hZEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICB9IGVsc2Ug
ewpAQCAtNTYwLDYgKzU2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
UGVlcGgKICAgICAgICAgCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFBh
eWxvYWRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RF
cUNlbGwsIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcy
VGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxs
KCk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CiAg
ICAgICAgIAogICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8g
OiBKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0UGF5bG9hZEdQUiwgdGFrZW4pOwpAQCAtNTY4
LDYgKzU3Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKIAog
ICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdFBheWxvYWRH
UFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9hZEdQ
Uik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIHNpbGVudEZp
bGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIAogICAgICAgICBicmFu
Y2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVy
bywgcmVzdWx0UGF5bG9hZEdQUiwgdGFrZW4pOwpAQCAtNjA0LDYgKzYwOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgCiAgICAgICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFU
YWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7CisgICAg
ICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5hbmRQdHIo
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMigxKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC02MTUs
NiArNjIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAg
ICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdFBheWxvYWRHUFIs
IGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9hZEdQUik7
CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CisgICAg
ICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5h
bmRQdHIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMigxKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAg
ICAgfQpAQCAtNzAwLDYgKzcwNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5v
ZGUqIG5vZGUKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CiAgICAgICAgICAgICBzbG93Q2FzZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpOworICAgICAg
ICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIG1faml0LmFib3J0
V2l0aFJlYXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAgICAg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICByZXN1bHRHUFIgPSBzY3JhdGNoR1BS
MjsKQEAgLTczMiw2ICs3NDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlCiAgICAgICAgICAgICAvLyBSaWdodCBub3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1bWVu
dHNUYWdHUFIvYXJndW1lbnRzUGF5bG9hZEdQUiBhbmQgdGhlIHJlZ2lzdGVyIGZpbGUgaXMKICAg
ICAgICAgICAgIC8vIGZsdXNoZWQuCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blNpemVGcmFtZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudHNU
YWdHUFIsIGFyZ3VtZW50c1BheWxvYWRHUFIsIG51bVVzZWRTdGFja1Nsb3RzLCBkYXRhLT5maXJz
dFZhckFyZ09mZnNldCk7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBOb3cgd2UgaGF2ZSB0aGUgYXJndW1lbnQgY291
bnQgb2YgdGhlIGNhbGxlZSBmcmFtZSwgYnV0IHdlJ3ZlIGxvc3QgdGhlIGFyZ3VtZW50cyBvcGVy
YW5kLgogICAgICAgICAgICAgLy8gUmVjb25zdHJ1Y3QgdGhlIGFyZ3VtZW50cyBvcGVyYW5kIHdo
aWxlIHByZXNlcnZpbmcgdGhlIGNhbGxlZSBmcmFtZS4KQEAgLTc0MSw2ICs3NTAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBtX2ppdC5h
ZGRQdHIoVHJ1c3RlZEltbTMyKC0oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNiAqIHNpemVvZih2b2lkKikp
KSksIHNjcmF0Y2hHUFIxLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFyYXJn
c0ZyYW1lLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRjaEdQUjEsIGFyZ3VtZW50c1Rh
Z0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxs
KCk7CiAgICAgICAgICAgICByZXN1bHRHUFIgPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjsKICAg
ICAgICAgfQogICAgICAgICAgICAgCkBAIC0xNTM0LDcgKzE1NDQsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChOCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0
aGlzLCBvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0UGF5bG9hZEdQUiwg
YXJnMVRhZ0dQUiwKLSAgICAgICAgICAgICAgICBhcmcxUGF5bG9hZEdQUikpOworICAgICAgICAg
ICAgICAgIGFyZzFQYXlsb2FkR1BSLCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJl
bWVudDo6Q2hlY2tOb3ROZWVkZWQpKTsKICAgICAKICAgICAgICAgbV9qaXQueG9yMzIoVHJ1c3Rl
ZEltbTMyKDEpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1
bHRQYXlsb2FkR1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtMjA2
MCw2ICsyMDcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVz
dWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBvcDFUYWdHUFIsIG9wMVBheWxvYWRH
UFIsIG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGQsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0
UGF5bG9hZC5ncHIoKSwgb3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSLCBvcDJUYWdHUFIsIG9wMlBh
eWxvYWRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3By
KCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTIzNjIsNiArMjM3Myw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25HZXRCeVZhbENlbGwsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwg
YmFzZUdQUiwgcHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UGF5bG9hZEdQUik7CisgICAgICAgICAg
ICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTI2MjksNiArMjY0MSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0Q2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbE5vblN0cmljdCwgYmFz
ZUdQUiwgcHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UGF5bG9hZEdQUiwgdmFsdWVUYWdHUFIsIHZh
bHVlUGF5bG9hZEdQUik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBvcGVyYXRpb25QdXRC
eVZhbENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJpY3QsIGJhc2VHUFIs
IHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVBheWxvYWRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVBh
eWxvYWRHUFIpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgICAgICBhbHJlYWR5
SGFuZGxlZCA9IHRydWU7CkBAIC0yNzgyLDYgKzI3OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIs
IGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE11c3QgdXNlIGpzVmFsdWVSZXN1bHQgYmVjYXVz
ZSBvdGhlcndpc2Ugd2Ugc2NyZXcgdXAgcmVnaXN0ZXIKICAgICAgICAgICAgIC8vIGFsbG9jYXRp
b24sIHdoaWNoIHRoaW5rcyB0aGF0IHRoaXMgbm9kZSBoYXMgYSByZXN1bHQuCkBAIC0yNzk4LDYg
KzI4MTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CiAgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uUmVnRXhwRXhlYywgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdw
cigpLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJD
YWxsKCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZy5ncHIoKSwg
cmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjgxMiw2ICsy
ODI3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdCwgcmVzdWx0
LmdwcigpLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0
ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICAvLyBJZiB3ZSBhZGQgYSBEYXRhRm9ybWF0Qm9v
bCwgd2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgogICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CkBAIC0zMjMyLDYgKzMyNDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgQVNTRVJUKG9wID09IENhbGxTdHJp
bmdDb25zdHJ1Y3Rvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
YWxsU3RyaW5nQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwgb3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BS
KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7
CiAgICAgICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQogICAgICAgICAgICAgICAgIGRvbmUubGlu
aygmbV9qaXQpOwogICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAt
MzMyNiw2ICszMzQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdFbXB0eUFy
cmF5LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgICAg
ICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0MDMs
NiArMzQyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1
bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwKICAgICAgICAgICAgIHN0YXRpY19j
YXN0PHZvaWQqPihidWZmZXIpLCBub2RlLT5udW1DaGlsZHJlbigpKTsKKyAgICAgICAgY2hlY2tF
eGNlcHRpb25BZnRlckNhbGwoKTsKIAogICAgICAgICBpZiAoc2NyYXRjaFNpemUpIHsKICAgICAg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwpAQCAtMzQ4Myw2ICszNTAyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBkb25lLmxp
bmsoJm1faml0KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgIG9wZXJhdGlv
bk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgc3RydWN0dXJlR1BSLCBzaXplR1BSKTsKKyAg
ICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zNTI4LDYgKzM1NDgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgCiAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0
LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5k
ZXhpbmdUeXBlKCkpLCBub2RlLT5zdGFydENvbnN0YW50KCksIG5vZGUtPm51bUNvbnN0YW50cygp
KTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAg
IGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNTUz
LDYgKzM1NzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhPbmVBcmd1bWVudEZvclR5
cGUobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCiAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBn
bG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmUobm9kZS0+dHlwZWRBcnJheVR5cGUoKSks
CiAgICAgICAgICAgICAgICAgYXJndW1lbnRUYWdHUFIsIGFyZ3VtZW50UGF5bG9hZEdQUik7Cisg
ICAgICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTM1NzAsNiArMzU5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKICAg
ICAgICAgCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3UmVnZXhwLCByZXN1bHRU
YWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG1faml0LmNvZGVCbG9jaygpLT5yZWdleHAo
bm9kZS0+cmVnZXhwSW5kZXgoKSkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgp
OwogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IG1ha2UgdGhlIGNhbGxPcGVyYXRpb24gYWJv
dmUgZXhwbGljaXRseSByZXR1cm4gYSBjZWxsIHJlc3VsdCwgb3Igaml0QXNzZXJ0IHRoZSB0YWcg
aXMgYSBjZWxsIHRhZy4KICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRQYXlsb2FkLmdwcigpLCBu
b2RlKTsKQEAgLTQyNjMsNiArNDI4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25TaXplT2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgYXJndW1lbnRz
VGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BSLCBkYXRhLT5vZmZzZXQpOworICAgICAgICBjaGVj
a0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAKICAgICAgICAgbG9jayhHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgIHsKQEAgLTQyOTIsNiArNDMxNiw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQuc3RvcmUzMihh
cmdDb3VudEluY2x1ZGluZ1RoaXNHUFIsIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKGRhdGEtPm1h
Y2hpbmVDb3VudCkpOwogICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25M
b2FkVmFyYXJncywgZGF0YS0+bWFjaGluZVN0YXJ0Lm9mZnNldCgpLCBhcmd1bWVudHNUYWdHUFIs
IGFyZ3VtZW50c1BheWxvYWRHUFIsIGRhdGEtPm9mZnNldCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIsIGRhdGEtPm1hbmRhdG9yeU1pbmltdW0pOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVy
Q2FsbCgpOwogICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtNDM2Niw2ICs0MzkxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5LCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCBwcm9wZXJ0eS5ncHIoKSk7CisgICAg
ICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIGJvb2xlYW5SZXN1bHQocmVz
dWx0UGF5bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQ0ODYsNiAr
NDUxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbENlbGwsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5
bG9hZEdQUiwgYmFzZUdQUiwgc2NyYXRjaEdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICBjaGVj
a0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogI2Vsc2UKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dFBheWxvYWQodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7CkBA
IC00NTQ5LDYgKzQ1NzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IsIHJlc3VsdEdQUiwgYmFzZS5ncHIoKSk7Cisg
ICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDU5Miw2ICs0NjIwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9JbmRleFN0
cmluZywgcmVzdWx0R1BSLCBpbmRleC5ncHIoKSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0
ZXJDYWxsKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxODg1MDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjcsNiArMzY3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAog
ICAgIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKGhl
bHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIGFyZzFHUFIsIGFyZzJHUFIpOworICAgICAgICBjaGVj
a0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogCiAgICAgICAgIGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0
Q29uZGl0aW9uLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9IGVsc2UgewpAQCAtMzkxLDYgKzM5
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAg
ICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIGFyZzFHUFIsIGFyZzJHUFIpOwog
ICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworICAgICAgICAg
ICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgICAgICBicmFu
Y2hUZXN0MzIoY2FsbFJlc3VsdENvbmRpdGlvbiwgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAgICAg
IH0KQEAgLTQxMCw3ICs0MTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIEp1bXBUeXBlIGZyb20sIFNw
ZWN1bGF0aXZlSklUKiBqaXQsCiAgICAgICAgIFNfSklUT3BlcmF0aW9uX0VKSiBmdW5jdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgICAgICA6IENhbGxT
bG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgU19KSVRPcGVyYXRpb25fRUpKLCBHUFJSZWc+KAot
ICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgTmVlZFRvU3BpbGwsIHJlc3VsdCkKKyAg
ICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVj
a1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwgcmVzdWx0KQogICAgICAgICAsIG1fYXJnMShhcmcx
KQogICAgICAgICAsIG1fYXJnMihhcmcyKQogICAgIHsKQEAgLTQ1MCw2ICs0NTIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgCiAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3Vs
dEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxs
KCk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNl
KSwgcmVzdWx0R1BSKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY3VycmVu
dE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4sIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
CkBAIC01MTAsNiArNTEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQ
ZWVwaAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQUiwg
YXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0
R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAg
ICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVy
OjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9IGVsc2UgewpAQCAtNTM2LDYgKzU0
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7
CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgY2hl
Y2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihp
bnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRH
UFIsIHRha2VuKTsKICAgICB9CkBAIC01NzEsNiArNTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RF
cUNlbGwsIHJlc3VsdEdQUiwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxB
bGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwo
KTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmFuZDY0KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
MzIoMSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0Lm9yMzIoSklUQ29tcGlsZXI6OlRydXN0
ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKQEAgLTY4Niw2ICs2OTIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAgICAgc2xvd0Nhc2UubGlu
aygmbV9qaXQpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YWNr
T3ZlcmZsb3dGb3JWYXJhcmdzKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxs
KCk7CiAgICAgICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJnc1Rocm93aW5n
UGF0aERpZE5vdFRocm93KTsKICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAg
ICAgICAgcmVzdWx0R1BSID0gc2NyYXRjaEdQUjI7CkBAIC03MTUsNiArNzIyLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBSaWdodCBub3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1bWVudHNHUFIgYW5kIHRoZSBy
ZWdpc3RlciBmaWxlIGlzIGZsdXNoZWQuCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBhcmd1bWVu
dHNHUFIsIG51bVVzZWRTdGFja1Nsb3RzLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCk7CisgICAg
ICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBOb3cgd2UgaGF2ZSB0aGUgYXJndW1lbnQgY291bnQgb2YgdGhlIGNhbGxlZSBmcmFt
ZSwgYnV0IHdlJ3ZlIGxvc3QgdGhlIGFyZ3VtZW50cyBvcGVyYW5kLgogICAgICAgICAgICAgLy8g
UmVjb25zdHJ1Y3QgdGhlIGFyZ3VtZW50cyBvcGVyYW5kIHdoaWxlIHByZXNlcnZpbmcgdGhlIGNh
bGxlZSBmcmFtZS4KQEAgLTcyNCw2ICs3MzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKC0o
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNr
QWxpZ25tZW50Qnl0ZXMoKSwgNSAqIHNpemVvZih2b2lkKikpKSksIHNjcmF0Y2hHUFIxLCBKSVRD
b21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwgc2NyYXRjaEdQUjEsIGFyZ3VtZW50c0dQUiwgZGF0YS0+Zmlyc3RWYXJBcmdP
ZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0
aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgICAgICByZXN1bHRHUFIgPSBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE2ODYsNyArMTY5NSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8s
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSkpOwogICAg
IAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29udmVydEpTVmFsdWVUb0Jvb2xlYW4sIHJlc3Vs
dEdQUiwgYXJnMUdQUikpOworICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlz
LCBvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBO
ZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOb3ROZWVkZWQpKTsK
ICAgICAKICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMy
X3Q+KFZhbHVlVHJ1ZSkpLCByZXN1bHRHUFIpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbiwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKQEAgLTIxOTksNiArMjIwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGRO
b3ROdW1iZXIsIHJlc3VsdC5ncHIoKSwgb3AxR1BSLCBvcDJHUFIpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkLCByZXN1bHQuZ3ByKCks
IG9wMUdQUiwgb3AyR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAg
ICAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0yNDg2LDYgKzI0OTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbCwgcmVzdWx0LmdwcigpLCBiYXNlR1BSLCBwcm9wZXJ0
eUdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTI3MDUsNiArMjcxNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0
LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlW
YWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgYXJnMUdQ
UiwgYXJnMkdQUiwgYXJnM0dQUik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSA/IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3Qs
IGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNHUFIpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb25B
ZnRlckNhbGwoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAg
ICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7CkBAIC0yOTE2LDYgKzI5MjgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1
bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0
aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE11c3QgdXNlIGpz
VmFsdWVSZXN1bHQgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugc2NyZXcgdXAgcmVnaXN0ZXIKICAgICAg
ICAgICAgIC8vIGFsbG9jYXRpb24sIHdoaWNoIHRoaW5rcyB0aGF0IHRoaXMgbm9kZSBoYXMgYSBy
ZXN1bHQuCkBAIC0yOTMxLDYgKzI5NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25SZWdFeHBFeGVjLCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAg
ICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0yOTQ1LDYgKzI5
NTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQu
Z3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRl
ckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29s
LCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCiAgICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMy
KFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMzI4Niw2ICszMzAxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEFTU0VS
VChvcCA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOwogICAgICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIsIG9wMUdQUik7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
ICAgICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBkb25lLmxpbmso
Jm1faml0KTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTMz
NzgsNiArMzM5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0VtcHR5QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsK
KyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgICAgICBjZWxs
UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtMzQ2MCw2ICszNDc3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9uTmV3
QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpLAogICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8dm9pZCo+KGJ1ZmZlciksIG5vZGUtPm51bUNoaWxkcmVuKCkpOworICAg
ICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogCiAgICAgICAgIGlmIChzY3JhdGNoU2l6
ZSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0zNTM3LDYg
KzM1NTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSwg
c3RydWN0dXJlR1BSKTsKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmVH
UFIsIHNpemVHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTM1ODAsNiArMzU5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAK
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0Lmdw
cigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwgbm9k
ZS0+bnVtQ29uc3RhbnRzKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
ICAgICAgICAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAg
ICBicmVhazsKQEAgLTM2MDQsNiArMzYyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0
aE9uZUFyZ3VtZW50Rm9yVHlwZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKICAgICAgICAgICAg
ICAgICByZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZShub2RlLT50
eXBlZEFycmF5VHlwZSgpKSwKICAgICAgICAgICAgICAgICBhcmd1bWVudEdQUik7CisgICAgICAg
ICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM2
MjAsNiArMzY0MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAKICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHAsIHJlc3VsdC5ncHIoKSwgbV9q
aXQuY29kZUJsb2NrKCktPnJlZ2V4cChub2RlLT5yZWdleHBJbmRleCgpKSk7CisgICAgICAgIGNo
ZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDI2OSw2ICs0MjkxLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVPZlZhcmFyZ3MsIEdQUklu
Zm86OnJldHVyblZhbHVlR1BSLCBhcmd1bWVudHNHUFIsIGRhdGEtPm9mZnNldCk7CisgICAgICAg
IGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICBsb2NrKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgewpAQCAtNDI5Nyw2ICs0MzIwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC5zdG9y
ZTMyKGFyZ0NvdW50SW5jbHVkaW5nVGhpc0dQUiwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoZGF0
YS0+bWFjaGluZUNvdW50KSk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkxvYWRWYXJhcmdzLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCksIGFyZ3VtZW50c0dQ
UiwgZGF0YS0+b2Zmc2V0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgZGF0YS0+bWFuZGF0b3J5
TWluaW11bSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAog
ICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00NDA4LDYgKzQ0MzIs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5l
cmljUHJvcGVydHksIHJlc3VsdEdQUiwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCkpOworICAg
ICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KQEAgLTQ1NzUsNiArNDYwMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciwgcmVzdWx0R1BSLCBiYXNlLmdwcigp
KTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00NjE0LDYgKzQ2
NDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0lu
ZGV4U3RyaW5nLCByZXN1bHRHUFIsIGluZGV4LmdwcigpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRp
b25BZnRlckNhbGwoKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAg
ICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTg4NTA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5
Miw2ICs5OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW4oTm9kZSogbm9kCiAg
ICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgb3BlcmF0aW9uR2VuZXJpY0luLCBleHRyYWN0UmVz
dWx0KEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZXN1bHRHUFIpKSwKICAgICAgICAgYmFzZUdQ
UiwgcmVncyk7CisgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICBibGVzc2VkQm9v
bGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
CiB9CiAKQEAgLTE5ODYsNiArMTk4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVW
YWx1ZVRvSW50MzIKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdw
cik7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKHRvSW50MzIsIHJlc3VsdEdwciwgZnByKTsK
ICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R3ByKTsKKyAgICAgICAg
ICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAKICAgICAgICAgICAgIGNvbnZlcnRlZC5h
cHBlbmQobV9qaXQuanVtcCgpKTsKIApAQCAtMjA0NSw2ICsyMDQ3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgICAgICAgICAgICAgIHNpbGVudFNwaWxs
QWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7CiAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbih0
b0ludDMyLCByZXN1bHRHcHIsIGZwcik7CiAgICAgICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJl
Z2lzdGVycyhyZXN1bHRHcHIpOworICAgICAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJD
YWxsKCk7CiAKICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQuYXBwZW5kKG1faml0Lmp1bXAoKSk7
CiAKQEAgLTM3MTcsNiArMzcyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0
aFJvdW5kKE4KICAgICBGUFJSZXN1bHQgcm91bmRlZFJlc3VsdEFzRG91YmxlKHRoaXMpOwogICAg
IEZQUlJlZyByZXN1bHRGUFIgPSByb3VuZGVkUmVzdWx0QXNEb3VibGUuZnByKCk7CiAgICAgY2Fs
bE9wZXJhdGlvbihqc1JvdW5kLCByZXN1bHRGUFIsIHZhbHVlRlBSKTsKKyAgICBjaGVja0V4Y2Vw
dGlvbkFmdGVyQ2FsbCgpOwogICAgIGlmIChwcm9kdWNlc0ludGVnZXIobm9kZS0+YXJpdGhSb3Vu
ZGluZ01vZGUoKSkpIHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJvdW5kZWRSZXN1bHRBc0ludDMy
KHRoaXMpOwogICAgICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTQ2MTksNiAr
NDYyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbigKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0Z1bmN0aW9uLCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKTsKKyAgICAgICAgY2hl
Y2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDc0NCw2ICs0NzQ5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFjdGl2YQogICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QsCiAgICAgICAgICAgICByZXN1bHRHUFIs
IHN0cnVjdHVyZSwgc2NvcGVHUFIsIHRhYmxlLCBUcnVzdGVkSW1tMzIoaW5pdGlhbGl6YXRpb25W
YWx1ZS50YWcoKSksIFRydXN0ZWRJbW0zMihpbml0aWFsaXphdGlvblZhbHVlLnBheWxvYWQoKSkp
OwogI2VuZGlmCisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ5
OTQsNyArNTAwMCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWQK
ICAgICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0
R1BSKSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGRlc3RHUFIpOyB9
KTsKICAgICAKLSAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBj
aGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKIH0KQEAgLTUwMjEsNyArNTAyOCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDcmVhdGVDbG9uZWQKICAgICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgw
LCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIGRlc3RHUFIpOyB9KTsKICAgICAKLSAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsK
KyAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywg
cmVzdWx0R1BSKTsKKyAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgIAogICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTUwMzYsNyArNTA0NCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3RpZnlXcml0ZSgKICAgICAgICAgVHJ1c3RlZEltbTMy
KElzSW52YWxpZGF0ZWQpKTsKICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAg
ICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25Ob3RpZnlXcml0ZSwgTm9S
ZXN1bHQsIHNldCkpOworICAgICAgICBzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJh
dGlvbk5vdGlmeVdyaXRlLCBOb1Jlc3VsdCwgc2V0LCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hl
Y2tSZXF1aXJlbWVudDo6Q2hlY2tOb3ROZWVkZWQpKTsKICAgICAKICAgICBub1Jlc3VsdChub2Rl
KTsKIH0KQEAgLTUwNjgsNiArNTA3Niw3IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVS
ZWdFeHBFeGVjKE4KICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3Qs
IHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgIGNoZWNrRXhjZXB0aW9u
QWZ0ZXJDYWxsKCk7CiAKICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olpl
cm8gOiBKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0LmdwcigpLCB0YWtlbik7CiAgICAganVt
cChub3RUYWtlbik7CkBAIC01MjAzLDYgKzUyMTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQWxsb2NhdGVQcm9wCiAKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJm
bHlUb0hhdmVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5LCByZXN1bHQuZ3ByKCks
IGJhc2VHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAK
ICAgICAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICByZXR1
cm47CkBAIC01MjQ2LDYgKzUyNTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVh
bGxvY2F0ZVByCiAKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0dyb3dQ
cm9wZXJ0eVN0b3JhZ2UsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgbmV3U2l6ZSAvIHNpemVvZihK
U1ZhbHVlKSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAKICAgICAgICAg
c3RvcmFnZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC01
MzUzLDYgKzUzNjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNh
CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3Ip
OwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0
b3JPbkNlbGwsIHJlc3VsdEdQUiwgb3AxR1BSKTsKICAgICAgICAgfQorICAgICAgICBjaGVja0V4
Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQogICAgICAgICAg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKQEAgLTU5NzIsNiArNTk4NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJ
bW0oTm9kZSoKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7CiAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwg
c2NyYXRjaCwgdmFsdWVSZWdzLCBkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KTsKICAgICAgICAgc2ls
ZW50RmlsbEFsbFJlZ2lzdGVycyhzY3JhdGNoKTsKKwogICAgICAgICBtX2ppdC5qdW1wKHNjcmF0
Y2gpOwogI2VuZGlmCiAgICAgICAgIG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhw
bGljaXRseSk7CkBAIC02MjMxLDYgKzYyNDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
U3dpdGNoU3RyaW5nT25TCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxP
cGVyYXRpb24oCiAgICAgICAgICAgICBvcGVyYXRpb25Td2l0Y2hTdHJpbmcsIHN0cmluZywgZGF0
YS0+c3dpdGNoVGFibGVJbmRleCwgc3RyaW5nKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRl
ckNhbGwoKTsKICAgICAgICAgbV9qaXQuanVtcChzdHJpbmcpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNjI2OCw2ICs2MjgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRj
aFN0cmluZ09uUwogICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHN0cmluZyk7CiAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJpbmcsIHN0cmluZywgZGF0YS0+c3dpdGNoVGFi
bGVJbmRleCwgc3RyaW5nKTsKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHN0cmluZyk7Cisg
ICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICBtX2ppdC5qdW1wKHN0cmluZyk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHJldmlzaW9uIDE4ODUwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtODg3LDIzOSArODg3LDIzOSBAQCBwdWJs
aWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
IG9wZXJhdGlvbikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRl
KCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
bik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNT
dGF0ZSgpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGNlbGwpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FTyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBvYmplY3QpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUob2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRU9TIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIG9iamVjdCwgc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUob2JqZWN0LCBUcnVzdGVkSW1tUHRyKHNpemUp
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oUF9KSVRPcGVyYXRpb25fRU9aIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IG9iamVjdCwgaW50MzJfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKG9iamVjdCwgVHJ1c3RlZEltbVB0cihzaXplKSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3Bl
cmF0aW9uX0VPWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvYmplY3QsIGludDMy
X3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShvYmplY3QsIFRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSkpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQ
X0pJVE9wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgb2xkLCBz
aXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShvbGQsIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJ
VE9wZXJhdGlvbl9FU0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIHNpemVfdCBpbmRleCwg
R1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihpbmRleCksIGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3Qg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
YXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVz
dGVkSW1tMzIoYXJnMikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlv
bl9FU3RQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB2
b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1Q
dHIocG9pbnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RT
UyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qg
aW5kZXgsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihpbmRl
eCksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0
YXRlKCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
SlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENf
SklUT3BlcmF0aW9uX0VDWkMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9F
SnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
VHJ1c3RlZEltbVB0cihjZWxsKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VJY2Ygb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGlu
bGluZUNhbGxGcmFtZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0SnNjU3ltdGFiSiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc2NvcGUsIFN5bWJv
bFRhYmxlKiB0YWJsZSwgVHJ1c3RlZEltbTY0IGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSksIHNjb3BlLCBUcnVzdGVkSW1tUHRyKHRhYmxlKSwgaW5pdGlhbFZhbHVlKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogI2Vsc2UKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KENfSklUT3BlcmF0aW9uX0VTdEpzY1N5bXRhYkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIFRy
dXN0ZWRJbW0zMiB0YWcsIFRydXN0ZWRJbW0zMiBwYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
c2NvcGUsIFRydXN0ZWRJbW1QdHIodGFibGUpLCBwYXlsb2FkLCB0YWcpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAjZW5kaWYKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENf
SklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVk
SW1tMzIoa25vd25MZW5ndGgpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgs
IHVuc2lnbmVkIG1pbkNhcGFjaXR5KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbTMyKGtu
b3duTGVuZ3RoKSwgVHJ1c3RlZEltbTMyKG1pbkNhcGFjaXR5KSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9u
X0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BS
UmVnIGxlbmd0aCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9u
X0VTdFpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQ
UlJlZyBsZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5KQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgbGVu
Z3RoLCBUcnVzdGVkSW1tMzIobWluQ2FwYWNpdHkpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzc1N0
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc3NKc3Mg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKENfSklUT3BlcmF0aW9uX0VKc3NKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNf
SklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FR0Mgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYXJnMikKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKGdsb2JhbE9iamVjdCksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VHQyBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBh
cmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
IAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSnNzX0pJVE9wZXJhdGlvbl9F
WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEpTQ2VsbCogYXJnMSkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFyZzEp
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9u
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDSWNmIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRUNDSWNmIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGlubGlu
ZUNhbGxGcmFtZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAg
IH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25f
RUNaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIGludCBhcmcyKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihhcmcyKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGFyZzIp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
VHJ1c3RlZEltbVB0cihhcmcyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlv
bik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRUNDIG9wZXJhdGlvbiwgSlNDZWxsKiBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFy
ZzEpLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9
CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxi
YWNrT25FeGNlcHRpb24oVl9KSVRPcGVyYXRpb25fRUNiIG9wZXJhdGlvbiwgdm9pZCogcG9pbnRl
cikKQEAgLTExMzYsNyArMTEzNiw3IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0aW9uVHlwZT4KQEAgLTExODgsMjggKzExODgsMjggQEAgcHVibGljOgogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVF9KSVRPcGVyYXRpb25fRUpzcyBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjWiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBpbnQzMl90IGFyZzIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3Rl
ZEltbTMyKGFyZzIpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBpbnQzMl90IGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
SnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
VHJ1c3RlZEltbVB0cihjZWxsKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVdzIG9wZXJhdGlvbiwg
V2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCkKQEAgLTEyMjIsMTIgKzEyMjIsMTIgQEAgcHVi
bGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0
aW9uX0Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSkKICAgICB7CkBAIC0x
MjQ5LDEwMiArMTI0OSwxMDIgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VB
WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzc1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUyBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIHZvaWQqIHBvaW50ZXIsIHNpemVfdCBzaXplKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9p
bnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU1Mgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQgc3RhcnRDb25zdGFudCwgaW50IG51bUNvbnN0YW50cykK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tMzIoc3RhcnRDb25zdGFudCksIFRydXN0ZWRJbW0zMihudW1Db25zdGFudHMpKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIHZv
aWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VD
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lDSSBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEs
IGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRy
dXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1Q
dHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VEQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpDIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKQSBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgaW50MzJfdCBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzIpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FWkljZlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEs
IElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcgYXJnMikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJn
MSksIFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgYXJnMik7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVy
YXRpb25fRUpTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBzaXplX3Qg
aW5kZXgpCkBAIC0xMzU2LDI4ICsxMzU2LDI4IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdEogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSkpDIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oQ19KSVRPcGVyYXRpb25fRUpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSlpDIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxKQogICAgIHsKQEAgLTEzODcsMTIyICsxMzg3LDEyMiBAQCBwdWJsaWM6CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9F
Skogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
Mik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0ubV92YWx1ZSkpKSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIgaW1tLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihpbW0ubV92YWx1ZSkpKSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ0ogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLmdw
cigpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1pEIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKUFAgb3BlcmF0aW9uLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0cihwb2ludGVy
KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
bik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGVy
YXRpb24sIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBhcmcy
LCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VKSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VQWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhv
cGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0K
IAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9a
SiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNKSiBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24s
IEZQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VKWlogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgdW5zaWduZWQgYXJnMiwgdW5zaWdu
ZWQgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJnMiksIFRydXN0ZWRJbW0zMihhcmczKSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklU
T3BlcmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCB1bnNpZ25lZCBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tMzIo
YXJnMyksIGFyZzQpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgdW5zaWduZWQgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihW
X0pJVE9wZXJhdGlvbl9FWkpaWlogb3BlcmF0aW9uLCB1bnNpZ25lZCBhcmcxLCBHUFJSZWcgYXJn
MiwgdW5zaWduZWQgYXJnMywgR1BSUmVnIGFyZzQsIHVuc2lnbmVkIGFyZzUpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEp
LCBhcmcyLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQsIFRydXN0ZWRJbW0zMihhcmc1KSk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogI2Vsc2UgLy8gVVNF
KEpTVkFMVUUzMl82NCkKIApAQCAtMTUzNCwxNDMgKzE1MzQsMTQzIEBAIHB1YmxpYzoKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0Ugb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCkKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVy
KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VQUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBH
UFJSZWcgYXJnMSwgdm9pZCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VJ
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCBy
ZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5
bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBWiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyByZXN1bHRU
YWcsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FSkMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFy
ZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFC
SV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNzWiBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIp
LCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBh
eWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRVNTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BS
UmVnIHJlc3VsdFBheWxvYWQsIGludCBzdGFydENvbnN0YW50LCBpbnQgbnVtQ29uc3RhbnRzKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW0zMihzdGFydENvbnN0YW50KSwgVHJ1c3RlZEltbTMyKG51bUNvbnN0YW50cykpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSlAgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFU
YWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgdm9pZCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcx
UGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKUCBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BS
UmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwg
YXJnMVRhZywgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCBy
ZXN1bHRUYWcpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBh
eWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0
VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQ
YXlsb2FkLCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3Np
Q0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgY29uc3QgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNz
aUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5
bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMVBheWxv
YWQsIGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIGludDMyX3QgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzFU
YWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FREEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlf
QVJHIGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFy
ZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFC
SV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgVHJ1c3RlZEltbTMyIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
MVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJC
SVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGludDMyX3QgYXJnMSkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIo
YXJnMSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FWkljZlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgaW50MzJfdCBhcmcxLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BS
UmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbTMyKGFyZzEpLCBUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSksIGFy
ZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwg
aW50MzJfdCBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzIpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUyBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIEpTVmFsdWVSZWdzIHZhbHVlLCBzaXplX3QgaW5kZXgpCkBAIC0x
NjgyLDEzNyArMTY4MiwxMzIgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0
aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBh
cmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKLSAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJ
VE9wZXJhdGlvbl9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQ
UlJlZyBhcmcxUGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKGFy
ZzFQYXlsb2FkLCBhcmcxVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwg
YXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQ
UlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0
XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBH
UFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVn
IGFyZzJQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJC
SVRfRFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJn
MVBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGltbSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSwgR1BS
UmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxv
YWQsIGFyZzJUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVz
dWx0VGFnKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1
bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9h
ZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQ
YXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNK
IG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3Mg
YXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBh
eWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9aRCBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSiBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMVBheWxvYWQsIGFyZzFUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRUpQUCBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxv
YWQsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2ludGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2Fk
LCBhcmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJS
ZWcgYXJnMlBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyks
IGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VDSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJU
YWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9h
ZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBh
cmczVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3Bl
cmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPWkog
b3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJS
ZWcgYXJnM1BheWxvYWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgU0g0XzMyQklUX0RVTU1Z
X0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRU9aSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1
c3RlZEltbTMyIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RV
TU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgRlBSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIHVu
c2lnbmVkIGFyZzIsIHVuc2lnbmVkIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgIGFyZzFQYXlsb2FkLCBh
cmcxVGFnLCBUcnVzdGVkSW1tMzIoYXJnMiksIFRydXN0ZWRJbW0zMihhcmczKSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklU
T3BlcmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIHVuc2lnbmVkIGFyZzMsIEdQUlJlZyBh
cmc0KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbiha
X0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRh
ZywgR1BSUmVnIGFyZzFQYXlsb2FkLCB1bnNpZ25lZCBhcmcyKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQ
YXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
WkpaWlogb3BlcmF0aW9uLCB1bnNpZ25lZCBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFy
ZzJQYXlsb2FkLCB1bnNpZ25lZCBhcmczLCBHUFJSZWcgYXJnNCwgdW5zaWduZWQgYXJnNSkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIoYXJnMSksIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQs
IFRydXN0ZWRJbW0zMihhcmc1KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlv
bik7CiAgICAgfQogI3VuZGVmIEVBQklfMzJCSVRfRFVNTVlfQVJHCiAjdW5kZWYgU0g0XzMyQklU
X0RVTU1ZX0FSRwpAQCAtMTg4NCwyOCArMTg3OSwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVw
YXJlRm9yRXh0ZXJuYWxDYWxsKCkgeyB9CiAjZW5kaWYKIAotICAgIC8vIFRoZXNlIG1ldGhvZHMg
YWRkIGNhbGwgaW5zdHJ1Y3Rpb25zLCB3aXRoIG9wdGlvbmFsIGV4Y2VwdGlvbiBjaGVja3MgJiBz
ZXR0aW5nIHJlc3VsdHMuCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCisgICAgdm9pZCBjaGVja0V4
Y2VwdGlvbkFmdGVyQ2FsbCgpCiAgICAgewotICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxs
KCk7Ci0gICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKLSAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFw
cGVuZENhbGwoZnVuY3Rpb24pOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAg
ICAgICByZXR1cm4gY2FsbDsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2Fs
bFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5j
dGlvbikKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxsIGluc3RydWN0aW9ucywgd2l0aCBv
cHRpb25hbCBleGNlcHRpb24gY2hlY2tzICYgc2V0dGluZyByZXN1bHRzLgorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uKQogICAgIHsK
ICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwogICAgICAgICBtX2ppdC5lbWl0U3Rv
cmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKLSAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2tXaXRoQ2FsbEZyYW1lUm9sbGJhY2soKTsKLSAgICAgICAg
cmV0dXJuIGNhbGw7CisgICAgICAgIHJldHVybiBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsK
ICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCisg
ICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhj
ZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKICAgICB7Ci0gICAgICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9u
KTsKLSAgICAgICAgaWYgKChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykgJiYgKHJlc3VsdCAhPSBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpCi0gICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86
OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOworICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
ID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrV2l0
aENhbGxGcmFtZVJvbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRp
b25TZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQpA
QCAtMTkxNywzNSArMTkwNSwxOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJS
ZWcgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwotICAg
ICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxs
KGZ1bmN0aW9uKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwo
ZnVuY3Rpb24pOwogICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAg
ICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOwogICAgICAg
ICByZXR1cm4gY2FsbDsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbChj
b25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCi0gICAgewotICAgICAgICBwcmVwYXJlRm9yRXh0
ZXJuYWxDYWxsKCk7Ci0gICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50
Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwo
ZnVuY3Rpb24pOwotICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgR1BSUmVn
IHJlc3VsdDEsIEdQUlJlZyByZXN1bHQyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENh
bGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0MSwg
R1BSUmVnIHJlc3VsdDIpCiAgICAgewotICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisgICAgICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICAgICAgbV9qaXQuc2V0
dXBSZXN1bHRzKHJlc3VsdDEsIHJlc3VsdDIpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9
CiAjaWYgQ1BVKFg4NikKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJl
c3VsdCkKLSAgICB7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZh
bGlkRlBSUmVnKSB7Ci0gICAgICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS5mc3RwbCgwLCBKSVRD
b21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgbV9qaXQubG9hZERv
dWJsZShKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJlc3VsdCk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIGNhbGw7Ci0gICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFw
cGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVz
dWx0KQogICAgIHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwo
ZnVuY3Rpb24pOwpAQCAtMTk1NiwxMyArMTkyNyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGNhbGw7CiAgICAgfQogI2VsaWYgQ1BVKEFSTSkgJiYgIUNQVShBUk1fSEFSREZQKQotICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29u
c3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0KQotICAgIHsKLSAgICAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVu
Y3Rpb24pOwotICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRGUFJSZWcpCi0gICAgICAgICAg
ICBtX2ppdC5hc3NlbWJsZXIoKS52bW92KHJlc3VsdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIs
IEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9u
UHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKQEAgLTE5NzEsMTMgKzE5MzUsNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KICNlbHNlIC8vIENQVShYODZf
NjQpIHx8IChDUFUoQVJNKSAmJiBDUFUoQVJNX0hBUkRGUCkpIHx8IENQVShBUk02NCkgfHwgQ1BV
KE1JUFMpIHx8IENQVShTSDQpCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEZQUlJl
ZyByZXN1bHQpCi0gICAgewotICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0g
SW52YWxpZEZQUlJlZykKLSAgICAgICAgICAgIG1faml0Lm1vdmVEb3VibGUoRlBSSW5mbzo6cmV0
dXJuVmFsdWVGUFIsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBm
dW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAxODg1MDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRlRMIHsKICAgICBtYWNybyhWX0pJVE9wZXJhdGlvbl9FWkpaWlosIGZ1bmN0aW9uVHlwZSh2
b2lkVHlwZSwgaW50UHRyLCBpbnQzMiwgaW50NjQsIGludDMyLCBpbnQzMiwgaW50MzIpKSBcCiAg
ICAgbWFjcm8oVl9KSVRPcGVyYXRpb25fSiwgZnVuY3Rpb25UeXBlKHZvaWRUeXBlLCBpbnQ2NCkp
IFwKICAgICBtYWNybyhWX0pJVE9wZXJhdGlvbl9aLCBmdW5jdGlvblR5cGUodm9pZFR5cGUsIGlu
dDMyKSkgXAorICAgIG1hY3JvKFZfSklUT3BlcmF0aW9uX0UsIGZ1bmN0aW9uVHlwZSh2b2lkVHlw
ZSwgaW50UHRyKSkgXAogICAgIG1hY3JvKFpfSklUT3BlcmF0aW9uX0QsIGZ1bmN0aW9uVHlwZShp
bnQzMiwgZG91YmxlVHlwZSkpIFwKICAgICBtYWNybyhaX0pJVE9wZXJhdGlvbl9FQywgZnVuY3Rp
b25UeXBlKGludDMyLCBpbnRQdHIsIGludFB0cikpIFwKICAgICBtYWNybyhaX0pJVE9wZXJhdGlv
bl9FR0MsIGZ1bmN0aW9uVHlwZShpbnQzMiwgaW50UHRyLCBpbnRQdHIsIGludFB0cikpIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CShyZXZpc2lvbiAxODg1MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk5OSw3ICs3OTk5LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNhbGxDaGVjaygpCiAgICAgewogICAgICAgICBpZiAoT3B0aW9uczo6ZW5h
YmxlRXhjZXB0aW9uRnV6eigpKQotICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eikpOworICAgICAgICAgICAgbV9vdXQuY2FsbChtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eiksIG1fY2FsbEZyYW1lKTsKICAgICAg
ICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9v
dXQsICgiRXhjZXB0aW9uIGNoZWNrIGNvbnRpbnVhdGlvbiIpKTsKICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lv
biAxODg1MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMSwxNSArMjAxLDQwIEBAIHZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjpjYWxsRXhjZXB0aW9uRnV6eigKICAgICBpZiAoIU9wdGlvbnM6OmVuYWJsZUV4Y2VwdGlv
bkZ1enooKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKHN0YWNrQWxpZ25tZW50Qnl0
ZXMoKSA+PSBzaXplb2Yodm9pZCopICogMik7Ci0gICAgc3ViUHRyKFRydXN0ZWRJbW0zMihzdGFj
a0FsaWdubWVudEJ5dGVzKCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgcG9rZShHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgMCk7Ci0gICAgcG9rZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
UjIsIDEpOworICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSB2bSgpLT5leGNlcHRpb25GdXp6
aW5nQnVmZmVyKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycykpOworCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICBzdG9yZTY0KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZl
ciArIGkpOworI2Vsc2UKKyAgICAgICAgc3RvcmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBi
dWZmZXIgKyBpKTsKKyNlbmRpZgorICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
RlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6
cmVnVDApOworICAgICAgICBzdG9yZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBBZGRy
ZXNzKEdQUkluZm86OnJlZ1QwKSk7CisgICAgfQorCisgICAgLy8gU2V0IHVwIG9uZSBhcmd1bWVu
dC4KKyNpZiBDUFUoWDg2KQorICAgIHBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDAp
OworI2Vsc2UKKyAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworI2VuZGlmCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2Fz
dDx2b2lkKj4ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eikpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWRO
b25SZXR1cm5HUFIpOwogICAgIGNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BS
KTsKLSAgICBwZWVrKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCAwKTsKLSAgICBwZWVrKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSMiwgMSk7Ci0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzdGFja0Fs
aWdubWVudEJ5dGVzKCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMg
KyBpKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBsb2FkRG91YmxlKEFkZHJlc3MoR1BSSW5m
bzo6cmVnVDApLCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICB9CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBsb2FkNjQoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdp
c3RlcihpKSk7CisjZWxzZQorICAgICAgICBsb2FkMzIoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9S
ZWdpc3RlcihpKSk7CisjZW5kaWYKKyAgICB9CiB9CiAKIEFzc2VtYmx5SGVscGVyczo6SnVtcCBB
c3NlbWJseUhlbHBlcnM6OmVtaXRFeGNlcHRpb25DaGVjayhFeGNlcHRpb25DaGVja0tpbmQga2lu
ZCwgRXhjZXB0aW9uSnVtcFdpZHRoIHdpZHRoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxODg1MDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODk4
LDEwICsxODk4LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25WTUhhbmRsZUV4Y2UK
IC8vIG91cnNlbHZlcyB0byBwbGF5IHNvbWUgZ25hcmx5IEFCSSB0cmlja3MganVzdCB0byBzaW1w
bGlmeSB0aGUgY2FsbGluZyBjb252ZW50aW9uLiBUaGlzIGlzCiAvLyBwYXJ0aWN1bGFybHkgc2Fm
ZSBoZXJlIHNpbmNlIHRoaXMgaXMgbmV2ZXIgY2FsbGVkIG9uIHRoZSBjcml0aWNhbCBwYXRoIC0g
aXQncyBvbmx5IGZvcgogLy8gdGVzdGluZy4KLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25F
eGNlcHRpb25GdXp6KCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25FeGNlcHRpb25GdXp6
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICNpZiBDT01QSUxFUihHQ0NfT1Jf
Q0xBTkcpCi0gICAgRXhlY1N0YXRlKiBleGVjID0gc3RhdGljX2Nhc3Q8RXhlY1N0YXRlKj4oX19i
dWlsdGluX2ZyYW1lX2FkZHJlc3MoMSkpOwogICAgIHZvaWQqIHJldHVyblBDID0gX19idWlsdGlu
X3JldHVybl9hZGRyZXNzKDApOwogICAgIGRvRXhjZXB0aW9uRnV6emluZyhleGVjLCAiSklUT3Bl
cmF0aW9ucyIsIHJldHVyblBDKTsKICNlbmRpZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24g
MTg4NTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uT1NSV3JpdGVCYXJyCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jbml0R2xvYmFs
Q29uc3QoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkV4Y2VwdGlvbkZ1enooKTsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25FeGNl
cHRpb25GdXp6KEV4ZWNTdGF0ZSopOwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlND
ZWxsKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eShFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE4ODUwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDYgKzM0MCw5IEBA
IFZNOjp+Vk0oKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzY3JhdGNoQnVmZmVycy5z
aXplKCk7ICsraSkKICAgICAgICAgZmFzdEZyZWUoc2NyYXRjaEJ1ZmZlcnNbaV0pOwogI2VuZGlm
CisKKyAgICBpZiAobV9leGNlcHRpb25GdXp6QnVmZmVyKQorICAgICAgICBmYXN0RnJlZShtX2V4
Y2VwdGlvbkZ1enpCdWZmZXIpOwogfQogCiBSZWY8Vk0+IFZNOjpjcmVhdGVDb250ZXh0R3JvdXAo
SGVhcFR5cGUgaGVhcFR5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDE4ODUwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAorICAgIEVuY29kZWRKU1ZhbHVlKiBleGNlcHRpb25GdXp6aW5nQnVm
ZmVyKHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKE9wdGlvbnM6OmVuYWJsZUV4
Y2VwdGlvbkZ1enooKSk7CisgICAgICAgIGlmICghbV9leGNlcHRpb25GdXp6QnVmZmVyKQorICAg
ICAgICAgICAgbV9leGNlcHRpb25GdXp6QnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFs
dWUqPihmYXN0TWFsbG9jKHNpemUpKTsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uRnV6ekJ1
ZmZlcjsKKyAgICB9CisKICAgICB2b2lkIGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZh
dGl2ZVJvb3RzJik7CiAKICAgICBWTUVudHJ5U2NvcGUqIGVudHJ5U2NvcGU7CkBAIC02MTMsNiAr
NjIxLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udHJvbEZsb3dQcm9maWxl
cj4gbV9jb250cm9sRmxvd1Byb2ZpbGVyOwogICAgIHVuc2lnbmVkIG1fY29udHJvbEZsb3dQcm9m
aWxlckVuYWJsZWRDb3VudDsKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4+
IG1fbWljcm90YXNrUXVldWU7CisgICAgRW5jb2RlZEpTVmFsdWUqIG1fZXhjZXB0aW9uRnV6ekJ1
ZmZlciB7IG51bGxwdHIgfTsKIH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259593</attachid>
            <date>2015-08-21 02:01:28 -0700</date>
            <delta_ts>2015-08-21 02:05:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>118715</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NzUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBA
QAorMjAxNS0wOC0yMSAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBERkcgY2FsbE9wZXJhdGlvbnMgc2hvdWxkIG5vdCBpbXBsaWNpdGx5IGVtaXQgYW4gZXhjZXB0
aW9uIGNoZWNrLiBBdCBjYWxsT3BlcmF0aW9uIGNhbGwgc2l0ZXMsIHdlIHNob3VsZCBleHBsaWNp
dGx5IGVtaXQgZXhjZXB0aW9uIGNoZWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3OTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIERGRyBiZWlu
ZyBhYmxlIHRvIGhhbmRsZSBleGNlcHRpb25zLiAKKyAgICAgICAgVG8gZG8gdGhpcywgd2UgbmVl
ZCBtb3JlIGNvbnRyb2wgb3ZlciB3aGVuIHdlIGVtaXQgZXhjZXB0aW9uIGNoZWNrcy4KKyAgICAg
ICAgU3BlY2lmaWNhbGx5LCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gc2lsZW50RmlsbCBiZWZvcmUg
ZW1pdHRpbmcgYW4gZXhjZXB0aW9uIGNoZWNrLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXMgdGhh
dC4gVGhpcyBwYXRjaCBhbHNvIGFsbG93cyB1cyB0byBlYXNpbHkgc2VlIHdoaWNoCisgICAgICAg
IG9wZXJhdGlvbnMgZG8gYW5kIGRvIG5vdCBlbWl0IGV4Y2VwdGlvbiBjaGVja3MuIEZpbmRpbmcg
dGhpcyBpbmZvcm1hdGlvbgorICAgICAgICBvdXQgYmVmb3JlIHdhcyBhIHBhaW4uCisKKyAgICAg
ICAgKiBhc3NlbWJsZXIvQWJvcnRSZWFzb24uaDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlpZnlT
bG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJn
dW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YXBwZW5kQ2FsbCk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmV4Y2VwdGlvbkNoZWNrKToKKyAgICAgICAgKiBkZmcv
REZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcv
REZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpDYWxsU2xvd1BhdGhH
ZW5lcmF0b3I6OkNhbGxTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6Q2Fs
bFNsb3dQYXRoR2VuZXJhdG9yOjp0ZWFyRG93bik6CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbFJl
c3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmROb0FyZ3Vt
ZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpDYWxsUmVzdWx0QW5k
T25lQXJndW1lbnRTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xv
d1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxSZXN1bHRBbmRUd29Bcmd1
bWVudHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3VsdEFuZFR3b0FyZ3VtZW50c1Nsb3dQYXRo
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpDYWxsUmVzdWx0QW5kVGhyZWVBcmd1bWVu
dHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3VsdEFuZFRocmVlQXJndW1lbnRzU2xvd1BhdGhH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxSZXN1bHRBbmRGb3VyQXJndW1lbnRz
U2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxSZXN1bHRBbmRGaXZlQXJndW1lbnRzU2xv
d1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRGaXZlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1
cnJlbnRCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVW
YWx1ZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhSb3VuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90aWZ5V3JpdGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwRXhlYyk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5n
T3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJh
dGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb25X
aXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OnByZXBhcmVGb3JFeHRlcm5hbENhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24p
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsV2l0aENhbGxG
cmFtZVJvbGxiYWNrT25FeGNlcHRpb25TZXRSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsU2V0UmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVQZWVwaG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29tcGFyZUFuZEJveEJv
b2xlYW5TbG93UGF0aEdlbmVyYXRvcjo6Q29tcGFyZUFuZEJveEJvb2xlYW5TbG93UGF0aEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
Tm9uUGVlcGhvbGVDb21wYXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVQZWVwaG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29tcGFyZUFuZEJveEJvb2xl
YW5TbG93UGF0aEdlbmVyYXRvcjo6Q29tcGFyZUFuZEJveEJvb2xlYW5TbG93UGF0aEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGVlcGhvbGVDb21wYXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9u
U3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExJbnRyaW5zaWNSZXBvc2l0
b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjYWxsQ2hlY2spOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFz
c2VydEFyZ3VtZW50Q291bnRTYW5lKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpq
aXRBc3NlcnROb0V4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2Fs
bEV4Y2VwdGlvbkZ1enopOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRFeGNl
cHRpb25DaGVjayk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIpOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6aml0QXNzZXJ0SXNOdWxsKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpqaXRBc3NlcnRUYWdzSW5QbGFjZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6aml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmppdEFzc2VydE5vRXhjZXB0aW9uKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgIChKU0M6OlZNOjpjcmVh
dGVDb250ZXh0R3JvdXApOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6
Vk06OnNjcmF0Y2hCdWZmZXJGb3JTaXplKToKKyAgICAgICAgKEpTQzo6Vk06OmV4Y2VwdGlvbkZ1
enppbmdCdWZmZXIpOgorCiAyMDE1LTA4LTIwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIHByb3RvdHlwaW5nIG1vZHVsZSBsb2FkZXIgaW4g
SlNDIHNoZWxsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fib3J0UmVh
c29uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYm9y
dFJlYXNvbi5oCShyZXZpc2lvbiAxODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fib3J0UmVhc29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgZW51
bSBBYm9ydFJlYXNvbiB7CiAgICAgSklUR2V0QnlWYWxSZXN1bHRJc05vdEVtcHR5ICAgICAgICAg
ICAgICAgICAgICAgICA9IDI1MCwKICAgICBKSVROb3RTdXBwb3J0ZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMjYwLAogICAgIEpJVE9mZnNldElzTm90T3V0T2ZMaW5lICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAyNzAsCisgICAgSklUVW5jb3VnaHRFeGNlcHRpb25B
ZnRlckNhbGwgICAgICAgICAgICAgICAgICAgICA9IDI3NSwKICAgICBKSVRVbnJlYXNvbmFibGVM
b29wSGludEp1bXBUYXJnZXQgICAgICAgICAgICAgICAgID0gMjgwLAogICAgIFJQV1VucmVhc29u
YWJsZUp1bXBUYXJnZXQgICAgICAgICAgICAgICAgICAgICAgICAgPSAyOTAsCiAgICAgUmVwYXRj
aEluZWZmZWN0aXZlV2F0Y2hwb2ludCAgICAgICAgICAgICAgICAgICAgICA9IDMwMCwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93
UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEzLDYgKzExMyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIGppdC0+c2lsZW50Rmls
bChtX3BsYW5zW2ldLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGppdC0+Y2hlY2tFeGNlcHRp
b25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX29wID09IEFycmF5aWZ5VG9T
dHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJy
YXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxODg3NTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBHUFJSZWcgY2FuVHJhbXBsZSA9IFNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZShtX3Jl
c3VsdEdQUik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07
KQogICAgICAgICAgICAgaml0LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOwor
ICAgICAgICBqaXQtPmNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIGppdC0+bV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX3Jlc3VsdEdQUiwgSlNPYmplY3Q6
OmJ1dHRlcmZseU9mZnNldCgpKSwgbV9zdG9yYWdlR1BSKTsKICAgICAgICAganVtcFRvKGppdCk7
CiAgICAgfQpAQCAtMTA2LDYgKzEwNyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgR1BSUmVnIGNh
blRyYW1wbGUgPSBTcGVjdWxhdGl2ZUpJVDo6cGlja0NhblRyYW1wbGUobV9yZXN1bHRHUFIpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykKICAgICAgICAg
ICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldLCBjYW5UcmFtcGxlKTsKKyAgICAgICAgaml0
LT5jaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICBqdW1wVG8oaml0KTsKICAgICB9
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJl
Y3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJh
dG9yLmgJKHJldmlzaW9uIDE4ODc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYyLDYgKzYyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBHUFJSZWcgY2FuVHJhbXBs
ZSA9IFNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZShtX3Jlc3VsdEdQUik7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgaml0
LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOworICAgICAgICBqaXQtPmNoZWNr
RXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIGppdC0+bV9qaXQubG9hZFB0cigKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fcmVzdWx0R1BSLCBEaXJlY3RBcmd1bWVu
dHM6Om9mZnNldE9mTGVuZ3RoKCkpLCBtX2xlbmd0aEdQUik7CiAgICAgICAgIGp1bXBUbyhqaXQp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2
aXNpb24gMTg4NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMTEgKzE2NSw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBleGNlcHRpb25DaGVj
ayhKdW1wIGp1bXBUb0hhbmRsZXIpCi0gICAgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5h
cHBlbmQoanVtcFRvSGFuZGxlcik7Ci0gICAgfQotICAgIAogICAgIHZvaWQgZXhjZXB0aW9uQ2hl
Y2soKQogICAgIHsKICAgICAgICAgbV9leGNlcHRpb25DaGVja3MuYXBwZW5kKGVtaXRFeGNlcHRp
b25DaGVjaygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgJKHJl
dmlzaW9uIDE4ODc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3VsYXRpdmVK
SVQ6OnBpY2tDYW5UcmFtcGxlKGV4dHJhY3RSZXN1bHQobV9yZXN1bHRSZWdzKSk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgaml0
LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOworICAgICAgICBqaXQtPmNoZWNr
RXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICBqdW1wVG8oaml0KTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdl
bmVyYXRvci5oCShyZXZpc2lvbiAxODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDE1ICs4OCwyMSBA
QCBwcm90ZWN0ZWQ6CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fdG87CiB9OwogCitlbnVt
IGNsYXNzIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgeworICAgIENoZWNrTmVlZGVkLAorICAg
IENoZWNrTm90TmVlZGVkCit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5h
bWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlPgogY2xhc3MgQ2FsbFNsb3dQYXRo
R2VuZXJhdG9yIDogcHVibGljIEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZT4gewog
cHVibGljOgogICAgIENhbGxTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgSnVtcFR5cGUgZnJv
bSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAotICAgICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBSZXN1bHRUeXBlIHJlc3VsdCkKKyAgICAgICAg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCBy
ZXF1aXJlbWVudCwgUmVzdWx0VHlwZSByZXN1bHQpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRo
R2VuZXJhdG9yPEp1bXBUeXBlPihmcm9tLCBqaXQpCiAgICAgICAgICwgbV9mdW5jdGlvbihmdW5j
dGlvbikKICAgICAgICAgLCBtX3NwaWxsTW9kZShzcGlsbE1vZGUpCisgICAgICAgICwgbV9leGNl
cHRpb25DaGVja1JlcXVpcmVtZW50KHJlcXVpcmVtZW50KQogICAgICAgICAsIG1fcmVzdWx0KHJl
c3VsdCkKICAgICB7CiAgICAgICAgIGlmIChtX3NwaWxsTW9kZSA9PSBOZWVkVG9TcGlsbCkKQEAg
LTEzMCwxMSArMTM2LDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgICAgIGppdC0+c2lsZW50Rmls
bChtX3BsYW5zW2ldLCBjYW5UcmFtcGxlKTsKICAgICAgICAgfQorICAgICAgICBpZiAobV9leGNl
cHRpb25DaGVja1JlcXVpcmVtZW50ID09IEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNr
TmVlZGVkKQorICAgICAgICAgICAgaml0LT5jaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAg
ICAgICB0aGlzLT5qdW1wVG8oaml0KTsKICAgICB9CiAKICAgICBGdW5jdGlvblR5cGUgbV9mdW5j
dGlvbjsKICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgbV9zcGlsbE1vZGU7CisgICAgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudCBtX2V4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ7CiAgICAgUmVzdWx0
VHlwZSBtX3Jlc3VsdDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBtX2NhbGw7CiAgICAgVmVj
dG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7CkBAIC0xNDYsOSArMTU1LDkg
QEAgY2xhc3MgQ2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZQogcHVibGljOgogICAg
IENhbGxSZXN1bHRBbmROb0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1w
VHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0g
ICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0KQor
ICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVp
cmVtZW50IHJlcXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3VsdCkKICAgICAgICAgOiBDYWxsU2xv
d1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAg
ICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAg
ICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCkK
ICAgICB7CiAgICAgfQogICAgIApAQCAtMTY5LDkgKzE3OCw5IEBAIGNsYXNzIENhbGxSZXN1bHRB
bmRPbmVBcmd1bWVudFNsb3dQYXRoR2UKIHB1YmxpYzoKICAgICBDYWxsUmVzdWx0QW5kT25lQXJn
dW1lbnRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRp
dmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAotICAgICAgICBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVu
dDEpCisgICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNr
UmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUx
IGFyZ3VtZW50MSkKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1
bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9u
LCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNw
aWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCkKICAgICAgICAgLCBtX2FyZ3VtZW50MShhcmd1
bWVudDEpCiAgICAgewogICAgIH0KQEAgLTE5NSwxMCArMjA0LDEwIEBAIGNsYXNzIENhbGxSZXN1
bHRBbmRUd29Bcmd1bWVudHNTbG93UGF0aEcKIHB1YmxpYzoKICAgICBDYWxsUmVzdWx0QW5kVHdv
QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1
bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAgICAgU3BpbGxSZWdp
c3RlcnNNb2RlIHNwaWxsTW9kZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJn
dW1lbnQxLAorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25D
aGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRU
eXBlMSBhcmd1bWVudDEsCiAgICAgICAgIEFyZ3VtZW50VHlwZTIgYXJndW1lbnQyKQogICAgICAg
ICA6IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRU
eXBlPigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVzdWx0
KQorICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVu
dCwgcmVzdWx0KQogICAgICAgICAsIG1fYXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICAgICAgLCBt
X2FyZ3VtZW50Mihhcmd1bWVudDIpCiAgICAgewpAQCAtMjI0LDEwICsyMzMsMTAgQEAgY2xhc3Mg
Q2FsbFJlc3VsdEFuZFRocmVlQXJndW1lbnRzU2xvd1BhdAogcHVibGljOgogICAgIENhbGxSZXN1
bHRBbmRUaHJlZUFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBm
cm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAg
IFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVu
dFR5cGUxIGFyZ3VtZW50MSwKKyAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwg
RXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwgUmVzdWx0VHlwZSByZXN1bHQs
IEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAogICAgICAgICBBcmd1bWVudFR5cGUyIGFyZ3VtZW50
MiwgQXJndW1lbnRUeXBlMyBhcmd1bWVudDMpCiAgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJh
dG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGU+KAotICAgICAgICAgICAgZnJv
bSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQpCisgICAgICAgICAgICBmcm9tLCBq
aXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQpCiAgICAgICAgICwg
bV9hcmd1bWVudDEoYXJndW1lbnQxKQogICAgICAgICAsIG1fYXJndW1lbnQyKGFyZ3VtZW50MikK
ICAgICAgICAgLCBtX2FyZ3VtZW50Myhhcmd1bWVudDMpCkBAIC0yNTksMTAgKzI2OCwxMCBAQCBj
bGFzcyBDYWxsUmVzdWx0QW5kRm91ckFyZ3VtZW50c1Nsb3dQYXRoCiBwdWJsaWM6CiAgICAgQ2Fs
bFJlc3VsdEFuZEZvdXJBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgSnVtcFR5
cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAotICAg
ICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJn
dW1lbnRUeXBlMSBhcmd1bWVudDEsCisgICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1v
ZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsIFJlc3VsdFR5cGUgcmVz
dWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKICAgICAgICAgQXJndW1lbnRUeXBlMiBhcmd1
bWVudDIsIEFyZ3VtZW50VHlwZTMgYXJndW1lbnQzLCBBcmd1bWVudFR5cGU0IGFyZ3VtZW50NCkK
ICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwg
UmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUs
IHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVx
dWlyZW1lbnQsIHJlc3VsdCkKICAgICAgICAgLCBtX2FyZ3VtZW50MShhcmd1bWVudDEpCiAgICAg
ICAgICwgbV9hcmd1bWVudDIoYXJndW1lbnQyKQogICAgICAgICAsIG1fYXJndW1lbnQzKGFyZ3Vt
ZW50MykKQEAgLTI5NiwxMSArMzA1LDExIEBAIGNsYXNzIENhbGxSZXN1bHRBbmRGaXZlQXJndW1l
bnRzU2xvd1BhdGgKIHB1YmxpYzoKICAgICBDYWxsUmVzdWx0QW5kRml2ZUFyZ3VtZW50c1Nsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0
LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGls
bE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKKyAgICAg
ICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dCByZXF1aXJlbWVudCwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQx
LAogICAgICAgICBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MiwgQXJndW1lbnRUeXBlMyBhcmd1bWVu
dDMsIEFyZ3VtZW50VHlwZTQgYXJndW1lbnQ0LAogICAgICAgICBBcmd1bWVudFR5cGU1IGFyZ3Vt
ZW50NSkKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9u
VHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGls
bE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9k
ZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCkKICAgICAgICAgLCBtX2FyZ3VtZW50MShhcmd1bWVudDEp
CiAgICAgICAgICwgbV9hcmd1bWVudDIoYXJndW1lbnQyKQogICAgICAgICAsIG1fYXJndW1lbnQz
KGFyZ3VtZW50MykKQEAgLTMzMCwxMCArMzM5LDEwIEBAIHByb3RlY3RlZDogICAgCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1
bHRUeXBlPgogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGhDYWxsKAogICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9u
VHlwZSBmdW5jdGlvbiwKLSAgICBSZXN1bHRUeXBlIHJlc3VsdCwgU3BpbGxSZWdpc3RlcnNNb2Rl
IHNwaWxsTW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBTcGlsbFJl
Z2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQgcmVxdWlyZW1lbnQgPSBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRl
ZCkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kTm9Bcmd1bWVu
dHNTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlPj4o
Ci0gICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVzdWx0KTsKKyAgICAg
ICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0KTsK
IH0KIAogdGVtcGxhdGU8CkBAIC0zNDIsMTAgKzM1MSwxMCBAQCB0ZW1wbGF0ZTwKIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1w
VHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCiAg
ICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAotICAgIFNwaWxs
UmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCkKKyAgICBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQg
cmVxdWlyZW1lbnQgPSBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCkKIHsK
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kT25lQXJndW1lbnRTbG93
UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVu
dFR5cGUxPj4oCi0gICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVzdWx0
LCBhcmd1bWVudDEpOworICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJl
cXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50MSk7CiB9CiAKIHRlbXBsYXRlPApAQCAtMzU0LDEw
ICszNjMsMTAgQEAgdGVtcGxhdGU8CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aENhbGwoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQq
IGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAogICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1
bWVudFR5cGUxIGFyZ3VtZW50MSwgQXJndW1lbnRUeXBlMiBhcmd1bWVudDIsCi0gICAgU3BpbGxS
ZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIFNwaWxsUmVnaXN0ZXJz
TW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCBy
ZXF1aXJlbWVudCA9IEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkKQogewog
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxSZXN1bHRBbmRUd29Bcmd1bWVudHNTbG93
UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVu
dFR5cGUxLCBBcmd1bWVudFR5cGUyPj4oCi0gICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNw
aWxsTW9kZSwgcmVzdWx0LCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CisgICAgICAgIGZyb20sIGpp
dCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnQxLCBh
cmd1bWVudDIpOwogfQogCiB0ZW1wbGF0ZTwKQEAgLTM2NiwxMCArMzc1LDEwIEBAIHRlbXBsYXRl
PAogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxs
KAogICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBm
dW5jdGlvbiwKICAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVudDEs
IEFyZ3VtZW50VHlwZTIgYXJndW1lbnQyLAotICAgIEFyZ3VtZW50VHlwZTMgYXJndW1lbnQzLCBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwpCisgICAgQXJndW1lbnRU
eXBlMyBhcmd1bWVudDMsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGls
bCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCA9IEV4Y2VwdGlvbkNoZWNr
UmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkKQogewogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhbGxSZXN1bHRBbmRUaHJlZUFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBG
dW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50VHlwZTEsIEFyZ3VtZW50VHlwZTIsCi0g
ICAgICAgIEFyZ3VtZW50VHlwZTM+Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJl
c3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIsIGFyZ3VtZW50Myk7CisgICAgICAgIEFyZ3VtZW50
VHlwZTM+Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1
bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQyLCBhcmd1bWVudDMpOwogfQogCiB0ZW1wbGF0ZTwKQEAg
LTM4MCwxMCArMzg5LDEwIEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3IKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUg
ZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQx
LCBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MiwKICAgICBBcmd1bWVudFR5cGUzIGFyZ3VtZW50Mywg
QXJndW1lbnRUeXBlNCBhcmd1bWVudDQsCi0gICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSA9IE5lZWRUb1NwaWxsKQorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVk
VG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCA9IEV4Y2VwdGlv
bkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkKQogewogICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5
cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRUeXBlMSwgQXJndW1lbnRUeXBl
MiwKLSAgICAgICAgQXJndW1lbnRUeXBlMywgQXJndW1lbnRUeXBlND4+KGZyb20sIGppdCwgZnVu
Y3Rpb24sIHNwaWxsTW9kZSwgcmVzdWx0LCBhcmd1bWVudDEsIGFyZ3VtZW50MiwgYXJndW1lbnQz
LCBhcmd1bWVudDQpOworICAgICAgICBBcmd1bWVudFR5cGUzLCBBcmd1bWVudFR5cGU0Pj4oZnJv
bSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0LCBhcmd1bWVu
dDEsIGFyZ3VtZW50MiwgYXJndW1lbnQzLCBhcmd1bWVudDQpOwogfQogCiB0ZW1wbGF0ZTwKQEAg
LTM5NCwxMCArNDAzLDEwIEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3IKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUg
ZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQx
LCBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MiwKICAgICBBcmd1bWVudFR5cGUzIGFyZ3VtZW50Mywg
QXJndW1lbnRUeXBlNCBhcmd1bWVudDQsIEFyZ3VtZW50VHlwZTUgYXJndW1lbnQ1LAotICAgIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCkKKyAgICBTcGlsbFJlZ2lz
dGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1l
bnQgcmVxdWlyZW1lbnQgPSBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCkK
IHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kRml2ZUFyZ3VtZW50
c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFy
Z3VtZW50VHlwZTEsIEFyZ3VtZW50VHlwZTIsCi0gICAgICAgIEFyZ3VtZW50VHlwZTMsIEFyZ3Vt
ZW50VHlwZTQsIEFyZ3VtZW50VHlwZTU+Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUs
IHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIsIGFyZ3VtZW50MywKKyAgICAgICAgQXJndW1l
bnRUeXBlMywgQXJndW1lbnRUeXBlNCwgQXJndW1lbnRUeXBlNT4+KGZyb20sIGppdCwgZnVuY3Rp
b24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIs
IGFyZ3VtZW50MywKICAgICAgICAgYXJndW1lbnQ0LCBhcmd1bWVudDUpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAJKHJldmlzaW9uIDE4ODc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Nyw2ICszODcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVz
dWx0R1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxv
YWRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogCiAgICAgICAgIGJy
YW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9
IGVsc2UgewpAQCAtNDEwLDYgKzQxMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1
bGF0aXZlUGVlcGgKICAgICAKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdEdQUik7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1
bHRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9h
ZEdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAg
ICAgIGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1bHRHUFIsIHRha2VuKTsK
QEAgLTQzMSw3ICs0MzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNfSklUT3BlcmF0aW9uX0VKSiBm
dW5jdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCwKICAgICAgICAgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICAgICAg
OiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFNfSklUT3BlcmF0aW9uX0VKSiwgR1BS
UmVnPigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIE5lZWRUb1NwaWxsLCByZXN1
bHQpCisgICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBOZWVkVG9TcGlsbCwgRXhjZXB0
aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsIHJlc3VsdCkKICAgICAgICAgLCBtX2Fy
ZzFUYWcoYXJnMVRhZykKICAgICAgICAgLCBtX2FyZzFQYXlsb2FkKGFyZzFQYXlsb2FkKQogICAg
ICAgICAsIG1fYXJnMlRhZyhhcmcyVGFnKQpAQCAtNDc4LDYgKzQ4MCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRQYXlsb2FkR1BS
LCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIp
OworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAKICAgICAgICAg
Ym9vbGVhblJlc3VsdChyZXN1bHRQYXlsb2FkR1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOwogICAgIH0gZWxzZSB7CkBAIC01MzgsNiArNTQxLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAgICAKICAgICAgICAgc2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQ
UiwgYXJnMVBheWxvYWRHUFIsIGFyZzJUYWdHUFIsIGFyZzJQYXlsb2FkR1BSKTsKKyAgICAgICAg
Y2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVy
cyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZl
cnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRQYXls
b2FkR1BSLCB0YWtlbik7CkBAIC01NDYsNiArNTUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaAogCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdFBheWxvYWRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVT
dHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxvYWRHUFIsIGFy
ZzJUYWdHUFIsIGFyZzJQYXlsb2FkR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNh
bGwoKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsK
ICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVy
byA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRQYXlsb2FkR1BSLCB0YWtlbik7CkBAIC01
ODIsNiArNTg3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQog
ICAgICAgICAKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQ
Uik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwg
cmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxvYWRHUFIsIGFyZzJUYWdHUFIs
IGFyZzJQYXlsb2FkR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAg
ICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAg
CiAgICAgICAgIG1faml0LmFuZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKDEpLCByZXN1
bHRQYXlsb2FkR1BSKTsKQEAgLTU5Myw2ICs1OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpu
b25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3Vs
dFBheWxvYWRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJp
Y3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxvYWRHUFIsIGFyZzJU
YWdHUFIsIGFyZzJQYXlsb2FkR1BSKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAg
ICAgICAgCiAgICAgICAgIG1faml0LmFuZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKDEp
LCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICB9CkBAIC02NzgsNiArNjg1LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJm1f
aml0KTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJm
bG93Rm9yVmFyYXJncyk7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
ICAgICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhE
aWROb3RUaHJvdyk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgICAg
IHJlc3VsdEdQUiA9IHNjcmF0Y2hHUFIyOwpAQCAtNzEwLDYgKzcxOCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIC8vIFJpZ2h0IG5vdywg
YXJndW1lbnRzIGlzIGluIGFyZ3VtZW50c1RhZ0dQUi9hcmd1bWVudHNQYXlsb2FkR1BSIGFuZCB0
aGUgcmVnaXN0ZXIgZmlsZSBpcwogICAgICAgICAgICAgLy8gZmx1c2hlZC4KICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIGFyZ3VtZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwgbnVtVXNl
ZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICAgICAgICAgIGNoZWNr
RXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE5vdyB3
ZSBoYXZlIHRoZSBhcmd1bWVudCBjb3VudCBvZiB0aGUgY2FsbGVlIGZyYW1lLCBidXQgd2UndmUg
bG9zdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQuCiAgICAgICAgICAgICAvLyBSZWNvbnN0cnVjdCB0
aGUgYXJndW1lbnRzIG9wZXJhbmQgd2hpbGUgcHJlc2VydmluZyB0aGUgY2FsbGVlIGZyYW1lLgpA
QCAtNzE5LDYgKzcyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5v
ZGUKICAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykgKyBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRl
cygpLCA2ICogc2l6ZW9mKHZvaWQqKSkpKSwgc2NyYXRjaEdQUjEsIEpJVENvbXBpbGVyOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBz
Y3JhdGNoR1BSMSwgYXJndW1lbnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BSLCBkYXRhLT5m
aXJzdFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAg
Y2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIHJlc3VsdEdQUiA9IEdQUklu
Zm86OnJldHVyblZhbHVlR1BSOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE1MTQsNyAr
MTUyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29s
ZWFuLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLAotICAgICAgICAgICAgICAgIGFyZzFQ
YXlsb2FkR1BSKSk7CisgICAgICAgICAgICAgICAgYXJnMVBheWxvYWRHUFIsIE5lZWRUb1NwaWxs
LCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05vdE5lZWRlZCkpOwogICAgIAogICAg
ICAgICBtX2ppdC54b3IzMihUcnVzdGVkSW1tMzIoMSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAg
ICAgICBib29sZWFuUmVzdWx0KHJlc3VsdFBheWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2Fs
bGVkRXhwbGljaXRseSk7CkBAIC0yMDQxLDYgKzIwNTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blZhbHVlQWRkTm90TnVtYmVyLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCks
IG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiwgb3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZCwg
cmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBvcDFUYWdHUFIsIG9wMVBheWxv
YWRHUFIsIG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9u
QWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZy5n
cHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjMz
Nyw2ICsyMzQ4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKICAgICAg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsQ2VsbCwgcmVzdWx0VGFnLmdwcigp
LCByZXN1bHRQYXlsb2FkLmdwcigpLCBiYXNlR1BSLCBwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHlQ
YXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1
bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjYwNCw2ICsy
NjE2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3RDZWxsTm9uU3RyaWN0LCBiYXNlR1BSLCBwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHlQYXls
b2FkR1BSLCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmlj
dE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
Q2VsbE5vblN0cmljdCwgYmFzZUdQUiwgcHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UGF5bG9hZEdQ
UiwgdmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2Vw
dGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBub1Jlc3VsdChub2Rl
KTsKICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsKQEAgLTI3NTcsNiArMjc3MCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3Qs
IHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAgICAgICAgY2hlY2tF
eGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gTXVzdCB1
c2UganNWYWx1ZVJlc3VsdCBiZWNhdXNlIG90aGVyd2lzZSB3ZSBzY3JldyB1cCByZWdpc3Rlcgog
ICAgICAgICAgICAgLy8gYWxsb2NhdGlvbiwgd2hpY2ggdGhpbmtzIHRoYXQgdGhpcyBub2RlIGhh
cyBhIHJlc3VsdC4KQEAgLTI3NzMsNiArMjc4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRh
Zyh0aGlzKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlz
KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjLCByZXN1bHRUYWcu
Z3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAg
ICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0yNzg3LDYgKzI4MDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25SZWdFeHBUZXN0LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAg
ICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIC8vIElm
IHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCiAgICAgICAg
IGJvb2xlYW5SZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKQEAgLTMyMDcsNiArMzIyMyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICBBU1NFUlQob3AgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKICAgICAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBv
cDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2hl
Y2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIGlmIChkb25lLmlzU2V0KCkpCiAg
ICAgICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0zMzAxLDYgKzMzMTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhp
bmdUeXBlKCkpKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAg
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMzM3OCw2ICszMzk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAg
b3BlcmF0aW9uTmV3QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkp
LAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZCo+KGJ1ZmZlciksIG5vZGUtPm51bUNoaWxk
cmVuKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogCiAgICAgICAgIGlm
IChzY3JhdGNoU2l6ZSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CkBAIC0zNDU4LDYgKzM0NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICBjYWxsT3BlcmF0aW9u
KAogICAgICAgICAgICAgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBzdHJ1
Y3R1cmVHUFIsIHNpemVHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KQEAgLTM1MDMsNiArMzUyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVz
dWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVy
aW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQo
KSwgbm9kZS0+bnVtQ29uc3RhbnRzKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2Fs
bCgpOwogICAgICAgICAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTM1MjgsNiArMzU0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFy
cmF5V2l0aE9uZUFyZ3VtZW50Rm9yVHlwZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKICAgICAg
ICAgICAgICAgICByZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZShu
b2RlLT50eXBlZEFycmF5VHlwZSgpKSwKICAgICAgICAgICAgICAgICBhcmd1bWVudFRhZ0dQUiwg
YXJndW1lbnRQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxs
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzU0NSw2ICszNTY3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdSZWdleHAsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbV9q
aXQuY29kZUJsb2NrKCktPnJlZ2V4cChub2RlLT5yZWdleHBJbmRleCgpKSk7CisgICAgICAgIGNo
ZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogbWFr
ZSB0aGUgY2FsbE9wZXJhdGlvbiBhYm92ZSBleHBsaWNpdGx5IHJldHVybiBhIGNlbGwgcmVzdWx0
LCBvciBqaXRBc3NlcnQgdGhlIHRhZyBpcyBhIGNlbGwgdGFnLgogICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwpAQCAtNDI0Miw2ICs0MjY1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVPZlZhcmFyZ3MsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCBhcmd1bWVudHNUYWdHUFIsIGFyZ3VtZW50c1BheWxvYWRHUFIsIGRhdGEt
Pm9mZnNldCk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAog
ICAgICAgICBsb2NrKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgewpAQCAtNDI3
MSw2ICs0Mjk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBtX2ppdC5zdG9yZTMyKGFyZ0NvdW50SW5jbHVkaW5nVGhpc0dQUiwgSklUQ29tcGls
ZXI6OnBheWxvYWRGb3IoZGF0YS0+bWFjaGluZUNvdW50KSk7CiAgICAgICAgIAogICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zm
c2V0KCksIGFyZ3VtZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwgZGF0YS0+b2Zmc2V0
LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgZGF0YS0+bWFuZGF0b3J5TWluaW11bSk7CisgICAg
ICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICBub1Jlc3Vs
dChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00MzQ2LDYgKzQzNzEsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHksIHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgYmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIs
IHByb3BlcnR5LmdwcigpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAg
ICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtNDQ2Niw2ICs0NDkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBtX2pp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHNj
cmF0Y2hHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsQ2VsbCwg
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBiYXNlR1BSLCBzY3JhdGNoR1BSLCBwcm9w
ZXJ0eUdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAjZWxzZQogICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdFRhZyh0aGlzKTsKQEAgLTQ1MjksNiArNDU1Niw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciwgcmVz
dWx0R1BSLCBiYXNlLmdwcigpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsK
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9CkBAIC00NTcyLDYgKzQ2MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Ub0luZGV4U3RyaW5nLCByZXN1bHRHUFIsIGluZGV4LmdwcigpKTsKKyAg
ICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE4
ODc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw2ICszMzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAg
ICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgYXJnMUdQUiwg
YXJnMkdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAKICAgICAgICAg
YnJhbmNoVGVzdDMyKGNhbGxSZXN1bHRDb25kaXRpb24sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAg
IH0gZWxzZSB7CkBAIC0zNjMsNiArMzY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVQZWVwaAogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0
R1BSKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQ
UiwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdEdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAg
ICAgICAKICAgICAgICAgICAgIGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1
bHRHUFIsIHRha2VuKTsKICAgICAgICAgfQpAQCAtMzgyLDcgKzM4NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwKICAgICAgICAgU19KSVRP
cGVyYXRpb25fRUpKIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIpCiAgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBTX0pJVE9w
ZXJhdGlvbl9FSkosIEdQUlJlZz4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBO
ZWVkVG9TcGlsbCwgcmVzdWx0KQorICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgTmVl
ZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLCByZXN1bHQp
CiAgICAgICAgICwgbV9hcmcxKGFyZzEpCiAgICAgICAgICwgbV9hcmcyKGFyZzIpCiAgICAgewpA
QCAtNDIyLDYgKzQyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGUKICAgICAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlv
bihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBhcmcyR1BSKTsKKyAgICAgICAg
Y2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIG1faml0Lm9yMzIo
VHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOwogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbiwgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTQ4Miw2ICs0ODUsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0
cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICAgICAgc2lsZW50
RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVy
Q2FsbCgpOwogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBp
bGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAg
IH0gZWxzZSB7CkBAIC01MDgsNiArNTEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVQZWVwaAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIp
OwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0
R1BSLCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAK
ICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29t
cGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAgIH0KQEAgLTU0Myw2ICs1NDgs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIHNp
bGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBhcmcxR1BSLCBhcmcyR1BS
KTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworICAgICAgICBj
aGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAKICAgICAgICAgbV9qaXQuYW5kNjQo
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMigxKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQu
b3IzMihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOwpA
QCAtNjU4LDYgKzY2NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5v
ZGUKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAg
ICAgICAgICAgICBzbG93Q2FzZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpOworICAgICAgICAgICAg
Y2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIG1faml0LmFib3J0V2l0aFJl
YXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAgICAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICByZXN1bHRHUFIgPSBzY3JhdGNoR1BSMjsKQEAg
LTY4Nyw2ICs2OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFJpZ2h0IG5vdywgYXJndW1lbnRzIGlzIGlu
IGFyZ3VtZW50c0dQUiBhbmQgdGhlIHJlZ2lzdGVyIGZpbGUgaXMgZmx1c2hlZC4KICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50c0dQUiwgbnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZp
cnN0VmFyQXJnT2Zmc2V0KTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE5vdyB3ZSBoYXZlIHRoZSBhcmd1bWVudCBj
b3VudCBvZiB0aGUgY2FsbGVlIGZyYW1lLCBidXQgd2UndmUgbG9zdCB0aGUgYXJndW1lbnRzIG9w
ZXJhbmQuCiAgICAgICAgICAgICAvLyBSZWNvbnN0cnVjdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQg
d2hpbGUgcHJlc2VydmluZyB0aGUgY2FsbGVlIGZyYW1lLgpAQCAtNjk2LDYgKzcwNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIG1faml0
LmFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA1ICogc2l6ZW9mKHZvaWQq
KSkpKSwgc2NyYXRjaEdQUjEsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0dXBWYXJh
cmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBzY3JhdGNoR1BSMSwgYXJndW1lbnRz
R1BSLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwor
ICAgICAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIHJlc3Vs
dEdQUiA9IEdQUkluZm86OnJldHVyblZhbHVlR1BSOwogICAgICAgICB9CiAgICAgICAgIApAQCAt
MTY2MCw3ICsxNjY5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3Qo
TgogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0LmJyYW5jaFRlc3Q2
NChKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4ofjEpKSk7CiAgICAgCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25Db252ZXJ0
SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0R1BSLCBhcmcxR1BSKSk7CisgICAgICAgICAgICBzbG93
UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFu
LCByZXN1bHRHUFIsIGFyZzFHUFIsIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVt
ZW50OjpDaGVja05vdE5lZWRlZCkpOwogICAgIAogICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVUcnVlKSksIHJlc3VsdEdQUik7CiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtMjE3NCw2ICsyMTgzLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0LmdwcigpLCBvcDFHUFIsIG9w
MkdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VmFsdWVBZGQsIHJlc3VsdC5ncHIoKSwgb3AxR1BSLCBvcDJHUFIpOworICAgICAgICBjaGVja0V4
Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTI0NTUsNiArMjQ2NSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCByZXN1bHQu
Z3ByKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9u
QWZ0ZXJDYWxsKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY3NCw2ICsyNjg1LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0Tm9uU3RyaWN0LCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbE5vblN0cmljdCwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CisgICAg
ICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsK
QEAgLTI4ODUsNiArMjg5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOwor
ICAgICAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gTXVzdCB1c2UganNWYWx1ZVJlc3VsdCBiZWNhdXNlIG90aGVyd2lzZSB3ZSBz
Y3JldyB1cCByZWdpc3RlcgogICAgICAgICAgICAgLy8gYWxsb2NhdGlvbiwgd2hpY2ggdGhpbmtz
IHRoYXQgdGhpcyBub2RlIGhhcyBhIHJlc3VsdC4KQEAgLTI5MDAsNiArMjkxMyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWMsIHJlc3VsdC5ncHIoKSwgYmFzZUdQ
UiwgYXJndW1lbnRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAg
ICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAg
ICBicmVhazsKQEAgLTI5MTQsNiArMjkyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAg
ICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAKICAgICAgICAgLy8gSWYg
d2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KICAgICAgICAg
bV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CkBAIC0z
MjU1LDYgKzMyNzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgQVNTRVJUKG9wID09IENhbGxTdHJpbmdDb25zdHJ1Y3Rvcik7CiAg
ICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0
b3IsIHJlc3VsdEdQUiwgb3AxR1BSKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoZWNr
RXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQogICAg
ICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwpAQCAtMzM0Nyw2ICszMzYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSwgcmVzdWx0LmdwcigpLCBnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihu
b2RlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNh
bGwoKTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zNDI5LDYgKzM0NDYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAg
ICAgICAgICAgICBvcGVyYXRpb25OZXdBcnJheSwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRl
eGluZ1R5cGUoKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2b2lkKj4oYnVmZmVyKSwgbm9k
ZS0+bnVtQ2hpbGRyZW4oKSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAK
ICAgICAgICAgaWYgKHNjcmF0Y2hTaXplKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaCh0aGlzKTsKQEAgLTM1MDYsNiArMzUyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aEFycmF5U3RvcmFnZSkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBkb25lLmxpbmso
Jm1faml0KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXpl
LCByZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0
aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzU0OSw2ICszNTY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0FycmF5QnVmZmVyLCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwgbm9k
ZS0+c3RhcnRDb25zdGFudCgpLCBub2RlLT5udW1Db25zdGFudHMoKSk7CisgICAgICAgIGNoZWNr
RXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzU3Myw2ICszNTkzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1lbnRGb3JUeXBlKG5vZGUtPnR5cGVkQXJy
YXlUeXBlKCkpLAogICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT50eXBl
ZEFycmF5U3RydWN0dXJlKG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpLAogICAgICAgICAgICAgICAg
IGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMzU4OSw2ICszNjEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1Jl
Z2V4cCwgcmVzdWx0LmdwcigpLCBtX2ppdC5jb2RlQmxvY2soKS0+cmVnZXhwKG5vZGUtPnJlZ2V4
cEluZGV4KCkpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAg
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7
CkBAIC00MjQyLDYgKzQyNjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uU2l6ZU9mVmFyYXJncywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50c0dQUiwg
ZGF0YS0+b2Zmc2V0KTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAg
ICAgCiAgICAgICAgIGxvY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICB7CkBA
IC00MjcwLDYgKzQyOTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIG1faml0LnN0b3JlMzIoYXJnQ291bnRJbmNsdWRpbmdUaGlzR1BSLCBKSVRD
b21waWxlcjo6cGF5bG9hZEZvcihkYXRhLT5tYWNoaW5lQ291bnQpKTsKICAgICAgICAgCiAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIGRhdGEtPm1hY2hpbmVTdGFy
dC5vZmZzZXQoKSwgYXJndW1lbnRzR1BSLCBkYXRhLT5vZmZzZXQsIEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBkYXRhLT5tYW5kYXRvcnlNaW5pbXVtKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25B
ZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBi
cmVhazsKQEAgLTQzODUsNiArNDQwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSwgcmVzdWx0R1BSLCBiYXNlLmdwcigp
LCBwcm9wZXJ0eS5ncHIoKSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlLCBEYXRhRm9ybWF0SlNCb29sZWFu
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDU1Miw2ICs0NTc3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9y
LCByZXN1bHRHUFIsIGJhc2UuZ3ByKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2Fs
bCgpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTQ1OTEsNiArNDYxNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRvSW5kZXhTdHJpbmcsIHJlc3VsdEdQUiwgaW5kZXguZ3ByKCkp
OworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAx
ODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTkzLDYgKzk5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbihOb2RlKiBub2QKICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICBvcGVyYXRp
b25HZW5lcmljSW4sIGV4dHJhY3RSZXN1bHQoSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlc3Vs
dEdQUikpLAogICAgICAgICBiYXNlR1BSLCByZWdzKTsKKyAgICBjaGVja0V4Y2VwdGlvbkFmdGVy
Q2FsbCgpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIApAQCAtMTUwMSw2ICsxNTAyLDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICAgICAgZGF0YUxvZygi
XG4iKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgbV9qaXQuaml0QXNzZXJ0Tm9FeGNl
cHRpb24oKTsKKwogICAgICAgICBjb21waWxlKG1fY3VycmVudE5vZGUpOwogICAgICAgICAKICAg
ICAgICAgaWYgKGJlbG9uZ3NJbk1pbmlmaWVkR3JhcGgobV9jdXJyZW50Tm9kZS0+b3AoKSkpCkBA
IC0xOTkzLDYgKzE5OTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0lu
dDMyCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOwogICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbih0b0ludDMyLCByZXN1bHRHcHIsIGZwcik7CiAgICAgICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7CisgICAgICAgICAgICBjaGVj
a0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogCiAgICAgICAgICAgICBjb252ZXJ0ZWQuYXBwZW5kKG1f
aml0Lmp1bXAoKSk7CiAKQEAgLTIwNTIsNiArMjA1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lz
dGVycyhyZXN1bHRHcHIpOwogICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24odG9JbnQzMiwg
cmVzdWx0R3ByLCBmcHIpOwogICAgICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
cmVzdWx0R3ByKTsKKyAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
CiAgICAgICAgICAgICAgICAgY29udmVydGVkLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCkBAIC0z
NzI0LDYgKzM3MjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZChO
CiAgICAgRlBSUmVzdWx0IHJvdW5kZWRSZXN1bHRBc0RvdWJsZSh0aGlzKTsKICAgICBGUFJSZWcg
cmVzdWx0RlBSID0gcm91bmRlZFJlc3VsdEFzRG91YmxlLmZwcigpOwogICAgIGNhbGxPcGVyYXRp
b24oanNSb3VuZCwgcmVzdWx0RlBSLCB2YWx1ZUZQUik7CisgICAgY2hlY2tFeGNlcHRpb25BZnRl
ckNhbGwoKTsKICAgICBpZiAocHJvZHVjZXNJbnRlZ2VyKG5vZGUtPmFyaXRoUm91bmRpbmdNb2Rl
KCkpKSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByb3VuZGVkUmVzdWx0QXNJbnQzMih0aGlzKTsK
ICAgICAgICAgRlBSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC00NjY2LDcgKzQ2NzIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb24oCiAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIHJlc3VsdEdQUiwgc2NvcGVH
UFIsIGV4ZWN1dGFibGUsIHRoaXNWYWx1ZUdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIHJlc3VsdEdQUiwgc2NvcGVHUFIs
IGV4ZWN1dGFibGUpOwotICAgICAgICAKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwo
KTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtNDc4OCw2ICs0Nzk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNyZWF0ZUFjdGl2YQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFjdGl2
YXRpb25EaXJlY3QsCiAgICAgICAgICAgICByZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NvcGVHUFIs
IHRhYmxlLCBUcnVzdGVkSW1tMzIoaW5pdGlhbGl6YXRpb25WYWx1ZS50YWcoKSksIFRydXN0ZWRJ
bW0zMihpbml0aWFsaXphdGlvblZhbHVlLnBheWxvYWQoKSkpOwogI2VuZGlmCisgICAgICAgIGNo
ZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUwMzgsNyArNTA0NSw4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWQKICAgICAgICAgfSk7CiAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGRlc3RHUFIpOyB9KTsKICAgICAKLSAgICBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3Vt
ZW50cywgcmVzdWx0R1BSKTsKKyAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0
ZVNjb3BlZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2Fs
bCgpOwogICAgIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTUwNjUs
NyArNTA3Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWQKICAg
ICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0R1BS
KSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGRlc3RHUFIpOyB9KTsK
ICAgICAKLSAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
bkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBjaGVj
a0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKIH0KQEAgLTUwODAsNyArNTA4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVOb3RpZnlXcml0ZSgKICAgICAgICAgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKTsKICAg
ICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dD
YXNlLCB0aGlzLCBvcGVyYXRpb25Ob3RpZnlXcml0ZSwgTm9SZXN1bHQsIHNldCkpOworICAgICAg
ICBzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbk5vdGlmeVdyaXRlLCBOb1Jl
c3VsdCwgc2V0LCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tO
b3ROZWVkZWQpKTsKICAgICAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTUxMTIsNiArNTEy
MSw3IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWdFeHBFeGVjKE4KICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgYmFzZUdQ
UiwgYXJndW1lbnRHUFIpOworICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAKICAgICBi
cmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9u
WmVybywgcmVzdWx0LmdwcigpLCB0YWtlbik7CiAgICAganVtcChub3RUYWtlbik7CkBAIC01MjQ3
LDYgKzUyNTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVQcm9wCiAK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3Jh
Z2VXaXRoSW5pdGlhbENhcGFjaXR5LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIpOworICAgICAgICBj
aGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAKICAgICAgICAgc3RvcmFnZVJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC01MjkwLDYgKzUzMDEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVhbGxvY2F0ZVByCiAKICAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3JhZ2UsIHJlc3Vs
dC5ncHIoKSwgYmFzZUdQUiwgbmV3U2l6ZSAvIHNpemVvZihKU1ZhbHVlKSk7CisgICAgICAgIGNo
ZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAKICAgICAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHQu
Z3ByKCksIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC01Mzk3LDYgKzU0MDksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhCiAgICAgICAgICAgICBBU1NFUlQo
bm9kZS0+b3AoKSA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOwogICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwsIHJlc3VsdEdQUiwg
b3AxR1BSKTsKICAgICAgICAgfQorICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
ICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQogICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTYwMTksNiArNjAzMiw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbW0oTm9kZSoKICAgICAgICAgc2ls
ZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwgc2NyYXRjaCwgdmFsdWVSZWdzLCBk
YXRhLT5zd2l0Y2hUYWJsZUluZGV4KTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhz
Y3JhdGNoKTsKKwogICAgICAgICBtX2ppdC5qdW1wKHNjcmF0Y2gpOwogI2VuZGlmCiAgICAgICAg
IG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC02Mjc4LDYg
KzYyOTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nT25TCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAg
ICBvcGVyYXRpb25Td2l0Y2hTdHJpbmcsIHN0cmluZywgZGF0YS0+c3dpdGNoVGFibGVJbmRleCwg
c3RyaW5nKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgbV9q
aXQuanVtcChzdHJpbmcpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjMxNSw2ICs2MzMw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uUwogICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKHN0cmluZyk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25T
d2l0Y2hTdHJpbmcsIHN0cmluZywgZGF0YS0+c3dpdGNoVGFibGVJbmRleCwgc3RyaW5nKTsKICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHN0cmluZyk7CisgICAgY2hlY2tFeGNlcHRpb25BZnRl
ckNhbGwoKTsKICAgICBtX2ppdC5qdW1wKHN0cmluZyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE4ODc1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODkxLDIzOSArODkxLDIzOSBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJh
dGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBjZWxsKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGNlbGwpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9w
ZXJhdGlvbl9FTyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvYmplY3QpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUob2JqZWN0KTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRU9TIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVj
dCwgc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUob2JqZWN0LCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25f
RU9aIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVjdCwgaW50MzJfdCBzaXpl
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9iamVj
dCwgVHJ1c3RlZEltbVB0cihzaXplKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VPWiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvYmplY3QsIGludDMyX3Qgc2l6ZSkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvYmplY3QsIFRydXN0ZWRJbW1Q
dHIoc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUFMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgb2xkLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvbGQsIFRydXN0ZWRJbW1Q
dHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU0pzcyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIHNpemVfdCBpbmRleCwgR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihp
bmRleCksIGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9w
ZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMik7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0
aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQ
X0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RQUyBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qg
c2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJ
bW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RTUyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgaW5kZXgsIHNpemVfdCBzaXplKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihpbmRleCksIFRydXN0ZWRJbW1QdHIoc2l6
ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0
aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3Bl
cmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
Y2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDWkMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKENfSklUT3BlcmF0aW9uX0VJY2Ygb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRVN0SnNjU3ltdGFiSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3Rl
ZEltbTY0IGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHNjb3BlLCBUcnVzdGVkSW1t
UHRyKHRhYmxlKSwgaW5pdGlhbFZhbHVlKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogI2Vsc2UK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpz
Y1N5bXRhYkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
R1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIFRydXN0ZWRJbW0zMiB0YWcsIFRydXN0
ZWRJbW0zMiBwYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHIo
dGFibGUpLCBwYXlsb2FkLCB0YWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAjZW5kaWYKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25v
d25MZW5ndGgpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoa25vd25MZW5ndGgpKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbTMyKGtub3duTGVuZ3RoKSwgVHJ1c3RlZElt
bTMyKG1pbkNhcGFjaXR5KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGxlbmd0aCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSksIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFpaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBsZW5ndGgsIHVuc2lnbmVk
IG1pbkNhcGFjaXR5KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgbGVuZ3RoLCBUcnVzdGVkSW1tMzIobWlu
Q2FwYWNpdHkpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzc1N0IG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VK
c3NKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihTX0pJVE9wZXJhdGlvbl9FR0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIGFy
ZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VHQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2Jq
ZWN0KSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSnNzX0pJVE9wZXJhdGlvbl9FWiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BS
UmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQog
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQyBv
cGVyYXRpb24sIEpTQ2VsbCogYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDSWNmIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZy
YW1lKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDSWNmIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIGludCBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihhcmcyKSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhv
cGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDQyBv
cGVyYXRpb24sIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGFyZzIpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwg
SlNDZWxsKiBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFyZzEpLCBhcmcyKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRP
cGVyYXRpb25fRUNiIG9wZXJhdGlvbiwgdm9pZCogcG9pbnRlcikKQEAgLTExNDAsNyArMTE0MCw3
IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3Bl
cmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KQEAg
LTExOTIsMjggKzExOTIsMjggQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVF9KSVRPcGVyYXRpb25fRUpzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxLCBpbnQzMl90IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbTMyKGFyZzIpKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Q19KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQpAQCAtMTIzMiwxMiArMTIz
MiwxMiBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgdm9pZCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Wl9KSVRPcGVyYXRpb25fRCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxKQog
ICAgIHsKQEAgLTEyNTksMTAyICsxMjU5LDEwMiBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSSBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRUFaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNzWiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RVBTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgdm9pZCogcG9pbnRlciwgc2l6ZV90IHNpemUp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihwb2ludGVyKSwgVHJ1c3RlZEltbVB0cihzaXplKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VTUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIGludCBzdGFydENvbnN0YW50LCBpbnQgbnVt
Q29uc3RhbnRzKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50KSwgVHJ1c3RlZEltbTMyKG51bUNvbnN0YW50
cykpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgdm9pZCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0NlbGwqIGNlbGwpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
cihjZWxsKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJ
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBH
UFJSZWcgYXJnMSwgY29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZv
KSwgYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJS
ZWcgYXJnMSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwg
VHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRURBIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FSkMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpBIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIGludDMy
X3QgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIoYXJnMSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSwgYXJn
Mik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaSWNmWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIGlu
dDMyX3QgYXJnMSwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEdQUlJlZyBhcmcy
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW0zMihhcmcxKSwgVHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUpLCBhcmcyKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFs
dWUsIHNpemVfdCBpbmRleCkKQEAgLTEzNjYsMjggKzEzNjYsMjggQEAgcHVibGljOgogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0SiBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgYXJnMikKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKSkMgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmcz
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VK
WkMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9KIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewpAQCAtMTM5NywxMjIgKzEzOTcsMTIyIEBA
IHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0
aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklU
T3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGltbS5tX3ZhbHVlKSkpKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMiBpbW0sIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGltbS5tX3ZhbHVlKSkpLCBhcmcyKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ0ogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBh
cmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIuZ3ByKCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPWkQgb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpQUCBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgdm9pZCogcG9pbnRlcikKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1t
UHRyKHBvaW50ZXIpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
U3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyks
IGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oVl9KSVRPcGVyYXRpb25fRUpKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlv
bik7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FT1pKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlv
bl9FQ0pKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9
CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklUT3BlcmF0aW9uX0VK
IG9wZXJhdGlvbiwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRp
b25fRUpaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCB1bnNpZ25lZCBh
cmcyLCB1bnNpZ25lZCBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihhcmcyKSwgVHJ1c3RlZEltbTMyKGFyZzMp
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oRl9KSVRPcGVyYXRpb25fRUZKWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIHVuc2lnbmVkIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRy
dXN0ZWRJbW0zMihhcmczKSwgYXJnNCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VKWiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCB1bnNpZ25lZCBhcmcyKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihh
cmcyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VaSlpaWiBvcGVyYXRpb24sIHVuc2lnbmVkIGFyZzEs
IEdQUlJlZyBhcmcyLCB1bnNpZ25lZCBhcmczLCBHUFJSZWcgYXJnNCwgdW5zaWduZWQgYXJnNSkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tMzIoYXJnMSksIGFyZzIsIFRydXN0ZWRJbW0zMihhcmczKSwgYXJnNCwgVHJ1c3RlZEltbTMy
KGFyZzUpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3Bl
cmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAj
ZWxzZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQogCkBAIC0xNTQ0LDg4ICsxNTQ0LDg4IEBAIHB1Ymxp
YzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0Ug
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIHZvaWQqIHBvaW50ZXIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VQUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQ
YXlsb2FkLCBHUFJSZWcgYXJnMSwgdm9pZCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIp
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BS
UmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxv
YWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUEgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBWiBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJl
ZyByZXN1bHRUYWcsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwg
R1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNz
WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0
VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcs
IEdQUlJlZyByZXN1bHRQYXlsb2FkLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KHBvaW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCBy
ZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGludCBzdGFydENvbnN0YW50LCBpbnQgbnVtQ29u
c3RhbnRzKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50KSwgVHJ1c3RlZEltbTMyKG51bUNvbnN0YW50cykp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
SlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BS
UmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgdm9pZCogcG9pbnRlcikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKUCBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcx
UGF5bG9hZCwgYXJnMVRhZywgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQ
YXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9h
ZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJl
ZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIo
Y2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FSnNjQ0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BSUmVnIGFyZzIpCiAgICAgewpAQCAt
MTYzNSw1NyArMTYzNSw1NyBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpQ0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJS
ZWcgYXJnMSwgY29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwg
YXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BS
UmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKHN0dWJJbmZvKSwgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlk
KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VTc2lKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIGludDMyX3QgYXJnMVRhZywgR1BSUmVnIGFy
ZzFQYXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcx
UGF5bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzFUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FREEgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgRlBSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQ
UlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQs
IGFyZzFUYWcsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgVHJ1c3RlZEltbTMyIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BS
UmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcx
VGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwg
R1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIGludDMyX3QgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSkpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQs
IHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWkljZlogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgaW50MzJfdCBhcmcxLCBJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpLCBUcnVzdGVk
SW1tUHRyKGlubGluZUNhbGxGcmFtZSksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJl
c3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgaW50MzJfdCBhcmcxLCBHUFJSZWcgYXJnMikKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIoYXJnMSksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFBfSklUT3BlcmF0aW9uX0VKUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTVmFsdWVSZWdz
IHZhbHVlLCBzaXplX3QgaW5kZXgpCkBAIC0xNjk3LDEzNyArMTY5NywxMzIgQEAgcHVibGljOgog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0SiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgYXJn
MlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMlBheWxvYWQs
IGFyZzJUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcx
UGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKLSAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9KIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKLSAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMy
QklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25f
RUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcx
UGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwg
YXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRU
YWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXls
b2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFy
ZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBhcmcy
VGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQs
IEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJC
SVRfRFVNTVlfQVJHIGltbSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyIGltbSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9h
ZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJ
XzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIFNI
NF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBh
eWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRU
YWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50
YWdHUFIoKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5
bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
Mik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwog
ICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRp
b25fRU9aRCBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcg
YXJnMVBheWxvYWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpQUCBvcGVyYXRpb24sIEdQUlJl
ZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2ludGVy
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklf
MzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1tUHRy
KHBvaW50ZXIpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3Np
SkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMVRh
ZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5
bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24p
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDSkogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVn
IGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1Bh
eWxvYWQsIGFyZzNUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwog
ICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRp
b25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNU
YWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJC
SVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJ
VF9EVU1NWV9BUkcgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7Ci0g
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9aSiBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzNUYWcsIEdQUlJlZyBhcmcz
UGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFy
ZzNQYXlsb2FkLCBhcmczVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklUT3Bl
cmF0aW9uX0VKIG9wZXJhdGlvbiwgRlBSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJl
ZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Wl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
VGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIHVuc2lnbmVkIGFyZzIsIHVuc2lnbmVkIGFyZzMpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJ
VF9EVU1NWV9BUkcgIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tMzIoYXJnMiksIFRy
dXN0ZWRJbW0zMihhcmczKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxv
YWQsIHVuc2lnbmVkIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVz
dGVkSW1tMzIoYXJnMyksIGFyZzQpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCB1bnNpZ25l
ZCBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tMzIo
YXJnMikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWkpaWlogb3BlcmF0aW9uLCB1bnNpZ25lZCBhcmcx
LCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCB1bnNpZ25lZCBhcmczLCBHUFJS
ZWcgYXJnNCwgdW5zaWduZWQgYXJnNSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzJQYXlsb2FkLCBhcmcyVGFn
LCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQsIFRydXN0ZWRJbW0zMihhcmc1KSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogI3VuZGVmIEVBQklfMzJCSVRf
RFVNTVlfQVJHCiAjdW5kZWYgU0g0XzMyQklUX0RVTU1ZX0FSRwpAQCAtMTg5OSwyOCArMTg5NCwy
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkgeyB9CiAjZW5k
aWYKIAotICAgIC8vIFRoZXNlIG1ldGhvZHMgYWRkIGNhbGwgaW5zdHJ1Y3Rpb25zLCB3aXRoIG9w
dGlvbmFsIGV4Y2VwdGlvbiBjaGVja3MgJiBzZXR0aW5nIHJlc3VsdHMuCi0gICAgSklUQ29tcGls
ZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0ciYg
ZnVuY3Rpb24pCisgICAgdm9pZCBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpCiAgICAgewotICAg
ICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7Ci0gICAgICAgIG1faml0LmVtaXRTdG9yZUNv
ZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9Ci0gICAg
SklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0
aW9uKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFk
ZCBjYWxsIGluc3RydWN0aW9ucywgd2l0aCBvcHRpb25hbCBleGNlcHRpb24gY2hlY2tzICYgc2V0
dGluZyByZXN1bHRzLgorICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGwoY29uc3QgRnVu
Y3Rpb25QdHImIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2Fs
bCgpOwogICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5h
cHBlbmRDYWxsKGZ1bmN0aW9uKTsKLSAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2tXaXRoQ2Fs
bEZyYW1lUm9sbGJhY2soKTsKLSAgICAgICAgcmV0dXJuIGNhbGw7CisgICAgICAgIHJldHVybiBt
X2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwg
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYg
ZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2Fs
bFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5j
dGlvbikKICAgICB7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKLSAgICAgICAgaWYgKChyZXN1bHQgIT0gSW52
YWxpZEdQUlJlZykgJiYgKHJlc3VsdCAhPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpCi0gICAg
ICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOworICAg
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrV2l0aENhbGxGcmFtZVJvbGxiYWNrKCk7CiAgICAgICAg
IHJldHVybiBjYWxsOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0
aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb25TZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHIm
IGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQpAQCAtMTkzMiwzNSArMTkyMCwxOCBAQCBwdWJsaWM6
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3Qg
RnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQogICAgIHsKLSAgICAgICAgcHJl
cGFyZUZvckV4dGVybmFsQ2FsbCgpOwotICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2lu
KG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAgICAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgICAgICBpZiAocmVzdWx0
ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVy
blZhbHVlR1BSLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9Ci0gICAgSklU
Q29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCisg
ICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFNldFJlc3VsdChjb25zdCBGdW5jdGlvblB0
ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQxLCBHUFJSZWcgcmVzdWx0MikKICAgICB7Ci0gICAg
ICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKLSAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ29k
ZU9yaWdpbihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICByZXR1cm4g
bV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7Ci0gICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxs
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHIm
IGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCi0gICAgewotICAgICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhm
dW5jdGlvbik7CisgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1
bmN0aW9uKTsKICAgICAgICAgbV9qaXQuc2V0dXBSZXN1bHRzKHJlc3VsdDEsIHJlc3VsdDIpOwog
ICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAjaWYgQ1BVKFg4NikKLSAgICBKSVRDb21waWxl
cjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0
aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsK
LSAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkRlBSUmVnKSB7Ci0gICAgICAgICAgICBtX2pp
dC5hc3NlbWJsZXIoKS5mc3RwbCgwLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIsIHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGNhbGw7Ci0gICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rp
b25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0KQogICAgIHsKICAgICAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24pOwpAQCAtMTk3MSwxMyArMTk0Miw2
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQogI2VsaWYgQ1BVKEFSTSkg
JiYgIUNQVShBUk1fSEFSREZQKQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBGUFJS
ZWcgcmVzdWx0KQotICAgIHsKLSAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOwotICAgICAgICBpZiAocmVzdWx0ICE9
IEludmFsaWRGUFJSZWcpCi0gICAgICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS52bW92KHJlc3Vs
dCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7Ci0g
ICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRD
YWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkK
ICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0
aW9uKTsKQEAgLTE5ODYsMTMgKzE5NTAsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjYWxs
OwogICAgIH0KICNlbHNlIC8vIENQVShYODZfNjQpIHx8IChDUFUoQVJNKSAmJiBDUFUoQVJNX0hB
UkRGUCkpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShTSDQpCi0gICAgSklUQ29t
cGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBG
dW5jdGlvblB0ciYgZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQpCi0gICAgewotICAgICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlv
bik7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZEZQUlJlZykKLSAgICAgICAgICAgIG1f
aml0Lm1vdmVEb3VibGUoRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIsIHJlc3VsdCk7Ci0gICAgICAg
IHJldHVybiBjYWxsOwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0
UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7
CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVw
b3NpdG9yeS5oCShyZXZpc2lvbiAxODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhWX0pJVE9wZXJh
dGlvbl9FWkpaWlosIGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSwgaW50UHRyLCBpbnQzMiwgaW50NjQs
IGludDMyLCBpbnQzMiwgaW50MzIpKSBcCiAgICAgbWFjcm8oVl9KSVRPcGVyYXRpb25fSiwgZnVu
Y3Rpb25UeXBlKHZvaWRUeXBlLCBpbnQ2NCkpIFwKICAgICBtYWNybyhWX0pJVE9wZXJhdGlvbl9a
LCBmdW5jdGlvblR5cGUodm9pZFR5cGUsIGludDMyKSkgXAorICAgIG1hY3JvKFZfSklUT3BlcmF0
aW9uX0UsIGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSwgaW50UHRyKSkgXAogICAgIG1hY3JvKFpfSklU
T3BlcmF0aW9uX0QsIGZ1bmN0aW9uVHlwZShpbnQzMiwgZG91YmxlVHlwZSkpIFwKICAgICBtYWNy
byhaX0pJVE9wZXJhdGlvbl9FQywgZnVuY3Rpb25UeXBlKGludDMyLCBpbnRQdHIsIGludFB0cikp
IFwKICAgICBtYWNybyhaX0pJVE9wZXJhdGlvbl9FR0MsIGZ1bmN0aW9uVHlwZShpbnQzMiwgaW50
UHRyLCBpbnRQdHIsIGludFB0cikpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxODg3NTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODA0OSw3ICs4MDQ5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbGxDaGVjaygpCiAgICAg
ewogICAgICAgICBpZiAoT3B0aW9uczo6ZW5hYmxlRXhjZXB0aW9uRnV6eigpKQotICAgICAgICAg
ICAgbV9vdXQuY2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eikpOwor
ICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRXhjZXB0aW9u
RnV6eiksIG1fY2FsbEZyYW1lKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRXhjZXB0aW9uIGNoZWNrIGNvbnRpbnVh
dGlvbiIpKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAxODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw2ICsx
OTQsMTkgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydEFyZ3VtZW50QwogICAgIGFi
b3J0V2l0aFJlYXNvbihBSEluc2FuZUFyZ3VtZW50Q291bnQpOwogICAgIG9rLmxpbmsodGhpcyk7
CiB9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnROb0V4Y2VwdGlvbigpCit7Cisg
ICAgSnVtcCBub0V4Y2VwdGlvbjsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIG5vRXhjZXB0aW9u
ID0gYnJhbmNoVGVzdDY0KFplcm8sIEFic29sdXRlQWRkcmVzcyh2bSgpLT5hZGRyZXNzT2ZFeGNl
cHRpb24oKSkpOworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBub0V4Y2VwdGlvbiA9IGJy
YW5jaDMyKEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3Modm0oKS0+YWRkcmVzc09mRXhjZXB0aW9uKCkp
LCBUcnVzdGVkSW1tMzIoMCkpOworI2VuZGlmCisgICAgYWJvcnRXaXRoUmVhc29uKEpJVFVuY291
Z2h0RXhjZXB0aW9uQWZ0ZXJDYWxsKTsKKyAgICBub0V4Y2VwdGlvbi5saW5rKHRoaXMpOworfQor
CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y2Fs
bEV4Y2VwdGlvbkZ1enooKQpAQCAtMjAxLDE1ICsyMTQsNDAgQEAgdm9pZCBBc3NlbWJseUhlbHBl
cnM6OmNhbGxFeGNlcHRpb25GdXp6KAogICAgIGlmICghT3B0aW9uczo6ZW5hYmxlRXhjZXB0aW9u
RnV6eigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoc3RhY2tBbGlnbm1lbnRCeXRl
cygpID49IHNpemVvZih2b2lkKikgKiAyKTsKLSAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKHN0YWNr
QWxpZ25tZW50Qnl0ZXMoKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBwb2tlKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSLCAwKTsKLSAgICBwb2tlKEdQUkluZm86OnJldHVyblZhbHVlR1BS
MiwgMSk7CisgICAgRW5jb2RlZEpTVmFsdWUqIGJ1ZmZlciA9IHZtKCktPmV4Y2VwdGlvbkZ1enpp
bmdCdWZmZXIoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKSk7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIHN0b3JlNjQoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVy
ICsgaSk7CisjZWxzZQorICAgICAgICBzdG9yZTMyKEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1
ZmZlciArIGkpOworI2VuZGlmCisgICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBG
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpy
ZWdUMCk7CisgICAgICAgIHN0b3JlRG91YmxlKEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIEFkZHJl
c3MoR1BSSW5mbzo6cmVnVDApKTsKKyAgICB9CisKKyAgICAvLyBTZXQgdXAgb25lIGFyZ3VtZW50
LgorI2lmIENQVShYODYpCisgICAgcG9rZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7
CisjZWxzZQorICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisjZW5kaWYKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0
PHZvaWQqPihvcGVyYXRpb25FeGNlcHRpb25GdXp6KSksIEdQUkluZm86Om5vblByZXNlcnZlZE5v
blJldHVybkdQUik7CiAgICAgY2FsbChHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIp
OwotICAgIHBlZWsoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIDApOwotICAgIHBlZWsoR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIyLCAxKTsKLSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrQWxp
Z25tZW50Qnl0ZXMoKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyAr
IGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGxvYWREb3VibGUoQWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCksIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgIH0KKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIGxvYWQ2NChidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lz
dGVyKGkpKTsKKyNlbHNlCisgICAgICAgIGxvYWQzMihidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpKTsKKyNlbmRpZgorICAgIH0KIH0KIAogQXNzZW1ibHlIZWxwZXJzOjpKdW1wIEFz
c2VtYmx5SGVscGVyczo6ZW1pdEV4Y2VwdGlvbkNoZWNrKEV4Y2VwdGlvbkNoZWNrS2luZCBraW5k
LCBFeGNlcHRpb25KdW1wV2lkdGggd2lkdGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE4ODc1MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTczMiw2
ICs3MzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBqaXRBc3NlcnRJc051bGwoR1BSUmVnKTsKICAg
ICB2b2lkIGppdEFzc2VydFRhZ3NJblBsYWNlKCk7CiAgICAgdm9pZCBqaXRBc3NlcnRBcmd1bWVu
dENvdW50U2FuZSgpOworICAgIHZvaWQgaml0QXNzZXJ0Tm9FeGNlcHRpb24oKTsKICNlbHNlCiAg
ICAgdm9pZCBqaXRBc3NlcnRJc0ludDMyKEdQUlJlZykgeyB9CiAgICAgdm9pZCBqaXRBc3NlcnRJ
c0pTSW50MzIoR1BSUmVnKSB7IH0KQEAgLTc0Miw2ICs3NDMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBqaXRBc3NlcnRJc051bGwoR1BSUmVnKSB7IH0KICAgICB2b2lkIGppdEFzc2VydFRhZ3NJblBs
YWNlKCkgeyB9CiAgICAgdm9pZCBqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpIHsgfQorICAg
IHZvaWQgaml0QXNzZXJ0Tm9FeGNlcHRpb24oKSB7IH0KICNlbmRpZgogICAgIAogICAgIHZvaWQg
cHVyaWZ5TmFOKEZQUlJlZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE4ODc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMTQsMTAgKzIwMTQs
MTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZNSGFuZGxlRXhjZQogLy8gb3Vyc2Vs
dmVzIHRvIHBsYXkgc29tZSBnbmFybHkgQUJJIHRyaWNrcyBqdXN0IHRvIHNpbXBsaWZ5IHRoZSBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMgaXMKIC8vIHBhcnRpY3VsYXJseSBzYWZlIGhlcmUgc2lu
Y2UgdGhpcyBpcyBuZXZlciBjYWxsZWQgb24gdGhlIGNyaXRpY2FsIHBhdGggLSBpdCdzIG9ubHkg
Zm9yCiAvLyB0ZXN0aW5nLgotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1
enooKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enooRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSBzdGF0aWNfY2FzdDxFeGVjU3RhdGUqPihfX2J1aWx0aW5fZnJh
bWVfYWRkcmVzcygxKSk7CiAgICAgdm9pZCogcmV0dXJuUEMgPSBfX2J1aWx0aW5fcmV0dXJuX2Fk
ZHJlc3MoMCk7CiAgICAgZG9FeGNlcHRpb25GdXp6aW5nKGV4ZWMsICJKSVRPcGVyYXRpb25zIiwg
cmV0dXJuUEMpOwogI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19PUl9DTEFORykKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxODg3NTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25PU1JXcml0
ZUJhcnIKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluaXRHbG9iYWxDb25zdChFeGVj
U3RhdGUqLCBJbnN0cnVjdGlvbiopOwogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRXhj
ZXB0aW9uRnV6eigpOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enoo
RXhlY1N0YXRlKik7CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFz
R2VuZXJpY1Byb3BlcnR5KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwqKTsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KEV4
ZWNTdGF0ZSosIEpTQ2VsbCosIGludDMyX3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAkocmV2aXNpb24gMTg4NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIsNiArMzQyLDkgQEAgVk06On5WTSgp
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNjcmF0Y2hCdWZmZXJzLnNpemUoKTsgKytp
KQogICAgICAgICBmYXN0RnJlZShzY3JhdGNoQnVmZmVyc1tpXSk7CiAjZW5kaWYKKworICAgIGlm
IChtX2V4Y2VwdGlvbkZ1enpCdWZmZXIpCisgICAgICAgIGZhc3RGcmVlKG1fZXhjZXB0aW9uRnV6
ekJ1ZmZlcik7CiB9CiAKIFJlZjxWTT4gVk06OmNyZWF0ZUNvbnRleHRHcm91cChIZWFwVHlwZSBo
ZWFwVHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTg4
NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5
KQpAQCAtNDc3LDYgKzQ3NywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCisgICAgRW5jb2RlZEpTVmFsdWUqIGV4Y2VwdGlvbkZ1enppbmdCdWZmZXIoc2l6ZV90
IHNpemUpCisgICAgeworICAgICAgICBBU1NFUlQoT3B0aW9uczo6ZW5hYmxlRXhjZXB0aW9uRnV6
eigpKTsKKyAgICAgICAgaWYgKCFtX2V4Y2VwdGlvbkZ1enpCdWZmZXIpCisgICAgICAgICAgICBt
X2V4Y2VwdGlvbkZ1enpCdWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGZhc3RN
YWxsb2Moc2l6ZSkpOworICAgICAgICByZXR1cm4gbV9leGNlcHRpb25GdXp6QnVmZmVyOworICAg
IH0KKwogICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMm
KTsKIAogICAgIFZNRW50cnlTY29wZSogZW50cnlTY29wZTsKQEAgLTYxMiw2ICs2MjAsNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250cm9sRmxvd1Byb2ZpbGVyPiBtX2NvbnRy
b2xGbG93UHJvZmlsZXI7CiAgICAgdW5zaWduZWQgbV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxl
ZENvdW50OwogICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPj4gbV9taWNyb3Rh
c2tRdWV1ZTsKKyAgICBFbmNvZGVkSlNWYWx1ZSogbV9leGNlcHRpb25GdXp6QnVmZmVyIHsgbnVs
bHB0ciB9OwogfTsKIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259594</attachid>
            <date>2015-08-21 02:05:36 -0700</date>
            <delta_ts>2015-08-21 11:07:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>119255</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4NzUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBA
QAorMjAxNS0wOC0yMSAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBERkcgY2FsbE9wZXJhdGlvbnMgc2hvdWxkIG5vdCBpbXBsaWNpdGx5IGVtaXQgYW4gZXhjZXB0
aW9uIGNoZWNrLiBBdCBjYWxsT3BlcmF0aW9uIGNhbGwgc2l0ZXMsIHdlIHNob3VsZCBleHBsaWNp
dGx5IGVtaXQgZXhjZXB0aW9uIGNoZWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3OTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIERGRyBiZWlu
ZyBhYmxlIHRvIGhhbmRsZSBleGNlcHRpb25zLiAKKyAgICAgICAgVG8gZG8gdGhpcywgd2UgbmVl
ZCBtb3JlIGNvbnRyb2wgb3ZlciB3aGVuIHdlIGVtaXQgZXhjZXB0aW9uIGNoZWNrcy4KKyAgICAg
ICAgU3BlY2lmaWNhbGx5LCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gc2lsZW50RmlsbCBiZWZvcmUg
ZW1pdHRpbmcgYW4gZXhjZXB0aW9uIGNoZWNrLgorICAgICAgICBUaGlzIHBhdGNoIGRvZXMgdGhh
dC4gVGhpcyBwYXRjaCBhbHNvIGFsbG93cyB1cyB0byBlYXNpbHkgc2VlIHdoaWNoCisgICAgICAg
IG9wZXJhdGlvbnMgZG8gYW5kIGRvIG5vdCBlbWl0IGV4Y2VwdGlvbiBjaGVja3MuIEZpbmRpbmcg
dGhpcyBpbmZvcm1hdGlvbgorICAgICAgICBvdXQgYmVmb3JlIHdhcyBhIHBhaW4uCisKKyAgICAg
ICAgKiBhc3NlbWJsZXIvQWJvcnRSZWFzb24uaDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlpZnlT
bG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJn
dW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YXBwZW5kQ2FsbCk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmV4Y2VwdGlvbkNoZWNrKToKKyAgICAgICAgKiBkZmcv
REZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcv
REZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpDYWxsU2xvd1BhdGhH
ZW5lcmF0b3I6OkNhbGxTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6Q2Fs
bFNsb3dQYXRoR2VuZXJhdG9yOjp0ZWFyRG93bik6CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbFJl
c3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmROb0FyZ3Vt
ZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpDYWxsUmVzdWx0QW5k
T25lQXJndW1lbnRTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3VsdEFuZE9uZUFyZ3VtZW50U2xv
d1BhdGhHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxSZXN1bHRBbmRUd29Bcmd1
bWVudHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3VsdEFuZFR3b0FyZ3VtZW50c1Nsb3dQYXRo
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpDYWxsUmVzdWx0QW5kVGhyZWVBcmd1bWVu
dHNTbG93UGF0aEdlbmVyYXRvcjo6Q2FsbFJlc3VsdEFuZFRocmVlQXJndW1lbnRzU2xvd1BhdGhH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxSZXN1bHRBbmRGb3VyQXJndW1lbnRz
U2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxSZXN1bHRBbmRGaXZlQXJndW1lbnRzU2xv
d1BhdGhHZW5lcmF0b3I6OkNhbGxSZXN1bHRBbmRGaXZlQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1
cnJlbnRCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVW
YWx1ZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhSb3VuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90aWZ5V3JpdGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwRXhlYyk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5n
T3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJh
dGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb25X
aXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OnByZXBhcmVGb3JFeHRlcm5hbENhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24p
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsV2l0aENhbGxG
cmFtZVJvbGxiYWNrT25FeGNlcHRpb25TZXRSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsU2V0UmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVQZWVwaG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29tcGFyZUFuZEJveEJv
b2xlYW5TbG93UGF0aEdlbmVyYXRvcjo6Q29tcGFyZUFuZEJveEJvb2xlYW5TbG93UGF0aEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
Tm9uUGVlcGhvbGVDb21wYXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVQZWVwaG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29tcGFyZUFuZEJveEJvb2xl
YW5TbG93UGF0aEdlbmVyYXRvcjo6Q29tcGFyZUFuZEJveEJvb2xlYW5TbG93UGF0aEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGVlcGhvbGVDb21wYXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9u
U3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExJbnRyaW5zaWNSZXBvc2l0
b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjYWxsQ2hlY2spOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFz
c2VydEFyZ3VtZW50Q291bnRTYW5lKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpq
aXRBc3NlcnROb0V4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2Fs
bEV4Y2VwdGlvbkZ1enopOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRFeGNl
cHRpb25DaGVjayk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIpOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6aml0QXNzZXJ0SXNOdWxsKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpqaXRBc3NlcnRUYWdzSW5QbGFjZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6aml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmppdEFzc2VydE5vRXhjZXB0aW9uKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgIChKU0M6OlZNOjpjcmVh
dGVDb250ZXh0R3JvdXApOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6
Vk06OnNjcmF0Y2hCdWZmZXJGb3JTaXplKToKKyAgICAgICAgKEpTQzo6Vk06OmV4Y2VwdGlvbkZ1
enppbmdCdWZmZXIpOgorCiAyMDE1LTA4LTIwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIHByb3RvdHlwaW5nIG1vZHVsZSBsb2FkZXIgaW4g
SlNDIHNoZWxsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fib3J0UmVh
c29uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYm9y
dFJlYXNvbi5oCShyZXZpc2lvbiAxODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fib3J0UmVhc29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgZW51
bSBBYm9ydFJlYXNvbiB7CiAgICAgSklUR2V0QnlWYWxSZXN1bHRJc05vdEVtcHR5ICAgICAgICAg
ICAgICAgICAgICAgICA9IDI1MCwKICAgICBKSVROb3RTdXBwb3J0ZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMjYwLAogICAgIEpJVE9mZnNldElzTm90T3V0T2ZMaW5lICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAyNzAsCisgICAgSklUVW5jb3VnaHRFeGNlcHRpb25B
ZnRlckNhbGwgICAgICAgICAgICAgICAgICAgICA9IDI3NSwKICAgICBKSVRVbnJlYXNvbmFibGVM
b29wSGludEp1bXBUYXJnZXQgICAgICAgICAgICAgICAgID0gMjgwLAogICAgIFJQV1VucmVhc29u
YWJsZUp1bXBUYXJnZXQgICAgICAgICAgICAgICAgICAgICAgICAgPSAyOTAsCiAgICAgUmVwYXRj
aEluZWZmZWN0aXZlV2F0Y2hwb2ludCAgICAgICAgICAgICAgICAgICAgICA9IDMwMCwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93
UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEzLDYgKzExMyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIGppdC0+c2lsZW50Rmls
bChtX3BsYW5zW2ldLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGppdC0+Y2hlY2tFeGNlcHRp
b25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX29wID09IEFycmF5aWZ5VG9T
dHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJy
YXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxODg3NTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBHUFJSZWcgY2FuVHJhbXBsZSA9IFNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZShtX3Jl
c3VsdEdQUik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07
KQogICAgICAgICAgICAgaml0LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOwor
ICAgICAgICBqaXQtPmNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIGppdC0+bV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX3Jlc3VsdEdQUiwgSlNPYmplY3Q6
OmJ1dHRlcmZseU9mZnNldCgpKSwgbV9zdG9yYWdlR1BSKTsKICAgICAgICAganVtcFRvKGppdCk7
CiAgICAgfQpAQCAtMTA2LDYgKzEwNyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgR1BSUmVnIGNh
blRyYW1wbGUgPSBTcGVjdWxhdGl2ZUpJVDo6cGlja0NhblRyYW1wbGUobV9yZXN1bHRHUFIpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykKICAgICAgICAg
ICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldLCBjYW5UcmFtcGxlKTsKKyAgICAgICAgaml0
LT5jaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICBqdW1wVG8oaml0KTsKICAgICB9
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJl
Y3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJh
dG9yLmgJKHJldmlzaW9uIDE4ODc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYyLDYgKzYyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBHUFJSZWcgY2FuVHJhbXBs
ZSA9IFNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZShtX3Jlc3VsdEdQUik7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgaml0
LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOworICAgICAgICBqaXQtPmNoZWNr
RXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIGppdC0+bV9qaXQubG9hZFB0cigKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fcmVzdWx0R1BSLCBEaXJlY3RBcmd1bWVu
dHM6Om9mZnNldE9mTGVuZ3RoKCkpLCBtX2xlbmd0aEdQUik7CiAgICAgICAgIGp1bXBUbyhqaXQp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2
aXNpb24gMTg4NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMTEgKzE2NSw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBleGNlcHRpb25DaGVj
ayhKdW1wIGp1bXBUb0hhbmRsZXIpCi0gICAgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5h
cHBlbmQoanVtcFRvSGFuZGxlcik7Ci0gICAgfQotICAgIAogICAgIHZvaWQgZXhjZXB0aW9uQ2hl
Y2soKQogICAgIHsKICAgICAgICAgbV9leGNlcHRpb25DaGVja3MuYXBwZW5kKGVtaXRFeGNlcHRp
b25DaGVjaygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgJKHJl
dmlzaW9uIDE4ODc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3VsYXRpdmVK
SVQ6OnBpY2tDYW5UcmFtcGxlKGV4dHJhY3RSZXN1bHQobV9yZXN1bHRSZWdzKSk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgaml0
LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOworICAgICAgICBqaXQtPmNoZWNr
RXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICBqdW1wVG8oaml0KTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdl
bmVyYXRvci5oCShyZXZpc2lvbiAxODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDE1ICs4OCwyMSBA
QCBwcm90ZWN0ZWQ6CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fdG87CiB9OwogCitlbnVt
IGNsYXNzIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgeworICAgIENoZWNrTmVlZGVkLAorICAg
IENoZWNrTm90TmVlZGVkCit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5h
bWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlPgogY2xhc3MgQ2FsbFNsb3dQYXRo
R2VuZXJhdG9yIDogcHVibGljIEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZT4gewog
cHVibGljOgogICAgIENhbGxTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgSnVtcFR5cGUgZnJv
bSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAotICAgICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBSZXN1bHRUeXBlIHJlc3VsdCkKKyAgICAgICAg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCBy
ZXF1aXJlbWVudCwgUmVzdWx0VHlwZSByZXN1bHQpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRo
R2VuZXJhdG9yPEp1bXBUeXBlPihmcm9tLCBqaXQpCiAgICAgICAgICwgbV9mdW5jdGlvbihmdW5j
dGlvbikKICAgICAgICAgLCBtX3NwaWxsTW9kZShzcGlsbE1vZGUpCisgICAgICAgICwgbV9leGNl
cHRpb25DaGVja1JlcXVpcmVtZW50KHJlcXVpcmVtZW50KQogICAgICAgICAsIG1fcmVzdWx0KHJl
c3VsdCkKICAgICB7CiAgICAgICAgIGlmIChtX3NwaWxsTW9kZSA9PSBOZWVkVG9TcGlsbCkKQEAg
LTEzMCwxMSArMTM2LDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgICAgIGppdC0+c2lsZW50Rmls
bChtX3BsYW5zW2ldLCBjYW5UcmFtcGxlKTsKICAgICAgICAgfQorICAgICAgICBpZiAobV9leGNl
cHRpb25DaGVja1JlcXVpcmVtZW50ID09IEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNr
TmVlZGVkKQorICAgICAgICAgICAgaml0LT5jaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAg
ICAgICB0aGlzLT5qdW1wVG8oaml0KTsKICAgICB9CiAKICAgICBGdW5jdGlvblR5cGUgbV9mdW5j
dGlvbjsKICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgbV9zcGlsbE1vZGU7CisgICAgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudCBtX2V4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ7CiAgICAgUmVzdWx0
VHlwZSBtX3Jlc3VsdDsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBtX2NhbGw7CiAgICAgVmVj
dG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7CkBAIC0xNDYsOSArMTU1LDkg
QEAgY2xhc3MgQ2FsbFJlc3VsdEFuZE5vQXJndW1lbnRzU2xvd1BhdGhHZQogcHVibGljOgogICAg
IENhbGxSZXN1bHRBbmROb0FyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1w
VHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0g
ICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0KQor
ICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVp
cmVtZW50IHJlcXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3VsdCkKICAgICAgICAgOiBDYWxsU2xv
d1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAg
ICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAg
ICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCkK
ICAgICB7CiAgICAgfQogICAgIApAQCAtMTY5LDkgKzE3OCw5IEBAIGNsYXNzIENhbGxSZXN1bHRB
bmRPbmVBcmd1bWVudFNsb3dQYXRoR2UKIHB1YmxpYzoKICAgICBDYWxsUmVzdWx0QW5kT25lQXJn
dW1lbnRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRp
dmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAotICAgICAgICBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVu
dDEpCisgICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNr
UmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUx
IGFyZ3VtZW50MSkKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1
bmN0aW9uVHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9u
LCBzcGlsbE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNw
aWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCkKICAgICAgICAgLCBtX2FyZ3VtZW50MShhcmd1
bWVudDEpCiAgICAgewogICAgIH0KQEAgLTE5NSwxMCArMjA0LDEwIEBAIGNsYXNzIENhbGxSZXN1
bHRBbmRUd29Bcmd1bWVudHNTbG93UGF0aEcKIHB1YmxpYzoKICAgICBDYWxsUmVzdWx0QW5kVHdv
QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1
bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKLSAgICAgICAgU3BpbGxSZWdp
c3RlcnNNb2RlIHNwaWxsTW9kZSwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJn
dW1lbnQxLAorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25D
aGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRU
eXBlMSBhcmd1bWVudDEsCiAgICAgICAgIEFyZ3VtZW50VHlwZTIgYXJndW1lbnQyKQogICAgICAg
ICA6IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRU
eXBlPigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVzdWx0
KQorICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVu
dCwgcmVzdWx0KQogICAgICAgICAsIG1fYXJndW1lbnQxKGFyZ3VtZW50MSkKICAgICAgICAgLCBt
X2FyZ3VtZW50Mihhcmd1bWVudDIpCiAgICAgewpAQCAtMjI0LDEwICsyMzMsMTAgQEAgY2xhc3Mg
Q2FsbFJlc3VsdEFuZFRocmVlQXJndW1lbnRzU2xvd1BhdAogcHVibGljOgogICAgIENhbGxSZXN1
bHRBbmRUaHJlZUFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBm
cm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAg
IFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVu
dFR5cGUxIGFyZ3VtZW50MSwKKyAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwg
RXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwgUmVzdWx0VHlwZSByZXN1bHQs
IEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAogICAgICAgICBBcmd1bWVudFR5cGUyIGFyZ3VtZW50
MiwgQXJndW1lbnRUeXBlMyBhcmd1bWVudDMpCiAgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJh
dG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGU+KAotICAgICAgICAgICAgZnJv
bSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXN1bHQpCisgICAgICAgICAgICBmcm9tLCBq
aXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQpCiAgICAgICAgICwg
bV9hcmd1bWVudDEoYXJndW1lbnQxKQogICAgICAgICAsIG1fYXJndW1lbnQyKGFyZ3VtZW50MikK
ICAgICAgICAgLCBtX2FyZ3VtZW50Myhhcmd1bWVudDMpCkBAIC0yNTksMTAgKzI2OCwxMCBAQCBj
bGFzcyBDYWxsUmVzdWx0QW5kRm91ckFyZ3VtZW50c1Nsb3dQYXRoCiBwdWJsaWM6CiAgICAgQ2Fs
bFJlc3VsdEFuZEZvdXJBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgSnVtcFR5
cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAotICAg
ICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJn
dW1lbnRUeXBlMSBhcmd1bWVudDEsCisgICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1v
ZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsIFJlc3VsdFR5cGUgcmVz
dWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKICAgICAgICAgQXJndW1lbnRUeXBlMiBhcmd1
bWVudDIsIEFyZ3VtZW50VHlwZTMgYXJndW1lbnQzLCBBcmd1bWVudFR5cGU0IGFyZ3VtZW50NCkK
ICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwg
UmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUs
IHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVx
dWlyZW1lbnQsIHJlc3VsdCkKICAgICAgICAgLCBtX2FyZ3VtZW50MShhcmd1bWVudDEpCiAgICAg
ICAgICwgbV9hcmd1bWVudDIoYXJndW1lbnQyKQogICAgICAgICAsIG1fYXJndW1lbnQzKGFyZ3Vt
ZW50MykKQEAgLTI5NiwxMSArMzA1LDExIEBAIGNsYXNzIENhbGxSZXN1bHRBbmRGaXZlQXJndW1l
bnRzU2xvd1BhdGgKIHB1YmxpYzoKICAgICBDYWxsUmVzdWx0QW5kRml2ZUFyZ3VtZW50c1Nsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0
LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCi0gICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGls
bE1vZGUsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudFR5cGUxIGFyZ3VtZW50MSwKKyAgICAg
ICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dCByZXF1aXJlbWVudCwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQx
LAogICAgICAgICBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MiwgQXJndW1lbnRUeXBlMyBhcmd1bWVu
dDMsIEFyZ3VtZW50VHlwZTQgYXJndW1lbnQ0LAogICAgICAgICBBcmd1bWVudFR5cGU1IGFyZ3Vt
ZW50NSkKICAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9u
VHlwZSwgUmVzdWx0VHlwZT4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGls
bE1vZGUsIHJlc3VsdCkKKyAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9k
ZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCkKICAgICAgICAgLCBtX2FyZ3VtZW50MShhcmd1bWVudDEp
CiAgICAgICAgICwgbV9hcmd1bWVudDIoYXJndW1lbnQyKQogICAgICAgICAsIG1fYXJndW1lbnQz
KGFyZ3VtZW50MykKQEAgLTMzMCwxMCArMzM5LDEwIEBAIHByb3RlY3RlZDogICAgCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1
bHRUeXBlPgogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGhDYWxsKAogICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9u
VHlwZSBmdW5jdGlvbiwKLSAgICBSZXN1bHRUeXBlIHJlc3VsdCwgU3BpbGxSZWdpc3RlcnNNb2Rl
IHNwaWxsTW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBTcGlsbFJl
Z2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQgcmVxdWlyZW1lbnQgPSBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRl
ZCkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kTm9Bcmd1bWVu
dHNTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlPj4o
Ci0gICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVzdWx0KTsKKyAgICAg
ICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0KTsK
IH0KIAogdGVtcGxhdGU8CkBAIC0zNDIsMTAgKzM1MSwxMCBAQCB0ZW1wbGF0ZTwKIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1w
VHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCiAg
ICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQxLAotICAgIFNwaWxs
UmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCkKKyAgICBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQg
cmVxdWlyZW1lbnQgPSBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCkKIHsK
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kT25lQXJndW1lbnRTbG93
UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVu
dFR5cGUxPj4oCi0gICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVzdWx0
LCBhcmd1bWVudDEpOworICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJl
cXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50MSk7CiB9CiAKIHRlbXBsYXRlPApAQCAtMzU0LDEw
ICszNjMsMTAgQEAgdGVtcGxhdGU8CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aENhbGwoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQq
IGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAogICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1
bWVudFR5cGUxIGFyZ3VtZW50MSwgQXJndW1lbnRUeXBlMiBhcmd1bWVudDIsCi0gICAgU3BpbGxS
ZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSA9IE5lZWRUb1NwaWxsKQorICAgIFNwaWxsUmVnaXN0ZXJz
TW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCBy
ZXF1aXJlbWVudCA9IEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkKQogewog
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxSZXN1bHRBbmRUd29Bcmd1bWVudHNTbG93
UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVu
dFR5cGUxLCBBcmd1bWVudFR5cGUyPj4oCi0gICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNw
aWxsTW9kZSwgcmVzdWx0LCBhcmd1bWVudDEsIGFyZ3VtZW50Mik7CisgICAgICAgIGZyb20sIGpp
dCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnQxLCBh
cmd1bWVudDIpOwogfQogCiB0ZW1wbGF0ZTwKQEAgLTM2NiwxMCArMzc1LDEwIEBAIHRlbXBsYXRl
PAogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxs
KAogICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBm
dW5jdGlvbiwKICAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRUeXBlMSBhcmd1bWVudDEs
IEFyZ3VtZW50VHlwZTIgYXJndW1lbnQyLAotICAgIEFyZ3VtZW50VHlwZTMgYXJndW1lbnQzLCBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwpCisgICAgQXJndW1lbnRU
eXBlMyBhcmd1bWVudDMsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGls
bCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCA9IEV4Y2VwdGlvbkNoZWNr
UmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkKQogewogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhbGxSZXN1bHRBbmRUaHJlZUFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBG
dW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50VHlwZTEsIEFyZ3VtZW50VHlwZTIsCi0g
ICAgICAgIEFyZ3VtZW50VHlwZTM+Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJl
c3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIsIGFyZ3VtZW50Myk7CisgICAgICAgIEFyZ3VtZW50
VHlwZTM+Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1
bHQsIGFyZ3VtZW50MSwgYXJndW1lbnQyLCBhcmd1bWVudDMpOwogfQogCiB0ZW1wbGF0ZTwKQEAg
LTM4MCwxMCArMzg5LDEwIEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3IKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUg
ZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQx
LCBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MiwKICAgICBBcmd1bWVudFR5cGUzIGFyZ3VtZW50Mywg
QXJndW1lbnRUeXBlNCBhcmd1bWVudDQsCi0gICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSA9IE5lZWRUb1NwaWxsKQorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVk
VG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCA9IEV4Y2VwdGlv
bkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkKQogewogICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxSZXN1bHRBbmRGb3VyQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5
cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRUeXBlMSwgQXJndW1lbnRUeXBl
MiwKLSAgICAgICAgQXJndW1lbnRUeXBlMywgQXJndW1lbnRUeXBlND4+KGZyb20sIGppdCwgZnVu
Y3Rpb24sIHNwaWxsTW9kZSwgcmVzdWx0LCBhcmd1bWVudDEsIGFyZ3VtZW50MiwgYXJndW1lbnQz
LCBhcmd1bWVudDQpOworICAgICAgICBBcmd1bWVudFR5cGUzLCBBcmd1bWVudFR5cGU0Pj4oZnJv
bSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0LCBhcmd1bWVu
dDEsIGFyZ3VtZW50MiwgYXJndW1lbnQzLCBhcmd1bWVudDQpOwogfQogCiB0ZW1wbGF0ZTwKQEAg
LTM5NCwxMCArNDAzLDEwIEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3IKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUg
ZnVuY3Rpb24sCiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50VHlwZTEgYXJndW1lbnQx
LCBBcmd1bWVudFR5cGUyIGFyZ3VtZW50MiwKICAgICBBcmd1bWVudFR5cGUzIGFyZ3VtZW50Mywg
QXJndW1lbnRUeXBlNCBhcmd1bWVudDQsIEFyZ3VtZW50VHlwZTUgYXJndW1lbnQ1LAotICAgIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUgPSBOZWVkVG9TcGlsbCkKKyAgICBTcGlsbFJlZ2lz
dGVyc01vZGUgc3BpbGxNb2RlID0gTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1l
bnQgcmVxdWlyZW1lbnQgPSBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCkK
IHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kRml2ZUFyZ3VtZW50
c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFy
Z3VtZW50VHlwZTEsIEFyZ3VtZW50VHlwZTIsCi0gICAgICAgIEFyZ3VtZW50VHlwZTMsIEFyZ3Vt
ZW50VHlwZTQsIEFyZ3VtZW50VHlwZTU+Pihmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUs
IHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIsIGFyZ3VtZW50MywKKyAgICAgICAgQXJndW1l
bnRUeXBlMywgQXJndW1lbnRUeXBlNCwgQXJndW1lbnRUeXBlNT4+KGZyb20sIGppdCwgZnVuY3Rp
b24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnQxLCBhcmd1bWVudDIs
IGFyZ3VtZW50MywKICAgICAgICAgYXJndW1lbnQ0LCBhcmd1bWVudDUpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAJKHJldmlzaW9uIDE4ODc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Nyw2ICszODcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVz
dWx0R1BSLCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxv
YWRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogCiAgICAgICAgIGJy
YW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9
IGVsc2UgewpAQCAtNDEwLDYgKzQxMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1
bGF0aXZlUGVlcGgKICAgICAKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdEdQUik7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1
bHRHUFIsIGFyZzFUYWdHUFIsIGFyZzFQYXlsb2FkR1BSLCBhcmcyVGFnR1BSLCBhcmcyUGF5bG9h
ZEdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAg
ICAgIGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1bHRHUFIsIHRha2VuKTsK
QEAgLTQzMSw3ICs0MzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNfSklUT3BlcmF0aW9uX0VKSiBm
dW5jdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCwKICAgICAgICAgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICAgICAg
OiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFNfSklUT3BlcmF0aW9uX0VKSiwgR1BS
UmVnPigKLSAgICAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIE5lZWRUb1NwaWxsLCByZXN1
bHQpCisgICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBOZWVkVG9TcGlsbCwgRXhjZXB0
aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsIHJlc3VsdCkKICAgICAgICAgLCBtX2Fy
ZzFUYWcoYXJnMVRhZykKICAgICAgICAgLCBtX2FyZzFQYXlsb2FkKGFyZzFQYXlsb2FkKQogICAg
ICAgICAsIG1fYXJnMlRhZyhhcmcyVGFnKQpAQCAtNDc4LDYgKzQ4MCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRQYXlsb2FkR1BS
LCBhcmcxVGFnR1BSLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlRhZ0dQUiwgYXJnMlBheWxvYWRHUFIp
OworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAKICAgICAgICAg
Ym9vbGVhblJlc3VsdChyZXN1bHRQYXlsb2FkR1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOwogICAgIH0gZWxzZSB7CkBAIC01MzgsNiArNTQxLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAgICAKICAgICAgICAgc2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQ
UiwgYXJnMVBheWxvYWRHUFIsIGFyZzJUYWdHUFIsIGFyZzJQYXlsb2FkR1BSKTsKKyAgICAgICAg
Y2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVy
cyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZl
cnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRQYXls
b2FkR1BSLCB0YWtlbik7CkBAIC01NDYsNiArNTUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaAogCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdFBheWxvYWRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVT
dHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxvYWRHUFIsIGFy
ZzJUYWdHUFIsIGFyZzJQYXlsb2FkR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNh
bGwoKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsK
ICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVy
byA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRQYXlsb2FkR1BSLCB0YWtlbik7CkBAIC01
ODIsNiArNTg3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQog
ICAgICAgICAKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQ
Uik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwg
cmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxvYWRHUFIsIGFyZzJUYWdHUFIs
IGFyZzJQYXlsb2FkR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAg
ICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAg
CiAgICAgICAgIG1faml0LmFuZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKDEpLCByZXN1
bHRQYXlsb2FkR1BSKTsKQEAgLTU5Myw2ICs1OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpu
b25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3Vs
dFBheWxvYWRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJp
Y3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVRhZ0dQUiwgYXJnMVBheWxvYWRHUFIsIGFyZzJU
YWdHUFIsIGFyZzJQYXlsb2FkR1BSKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAg
ICAgICAgCiAgICAgICAgIG1faml0LmFuZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKDEp
LCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICB9CkBAIC02NzgsNiArNjg1LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJm1f
aml0KTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJm
bG93Rm9yVmFyYXJncyk7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
ICAgICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhE
aWROb3RUaHJvdyk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgICAg
IHJlc3VsdEdQUiA9IHNjcmF0Y2hHUFIyOwpAQCAtNzEwLDYgKzcxOCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIC8vIFJpZ2h0IG5vdywg
YXJndW1lbnRzIGlzIGluIGFyZ3VtZW50c1RhZ0dQUi9hcmd1bWVudHNQYXlsb2FkR1BSIGFuZCB0
aGUgcmVnaXN0ZXIgZmlsZSBpcwogICAgICAgICAgICAgLy8gZmx1c2hlZC4KICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIGFyZ3VtZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwgbnVtVXNl
ZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICAgICAgICAgIGNoZWNr
RXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE5vdyB3
ZSBoYXZlIHRoZSBhcmd1bWVudCBjb3VudCBvZiB0aGUgY2FsbGVlIGZyYW1lLCBidXQgd2UndmUg
bG9zdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQuCiAgICAgICAgICAgICAvLyBSZWNvbnN0cnVjdCB0
aGUgYXJndW1lbnRzIG9wZXJhbmQgd2hpbGUgcHJlc2VydmluZyB0aGUgY2FsbGVlIGZyYW1lLgpA
QCAtNzE5LDYgKzcyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5v
ZGUKICAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykgKyBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRl
cygpLCA2ICogc2l6ZW9mKHZvaWQqKSkpKSwgc2NyYXRjaEdQUjEsIEpJVENvbXBpbGVyOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBz
Y3JhdGNoR1BSMSwgYXJndW1lbnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BSLCBkYXRhLT5m
aXJzdFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAg
Y2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIHJlc3VsdEdQUiA9IEdQUklu
Zm86OnJldHVyblZhbHVlR1BSOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE1MTQsNyAr
MTUyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29s
ZWFuLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxVGFnR1BSLAotICAgICAgICAgICAgICAgIGFyZzFQ
YXlsb2FkR1BSKSk7CisgICAgICAgICAgICAgICAgYXJnMVBheWxvYWRHUFIsIE5lZWRUb1NwaWxs
LCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05vdE5lZWRlZCkpOwogICAgIAogICAg
ICAgICBtX2ppdC54b3IzMihUcnVzdGVkSW1tMzIoMSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAg
ICAgICBib29sZWFuUmVzdWx0KHJlc3VsdFBheWxvYWRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2Fs
bGVkRXhwbGljaXRseSk7CkBAIC0yMDQxLDYgKzIwNTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blZhbHVlQWRkTm90TnVtYmVyLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCks
IG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiwgb3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZCwg
cmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBvcDFUYWdHUFIsIG9wMVBheWxv
YWRHUFIsIG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9u
QWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZy5n
cHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjMz
Nyw2ICsyMzQ4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKICAgICAg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsQ2VsbCwgcmVzdWx0VGFnLmdwcigp
LCByZXN1bHRQYXlsb2FkLmdwcigpLCBiYXNlR1BSLCBwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHlQ
YXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1
bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjYwNCw2ICsy
NjE2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3RDZWxsTm9uU3RyaWN0LCBiYXNlR1BSLCBwcm9wZXJ0eVRhZ0dQUiwgcHJvcGVydHlQYXls
b2FkR1BSLCB2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmlj
dE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
Q2VsbE5vblN0cmljdCwgYmFzZUdQUiwgcHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UGF5bG9hZEdQ
UiwgdmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2Vw
dGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBub1Jlc3VsdChub2Rl
KTsKICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsKQEAgLTI3NTcsNiArMjc3MCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3Qs
IHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAgICAgICAgY2hlY2tF
eGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gTXVzdCB1
c2UganNWYWx1ZVJlc3VsdCBiZWNhdXNlIG90aGVyd2lzZSB3ZSBzY3JldyB1cCByZWdpc3Rlcgog
ICAgICAgICAgICAgLy8gYWxsb2NhdGlvbiwgd2hpY2ggdGhpbmtzIHRoYXQgdGhpcyBub2RlIGhh
cyBhIHJlc3VsdC4KQEAgLTI3NzMsNiArMjc4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRh
Zyh0aGlzKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlz
KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjLCByZXN1bHRUYWcu
Z3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAg
ICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0yNzg3LDYgKzI4MDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25SZWdFeHBUZXN0LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAg
ICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIC8vIElm
IHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCiAgICAgICAg
IGJvb2xlYW5SZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKQEAgLTMyMDcsNiArMzIyMyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICBBU1NFUlQob3AgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKICAgICAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBv
cDFUYWdHUFIsIG9wMVBheWxvYWRHUFIpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2hl
Y2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIGlmIChkb25lLmlzU2V0KCkpCiAg
ICAgICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0zMzAxLDYgKzMzMTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhp
bmdUeXBlKCkpKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAg
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMzM3OCw2ICszMzk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAg
b3BlcmF0aW9uTmV3QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkp
LAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZCo+KGJ1ZmZlciksIG5vZGUtPm51bUNoaWxk
cmVuKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogCiAgICAgICAgIGlm
IChzY3JhdGNoU2l6ZSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CkBAIC0zNDU4LDYgKzM0NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICBjYWxsT3BlcmF0aW9u
KAogICAgICAgICAgICAgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBzdHJ1
Y3R1cmVHUFIsIHNpemVHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KQEAgLTM1MDMsNiArMzUyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVz
dWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVy
aW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQo
KSwgbm9kZS0+bnVtQ29uc3RhbnRzKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2Fs
bCgpOwogICAgICAgICAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTM1MjgsNiArMzU0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFy
cmF5V2l0aE9uZUFyZ3VtZW50Rm9yVHlwZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKICAgICAg
ICAgICAgICAgICByZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZShu
b2RlLT50eXBlZEFycmF5VHlwZSgpKSwKICAgICAgICAgICAgICAgICBhcmd1bWVudFRhZ0dQUiwg
YXJndW1lbnRQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxs
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzU0NSw2ICszNTY3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdSZWdleHAsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbV9q
aXQuY29kZUJsb2NrKCktPnJlZ2V4cChub2RlLT5yZWdleHBJbmRleCgpKSk7CisgICAgICAgIGNo
ZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogbWFr
ZSB0aGUgY2FsbE9wZXJhdGlvbiBhYm92ZSBleHBsaWNpdGx5IHJldHVybiBhIGNlbGwgcmVzdWx0
LCBvciBqaXRBc3NlcnQgdGhlIHRhZyBpcyBhIGNlbGwgdGFnLgogICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwpAQCAtNDI0Miw2ICs0MjY1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVPZlZhcmFyZ3MsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCBhcmd1bWVudHNUYWdHUFIsIGFyZ3VtZW50c1BheWxvYWRHUFIsIGRhdGEt
Pm9mZnNldCk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAog
ICAgICAgICBsb2NrKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgewpAQCAtNDI3
MSw2ICs0Mjk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBtX2ppdC5zdG9yZTMyKGFyZ0NvdW50SW5jbHVkaW5nVGhpc0dQUiwgSklUQ29tcGls
ZXI6OnBheWxvYWRGb3IoZGF0YS0+bWFjaGluZUNvdW50KSk7CiAgICAgICAgIAogICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zm
c2V0KCksIGFyZ3VtZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiwgZGF0YS0+b2Zmc2V0
LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgZGF0YS0+bWFuZGF0b3J5TWluaW11bSk7CisgICAg
ICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICBub1Jlc3Vs
dChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00MzQ2LDYgKzQzNzEsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHksIHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgYmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIs
IHByb3BlcnR5LmdwcigpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAg
ICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtNDQ2Niw2ICs0NDkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBtX2pp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHNj
cmF0Y2hHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsQ2VsbCwg
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBiYXNlR1BSLCBzY3JhdGNoR1BSLCBwcm9w
ZXJ0eUdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAjZWxzZQogICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdFRhZyh0aGlzKTsKQEAgLTQ1MjksNiArNDU1Niw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciwgcmVz
dWx0R1BSLCBiYXNlLmdwcigpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsK
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9CkBAIC00NTcyLDYgKzQ2MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Ub0luZGV4U3RyaW5nLCByZXN1bHRHUFIsIGluZGV4LmdwcigpKTsKKyAg
ICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE4
ODc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw2ICszMzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAg
ICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgYXJnMUdQUiwg
YXJnMkdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAKICAgICAgICAg
YnJhbmNoVGVzdDMyKGNhbGxSZXN1bHRDb25kaXRpb24sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAg
IH0gZWxzZSB7CkBAIC0zNjMsNiArMzY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVQZWVwaAogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0
R1BSKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQ
UiwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdEdQUik7CisgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAg
ICAgICAKICAgICAgICAgICAgIGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1
bHRHUFIsIHRha2VuKTsKICAgICAgICAgfQpAQCAtMzgyLDcgKzM4NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwKICAgICAgICAgU19KSVRP
cGVyYXRpb25fRUpKIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIpCiAgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBTX0pJVE9w
ZXJhdGlvbl9FSkosIEdQUlJlZz4oCi0gICAgICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBO
ZWVkVG9TcGlsbCwgcmVzdWx0KQorICAgICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgTmVl
ZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLCByZXN1bHQp
CiAgICAgICAgICwgbV9hcmcxKGFyZzEpCiAgICAgICAgICwgbV9hcmcyKGFyZzIpCiAgICAgewpA
QCAtNDIyLDYgKzQyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGUKICAgICAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgY2FsbE9wZXJhdGlv
bihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmcxR1BSLCBhcmcyR1BSKTsKKyAgICAgICAg
Y2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIG1faml0Lm9yMzIo
VHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOwogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbiwgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTQ4Miw2ICs0ODUsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0
cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICAgICAgc2lsZW50
RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVy
Q2FsbCgpOwogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBp
bGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAg
IH0gZWxzZSB7CkBAIC01MDgsNiArNTEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVQZWVwaAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIp
OwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0
R1BSLCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAK
ICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29t
cGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAgIH0KQEAgLTU0Myw2ICs1NDgs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIHNp
bGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBhcmcxR1BSLCBhcmcyR1BS
KTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworICAgICAgICBj
aGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAKICAgICAgICAgbV9qaXQuYW5kNjQo
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMigxKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQu
b3IzMihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOwpA
QCAtNjU4LDYgKzY2NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5v
ZGUKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAg
ICAgICAgICAgICBzbG93Q2FzZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpOworICAgICAgICAgICAg
Y2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIG1faml0LmFib3J0V2l0aFJl
YXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAgICAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICByZXN1bHRHUFIgPSBzY3JhdGNoR1BSMjsKQEAg
LTY4Nyw2ICs2OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFJpZ2h0IG5vdywgYXJndW1lbnRzIGlzIGlu
IGFyZ3VtZW50c0dQUiBhbmQgdGhlIHJlZ2lzdGVyIGZpbGUgaXMgZmx1c2hlZC4KICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50c0dQUiwgbnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZp
cnN0VmFyQXJnT2Zmc2V0KTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE5vdyB3ZSBoYXZlIHRoZSBhcmd1bWVudCBj
b3VudCBvZiB0aGUgY2FsbGVlIGZyYW1lLCBidXQgd2UndmUgbG9zdCB0aGUgYXJndW1lbnRzIG9w
ZXJhbmQuCiAgICAgICAgICAgICAvLyBSZWNvbnN0cnVjdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQg
d2hpbGUgcHJlc2VydmluZyB0aGUgY2FsbGVlIGZyYW1lLgpAQCAtNjk2LDYgKzcwNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIG1faml0
LmFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA1ICogc2l6ZW9mKHZvaWQq
KSkpKSwgc2NyYXRjaEdQUjEsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0dXBWYXJh
cmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBzY3JhdGNoR1BSMSwgYXJndW1lbnRz
R1BSLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwor
ICAgICAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIHJlc3Vs
dEdQUiA9IEdQUkluZm86OnJldHVyblZhbHVlR1BSOwogICAgICAgICB9CiAgICAgICAgIApAQCAt
MTY2MCw3ICsxNjY5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3Qo
TgogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0LmJyYW5jaFRlc3Q2
NChKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4ofjEpKSk7CiAgICAgCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAot
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25Db252ZXJ0
SlNWYWx1ZVRvQm9vbGVhbiwgcmVzdWx0R1BSLCBhcmcxR1BSKSk7CisgICAgICAgICAgICBzbG93
UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFu
LCByZXN1bHRHUFIsIGFyZzFHUFIsIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVt
ZW50OjpDaGVja05vdE5lZWRlZCkpOwogICAgIAogICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVUcnVlKSksIHJlc3VsdEdQUik7CiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtMjE3NCw2ICsyMTgzLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0LmdwcigpLCBvcDFHUFIsIG9w
MkdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VmFsdWVBZGQsIHJlc3VsdC5ncHIoKSwgb3AxR1BSLCBvcDJHUFIpOworICAgICAgICBjaGVja0V4
Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTI0NTUsNiArMjQ2NSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCByZXN1bHQu
Z3ByKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9u
QWZ0ZXJDYWxsKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY3NCw2ICsyNjg1LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0Tm9uU3RyaWN0LCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbE5vblN0cmljdCwgYXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CisgICAg
ICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsK
QEAgLTI4ODUsNiArMjg5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOwor
ICAgICAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gTXVzdCB1c2UganNWYWx1ZVJlc3VsdCBiZWNhdXNlIG90aGVyd2lzZSB3ZSBz
Y3JldyB1cCByZWdpc3RlcgogICAgICAgICAgICAgLy8gYWxsb2NhdGlvbiwgd2hpY2ggdGhpbmtz
IHRoYXQgdGhpcyBub2RlIGhhcyBhIHJlc3VsdC4KQEAgLTI5MDAsNiArMjkxMyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWMsIHJlc3VsdC5ncHIoKSwgYmFzZUdQ
UiwgYXJndW1lbnRHUFIpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAg
ICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAg
ICBicmVhazsKQEAgLTI5MTQsNiArMjkyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAg
ICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAKICAgICAgICAgLy8gSWYg
d2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KICAgICAgICAg
bV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CkBAIC0z
MjU1LDYgKzMyNzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgQVNTRVJUKG9wID09IENhbGxTdHJpbmdDb25zdHJ1Y3Rvcik7CiAg
ICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0
b3IsIHJlc3VsdEdQUiwgb3AxR1BSKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoZWNr
RXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQogICAg
ICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwpAQCAtMzM0Nyw2ICszMzYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSwgcmVzdWx0LmdwcigpLCBnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihu
b2RlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNh
bGwoKTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zNDI5LDYgKzM0NDYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAg
ICAgICAgICAgICBvcGVyYXRpb25OZXdBcnJheSwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRl
eGluZ1R5cGUoKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2b2lkKj4oYnVmZmVyKSwgbm9k
ZS0+bnVtQ2hpbGRyZW4oKSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAK
ICAgICAgICAgaWYgKHNjcmF0Y2hTaXplKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaCh0aGlzKTsKQEAgLTM1MDYsNiArMzUyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aEFycmF5U3RvcmFnZSkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBkb25lLmxpbmso
Jm1faml0KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXpl
LCByZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUik7CisgICAgICAgIGNoZWNrRXhjZXB0
aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzU0OSw2ICszNTY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0FycmF5QnVmZmVyLCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwgbm9k
ZS0+c3RhcnRDb25zdGFudCgpLCBub2RlLT5udW1Db25zdGFudHMoKSk7CisgICAgICAgIGNoZWNr
RXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzU3Myw2ICszNTkzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1lbnRGb3JUeXBlKG5vZGUtPnR5cGVkQXJy
YXlUeXBlKCkpLAogICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LT50eXBl
ZEFycmF5U3RydWN0dXJlKG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpLAogICAgICAgICAgICAgICAg
IGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMzU4OSw2ICszNjEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1Jl
Z2V4cCwgcmVzdWx0LmdwcigpLCBtX2ppdC5jb2RlQmxvY2soKS0+cmVnZXhwKG5vZGUtPnJlZ2V4
cEluZGV4KCkpKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAg
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7
CkBAIC00MjQyLDYgKzQyNjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uU2l6ZU9mVmFyYXJncywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIGFyZ3VtZW50c0dQUiwg
ZGF0YS0+b2Zmc2V0KTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAg
ICAgCiAgICAgICAgIGxvY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICB7CkBA
IC00MjcwLDYgKzQyOTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIG1faml0LnN0b3JlMzIoYXJnQ291bnRJbmNsdWRpbmdUaGlzR1BSLCBKSVRD
b21waWxlcjo6cGF5bG9hZEZvcihkYXRhLT5tYWNoaW5lQ291bnQpKTsKICAgICAgICAgCiAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIGRhdGEtPm1hY2hpbmVTdGFy
dC5vZmZzZXQoKSwgYXJndW1lbnRzR1BSLCBkYXRhLT5vZmZzZXQsIEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBkYXRhLT5tYW5kYXRvcnlNaW5pbXVtKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25B
ZnRlckNhbGwoKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBi
cmVhazsKQEAgLTQzODUsNiArNDQwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSwgcmVzdWx0R1BSLCBiYXNlLmdwcigp
LCBwcm9wZXJ0eS5ncHIoKSk7CisgICAgICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlLCBEYXRhRm9ybWF0SlNCb29sZWFu
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDU1Miw2ICs0NTc3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9y
LCByZXN1bHRHUFIsIGJhc2UuZ3ByKCkpOworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2Fs
bCgpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTQ1OTEsNiArNDYxNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRvSW5kZXhTdHJpbmcsIHJlc3VsdEdQUiwgaW5kZXguZ3ByKCkp
OworICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAx
ODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTkzLDYgKzk5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbihOb2RlKiBub2QKICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICBvcGVyYXRp
b25HZW5lcmljSW4sIGV4dHJhY3RSZXN1bHQoSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlc3Vs
dEdQUikpLAogICAgICAgICBiYXNlR1BSLCByZWdzKTsKKyAgICBjaGVja0V4Y2VwdGlvbkFmdGVy
Q2FsbCgpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIApAQCAtMTUwMSw2ICsxNTAyLDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICAgICAgZGF0YUxvZygi
XG4iKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgbV9qaXQuaml0QXNzZXJ0Tm9FeGNl
cHRpb24oKTsKKwogICAgICAgICBjb21waWxlKG1fY3VycmVudE5vZGUpOwogICAgICAgICAKICAg
ICAgICAgaWYgKGJlbG9uZ3NJbk1pbmlmaWVkR3JhcGgobV9jdXJyZW50Tm9kZS0+b3AoKSkpCkBA
IC0xOTkzLDYgKzE5OTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0lu
dDMyCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOwogICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbih0b0ludDMyLCByZXN1bHRHcHIsIGZwcik7CiAgICAgICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7CisgICAgICAgICAgICBjaGVj
a0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogCiAgICAgICAgICAgICBjb252ZXJ0ZWQuYXBwZW5kKG1f
aml0Lmp1bXAoKSk7CiAKQEAgLTIwNTIsNiArMjA1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lz
dGVycyhyZXN1bHRHcHIpOwogICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24odG9JbnQzMiwg
cmVzdWx0R3ByLCBmcHIpOwogICAgICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
cmVzdWx0R3ByKTsKKyAgICAgICAgICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
CiAgICAgICAgICAgICAgICAgY29udmVydGVkLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCkBAIC0z
NzI0LDYgKzM3MjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZChO
CiAgICAgRlBSUmVzdWx0IHJvdW5kZWRSZXN1bHRBc0RvdWJsZSh0aGlzKTsKICAgICBGUFJSZWcg
cmVzdWx0RlBSID0gcm91bmRlZFJlc3VsdEFzRG91YmxlLmZwcigpOwogICAgIGNhbGxPcGVyYXRp
b24oanNSb3VuZCwgcmVzdWx0RlBSLCB2YWx1ZUZQUik7CisgICAgY2hlY2tFeGNlcHRpb25BZnRl
ckNhbGwoKTsKICAgICBpZiAocHJvZHVjZXNJbnRlZ2VyKG5vZGUtPmFyaXRoUm91bmRpbmdNb2Rl
KCkpKSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByb3VuZGVkUmVzdWx0QXNJbnQzMih0aGlzKTsK
ICAgICAgICAgRlBSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC00NjY2LDcgKzQ2NzIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb24oCiAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24sIHJlc3VsdEdQUiwgc2NvcGVH
UFIsIGV4ZWN1dGFibGUsIHRoaXNWYWx1ZUdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIHJlc3VsdEdQUiwgc2NvcGVHUFIs
IGV4ZWN1dGFibGUpOwotICAgICAgICAKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwo
KTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtNDc4OCw2ICs0Nzk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNyZWF0ZUFjdGl2YQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFjdGl2
YXRpb25EaXJlY3QsCiAgICAgICAgICAgICByZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NvcGVHUFIs
IHRhYmxlLCBUcnVzdGVkSW1tMzIoaW5pdGlhbGl6YXRpb25WYWx1ZS50YWcoKSksIFRydXN0ZWRJ
bW0zMihpbml0aWFsaXphdGlvblZhbHVlLnBheWxvYWQoKSkpOwogI2VuZGlmCisgICAgICAgIGNo
ZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUwMzgsNyArNTA0NSw4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWQKICAgICAgICAgfSk7CiAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGRlc3RHUFIpOyB9KTsKICAgICAKLSAgICBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3Vt
ZW50cywgcmVzdWx0R1BSKTsKKyAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0
ZVNjb3BlZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2Fs
bCgpOwogICAgIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTUwNjUs
NyArNTA3Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWQKICAg
ICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgwLCBbJl0gKEdQUlJlZyBkZXN0R1BS
KSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGRlc3RHUFIpOyB9KTsK
ICAgICAKLSAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
bkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICBjaGVj
a0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKIH0KQEAgLTUwODAsNyArNTA4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVOb3RpZnlXcml0ZSgKICAgICAgICAgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKTsKICAg
ICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dD
YXNlLCB0aGlzLCBvcGVyYXRpb25Ob3RpZnlXcml0ZSwgTm9SZXN1bHQsIHNldCkpOworICAgICAg
ICBzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbk5vdGlmeVdyaXRlLCBOb1Jl
c3VsdCwgc2V0LCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tO
b3ROZWVkZWQpKTsKICAgICAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTUxMTIsNiArNTEy
MSw3IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWdFeHBFeGVjKE4KICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgYmFzZUdQ
UiwgYXJndW1lbnRHUFIpOworICAgIGNoZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAKICAgICBi
cmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9u
WmVybywgcmVzdWx0LmdwcigpLCB0YWtlbik7CiAgICAganVtcChub3RUYWtlbik7CkBAIC01MjQ3
LDYgKzUyNTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVQcm9wCiAK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3Jh
Z2VXaXRoSW5pdGlhbENhcGFjaXR5LCByZXN1bHQuZ3ByKCksIGJhc2VHUFIpOworICAgICAgICBj
aGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwogICAgICAgICAKICAgICAgICAgc3RvcmFnZVJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC01MjkwLDYgKzUzMDEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVhbGxvY2F0ZVByCiAKICAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3JhZ2UsIHJlc3Vs
dC5ncHIoKSwgYmFzZUdQUiwgbmV3U2l6ZSAvIHNpemVvZihKU1ZhbHVlKSk7CisgICAgICAgIGNo
ZWNrRXhjZXB0aW9uQWZ0ZXJDYWxsKCk7CiAKICAgICAgICAgc3RvcmFnZVJlc3VsdChyZXN1bHQu
Z3ByKCksIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC01Mzk3LDYgKzU0MDksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhCiAgICAgICAgICAgICBBU1NFUlQo
bm9kZS0+b3AoKSA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOwogICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwsIHJlc3VsdEdQUiwg
b3AxR1BSKTsKICAgICAgICAgfQorICAgICAgICBjaGVja0V4Y2VwdGlvbkFmdGVyQ2FsbCgpOwog
ICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQogICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTYwMTksNiArNjAzMiw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbW0oTm9kZSoKICAgICAgICAgc2ls
ZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSwgc2NyYXRjaCwgdmFsdWVSZWdzLCBk
YXRhLT5zd2l0Y2hUYWJsZUluZGV4KTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhz
Y3JhdGNoKTsKKwogICAgICAgICBtX2ppdC5qdW1wKHNjcmF0Y2gpOwogI2VuZGlmCiAgICAgICAg
IG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC02Mjc4LDYg
KzYyOTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nT25TCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAg
ICBvcGVyYXRpb25Td2l0Y2hTdHJpbmcsIHN0cmluZywgZGF0YS0+c3dpdGNoVGFibGVJbmRleCwg
c3RyaW5nKTsKKyAgICAgICAgY2hlY2tFeGNlcHRpb25BZnRlckNhbGwoKTsKICAgICAgICAgbV9q
aXQuanVtcChzdHJpbmcpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjMxNSw2ICs2MzMw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uUwogICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKHN0cmluZyk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25T
d2l0Y2hTdHJpbmcsIHN0cmluZywgZGF0YS0+c3dpdGNoVGFibGVJbmRleCwgc3RyaW5nKTsKICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHN0cmluZyk7CisgICAgY2hlY2tFeGNlcHRpb25BZnRl
ckNhbGwoKTsKICAgICBtX2ppdC5qdW1wKHN0cmluZyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE4ODc1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODkxLDIzOSArODkxLDIzOSBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJh
dGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBjZWxsKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGNlbGwpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9w
ZXJhdGlvbl9FTyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvYmplY3QpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUob2JqZWN0KTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRU9TIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVj
dCwgc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUob2JqZWN0LCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25f
RU9aIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIG9iamVjdCwgaW50MzJfdCBzaXpl
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9iamVj
dCwgVHJ1c3RlZEltbVB0cihzaXplKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VPWiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBvYmplY3QsIGludDMyX3Qgc2l6ZSkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvYmplY3QsIFRydXN0ZWRJbW1Q
dHIoc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUFMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgb2xkLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvbGQsIFRydXN0ZWRJbW1Q
dHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU0pzcyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIHNpemVfdCBpbmRleCwgR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihp
bmRleCksIGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9w
ZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMik7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0
aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQ
X0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RQUyBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qg
c2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJ
bW1QdHIoc2l6ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RTUyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgaW5kZXgsIHNpemVfdCBzaXplKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihpbmRleCksIFRydXN0ZWRJbW1QdHIoc2l6
ZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0
aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3Bl
cmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
Y2VsbCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDWkMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKENfSklUT3BlcmF0aW9uX0VJY2Ygb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRVN0SnNjU3ltdGFiSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3Rl
ZEltbTY0IGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHNjb3BlLCBUcnVzdGVkSW1t
UHRyKHRhYmxlKSwgaW5pdGlhbFZhbHVlKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogI2Vsc2UK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpz
Y1N5bXRhYkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
R1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIFRydXN0ZWRJbW0zMiB0YWcsIFRydXN0
ZWRJbW0zMiBwYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHIo
dGFibGUpLCBwYXlsb2FkLCB0YWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAjZW5kaWYKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25v
d25MZW5ndGgpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoa25vd25MZW5ndGgpKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbTMyKGtub3duTGVuZ3RoKSwgVHJ1c3RlZElt
bTMyKG1pbkNhcGFjaXR5KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGxlbmd0aCkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSksIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFpaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBsZW5ndGgsIHVuc2lnbmVk
IG1pbkNhcGFjaXR5KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgbGVuZ3RoLCBUcnVzdGVkSW1tMzIobWlu
Q2FwYWNpdHkpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzc1N0IG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VK
c3NKc3NKc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihTX0pJVE9wZXJhdGlvbl9FR0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIGFy
ZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VHQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2Jq
ZWN0KSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSnNzX0pJVE9wZXJhdGlvbl9FWiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BS
UmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQog
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQyBv
cGVyYXRpb24sIEpTQ2VsbCogYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDSWNmIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZy
YW1lKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDSWNmIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIGludCBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihhcmcyKSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhv
cGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDQyBv
cGVyYXRpb24sIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGFyZzIpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwg
SlNDZWxsKiBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFyZzEpLCBhcmcyKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRP
cGVyYXRpb25fRUNiIG9wZXJhdGlvbiwgdm9pZCogcG9pbnRlcikKQEAgLTExNDAsNyArMTE0MCw3
IEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3Bl
cmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KQEAg
LTExOTIsMzQgKzExOTIsMzQgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVF9KSVRPcGVyYXRpb25fRUpzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNjWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxLCBpbnQzMl90IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbTMyKGFyZzIpKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Q19KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFyZzEp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyKGFyZzEpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2Vs
bCksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VXcyBvcGVyYXRpb24sIFdhdGNocG9pbnRT
ZXQqIHdhdGNocG9pbnRTZXQpCkBAIC0xMjMyLDEyICsxMjMyLDEyIEBAIHB1YmxpYzoKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0Ugb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNFeGVj
U3RhdGUoKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCB2
b2lkKiBwb2ludGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9EIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIGFyZzEpCiAgICAgewpAQCAtMTI1OSwxMDIgKzEy
NTksMTAyIEBAIHB1YmxpYzoKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQSBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQVogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VKc3NaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBUcnVz
dGVkSW1tUHRyKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNTIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgaW50IHN0YXJ0Q29uc3RhbnQsIGludCBudW1Db25zdGFudHMpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKHN0YXJ0
Q29uc3RhbnQpLCBUcnVzdGVkSW1tMzIobnVtQ29uc3RhbnRzKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VQUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCB2b2lkKiBwb2ludGVy
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEpTQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGNlbGwpKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpQ0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBjb25zdCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBUcnVzdGVkSW1tUHRy
KHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FREEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKQyBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0Va
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgaW50MzJfdCBhcmcxKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIGludDMyX3Qg
YXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RVpJY2ZaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgaW50MzJfdCBhcmcxLCBJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpLCBUcnVzdGVk
SW1tUHRyKGlubGluZUNhbGxGcmFtZSksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUyBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgc2l6ZV90IGluZGV4KQpAQCAt
MTM2NiwyOCArMTM2NiwyOCBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMik7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oQ19KSVRPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
YXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpKQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklU
T3BlcmF0aW9uX0VKWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpaQyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFNfSklUT3BlcmF0aW9uX0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJn
MSkKICAgICB7CkBAIC0xMzk3LDEyMiArMTM5NywxMjIgQEAgcHVibGljOgogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VQUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMiBpbW0pCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoaW1tLm1fdmFsdWUpKSkpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkog
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGlt
bSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoaW1tLm1fdmFsdWUpKSksIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ0Mgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNKIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5ncHIoKSk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRU9aRCBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
RlBSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJh
dGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0pJVE9wZXJhdGlvbl9FSlBQIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCB2b2lkKiBwb2ludGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgYXJnMiwgVHJ1c3RlZElt
bVB0cih1aWQpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpK
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0
aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FUFpKIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPWkogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDSkogb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oRF9KSVRPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBGUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSlpaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIHVuc2lnbmVkIGFyZzIsIHVuc2lnbmVkIGFyZzMpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1
c3RlZEltbTMyKGFyZzIpLCBUcnVzdGVkSW1tMzIoYXJnMykpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9F
RkpaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
dW5zaWduZWQgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbTMyKGFyZzMpLCBhcmc0
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oWl9KSVRPcGVyYXRpb25fRUpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IGFyZzEsIHVuc2lnbmVkIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbTMyKGFyZzIpKTsKLSAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRp
b25fRVpKWlpaIG9wZXJhdGlvbiwgdW5zaWduZWQgYXJnMSwgR1BSUmVnIGFyZzIsIHVuc2lnbmVk
IGFyZzMsIEdQUlJlZyBhcmc0LCB1bnNpZ25lZCBhcmc1KQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSwgYXJnMiwgVHJ1
c3RlZEltbTMyKGFyZzMpLCBhcmc0LCBUcnVzdGVkSW1tMzIoYXJnNSkpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICNlbHNlIC8vIFVTRShKU1ZBTFVFMzJf
NjQpCiAKQEAgLTE1NDQsMTQ4ICsxNTQ0LDE0OCBAQCBwdWJsaWM6CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5
bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJl
ZyByZXN1bHRQYXlsb2FkLCB2b2lkKiBwb2ludGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUFAgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEs
IHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5
bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSSBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXls
b2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVn
IHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3Vs
dFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFn
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwot
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcg
YXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUpDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQs
IEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVN
TVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2Fk
LCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzc1ogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFn
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FUFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9h
ZCwgdm9pZCogcG9pbnRlciwgc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSwgVHJ1c3RlZElt
bVB0cihzaXplKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VTUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQ
YXlsb2FkLCBpbnQgc3RhcnRDb25zdGFudCwgaW50IG51bUNvbnN0YW50cykKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoc3RhcnRD
b25zdGFudCksIFRydXN0ZWRJbW0zMihudW1Db25zdGFudHMpKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXls
b2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpQIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcg
YXJnMVBheWxvYWQsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFy
ZzFUYWcsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJl
c3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5
bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFy
ZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
ICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQs
IEpTQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGNlbGwpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1
bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsK
LSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKLSAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBK
U0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIpOwotICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpQ0kg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgY29uc3QgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZEltbVB0cih1aWQpKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUpJ
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMVBheWxvYWQs
IGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVz
dWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IGludDMyX3QgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxUGF5bG9hZCwgVHJ1c3RlZEltbTMyKGFyZzFUYWcp
LCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5
bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FREEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJS
ZWcgcmVzdWx0UGF5bG9hZCwgRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzEsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVz
dWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0
UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8z
MkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgVHJ1c3RlZEltbTMyIGFyZzFU
YWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBh
eWxvYWQsIGFyZzFUYWcsIGFyZzIpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5
bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJl
ZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkKQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRf
RFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCBy
ZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Ci0gICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5
bG9hZCwgcmVzdWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGludDMyX3QgYXJnMSkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJn
MSkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FWkljZlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9h
ZCwgaW50MzJfdCBhcmcxLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgR1BSUmVn
IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyKGFyZzEpLCBUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSksIGFyZzIp
OwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgaW50
MzJfdCBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzIpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUyBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEpTVmFsdWVSZWdzIHZhbHVlLCBzaXplX3QgaW5kZXgpCkBAIC0xNjk3
LDEzNyArMTY5NywxMzIgQEAgcHVibGljOgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oUF9KSVRPcGVyYXRpb25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIoc3RydWN0dXJlKSwgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwotICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9u
X0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcx
UGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKLSAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJl
ZyBhcmcxUGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKGFyZzFQ
YXlsb2FkLCBhcmcxVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFNfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJn
MVRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJl
ZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0XzMy
QklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VK
SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJS
ZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFy
ZzJQYXlsb2FkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRf
RFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCBy
ZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBh
eWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFy
ZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGltbSwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXls
b2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJl
ZyByZXN1bHRQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGltbSwgR1BSUmVn
IGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQs
IGFyZzJUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0
VGFnKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQ
YXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyUGF5bG9hZCwgYXJnMlRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXls
b2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJl
ZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXls
b2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNKIG9w
ZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJn
MikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7Ci0gICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxv
YWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VDQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVz
dWx0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9aRCBvcGVyYXRpb24sIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
Myk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
bik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRp
b24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
MVBheWxvYWQsIGFyZzFUYWcpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRUpQUCBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQs
IEdQUlJlZyBhcmcyLCB2b2lkKiBwb2ludGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBh
cmcxVGFnLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcg
YXJnMlBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHViSW5mbyksIGFy
ZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpLCBUcnVzdGVkSW1tUHRyKHVpZCkpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChv
cGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VDSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcs
IEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwotICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBF
QUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmcz
VGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0
aW9uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPWkogb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcg
YXJnM1BheWxvYWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgU0g0XzMyQklUX0RVTU1ZX0FS
RyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJh
dGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRU9aSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3Rl
ZEltbTMyIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1Z
X0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKLSAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgRlBSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBh
cmcxUGF5bG9hZCwgYXJnMVRhZyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIHVuc2ln
bmVkIGFyZzIsIHVuc2lnbmVkIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgIGFyZzFQYXlsb2FkLCBhcmcx
VGFnLCBUcnVzdGVkSW1tMzIoYXJnMiksIFRydXN0ZWRJbW0zMihhcmczKSk7Ci0gICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklUT3Bl
cmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIHVuc2lnbmVkIGFyZzMsIEdQUlJlZyBhcmc0
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJ
VE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywg
R1BSUmVnIGFyZzFQYXlsb2FkLCB1bnNpZ25lZCBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXls
b2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tMzIoYXJnMikpOwotICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWkpa
Wlogb3BlcmF0aW9uLCB1bnNpZ25lZCBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQ
YXlsb2FkLCB1bnNpZ25lZCBhcmczLCBHUFJSZWcgYXJnNCwgdW5zaWduZWQgYXJnNSkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIo
YXJnMSksIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQsIFRy
dXN0ZWRJbW0zMihhcmc1KSk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7
CiAgICAgfQogI3VuZGVmIEVBQklfMzJCSVRfRFVNTVlfQVJHCiAjdW5kZWYgU0g0XzMyQklUX0RV
TU1ZX0FSRwpAQCAtMTg5OSwyOCArMTg5NCwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRXh0ZXJuYWxDYWxsKCkgeyB9CiAjZW5kaWYKIAotICAgIC8vIFRoZXNlIG1ldGhvZHMgYWRk
IGNhbGwgaW5zdHJ1Y3Rpb25zLCB3aXRoIG9wdGlvbmFsIGV4Y2VwdGlvbiBjaGVja3MgJiBzZXR0
aW5nIHJlc3VsdHMuCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCisgICAgdm9pZCBjaGVja0V4Y2Vw
dGlvbkFmdGVyQ2FsbCgpCiAgICAgewotICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7
Ci0gICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKLSAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFwcGVu
ZENhbGwoZnVuY3Rpb24pOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgICAg
ICByZXR1cm4gY2FsbDsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdp
dGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlv
bikKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxsIGluc3RydWN0aW9ucywgd2l0aCBvcHRp
b25hbCBleGNlcHRpb24gY2hlY2tzICYgc2V0dGluZyByZXN1bHRzLgorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uKQogICAgIHsKICAg
ICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwogICAgICAgICBtX2ppdC5lbWl0U3RvcmVD
b2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKLSAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2tXaXRoQ2FsbEZyYW1lUm9sbGJhY2soKTsKLSAgICAgICAgcmV0
dXJuIGNhbGw7CisgICAgICAgIHJldHVybiBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAg
ICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0
aW9uKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKICAgICB7Ci0gICAgICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsK
LSAgICAgICAgaWYgKChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykgJiYgKHJlc3VsdCAhPSBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUikpCi0gICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCByZXN1bHQpOworICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0g
YXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrV2l0aENh
bGxGcmFtZVJvbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb25T
ZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQpAQCAt
MTkzMiwzNSArMTkyMCwxOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcg
cmVzdWx0KQogICAgIHsKLSAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwotICAgICAg
ICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBtX2ppdC5hcHBlbmRDYWxsKGZ1
bmN0aW9uKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVu
Y3Rpb24pOwogICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgICAg
ICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOwogICAgICAgICBy
ZXR1cm4gY2FsbDsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbChjb25z
dCBGdW5jdGlvblB0ciYgZnVuY3Rpb24pCi0gICAgewotICAgICAgICBwcmVwYXJlRm9yRXh0ZXJu
YWxDYWxsKCk7Ci0gICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVu
Y3Rpb24pOwotICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgR1BSUmVnIHJl
c3VsdDEsIEdQUlJlZyByZXN1bHQyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxT
ZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0MSwgR1BS
UmVnIHJlc3VsdDIpCiAgICAgewotICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisgICAgICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICAgICAgbV9qaXQuc2V0dXBS
ZXN1bHRzKHJlc3VsdDEsIHJlc3VsdDIpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAj
aWYgQ1BVKFg4NikKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgRlBSUmVnIHJlc3Vs
dCkKLSAgICB7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlk
RlBSUmVnKSB7Ci0gICAgICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS5mc3RwbCgwLCBKSVRDb21w
aWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJs
ZShKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJlc3VsdCk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIGNhbGw7Ci0gICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVu
ZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0
KQogICAgIHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVu
Y3Rpb24pOwpAQCAtMTk3MSwxMyArMTk0Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNh
bGw7CiAgICAgfQogI2VsaWYgQ1BVKEFSTSkgJiYgIUNQVShBUk1fSEFSREZQKQotICAgIEpJVENv
bXBpbGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQoY29uc3Qg
RnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBGUFJSZWcgcmVzdWx0KQotICAgIHsKLSAgICAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rp
b24pOwotICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRGUFJSZWcpCi0gICAgICAgICAgICBt
X2ppdC5hc3NlbWJsZXIoKS52bW92KHJlc3VsdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSMik7Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRy
JiBmdW5jdGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKQEAgLTE5ODYsMTMgKzE5NTAsNiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KICNlbHNlIC8vIENQVShYODZfNjQp
IHx8IChDUFUoQVJNKSAmJiBDUFUoQVJNX0hBUkRGUCkpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1J
UFMpIHx8IENQVShTSDQpCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEZQUlJlZyBy
ZXN1bHQpCi0gICAgewotICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gSW52
YWxpZEZQUlJlZykKLSAgICAgICAgICAgIG1faml0Lm1vdmVEb3VibGUoRlBSSW5mbzo6cmV0dXJu
VmFsdWVGUFIsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5j
dGlvbiwgRlBSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAxODg3NTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
RlRMIHsKICAgICBtYWNybyhWX0pJVE9wZXJhdGlvbl9FWkpaWlosIGZ1bmN0aW9uVHlwZSh2b2lk
VHlwZSwgaW50UHRyLCBpbnQzMiwgaW50NjQsIGludDMyLCBpbnQzMiwgaW50MzIpKSBcCiAgICAg
bWFjcm8oVl9KSVRPcGVyYXRpb25fSiwgZnVuY3Rpb25UeXBlKHZvaWRUeXBlLCBpbnQ2NCkpIFwK
ICAgICBtYWNybyhWX0pJVE9wZXJhdGlvbl9aLCBmdW5jdGlvblR5cGUodm9pZFR5cGUsIGludDMy
KSkgXAorICAgIG1hY3JvKFZfSklUT3BlcmF0aW9uX0UsIGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSwg
aW50UHRyKSkgXAogICAgIG1hY3JvKFpfSklUT3BlcmF0aW9uX0QsIGZ1bmN0aW9uVHlwZShpbnQz
MiwgZG91YmxlVHlwZSkpIFwKICAgICBtYWNybyhaX0pJVE9wZXJhdGlvbl9FQywgZnVuY3Rpb25U
eXBlKGludDMyLCBpbnRQdHIsIGludFB0cikpIFwKICAgICBtYWNybyhaX0pJVE9wZXJhdGlvbl9F
R0MsIGZ1bmN0aW9uVHlwZShpbnQzMiwgaW50UHRyLCBpbnRQdHIsIGludFB0cikpIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShy
ZXZpc2lvbiAxODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODA0OSw3ICs4MDQ5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNhbGxDaGVjaygpCiAgICAgewogICAgICAgICBpZiAoT3B0aW9uczo6ZW5hYmxl
RXhjZXB0aW9uRnV6eigpKQotICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uRXhjZXB0aW9uRnV6eikpOworICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eiksIG1fY2FsbEZyYW1lKTsKICAgICAgICAg
CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQs
ICgiRXhjZXB0aW9uIGNoZWNrIGNvbnRpbnVhdGlvbiIpKTsKICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAx
ODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5NCw2ICsxOTQsMTkgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6
OmppdEFzc2VydEFyZ3VtZW50QwogICAgIGFib3J0V2l0aFJlYXNvbihBSEluc2FuZUFyZ3VtZW50
Q291bnQpOwogICAgIG9rLmxpbmsodGhpcyk7CiB9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpq
aXRBc3NlcnROb0V4Y2VwdGlvbigpCit7CisgICAgSnVtcCBub0V4Y2VwdGlvbjsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIG5vRXhjZXB0aW9uID0gYnJhbmNoVGVzdDY0KFplcm8sIEFic29sdXRl
QWRkcmVzcyh2bSgpLT5hZGRyZXNzT2ZFeGNlcHRpb24oKSkpOworI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKKyAgICBub0V4Y2VwdGlvbiA9IGJyYW5jaDMyKEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3Mo
dm0oKS0+YWRkcmVzc09mRXhjZXB0aW9uKCkpLCBUcnVzdGVkSW1tMzIoMCkpOworI2VuZGlmCisg
ICAgYWJvcnRXaXRoUmVhc29uKEpJVFVuY291Z2h0RXhjZXB0aW9uQWZ0ZXJDYWxsKTsKKyAgICBu
b0V4Y2VwdGlvbi5saW5rKHRoaXMpOworfQorCiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAog
CiB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y2FsbEV4Y2VwdGlvbkZ1enooKQpAQCAtMjAxLDE1ICsy
MTQsNDAgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNhbGxFeGNlcHRpb25GdXp6KAogICAgIGlm
ICghT3B0aW9uczo6ZW5hYmxlRXhjZXB0aW9uRnV6eigpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBBU1NFUlQoc3RhY2tBbGlnbm1lbnRCeXRlcygpID49IHNpemVvZih2b2lkKikgKiAyKTsKLSAg
ICBzdWJQdHIoVHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIHN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKLSAgICBwb2tlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCAwKTsKLSAgICBw
b2tlKEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgMSk7CisgICAgRW5jb2RlZEpTVmFsdWUqIGJ1
ZmZlciA9IHZtKCktPmV4Y2VwdGlvbkZ1enppbmdCdWZmZXIoc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSAqIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHN0b3JlNjQoR1BS
SW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7CisjZWxzZQorICAgICAgICBzdG9yZTMy
KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOworI2VuZGlmCisgICAgfQorICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytp
KSB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIHN0b3JlRG91YmxlKEZQ
UkluZm86OnRvUmVnaXN0ZXIoaSksIEFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKKyAgICB9CisK
KyAgICAvLyBTZXQgdXAgb25lIGFyZ3VtZW50LgorI2lmIENQVShYODYpCisgICAgcG9rZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7CisjZWxzZQorICAgIG1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisjZW5kaWYKICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25FeGNlcHRpb25GdXp6
KSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgY2FsbChHUFJJbmZv
Ojpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwotICAgIHBlZWsoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIsIDApOwotICAgIHBlZWsoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCAxKTsKLSAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIHN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBH
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
IGxvYWREb3VibGUoQWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OnRvUmVnaXN0ZXIo
aSkpOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnM7ICsraSkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGxvYWQ2NChi
dWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyNlbHNlCisgICAgICAgIGxvYWQz
MihidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyNlbmRpZgorICAgIH0KIH0K
IAogQXNzZW1ibHlIZWxwZXJzOjpKdW1wIEFzc2VtYmx5SGVscGVyczo6ZW1pdEV4Y2VwdGlvbkNo
ZWNrKEV4Y2VwdGlvbkNoZWNrS2luZCBraW5kLCBFeGNlcHRpb25KdW1wV2lkdGggd2lkdGgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlz
aW9uIDE4ODc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTczMiw2ICs3MzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBq
aXRBc3NlcnRJc051bGwoR1BSUmVnKTsKICAgICB2b2lkIGppdEFzc2VydFRhZ3NJblBsYWNlKCk7
CiAgICAgdm9pZCBqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpOworICAgIHZvaWQgaml0QXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKICNlbHNlCiAgICAgdm9pZCBqaXRBc3NlcnRJc0ludDMyKEdQUlJl
ZykgeyB9CiAgICAgdm9pZCBqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnKSB7IH0KQEAgLTc0Miw2
ICs3NDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBqaXRBc3NlcnRJc051bGwoR1BSUmVnKSB7IH0K
ICAgICB2b2lkIGppdEFzc2VydFRhZ3NJblBsYWNlKCkgeyB9CiAgICAgdm9pZCBqaXRBc3NlcnRB
cmd1bWVudENvdW50U2FuZSgpIHsgfQorICAgIHZvaWQgaml0QXNzZXJ0Tm9FeGNlcHRpb24oKSB7
IH0KICNlbmRpZgogICAgIAogICAgIHZvaWQgcHVyaWZ5TmFOKEZQUlJlZyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE4ODc1
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIwMTQsMTAgKzIwMTQsMTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZNSGFuZGxlRXhjZQogLy8gb3Vyc2VsdmVzIHRvIHBsYXkgc29tZSBnbmFybHkgQUJJIHRy
aWNrcyBqdXN0IHRvIHNpbXBsaWZ5IHRoZSBjYWxsaW5nIGNvbnZlbnRpb24uIFRoaXMgaXMKIC8v
IHBhcnRpY3VsYXJseSBzYWZlIGhlcmUgc2luY2UgdGhpcyBpcyBuZXZlciBjYWxsZWQgb24gdGhl
IGNyaXRpY2FsIHBhdGggLSBpdCdzIG9ubHkgZm9yCiAvLyB0ZXN0aW5nLgotdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enooKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkV4Y2VwdGlvbkZ1enooRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNKiB2bSA9ICZleGVj
LT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogI2lm
IENPTVBJTEVSKEdDQ19PUl9DTEFORykKLSAgICBFeGVjU3RhdGUqIGV4ZWMgPSBzdGF0aWNfY2Fz
dDxFeGVjU3RhdGUqPihfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcygxKSk7CiAgICAgdm9pZCogcmV0
dXJuUEMgPSBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCk7CiAgICAgZG9FeGNlcHRpb25GdXp6
aW5nKGV4ZWMsICJKSVRPcGVyYXRpb25zIiwgcmV0dXJuUEMpOwogI2VuZGlmIC8vIENPTVBJTEVS
KEdDQ19PUl9DTEFORykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCShyZXZpc2lvbiAxODg3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25PU1JXcml0ZUJhcnIKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkluaXRHbG9iYWxDb25zdChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwogCi12b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eigpOwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enooRXhlY1N0YXRlKik7CiAKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBKU0NlbGwqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGludDMyX3QpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTg4NzUzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDIsNiArMzQyLDkgQEAgVk06On5WTSgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNjcmF0Y2hCdWZmZXJzLnNpemUoKTsgKytpKQogICAgICAgICBmYXN0RnJlZShzY3JhdGNoQnVm
ZmVyc1tpXSk7CiAjZW5kaWYKKworICAgIGlmIChtX2V4Y2VwdGlvbkZ1enpCdWZmZXIpCisgICAg
ICAgIGZhc3RGcmVlKG1fZXhjZXB0aW9uRnV6ekJ1ZmZlcik7CiB9CiAKIFJlZjxWTT4gVk06OmNy
ZWF0ZUNvbnRleHRHcm91cChIZWFwVHlwZSBoZWFwVHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTg4NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDc3LDYgKzQ3NywxNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgRW5jb2RlZEpTVmFsdWUqIGV4
Y2VwdGlvbkZ1enppbmdCdWZmZXIoc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBBU1NFUlQo
T3B0aW9uczo6ZW5hYmxlRXhjZXB0aW9uRnV6eigpKTsKKyAgICAgICAgaWYgKCFtX2V4Y2VwdGlv
bkZ1enpCdWZmZXIpCisgICAgICAgICAgICBtX2V4Y2VwdGlvbkZ1enpCdWZmZXIgPSBzdGF0aWNf
Y2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGZhc3RNYWxsb2Moc2l6ZSkpOworICAgICAgICByZXR1cm4g
bV9leGNlcHRpb25GdXp6QnVmZmVyOworICAgIH0KKwogICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0
aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKIAogICAgIFZNRW50cnlTY29wZSogZW50cnlT
Y29wZTsKQEAgLTYxMiw2ICs2MjAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b250cm9sRmxvd1Byb2ZpbGVyPiBtX2NvbnRyb2xGbG93UHJvZmlsZXI7CiAgICAgdW5zaWduZWQg
bV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50OwogICAgIERlcXVlPHN0ZDo6dW5pcXVl
X3B0cjxRdWV1ZWRUYXNrPj4gbV9taWNyb3Rhc2tRdWV1ZTsKKyAgICBFbmNvZGVkSlNWYWx1ZSog
bV9leGNlcHRpb25GdXp6QnVmZmVyIHsgbnVsbHB0ciB9OwogfTsKIAogI2lmIEVOQUJMRShHQ19W
QUxJREFUSU9OKQo=
</data>
<flag name="review"
          id="284793"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="284794"
          type_id="3"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>