<?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>202832</bug_id>
          
          <creation_ts>2019-10-10 17:18:45 -0700</creation_ts>
          <short_desc>Split ArithProfile into a Unary and a Binary version</short_desc>
          <delta_ts>2020-01-11 00:28:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=204126</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=204326</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>202959</dependson>
    
    <dependson>203752</dependson>
          <blocked>193240</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jlewis3</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tsavell</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1578915</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-10 17:18:45 -0700</bug_when>
    <thetext>ArithProfile was for a long time only used for add/sub/mul/div, but recently it started being used for negate. And it will soon also have to be used for inc and dec due to BigInt.
So I&apos;d like to make a separate version that only has the data for a single argument, and thus takes half as much memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578918</commentid>
    <comment_count>1</comment_count>
      <attachid>380706</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-10 17:23:02 -0700</bug_when>
    <thetext>Created attachment 380706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578930</commentid>
    <comment_count>2</comment_count>
      <attachid>380706</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-10-10 17:48:55 -0700</bug_when>
    <thetext>Comment on attachment 380706
Patch

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

r=me with question

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        ArithProfile was for a long time only used for add/sub/mul/div, but recently it started being used for negate. And it will soon also have to be used for inc and dec due to BigInt.
&gt; +        So in this patch I make a separate version that only has the data for a single argument, and thus takes half as much memory.

Did you see an improvement in RAMification?

&gt; Source/JavaScriptCore/bytecode/ArithProfile.cpp:158
&gt; +void printInternal(PrintStream&amp; out, const UnaryArithProfile&amp; profile)
&gt; +{
&gt; +    const char* separator = &quot;&quot;;
&gt; +
&gt; +    out.print(&quot;Result:&lt;&quot;);
&gt; +    if (!profile.didObserveNonInt32()) {
&gt; +        out.print(&quot;Int32&quot;);
&gt; +        separator = &quot;|&quot;;
&gt; +    } else {
&gt; +        if (profile.didObserveNegZeroDouble()) {
&gt; +            out.print(separator, &quot;NegZeroDouble&quot;);
&gt; +            separator = &quot;|&quot;;
&gt; +        }
&gt; +        if (profile.didObserveNonNegZeroDouble()) {
&gt; +            out.print(separator, &quot;NonNegZeroDouble&quot;);
&gt; +            separator = &quot;|&quot;;
&gt; +        }
&gt; +        if (profile.didObserveNonNumeric()) {
&gt; +            out.print(separator, &quot;NonNumeric&quot;);
&gt; +            separator = &quot;|&quot;;
&gt; +        }
&gt; +        if (profile.didObserveInt32Overflow()) {
&gt; +            out.print(separator, &quot;Int32Overflow&quot;);
&gt; +            separator = &quot;|&quot;;
&gt; +        }
&gt; +        if (profile.didObserveInt52Overflow()) {
&gt; +            out.print(separator, &quot;Int52Overflow&quot;);
&gt; +            separator = &quot;|&quot;;
&gt; +        }
&gt; +        if (profile.didObserveBigInt()) {
&gt; +            out.print(separator, &quot;BigInt&quot;);
&gt; +            separator = &quot;|&quot;;
&gt; +        }
&gt; +    }
&gt; +    out.print(&quot;&gt;&quot;);
&gt; +
&gt; +    out.print(&quot; Arg ObservedType:&lt;&quot;);
&gt; +    out.print(profile.argObservedType());
&gt; +    out.print(&quot;&gt;&quot;);
&gt; +
&gt; +    out.print(&quot; Arg ResultType:&lt;&quot;);
&gt; +    out.print(RawPointer(bitwise_cast&lt;void*&gt;(static_cast&lt;uintptr_t&gt;(profile.argResultType().bits()))));
&gt; +    out.print(&quot;&gt;&quot;);
&gt; +}
&gt; +

Seems like you could template this? e.g.

template&lt;typename BitField&gt;
inline void printInternal(PrintStream&amp; out, const ArithProfile&lt;BitField&gt;&amp;) ...

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:950
&gt; +            if (!arithProfile)
&gt; +                break;

Is this ever true? It kinda seems like it from reading the code below but that&apos;s somewhat surprising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579725</commentid>
    <comment_count>3</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-14 11:48:06 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #2)
&gt; Comment on attachment 380706 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380706&amp;action=review
&gt; 
&gt; r=me with question
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; +        ArithProfile was for a long time only used for add/sub/mul/div, but recently it started being used for negate. And it will soon also have to be used for inc and dec due to BigInt.
&gt; &gt; +        So in this patch I make a separate version that only has the data for a single argument, and thus takes half as much memory.
&gt; 
&gt; Did you see an improvement in RAMification?

I&apos;ve not looked, but it would be super surprising considering that UnaryArithProfile is only used for OpNegate currently. Saving 2 bytes per OpNegate seems fairly negligible. It should matter more once I add it to OpInc and OpDec.

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/ArithProfile.cpp:158
&gt; &gt; +void printInternal(PrintStream&amp; out, const UnaryArithProfile&amp; profile)
&gt; &gt; +{
&gt; &gt; +    const char* separator = &quot;&quot;;
&gt; &gt; +
&gt; &gt; +    out.print(&quot;Result:&lt;&quot;);
&gt; &gt; +    if (!profile.didObserveNonInt32()) {
&gt; &gt; +        out.print(&quot;Int32&quot;);
&gt; &gt; +        separator = &quot;|&quot;;
&gt; &gt; +    } else {
&gt; &gt; +        if (profile.didObserveNegZeroDouble()) {
&gt; &gt; +            out.print(separator, &quot;NegZeroDouble&quot;);
&gt; &gt; +            separator = &quot;|&quot;;
&gt; &gt; +        }
&gt; &gt; +        if (profile.didObserveNonNegZeroDouble()) {
&gt; &gt; +            out.print(separator, &quot;NonNegZeroDouble&quot;);
&gt; &gt; +            separator = &quot;|&quot;;
&gt; &gt; +        }
&gt; &gt; +        if (profile.didObserveNonNumeric()) {
&gt; &gt; +            out.print(separator, &quot;NonNumeric&quot;);
&gt; &gt; +            separator = &quot;|&quot;;
&gt; &gt; +        }
&gt; &gt; +        if (profile.didObserveInt32Overflow()) {
&gt; &gt; +            out.print(separator, &quot;Int32Overflow&quot;);
&gt; &gt; +            separator = &quot;|&quot;;
&gt; &gt; +        }
&gt; &gt; +        if (profile.didObserveInt52Overflow()) {
&gt; &gt; +            out.print(separator, &quot;Int52Overflow&quot;);
&gt; &gt; +            separator = &quot;|&quot;;
&gt; &gt; +        }
&gt; &gt; +        if (profile.didObserveBigInt()) {
&gt; &gt; +            out.print(separator, &quot;BigInt&quot;);
&gt; &gt; +            separator = &quot;|&quot;;
&gt; &gt; +        }
&gt; &gt; +    }
&gt; &gt; +    out.print(&quot;&gt;&quot;);
&gt; &gt; +
&gt; &gt; +    out.print(&quot; Arg ObservedType:&lt;&quot;);
&gt; &gt; +    out.print(profile.argObservedType());
&gt; &gt; +    out.print(&quot;&gt;&quot;);
&gt; &gt; +
&gt; &gt; +    out.print(&quot; Arg ResultType:&lt;&quot;);
&gt; &gt; +    out.print(RawPointer(bitwise_cast&lt;void*&gt;(static_cast&lt;uintptr_t&gt;(profile.argResultType().bits()))));
&gt; &gt; +    out.print(&quot;&gt;&quot;);
&gt; &gt; +}
&gt; &gt; +
&gt; 
&gt; Seems like you could template this? e.g.
&gt; 
&gt; template&lt;typename BitField&gt;
&gt; inline void printInternal(PrintStream&amp; out, const ArithProfile&lt;BitField&gt;&amp;)
&gt; ...

I could probably factor some of the code, but I like having the different names LHS+RHS vs Arg. So the ObservedResult part is pretty much the only part which can be easily shared.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:950
&gt; &gt; +            if (!arithProfile)
&gt; &gt; +                break;
&gt; 
&gt; Is this ever true? It kinda seems like it from reading the code below but
&gt; that&apos;s somewhat surprising.

I suspect one case where it can happen is if the ArithAdd comes from an OpInc. There may be some other cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579769</commentid>
    <comment_count>4</comment_count>
      <attachid>380706</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 13:28:49 -0700</bug_when>
    <thetext>Comment on attachment 380706
Patch

Clearing flags on attachment: 380706

Committed r251090: &lt;https://trac.webkit.org/changeset/251090&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579770</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 13:28:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579849</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-14 15:28:52 -0700</bug_when>
    <thetext>This patch assert crashes on debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579855</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 15:32:55 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 202959</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579856</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-14 15:33:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/56266847&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579857</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-14 15:33:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/56266848&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580171</commentid>
    <comment_count>10</comment_count>
      <attachid>381001</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-15 10:57:50 -0700</bug_when>
    <thetext>Created attachment 381001
Patch

I&apos;ll be careful to wait for a green light from EWS before trying to land the patch this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580256</commentid>
    <comment_count>11</comment_count>
      <attachid>381001</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-10-15 14:22:15 -0700</bug_when>
    <thetext>Comment on attachment 381001
Patch

Attachment 381001 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/13135424

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-llint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580282</commentid>
    <comment_count>12</comment_count>
      <attachid>381024</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-15 14:50:47 -0700</bug_when>
    <thetext>Created attachment 381024
Patch

Trying again to check if the failing tests were related or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582047</commentid>
    <comment_count>13</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-21 14:31:23 -0700</bug_when>
    <thetext>I checked and this patch has no significant effect on RAMification.

Also I found a bug in it: I shrunk ArithProfile, but did not change the accesses to it in LowLevelAssembly{64/32_64}.asm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582062</commentid>
    <comment_count>14</comment_count>
      <attachid>381463</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-21 15:00:35 -0700</bug_when>
    <thetext>Created attachment 381463
Patch

Adding &quot;orh&quot; and using it instead of &quot;ori&quot; since UnaryArithProfile and BinaryArithProfile are now 16-bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582655</commentid>
    <comment_count>15</comment_count>
      <attachid>381626</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-22 16:34:16 -0700</bug_when>
    <thetext>Created attachment 381626
Patch

rebased patch (it had some minor conflicts with Yusuke&apos;s recent patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583187</commentid>
    <comment_count>16</comment_count>
      <attachid>381763</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-23 18:54:50 -0700</bug_when>
    <thetext>Created attachment 381763
Patch

rebasing, and removing a bit of dead code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585164</commentid>
    <comment_count>17</comment_count>
      <attachid>382248</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-29 16:20:07 -0700</bug_when>
    <thetext>Created attachment 382248
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585180</commentid>
    <comment_count>18</comment_count>
      <attachid>382253</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-29 16:58:52 -0700</bug_when>
    <thetext>Created attachment 382253
Patch

Fix iOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585444</commentid>
    <comment_count>19</comment_count>
      <attachid>382337</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-30 11:38:48 -0700</bug_when>
    <thetext>Created attachment 382337
Patch

Fix another problem with orh on ARM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585480</commentid>
    <comment_count>20</comment_count>
      <attachid>382346</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-30 13:32:43 -0700</bug_when>
    <thetext>Created attachment 382346
Patch

Fix yet another problem with the offlineasm on ARM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585499</commentid>
    <comment_count>21</comment_count>
      <attachid>382349</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-30 14:07:38 -0700</bug_when>
    <thetext>Created attachment 382349
Patch

Copying my attempted fix from arm.rb to arm64.rb</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585502</commentid>
    <comment_count>22</comment_count>
      <attachid>382349</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-10-30 14:10:20 -0700</bug_when>
    <thetext>Comment on attachment 382349
Patch

Still hasn&apos;t fixed the problem..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586570</commentid>
    <comment_count>23</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-01 14:38:58 -0700</bug_when>
    <thetext>The problem came from https://bugs.webkit.org/show_bug.cgi?id=203752, I will rebase the patch and send it here for review once that bug is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586805</commentid>
    <comment_count>24</comment_count>
      <attachid>382693</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-02 22:28:57 -0700</bug_when>
    <thetext>Created attachment 382693
Patch

It should build on ARM64, now that the bug with immediates and logical instructions has been fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586819</commentid>
    <comment_count>25</comment_count>
      <attachid>382693</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-11-03 01:11:44 -0800</bug_when>
    <thetext>Comment on attachment 382693
Patch

Attachment 382693 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/13206739

New failing tests:
mozilla-tests.yaml/ecma/Date/15.9.5.14.js.mozilla-dfg-eager-no-cjit-validate-phases
mozilla-tests.yaml/ecma/Date/15.9.5.34-1.js.mozilla-dfg-eager-no-cjit-validate-phases
mozilla-tests.yaml/ecma/Date/15.9.5.14.js.mozilla-baseline
mozilla-tests.yaml/ecma/Date/15.9.5.34-1.js.mozilla-no-ftl
mozilla-tests.yaml/ecma/Date/15.9.5.14.js.mozilla-no-ftl
mozilla-tests.yaml/ecma/Date/15.9.5.34-1.js.mozilla-ftl-eager-no-cjit-validate-phases
mozilla-tests.yaml/ecma/Date/15.9.5.34-1.js.mozilla-baseline
mozilla-tests.yaml/ecma/Date/15.9.5.34-1.js.mozilla
mozilla-tests.yaml/ecma/Date/15.9.5.14.js.mozilla-llint
mozilla-tests.yaml/ecma/Date/15.9.5.14.js.mozilla-ftl-eager-no-cjit-validate-phases
mozilla-tests.yaml/ecma/Date/15.9.5.34-1.js.mozilla-llint
mozilla-tests.yaml/ecma/Date/15.9.5.14.js.mozilla</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587114</commentid>
    <comment_count>26</comment_count>
      <attachid>382693</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-11-04 13:12:01 -0800</bug_when>
    <thetext>Comment on attachment 382693
Patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587121</commentid>
    <comment_count>27</comment_count>
      <attachid>382693</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-04 13:24:55 -0800</bug_when>
    <thetext>Comment on attachment 382693
Patch

The bots failure related to Date are not caused by my patch, the bots just disliked the DST change somehow. So I am trying to land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587152</commentid>
    <comment_count>28</comment_count>
      <attachid>382693</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-04 14:20:45 -0800</bug_when>
    <thetext>Comment on attachment 382693
Patch

Clearing flags on attachment: 382693

Committed r252015: &lt;https://trac.webkit.org/changeset/252015&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587153</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-04 14:20:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587190</commentid>
    <comment_count>30</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-11-04 15:22:35 -0800</bug_when>
    <thetext>The changes in https://trac.webkit.org/changeset/252015/webkit

has broken the windows build:
https://build.webkit.org/builders/Apple%20Win%2010%20Release%20%28Build%29/builds/8096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587192</commentid>
    <comment_count>31</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-11-04 15:23:00 -0800</bug_when>
    <thetext>EWS did catch this build failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587200</commentid>
    <comment_count>32</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-11-04 15:47:13 -0800</bug_when>
    <thetext>Reverted r252015 for reason:

Broke the Windows build

Committed r252021: &lt;https://trac.webkit.org/changeset/252021&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588432</commentid>
    <comment_count>33</comment_count>
      <attachid>383078</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-07 15:07:40 -0800</bug_when>
    <thetext>Created attachment 383078
Patch

fixed the cloop problem, will land again once all EWS bots are green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588528</commentid>
    <comment_count>34</comment_count>
      <attachid>383100</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-07 17:57:23 -0800</bug_when>
    <thetext>Created attachment 383100
Patch

Fixing another cloop issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588529</commentid>
    <comment_count>35</comment_count>
      <attachid>383100</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-07 18:01:18 -0800</bug_when>
    <thetext>Comment on attachment 383100
Patch

I checked the cloop build locally and it appears finally truly fixed. So trying to land this once again (not waiting for the windows bot because it appears hopelessly slow with 74 patches in wait).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588541</commentid>
    <comment_count>36</comment_count>
      <attachid>383100</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-07 18:46:17 -0800</bug_when>
    <thetext>Comment on attachment 383100
Patch

Clearing flags on attachment: 383100

Committed r252229: &lt;https://trac.webkit.org/changeset/252229&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588542</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-07 18:46:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588876</commentid>
    <comment_count>38</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2019-11-08 16:11:35 -0800</bug_when>
    <thetext>Reverted r252229 for reason:

This caused internal failures.

Committed r252273: &lt;https://trac.webkit.org/changeset/252273&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589618</commentid>
    <comment_count>39</comment_count>
      <attachid>383377</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-12 13:47:23 -0800</bug_when>
    <thetext>Created attachment 383377
Patch

The problem that caused the roll-out was diagnosed by Mark, I still had some or32 left around in the ICs code, and when they were used on the now 16-bits ArithProfiles it could lead to metadata corruption.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589620</commentid>
    <comment_count>40</comment_count>
      <attachid>383379</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-12 13:48:06 -0800</bug_when>
    <thetext>Created attachment 383379
diff

Diff between last version of the patch (reviewed by Keith) and this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589621</commentid>
    <comment_count>41</comment_count>
      <attachid>383377</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-12 13:51:03 -0800</bug_when>
    <thetext>Comment on attachment 383377
Patch

Still visibly buggy on ARM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589637</commentid>
    <comment_count>42</comment_count>
      <attachid>383382</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-12 14:23:36 -0800</bug_when>
    <thetext>Created attachment 383382
Patch

Added the right load16/store16 to the ARM backends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589638</commentid>
    <comment_count>43</comment_count>
      <attachid>383382</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-12 14:29:39 -0800</bug_when>
    <thetext>Comment on attachment 383382
Patch

Still failing on ARM..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589639</commentid>
    <comment_count>44</comment_count>
      <attachid>383383</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-12 14:31:31 -0800</bug_when>
    <thetext>Created attachment 383383
Patch

Just another stupid typo in MacroAssemblerARM64.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589782</commentid>
    <comment_count>45</comment_count>
      <attachid>383383</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-12 23:02:43 -0800</bug_when>
    <thetext>Comment on attachment 383383
Patch

This patch breaks the MIPS port, I filed https://bugs.webkit.org/show_bug.cgi?id=204126 about it.
The windows bot is currently orange, as neither my patch nor ToT pass tests. Since jsc and Mac-debug-wk1 were in the same situation and have since turned green I suspect this was just a temporary breakage on ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589913</commentid>
    <comment_count>46</comment_count>
      <attachid>383383</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-13 10:02:17 -0800</bug_when>
    <thetext>Comment on attachment 383383
Patch

Rejecting attachment 383383 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 383383, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in JSTests/ChangeLog contains OOPS!.

Full output: https://webkit-queues.webkit.org/results/13247583</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589960</commentid>
    <comment_count>47</comment_count>
      <attachid>383473</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-13 11:19:45 -0800</bug_when>
    <thetext>Created attachment 383473
Patch

Just fixed the Changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589967</commentid>
    <comment_count>48</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2019-11-13 11:33:59 -0800</bug_when>
    <thetext>(In reply to Robin Morisset from comment #47)
&gt; Created attachment 383473 [details]
&gt; Patch
&gt; 
&gt; Just fixed the Changelog.

Hi Robin. I have a diff to fix the issue into MIPS. Don&apos;t know if it is too late to include this. I uploaded it into https://bugs.webkit.org/attachment.cgi?id=383476&amp;action=review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589978</commentid>
    <comment_count>49</comment_count>
      <attachid>383473</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-13 12:07:37 -0800</bug_when>
    <thetext>Comment on attachment 383473
Patch

Clearing flags on attachment: 383473

Committed r252422: &lt;https://trac.webkit.org/changeset/252422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589980</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-13 12:07:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589993</commentid>
    <comment_count>51</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-13 12:40:38 -0800</bug_when>
    <thetext>(In reply to Caio Lima from comment #48)
&gt; (In reply to Robin Morisset from comment #47)
&gt; &gt; Created attachment 383473 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Just fixed the Changelog.
&gt; 
&gt; Hi Robin. I have a diff to fix the issue into MIPS. Don&apos;t know if it is too
&gt; late to include this. I uploaded it into
&gt; https://bugs.webkit.org/attachment.cgi?id=383476&amp;action=review

Hi Caio,

Your patch does not apply cleanly on ToT. Feel free to rebase it, and I&apos;ll review it quickly so you can land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605507</commentid>
    <comment_count>52</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-11 00:18:28 -0800</bug_when>
    <thetext>Committed r254395: &lt;https://trac.webkit.org/changeset/254395&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605508</commentid>
    <comment_count>53</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-11 00:28:05 -0800</bug_when>
    <thetext>Committed r254396: &lt;https://trac.webkit.org/changeset/254396&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380706</attachid>
            <date>2019-10-10 17:23:02 -0700</date>
            <delta_ts>2019-10-15 10:57:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchSplitArithProfile</filename>
            <type>text/plain</type>
            <size>116748</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDhiODM2YzQ3ODEwLi4xMzEzNGI3OTFlZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU5IEBACisyMDE5LTEwLTEwICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXJpdGhQcm9maWxlIHdhcyBmb3IgYSBs
b25nIHRpbWUgb25seSB1c2VkIGZvciBhZGQvc3ViL211bC9kaXYsIGJ1dCByZWNlbnRseSBpdCBz
dGFydGVkIGJlaW5nIHVzZWQgZm9yIG5lZ2F0ZS4gQW5kIGl0IHdpbGwgc29vbiBhbHNvIGhhdmUg
dG8gYmUgdXNlZCBmb3IgaW5jIGFuZCBkZWMgZHVlIHRvIEJpZ0ludC4KKyAgICAgICAgU28gaW4g
dGhpcyBwYXRjaCBJIG1ha2UgYSBzZXBhcmF0ZSB2ZXJzaW9uIHRoYXQgb25seSBoYXMgdGhlIGRh
dGEgZm9yIGEgc2luZ2xlIGFyZ3VtZW50LCBhbmQgdGh1cyB0YWtlcyBoYWxmIGFzIG11Y2ggbWVt
b3J5LgorCisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KToKKyAgICAg
ICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXREb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNl
dERvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJv
ZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25OdW1lcmljIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJ
bnQgY29uc3QpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRl
Y29kZS9Bcml0aFByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNl
cnZlTm9uSW50MzIgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2Vy
dmVEb3VibGUgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVO
b25OZWdaZXJvRG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRP
YnNlcnZlTmVnWmVyb0RvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6
ZGlkT2JzZXJ2ZU5vbk51bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6
OmRpZE9ic2VydmVCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRp
ZE9ic2VydmVJbnQzMk92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxl
OjpkaWRPYnNlcnZlSW50NTJPdmVyZmxvdyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJv
ZmlsZTo6c2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQ
cm9maWxlOjpzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUpOgorICAgICAgICAoSlNDOjpBcml0aFBy
b2ZpbGU6OnNldE9ic2VydmVkTm9uTnVtZXJpYyk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTo6c2V0T2JzZXJ2ZWRCaWdJbnQpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9i
c2VydmVkSW50MzJPdmVyZmxvdyk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2Jz
ZXJ2ZWRJbnQ1Mk92ZXJmbG93KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpvYnNlcnZl
UmVzdWx0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjphZGRyZXNzT2ZCaXRzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpiaXRzIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlOjpBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpBcml0aFByb2Zp
bGU6Omhhc0JpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldEJpdCk6
CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjpVbmFyeUFyaXRoUHJvZmlsZSk6Cisg
ICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEJpdHMpOgorICAgICAg
ICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJCaXRzKToKKyAgICAgICAg
KEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Jlc3VsdFR5cGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6YXJnT2JzZXJ2ZWRUeXBlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OnNldEFyZ09ic2VydmVkVHlwZSk6CisgICAgICAgIChK
U0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdJbnQzMik6CisgICAgICAgIChKU0M6OlVuYXJ5
QXJpdGhQcm9maWxlOjphcmdTYXdOdW1iZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJv
ZmlsZTo6YXJnU2F3Tm9uTnVtYmVyKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6
Om9ic2VydmVBcmcpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6aXNPYnNlcnZl
ZFR5cGVFbXB0eSk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6QmluYXJ5QXJp
dGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dEludEJpdHMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVt
YmVySW50Qml0cyk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJ
bnROdW1iZXJCaXRzKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZl
ZE51bWJlck51bWJlckJpdHMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9i
c2VydmVMSFMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFNB
bmRSSFMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2ZWRUeXBl
RW1wdHkpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVEFk
ZElDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YWRkSklUU3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFk
ZEpJVE5lZ0lDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0aFBy
b2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5
QXJpdGhQcm9maWxlRm9yUEMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQ
cm9maWxlRm9yUEMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNwZWNpYWxG
YXN0Q2FzZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6YWRkTWF0aElDKToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAg
IChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZSBjb25z
dCk6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZh
bHVlKToKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6
CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcCk6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bWFrZURpdlNhZmUpOgorICAgICAgICAqIGRmZy9ERkdH
cmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGVGb3IpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVVbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVCaW5hcnlNYXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQXJpdGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAqIGppdC9KSVRBZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRB
ZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmg6
CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdE1hdGhJQ0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRo
SUNTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9tdWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAg
ICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGl2R2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9y
Lmg6CisgICAgICAgIChKU0M6OkpJVERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJhdG9yKToKKyAg
ICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEFyaXRo
UHJvZmlsZSk6CisgICAgICAgICogaml0L0pJVE1hdGhJQy5oOgorICAgICAgICAoSlNDOjpKSVRN
YXRoSUM6OkpJVE1hdGhJQyk6CisgICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJhdGVJbmxp
bmUpOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OmlzQmluYXJ5UHJvZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6SklUQmluYXJ5
TWF0aElDOjpKSVRCaW5hcnlNYXRoSUMpOgorICAgICAgICAoSlNDOjppc1VuYXJ5UHJvZmlsZUVt
cHR5KToKKyAgICAgICAgKEpTQzo6SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAg
ICAgICAgKiBqaXQvSklUTXVsR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAg
ICAgICAqIGppdC9KSVROZWdHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5l
cmF0b3I6OmdlbmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
Lmg6CisgICAgICAgICogaml0L0pJVFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJ
VFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHA6CisgICAgICAgIChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkp
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAg
ICAgICAoSlNDOjpSZXN1bHRUeXBlOjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVu
YXJ5QXJpdGhPcCk6CisgICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFy
aXRoT3ApOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTAtMDggIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgT3B0
aW9uczo6ZW5hYmxlU3BlY3RyZU1pdGlnYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCmluZGV4IDk5OTkzM2I4YzBlLi4wNWVlNzhhNDdi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmls
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5j
cHAKQEAgLTMyLDcgKzMyLDggQEAKIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkK
LXZvaWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwg
SlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQordGVtcGxhdGU8dHlwZW5h
bWUgQml0ZmllbGRUeXBlPgordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9i
c2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lz
dGVyc01vZGUgbW9kZSkKIHsKICAgICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hv
dWxkRW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludCgpKQogICAgICAg
ICByZXR1cm47CkBAIC01OCw0MSArNTksNTAgQEAgdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRPYnNl
cnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWcKICAg
ICBkb25lLmxpbmsoJmppdCk7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0
RG91YmxlKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2Jvb2wgQXJp
dGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdAogewot
ICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6OkludDMyT3ZlcmZsb3cgfCBBcml0aFBy
b2ZpbGU6OkludDUyT3ZlcmZsb3cgfCBBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUgfCBBcml0
aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGU7CisgICAgdWludDMyX3QgbWFzayA9IEludDMyT3Zl
cmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTmVnWmVyb0RvdWJsZSB8IE5vbk5lZ1plcm9Eb3VibGU7
CiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCi12b2lkIEFyaXRoUHJv
ZmlsZTo6ZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5
cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVt
aXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVt
aXRTZXREb3VibGUoKSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoQXJpdGhQcm9maWxlOjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93IHwgQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQcm9maWxlOjpOb25OZWda
ZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygp
KSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEludDMyT3Zl
cmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTmVnWmVyb0RvdWJsZSB8IE5vbk5lZ1plcm9Eb3VibGUp
LCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKIH0KIAot
Ym9vbCBBcml0aFByb2ZpbGU6OnNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3QKK3RlbXBs
YXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlw
ZT46OnNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3QKIHsKICAgICB1aW50MzJfdCBtYXNr
ID0gQXJpdGhQcm9maWxlOjpOb25OdW1lcmljOwogICAgIHJldHVybiAobV9iaXRzICYgbWFzaykg
IT0gbWFzazsKIH0KIAotYm9vbCBBcml0aFByb2ZpbGU6OnNob3VsZEVtaXRTZXRCaWdJbnQoKSBj
b25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9vbCBBcml0aFByb2ZpbGU8
Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0CiB7CiAgICAgdWludDMy
X3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6QmlnSW50OwogICAgIHJldHVybiAobV9iaXRzICYgbWFz
aykgIT0gbWFzazsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXROb25OdW1lcmljKEND
YWxsSGVscGVycyYgaml0KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgor
dm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxI
ZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkp
Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmls
ZTo6Tm9uTnVtZXJpYyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJp
dHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihOb25O
dW1lcmljKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7
CiB9CiAKLXZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYgaml0
KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgordm9pZCBBcml0aFByb2Zp
bGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QK
IHsKICAgICBpZiAoc2hvdWxkRW1pdFNldEJpZ0ludCgpKQotICAgICAgICBqaXQub3IzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6OkJpZ0ludCksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRl
QWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKIH0KKwordGVtcGxhdGUgY2xhc3MgQXJpdGhQcm9m
aWxlPHVpbnQxNl90PjsgLy8gR2VuZXJhdGUgdGhlIGltcGxlbWVudGF0aW9ucyBmb3IgVW5hcnlB
cml0aFByb2ZpbGUKK3RlbXBsYXRlIGNsYXNzIEFyaXRoUHJvZmlsZTx1aW50MzJfdD47IC8vIEdl
bmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbnMgZm9yIEJpbmFyeUFyaXRoUHJvZmlsZQogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpAQCAtMTAxLDcgKzExMSw1MiBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUp
Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgVW5hcnlBcml0aFBy
b2ZpbGUmIHByb2ZpbGUpCit7CisgICAgY29uc3QgY2hhciogc2VwYXJhdG9yID0gIiI7CisKKyAg
ICBvdXQucHJpbnQoIlJlc3VsdDo8Iik7CisgICAgaWYgKCFwcm9maWxlLmRpZE9ic2VydmVOb25J
bnQzMigpKSB7CisgICAgICAgIG91dC5wcmludCgiSW50MzIiKTsKKyAgICAgICAgc2VwYXJhdG9y
ID0gInwiOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVOZWda
ZXJvRG91YmxlKCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludChzZXBhcmF0b3IsICJOZWdaZXJv
RG91YmxlIik7CisgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSkgeworICAgICAgICAg
ICAgb3V0LnByaW50KHNlcGFyYXRvciwgIk5vbk5lZ1plcm9Eb3VibGUiKTsKKyAgICAgICAgICAg
IHNlcGFyYXRvciA9ICJ8IjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvZmlsZS5kaWRPYnNl
cnZlTm9uTnVtZXJpYygpKSB7CisgICAgICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiTm9u
TnVtZXJpYyIpOworICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOworICAgICAgICB9CisgICAg
ICAgIGlmIChwcm9maWxlLmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkpIHsKKyAgICAgICAgICAg
IG91dC5wcmludChzZXBhcmF0b3IsICJJbnQzMk92ZXJmbG93Iik7CisgICAgICAgICAgICBzZXBh
cmF0b3IgPSAifCI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByb2ZpbGUuZGlkT2JzZXJ2ZUlu
dDUyT3ZlcmZsb3coKSkgeworICAgICAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIkludDUy
T3ZlcmZsb3ciKTsKKyAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAocHJvZmlsZS5kaWRPYnNlcnZlQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG91dC5w
cmludChzZXBhcmF0b3IsICJCaWdJbnQiKTsKKyAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsK
KyAgICAgICAgfQorICAgIH0KKyAgICBvdXQucHJpbnQoIj4iKTsKKworICAgIG91dC5wcmludCgi
IEFyZyBPYnNlcnZlZFR5cGU6PCIpOworICAgIG91dC5wcmludChwcm9maWxlLmFyZ09ic2VydmVk
VHlwZSgpKTsKKyAgICBvdXQucHJpbnQoIj4iKTsKKworICAgIG91dC5wcmludCgiIEFyZyBSZXN1
bHRUeXBlOjwiKTsKKyAgICBvdXQucHJpbnQoUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocHJvZmlsZS5hcmdSZXN1bHRUeXBlKCkuYml0cygpKSkp
KTsKKyAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSkKIHsKICAgICBjb25z
dCBjaGFyKiBzZXBhcmF0b3IgPSAiIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oCmluZGV4IGZjYzRlMjgxOGJlLi42NzlhMDVmYjI1NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNjYsMTEx
ICs2NiwyNDMgQEAgcHJpdmF0ZToKICAgICB1aW50OF90IG1fYml0cyB7IDAgfTsKIH07CiAKLXN0
cnVjdCBBcml0aFByb2ZpbGUgewotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IG51bWJlck9mRmxhZ0JpdHMgPSA2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
cmhzUmVzdWx0VHlwZVNoaWZ0ID0gbnVtYmVyT2ZGbGFnQml0czsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBCaXRmaWVsZFR5cGU+CitjbGFzcyBBcml0aFByb2ZpbGUgeworcHVibGljOgorICAgIGVudW0g
T2JzZXJ2ZWRSZXN1bHRzIHsKKyAgICAgICAgTm9uTmVnWmVyb0RvdWJsZSA9IDEgPDwgMCwKKyAg
ICAgICAgTmVnWmVyb0RvdWJsZSAgICA9IDEgPDwgMSwKKyAgICAgICAgTm9uTnVtZXJpYyAgICAg
ICA9IDEgPDwgMiwKKyAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKKyAgICAgICAg
SW50NTJPdmVyZmxvdyAgICA9IDEgPDwgNCwKKyAgICAgICAgQmlnSW50ICAgICAgICAgICA9IDEg
PDwgNSwKKyAgICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgb2JzZXJ2ZWRSZXN1
bHRzTnVtQml0c05lZWRlZCA9IDY7CisKKyAgICBib29sIGRpZE9ic2VydmVOb25JbnQzMigpIGNv
bnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBO
b25OdW1lcmljIHwgQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZURvdWJsZSgpIGNvbnN0
IHsgcmV0dXJuIGhhc0JpdHMoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9Cisg
ICAgYm9vbCBkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0Jp
dHMoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91Ymxl
KCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlk
T2JzZXJ2ZU5vbk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk51bWVyaWMpOyB9
CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhCaWdJ
bnQpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJu
IGhhc0JpdHMoSW50MzJPdmVyZmxvdyk7IH0KKyAgICBib29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJm
bG93KCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhJbnQ1Mk92ZXJmbG93KTsgfQorCisgICAgdm9p
ZCBzZXRPYnNlcnZlZE5vbk5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChOb25OZWdaZXJvRG91Ymxl
KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWROZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTmVnWmVy
b0RvdWJsZSk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkTm9uTnVtZXJpYygpIHsgc2V0Qml0KE5v
bk51bWVyaWMpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEJpZ0ludCgpIHsgc2V0Qml0KEJpZ0lu
dCk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkSW50MzJPdmVyZmxvdygpIHsgc2V0Qml0KEludDMy
T3ZlcmZsb3cpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJp
dChJbnQ1Mk92ZXJmbG93KTsgfQorCisgICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFs
dWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgbV9iaXRz
IHw9IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5l
Z1plcm9Eb3VibGU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBCaWdJ
bnQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9iaXRzIHw9IE5v
bk51bWVyaWM7CisgICAgfQorCisgICAgY29uc3Qgdm9pZCogYWRkcmVzc09mQml0cygpIGNvbnN0
IHsgcmV0dXJuICZtX2JpdHM7IH0KKworI2lmIEVOQUJMRShKSVQpCisgICAgLy8gU2V0cyAoSW50
MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0Rv
dWJsZSkgaWYgaXQgc2VlcyBhCisgICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWVyaWMgaWYgaXQg
c2VlcyBhIG5vbi1udW1lcmljLgorICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxw
ZXJzJiwgSlNWYWx1ZVJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsK
KworICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVy
b0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgorICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgp
IGNvbnN0OworICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKwor
ICAgIC8vIFNldHMgTm9uTnVtYmVyLgorICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxI
ZWxwZXJzJikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0
OworCisgICAgLy8gU2V0cyBCaWdJbnQKKyAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxw
ZXJzJikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKworICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRzOyB9CisKK3Byb3RlY3RlZDoKKyAgICBBcml0aFByb2ZpbGUoQml0Zmll
bGRUeXBlIGJpdHMpCisgICAgICAgIDogbV9iaXRzKGJpdHMpCisgICAgeworICAgIH0KKworICAg
IGJvb2wgaGFzQml0cyhpbnQgbWFzaykgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgbWFzazsgfQor
ICAgIHZvaWQgc2V0Qml0KGludCBtYXNrKSB7IG1fYml0cyB8PSBtYXNrOyB9CisKKyAgICBCaXRm
aWVsZFR5cGUgbV9iaXRzIHsgMCB9OyAvLyBXZSB0YWtlIGNhcmUgdG8gdXBkYXRlIG1fYml0cyBv
bmx5IGluIGEgc2luZ2xlIG9wZXJhdGlvbi4gV2UgZG9uJ3QgZXZlciBzdG9yZSBhbiBpbmNvbnNp
c3RlbnQgYml0IHJlcHJlc2VudGF0aW9uIHRvIGl0LgorfTsKKworLyogVGhpcyBjbGFzcyBzdG9y
ZXMgdGhlIGZvbGxvd2luZyBjb21wb25lbnRzIGluIDE2IGJpdHM6CisgKiAtIE9ic2VydmVkUmVz
dWx0cworICogLSBSZXN1bHRUeXBlIGZvciB0aGUgYXJndW1lbnQKKyAqIC0gT2JzZXJ2ZWRUeXBl
IGZvciB0aGUgYXJndW1lbnQKKyAqLworY2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMg
QXJpdGhQcm9maWxlPHVpbnQxNl90PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBh
cmdSZXN1bHRUeXBlU2hpZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgPSBhcmdSZXN1bHRU
eXBlU2hpZnQgKyBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkOworCisgICAgc3RhdGljX2Fzc2Vy
dChhcmdPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8PSBz
aXplb2YodWludDE2X3QpICogOCwgIlNob3VsZCBmaXQgaW4gYSB1aW50MTZfdCIpOworCisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sgPSBz
dGF0aWNfY2FzdDx1aW50MTZfdD4ofigwYjExMSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdCkpOwor
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCByZXN1bHRUeXBlTWFzayA9ICgxIDw8IFJl
c3VsdFR5cGU6Om51bUJpdHNOZWVkZWQpIC0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQx
Nl90IG9ic2VydmVkVHlwZU1hc2sgPSAoMSA8PCBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQp
IC0gMTsKKworcHVibGljOgorICAgIFVuYXJ5QXJpdGhQcm9maWxlKFJlc3VsdFR5cGUgYXJnKQor
ICAgICAgICA6IEFyaXRoUHJvZmlsZTx1aW50MTZfdD4oYXJnLmJpdHMoKSA8PCBhcmdSZXN1bHRU
eXBlU2hpZnQpCisgICAgeworICAgICAgICBBU1NFUlQoYXJnUmVzdWx0VHlwZSgpLmJpdHMoKSA9
PSBhcmcuYml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHko
KSk7CisgICAgICAgIEFTU0VSVChhcmdPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOworICAgIH0K
KworICAgIFVuYXJ5QXJpdGhQcm9maWxlKCkKKyAgICAgICAgOiBVbmFyeUFyaXRoUHJvZmlsZShS
ZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQxNl90IG9ic2VydmVkSW50Qml0cygpCisgICAgeworICAgICAgICBjb25zdGV4
cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIo
KSB9OworICAgICAgICBjb25zdGV4cHIgdWludDE2X3QgYml0cyA9IG9ic2VydmVkSW50MzIuYml0
cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMg
PT0gMHgyMDAwLCAiIik7CisgICAgICAgIHJldHVybiBiaXRzOworICAgIH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQxNl90IG9ic2VydmVkTnVtYmVyQml0cygpCisgICAgeworICAgICAgICBj
b25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0
aE51bWJlcigpIH07CisgICAgICAgIGNvbnN0ZXhwciB1aW50MTZfdCBiaXRzID0gb2JzZXJ2ZWRO
dW1iZXIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KGJpdHMgPT0gMHg0MDAwLCAiIik7CisgICAgICAgIHJldHVybiBiaXRzOworICAgIH0KKwor
ICAgIFJlc3VsdFR5cGUgYXJnUmVzdWx0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUo
KG1fYml0cyA+PiBhcmdSZXN1bHRUeXBlU2hpZnQpICYgcmVzdWx0VHlwZU1hc2spOyB9CisKKyAg
ICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGFyZ09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVk
VHlwZU1hc2spOyB9CisgICAgdm9pZCBzZXRBcmdPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5
cGUpCisgICAgeworICAgICAgICB1aW50MTZfdCBiaXRzID0gbV9iaXRzOworICAgICAgICBiaXRz
ICY9IGNsZWFyQXJnT2JzZXJ2ZWRUeXBlQml0TWFzazsKKyAgICAgICAgYml0cyB8PSB0eXBlLmJp
dHMoKSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdDsKKyAgICAgICAgbV9iaXRzID0gYml0czsKKyAg
ICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpID09IHR5cGUpOworICAgIH0KKworICAgIHZv
aWQgYXJnU2F3SW50MzIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53
aXRoSW50MzIoKSk7IH0KKyAgICB2b2lkIGFyZ1Nhd051bWJlcigpIHsgc2V0QXJnT2JzZXJ2ZWRU
eXBlKGFyZ09ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSk7IH0KKyAgICB2b2lkIGFyZ1Nhd05v
bk51bWJlcigpIHsgc2V0QXJnT2JzZXJ2ZWRUeXBlKGFyZ09ic2VydmVkVHlwZSgpLndpdGhOb25O
dW1iZXIoKSk7IH0KKworICAgIHZvaWQgb2JzZXJ2ZUFyZyhKU1ZhbHVlIGFyZykKKyAgICB7Cisg
ICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKKyAgICAgICAgaWYg
KGFyZy5pc051bWJlcigpKSB7CisgICAgICAgICAgICBpZiAoYXJnLmlzSW50MzIoKSkKKyAgICAg
ICAgICAgICAgICBuZXdQcm9maWxlLmFyZ1Nhd0ludDMyKCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5hcmdTYXdOdW1iZXIoKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBuZXdQcm9maWxlLmFyZ1Nhd05vbk51bWJlcigpOworCisgICAgICAgIG1f
Yml0cyA9IG5ld1Byb2ZpbGUuYml0cygpOworICAgIH0KKworICAgIGJvb2wgaXNPYnNlcnZlZFR5
cGVFbXB0eSgpCisgICAgeworICAgICAgICByZXR1cm4gYXJnT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0
eSgpOworICAgIH0KKworICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKK307CisKKy8qIFRoaXMgY2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBp
biAzMiBiaXRzOgorICogLSBPYnNlcnZlZFJlc3VsdHMKKyAqIC0gUmVzdWx0VHlwZSBmb3Igcmln
aHQtaGFuZC1zaWRlCisgKiAtIFJlc3VsdFR5cGUgZm9yIGxlZnQtaGFuZC1zaWRlCisgKiAtIE9i
c2VydmVkVHlwZSBmb3IgcmlnaHQtaGFuZC1zaWRlCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgbGVm
dC1oYW5kLXNpZGUKKyAqIC0gYSBiaXQgdXNlZCBieSBkaXZpc2lvbiB0byBpbmRpY2F0ZSB3aGV0
aGVyIGEgc3BlY2lhbCBmYXN0IHBhdGggd2FzIHRha2VuCisgKi8KK2NsYXNzIEJpbmFyeUFyaXRo
UHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8dWludDMyX3Q+IHsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQzMl90IHJoc1Jlc3VsdFR5cGVTaGlmdCA9IG9ic2VydmVkUmVzdWx0c051bUJp
dHNOZWVkZWQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNSZXN1bHRUeXBlU2hp
ZnQgPSByaHNSZXN1bHRUeXBlU2hpZnQgKyBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkOwogICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSBsaHNSZXN1
bHRUeXBlU2hpZnQgKyBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlm
dCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsKIAogICAgIHN0YXRpY19hc3NlcnQoT2Jz
ZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJXZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9u
IGFib3V0IHRoYXQgaGVyZS4iKTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGNsZWFy
UmhzT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih+KCgxIDw8IHJo
c09ic2VydmVkVHlwZVNoaWZ0KSB8ICgxIDw8IChyaHNPYnNlcnZlZFR5cGVTaGlmdCArIDEpKSB8
ICgxIDw8IChyaHNPYnNlcnZlZFR5cGVTaGlmdCArIDIpKSkpOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludDMyX3QgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KH4oKDEgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKGxoc09ic2VydmVk
VHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjbGVhclJoc09ic2VydmVkVHlwZUJpdE1hc2sg
PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ofigwYjExMSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCkp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRN
YXNrID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KH4oMGIxMTEgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQpKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmVzdWx0VHlwZU1hc2sgPSAo
MSA8PCBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRz
TmVlZGVkKSAtIDE7CiAKLSAgICBlbnVtIGNsYXNzIENvbnN0YW50VGFnIHsgQ29uc3RhbnQgfTsK
LQogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc3BlY2lhbEZhc3RQYXRo
Qml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNO
ZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2
ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSA8PSAoc2l6ZW9mKHVpbnQzMl90KSAqIDgpIC0gMSwgIlNo
b3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZl
ZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZih1
aW50MzJfdCkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHVpbnQzMl90LiIpOwogICAgIHN0YXRpY19h
c3NlcnQoIShzcGVjaWFsRmFzdFBhdGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNr
KSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2Vy
dChzcGVjaWFsRmFzdFBhdGhCaXQgJiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVz
ZSBiaXRzIHNob3VsZCBpbnRlcnNlY3QuIik7CiAgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFz
dFBhdGhCaXQgPiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhlc2UgYml0cyBzaG91
bGQgbm90IGludGVyc2VjdCBhbmQgc3BlY2lhbEZhc3RQYXRoQml0IHNob3VsZCBiZSBhIGhpZ2hl
ciBiaXQuIik7CiAKLSAgICBBcml0aFByb2ZpbGUoUmVzdWx0VHlwZSBhcmcpCi0gICAgICAgIDog
QXJpdGhQcm9maWxlKENvbnN0YW50VGFnOjpDb25zdGFudCwgYXJnKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKGxoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gYXJnLmJpdHMoKSk7Ci0gICAgICAgIEFT
U0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQocmhzT2Jz
ZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKLSAgICB9Ci0KLSAgICBBcml0aFByb2ZpbGUoUmVzdWx0
VHlwZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQotICAgICAgICA6IEFyaXRoUHJvZmlsZShDb25zdGFu
dFRhZzo6Q29uc3RhbnQsIGxocywgcmhzKQorICAgIEJpbmFyeUFyaXRoUHJvZmlsZShSZXN1bHRU
eXBlIGxocywgUmVzdWx0VHlwZSByaHMpCisgICAgICAgIDogQXJpdGhQcm9maWxlPHVpbnQzMl90
PigobGhzLmJpdHMoKSA8PCBsaHNSZXN1bHRUeXBlU2hpZnQpIHwgKHJocy5iaXRzKCkgPDwgcmhz
UmVzdWx0VHlwZVNoaWZ0KSkKICAgICB7CiAgICAgICAgIEFTU0VSVChsaHNSZXN1bHRUeXBlKCku
Yml0cygpID09IGxocy5iaXRzKCkgJiYgcmhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSByaHMuYml0
cygpKTsKICAgICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAg
ICAgIEFTU0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwogICAgIH0KIAotICAgIEFy
aXRoUHJvZmlsZShPcGVyYW5kVHlwZXMgdHlwZXMpCi0gICAgICAgIDogQXJpdGhQcm9maWxlKHR5
cGVzLmZpcnN0KCksIHR5cGVzLnNlY29uZCgpKQorICAgIEJpbmFyeUFyaXRoUHJvZmlsZShPcGVy
YW5kVHlwZXMgdHlwZXMpCisgICAgICAgIDogQmluYXJ5QXJpdGhQcm9maWxlKHR5cGVzLmZpcnN0
KCksIHR5cGVzLnNlY29uZCgpKQogICAgIHsgfQogCi0gICAgQXJpdGhQcm9maWxlKCkgPSBkZWZh
dWx0OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgZnJvbUludCh1aW50MzJf
dCBiaXRzKQorICAgIEJpbmFyeUFyaXRoUHJvZmlsZSgpCisgICAgICAgIDogQmluYXJ5QXJpdGhQ
cm9maWxlKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIFJlc3VsdFR5cGU6OnVua25vd25UeXBl
KCkpCiAgICAgewotICAgICAgICByZXR1cm4gQXJpdGhQcm9maWxlIHsgQ29uc3RhbnRUYWc6OkNv
bnN0YW50LCBiaXRzIH07CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2Zp
bGUgb2JzZXJ2ZWRVbmFyeUludCgpCi0gICAgewotICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRU
eXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAg
ICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09i
c2VydmVkVHlwZVNoaWZ0OwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHg4MDAwMDAs
ICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7Ci0gICAgfQotICAgIHN0YXRpYyBj
b25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkVW5hcnlOdW1iZXIoKQotICAgIHsKLSAgICAg
ICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgp
LndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IG9ic2Vy
dmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChiaXRzID09IDB4MTAwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChi
aXRzKTsKLSAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRC
aW5hcnlJbnRJbnQoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgb2JzZXJ2ZWRJbnRJ
bnRCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJ
bnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07CiAgICAgICAgIGNvbnN0ZXhwciB1
aW50MzJfdCBiaXRzID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNo
aWZ0KSB8IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDkwMDAwMCwgIiIpOwotICAgICAgICByZXR1
cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQotICAgIHN0YXRp
YyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkKKyAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2VydmVkTnVtYmVySW50Qml0cygpCiAgICAgewog
ICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRU
eXBlKCkud2l0aE51bWJlcigpIH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2Jz
ZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07CiAgICAgICAgIGNvbnN0
ZXhwciB1aW50MzJfdCBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZl
ZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQpOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMTAwMDAwLCAiIik7Ci0gICAg
ICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIo
KQorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgb2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkK
ICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWROdW1iZXIgeyBP
YnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkgfTsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVk
VHlwZSBvYnNlcnZlZEludDMyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkgfTsKICAgICAg
ICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhz
T2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCByaHNPYnNlcnZl
ZFR5cGVTaGlmdCk7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweGEwMDAwMCwgIiIp
OwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAg
ICAgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5TnVt
YmVyTnVtYmVyKCkKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2VydmVkTnVtYmVy
TnVtYmVyQml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2Vy
dmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigpIH07CiAgICAgICAgIGNvbnN0
ZXhwciB1aW50MzJfdCBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZl
ZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNo
aWZ0KTsKICAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4MTIwMDAwMCwgIiIpOwotICAg
ICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQog
Ci0gICAgZW51bSBPYnNlcnZlZFJlc3VsdHMgewotICAgICAgICBOb25OZWdaZXJvRG91YmxlID0g
MSA8PCAwLAotICAgICAgICBOZWdaZXJvRG91YmxlICAgID0gMSA8PCAxLAotICAgICAgICBOb25O
dW1lcmljICAgICAgID0gMSA8PCAyLAotICAgICAgICBJbnQzMk92ZXJmbG93ICAgID0gMSA8PCAz
LAotICAgICAgICBJbnQ1Mk92ZXJmbG93ICAgID0gMSA8PCA0LAotICAgICAgICBCaWdJbnQgICAg
ICAgICAgID0gMSA8PCA1LAotICAgIH07Ci0KICAgICBSZXN1bHRUeXBlIGxoc1Jlc3VsdFR5cGUo
KSBjb25zdCB7IHJldHVybiBSZXN1bHRUeXBlKChtX2JpdHMgPj4gbGhzUmVzdWx0VHlwZVNoaWZ0
KSAmIHJlc3VsdFR5cGVNYXNrKTsgfQogICAgIFJlc3VsdFR5cGUgcmhzUmVzdWx0VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUoKG1fYml0cyA+PiByaHNSZXN1bHRUeXBlU2hpZnQpICYg
cmVzdWx0VHlwZU1hc2spOyB9CiAKQEAgLTE5NiwzOSArMzI4LDYgQEAgcHVibGljOgogCiAgICAg
Ym9vbCB0b29rU3BlY2lhbEZhc3RQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgc3BlY2lh
bEZhc3RQYXRoQml0OyB9CiAKLSAgICBib29sIGRpZE9ic2VydmVOb25JbnQzMigpIGNvbnN0IHsg
cmV0dXJuIGhhc0JpdHMoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1l
cmljIHwgQmlnSW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZURvdWJsZSgpIGNvbnN0IHsgcmV0
dXJuIGhhc0JpdHMoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9v
bCBkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9u
TmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgY29u
c3QgeyByZXR1cm4gaGFzQml0cyhOZWdaZXJvRG91YmxlKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2
ZU5vbk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk51bWVyaWMpOyB9Ci0gICAg
Ym9vbCBkaWRPYnNlcnZlQmlnSW50KCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhCaWdJbnQpOyB9
Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0Jp
dHMoSW50MzJPdmVyZmxvdyk7IH0KLSAgICBib29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkg
Y29uc3QgeyByZXR1cm4gaGFzQml0cyhJbnQ1Mk92ZXJmbG93KTsgfQotCi0gICAgdm9pZCBzZXRP
YnNlcnZlZE5vbk5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChOb25OZWdaZXJvRG91YmxlKTsgfQot
ICAgIHZvaWQgc2V0T2JzZXJ2ZWROZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTmVnWmVyb0RvdWJs
ZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkTm9uTnVtZXJpYygpIHsgc2V0Qml0KE5vbk51bWVy
aWMpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEJpZ0ludCgpIHsgc2V0Qml0KEJpZ0ludCk7IH0K
LSAgICB2b2lkIHNldE9ic2VydmVkSW50MzJPdmVyZmxvdygpIHsgc2V0Qml0KEludDMyT3ZlcmZs
b3cpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQ1
Mk92ZXJmbG93KTsgfQotCi0gICAgY29uc3Qgdm9pZCogYWRkcmVzc09mQml0cygpIGNvbnN0IHsg
cmV0dXJuICZtX2JpdHM7IH0KLQotICAgIHZvaWQgb2JzZXJ2ZVJlc3VsdChKU1ZhbHVlIHZhbHVl
KQotICAgIHsKLSAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgIG1fYml0cyB8
PSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWda
ZXJvRG91YmxlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmICh2
YWx1ZSAmJiB2YWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAgICAgICBtX2JpdHMgfD0gQmlnSW50
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fYml0cyB8PSBOb25O
dW1lcmljOwotICAgIH0KLQogICAgIHZvaWQgbGhzU2F3SW50MzIoKSB7IHNldExoc09ic2VydmVk
VHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSk7IH0KICAgICB2b2lkIGxoc1Nhd051
bWJlcigpIHsgc2V0TGhzT2JzZXJ2ZWRUeXBlKGxoc09ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIo
KSk7IH0KICAgICB2b2lkIGxoc1Nhd05vbk51bWJlcigpIHsgc2V0TGhzT2JzZXJ2ZWRUeXBlKGxo
c09ic2VydmVkVHlwZSgpLndpdGhOb25OdW1iZXIoKSk7IH0KQEAgLTIzOCw3ICszMzcsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIG9ic2VydmVMSFMoSlNWYWx1ZSBsaHMpCiAgICAgewotICAgICAg
ICBBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlzOworICAgICAgICBCaW5hcnlBcml0aFBy
b2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlzOwogICAgICAgICBpZiAobGhzLmlzTnVtYmVyKCkpIHsK
ICAgICAgICAgICAgIGlmIChsaHMuaXNJbnQzMigpKQogICAgICAgICAgICAgICAgIG5ld1Byb2Zp
bGUubGhzU2F3SW50MzIoKTsKQEAgLTI1NCw3ICszNTMsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBvYnNlcnZlTEhTKGxocyk7CiAKLSAgICAgICAgQXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUg
PSAqdGhpczsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsK
ICAgICAgICAgaWYgKHJocy5pc051bWJlcigpKSB7CiAgICAgICAgICAgICBpZiAocmhzLmlzSW50
MzIoKSkKICAgICAgICAgICAgICAgICBuZXdQcm9maWxlLnJoc1Nhd0ludDMyKCk7CkBAIC0yNjYs
NDcgKzM2NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYml0cyA9IG5ld1Byb2ZpbGUuYml0cygp
OwogICAgIH0KIAotI2lmIEVOQUJMRShKSVQpICAgIAotICAgIC8vIFNldHMgKEludDMyT3ZlcmZs
b3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpIGlm
IGl0IHNlZXMgYQotICAgIC8vIGRvdWJsZS4gU2V0cyBOb25OdW1lcmljIGlmIGl0IHNlZXMgYSBu
b24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpT
VmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7Ci0gICAgCi0g
ICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91
YmxlIHwgTmVnWmVyb0RvdWJsZSkuCi0gICAgYm9vbCBzaG91bGRFbWl0U2V0RG91YmxlKCkgY29u
c3Q7Ci0gICAgdm9pZCBlbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIAot
ICAgIC8vIFNldHMgTm9uTnVtYmVyLgotICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxI
ZWxwZXJzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0
OwotCi0gICAgLy8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxw
ZXJzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7Ci0jZW5k
aWYgLy8gRU5BQkxFKEpJVCkKLQotICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRzOyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3RleHByIGV4cGxpY2l0IEFy
aXRoUHJvZmlsZShDb25zdGFudFRhZywgdWludDMyX3QgYml0cykKLSAgICAgICAgOiBtX2JpdHMo
Yml0cykKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3RleHByIEFyaXRoUHJvZmlsZShDb25zdGFu
dFRhZywgUmVzdWx0VHlwZSBhcmcpCi0gICAgICAgIDogbV9iaXRzKGFyZy5iaXRzKCkgPDwgbGhz
UmVzdWx0VHlwZVNoaWZ0KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgQXJpdGhQcm9m
aWxlKENvbnN0YW50VGFnLCBSZXN1bHRUeXBlIGxocywgUmVzdWx0VHlwZSByaHMpCi0gICAgICAg
IDogbV9iaXRzKChsaHMuYml0cygpIDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkgfCAocmhzLmJpdHMo
KSA8PCByaHNSZXN1bHRUeXBlU2hpZnQpKQorICAgIGJvb2wgaXNPYnNlcnZlZFR5cGVFbXB0eSgp
CiAgICAgeworICAgICAgICByZXR1cm4gbGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpICYmIHJo
c09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKICAgICB9CiAKLSAgICBib29sIGhhc0JpdHMoaW50
IG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIG1hc2s7IH0KLSAgICB2b2lkIHNldEJpdChp
bnQgbWFzaykgeyBtX2JpdHMgfD0gbWFzazsgfQotCi0gICAgdWludDMyX3QgbV9iaXRzIHsgMCB9
OyAvLyBXZSB0YWtlIGNhcmUgdG8gdXBkYXRlIG1fYml0cyBvbmx5IGluIGEgc2luZ2xlIG9wZXJh
dGlvbi4gV2UgZG9uJ3QgZXZlciBzdG9yZSBhbiBpbmNvbnNpc3RlbnQgYml0IHJlcHJlc2VudGF0
aW9uIHRvIGl0LgotCiAgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogfTsKIApAQCAtMzE0LDcgKzM3Nyw4IEBAIHByaXZhdGU6CiAKIG5hbWVzcGFjZSBXVEYgewog
Ci12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6OkFyaXRoUHJvZmls
ZSYpOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpVbmFyeUFy
aXRoUHJvZmlsZSYpOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlND
OjpCaW5hcnlBcml0aFByb2ZpbGUmKTsKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYs
IGNvbnN0IEpTQzo6T2JzZXJ2ZWRUeXBlJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggYzA4NmI4
ZWIzZjMuLmZiMzkzZWE0OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKQEAgLTQxLDYgKzQxLDcgQEAgdHlwZXMgWwogICAgIDpKU1R5cGUs
CiAgICAgOkpTVmFsdWUsCiAgICAgOkxMSW50Q2FsbExpbmtJbmZvLAorICAgIDpSZXN1bHRUeXBl
LAogICAgIDpPcGVyYW5kVHlwZXMsCiAgICAgOlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLAogICAg
IDpQcm9wZXJ0eU9mZnNldCwKQEAgLTU3LDcgKzU4LDggQEAgdHlwZXMgWwogCiAgICAgOlZhbHVl
UHJvZmlsZSwKICAgICA6VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciwKLSAgICA6QXJpdGhQ
cm9maWxlLAorICAgIDpVbmFyeUFyaXRoUHJvZmlsZSwKKyAgICA6QmluYXJ5QXJpdGhQcm9maWxl
LAogICAgIDpBcnJheVByb2ZpbGUsCiAgICAgOkFycmF5QWxsb2NhdGlvblByb2ZpbGUsCiAgICAg
Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlLApAQCAtMjgyLDcgKzI4NCw3IEBAIG9wX2dyb3VwIDpQ
cm9maWxlZEJpbmFyeU9wLAogICAgICAgICBvcGVyYW5kVHlwZXM6IE9wZXJhbmRUeXBlcywKICAg
ICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFyaXRoUHJvZmlsZTogQXJpdGhQcm9maWxl
CisgICAgICAgIGFyaXRoUHJvZmlsZTogQmluYXJ5QXJpdGhQcm9maWxlCiAgICAgfSwKICAgICBt
ZXRhZGF0YV9pbml0aWFsaXplcnM6IHsKICAgICAgICAgYXJpdGhQcm9maWxlOiA6b3BlcmFuZFR5
cGVzCkBAIC0zNjcsMTMgKzM2OSwxMyBAQCBvcCA6bmVnYXRlLAogICAgIGFyZ3M6IHsKICAgICAg
ICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5kVHlwZXMsCisgICAgICAgIHJlc3VsdFR5
cGU6IFJlc3VsdFR5cGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0aFBy
b2ZpbGU6IEFyaXRoUHJvZmlsZSwKKyAgICAgICAgYXJpdGhQcm9maWxlOiBVbmFyeUFyaXRoUHJv
ZmlsZSwKICAgICB9LAogICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBhcml0
aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiA6cmVzdWx0VHlw
ZQogICAgIH0KIAogb3AgOm5vdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggNjBjYzY1ZTY0NDUuLjE0M2EzNjJhZTVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ4MCwyNSArMTQ4MCwy
NSBAQCBTdHJ1Y3R1cmVTdHViSW5mbyogQ29kZUJsb2NrOjphZGRTdHViSW5mbyhBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUpCiAgICAgcmV0dXJuIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX3N0dWJJbmZv
cy5hZGQoYWNjZXNzVHlwZSk7CiB9CiAKLUpJVEFkZElDKiBDb2RlQmxvY2s6OmFkZEpJVEFkZElD
KEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUQWRkSUMqIENvZGVCbG9jazo6YWRkSklU
QWRkSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tl
cikubV9hZGRJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CiB9CiAKLUpJVE11bElDKiBDb2RlQmxvY2s6
OmFkZEpJVE11bElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUTXVsSUMqIENvZGVC
bG9jazo6YWRkSklUTXVsSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJldHVybiBlbnN1cmVK
SVREYXRhKGxvY2tlcikubV9tdWxJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CiB9CiAKLUpJVFN1YklD
KiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklU
U3ViSUMqIENvZGVCbG9jazo6YWRkSklUU3ViSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJl
dHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9zdWJJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CiB9
CiAKLUpJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlKQorSklUTmVnSUMqIENvZGVCbG9jazo6YWRkSklUTmVnSUMoVW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CiAgICAgcmV0dXJuIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX25lZ0lDcy5hZGQoYXJpdGhQ
cm9maWxlKTsKQEAgLTMwODUsMTYgKzMwODUsMTkgQEAgY29uc3QgSW5zdHJ1Y3Rpb24qIENvZGVC
bG9jazo6b3V0T2ZMaW5lSnVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiogcGMpCiAgICAgcmV0
dXJuIGluc3RydWN0aW9ucygpLmF0KG9mZnNldCArIHRhcmdldCkucHRyKCk7CiB9CiAKLUFyaXRo
UHJvZmlsZSogQ29kZUJsb2NrOjphcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQorQmluYXJ5QXJpdGhQcm9maWxlKiBD
b2RlQmxvY2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgcmV0dXJuIGFyaXRoUHJvZmls
ZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KS5wdHIoKSk7CisgICAgcmV0
dXJuIGJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zm
c2V0KS5wdHIoKSk7CiB9CiAKLUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjphcml0aFByb2ZpbGVG
b3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCitVbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2Nr
Ojp1bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgYnl0ZWNvZGVPZmZzZXQpCit7CisgICAgcmV0dXJuIHVuYXJ5QXJpdGhQcm9maWxlRm9y
UEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVPZmZzZXQpLnB0cigpKTsKK30KKworQmluYXJ5
QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IElu
c3RydWN0aW9uKiBwYykKIHsKICAgICBzd2l0Y2ggKHBjLT5vcGNvZGVJRCgpKSB7Ci0gICAgY2Fz
ZSBvcF9uZWdhdGU6Ci0gICAgICAgIHJldHVybiAmcGMtPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRh
KHRoaXMpLm1fYXJpdGhQcm9maWxlOwogICAgIGNhc2Ugb3BfYWRkOgogICAgICAgICByZXR1cm4g
JnBjLT5hczxPcEFkZD4oKS5tZXRhZGF0YSh0aGlzKS5tX2FyaXRoUHJvZmlsZTsKICAgICBjYXNl
IG9wX211bDoKQEAgLTMxMTAsMTEgKzMxMTMsMjMgQEAgQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6
OmFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAorVW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6dW5hcnlBcml0aFByb2Zp
bGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgc3dpdGNoIChwYy0+b3Bjb2Rl
SUQoKSkgeworICAgIGNhc2Ugb3BfbmVnYXRlOgorICAgICAgICByZXR1cm4gJnBjLT5hczxPcE5l
Z2F0ZT4oKS5tZXRhZGF0YSh0aGlzKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogYm9vbCBDb2Rl
QmxvY2s6OmNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZShJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0
IGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIGlmICghaGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEFyaXRoUHJvZmlsZSogcHJvZmlsZSA9IGFyaXRo
UHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBCaW5hcnlBcml0
aFByb2ZpbGUqIHByb2ZpbGUgPSBiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCk7CiAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIHByb2ZpbGUtPnRvb2tTcGVjaWFsRmFzdFBhdGgoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA0MjMzZWEyMWU5NC4uMmEwMzZj
YWIzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAg
LTgzLDYgKzgzLDggQEAgc3RydWN0IE9TUkV4aXRTdGF0ZTsKIH0gLy8gbmFtZXNwYWNlIERGRwog
I2VuZGlmCiAKK2NsYXNzIFVuYXJ5QXJpdGhQcm9maWxlOworY2xhc3MgQmluYXJ5QXJpdGhQcm9m
aWxlOwogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgQ29kZUJsb2NrU2V0
OwogY2xhc3MgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTsKQEAgLTk2LDcgKzk4LDYgQEAgY2xh
c3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsK
IAotc3RydWN0IEFyaXRoUHJvZmlsZTsKIHN0cnVjdCBPcENhdGNoOwogCiBlbnVtIFJlb3B0aW1p
emF0aW9uTW9kZSB7IERvbnRDb3VudFJlb3B0aW1pemF0aW9uLCBDb3VudFJlb3B0aW1pemF0aW9u
IH07CkBAIC0yNzksMjIgKzI4MCwyMiBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpJVERhdGEmIGVu
c3VyZUpJVERhdGFTbG93KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOwogCi0gICAgSklUQWRk
SUMqIGFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVE11bElDKiBhZGRKSVRNdWxJ
QyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVROZWdJQyogYWRkSklUTmVnSUMoQXJpdGhQcm9maWxl
Kik7Ci0gICAgSklUU3ViSUMqIGFkZEpJVFN1YklDKEFyaXRoUHJvZmlsZSopOworICAgIEpJVEFk
ZElDKiBhZGRKSVRBZGRJQyhCaW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBKSVRNdWxJQyogYWRk
SklUTXVsSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lD
KFVuYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUU3ViSUMqIGFkZEpJVFN1YklDKEJpbmFyeUFy
aXRoUHJvZmlsZSopOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5h
bWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRB
ZGRHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUQWRkSUMqIGFkZE1hdGhJQyhBcml0
aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVEFkZElDKHByb2ZpbGUpOyB9CisgICAg
SklUQWRkSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJu
IGFkZEpJVEFkZElDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJh
dG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5l
cmF0b3IsIEpJVE11bEdlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBKSVRNdWxJQyogYWRk
TWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTXVsSUMocHJvZmls
ZSk7IH0KKyAgICBKSVRNdWxJQyogYWRkTWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogcHJvZmls
ZSkgeyByZXR1cm4gYWRkSklUTXVsSUMocHJvZmlsZSk7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19zYW1lPEdlbmVyYXRvciwgSklUTmVnR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJ
VE5lZ0lDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRO
ZWdJQyhwcm9maWxlKTsgfQorICAgIEpJVE5lZ0lDKiBhZGRNYXRoSUMoVW5hcnlBcml0aFByb2Zp
bGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE5lZ0lDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVFN1YkdlbmVyYXRvcj46OnZhbHVlPjo6dHlw
ZT4KLSAgICBKSVRTdWJJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1
cm4gYWRkSklUU3ViSUMocHJvZmlsZSk7IH0KKyAgICBKSVRTdWJJQyogYWRkTWF0aElDKEJpbmFy
eUFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUU3ViSUMocHJvZmlsZSk7IH0K
IAogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBhZGRTdHViSW5mbyhBY2Nlc3NUeXBlKTsKIApAQCAt
NDkyLDggKzQ5MywxMCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dm9pZCBmb3JFYWNoT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaExMSW50Q2FsbExpbmtJbmZv
KGNvbnN0IEZ1bmN0b3ImKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCk7Ci0g
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiopOwor
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCk7CisgICAgVW5hcnlB
cml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxl
KiBiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiopOworICAgIFVuYXJ5
QXJpdGhQcm9maWxlKiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKik7
CiAKICAgICBib29sIGNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZShJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRz
LmgKaW5kZXggOWFiNzcxMzdhYTYuLjc3Nzk0YzdkZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmgKQEAgLTIzNiw2ICsyMzYsMjcgQEAgc3RydWN0IEZpdHM8RSwgc2l6ZSwg
c3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZh
bHUKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0czxS
ZXN1bHRUeXBlLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihSZXN1bHRUeXBlKSAhPSBz
aXplLCBzdGQ6OnRydWVfdHlwZT4+IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZXN1bHRU
eXBlKSA9PSBzaXplb2YodWludDhfdCkpOworICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFt
ZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7CisKKyAgICBzdGF0aWMgYm9vbCBjaGVj
ayhSZXN1bHRUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
c3RhdGljIFRhcmdldFR5cGUgY29udmVydChSZXN1bHRUeXBlIHR5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VGFyZ2V0VHlwZT4odHlwZS5iaXRzKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBSZXN1bHRUeXBlIGNvbnZlcnQoVGFyZ2V0VHlwZSB0eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoc3RhdGljX2Nhc3Q8dWludDhfdD4odHlwZSkpOworICAg
IH0KK307CisKIHRlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPE9wZXJhbmRU
eXBlcywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoT3BlcmFuZFR5cGVzKSAhPSBzaXpl
LCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kVHlw
ZXMpID09IHNpemVvZih1aW50MTZfdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmlu
ZGV4IDdlM2NjOTRmYTQ2Li5lMDI3NzY5YTBjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmNwcApAQCAtNjYsMTAgKzY2LDE2IEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsK
LSAgICAgICAgdS5hcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9O
b3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsK
KyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdz
LCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwogICAgICAgICByZXR1cm47Ci0gICAgfSB9CisgICAg
fQorCisgICAgY2FzZSBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LmJpbmFy
eUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdS
ZWdpc3RlcnMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KICAgICAKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtOTQsMTAgKzEwMCwxNiBAQCB2b2lkIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKEpTVmFsdWUgdmFsdWUpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYXNlIEFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0g
ICAgICAgIHUuYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICBjYXNlIFVu
YXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+b2Jz
ZXJ2ZVJlc3VsdCh2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAg
ICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQ
cm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmgKaW5kZXggYjVlODRiMTMzN2UuLjA0NDE1MDEzOTExIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLmgKQEAgLTM1LDEwICszNSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Y2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFz
cyBDQ2FsbEhlbHBlcnM7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZUtleTsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwog
CiBjbGFzcyBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHsKQEAgLTU2LDEyICs1NywyMSBA
QCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAg
ICB9Ci0gICAgCi0gICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShBcml0aFByb2ZpbGUq
IHByb2ZpbGUpCisKKyAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKFVuYXJ5QXJpdGhQ
cm9maWxlKiBwcm9maWxlKQorICAgIHsKKyAgICAgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAgICAg
ICAgIG1fa2luZCA9IFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk7CisgICAgICAgICAgICB1LnVuYXJ5
QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2tp
bmQgPSBOb25lOworICAgIH0KKworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoQmlu
YXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKQogICAgIHsKICAgICAgICAgaWYgKHByb2ZpbGUpIHsK
LSAgICAgICAgICAgIG1fa2luZCA9IEFyaXRoUHJvZmlsZVJlYWR5OwotICAgICAgICAgICAgdS5h
cml0aFByb2ZpbGUgPSBwcm9maWxlOworICAgICAgICAgICAgbV9raW5kID0gQmluYXJ5QXJpdGhQ
cm9maWxlUmVhZHk7CisgICAgICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZSA9IHByb2ZpbGU7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9CkBAIC03
OCwxNCArODgsMTYgQEAgcHJpdmF0ZToKICAgICBlbnVtIEtpbmQgewogICAgICAgICBOb25lLAog
ICAgICAgICBSZWFkeSwKLSAgICAgICAgQXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIFVuYXJ5
QXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAogICAg
ICAgICBMYXp5T3BlcmFuZAogICAgIH07CiAgICAgCiAgICAgS2luZCBtX2tpbmQ7CiAgICAgdW5p
b24gewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7Ci0gICAgICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFBy
b2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlOwog
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZTc5
MTRhYTQ3YzUuLmI3YTRhYTNkMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTY2NSwxNCArMTY2
NSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgT3BlcmFuZFR5cGVzIHR5cGVzKQorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSB0eXBlKQogewogICAg
IHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX25vdDoKICAgICAgICAgZW1pdFVuYXJ5
T3A8T3BOb3Q+KGRzdCwgc3JjKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9uZWdhdGU6
Ci0gICAgICAgIE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlcyk7CisgICAgICAg
IE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBvcF9iaXRub3Q6CiAgICAgICAgIGVtaXRVbmFyeU9wPE9wQml0bm90Pihkc3QsIHNy
Yyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggNDE5N2FiYzEyZTUuLjM4ZTc3Y2RiMTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC02ODIsNyArNjgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gZHN0OwogICAgICAgICB9CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFVuYXJ5T3AoT3Bj
b2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5hcnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMsIFJlc3VsdFR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEJpbmFyeU9wPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDY1OTM3
ZjMxOWJlLi5lNDgxYTRmMWUxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjEzNiw3ICsyMTM2LDcgQEAgUmVnaXN0
ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKgogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBv
c2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
c3JjLmdldCgpLCBPcGVyYW5kVHlwZXMobV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbmFyeU9wKG9wY29kZUlEKCksIGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQoKSwgbV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVW5hcnlQbHVzTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAyMzMzYzI4NGM4OS4uZWViNjkw
YWJlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC05NDEsNTYgKzk0MSw2MCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWlzWDg2
KCkgJiYgKG5vZGUtPm9wKCkgPT0gQXJpdGhNb2QgfHwgbm9kZS0+b3AoKSA9PSBWYWx1ZU1vZCkp
CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKIAotICAgICAgICB7Ci0gICAgICAgICAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpOwotICAgICAg
ICAgICAgaWYgKGFyaXRoUHJvZmlsZSkgewotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+
b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhBZGQ6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBBcml0aFN1YjoKLSAgICAgICAgICAgICAgICBjYXNlIFZhbHVlQWRkOgotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51
bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVNdWw6
Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aE11bDogewotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VG
bGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0
aXZlWmVybykpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVN
YXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2Zp
bGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1l
cmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmln
SW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBBcml0aE5lZ2F0ZTogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5s
aHNPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVE
b3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxl
LT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGlu
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQz
Mk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVy
aWNSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5v
ZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KKyAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2UgQXJpdGhB
ZGQ6CisgICAgICAgIGNhc2UgQXJpdGhTdWI6CisgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKKyAg
ICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAgICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
RG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVO
b25OdW1lcmljKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2
ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2Jz
ZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhh
dmVCaWdJbnRSZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBWYWx1ZU11bDoKKyAgICAgICAgY2FzZSBBcml0aE11bDogeworICAgICAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudElu
ZGV4KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZs
b3coKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0lu
dDUyKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJm
bG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
Tm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAg
ICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7
CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7Cisg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0
KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAg
ICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6
CisgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKKyAgICAgICAgICAgIFVuYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVu
YXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpOworICAgICAg
ICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBh
cml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5t
ZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0
aFByb2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkK
KyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGlu
ZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxv
dygpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIE92ZXJmbG93KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5v
ZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0
aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJn
ZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkpIHsKQEAgLTEwMzMsNyArMTAz
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEZJWE1FOiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0
byBtYWtlIHRoaXMgbW9yZSBncmFudWxhci4KICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2Rl
TWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUgfCBOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwog
ICAgICAgICAKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1f
Y3VycmVudEluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmls
ZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQogICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2Rl
TWF5SGF2ZUJpZ0ludFJlc3VsdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKaW5kZXggOWQ1YjdkOTMzN2MuLjRjNmQxMDk5YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcApAQCAtMTY1Miw3ICsxNjUyLDkgQEAgTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZSBHcmFwaDo6bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihOb2RlKiBj
dXJyZW4KICAgICAgICAgICAgICAgICByZXR1cm4gJnByb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkp
OwogCiAgICAgICAgICAgICBpZiAocHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxp
bmcoKSkgewotICAgICAgICAgICAgICAgIGlmIChBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2Zp
bGVkQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAgICAgICAgICAgIGlmIChCaW5hcnlBcml0aFBy
b2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIGlmIChVbmFyeUFy
aXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmlsZWRCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCA5ZDAzOGI1ZjMyYy4uZjYzMmQxMTY0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC00MDAwLDcgKzQwMDAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJs
b2NrKCktPmFkZEpJVEFkZElDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGlu
Z0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7CkBAIC00MDI0LDcgKzQwMjQsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKIAogICAgICAgICBD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVC
bG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBKSVRTdWJJQyog
c3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAg
ICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXpl
OwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3Vi
OwpAQCAtNDYxOCw3ICs0NjE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
TmVnYXRlKE5vZGUqIG5vZGUpCiB7CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9
IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5
dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5l
Q29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2st
PnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAg
SklUTmVnSUMqIG5lZ0lDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJv
ZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0
ZU9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJp
dGhOZWdhdGU7CkBAIC00ODQxLDcgKzQ4NDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVNdWwoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5ieXRlY29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNl
bGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRl
eCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVC
bG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7
CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFy
aXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZU11bE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVNdWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggZDBjMTllYmY2YTMuLjk4MzJkNTU4NDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0yMTA2LDcgKzIxMDYsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRl
LmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5
dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNl
bGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRl
eCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVD
b2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5k
ZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRk
T3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVBZGQ7CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPihh
cml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsK
QEAgLTIxMjUsNyArMjEyNSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNl
bGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0g
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1
bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgY29tcGlsZUJpbmFy
eU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9u
LCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE0NCw3ICsyMTQ0LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFw
aC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29k
ZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVD
b2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwor
ICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsK
ICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGlt
aXplOwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVl
TXVsOwogICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQ
cm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0y
MTUyLDcgKzIxNTIsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVy
YXRvciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVuYW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9w
b2ludGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUg
c3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21w
aWxlVW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hp
bmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGls
ZVVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0
Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAg
ICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKIApAQCAtMjIzOCw3ICsyMjM4LDcgQEAgcHJpdmF0ZToK
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBl
bmFtZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
ZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1
ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+
Ojp0eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBh
dGNoaW5nRnVuY3Rpb24pCisgICAgdm9pZCBjb21waWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7
CiAgICAgICAgIApAQCAtMjQwNSw3ICsyNDA1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVD
b2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgo
KTsKLSAgICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVC
bG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3Vi
T3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlU3ViOwogICAgICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5l
cmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVu
Y3Rpb24pOwpAQCAtMzA3MSw3ICszMDcxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxp
bmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgp
OworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVP
cHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25B
cml0aE5lZ2F0ZTsKICAgICAgICAgY29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRvcj4o
YXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3Mzc5N2Q3OWZkZi4uNDQxZGUxNGM5NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtOTE5LDcgKzkxOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAvLyBJdCB3aWxsIGdpdmUgdGhlIHNsb3cgcGF0aCB0aGUgc2FtZSB2YWx1ZSBy
ZWFkIGJ5IHRoZSBmYXN0IHBhdGguCiAgICAgICAgIEdldFB1dEluZm8gY29waWVkR2V0UHV0SW5m
byhPcFB1dFRvU2NvcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLSAg
ICAgICAgQXJpdGhQcm9maWxlIGNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCk7CisgICAgICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOwogCiAgICAg
ICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwogCkBAIC05MzksNyArOTM5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7CiAK
ICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgdW5zaWduZWQ+IG1fY29waWVkR2V0UHV0SW5mb3M7
Ci0gICAgICAgIEhhc2hNYXA8dWludDY0X3QsIEFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0aFBy
b2ZpbGVzOworICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBCaW5hcnlBcml0aFByb2ZpbGU+IG1f
Y29waWVkQXJpdGhQcm9maWxlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNoZWNr
czsKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJh
Y2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKaW5k
ZXggNjI3YWYyNzg3ZTAuLjc0MGIyZWQ4YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlu
bGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
c3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklU
QWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNl
cnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03Myw3ICs3Myw3
IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJl
c3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBj
b25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5n
KQorYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0
Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xl
ZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQWRkR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVy
YXRvci5oCmluZGV4IDRkYzM0YTJmNWI2Li42NzVjZjkzYzkwNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3JpZ2h0
T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVz
dWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYs
IGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhl
bHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBz
aG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJ
bmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5
QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNo
b3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlk
Q29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVyYW5k
LmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3BlcmFu
ZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiByaWdo
dE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggZjQyMGFlOTlkMGUuLjY3Zjk5ODZhNjM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1Miw3
ICs0NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29wX25l
Z2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIFVuYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0ZT4o
KS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMqIG5l
Z2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9p
bnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsKICAg
ICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
b3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwpAQCAt
NjMzLDE0ICs2MzMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBP
cGVyYW5kVHlwZXMgZ2V0T3BlcmFuZFR5cGVzKGNvbnN0IEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9m
aWxlKQotewotICAgIHJldHVybiBPcGVyYW5kVHlwZXMoYXJpdGhQcm9maWxlLmxoc1Jlc3VsdFR5
cGUoKSwgYXJpdGhQcm9maWxlLnJoc1Jlc3VsdFR5cGUoKSk7Ci19Ci0KIHZvaWQgSklUOjplbWl0
X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+KCku
bWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVEFkZElDKiBhZGRJ
QyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1
Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBhZGRJQyk7CiAgICAgZW1pdE1h
dGhJQ0Zhc3Q8T3BBZGQ+KGFkZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVl
QWRkUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlQWRkKTsKQEAgLTY4NSw3ICs2ODAsNyBAQCB2b2lk
IEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBj
b25zdCBJbnN0cnVjdGlvbiogYwogCiAgICAgYm9vbCBnZW5lcmF0ZWRJbmxpbmVDb2RlID0gbWF0
aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywgbWF0aElDR2VuZXJhdGlvblN0YXRlKTsKICAgICBp
ZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgICAgICBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFy
aXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBzcmNSZWdzLCBh
cml0aFByb2ZpbGUpOwogICAgICAgICBlbHNlCkBAIC03MDgsNyArNzAzLDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rp
b24sIHR5cGVuYW1lIE4KIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24g
bm9uUHJvZmlsZWRGdW5jdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcD4oKTsKLSAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlw
ZXMoY29waWVkQXJpdGhQcm9maWxlKGJ5dGVjb2RlKSk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxl
IGFyaXRoUHJvZmlsZSA9IGNvcGllZEFyaXRoUHJvZmlsZShieXRlY29kZSk7CiAgICAgaW50IHJl
c3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5t
X2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CkBA
IC03MjcsOCArNzIyLDggQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJ
QzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIEZQUlJlZyBzY3Jh
dGNoRlBSID0gZnBSZWdUMjsKICNlbmRpZgogCi0gICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJh
bmQodHlwZXMuZmlyc3QoKSk7Ci0gICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVz
LnNlY29uZCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChhcml0aFByb2ZpbGUu
bGhzUmVzdWx0VHlwZSgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYXJpdGhQ
cm9maWxlLnJoc1Jlc3VsdFR5cGUoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQo
b3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3Rh
bnRJbnQob3AxKSk7CkBAIC03NTgsNyArNzUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0
KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgog
ICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIGxlZnRSZWdzKTsKICAgICAg
ICAgZWxzZSBpZiAocmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkKICAgICAgICAgICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIob3AyLCByaWdodFJlZ3MpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAg
aWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBsZWZ0
UmVncywgcmlnaHRSZWdzLCBhcml0aFByb2ZpbGUpOwogICAgICAgICBlbHNlCkBAIC03OTgsNyAr
NzkzLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRv
cj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGMKICAgICBhdXRvIHNsb3dQYXRoU3RhcnQg
PSBsYWJlbCgpOwogI2VuZGlmCiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1h
dGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91
bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5z
aG91bGRTbG93UGF0aFJlcGF0Y2gpCiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUu
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQocmVpbnRlcnByZXRfY2FzdDxK
X0pJVE9wZXJhdGlvbl9FSk1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdz
LCBzcmNSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwpAQCAtODMwLDcgKzgyNSw3IEBAIHZv
aWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElD
LCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhT
dGFydCA9IGxhYmVsKCk7CiAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcD4oKTsKLSAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY29w
aWVkQXJpdGhQcm9maWxlKGJ5dGVjb2RlKSk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlIGNvbnNp
c3RlbnRBcml0aFByb2ZpbGUgPSBjb3BpZWRBcml0aFByb2ZpbGUoYnl0ZWNvZGUpOwogICAgIGlu
dCByZXN1bHQgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0ZWNv
ZGUubV9saHMub2Zmc2V0KCk7CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgp
OwpAQCAtODQ1LDggKzg0MCw4IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlN
YXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gbGVmdFJlZ3M7CiAjZW5kaWYKICAgICAKLSAgICBTbmlwcGV0T3Bl
cmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdo
dE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
KGNvbnNpc3RlbnRBcml0aFByb2ZpbGUubGhzUmVzdWx0VHlwZSgpKTsKKyAgICBTbmlwcGV0T3Bl
cmFuZCByaWdodE9wZXJhbmQoY29uc2lzdGVudEFyaXRoUHJvZmlsZS5yaHNSZXN1bHRUeXBlKCkp
OwogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkpCiAgICAgICAgIGxlZnRPcGVy
YW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSkpOwpAQCAtODY0LDcg
Kzg1OSw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJh
dG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBhdXRvIHNsb3dQYXRoU3RhcnQg
PSBsYWJlbCgpOwogI2VuZGlmCiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1h
dGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hv
dWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGlmIChtYXRoSUNHZW5lcmF0aW9uU3RhdGUu
c2hvdWxkU2xvd1BhdGhSZXBhdGNoKQogICAgICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRl
LnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KGJpdHdpc2VfY2FzdDxKX0pJ
VE9wZXJhdGlvbl9FSkpNaWM+KHByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uKSwgcmVzdWx0UmVncywg
bGVmdFJlZ3MsIHJpZ2h0UmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKQEAgLTg5MiwxOSAr
ODg3LDE3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJh
dG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKIHZvaWQgSklUOjplbWl0X29wX2Rpdihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGl2PigpOwotICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOworICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSBjb25zaXN0ZW50QXJpdGhQcm9maWxlID0gY29waWVkQXJpdGhQcm9maWxlKGJ5dGVjb2RlKTsK
ICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9
IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5v
ZmZzZXQoKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0g
Z2V0T3BlcmFuZFR5cGVzKG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlKTsKICAgICBKU1ZhbHVlUmVn
cyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyByaWdodFJl
Z3MgPSBKU1ZhbHVlUmVncyhyZWdUMSk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxl
ZnRSZWdzOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDI7CiAjZWxzZQotICAgIE9wZXJh
bmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZSk7
CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwog
ICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7CiAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxlZnRSZWdzOwpAQCAtOTEyLDEyICs5MDUsMTIg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAjZW5kaWYKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IGZwUmVnVDI7CiAKLSAgICBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHI7CisgICAgQmluYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyOwogICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5n
KCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGl2
PigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKIAotICAgIFNuaXBwZXRP
cGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVzLmZpcnN0KCkpOwotICAgIFNuaXBwZXRPcGVyYW5kIHJp
Z2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQoKSk7CisgICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJh
bmQoY29uc2lzdGVudEFyaXRoUHJvZmlsZS5saHNSZXN1bHRUeXBlKCkpOworICAgIFNuaXBwZXRP
cGVyYW5kIHJpZ2h0T3BlcmFuZChjb25zaXN0ZW50QXJpdGhQcm9maWxlLnJoc1Jlc3VsdFR5cGUo
KSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9w
ZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC05NTks
NyArOTUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0X29wX211bChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2sp
Lm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
JmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1f
YXJpdGhQcm9maWxlOwogICAgIEpJVE11bElDKiBtdWxJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRN
dWxJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVu
dEluc3RydWN0aW9uLCBtdWxJQyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BNdWw+KG11bElDLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlvblZh
bHVlTXVsKTsKQEAgLTk3NSw3ICs5NjgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wU3ViPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wU3ViPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBK
SVRTdWJJQyogc3ViSUMgPSBtX2NvZGVCbG9jay0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsK
ICAgICBtX2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgc3ViSUMp
OwogICAgIGVtaXRNYXRoSUNGYXN0PE9wU3ViPihzdWJJQywgY3VycmVudEluc3RydWN0aW9uLCBv
cGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1Yik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKaW5kZXggNjZlMWJlMTRhOGQu
LmI4YzQ3OTg2ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERp
dkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5l
cmF0b3IuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBKSVREaXZHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgbm90RG91YmxlWmVyby5saW5rKCZq
aXQpOwogI2VuZGlmCiAgICAgaWYgKG1fYXJpdGhQcm9maWxlKQotICAgICAgICBqaXQub3IzMihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJp
dCksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmluYXJ5QXJpdGhQcm9maWxlOjpzcGVjaWFsRmFzdFBhdGhCaXQpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhtX2FyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAgICAgaml0
LmJveERvdWJsZShtX2xlZnRGUFIsIG1fcmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKaW5kZXggODM5NjY3Nzk0M2YuLjcwOGRiMTBkNmNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKQEAgLTM3
LDcgKzM3LDcgQEAgcHVibGljOgogICAgIEpJVERpdkdlbmVyYXRvcihTbmlwcGV0T3BlcmFuZCBs
ZWZ0T3BlcmFuZCwgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kLAogICAgICAgICBKU1ZhbHVl
UmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIGxlZnQsIEpTVmFsdWVSZWdzIHJpZ2h0LAogICAgICAg
ICBGUFJSZWcgbGVmdEZQUiwgRlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2NyYXRjaEdQUiwgRlBS
UmVnIHNjcmF0Y2hGUFIsCi0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbnVs
bHB0cikKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRy
KQogICAgICAgICA6IG1fbGVmdE9wZXJhbmQobGVmdE9wZXJhbmQpCiAgICAgICAgICwgbV9yaWdo
dE9wZXJhbmQocmlnaHRPcGVyYW5kKQogICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKQEAgLTcx
LDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9zY3JhdGNoR1BSOwogICAgIEZQUlJl
ZyBtX3NjcmF0Y2hGUFI7CiAgICAgYm9vbCBtX2RpZEVtaXRGYXN0UGF0aCB7IGZhbHNlIH07Ci0g
ICAgQXJpdGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUq
IG1fYXJpdGhQcm9maWxlOwogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX2VuZEp1bXBM
aXN0OwogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbV9zbG93UGF0aEp1bXBMaXN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAzOTU5YjhkNTA4OC4uNTdhODFl
Yzc5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC03MTcsMTMg
KzcxNywxMyBAQCBBTFdBWVNfSU5MSU5FIEdldFB1dEluZm8gSklUOjpjb3BpZWRHZXRQdXRJbmZv
KE9wUHV0VG9TY29wZSBieXRlY29kZSkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+
Ci1BTFdBWVNfSU5MSU5FIEFyaXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZShCaW5h
cnlPcCBieXRlY29kZSkKK0FMV0FZU19JTkxJTkUgQmluYXJ5QXJpdGhQcm9maWxlIEpJVDo6Y29w
aWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVjb2RlKQogewogICAgIHVpbnQ2NF90IGtleSA9
IChzdGF0aWNfY2FzdDx1aW50NjRfdD4oQmluYXJ5T3A6Om9wY29kZUlEKSArIDEpIDw8IDMyIHwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ5dGVjb2RlLm1fbWV0YWRhdGFJRCk7CiAgICAgYXV0byBp
dGVyYXRvciA9IG1fY29waWVkQXJpdGhQcm9maWxlcy5maW5kKGtleSk7CiAgICAgaWYgKGl0ZXJh
dG9yICE9IG1fY29waWVkQXJpdGhQcm9maWxlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXJh
dG9yLT52YWx1ZTsKLSAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlID0gYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFBy
b2ZpbGU7CiAgICAgbV9jb3BpZWRBcml0aFByb2ZpbGVzLmFkZChrZXksIGFyaXRoUHJvZmlsZSk7
CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUTWF0aElDLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1h
dGhJQy5oCmluZGV4IDU2NDVlNDJkZWZmLi44NDY0NjIyYTZkOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE1hdGhJQy5oCkBAIC01MiwxMSArNTIsMTEgQEAgc3RydWN0IE1hdGhJQ0dlbmVy
YXRpb25TdGF0ZSB7CiAKICNkZWZpbmUgRU5BQkxFX01BVEhfSUNfU1RBVFMgMAogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1wdHkpKEFyaXRoUHJv
ZmlsZSYpPgordGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGUsIHR5cGVuYW1lIEFyaXRo
UHJvZmlsZVR5cGU+CiBjbGFzcyBKSVRNYXRoSUMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIEpJVE1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
KyAgICBKSVRNYXRoSUMoQXJpdGhQcm9maWxlVHlwZSogYXJpdGhQcm9maWxlKQogICAgICAgICA6
IG1fYXJpdGhQcm9maWxlKGFyaXRoUHJvZmlsZSkKICAgICB7CiAgICAgfQpAQCAtNzEsNyArNzEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIu
YnVmZmVyKCkuY29kZVNpemUoKTsKIAogICAgICAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKLSAg
ICAgICAgICAgIGlmIChpc1Byb2ZpbGVFbXB0eSgqbV9hcml0aFByb2ZpbGUpKSB7CisgICAgICAg
ICAgICBpZiAobV9hcml0aFByb2ZpbGUtPmlzT2JzZXJ2ZWRUeXBlRW1wdHkoKSkgewogICAgICAg
ICAgICAgICAgIC8vIEl0IGxvb2tzIGxpa2UgdGhlIE1hdGhJQyBoYXMgeWV0IHRvIGV4ZWN1dGUu
IFdlIGRvbid0IHdhbnQgdG8gZW1pdCBjb2RlIGluIHRoaXMKICAgICAgICAgICAgICAgICAvLyBj
YXNlIGZvciBhIGNvdXBsZSByZWFzb25zLiBGaXJzdCwgdGhlIG9wZXJhdGlvbiBtYXkgbmV2ZXIg
ZXhlY3V0ZSwgc28gaWYgd2UgZG9uJ3QgZW1pdAogICAgICAgICAgICAgICAgIC8vIGNvZGUsIGl0
J3MgYSB3aW4uIFNlY29uZCwgaWYgdGhlIG9wZXJhdGlvbiBkb2VzIGV4ZWN1dGUsIHdlIGNhbiBl
bWl0IGJldHRlciBjb2RlCkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgICAgICBtX3Ns
b3dQYXRoU3RhcnRMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRy
VGFnPihzdGF0ZS5zbG93UGF0aFN0YXJ0KTsKICAgICB9CiAKLSAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJpdGhQcm9maWxlOyB9CisgICAgQXJpdGhQ
cm9maWxlVHlwZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7
IH0KIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgIHNpemVfdCBtX2dlbmVyYXRlZENv
ZGVTaXplIHsgMCB9OwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYK
IAotICAgIEFyaXRoUHJvZmlsZSogbV9hcml0aFByb2ZpbGU7CisgICAgQXJpdGhQcm9maWxlVHlw
ZSogbV9hcml0aFByb2ZpbGU7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiBtX2NvZGU7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRh
Zz4gbV9pbmxpbmVTdGFydDsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PiBtX2lubGluZUVuZDsKQEAgLTI0NiwxNSArMjQ2LDE1IEBAIHB1YmxpYzoKICAgICBHZW5lcmF0
b3JUeXBlIG1fZ2VuZXJhdG9yOwogfTsKIAotaW5saW5lIGJvb2wgaXNCaW5hcnlQcm9maWxlRW1w
dHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCitpbmxpbmUgYm9vbCBpc0JpbmFyeVByb2Zp
bGVFbXB0eShCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKIHsKICAgICByZXR1cm4g
YXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSB8fCBhcml0aFByb2ZpbGUu
cmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOwogfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVy
YXRvclR5cGU+Ci1jbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVy
YXRvclR5cGUsIGlzQmluYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRCaW5hcnlNYXRoSUMg
OiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4gewog
cHVibGljOgotICAgIEpJVEJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
LSAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQcm9maWxlRW1wdHk+
KGFyaXRoUHJvZmlsZSkKKyAgICBKSVRCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFy
aXRoUHJvZmlsZT4oYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CiB9OwpAQCAtMjY0LDE1ICsy
NjQsMTUgQEAgdHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUTXVsR2VuZXJhdG9yPiBKSVRNdWxJ
QzsKIHR5cGVkZWYgSklUQmluYXJ5TWF0aElDPEpJVFN1YkdlbmVyYXRvcj4gSklUU3ViSUM7CiAK
IAotaW5saW5lIGJvb2wgaXNVbmFyeVByb2ZpbGVFbXB0eShBcml0aFByb2ZpbGUmIGFyaXRoUHJv
ZmlsZSkKK2lubGluZSBib29sIGlzVW5hcnlQcm9maWxlRW1wdHkoQmluYXJ5QXJpdGhQcm9maWxl
JiBhcml0aFByb2ZpbGUpCiB7CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5
cGUoKS5pc0VtcHR5KCk7CiB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZT4KLWNs
YXNzIEpJVFVuYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc1Vu
YXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRVbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRo
SUM8R2VuZXJhdG9yVHlwZSwgVW5hcnlBcml0aFByb2ZpbGU+IHsKIHB1YmxpYzoKLSAgICBKSVRV
bmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRNYXRo
SUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0eT4oYXJpdGhQcm9maWxlKQorICAg
IEpJVFVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAgICAg
IDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVuYXJ5QXJpdGhQcm9maWxlPihhcml0aFByb2Zp
bGUpCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE11bEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11
bEdlbmVyYXRvci5jcHAKaW5kZXggODNkMjkzYjYyNTIuLmNmNmJhYTUyZjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCkBAIC0zMyw3ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRo
SUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBl
cnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGlu
ZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMy
KCk7CkBAIC04OSw3ICs4OSw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRNdWxHZW5lcmF0
b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJu
IEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBK
SVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxs
SGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBz
bG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBz
aG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0
LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1f
c2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsKQEAgLTIwNSwxOCArMjA1LDE4IEBA
IGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0
LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5v
dE5lZ2F0aXZlWmVybyA9IGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jl
c3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KG5lZ2F0aXZlWmVy
b0JpdHMpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihB
cml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVz
cyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUp
LCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJp
dHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAK
ICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5vcjMyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSks
IENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0
cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJpbmFy
eUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAgICAgICAgaml0Lm1v
dmUobV9yZXN1bHQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQudXJz
aGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUyKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAg
aml0LmFuZDMyKENDYWxsSGVscGVyczo6SW1tMzIoMHg3ZmYpLCBtX3NjcmF0Y2hHUFIpOwogICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9JbnQ1Mk92ZXJmbG93ID0gaml0LmJyYW5jaDMyKEND
YWxsSGVscGVyczo6TGVzc1RoYW5PckVxdWFsLCBtX3NjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDB4NDMxKSk7CiAKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpB
YnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAg
aml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpJ
bnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxl
LT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgbm9JbnQ1Mk92ZXJmbG93LmxpbmsoJmppdCk7
CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwpAQCAtMjI3LDE4ICsyMjcsMTggQEAgYm9vbCBK
SVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxs
SGVscGVyczo6SnVtcExpc3QKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmFwcGVuZChqaXQuYnJh
bmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1bHQucGF5bG9hZEdQUigpLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOwogICAgICAgICBub3ROZWdhdGl2ZVplcm8uYXBw
ZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC50YWdHUFIo
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobmVnYXRpdmVaZXJvQml0cyA+PiAzMikpKTsK
IAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2Zp
bGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFBy
b2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhl
bHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwog
ICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAg
bm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVs
cGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7Cisg
ICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJv
ZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFy
aXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1
bHQudGFnR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC51cnNoaWZ0UHRyKENDYWxs
SGVscGVyczo6SW1tMzIoNTIgLSAzMiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC5hbmQz
MihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBl
cnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMigweDQzMSkpOwogICAgICAgICAKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpB
YnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAg
aml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpJ
bnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxl
LT5hZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAgICBlbmRKdW1wTGlzdC5hcHBlbmQobm9JbnQ1
Mk92ZXJmbG93KTsKICAgICAgICAgaWYgKG1fc2NyYXRjaEdQUiA9PSBtX3Jlc3VsdC50YWdHUFIo
KSB8fCBtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKaW5kZXggMzZkMjZlYTEyNGUuLjYwODc3
OTY2ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgK
QEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIW1fbGVmdE9wZXJhbmQu
aXNQb3NpdGl2ZUNvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0
SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJv
ZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xv
d0p1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcp
OworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMm
LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqKTsKKyAg
ICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dKdW1wTGlzdCwg
Y29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAog
ICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5k
IGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigp
OyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRP
cGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25z
dEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVn
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9y
LmNwcAppbmRleCA5MmMyOWRkNjMwYS4uY2VlYmUzOTA5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6Omdl
bmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE1hdGhJQ0lubGluZVJl
c3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBN
YXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7
CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwpAQCAtNDUs
NyArNDUsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIC8vIFdlIGRlZmF1bHQgdG8g
c3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkVHlwZXMgPSBPYnNl
cnZlZFR5cGUoKS53aXRoSW50MzIoKTsKICAgICBpZiAoYXJpdGhQcm9maWxlKQotICAgICAgICBv
YnNlcnZlZFR5cGVzID0gYXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKTsKKyAgICAgICAg
b2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+YXJnT2JzZXJ2ZWRUeXBlKCk7CiAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghb2JzZXJ2ZWRUeXBlcy5pc0VtcHR5KCksICJXZSBzaG91bGQgbm90
IGF0dGVtcHQgdG8gZ2VuZXJhdGUgYW55dGhpbmcgaWYgd2UgZG8gbm90IGhhdmUgYSBwcm9maWxl
LiIpOwogCiAgICAgaWYgKG9ic2VydmVkVHlwZXMuaXNPbmx5Tm9uTnVtYmVyKCkpCkBAIC04Miw3
ICs4Miw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lu
bGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVROZWdHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBM
aXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKQorYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxw
ZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAgICAgQVNTRVJUKG1f
c2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hH
UFIgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEpJ
VE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdAogI2VuZGlmCiAgICAgLy8gVGhlIGZsYWdzIG9mIEFyaXRoTmVnYXRl
IGFyZSBiYXNpYyBpbiBERkcuCiAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGtub3cgaWYgd2UgZXZl
ciBwcm9kdWNlZCBhIG51bWJlci4KLSAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZyAmJiBhcml0
aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCkuc2F3TnVtYmVyKCkg
JiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgIGlmIChzaG91bGRFbWl0
UHJvZmlsaW5nICYmIGFyaXRoUHJvZmlsZSAmJiAhYXJpdGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5
cGUoKS5zYXdOdW1iZXIoKSAmJiAhYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCiAg
ICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFNldERvdWJsZShqaXQpOwogICAgIHJldHVybiB0cnVl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKaW5kZXgg
OGEwYzJkNTE3ZDYuLjc4N2I3MDc2ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTmVnR2VuZXJhdG9yLmgKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogICAgICAgICAsIG1f
c2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgIHsgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVz
dWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYs
IGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhl
bHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBz
aG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJ
bmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgVW5hcnlB
cml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKTsKIAogcHJpdmF0ZToKICAgICBKU1ZhbHVlUmVncyBtX3Jlc3VsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDYzOTQ2
M2M5OWU5Li4xODc5NDU5ZGIzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC0yNTU0LDcgKzI1NTQsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkQWRkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGQoZXhlYywgb3AxLCBvcDIpKTsKIH0K
IAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRBZGQoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKK0FMV0FZU19JTkxJTkUgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkQWRkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9m
aWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTI1NzQsNyArMjU3NCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGQoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlCiAgICAgcmV0dXJuIHVucHJvZmlsZWRBZGQoZXhlYywg
ZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZUFkZFByb2ZpbGVkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVkQWRk
KGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwpAQCAtMjU4OCw3
ICsyNTg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFk
ZFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLAogICAgIEpTVmFsdWUgb3AxID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDIpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJ
Qy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBhZGRJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAg
YXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKICAgICBhdXRvIG5vbk9w
dGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplOwpAQCAt
MjYwOSw3ICsyNjA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZUFkZFByb2ZpbGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCk7
CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9m
aWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVkQWRk
KGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQpAQCAtMjYy
Myw3ICsyNjIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZUFkZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEoKICAgICBKU1ZhbHVlIG9wMiA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJp
YW50ID0gb3BlcmF0aW9uVmFsdWVBZGROb09wdGltaXplOwotICAgIGlmIChBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQmluYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCkpCiAgICAgICAg
IGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAgICAgYWRkSUMtPmdl
bmVyYXRlT3V0T2ZMaW5lKGV4ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwog
CkBAIC0yNjU1LDcgKzI2NTUsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSB1bnByb2ZpbGVkTXVsKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNNdWwoZXhlYywgb3AxLCBvcDIpKTsKIH0KIAotQUxXQVlTX0lO
TElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRNdWwoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0
aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMg
PSB0cnVlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRNdWwo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91
bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjY5Myw3
ICsyNjkzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11
bE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEoKICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0g
b3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplOwotICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQmluYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCkpCiAgICAgICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgbXVsSUMtPmdlbmVyYXRlT3V0T2ZMaW5l
KGV4ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0yNzA0LDcgKzI3
MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0
aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSgogICAgIHJldHVybiB1bnByb2ZpbGVkTXVs
KGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVNdWxQcm9maWxlZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yNzE4LDcgKzI3MTgsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShF
eGVjU3RhdGUqIGV4ZWMsCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgYXV0byBu
b25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRpbWl6ZTsK
QEAgLTI3MzYsNyArMjczNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjCiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRo
UHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBwcm9maWxl
ZE11bChleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KQEAg
LTI3NjAsMTQgKzI3NjAsMTQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
dW5wcm9maWxlZE5lZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1YKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC1udW1iZXIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWROZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCitB
TFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZE5lZ2F0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFyeUFyaXRoUHJvZmls
ZSYgYXJpdGhQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcGVyYW5kKTsKLSAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZUxIUyhvcGVyYW5k
KTsKKyAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICAKICAgICBKU1Zh
bHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZXhlYyk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yNzkxLDcgKzI3OTEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogICAgIHJldHVybiB1bnByb2ZpbGVkTmVnYXRlKGV4
ZWMsIG9wZXJhbmQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBvcGVy
YW5kLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIG9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAg
ICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVkTmVnYXRlKGV4ZWMs
IG9wZXJhbmQsICphcml0aFByb2ZpbGUpOwpAQCAtMjgwNSw5ICsyODA1LDkgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUo
RXhlY1N0YXRlKiBleGUKICAgICAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBu
ZWdJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKLSAg
ICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgYXJpdGhQcm9maWxlLT5v
YnNlcnZlQXJnKG9wZXJhbmQpOwogICAgIG5lZ0lDLT5nZW5lcmF0ZU91dE9mTGluZShleGVjLT5j
b2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCk7CiAKICNpZiBFTkFCTEUo
TUFUSF9JQ19TVEFUUykKQEAgLTI4MzgsOCArMjgzOCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kCiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJh
bmQpOwogCi0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRo
UHJvZmlsZSgpKQotICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7Cisg
ICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9m
aWxlKCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBu
ZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoZXhlYy0+Y29kZUJsb2NrKCksIG9wZXJhdGlvbkFyaXRo
TmVnYXRlKTsKIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpAQCAtMjg2NSw3ICsyODY1LDcg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9maWxlZFN1YihFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3ViKGV4ZWMsIG9wMSwgb3AyKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUmIGFy
aXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQorQUxX
QVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRTdWIoVk0mIHZtLCBFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9i
c2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCkBAIC0yODg4LDcgKzI4ODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZQogICAgIHJldHVybiB1bnByb2ZpbGVkU3ViKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29k
ZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
U3ViUHJvZmlsZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VS
VChhcml0aFByb2ZpbGUpOwogCkBAIC0yOTA0LDcgKzI5MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSgogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAg
ICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZVN1Yk5vT3B0aW1pemU7
Ci0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmls
ZSgpKQorICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5h
cml0aFByb2ZpbGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsK
ICAgICBzdWJJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoZXhlYy0+Y29kZUJsb2NrKCksIG5vbk9wdGlt
aXplVmFyaWFudCk7CiAKQEAgLTI5MjgsNyArMjkyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhl
YywKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJ
Qy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAg
YXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ax
KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBhdXRvIG5vbk9wdGltaXplVmFy
aWFudCA9IG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGltaXplOwpAQCAtMjk0Niw3ICsy
OTQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlBy
b2ZpbGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7CiAg
ICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVkU3ViKHZtLCBleGVj
LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOWRiNjczNDE5MjMuLjNiNmFhZjA0
ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzgs
NiArMzgsOCBAQCB0eXBlZGVmIGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAgICAgCiBjbGFzcyBB
cnJheUFsbG9jYXRpb25Qcm9maWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOworY2xhc3MgVW5hcnlB
cml0aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCdXR0ZXJmbHk7
CiBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDYWxsTGlua0luZm87CkBAIC02NCw3ICs2Niw2IEBA
IGNsYXNzIFdhdGNocG9pbnRTZXQ7CiBzdHJ1Y3QgQnlWYWxJbmZvOwogc3RydWN0IElubGluZUNh
bGxGcmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiAKIHVz
aW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIApAQCAtNzksNyArODAsNyBAQCB0eXBlZGVmIGNo
YXIqIFVudXNlZFB0cjsKICAgICBBOiBKU0FycmF5KgogICAgIEFhcDogQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZSoKICAgICBBcDogQXJyYXlQcm9maWxlKgotICAgIEFycDogQXJpdGhQcm9maWxlKgor
ICAgIEFycDogQmluYXJ5QXJpdGhQcm9maWxlKgogICAgIEI6IEJ1dHRlcmZseSoKICAgICBCeTog
QnlWYWxJbmZvKgogICAgIEM6IEpTQ2VsbCoKQEAgLTE0NSwxMyArMTQ2LDEzIEBAIHR5cGVkZWYg
RW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKWikoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpK
X0pJVE9wZXJhdGlvbl9FSkMpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwqKTsK
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VK
QSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKIHR5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VBUFopKEV4ZWNTdGF0ZSos
IEpTQXJyYXkqLCB2b2lkKiwgaW50MzJfdCk7Ci10eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRf
T1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkFycCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIEFyaXRoUHJvZmlsZSopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElP
TiAqSl9KSVRPcGVyYXRpb25fRUpBcnApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBCaW5h
cnlBcml0aFByb2ZpbGUqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04g
KkpfSklUT3BlcmF0aW9uX0VKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRT
dHJpbmdJbXBsKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJ
VE9wZXJhdGlvbl9FSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlv
bl9FSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklU
T3BlcmF0aW9uX0VKSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkpBcCkoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBBcnJheVByb2ZpbGUqKTsKLXR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkFycCkoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBBcml0aFByb2ZpbGUqKTsKK3R5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkFy
cCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCaW5hcnlBcml0
aFByb2ZpbGUqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklU
T3BlcmF0aW9uX0VKSkJ5KShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEJ5VmFsSW5mbyopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAq
Sl9KSVRPcGVyYXRpb25fRUpKTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIHZvaWQqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04g
KkpfSklUT3BlcmF0aW9uX0VKTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCop
OwpAQCAtNDgyLDcgKzQ4Myw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVj
a0lmRXhjZXB0aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKEV4CiBpbnQzMl90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEhhc0luc3RhbmNlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2Zp
bGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxl
ZE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemUoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklU
QWRkSUMqKSBXVEZfSU5URVJOQUw7CkBAIC00OTIsMTMgKzQ5MywxMyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11
bE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMq
KSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlTXVsUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOworRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgb3BlcmFuZCk7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwgQXJpdGhQ
cm9maWxlKik7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVn
YXRlUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwgVW5hcnlBcml0
aFByb2ZpbGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cGVyYW5kLCBKSVROZWdJQyopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZU9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cGVyYW5kLCBKSVROZWdJQyopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZVN1YihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKikg
V1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZVN1YlByb2ZpbGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1
YlByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAKaW5kZXggNzk1YzI3
NTg0YzAuLjdiMWE4YjgxOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN1YkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dWJHZW5lcmF0b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1K
SVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2Fs
bEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUU3ViR2VuZXJh
dG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAg
ICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUg
bGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03OCw3ICs3OCw3IEBAIEpJVE1h
dGhJQ0lubGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVs
cGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2Vu
ZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBM
aXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBK
SVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxs
SGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBz
bG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwg
Ym9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0g
SW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9h
ZEdQUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5oCmlu
ZGV4IDU2MWY2MzM0YWUzLi4zNDkxYTgzZmVkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN1YkdlbmVyYXRvci5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAg
LCBtX3NjcmF0Y2hGUFIoc2NyYXRjaEZQUikKICAgICB7IH0KIAotICAgIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3Rh
dGUmLCBjb25zdCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVs
cGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJv
b2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVy
YXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEJp
bmFyeUFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBl
cnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRW
YWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRp
YyBib29sIGlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1
cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5k
ZXggYmRhMzA4Yzg0ZDIuLmMwMzQxYzk1NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcApAQCAtMTM1LDM2ICsxMzUsNDkgQEAgdm9pZCBEYXRhOjpwZXJmb3Jt
QXNzZXJ0aW9ucyhWTSYgdm0pCiAjZW5kaWYKIAogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxl
IGFyaXRoUHJvZmlsZTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwor
ICAgICAgICBhcml0aFByb2ZpbGUuYXJnU2F3SW50MzIoKTsKKyAgICAgICAgQVNTRVJUKGFyaXRo
UHJvZmlsZS5iaXRzKCkgPT0gVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cygpKTsK
KyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5hcmdPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQz
MigpKTsKKyAgICB9CisgICAgeworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2Zp
bGU7CisgICAgICAgIGFyaXRoUHJvZmlsZS5hcmdTYXdOdW1iZXIoKTsKKyAgICAgICAgQVNTRVJU
KGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVy
Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5hcmdPYnNlcnZlZFR5cGUoKS5p
c09ubHlOdW1iZXIoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBCaW5hcnlBcml0aFByb2Zp
bGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKICAg
ICAgICAgYXJpdGhQcm9maWxlLnJoc1Nhd0ludDMyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnRJbnQoKS5iaXRz
KCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJ
bnRJbnQoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKLSAgICAgICAgU1RBVElD
X0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkucmhzT2JzZXJ2ZWRU
eXBlKCkuaXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygp
ID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRJbnRCaXRzKCkpOworICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAg
ICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkp
OwogICAgIH0KICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAg
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmls
ZS5saHNTYXdOdW1iZXIoKTsKICAgICAgICAgYXJpdGhQcm9maWxlLnJoc1Nhd0ludDMyKCk7Ci0g
ICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2
ZWRCaW5hcnlOdW1iZXJJbnQoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRo
UHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09u
bHlOdW1iZXIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZl
ZEJpbmFyeU51bWJlckludCgpLnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAg
ICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0aFByb2ZpbGU6Om9i
c2VydmVkTnVtYmVySW50Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5saHNP
YnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2Zp
bGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQogICAgIHsKLSAgICAg
ICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxl
IGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051bWJlcigpOwogICAg
ICAgICBhcml0aFByb2ZpbGUucmhzU2F3TnVtYmVyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIo
KS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRC
aW5hcnlOdW1iZXJOdW1iZXIoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7Ci0g
ICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51
bWJlcigpLnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJU
KGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJl
ck51bWJlckJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRU
eXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09i
c2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKICAgICB9CiAgICAgewotICAgICAgICBBcml0
aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQ
cm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKICAgICAgICAgYXJp
dGhQcm9maWxlLnJoc1Nhd051bWJlcigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCkuYml0cygpKTsK
LSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50TnVt
YmVyKCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Ci0gICAgICAgIFNUQVRJQ19B
U1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLnJoc09ic2VydmVk
VHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRz
KCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMoKSk7CisgICAg
ICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7
CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVt
YmVyKCkpOwogICAgIH0KIH0KIElHTk9SRV9XQVJOSU5HU19FTkQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYTI1
Zjk4NGFiZGEuLmY1ZDkxNzc0NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtODYsNyArODYsNyBAQCBwdWJs
aWM6CiAKIGNvbnN0IGludDY0X3QqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQogewot
Ly8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0
c19leHRyYWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCisvLyBUaGlzIGlzIGEgZmlsZSBnZW5l
cmF0ZWQgYnkgb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiLCBhbmQgY29u
dGFpbnMgY29kZQogLy8gdG8gY3JlYXRlIGEgdGFibGUgb2Ygb2Zmc2V0cywgc2l6ZXMsIGFuZCBh
IGhlYWRlciBpZGVudGlmeWluZyB3aGF0IGNvbWJpbmF0aW9uIG9mCiAvLyBQbGF0Zm9ybS5oIG1h
Y3JvcyB3ZSBoYXZlIHNldC4gV2UgaW5jbHVkZSBpdCBpbnNpZGUgb2YgYSBtZXRob2Qgb24gTExJ
bnRPZmZzZXRzRXh0cmFjdG9yCiAvLyBiZWNhdXNlIHRoZSBmaWVsZHMgd2hvc2Ugb2Zmc2V0cyB3
ZSdyZSBleHRyYWN0aW5nIGFyZSBtb3N0bHkgcHJpdmF0ZS4gU28gd2UgbWFrZSB0aGVpcgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CmluZGV4IDVkOTliODQ2MTA1Li5kZGY2ZjUzZTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjQwLDEzICsyNDAs
MTUgQEAgY29uc3QgSXNJbnZhbGlkYXRlZCA9IGNvbnN0ZXhwciBJc0ludmFsaWRhdGVkCiAjIFNo
YWRvd0NoaWNrZW4gZGF0YQogY29uc3QgU2hhZG93Q2hpY2tlblRhaWxNYXJrZXIgPSBjb25zdGV4
cHIgU2hhZG93Q2hpY2tlbjo6UGFja2V0Ojp0YWlsTWFya2VyVmFsdWUKIAotIyBBcml0aFByb2Zp
bGUgZGF0YQotY29uc3QgQXJpdGhQcm9maWxlSW50ID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6
Om9ic2VydmVkVW5hcnlJbnQoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXIgPSBj
b25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRVbmFyeU51bWJlcigpLmJpdHMoKSkKLWNv
bnN0IEFyaXRoUHJvZmlsZUludEludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZl
ZEJpbmFyeUludEludCgpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IGNv
bnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgpLmJpdHMoKSkK
LWNvbnN0IEFyaXRoUHJvZmlsZUludE51bWJlciA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpv
YnNlcnZlZEJpbmFyeUludE51bWJlcigpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJl
ck51bWJlciA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51
bWJlcigpLmJpdHMoKSkKKyMgVW5hcnlBcml0aFByb2ZpbGUgZGF0YQorY29uc3QgQXJpdGhQcm9m
aWxlSW50ID0gY29uc3RleHByIChVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKCkp
Citjb25zdCBBcml0aFByb2ZpbGVOdW1iZXIgPSBjb25zdGV4cHIgKFVuYXJ5QXJpdGhQcm9maWxl
OjpvYnNlcnZlZE51bWJlckJpdHMoKSkKKworIyBCaW5hcnlBcml0aFByb2ZpbGUgZGF0YQorY29u
c3QgQXJpdGhQcm9maWxlSW50SW50ID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9i
c2VydmVkSW50SW50Qml0cygpKQorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVySW50ID0gY29uc3Rl
eHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVySW50Qml0cygpKQorY29uc3Qg
QXJpdGhQcm9maWxlSW50TnVtYmVyID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9i
c2VydmVkSW50TnVtYmVyQml0cygpKQorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyTnVtYmVyID0g
Y29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cygp
KQogCiAjIFBvaW50ZXIgVGFncwogY29uc3QgQnl0ZWNvZGVQdHJUYWcgPSBjb25zdGV4cHIgQnl0
ZWNvZGVQdHJUYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggYWI1MDRhMTRlNWQuLjhiYTIyYThmZjZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgZW5kKQogbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9uZWdhdGUsIE9wTmVnYXRlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKIAogICAgIG1hY3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAg
ICAgICBvcmkgdHlwZSwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRo
UHJvZmlsZTo6bV9iaXRzW3Q1XQorICAgICAgICBvcmkgdHlwZSwgT3BOZWdhdGU6Ok1ldGFkYXRh
OjptX2FyaXRoUHJvZmlsZSArIEJpbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgIGVu
ZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTAzMCw3ICsxMDMwLDcgQEAgZW5kKQogbWFj
cm8gYmluYXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJP
cGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uKQogICAgIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBhcml0aFByb2ZpbGUodHlwZSkK
LSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQ
cm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisgICAgICAgICAgICBvcmkgdHlwZSwg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEJpbmFyeUFyaXRoUHJv
ZmlsZTo6bV9iaXRzW3Q1XQogICAgICAgICBlbmQKIAogICAgICAgICBtZXRhZGF0YSh0NSwgdDIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCmluZGV4IGIyZmI1NTFiOWVhLi4wNTliNWEzNTBmNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAg
LTk3NiwxOSArOTc2LDE5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0
ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByCiAgICAgZ2V0KG1fb3Bl
cmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAgICAg
bWV0YWRhdGEodDEsIHQyKQotICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFBy
b2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCisgICAgbG9hZGkgT3BOZWdhdGU6
Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEJpbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Qx
XSwgdDIKICAgICBicWIgdDMsIG51bWJlclRhZywgLm9wTmVnYXRlTm90SW50CiAgICAgYnRpeiB0
MywgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDMKICAgICBvcnEgbnVtYmVy
VGFnLCB0MwogICAgIG9yaSBBcml0aFByb2ZpbGVJbnQsIHQyCi0gICAgc3RvcmVpIHQyLCBPcE5l
Z2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFd
CisgICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQmlu
YXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCiAgICAgcmV0dXJuKHQzKQogLm9wTmVnYXRlTm90
SW50OgogICAgIGJ0cXogdDMsIG51bWJlclRhZywgLm9wTmVnYXRlU2xvdwogICAgIHhvcnEgMHg4
MDAwMDAwMDAwMDAwMDAwLCB0MwogICAgIG9yaSBBcml0aFByb2ZpbGVOdW1iZXIsIHQyCi0gICAg
c3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9m
aWxlOjptX2JpdHNbdDFdCisgICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJp
dGhQcm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCiAgICAgcmV0dXJuKHQz
KQogCiAub3BOZWdhdGVTbG93OgpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgbWFjcm8gYmluYXJ5T3BD
dXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRpb25BbmRT
dG9yZSwgZG8KICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQogCiAgICAgICAgIG1hY3JvIHByb2Zp
bGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisgICAgICAgICAgICBv
cmkgdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEJpbmFy
eUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgICAgICBlbmQKIAogICAgICAgICBnZXQobV9y
aHMsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRU
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAppbmRleCA5
YjNkMGQ3NGM4ZC4uNTYyMmYyODljYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUmVzdWx0VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UmVzdWx0VHlwZS5oCkBAIC00OCw2ICs0OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgbnVtQml0c05lZWRlZCA9IDc7CiAgICAgICAgIHN0YXRpY19h
c3NlcnQoKFR5cGVCaXRzICYgKCgxIDw8IG51bUJpdHNOZWVkZWQpIC0gMSkpID09IFR5cGVCaXRz
LCAiVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLiIpOwogCisgICAgICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBSZXN1bHRUeXBlKCkKKyAgICAgICAgICAgIDogUmVzdWx0VHlwZSh1bmtu
b3duVHlwZSgpKQorICAgICAgICB7CisgICAgICAgIH0KICAgICAgICAgY29uc3RleHByIGV4cGxp
Y2l0IFJlc3VsdFR5cGUoVHlwZSB0eXBlKQogICAgICAgICAgICAgOiBtX2JpdHModHlwZSkKICAg
ICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKaW5kZXggOTI0ZjdlNWIzNTIuLjM0MGI5MDA4NjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQ4Nyw4ICs0
ODcsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fc3RyaW5nKQogI2lmIEVOQUJMRShK
SVQpCiBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AoT3BOZWdh
dGU6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNWYWx1ZSByZXN1bHQsIEpTVmFsdWUgb3BlcmFuZCkK
IHsKLSAgICBBcml0aFByb2ZpbGUmIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZTsK
LSAgICBwcm9maWxlLm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUm
IHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZTsKKyAgICBwcm9maWxlLm9ic2VydmVB
cmcob3BlcmFuZCk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpIHx8IHJlc3VsdC5pc0Jp
Z0ludCgpKTsKICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgaWYgKCFyZXN1
bHQuaXNJbnQzMigpKSB7CkBAIC01NDYsNyArNTQ2LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX25lZ2F0ZSkKIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRo
T3AoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgcmVzdWx0
LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmlnaHQpCiB7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBBcml0aFByb2ZpbGUmIHByb2ZpbGUgPSAqY29k
ZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlJiBw
cm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMocGMpOwogCiAgICAg
aWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICghcmVzdWx0LmlzSW50MzIoKSkg
ewpAQCAtNjA3LDcgKzYwNyw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZGQpCiAgICAg
SlNWYWx1ZSB2MSA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1
ZSB2MiA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICBBcml0aFByb2Zp
bGUmIGFyaXRoUHJvZmlsZSA9ICpleGVjLT5jb2RlQmxvY2soKS0+YXJpdGhQcm9maWxlRm9yUEMo
cGMpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlID0gKmV4ZWMtPmNvZGVC
bG9jaygpLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhwYyk7CiAgICAgYXJpdGhQcm9maWxlLm9i
c2VydmVMSFNBbmRSSFModjEsIHYyKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGQoZXhl
YywgdjEsIHYyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381001</attachid>
            <date>2019-10-15 10:57:50 -0700</date>
            <delta_ts>2019-10-15 14:50:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchFixArithProfile</filename>
            <type>text/plain</type>
            <size>118413</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDM3NTMxZDUzMDBkLi5lNzI2Y2NhOGRjNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY1IEBACisyMDE5LTEwLTE0ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGltZSBvbmx5IHVzZWQgZm9y
IGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQgYmVpbmcgdXNlZCBmb3Ig
bmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1c2VkIGZvciBpbmMgYW5k
IGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBhdGNoIEkgbWFrZSBhIHNl
cGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3IgYSBzaW5nbGUgYXJndW1l
bnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisKKyAgICAgICAgQWZ0ZXIg
ZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXplZCB0aGF0IHRoZSBSZXN1
bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQcm9maWxlIGFyZSBub3Qg
bmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFscmVhZHkgaW4gdGhlIGJ5
dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3ZpbmcgdGhlbSBhbGxvd2Vk
IHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBmaXQgaW4gMTYgYml0cyAo
OSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRoZSB0d28ga2luZHMgc2Vw
YXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRlcGVuZGVudGx5IGluIHRo
ZSBmdXR1cmUuCisKKyAgICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwOgorICAgICAg
ICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQpOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldERv
dWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxk
VHlwZT46OnNob3VsZEVtaXRTZXROb25OdW1lcmljIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJp
dGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVyaWMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNl
dEJpZ0ludCBjb25zdCk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRp
ZE9ic2VydmVOb25JbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlk
T2JzZXJ2ZURvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2Jz
ZXJ2ZU5vbk5lZ1plcm9Eb3VibGUgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6
OmRpZE9ic2VydmVOZWdaZXJvRG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9m
aWxlOjpkaWRPYnNlcnZlTm9uTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJv
ZmlsZTo6ZGlkT2JzZXJ2ZUJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTo6ZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFBy
b2ZpbGU6OmRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJp
dGhQcm9maWxlOjpzZXRPYnNlcnZlZE5vbk5lZ1plcm9Eb3VibGUpOgorICAgICAgICAoSlNDOjpB
cml0aFByb2ZpbGU6OnNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWROb25OdW1lcmljKToKKyAgICAgICAgKEpTQzo6QXJpdGhQ
cm9maWxlOjpzZXRPYnNlcnZlZEJpZ0ludCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6
c2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpz
ZXRPYnNlcnZlZEludDUyT3ZlcmZsb3cpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6Om9i
c2VydmVSZXN1bHQpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmFkZHJlc3NPZkJpdHMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmJpdHMgY29uc3QpOgorICAgICAg
ICAoSlNDOjpBcml0aFByb2ZpbGU6OkFyaXRoUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFyaXRo
UHJvZmlsZTo6aGFzQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0
Qml0KToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OlVuYXJ5QXJpdGhQcm9maWxl
KToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cyk6Cisg
ICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckJpdHMpOgorICAg
ICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6YXJnT2JzZXJ2ZWRUeXBlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OnNldEFyZ09ic2VydmVkVHlwZSk6CisgICAg
ICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdJbnQzMik6CisgICAgICAgIChKU0M6
OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdOdW1iZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFy
aXRoUHJvZmlsZTo6YXJnU2F3Tm9uTnVtYmVyKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVBcmcpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6aXNP
YnNlcnZlZFR5cGVFbXB0eSk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6Qmlu
YXJ5QXJpdGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNl
cnZlZEludEludEJpdHMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2Vy
dmVkTnVtYmVySW50Qml0cyk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2Jz
ZXJ2ZWRJbnROdW1iZXJCaXRzKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpv
YnNlcnZlZE51bWJlck51bWJlckJpdHMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2Zp
bGU6OnNldExoc09ic2VydmVkVHlwZSk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmls
ZTo6c2V0UmhzT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxl
OjpvYnNlcnZlTEhTKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZl
TEhTQW5kUkhTKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVk
VHlwZUVtcHR5KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRK
SVRBZGRJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklUTXVsSUMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVFN1YklDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjphZGRKSVROZWdJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJp
bmFyeUFyaXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmFyeUFy
aXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTcGVj
aWFsRmFzdENhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZE1hdGhJQyk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOgorICAg
ICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpyZXBv
cnRWYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5
T3ApOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpVbmFyeU9w
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjptYWtlU2FmZSk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om1ha2VEaXZTYWZlKToKKyAgICAgICAgKiBkZmcv
REZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjptZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVOZWdhdGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVW5hcnlNYXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQmluYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQWRkT3JTdWIpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVOZWdhdGUpOgorICAgICAgICAqIGppdC9K
SVQuaDoKKyAgICAgICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVEFkZEdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVEFkZEdlbmVyYXRv
ci5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9hZGQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNGYXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
TWF0aElDU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfbXVsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1Yik6
CisgICAgICAgICogaml0L0pJVERpdkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERp
dkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVERpdkdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpKSVREaXZHZW5lcmF0b3I6OkpJVERpdkdlbmVyYXRvcik6
CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjpjb3BpZWRB
cml0aFByb2ZpbGUpOgorICAgICAgICAqIGppdC9KSVRNYXRoSUMuaDoKKyAgICAgICAgKEpTQzo6
SklUTWF0aElDOjpKSVRNYXRoSUMpOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUTWF0aElDOjphcml0aFByb2ZpbGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjppc0JpbmFyeVByb2ZpbGVFbXB0eSk6CisgICAgICAgIChKU0M6OkpJVEJp
bmFyeU1hdGhJQzo6SklUQmluYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6aXNVbmFyeVByb2Zp
bGVFbXB0eSk6CisgICAgICAgIChKU0M6OkpJVFVuYXJ5TWF0aElDOjpKSVRVbmFyeU1hdGhJQyk6
CisgICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVE11
bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRNdWxHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRNdWxHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTmVn
R2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVE5lZ0dlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVE5lZ0dlbmVyYXRvci5oOgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUU3Vi
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUU3ViR2VuZXJh
dG9yLmg6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL1Jlc3VsdFR5cGUuaDoK
KyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6UmVzdWx0VHlwZSk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVG
b3JVbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5h
cnlBcml0aE9wKToKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorCiAyMDE5LTEwLTE0
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjUxMDkwLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRleCA5OTk5MzNiOGMwZS4uN2Y0NmY3M2ZjOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3Bw
CkBAIC0zMiw3ICszMiw4IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCi12
b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
VmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKK3RlbXBsYXRlPHR5cGVuYW1l
IEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNl
cnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3Rl
cnNNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCFzaG91bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3Vs
ZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3VsZEVtaXRTZXRCaWdJbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNTgsNDEgKzU5LDUxIEBAIHZvaWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2
ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnCiAgICAg
ZG9uZS5saW5rKCZqaXQpOwogfQogCi1ib29sIEFyaXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldERv
dWJsZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3QKIHsKLSAg
ICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxlOjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9m
aWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQ
cm9maWxlOjpOb25OZWdaZXJvRG91YmxlOworICAgIHVpbnQzMl90IG1hc2sgPSBJbnQzMk92ZXJm
bG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9Eb3VibGUgfCBOb25OZWdaZXJvRG91YmxlOwog
ICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0gbWFzazsKIH0KIAotdm9pZCBBcml0aFByb2Zp
bGU6OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0
U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChzaG91bGRFbWl0
U2V0RG91YmxlKCkpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KEFyaXRoUHJvZmlsZTo6SW50MzJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxv
dyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVy
b0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkp
OworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihJbnQzMk92ZXJm
bG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9Eb3VibGUgfCBOb25OZWdaZXJvRG91YmxlKSwg
Q0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CiB9CiAKLWJv
b2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0CiB7CiAgICAgdWludDMyX3QgbWFzayA9
IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9
IG1hc2s7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29u
c3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJp
dGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdAogewogICAgIHVpbnQzMl90
IG1hc2sgPSBBcml0aFByb2ZpbGU6OkJpZ0ludDsKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2sp
ICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2Fs
bEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3Zv
aWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25OdW1lcmljKENDYWxsSGVs
cGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQot
ICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6
Ok5vbk51bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRz
KCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoTm9uTnVt
ZXJpYyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwog
fQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkg
Y29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxl
PEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7
CiAgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQoKSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6
OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmlnSW50KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFk
ZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CiB9CisKKy8vIEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRh
dGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBhYm92ZSBmb3IgVW5hcnlBcml0aFByb2ZpbGUvQmluYXJ5
QXJpdGhQcm9maWxlCisvLyBJZiBjaGFuZ2luZyB0aGUgc2l6ZSBvZiBlaXRoZXIsIGFkZCB0aGUg
Y29ycmVzcG9uZGluZyBsaW5lcyBoZXJlLgordGVtcGxhdGUgY2xhc3MgQXJpdGhQcm9maWxlPHVp
bnQxNl90PjsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKQEAg
LTEwMSw3ICsxMTIsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFBy
b2ZpbGUmIHByb2ZpbGUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGU8VD4mIHByb2ZpbGUpCiB7CiAg
ICAgY29uc3QgY2hhciogc2VwYXJhdG9yID0gIiI7CiAKQEAgLTEzNSwxOSArMTQ3LDMwIEBAIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHBy
b2ZpbGUpCiAgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0UGF0aCgpKQotICAgICAgICBvdXQucHJpbnQo
c2VwYXJhdG9yLCAiVG9vayBzcGVjaWFsIGZhc3QgcGF0aC4iKTsKICAgICBvdXQucHJpbnQoIj4i
KTsKK30KKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuYXJ5
QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAgIHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNf
Y2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisg
ICAgb3V0LnByaW50KCIgQXJnIE9ic2VydmVkVHlwZTo8Iik7CisgICAgb3V0LnByaW50KHByb2Zp
bGUuYXJnT2JzZXJ2ZWRUeXBlKCkpOworICAgIG91dC5wcmludCgiPiIpOworfQorCit2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlJiBw
cm9maWxlKQoreworICAgIHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2Zp
bGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisgICAgaWYgKHByb2ZpbGUu
dG9va1NwZWNpYWxGYXN0UGF0aCgpKQorICAgICAgICBvdXQucHJpbnQoIiBUb29rIHNwZWNpYWwg
ZmFzdCBwYXRoLiIpOwogCiAgICAgb3V0LnByaW50KCIgTEhTIE9ic2VydmVkVHlwZTo8Iik7CiAg
ICAgb3V0LnByaW50KHByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgi
PiBSSFMgT2JzZXJ2ZWRUeXBlOjwiKTsKICAgICBvdXQucHJpbnQocHJvZmlsZS5yaHNPYnNlcnZl
ZFR5cGUoKSk7CiAgICAgb3V0LnByaW50KCI+Iik7Ci0KLSAgICBvdXQucHJpbnQoIiBMSFMgUmVz
dWx0VHlwZTo8IiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4ocHJvZmlsZS5saHNSZXN1bHRUeXBlKCkuYml0cygpKSkpKTsKLSAgICBvdXQucHJp
bnQoIj4gUkhTIFJlc3VsdFR5cGU6PCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2ZpbGUucmhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7
Ci0gICAgb3V0LnByaW50KCI+Iik7CiB9CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBKU0M6Ok9ic2VydmVkVHlwZSYgb2JzZXJ2ZWRUeXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCmluZGV4IGZjYzRlMjgxOGJl
Li5jYWQ5OWY0OGJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0
aFByb2ZpbGUuaApAQCAtNjYsMTE5ICs2NiwyMTcgQEAgcHJpdmF0ZToKICAgICB1aW50OF90IG1f
Yml0cyB7IDAgfTsKIH07CiAKLXN0cnVjdCBBcml0aFByb2ZpbGUgewotcHJpdmF0ZToKLSAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bWJlck9mRmxhZ0JpdHMgPSA2OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgcmhzUmVzdWx0VHlwZVNoaWZ0ID0gbnVtYmVyT2ZGbGFnQml0
czsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGxoc1Jlc3VsdFR5cGVTaGlmdCA9IHJo
c1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCByaHNPYnNlcnZlZFR5cGVTaGlmdCA9IGxoc1Jlc3VsdFR5cGVT
aGlmdCArIFJlc3VsdFR5cGU6Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBsaHNPYnNlcnZlZFR5cGVTaGlmdCA9IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2Jz
ZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkOwotCi0gICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5
cGU6Om51bUJpdHNOZWVkZWQgPT0gMywgIldlIG1ha2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQg
dGhhdCBoZXJlLiIpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY2xlYXJSaHNPYnNl
cnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KH4oKDEgPDwgcmhzT2JzZXJ2
ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwg
KHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MzJfdCBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
figoMSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgKyAxKSkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyAyKSkpKTsKLQotICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmVzdWx0VHlwZU1hc2sgPSAoMSA8PCBSZXN1bHRUeXBl
OjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNl
cnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorY2xhc3MgQXJpdGhQcm9maWxlIHsKK3B1
YmxpYzoKKyAgICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7CisgICAgICAgIE5vbk5lZ1plcm9Eb3Vi
bGUgPSAxIDw8IDAsCisgICAgICAgIE5lZ1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCisgICAgICAg
IE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCisgICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAx
IDw8IDMsCisgICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCisgICAgICAgIEJpZ0lu
dCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVkZWQgPSA2OwogCi0gICAgZW51bSBjbGFzcyBD
b25zdGFudFRhZyB7IENvbnN0YW50IH07CisgICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBj
b25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQor
ICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNC
aXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRp
ZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsg
fQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmln
SW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KIAotcHVibGlj
OgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8
PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwot
ICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpu
dW1CaXRzTmVlZGVkKSA8PSAoc2l6ZW9mKHVpbnQzMl90KSAqIDgpIC0gMSwgIlNob3VsZCBmaXQg
aW4gYSB1aW50MzJfdC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0
ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzayksICJUaGVzZSBiaXRzIHNob3VsZCBub3Qg
aW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xl
YXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhlc2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIp
OwotICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2
ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNp
YWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBoaWdoZXIgYml0LiIpOworICAgIHZvaWQgc2V0T2Jz
ZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAg
ICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUp
OyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmlj
KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJbnQpOyB9Cisg
ICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93
KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJP
dmVyZmxvdyk7IH0KIAotICAgIEFyaXRoUHJvZmlsZShSZXN1bHRUeXBlIGFyZykKLSAgICAgICAg
OiBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBhcmcpCisgICAgdm9pZCBvYnNl
cnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0
VHlwZSgpLmJpdHMoKSA9PSBhcmcuYml0cygpKTsKLSAgICAgICAgQVNTRVJUKGxoc09ic2VydmVk
VHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFTU0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0Vt
cHR5KCkpOworICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgbV9iaXRzIHw9
IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1pl
cm9Eb3VibGU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZh
bHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9iaXRzIHw9IE5vbk51
bWVyaWM7CiAgICAgfQogCi0gICAgQXJpdGhQcm9maWxlKFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRU
eXBlIHJocykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBs
aHMsIHJocykKKyAgICBjb25zdCB2b2lkKiBhZGRyZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4g
Jm1fYml0czsgfQorCisjaWYgRU5BQkxFKEpJVCkKKyAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93
IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBp
dCBzZWVzIGEKKyAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9u
LW51bWVyaWMuCisgICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1Zh
bHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOworCisgICAgLy8g
U2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwg
TmVnWmVyb0RvdWJsZSkuCisgICAgYm9vbCBzaG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7Cisg
ICAgdm9pZCBlbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYpIGNvbnN0OworCisgICAgLy8gU2V0
cyBOb25OdW1iZXIuCisgICAgdm9pZCBlbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBj
b25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3Q7CisKKyAgICAv
LyBTZXRzIEJpZ0ludAorICAgIHZvaWQgZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25z
dDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdDsKKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQorCisgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBt
X2JpdHM7IH0KKworcHJvdGVjdGVkOgorICAgIEFyaXRoUHJvZmlsZSgpCiAgICAgewotICAgICAg
ICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSBsaHMuYml0cygpICYmIHJoc1Jlc3Vs
dFR5cGUoKS5iaXRzKCkgPT0gcmhzLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZl
ZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNF
bXB0eSgpKTsKICAgICB9CiAKLSAgICBBcml0aFByb2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQot
ICAgICAgICA6IEFyaXRoUHJvZmlsZSh0eXBlcy5maXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKLSAg
ICB7IH0KKyAgICBib29sIGhhc0JpdHMoaW50IG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IG1hc2s7IH0KKyAgICB2b2lkIHNldEJpdChpbnQgbWFzaykgeyBtX2JpdHMgfD0gbWFzazsgfQor
CisgICAgQml0ZmllbGRUeXBlIG1fYml0cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0
ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUg
YW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRhdGlvbiB0byBpdC4KK307CisKKy8qIFRoaXMg
Y2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBpbiAxNiBiaXRzOgorICogLSBP
YnNlcnZlZFJlc3VsdHMKKyAqIC0gT2JzZXJ2ZWRUeXBlIGZvciB0aGUgYXJndW1lbnQKKyAqLwor
dXNpbmcgVW5hcnlBcml0aFByb2ZpbGVCYXNlID0gdWludDE2X3Q7CitjbGFzcyBVbmFyeUFyaXRo
UHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBhcmdPYnNlcnZlZFR5cGVTaGlmdCA9IG9ic2Vy
dmVkUmVzdWx0c051bUJpdHNOZWVkZWQ7CiAKLSAgICBBcml0aFByb2ZpbGUoKSA9IGRlZmF1bHQ7
CisgICAgc3RhdGljX2Fzc2VydChhcmdPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6
bnVtQml0c05lZWRlZCA8PSBzaXplb2YoVW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91
bGQgZml0IGluIGEgdGhlIHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAKLSAg
ICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBmcm9tSW50KHVpbnQzMl90IGJpdHMpCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZl
ZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8VW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTEx
IDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5
QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpu
dW1CaXRzTmVlZGVkKSAtIDE7CisKK3B1YmxpYzoKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSgpCisg
ICAgICAgIDogQXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4oKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEFyaXRoUHJvZmlsZSB7IENvbnN0YW50VGFnOjpDb25zdGFudCwgYml0cyB9
OworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAg
QVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRVbmFyeUludCgpCisgICAgc3RhdGljIGNv
bnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRJbnRCaXRzKCkKICAgICB7CiAg
ICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlw
ZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0gb2Jz
ZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRp
Y19hc3NlcnQoYml0cyA9PSAweDgwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChi
aXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2Jz
ZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQ7CisgICAgICAgIHJldHVy
biBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZl
ZFVuYXJ5TnVtYmVyKCkKKyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZSBvYnNlcnZlZE51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVk
VHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAg
ICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBs
aHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4MTAw
MDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3Rl
eHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8
IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAgICByZXR1cm4gYml0czsKKyAgICB9CisKKyAg
ICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGFyZ09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVk
VHlwZU1hc2spOyB9CisgICAgdm9pZCBzZXRBcmdPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5
cGUpCisgICAgeworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsK
KyAgICAgICAgYml0cyAmPSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2s7CisgICAgICAgIGJp
dHMgfD0gdHlwZS5iaXRzKCkgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQ7CisgICAgICAgIG1fYml0
cyA9IGJpdHM7CisgICAgICAgIEFTU0VSVChhcmdPYnNlcnZlZFR5cGUoKSA9PSB0eXBlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFyZ1Nhd0ludDMyKCkgeyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2Jz
ZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9CisgICAgdm9pZCBhcmdTYXdOdW1iZXIoKSB7IHNl
dEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkpOyB9CisgICAg
dm9pZCBhcmdTYXdOb25OdW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5
cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CisKKyAgICB2b2lkIG9ic2VydmVBcmcoSlNWYWx1ZSBh
cmcpCisgICAgeworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7
CisgICAgICAgIGlmIChhcmcuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgaWYgKGFyZy5pc0lu
dDMyKCkpCisgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld1Byb2ZpbGUuYXJnU2F3TnVtYmVyKCk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbmV3UHJvZmlsZS5hcmdTYXdOb25OdW1iZXIoKTsK
KworICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxlLmJpdHMoKTsKKyAgICB9CisKKyAgICBib29s
IGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFyZ09ic2VydmVk
VHlwZSgpLmlzRW1wdHkoKTsKKyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9m
ZnNldHNFeHRyYWN0b3I7Cit9OworCisvKiBUaGlzIGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5n
IGNvbXBvbmVudHMgaW4gMTYgYml0czoKKyAqIC0gT2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2Vy
dmVkVHlwZSBmb3IgcmlnaHQtaGFuZC1zaWRlCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgbGVmdC1o
YW5kLXNpZGUKKyAqIC0gYSBiaXQgdXNlZCBieSBkaXZpc2lvbiB0byBpbmRpY2F0ZSB3aGV0aGVy
IGEgc3BlY2lhbCBmYXN0IHBhdGggd2FzIHRha2VuCisgKi8KK3VzaW5nIEJpbmFyeUFyaXRoUHJv
ZmlsZUJhc2UgPSB1aW50MTZfdDsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBB
cml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRz
TmVlZGVkOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsK
KworICAgIHN0YXRpY19hc3NlcnQoT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJX
ZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9uIGFib3V0IHRoYXQgaGVyZS4iKTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRN
YXNrID0gc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigwYjExMSA8PCByaHNP
YnNlcnZlZFR5cGVTaGlmdCkpOworICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9m
aWxlQmFzZSBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlB
cml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAg
ICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFz
ayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOworCitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0
aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRz
TmVlZGVkKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2Vy
dmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVC
YXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2Vy
dCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAi
VGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNw
ZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJp
dHMgc2hvdWxkIGludGVyc2VjdC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0
aEJpdCA+IH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBu
b3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJp
dC4iKTsKKworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxl
PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+ICgpCisgICAgeworICAgICAgICBBU1NFUlQobGhzT2Jz
ZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKHJoc09ic2VydmVkVHlwZSgp
LmlzRW1wdHkoKSk7CiAgICAgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9i
c2VydmVkQmluYXJ5SW50SW50KCkKKworICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQ
cm9maWxlQmFzZSBvYnNlcnZlZEludEludEJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHBy
IE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkg
fTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRz
KCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJo
c09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4OTAw
MDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4
cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8
IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNl
cnZlZFR5cGVTaGlmdCk7CisgICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMg
Y29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZEJpbmFyeU51bWJlckludCgpCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkTnVtYmVySW50Qml0
cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVy
IHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigpIH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNl
cnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0g
ICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8
PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMTAwMDAw
LCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIg
QmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBs
aHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2
ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKQorICAgIHN0YXRp
YyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZEludE51bWJlckJpdHMo
KQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7
IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2
ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAg
ICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBs
aHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2Vy
dmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4YTAwMDAwLCAi
Iik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmlu
YXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09i
c2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRU
eXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKQorICAgIHN0YXRp
YyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJlck51bWJlckJp
dHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJl
ciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWlu
dDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0g
ICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDEyMDAwMDAsICIiKTsKLSAgICAgICAgcmV0
dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVC
YXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0
KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAg
ICAgICByZXR1cm4gYml0czsKICAgICB9CiAKLSAgICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7Ci0g
ICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8IDAsCi0gICAgICAgIE5lZ1plcm9Eb3VibGUg
ICAgPSAxIDw8IDEsCi0gICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCi0gICAgICAg
IEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCi0gICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAx
IDw8IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgfTsKLQotICAg
IFJlc3VsdFR5cGUgbGhzUmVzdWx0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUoKG1f
Yml0cyA+PiBsaHNSZXN1bHRUeXBlU2hpZnQpICYgcmVzdWx0VHlwZU1hc2spOyB9Ci0gICAgUmVz
dWx0VHlwZSByaHNSZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1cm4gUmVzdWx0VHlwZSgobV9iaXRz
ID4+IHJoc1Jlc3VsdFR5cGVTaGlmdCkgJiByZXN1bHRUeXBlTWFzayk7IH0KLQogICAgIGNvbnN0
ZXhwciBPYnNlcnZlZFR5cGUgbGhzT2JzZXJ2ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gT2JzZXJ2
ZWRUeXBlKChtX2JpdHMgPj4gbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBlTWFz
ayk7IH0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIHJoc09ic2VydmVkVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IHJoc09ic2VydmVkVHlwZVNoaWZ0KSAm
IG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgdm9pZCBzZXRMaHNPYnNlcnZlZFR5cGUoT2JzZXJ2
ZWRUeXBlIHR5cGUpCiAgICAgewotICAgICAgICB1aW50MzJfdCBiaXRzID0gbV9iaXRzOworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSBtX2JpdHM7CiAgICAgICAgIGJpdHMg
Jj0gY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrOwogICAgICAgICBiaXRzIHw9IHR5cGUuYml0
cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0OwogICAgICAgICBtX2JpdHMgPSBiaXRzOwpAQCAt
MTg3LDcgKzI4NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UmhzT2JzZXJ2ZWRUeXBlKE9i
c2VydmVkVHlwZSB0eXBlKQogICAgIHsgCi0gICAgICAgIHVpbnQzMl90IGJpdHMgPSBtX2JpdHM7
CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKICAgICAgICAg
Yml0cyAmPSBjbGVhclJoc09ic2VydmVkVHlwZUJpdE1hc2s7CiAgICAgICAgIGJpdHMgfD0gdHlw
ZS5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQ7CiAgICAgICAgIG1fYml0cyA9IGJpdHM7
CkBAIC0xOTYsMzkgKzI5NCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdG9va1NwZWNpYWxGYXN0
UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIHNwZWNpYWxGYXN0UGF0aEJpdDsgfQogCi0g
ICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5l
Z1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KLSAg
ICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1pl
cm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1pl
cm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0g
ICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMo
TmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3Qg
eyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0lu
dCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2
ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9
Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0Jp
dHMoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91
YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVk
TmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBzZXRP
YnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0
T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJbnQpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZl
ZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0
T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KLQotICAg
IGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBjb25zdCB7IHJldHVybiAmbV9iaXRzOyB9Ci0K
LSAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlm
ICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh2YWx1
ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBtX2JpdHMgfD0gSW50MzJPdmVyZmxvdyB8IElu
dDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJ
bnQoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9IEJpZ0ludDsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBtX2JpdHMgfD0gTm9uTnVtZXJpYzsKLSAgICB9Ci0KICAg
ICB2b2lkIGxoc1Nhd0ludDMyKCkgeyBzZXRMaHNPYnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBl
KCkud2l0aEludDMyKCkpOyB9CiAgICAgdm9pZCBsaHNTYXdOdW1iZXIoKSB7IHNldExoc09ic2Vy
dmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkpOyB9CiAgICAgdm9pZCBsaHNT
YXdOb25OdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRo
Tm9uTnVtYmVyKCkpOyB9CkBAIC0yMzgsNyArMzAzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBv
YnNlcnZlTEhTKEpTVmFsdWUgbGhzKQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxlIG5ld1By
b2ZpbGUgPSAqdGhpczsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAq
dGhpczsKICAgICAgICAgaWYgKGxocy5pc051bWJlcigpKSB7CiAgICAgICAgICAgICBpZiAobGhz
LmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBuZXdQcm9maWxlLmxoc1Nhd0ludDMyKCk7CkBA
IC0yNTQsNyArMzE5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgb2JzZXJ2ZUxIUyhsaHMp
OwogCi0gICAgICAgIEFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CiAgICAgICAgIGlmIChyaHMuaXNO
dW1iZXIoKSkgewogICAgICAgICAgICAgaWYgKHJocy5pc0ludDMyKCkpCiAgICAgICAgICAgICAg
ICAgbmV3UHJvZmlsZS5yaHNTYXdJbnQzMigpOwpAQCAtMjY2LDQ3ICszMzEsMTEgQEAgcHVibGlj
OgogICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxlLmJpdHMoKTsKICAgICB9CiAKLSNpZiBFTkFC
TEUoSklUKSAgICAKLSAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8
IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKLSAgICAvLyBk
b3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCi0gICAgdm9p
ZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0
ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwotICAgIAotICAgIC8vIFNldHMgKEludDMyT3Zl
cmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUp
LgotICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0OwotICAgIHZvaWQgZW1pdFNl
dERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKLSAgICAKLSAgICAvLyBTZXRzIE5vbk51bWJl
ci4KLSAgICB2b2lkIGVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0OwotICAg
IGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdDsKLQotICAgIC8vIFNldHMgQmln
SW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJv
b2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0OwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0K
LSAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQot
Ci1wcml2YXRlOgotICAgIGNvbnN0ZXhwciBleHBsaWNpdCBBcml0aFByb2ZpbGUoQ29uc3RhbnRU
YWcsIHVpbnQzMl90IGJpdHMpCi0gICAgICAgIDogbV9iaXRzKGJpdHMpCi0gICAgewotICAgIH0K
LQotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWcsIFJlc3VsdFR5cGUgYXJn
KQotICAgICAgICA6IG1fYml0cyhhcmcuYml0cygpIDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkKKyAg
ICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQogICAgIHsKKyAgICAgICAgcmV0dXJuIGxoc09i
c2VydmVkVHlwZSgpLmlzRW1wdHkoKSAmJiByaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiAg
ICAgfQogCi0gICAgY29uc3RleHByIEFyaXRoUHJvZmlsZShDb25zdGFudFRhZywgUmVzdWx0VHlw
ZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQotICAgICAgICA6IG1fYml0cygobGhzLmJpdHMoKSA8PCBs
aHNSZXN1bHRUeXBlU2hpZnQpIHwgKHJocy5iaXRzKCkgPDwgcmhzUmVzdWx0VHlwZVNoaWZ0KSkK
LSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNCaXRzKGludCBtYXNrKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgJiBtYXNrOyB9Ci0gICAgdm9pZCBzZXRCaXQoaW50IG1hc2spIHsgbV9iaXRzIHw9
IG1hc2s7IH0KLQotICAgIHVpbnQzMl90IG1fYml0cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRv
IHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIg
c3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRhdGlvbiB0byBpdC4KLQogICAgIGZy
aWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIH07CiAKQEAgLTMxNCw3ICsz
NDMsOCBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2UgV1RGIHsKIAotdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpBcml0aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6VW5hcnlBcml0aFByb2ZpbGUmKTsKK3ZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6QmluYXJ5QXJpdGhQcm9maWxl
Jik7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6Ok9ic2VydmVk
VHlwZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGMwODZiOGViM2YzLi5hYzRjODBlZTk0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBA
IC00MSw2ICs0MSw3IEBAIHR5cGVzIFsKICAgICA6SlNUeXBlLAogICAgIDpKU1ZhbHVlLAogICAg
IDpMTEludENhbGxMaW5rSW5mbywKKyAgICA6UmVzdWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVz
LAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZzZXQsCkBA
IC01Nyw3ICs1OCw4IEBAIHR5cGVzIFsKIAogICAgIDpWYWx1ZVByb2ZpbGUsCiAgICAgOlZhbHVl
UHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIsCi0gICAgOkFyaXRoUHJvZmlsZSwKKyAgICA6VW5hcnlB
cml0aFByb2ZpbGUsCisgICAgOkJpbmFyeUFyaXRoUHJvZmlsZSwKICAgICA6QXJyYXlQcm9maWxl
LAogICAgIDpBcnJheUFsbG9jYXRpb25Qcm9maWxlLAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSwKQEAgLTI4MiwxMCArMjg0LDcgQEAgb3BfZ3JvdXAgOlByb2ZpbGVkQmluYXJ5T3AsCiAg
ICAgICAgIG9wZXJhbmRUeXBlczogT3BlcmFuZFR5cGVzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6
IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0aFByb2ZpbGUKLSAgICB9LAotICAgIG1ldGFk
YXRhX2luaXRpYWxpemVyczogewotICAgICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMK
KyAgICAgICAgYXJpdGhQcm9maWxlOiBCaW5hcnlBcml0aFByb2ZpbGUKICAgICB9CiAKIG9wX2dy
b3VwIDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCkBAIC0zNjcsMTMgKzM2NiwxMCBAQCBvcCA6bmVn
YXRlLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAg
IG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5k
VHlwZXMsCisgICAgICAgIHJlc3VsdFR5cGU6IFJlc3VsdFR5cGUsCiAgICAgfSwKICAgICBtZXRh
ZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6IEFyaXRoUHJvZmlsZSwKLSAgICB9LAotICAg
IG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5k
VHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBVbmFyeUFyaXRoUHJvZmlsZSwKICAgICB9CiAK
IG9wIDpub3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IDYwY2M2NWU2NDQ1Li4xNDNhMzYyYWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE0ODAsMjUgKzE0ODAsMjUgQEAgU3RydWN0
dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
KQogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9zdHViSW5mb3MuYWRkKGFjY2Vz
c1R5cGUpOwogfQogCi1KSVRBZGRJQyogQ29kZUJsb2NrOjphZGRKSVRBZGRJQyhBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSkKK0pJVEFkZElDKiBDb2RlQmxvY2s6OmFkZEpJVEFkZElDKEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fYWRkSUNz
LmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRNdWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJ
QyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJ
VE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2Nr
ZXIpLm1fbXVsSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRTdWJJQyogQ29kZUJsb2Nr
OjphZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVFN1YklDKiBDb2Rl
QmxvY2s6OmFkZEpJVFN1YklDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewog
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJl
SklURGF0YShsb2NrZXIpLm1fc3ViSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVROZWdJ
QyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJ
VE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJl
dHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9uZWdJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CkBA
IC0zMDg1LDE2ICszMDg1LDE5IEBAIGNvbnN0IEluc3RydWN0aW9uKiBDb2RlQmxvY2s6Om91dE9m
TGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQogICAgIHJldHVybiBpbnN0cnVj
dGlvbnMoKS5hdChvZmZzZXQgKyB0YXJnZXQpLnB0cigpOwogfQogCi1Bcml0aFByb2ZpbGUqIENv
ZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCBieXRlY29kZU9mZnNldCkKK0JpbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpi
aW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0IGJ5dGVjb2RlT2Zmc2V0KQogewotICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQyhpbnN0
cnVjdGlvbnMoKS5hdChieXRlY29kZU9mZnNldCkucHRyKCkpOworICAgIHJldHVybiBiaW5hcnlB
cml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZU9mZnNldCkucHRyKCkp
OwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yUEMoY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjKQorVW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6dW5hcnlBcml0
aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVj
b2RlT2Zmc2V0KQoreworICAgIHJldHVybiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGluc3RydWN0
aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KS5wdHIoKSk7Cit9CisKK0JpbmFyeUFyaXRoUHJvZmls
ZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiog
cGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewotICAgIGNhc2Ugb3BfbmVnYXRl
OgotICAgICAgICByZXR1cm4gJnBjLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YSh0aGlzKS5tX2Fy
aXRoUHJvZmlsZTsKICAgICBjYXNlIG9wX2FkZDoKICAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BB
ZGQ+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CiAgICAgY2FzZSBvcF9tdWw6CkBA
IC0zMTEwLDExICszMTEzLDIzIEBAIEFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjphcml0aFByb2Zp
bGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
K1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIHN3aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKKyAg
ICBjYXNlIG9wX25lZ2F0ZToKKyAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdhdGU+KCkubWV0
YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJvb2wgQ29kZUJsb2NrOjpjb3Vs
ZFRha2VTcGVjaWFsRmFzdENhc2UoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9m
ZnNldCkKIHsKICAgICBpZiAoIWhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBBcml0aFByb2ZpbGUqIHByb2ZpbGUgPSBhcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBw
cm9maWxlID0gYmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpOwogICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biBwcm9maWxlLT50b29rU3BlY2lhbEZhc3RQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNDIzM2VhMjFlOTQuLjJhMDM2Y2FiMzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04Myw2ICs4Myw4
IEBAIHN0cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8vIG5hbWVzcGFjZSBERkcKICNlbmRpZgogCitj
bGFzcyBVbmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNz
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U7CkBAIC05Niw3ICs5OCw2IEBAIGNsYXNzIFN0cnVjdHVy
ZVN0dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CiAKLXN0cnVjdCBB
cml0aFByb2ZpbGU7CiBzdHJ1Y3QgT3BDYXRjaDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUg
eyBEb250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwpAQCAtMjc5
LDIyICsyODAsMjIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVREYXRhJiBlbnN1cmVKSVREYXRh
U2xvdyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKTsKIAotICAgIEpJVEFkZElDKiBhZGRKSVRB
ZGRJQyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRNdWxJQyogYWRkSklUTXVsSUMoQXJpdGhQcm9m
aWxlKik7Ci0gICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJ
VFN1YklDKiBhZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqKTsKKyAgICBKSVRBZGRJQyogYWRkSklU
QWRkSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEJp
bmFyeUFyaXRoUHJvZmlsZSopOworICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhVbmFyeUFyaXRo
UHJvZmlsZSopOworICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUq
KTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUQWRkR2VuZXJhdG9y
Pjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVEFkZElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBw
cm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhwcm9maWxlKTsgfQorICAgIEpJVEFkZElDKiBh
ZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJ
Qyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5h
bWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRN
dWxHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTXVsSUMqIGFkZE1hdGhJQyhBcml0
aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CisgICAg
SklUTXVsSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJu
IGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJh
dG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5l
cmF0b3IsIEpJVE5lZ0dlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBKSVROZWdJQyogYWRk
TWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTmVnSUMocHJvZmls
ZSk7IH0KKyAgICBKSVROZWdJQyogYWRkTWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxl
KSB7IHJldHVybiBhZGRKSVROZWdJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3NhbWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklU
U3ViSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1
YklDKHByb2ZpbGUpOyB9CisgICAgSklUU3ViSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2Zp
bGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CiAKICAgICBTdHJ1
Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNjZXNzVHlwZSk7CiAKQEAgLTQ5Miw4ICs0OTMs
MTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFj
aE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMTEludENhbGxMaW5rSW5mbyhjb25zdCBGdW5j
dG9yJik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpOwotICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICBCaW5hcnlB
cml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpOworICAgIFVuYXJ5QXJpdGhQcm9maWxl
KiB1bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgYnl0ZWNvZGVPZmZzZXQpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJp
dGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICBVbmFyeUFyaXRoUHJvZmls
ZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiopOwogCiAgICAgYm9v
bCBjb3VsZFRha2VTcGVjaWFsRmFzdENhc2UoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRl
Y29kZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDlh
Yjc3MTM3YWE2Li5kNDFjZmMxMmI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0
cy5oCkBAIC0yMzYsNiArMjM2LDE4IEBAIHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1CiAgICAgfQog
fTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UmVzdWx0VHlwZSwg
c2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoUmVzdWx0VHlwZSkgIT0gc2l6ZSwgc3RkOjp0
cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihSZXN1bHRUeXBlKSA9PSBzaXplb2YodWludDhfdCkpOworICAgIHVzaW5nIEJh
c2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUmVzdWx0
VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjaGVjayh0eXBlLmJpdHMoKSk7IH0KKworICAgIHN0
YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUmVzdWx0VHlwZSB0eXBlKSB7
IHJldHVybiBCYXNlOjpjb252ZXJ0KHR5cGUuYml0cygpKTsgfQorCisgICAgc3RhdGljIFJlc3Vs
dFR5cGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIHR5cGUpIHsgcmV0dXJuIFJl
c3VsdFR5cGUoQmFzZTo6Y29udmVydCh0eXBlKSk7IH0KK307CisKIHRlbXBsYXRlPE9wY29kZVNp
emUgc2l6ZT4KIHN0cnVjdCBGaXRzPE9wZXJhbmRUeXBlcywgc2l6ZSwgc3RkOjplbmFibGVfaWZf
dDxzaXplb2YoT3BlcmFuZFR5cGVzKSAhPSBzaXplLCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kVHlwZXMpID09IHNpemVvZih1aW50MTZfdCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDdlM2NjOTRmYTQ2Li5lMDI3NzY5YTBj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcApAQCAtNjYsMTAgKzY2LDE2IEBAIHZv
aWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVs
cGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAot
ICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5hcml0aFByb2ZpbGUtPmVt
aXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICBj
YXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmls
ZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwog
ICAgICAgICByZXR1cm47Ci0gICAgfSB9CisgICAgfQorCisgICAgY2FzZSBCaW5hcnlBcml0aFBy
b2ZpbGVSZWFkeTogeworICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVS
ZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQpAQCAtOTQsMTAgKzEwMCwxNiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6
OnJlcG9ydFZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBjYXNlIEFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUuYXJpdGhQcm9maWxlLT5vYnNl
cnZlUmVzdWx0KHZhbHVlKTsKKyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAg
ICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdCh2YWx1ZSk7CiAgICAgICAg
IHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAgICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJl
YWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKaW5kZXggYjVlODRiMTMz
N2UuLjA0NDE1MDEzOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKQEAgLTM1LDEwICsz
NSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7Citj
bGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBDQ2FsbEhlbHBlcnM7CiBjbGFzcyBDb2Rl
QmxvY2s7CiBjbGFzcyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTsKLXN0cnVjdCBBcml0aFBy
b2ZpbGU7CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiBjbGFzcyBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlIHsKQEAgLTU2LDEyICs1NywyMSBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9Ci0gICAgCi0gICAgTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZShBcml0aFByb2ZpbGUqIHByb2ZpbGUpCisKKyAgICBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKQorICAgIHsKKyAg
ICAgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAgICAgICAgIG1fa2luZCA9IFVuYXJ5QXJpdGhQcm9m
aWxlUmVhZHk7CisgICAgICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2tpbmQgPSBOb25lOworICAgIH0KKworICAgIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKQog
ICAgIHsKICAgICAgICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgIG1fa2luZCA9IEFyaXRo
UHJvZmlsZVJlYWR5OwotICAgICAgICAgICAgdS5hcml0aFByb2ZpbGUgPSBwcm9maWxlOworICAg
ICAgICAgICAgbV9raW5kID0gQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk7CisgICAgICAgICAgICB1
LmJpbmFyeUFyaXRoUHJvZmlsZSA9IHByb2ZpbGU7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgbV9raW5kID0gTm9uZTsKICAgICB9CkBAIC03OCwxNCArODgsMTYgQEAgcHJpdmF0ZToKICAg
ICBlbnVtIEtpbmQgewogICAgICAgICBOb25lLAogICAgICAgICBSZWFkeSwKLSAgICAgICAgQXJp
dGhQcm9maWxlUmVhZHksCisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHksCisgICAgICAg
IEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAogICAgICAgICBMYXp5T3BlcmFuZAogICAgIH07CiAg
ICAgCiAgICAgS2luZCBtX2tpbmQ7CiAgICAgdW5pb24gewogICAgICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGU7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlOworICAgICAgICBV
bmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlOwogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZTc5MTRhYTQ3YzUuLmI3YTRhYTNkMWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtMTY2NSwxNCArMTY2NSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE1vdmUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAg
ICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRV
bmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNy
YywgT3BlcmFuZFR5cGVzIHR5cGVzKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNyYywgUmVzdWx0VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBj
YXNlIG9wX25vdDoKICAgICAgICAgZW1pdFVuYXJ5T3A8T3BOb3Q+KGRzdCwgc3JjKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBvcF9uZWdhdGU6Ci0gICAgICAgIE9wTmVnYXRlOjplbWl0KHRo
aXMsIGRzdCwgc3JjLCB0eXBlcyk7CisgICAgICAgIE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwg
c3JjLCB0eXBlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9iaXRub3Q6CiAgICAgICAg
IGVtaXRVbmFyeU9wPE9wQml0bm90Pihkc3QsIHNyYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNDE5N2Fi
YzEyZTUuLjM4ZTc3Y2RiMTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC02ODIsNyArNjgyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZHN0OwogICAgICAgICB9CiAKLSAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdFVuYXJ5T3AoT3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5h
cnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIFJlc3VsdFR5
cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJpbmFyeU9wPgogICAgICAgICBzdGQ6
OmVuYWJsZV9pZl90PApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDY1OTM3ZjMxOWJlLi5lNDgxYTRmMWUxMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtMjEzNiw3ICsyMTM2LDcgQEAgUmVnaXN0ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogewogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0
aW9uKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpLCBPcGVyYW5kVHlwZXMobV9l
eHByLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbmFy
eU9wKG9wY29kZUlEKCksIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQo
KSwgbV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gVW5hcnlQbHVzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCA2NjEwMTNhODc3Ny4uMWZlNGRiZTgwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC05NDIsNTYgKzk0Miw2MCBA
QCBwcml2YXRlOgogICAgICAgICBpZiAoIWlzWDg2KCkgJiYgKG5vZGUtPm9wKCkgPT0gQXJpdGhN
b2QgfHwgbm9kZS0+b3AoKSA9PSBWYWx1ZU1vZCkpCiAgICAgICAgICAgICByZXR1cm4gbm9kZTsK
IAotICAgICAgICB7Ci0gICAgICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQobV9jdXJyZW50SW5kZXgpOwotICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZSkgewot
ICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAgIGNh
c2UgQXJpdGhBZGQ6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aFN1YjoKLSAgICAgICAgICAg
ICAgICBjYXNlIFZhbHVlQWRkOgotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxl
LT5kaWRPYnNlcnZlRG91YmxlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJn
ZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0lu
dFJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVNdWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0
aE11bDogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
SW50NTJPdmVyZmxvdygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMklu
QmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVS
ZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
Tm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhO
b2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJp
dGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhc2UgVmFs
dWVOZWdhdGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aE5lZ2F0ZTogewotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIo
KSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgp
IHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJn
ZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFj
a1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cp
KQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZs
b3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxl
LT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7CisgICAgICAgIGNhc2UgQXJpdGhBZGQ6CisgICAgICAgIGNhc2UgQXJpdGhTdWI6
CisgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKKyAgICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5iaW5h
cnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCk7CisgICAgICAg
ICAgICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAg
ICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAg
IGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOb25OdW1lcmljKCkpCisgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAg
ICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAg
ICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBWYWx1ZU11bDoKKyAgICAgICAgY2Fz
ZSBBcml0aE11bDogeworICAgICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgIGlmICghYXJp
dGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGFyaXRo
UHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSkKKyAgICAgICAgICAgICAgICBub2Rl
LT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDUyKTsKKyAgICAgICAgICAgIGlmIChhcml0
aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2Vs
aW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91
YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxl
LT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6CisgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6
IHsKKyAgICAgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQobV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5hcmdP
YnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3Vi
bGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91Ymxl
UmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJv
RG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJn
ZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGlu
ZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygp
KQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmlj
UmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQo
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVz
dWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1
cnJlbnRJbmRleCkpIHsKQEAgLTEwMzQsNyArMTAzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IEZJWE1FOiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBtYWtlIHRoaXMgbW9yZSBncmFudWxhci4K
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUg
fCBOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwogICAgICAgICAKLSAgICAgICAgQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudElu
ZGV4KTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQogICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggOWQ1YjdkOTMzN2MuLjRjNmQx
MDk5YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTY1Miw3
ICsxNjUyLDkgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihOb2RlKiBjdXJyZW4KICAgICAgICAgICAgICAgICByZXR1
cm4gJnByb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpOwogCiAgICAgICAgICAgICBpZiAocHJvZmls
ZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAgICAgIGlm
IChBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAg
ICAgICAgICAgICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxv
Y2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICAgICAgICAgIGlmIChVbmFyeUFyaXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmls
ZWRCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChub2RlLT5vcmlnaW4u
c2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA5ZDAzOGI1ZjMyYy4uZjYzMmQxMTY0
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC00MDAwLDcgKzQwMDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVBZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBt
X2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Cisg
ICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+
YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAg
SklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVEFkZElDKGFyaXRoUHJv
ZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZE9w
dGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVB
ZGQ7CkBAIC00MDI0LDcgKzQwMjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVTdWIoTm9kZSogbm9kZSkKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2Nr
ID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwogICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFz
ZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlSW5kZXgpOwogICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+
YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rp
b24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hp
bmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwpAQCAtNDYxOCw3ICs0NjE4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUqIG5vZGUpCiB7CiAgICAg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2Rl
QmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTmVnSUMqIG5lZ0lDID0gbV9qaXQuY29k
ZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5n
RnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplOwogICAgIGF1dG8gbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7CkBAIC00ODQxLDcgKzQ4NDEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwoTm9kZSogbm9kZSkKIAog
ICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5l
Q29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9q
aXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplOwogICAgIGF1dG8gbm9u
UmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYTNiODRkNjM3OTguLjkzOGRj
ODcwMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCkBAIC0yMTA3LDcgKzIxMDcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hp
bmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9u
UmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7CiAgICAgICAgIGNvbXBpbGVC
aW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5j
dGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTIxMjYsNyArMjEyNiw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUu
Z3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAg
ICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0
ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2Vs
aW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4
KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRl
eCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJP
cHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25W
YWx1ZVN1YjsKICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+KGFy
aXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpA
QCAtMjE0NSw3ICsyMTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2Vs
aW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBt
X25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplOwogICAgICAgICBhdXRvIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVsOwogICAgICAgICBjb21waWxlQmluYXJ5
TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24s
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTUzLDcgKzIxNTMsNyBAQCBwcml2YXRlOgog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVu
YW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19m
dW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVl
ICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46
OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21waWxlVW5hcnlNYXRoSUMoQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRj
aGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGlsZVVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKIApA
QCAtMjIzOSw3ICsyMjM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBH
ZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBlbmFtZSBGdW5jMiwKICAgICAgICAgdHlwZW5h
bWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1v
dmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+Ojp0eXBlPjo6dmFsdWU+PgotICAgIHZvaWQg
Y29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVw
YXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCisgICAgdm9pZCBj
b21waWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5j
MSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7
CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIApAQCAtMjQwNiw3ICsyNDA2
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
ayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hp
bmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CiAgICAgICAgICAgICBhdXRv
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwogICAgICAgICAgICAg
Y29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRj
aGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMzA3Miw3ICszMDcyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgg
PSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1
bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25S
ZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZTsKICAgICAgICAgY29tcGls
ZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVu
Y3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCA0MjdlOWFlZGY1OS4uMGQyMmZkMGMyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAt
OTE5LDcgKzkxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBJdCB3aWxsIGdpdmUg
dGhlIHNsb3cgcGF0aCB0aGUgc2FtZSB2YWx1ZSByZWFkIGJ5IHRoZSBmYXN0IHBhdGguCiAgICAg
ICAgIEdldFB1dEluZm8gY29waWVkR2V0UHV0SW5mbyhPcFB1dFRvU2NvcGUpOwogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLSAgICAgICAgQXJpdGhQcm9maWxlIGNvcGllZEFy
aXRoUHJvZmlsZShCaW5hcnlPcCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBjb3BpZWRB
cml0aFByb2ZpbGUoQmluYXJ5T3ApOwogCiAgICAgICAgIEludGVycHJldGVyKiBtX2ludGVycHJl
dGVyOwogCkBAIC05MzksNyArOTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3Rv
cjxTd2l0Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7CiAKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwg
dW5zaWduZWQ+IG1fY29waWVkR2V0UHV0SW5mb3M7Ci0gICAgICAgIEhhc2hNYXA8dWludDY0X3Qs
IEFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0aFByb2ZpbGVzOworICAgICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBCaW5hcnlBcml0aFByb2ZpbGU+IG1fY29waWVkQXJpdGhQcm9maWxlczsKIAogICAg
ICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNoZWNrczsKICAgICAgICAgSnVtcExpc3QgbV9leGNl
cHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKaW5kZXggNjI3YWYyNzg3ZTAuLjc0MGIyZWQ4YmQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBA
IC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1
bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0
aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3Qg
QmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0
byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBl
KCkud2l0aEludDMyKCk7CkBAIC03Myw3ICs3Myw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBK
SVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNH
CiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsK
IH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRBZGRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBj
b25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAg
ICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCmluZGV4IDRkYzM0YTJmNWI2Li42
NzVjZjkzYzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRv
ci5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVy
YW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3JpZ2h0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAg
ICAgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVs
cGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAg
IGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlz
dCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBK
SVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBn
ZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVu
ZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25z
dCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAg
c3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVm
dE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0K
ICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJh
bmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiByaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50
MzIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1l
dGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5k
ZXggZjQyMGFlOTlkMGUuLmYzYzcxYTk3N2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1f
YXJpdGhQcm9maWxlOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9h
cml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMqIG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJ
VE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4o
bmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwpAQCAtNjMzLDE0ICs2MzMsOSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQp
OwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBPcGVyYW5kVHlwZXMgZ2V0T3BlcmFuZFR5cGVz
KGNvbnN0IEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQotewotICAgIHJldHVybiBPcGVyYW5k
VHlwZXMoYXJpdGhQcm9maWxlLmxoc1Jlc3VsdFR5cGUoKSwgYXJpdGhQcm9maWxlLnJoc1Jlc3Vs
dFR5cGUoKSk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
JmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1f
YXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJp
dGhQcm9maWxlOwogICAgIEpJVEFkZElDKiBhZGRJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJ
Qyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudElu
c3RydWN0aW9uLCBhZGRJQyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BBZGQ+KGFkZElDLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVl
QWRkKTsKQEAgLTY4NSw3ICs2ODAsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5h
cnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogYwogCiAgICAg
Ym9vbCBnZW5lcmF0ZWRJbmxpbmVDb2RlID0gbWF0aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywg
bWF0aElDR2VuZXJhdGlvblN0YXRlKTsKICAgICBpZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsK
LSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5h
cml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1
bmN0aW9uLCByZXN1bHRSZWdzLCBzcmNSZWdzLCBhcml0aFByb2ZpbGUpOwogICAgICAgICBlbHNl
CkBAIC03MDgsNyArNzAzLDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5l
cmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE4KIHZvaWQgSklUOjpl
bWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVk
RnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBPcGVy
YW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY29waWVkQXJpdGhQcm9maWxlKGJ5dGVj
b2RlKSk7CiAgICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGlu
dCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUu
bV9yaHMub2Zmc2V0KCk7CkBAIC03MjcsOCArNzIxLDggQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNG
YXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9u
KgogICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gZnBSZWdUMjsKICNlbmRpZgogCi0gICAgU25pcHBl
dE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMuZmlyc3QoKSk7Ci0gICAgU25pcHBldE9wZXJhbmQg
cmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3Bl
cmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5maXJzdCgpKTsKKyAgICBTbmlwcGV0T3BlcmFu
ZCByaWdodE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuc2Vjb25kKCkpOwogCiAgICAg
aWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkpCiAgICAgICAgIGxlZnRPcGVyYW5kLnNldENv
bnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSkpOwpAQCAtNzU4LDcgKzc1Miw3IEBA
IHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0
aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIob3AxLCBsZWZ0UmVncyk7CiAgICAgICAgIGVsc2UgaWYgKHJpZ2h0T3BlcmFuZC5pc0NvbnN0
KCkpCiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmlnaHRSZWdzKTsK
LSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+
YXJpdGhQcm9maWxlKCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFBy
b2ZpbGluZygpKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQocHJvZmlsZWRG
dW5jdGlvbiwgcmVzdWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncywgYXJpdGhQcm9maWxlKTsK
ICAgICAgICAgZWxzZQpAQCAtNzk4LDcgKzc5Miw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xv
dyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBj
CiAgICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKICNlbmRpZgogCi0gICAgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIFVuYXJ5
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOwogICAg
IGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGlm
IChtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2hvdWxkU2xvd1BhdGhSZXBhdGNoKQogICAgICAgICAg
ICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb25XaXRo
UmVzdWx0KHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRUpNaWM+KHByb2ZpbGVkUmVw
YXRjaEZ1bmN0aW9uKSwgcmVzdWx0UmVncywgc3JjUmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMp
KTsKQEAgLTgzMCw3ICs4MjQsNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5
TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgbWF0aElD
R2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogCiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgT3BlcmFuZFR5cGVzIHR5
cGVzID0gZ2V0T3BlcmFuZFR5cGVzKGNvcGllZEFyaXRoUHJvZmlsZShieXRlY29kZSkpOwogICAg
IGludCByZXN1bHQgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0
ZWNvZGUubV9saHMub2Zmc2V0KCk7CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNl
dCgpOwpAQCAtODQ1LDggKzgzOCw4IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5h
cnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gbGVmdFJlZ3M7CiAjZW5kaWYKICAgICAKLSAgICBTbmlwcGV0
T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCBy
aWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVy
YW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5k
IHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBp
ZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29u
c3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC04NjQsNyArODU3LDcgQEAg
dm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRo
SUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7
CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0
aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJ
Qy0+YXJpdGhQcm9maWxlKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpIHsKICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93
UGF0aFJlcGF0Y2gpCiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQoYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9u
X0VKSk1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBsZWZ0UmVncywg
cmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwpAQCAtODkyLDE5ICs4ODUsMTYgQEAg
dm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRo
SUMsIGNvbnN0IEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BEaXY+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0
Lm9mZnNldCgpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBp
bnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRo
UHJvZmlsZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7
CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEpOwogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHJlZ1QyOwogI2Vsc2UKLSAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMo
bWV0YWRhdGEubV9hcml0aFByb2ZpbGUpOwogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSBKU1Zh
bHVlUmVncyhyZWdUMywgcmVnVDIpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0
UmVnczsKQEAgLTkxMiwxMiArOTAyLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiAgICAgRlBSUmVnIHNjcmF0
Y2hGUFIgPSBmcFJlZ1QyOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxs
cHRyOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbnVsbHB0cjsKICAg
ICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICBhcml0aFByb2ZpbGUgPSAmY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcERpdj4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0
aFByb2ZpbGU7CiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgp
KTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAg
IFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0
KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRU
eXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAg
ICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3Ax
KSk7CkBAIC05NTksNyArOTQ5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0X29wX211bChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BNdWw+KCkubWV0YWRhdGEo
bV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BNdWw+KCkubWV0YWRhdGEobV9j
b2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE11bElDKiBtdWxJQyA9IG1fY29kZUJs
b2NrLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJ
Qy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBtdWxJQyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BN
dWw+KG11bElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQs
IG9wZXJhdGlvblZhbHVlTXVsKTsKQEAgLTk3NSw3ICs5NjUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRo
UHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJv
ZmlsZTsKICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2NvZGVCbG9jay0+YWRkSklUU3ViSUMoYXJp
dGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVj
dGlvbiwgc3ViSUMpOwogICAgIGVtaXRNYXRoSUNGYXN0PE9wU3ViPihzdWJJQywgY3VycmVudElu
c3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1Yik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKaW5kZXgg
NjZlMWJlMTRhOGQuLmI4YzQ3OTg2ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVREaXZHZW5lcmF0b3IuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBKSVREaXZHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgbm90RG91Ymxl
WmVyby5saW5rKCZqaXQpOwogI2VuZGlmCiAgICAgaWYgKG1fYXJpdGhQcm9maWxlKQotICAgICAg
ICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6OnNwZWNp
YWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9m
aWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpzcGVjaWFsRmFzdFBhdGhCaXQpLCBDQ2Fs
bEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhtX2FyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygp
KSk7CiAgICAgaml0LmJveERvdWJsZShtX2xlZnRGUFIsIG1fcmVzdWx0KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKaW5kZXggODM5NjY3Nzk0M2Yu
LjcwOGRiMTBkNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERp
dkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJh
dG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIEpJVERpdkdlbmVyYXRvcihTbmlw
cGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCwgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kLAogICAg
ICAgICBKU1ZhbHVlUmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIGxlZnQsIEpTVmFsdWVSZWdzIHJp
Z2h0LAogICAgICAgICBGUFJSZWcgbGVmdEZQUiwgRlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2Ny
YXRjaEdQUiwgRlBSUmVnIHNjcmF0Y2hGUFIsCi0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbnVsbHB0cikKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBudWxscHRyKQogICAgICAgICA6IG1fbGVmdE9wZXJhbmQobGVmdE9wZXJhbmQpCiAgICAg
ICAgICwgbV9yaWdodE9wZXJhbmQocmlnaHRPcGVyYW5kKQogICAgICAgICAsIG1fcmVzdWx0KHJl
c3VsdCkKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9zY3JhdGNoR1BS
OwogICAgIEZQUlJlZyBtX3NjcmF0Y2hGUFI7CiAgICAgYm9vbCBtX2RpZEVtaXRGYXN0UGF0aCB7
IGZhbHNlIH07Ci0gICAgQXJpdGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlB
cml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOwogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dCBtX2VuZEp1bXBMaXN0OwogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbV9zbG93UGF0aEp1
bXBMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAzOTU5Yjhk
NTA4OC4uNTdhODFlYzc5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CkBAIC03MTcsMTMgKzcxNywxMyBAQCBBTFdBWVNfSU5MSU5FIEdldFB1dEluZm8gSklUOjpjb3Bp
ZWRHZXRQdXRJbmZvKE9wUHV0VG9TY29wZSBieXRlY29kZSkKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQmluYXJ5T3A+Ci1BTFdBWVNfSU5MSU5FIEFyaXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRo
UHJvZmlsZShCaW5hcnlPcCBieXRlY29kZSkKK0FMV0FZU19JTkxJTkUgQmluYXJ5QXJpdGhQcm9m
aWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVjb2RlKQogewogICAgIHVp
bnQ2NF90IGtleSA9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4oQmluYXJ5T3A6Om9wY29kZUlEKSAr
IDEpIDw8IDMyIHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ5dGVjb2RlLm1fbWV0YWRhdGFJRCk7
CiAgICAgYXV0byBpdGVyYXRvciA9IG1fY29waWVkQXJpdGhQcm9maWxlcy5maW5kKGtleSk7CiAg
ICAgaWYgKGl0ZXJhdG9yICE9IG1fY29waWVkQXJpdGhQcm9maWxlcy5lbmQoKSkKICAgICAgICAg
cmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLSAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlID0g
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
aykubV9hcml0aFByb2ZpbGU7CiAgICAgbV9jb3BpZWRBcml0aFByb2ZpbGVzLmFkZChrZXksIGFy
aXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE1hdGhJQy5oCmluZGV4IDU2NDVlNDJkZWZmLi44NDY0NjIyYTZkOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCkBAIC01MiwxMSArNTIsMTEgQEAgc3RydWN0
IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSB7CiAKICNkZWZpbmUgRU5BQkxFX01BVEhfSUNfU1RBVFMg
MAogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1w
dHkpKEFyaXRoUHJvZmlsZSYpPgordGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGUsIHR5
cGVuYW1lIEFyaXRoUHJvZmlsZVR5cGU+CiBjbGFzcyBKSVRNYXRoSUMgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEpJVE1hdGhJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKKyAgICBKSVRNYXRoSUMoQXJpdGhQcm9maWxlVHlwZSogYXJpdGhQcm9maWxl
KQogICAgICAgICA6IG1fYXJpdGhQcm9maWxlKGFyaXRoUHJvZmlsZSkKICAgICB7CiAgICAgfQpA
QCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQu
bV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKTsKIAogICAgICAgICBpZiAobV9hcml0aFBy
b2ZpbGUpIHsKLSAgICAgICAgICAgIGlmIChpc1Byb2ZpbGVFbXB0eSgqbV9hcml0aFByb2ZpbGUp
KSB7CisgICAgICAgICAgICBpZiAobV9hcml0aFByb2ZpbGUtPmlzT2JzZXJ2ZWRUeXBlRW1wdHko
KSkgewogICAgICAgICAgICAgICAgIC8vIEl0IGxvb2tzIGxpa2UgdGhlIE1hdGhJQyBoYXMgeWV0
IHRvIGV4ZWN1dGUuIFdlIGRvbid0IHdhbnQgdG8gZW1pdCBjb2RlIGluIHRoaXMKICAgICAgICAg
ICAgICAgICAvLyBjYXNlIGZvciBhIGNvdXBsZSByZWFzb25zLiBGaXJzdCwgdGhlIG9wZXJhdGlv
biBtYXkgbmV2ZXIgZXhlY3V0ZSwgc28gaWYgd2UgZG9uJ3QgZW1pdAogICAgICAgICAgICAgICAg
IC8vIGNvZGUsIGl0J3MgYSB3aW4uIFNlY29uZCwgaWYgdGhlIG9wZXJhdGlvbiBkb2VzIGV4ZWN1
dGUsIHdlIGNhbiBlbWl0IGJldHRlciBjb2RlCkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgog
ICAgICAgICBtX3Nsb3dQYXRoU3RhcnRMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihzdGF0ZS5zbG93UGF0aFN0YXJ0KTsKICAgICB9CiAKLSAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJpdGhQcm9maWxlOyB9
CisgICAgQXJpdGhQcm9maWxlVHlwZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9h
cml0aFByb2ZpbGU7IH0KIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgIHNpemVfdCBt
X2dlbmVyYXRlZENvZGVTaXplIHsgMCB9OwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAg
ICB9CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZSogbV9hcml0aFByb2ZpbGU7CisgICAgQXJp
dGhQcm9maWxlVHlwZSogbV9hcml0aFByb2ZpbGU7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2NvZGU7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJ
bnRlcm5hbFB0clRhZz4gbV9pbmxpbmVTdGFydDsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPiBtX2lubGluZUVuZDsKQEAgLTI0NiwxNSArMjQ2LDE1IEBAIHB1YmxpYzoK
ICAgICBHZW5lcmF0b3JUeXBlIG1fZ2VuZXJhdG9yOwogfTsKIAotaW5saW5lIGJvb2wgaXNCaW5h
cnlQcm9maWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCitpbmxpbmUgYm9vbCBp
c0JpbmFyeVByb2ZpbGVFbXB0eShCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKIHsK
ICAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSB8fCBh
cml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOwogfQogdGVtcGxhdGUgPHR5
cGVuYW1lIEdlbmVyYXRvclR5cGU+Ci1jbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklU
TWF0aElDPEdlbmVyYXRvclR5cGUsIGlzQmluYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRC
aW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRo
UHJvZmlsZT4gewogcHVibGljOgotICAgIEpJVEJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQ
cm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkKKyAgICBKSVRCaW5hcnlNYXRoSUMoQmluYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5
cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4oYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CiB9OwpA
QCAtMjY0LDE1ICsyNjQsMTUgQEAgdHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUTXVsR2VuZXJh
dG9yPiBKSVRNdWxJQzsKIHR5cGVkZWYgSklUQmluYXJ5TWF0aElDPEpJVFN1YkdlbmVyYXRvcj4g
SklUU3ViSUM7CiAKIAotaW5saW5lIGJvb2wgaXNVbmFyeVByb2ZpbGVFbXB0eShBcml0aFByb2Zp
bGUmIGFyaXRoUHJvZmlsZSkKK2lubGluZSBib29sIGlzVW5hcnlQcm9maWxlRW1wdHkoQmluYXJ5
QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZS5s
aHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJh
dG9yVHlwZT4KLWNsYXNzIEpJVFVuYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0
b3JUeXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRVbmFyeU1hdGhJQyA6IHB1
YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgVW5hcnlBcml0aFByb2ZpbGU+IHsKIHB1Ymxp
YzoKLSAgICBKSVRVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAg
ICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0eT4oYXJpdGhQ
cm9maWxlKQorICAgIEpJVFVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVuYXJ5QXJpdGhQcm9maWxl
Pihhcml0aFByb2ZpbGUpCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKaW5kZXggODNkMjkzYjYyNTIuLmNmNmJhYTUyZjYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1
bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0
aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3Qg
QmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0
byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBl
KCkud2l0aEludDMyKCk7CkBAIC04OSw3ICs4OSw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBK
SVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNH
CiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsK
IH0KIAotYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRNdWxHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBj
b25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAg
ICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsKQEAgLTIwNSwx
OCArMjA1LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxs
SGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAKICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIG5vdE5lZ2F0aXZlWmVybyA9IGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6Ok5v
dEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0
KG5lZ2F0aXZlWmVyb0JpdHMpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBq
aXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5l
Z1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUt
PmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGpp
dC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAg
IGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVn
WmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+
YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAg
ICAgICAgaml0Lm1vdmUobV9yZXN1bHQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hHUFIpOwogICAg
ICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUyKSwgbV9zY3JhdGNoR1BS
KTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6SW1tMzIoMHg3ZmYpLCBtX3NjcmF0
Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9JbnQ1Mk92ZXJmbG93ID0gaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW5PckVxdWFsLCBtX3NjcmF0Y2hHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMxKSk7CiAKLSAgICAgICAgaml0Lm9yMzIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0Nh
bGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkp
KTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJp
dGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgbm9JbnQ1Mk92ZXJmbG93
LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwpAQCAtMjI3LDE4ICsyMjcs
MTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmFw
cGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1bHQucGF5bG9h
ZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOwogICAgICAgICBub3ROZWdh
dGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jl
c3VsdC50YWdHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobmVnYXRpdmVaZXJvQml0
cyA+PiAzMikpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRk
cmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3Vi
bGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NP
ZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7
CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJs
ZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09m
Qml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJp
bmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAgICAgICAgaml0
Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC51cnNo
aWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIgLSAzMiksIG1fc2NyYXRjaEdQUik7CiAgICAg
ICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3JhdGNoR1BSKTsK
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGppdC5icmFuY2gz
MihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogICAgICAgICAKLSAgICAgICAgaml0Lm9yMzIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0Nh
bGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkp
KTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJp
dGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAgICBlbmRKdW1wTGlzdC5h
cHBlbmQobm9JbnQ1Mk92ZXJmbG93KTsKICAgICAgICAgaWYgKG1fc2NyYXRjaEdQUiA9PSBtX3Jl
c3VsdC50YWdHUFIoKSB8fCBtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKaW5kZXggMzZkMjZl
YTEyNGUuLjYwODc3OTY2ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE11bEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVs
R2VuZXJhdG9yLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIW1f
bGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9wZXJhbmQuaXNQ
b3NpdGl2ZUNvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0
IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNv
bnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBl
cnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVt
aXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShD
Q2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5hcnlBcml0aFBy
b2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNs
b3dKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNu
aXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5pc1Bvc2l0aXZl
Q29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0
YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRPcGVyYW5kLmlz
UG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TmVnR2VuZXJhdG9yLmNwcAppbmRleCA5MmMyOWRkNjMwYS4uY2VlYmUzOTA5NGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdH
ZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0
aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE1h
dGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVs
cGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBVbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52
YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BS
KCkpOwpAQCAtNDUsNyArNDUsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJh
dG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIC8vIFdl
IGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIG9ic2VydmVk
VHlwZXMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKICAgICBpZiAoYXJpdGhQcm9maWxl
KQotICAgICAgICBvYnNlcnZlZFR5cGVzID0gYXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUo
KTsKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+YXJnT2JzZXJ2ZWRUeXBl
KCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghb2JzZXJ2ZWRUeXBlcy5pc0VtcHR5KCksICJX
ZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2VuZXJhdGUgYW55dGhpbmcgaWYgd2UgZG8gbm90IGhh
dmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYgKG9ic2VydmVkVHlwZXMuaXNPbmx5Tm9uTnVtYmVy
KCkpCkBAIC04Miw3ICs4Miw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0
b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJu
IEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBK
SVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxs
SGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBz
bG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBz
aG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0
LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAg
ICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwogICAgIEFTU0VS
VChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKQEAgLTExNyw3ICsxMTcs
NyBAQCBib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMm
IGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogI2VuZGlmCiAgICAgLy8gVGhlIGZsYWdzIG9m
IEFyaXRoTmVnYXRlIGFyZSBiYXNpYyBpbiBERkcuCiAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGtu
b3cgaWYgd2UgZXZlciBwcm9kdWNlZCBhIG51bWJlci4KLSAgICBpZiAoc2hvdWxkRW1pdFByb2Zp
bGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCku
c2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgIGlm
IChzaG91bGRFbWl0UHJvZmlsaW5nICYmIGFyaXRoUHJvZmlsZSAmJiAhYXJpdGhQcm9maWxlLT5h
cmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSAmJiAhYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
RG91YmxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFNldERvdWJsZShqaXQpOwogICAg
IHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVROZWdHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJh
dG9yLmgKaW5kZXggOGEwYzJkNTE3ZDYuLjc4N2I3MDc2ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgog
ICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgIHsgfQogCi0gICAgSklUTWF0
aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVy
YXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0
UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9m
aWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1
bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwg
Y29uc3QgVW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVs
cGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxl
KiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogcHJpdmF0ZToKICAgICBKU1ZhbHVlUmVn
cyBtX3Jlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IDYzOTQ2M2M5OWU5Li4xODc5NDU5ZGIzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNTU0LDcgKzI1NTQsNyBAQCBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkQWRkKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGQoZXhlYywgb3Ax
LCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmls
ZWRBZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKK0FMV0FZU19J
TkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkQWRkKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmlu
YXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTI1NzQs
NyArMjU3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVB
ZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlCiAgICAgcmV0dXJuIHVucHJvZmls
ZWRBZGQoZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJu
IHByb2ZpbGVkQWRkKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUp
OwpAQCAtMjU4OCw3ICsyNTg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLAogICAgIEpTVmFs
dWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogICAgIEpTVmFsdWUgb3AyID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZSk7CiAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKICAg
ICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09w
dGltaXplOwpAQCAtMjYwOSw3ICsyNjA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJp
dGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJ
Qy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJu
IHByb2ZpbGVkQWRkKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUp
OwogfQpAQCAtMjYyMyw3ICsyNjIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEoKICAgICBK
U1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAogICAgIGF1dG8gbm9u
T3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGROb09wdGltaXplOwotICAgIGlmIChB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBp
ZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxl
KCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAg
ICAgYWRkSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGV4ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6
ZVZhcmlhbnQpOwogCkBAIC0yNjU1LDcgKzI2NTUsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkTXVsKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNdWwoZXhlYywgb3AxLCBvcDIpKTsKIH0K
IAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRNdWwoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhT
QW5kUkhTVHlwZXMgPSB0cnVlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
cHJvZmlsZWRNdWwoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmls
ZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtMjY5Myw3ICsyNjkzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZU11bE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEoKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgIGF1dG8gbm9uT3B0aW1p
emVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplOwotICAgIGlmIChBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCkpCiAg
ICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgbXVsSUMtPmdlbmVy
YXRlT3V0T2ZMaW5lKGV4ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBA
IC0yNzA0LDcgKzI3MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlTXVsT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSgogICAgIHJldHVybiB1
bnByb2ZpbGVkTXVsKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yNzE4LDcgKzI3MTgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmls
ZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFT
U0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7
CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVk
Tm9PcHRpbWl6ZTsKQEAgLTI3MzYsNyArMjczNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVj
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMt
PmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
bXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJl
dHVybiBwcm9maWxlZE11bChleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9m
aWxlKTsKIH0KQEAgLTI3NjAsMTQgKzI3NjAsMTQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgdW5wcm9maWxlZE5lZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1YK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC1udW1iZXIpKTsKIH0KIAotQUxX
QVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWROZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgQXJpdGhQcm9maWxlJiBhcml0
aFByb2ZpbGUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZE5l
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFy
eUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKLSAgICBhcml0aFByb2ZpbGUub2JzZXJ2
ZUxIUyhvcGVyYW5kKTsKKyAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAg
ICAKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZXhlYyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yNzkx
LDcgKzI3OTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogICAgIHJldHVybiB1bnByb2Zp
bGVkTmVnYXRlKGV4ZWMsIG9wZXJhbmQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBvcGVyYW5kLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVk
TmVnYXRlKGV4ZWMsIG9wZXJhbmQsICphcml0aFByb2ZpbGUpOwpAQCAtMjgwNSw5ICsyODA1LDkg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkT3B0aW1pemUoRXhlY1N0YXRlKiBleGUKICAgICAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQ
cm9maWxlKTsKLSAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgYXJp
dGhQcm9maWxlLT5vYnNlcnZlQXJnKG9wZXJhbmQpOwogICAgIG5lZ0lDLT5nZW5lcmF0ZU91dE9m
TGluZShleGVjLT5jb2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCk7CiAK
ICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTI4MzgsOCArMjgzOCw4IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kCiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
bmVnSUMtPmFyaXRoUHJvZmlsZSgpKQotICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMo
b3BlcmFuZCk7CisgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBuZWdJ
Qy0+YXJpdGhQcm9maWxlKCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVy
YW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoZXhlYy0+Y29kZUJsb2NrKCksIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlKTsKIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpAQCAtMjg2
NSw3ICsyODY1LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9m
aWxlZFN1YihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHUKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3ViKGV4ZWMsIG9wMSwgb3AyKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0
aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMg
PSB0cnVlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRTdWIo
Vk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBi
b29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yODg4LDcgKzI4ODgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZQogICAgIHJldHVybiB1bnByb2ZpbGVkU3ViKGV4ZWMsIGVuY29k
ZWRPcDEsIGVuY29kZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQ
cm9maWxlZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogCkBAIC0yOTA0LDcgKzI5MDQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSgogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOwogCiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZVN1
Yk5vT3B0aW1pemU7Ci0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMt
PmFyaXRoUHJvZmlsZSgpKQorICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZl
TEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpKTsKICAgICBzdWJJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoZXhlYy0+Y29kZUJsb2Nr
KCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI5MjgsNyArMjkyOCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEV4
ZWNTdGF0ZSogZXhlYywKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZSk7CiAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBhdXRvIG5v
bk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGltaXplOwpA
QCAtMjk0Niw3ICsyOTQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxl
KCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQ
cm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVk
U3ViKHZtLCBleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOWRiNjczNDE5
MjMuLjNiNmFhZjA0ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaApAQCAtMzgsNiArMzgsOCBAQCB0eXBlZGVmIGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAg
ICAgCiBjbGFzcyBBcnJheUFsbG9jYXRpb25Qcm9maWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOwor
Y2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFz
cyBCdXR0ZXJmbHk7CiBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDYWxsTGlua0luZm87CkBAIC02
NCw3ICs2Niw2IEBAIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiBzdHJ1Y3QgQnlWYWxJbmZvOwogc3Ry
dWN0IElubGluZUNhbGxGcmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKLXN0cnVjdCBBcml0aFBy
b2ZpbGU7CiAKIHVzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIApAQCAtNzksNyArODAsNyBA
QCB0eXBlZGVmIGNoYXIqIFVudXNlZFB0cjsKICAgICBBOiBKU0FycmF5KgogICAgIEFhcDogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZSoKICAgICBBcDogQXJyYXlQcm9maWxlKgotICAgIEFycDogQXJp
dGhQcm9maWxlKgorICAgIEFycDogQmluYXJ5QXJpdGhQcm9maWxlKgogICAgIEI6IEJ1dHRlcmZs
eSoKICAgICBCeTogQnlWYWxJbmZvKgogICAgIEM6IEpTQ2VsbCoKQEAgLTE0NSwxMyArMTQ2LDEz
IEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9u
X0VKWikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRf
T1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkMpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBKU0NlbGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklU
T3BlcmF0aW9uX0VKQSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VBUFop
KEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCB2b2lkKiwgaW50MzJfdCk7Ci10eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkFycCkoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIEFyaXRoUHJvZmlsZSopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAo
SklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpBcnApKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlLCBCaW5hcnlBcml0aFByb2ZpbGUqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJ
VF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BF
UkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpK
X0pJVE9wZXJhdGlvbl9FSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVS
QVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkpBcCkoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBBcnJheVByb2ZpbGUqKTsK
LXR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VK
SkFycCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBBcml0aFBy
b2ZpbGUqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3Bl
cmF0aW9uX0VKSkFycCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBCaW5hcnlBcml0aFByb2ZpbGUqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVS
QVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkJ5KShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklU
X09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpKTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJ
VF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgdm9pZCopOwpAQCAtNDgyLDcgKzQ4Myw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25DaGVja0lmRXhjZXB0aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKEV4
CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3Rvciwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGQoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lO
VEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFBy
b2ZpbGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5h
cnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVBZGRQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemUo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CkBAIC00OTIsMTMgKzQ5MywxMyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZU11bE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRP
cHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lO
VEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFBy
b2ZpbGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgb3BlcmFuZCk7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3Bl
cmFuZCwgQXJpdGhQcm9maWxlKik7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFu
ZCwgVW5hcnlBcml0aFByb2ZpbGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZVN1YihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJp
dGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVT
dWJPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJ
VFN1YklDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5U
RVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAK
aW5kZXggNzk1YzI3NTg0YzAuLjdiMWE4YjgxOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
SklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBP
YnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03OCw3ICs3
OCw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRTdWJHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0
LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmls
aW5nKQorYm9vbCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3Nj
cmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBt
X2xlZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3ViR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1Ykdl
bmVyYXRvci5oCmluZGV4IDU2MWY2MzM0YWUzLi4zNDkxYTgzZmVkYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5oCkBAIC01Myw4ICs1Myw4IEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX3NjcmF0Y2hGUFIoc2NyYXRjaEZQUikKICAgICB7IH0KIAotICAgIEpJ
VE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNH
ZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRl
RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExp
c3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRo
UHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5l
UmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQ
cm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlz
TGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsg
fQogICAgIHN0YXRpYyBib29sIGlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3Bl
cmFuZCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKaW5kZXggYmRhMzA4Yzg0ZDIuLmMwMzQxYzk1NmNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTM1LDM2ICsxMzUsNDkgQEAgdm9pZCBE
YXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAjZW5kaWYKIAogICAgIHsKLSAgICAgICAg
QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUgYXJp
dGhQcm9maWxlOworICAgICAgICBhcml0aFByb2ZpbGUuYXJnU2F3SW50MzIoKTsKKyAgICAgICAg
QVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVk
SW50Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5hcmdPYnNlcnZlZFR5cGUo
KS5pc09ubHlJbnQzMigpKTsKKyAgICB9CisgICAgeworICAgICAgICBVbmFyeUFyaXRoUHJvZmls
ZSBhcml0aFByb2ZpbGU7CisgICAgICAgIGFyaXRoUHJvZmlsZS5hcmdTYXdOdW1iZXIoKTsKKyAg
ICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gVW5hcnlBcml0aFByb2ZpbGU6Om9i
c2VydmVkTnVtYmVyQml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5hcmdPYnNl
cnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBCaW5h
cnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3
SW50MzIoKTsKICAgICAgICAgYXJpdGhQcm9maWxlLnJoc1Nhd0ludDMyKCk7Ci0gICAgICAgIEFT
U0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJ
bnRJbnQoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2Jz
ZXJ2ZWRCaW5hcnlJbnRJbnQoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKLSAg
ICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCku
cmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRJbnRCaXRzKCkp
OworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUlu
dDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlz
T25seUludDMyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAg
IGFyaXRoUHJvZmlsZS5saHNTYXdOdW1iZXIoKTsKICAgICAgICAgYXJpdGhQcm9maWxlLnJoc1Nh
d0ludDMyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJv
ZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNf
QVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5saHNPYnNlcnZl
ZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9m
aWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgpLnJoc09ic2VydmVkVHlwZSgpLmlzT25seUlu
dDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVySW50Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRo
UHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VS
VChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQog
ICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5
QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051
bWJlcigpOwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3TnVtYmVyKCk7Ci0gICAgICAgIEFT
U0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlO
dW1iZXJOdW1iZXIoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmls
ZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlO
dW1iZXIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJp
bmFyeU51bWJlck51bWJlcigpLnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAg
ICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpv
YnNlcnZlZE51bWJlck51bWJlckJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUu
bGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQ
cm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKICAgICB9CiAgICAgewot
ICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBCaW5hcnlBcml0aFBy
b2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsK
ICAgICAgICAgYXJpdGhQcm9maWxlLnJoc1Nhd051bWJlcigpOwotICAgICAgICBBU1NFUlQoYXJp
dGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVy
KCkuYml0cygpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVk
QmluYXJ5SW50TnVtYmVyKCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Ci0gICAg
ICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigp
LnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRo
UHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJp
dHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNP
bmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBl
KCkuaXNPbmx5TnVtYmVyKCkpOwogICAgIH0KIH0KIElHTk9SRV9XQVJOSU5HU19FTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAKaW5kZXggYTI1Zjk4NGFiZGEuLmY1ZDkxNzc0NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtODYsNyAr
ODYsNyBAQCBwdWJsaWM6CiAKIGNvbnN0IGludDY0X3QqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6
ZHVtbXkoKQogewotLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20vZ2Vu
ZXJhdGVfb2Zmc2V0c19leHRyYWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCisvLyBUaGlzIGlz
IGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9y
LnJiLCBhbmQgY29udGFpbnMgY29kZQogLy8gdG8gY3JlYXRlIGEgdGFibGUgb2Ygb2Zmc2V0cywg
c2l6ZXMsIGFuZCBhIGhlYWRlciBpZGVudGlmeWluZyB3aGF0IGNvbWJpbmF0aW9uIG9mCiAvLyBQ
bGF0Zm9ybS5oIG1hY3JvcyB3ZSBoYXZlIHNldC4gV2UgaW5jbHVkZSBpdCBpbnNpZGUgb2YgYSBt
ZXRob2Qgb24gTExJbnRPZmZzZXRzRXh0cmFjdG9yCiAvLyBiZWNhdXNlIHRoZSBmaWVsZHMgd2hv
c2Ugb2Zmc2V0cyB3ZSdyZSBleHRyYWN0aW5nIGFyZSBtb3N0bHkgcHJpdmF0ZS4gU28gd2UgbWFr
ZSB0aGVpcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCmluZGV4IGMzZDE3ZDhmZjM0Li42ZmQxNjk4NmMxNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAt
MjQwLDEzICsyNDAsMTUgQEAgY29uc3QgSXNJbnZhbGlkYXRlZCA9IGNvbnN0ZXhwciBJc0ludmFs
aWRhdGVkCiAjIFNoYWRvd0NoaWNrZW4gZGF0YQogY29uc3QgU2hhZG93Q2hpY2tlblRhaWxNYXJr
ZXIgPSBjb25zdGV4cHIgU2hhZG93Q2hpY2tlbjo6UGFja2V0Ojp0YWlsTWFya2VyVmFsdWUKIAot
IyBBcml0aFByb2ZpbGUgZGF0YQotY29uc3QgQXJpdGhQcm9maWxlSW50ID0gY29uc3RleHByIChB
cml0aFByb2ZpbGU6Om9ic2VydmVkVW5hcnlJbnQoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2Zp
bGVOdW1iZXIgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRVbmFyeU51bWJlcigp
LmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZUludEludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9m
aWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZU51
bWJlckludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlcklu
dCgpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZUludE51bWJlciA9IGNvbnN0ZXhwciAoQXJp
dGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmJpdHMoKSkKLWNvbnN0IEFyaXRo
UHJvZmlsZU51bWJlck51bWJlciA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJp
bmFyeU51bWJlck51bWJlcigpLmJpdHMoKSkKKyMgVW5hcnlBcml0aFByb2ZpbGUgZGF0YQorY29u
c3QgQXJpdGhQcm9maWxlSW50ID0gY29uc3RleHByIChVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2
ZWRJbnRCaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVOdW1iZXIgPSBjb25zdGV4cHIgKFVuYXJ5
QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckJpdHMoKSkKKworIyBCaW5hcnlBcml0aFByb2Zp
bGUgZGF0YQorY29uc3QgQXJpdGhQcm9maWxlSW50SW50ID0gY29uc3RleHByIChCaW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cygpKQorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVy
SW50ID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVySW50Qml0
cygpKQorY29uc3QgQXJpdGhQcm9maWxlSW50TnVtYmVyID0gY29uc3RleHByIChCaW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkSW50TnVtYmVyQml0cygpKQorY29uc3QgQXJpdGhQcm9maWxlTnVt
YmVyTnVtYmVyID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVy
TnVtYmVyQml0cygpKQogCiAjIFBvaW50ZXIgVGFncwogY29uc3QgQnl0ZWNvZGVQdHJUYWcgPSBj
b25zdGV4cHIgQnl0ZWNvZGVQdHJUYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggMzA0MzVjNDY3ZDMu
LjU5MGJjN2UyYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgZW5k
KQogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9uZWdhdGUsIE9wTmVnYXRlLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKIAogICAgIG1hY3JvIGFyaXRoUHJvZmls
ZSh0eXBlKQotICAgICAgICBvcmkgdHlwZSwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJv
ZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQorICAgICAgICBvcmkgdHlwZSwgT3BOZWdh
dGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEJpbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRz
W3Q1XQogICAgIGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTAzMCw3ICsxMDMwLDcg
QEAgZW5kKQogbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uKQogICAgIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBhcml0aFBy
b2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisgICAgICAgICAg
ICBvcmkgdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEJp
bmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgICAgICBlbmQKIAogICAgICAgICBtZXRh
ZGF0YSh0NSwgdDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGIyZmI1NTFiOWVhLi4wNTliNWEzNTBmNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KQEAgLTk3NiwxOSArOTc2LDE5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfbmVn
YXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByCiAg
ICAgZ2V0KG1fb3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MCwgdDMpCiAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0
YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCisgICAgbG9h
ZGkgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEJpbmFyeUFyaXRoUHJvZmls
ZTo6bV9iaXRzW3QxXSwgdDIKICAgICBicWIgdDMsIG51bWJlclRhZywgLm9wTmVnYXRlTm90SW50
CiAgICAgYnRpeiB0MywgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDMKICAg
ICBvcnEgbnVtYmVyVGFnLCB0MwogICAgIG9yaSBBcml0aFByb2ZpbGVJbnQsIHQyCi0gICAgc3Rv
cmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxl
OjptX2JpdHNbdDFdCisgICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQ
cm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCiAgICAgcmV0dXJuKHQzKQog
Lm9wTmVnYXRlTm90SW50OgogICAgIGJ0cXogdDMsIG51bWJlclRhZywgLm9wTmVnYXRlU2xvdwog
ICAgIHhvcnEgMHg4MDAwMDAwMDAwMDAwMDAwLCB0MwogICAgIG9yaSBBcml0aFByb2ZpbGVOdW1i
ZXIsIHQyCi0gICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxl
ICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCisgICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0
YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCiAg
ICAgcmV0dXJuKHQzKQogCiAub3BOZWdhdGVTbG93OgpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgbWFj
cm8gYmluYXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJP
cGVyYXRpb25BbmRTdG9yZSwgZG8KICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQogCiAgICAgICAg
IG1hY3JvIHByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisg
ICAgICAgICAgICBvcmkgdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJv
ZmlsZSArIEJpbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgICAgICBlbmQKIAogICAg
ICAgICBnZXQobV9yaHMsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9SZXN1bHRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5
cGUuaAppbmRleCA5YjNkMGQ3NGM4ZC4uNTYyMmYyODljYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCkBAIC00OCw2ICs0OCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbnVtQml0c05lZWRlZCA9IDc7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoKFR5cGVCaXRzICYgKCgxIDw8IG51bUJpdHNOZWVkZWQpIC0gMSkp
ID09IFR5cGVCaXRzLCAiVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLiIpOwogCisg
ICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBSZXN1bHRUeXBlKCkKKyAgICAgICAgICAgIDogUmVz
dWx0VHlwZSh1bmtub3duVHlwZSgpKQorICAgICAgICB7CisgICAgICAgIH0KICAgICAgICAgY29u
c3RleHByIGV4cGxpY2l0IFJlc3VsdFR5cGUoVHlwZSB0eXBlKQogICAgICAgICAgICAgOiBtX2Jp
dHModHlwZSkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggOTI0ZjdlNWIzNTIuLjM0MGI5MDA4NjAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
QEAgLTQ4Nyw4ICs0ODcsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fc3RyaW5nKQog
I2lmIEVOQUJMRShKSVQpCiBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFy
aXRoT3AoT3BOZWdhdGU6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNWYWx1ZSByZXN1bHQsIEpTVmFs
dWUgb3BlcmFuZCkKIHsKLSAgICBBcml0aFByb2ZpbGUmIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2Fy
aXRoUHJvZmlsZTsKLSAgICBwcm9maWxlLm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgVW5hcnlB
cml0aFByb2ZpbGUmIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZTsKKyAgICBwcm9m
aWxlLm9ic2VydmVBcmcob3BlcmFuZCk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpIHx8
IHJlc3VsdC5pc0JpZ0ludCgpKTsKICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpIHsKICAgICAg
ICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CkBAIC01NDYsNyArNTQ2LDcgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZv
ckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIEpT
VmFsdWUgcmVzdWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmlnaHQpCiB7CiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBBcml0aFByb2ZpbGUmIHBy
b2ZpbGUgPSAqY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJp
dGhQcm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMo
cGMpOwogCiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICghcmVzdWx0
LmlzSW50MzIoKSkgewpAQCAtNjA3LDcgKzYwNyw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9hZGQpCiAgICAgSlNWYWx1ZSB2MSA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7
CiAgICAgSlNWYWx1ZSB2MiA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAg
ICBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpleGVjLT5jb2RlQmxvY2soKS0+YXJpdGhQ
cm9maWxlRm9yUEMocGMpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlID0g
KmV4ZWMtPmNvZGVCbG9jaygpLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhwYyk7CiAgICAgYXJp
dGhQcm9maWxlLm9ic2VydmVMSFNBbmRSSFModjEsIHYyKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNBZGQoZXhlYywgdjEsIHYyKTsK
</data>
<flag name="commit-queue"
          id="396784"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381024</attachid>
            <date>2019-10-15 14:50:47 -0700</date>
            <delta_ts>2019-10-21 15:00:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchFixArithProfile</filename>
            <type>text/plain</type>
            <size>118413</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDM3NTMxZDUzMDBkLi5lNzI2Y2NhOGRjNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY1IEBACisyMDE5LTEwLTE0ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGltZSBvbmx5IHVzZWQgZm9y
IGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQgYmVpbmcgdXNlZCBmb3Ig
bmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1c2VkIGZvciBpbmMgYW5k
IGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBhdGNoIEkgbWFrZSBhIHNl
cGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3IgYSBzaW5nbGUgYXJndW1l
bnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisKKyAgICAgICAgQWZ0ZXIg
ZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXplZCB0aGF0IHRoZSBSZXN1
bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQcm9maWxlIGFyZSBub3Qg
bmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFscmVhZHkgaW4gdGhlIGJ5
dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3ZpbmcgdGhlbSBhbGxvd2Vk
IHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBmaXQgaW4gMTYgYml0cyAo
OSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRoZSB0d28ga2luZHMgc2Vw
YXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRlcGVuZGVudGx5IGluIHRo
ZSBmdXR1cmUuCisKKyAgICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwOgorICAgICAg
ICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQpOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldERv
dWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxk
VHlwZT46OnNob3VsZEVtaXRTZXROb25OdW1lcmljIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJp
dGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVyaWMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNl
dEJpZ0ludCBjb25zdCk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRp
ZE9ic2VydmVOb25JbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlk
T2JzZXJ2ZURvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2Jz
ZXJ2ZU5vbk5lZ1plcm9Eb3VibGUgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6
OmRpZE9ic2VydmVOZWdaZXJvRG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9m
aWxlOjpkaWRPYnNlcnZlTm9uTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJv
ZmlsZTo6ZGlkT2JzZXJ2ZUJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTo6ZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFBy
b2ZpbGU6OmRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJp
dGhQcm9maWxlOjpzZXRPYnNlcnZlZE5vbk5lZ1plcm9Eb3VibGUpOgorICAgICAgICAoSlNDOjpB
cml0aFByb2ZpbGU6OnNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWROb25OdW1lcmljKToKKyAgICAgICAgKEpTQzo6QXJpdGhQ
cm9maWxlOjpzZXRPYnNlcnZlZEJpZ0ludCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6
c2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpz
ZXRPYnNlcnZlZEludDUyT3ZlcmZsb3cpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6Om9i
c2VydmVSZXN1bHQpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmFkZHJlc3NPZkJpdHMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmJpdHMgY29uc3QpOgorICAgICAg
ICAoSlNDOjpBcml0aFByb2ZpbGU6OkFyaXRoUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFyaXRo
UHJvZmlsZTo6aGFzQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0
Qml0KToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OlVuYXJ5QXJpdGhQcm9maWxl
KToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cyk6Cisg
ICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckJpdHMpOgorICAg
ICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6YXJnT2JzZXJ2ZWRUeXBlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OnNldEFyZ09ic2VydmVkVHlwZSk6CisgICAg
ICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdJbnQzMik6CisgICAgICAgIChKU0M6
OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdOdW1iZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFy
aXRoUHJvZmlsZTo6YXJnU2F3Tm9uTnVtYmVyKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVBcmcpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6aXNP
YnNlcnZlZFR5cGVFbXB0eSk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6Qmlu
YXJ5QXJpdGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNl
cnZlZEludEludEJpdHMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2Vy
dmVkTnVtYmVySW50Qml0cyk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2Jz
ZXJ2ZWRJbnROdW1iZXJCaXRzKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpv
YnNlcnZlZE51bWJlck51bWJlckJpdHMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2Zp
bGU6OnNldExoc09ic2VydmVkVHlwZSk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmls
ZTo6c2V0UmhzT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxl
OjpvYnNlcnZlTEhTKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZl
TEhTQW5kUkhTKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVk
VHlwZUVtcHR5KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRK
SVRBZGRJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklUTXVsSUMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVFN1YklDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjphZGRKSVROZWdJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJp
bmFyeUFyaXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmFyeUFy
aXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTcGVj
aWFsRmFzdENhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZE1hdGhJQyk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOgorICAg
ICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpyZXBv
cnRWYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5
T3ApOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpVbmFyeU9w
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjptYWtlU2FmZSk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om1ha2VEaXZTYWZlKToKKyAgICAgICAgKiBkZmcv
REZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjptZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVOZWdhdGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlVW5hcnlNYXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQmluYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQWRkT3JTdWIpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVOZWdhdGUpOgorICAgICAgICAqIGppdC9K
SVQuaDoKKyAgICAgICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVEFkZEdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVEFkZEdlbmVyYXRv
ci5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX25lZ2F0ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9hZGQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNGYXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
TWF0aElDU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfbXVsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1Yik6
CisgICAgICAgICogaml0L0pJVERpdkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERp
dkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVERpdkdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpKSVREaXZHZW5lcmF0b3I6OkpJVERpdkdlbmVyYXRvcik6
CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjpjb3BpZWRB
cml0aFByb2ZpbGUpOgorICAgICAgICAqIGppdC9KSVRNYXRoSUMuaDoKKyAgICAgICAgKEpTQzo6
SklUTWF0aElDOjpKSVRNYXRoSUMpOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUTWF0aElDOjphcml0aFByb2ZpbGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjppc0JpbmFyeVByb2ZpbGVFbXB0eSk6CisgICAgICAgIChKU0M6OkpJVEJp
bmFyeU1hdGhJQzo6SklUQmluYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6aXNVbmFyeVByb2Zp
bGVFbXB0eSk6CisgICAgICAgIChKU0M6OkpJVFVuYXJ5TWF0aElDOjpKSVRVbmFyeU1hdGhJQyk6
CisgICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVE11
bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRNdWxHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRNdWxHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTmVn
R2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVE5lZ0dlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVE5lZ0dlbmVyYXRvci5oOgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUU3Vi
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUU3ViR2VuZXJh
dG9yLmg6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL1Jlc3VsdFR5cGUuaDoK
KyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6UmVzdWx0VHlwZSk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVG
b3JVbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5h
cnlBcml0aE9wKToKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorCiAyMDE5LTEwLTE0
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjUxMDkwLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRleCA5OTk5MzNiOGMwZS4uN2Y0NmY3M2ZjOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3Bw
CkBAIC0zMiw3ICszMiw4IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCi12
b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
VmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKK3RlbXBsYXRlPHR5cGVuYW1l
IEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNl
cnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3Rl
cnNNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCFzaG91bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3Vs
ZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3VsZEVtaXRTZXRCaWdJbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNTgsNDEgKzU5LDUxIEBAIHZvaWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2
ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnCiAgICAg
ZG9uZS5saW5rKCZqaXQpOwogfQogCi1ib29sIEFyaXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldERv
dWJsZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3QKIHsKLSAg
ICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxlOjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9m
aWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQ
cm9maWxlOjpOb25OZWdaZXJvRG91YmxlOworICAgIHVpbnQzMl90IG1hc2sgPSBJbnQzMk92ZXJm
bG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9Eb3VibGUgfCBOb25OZWdaZXJvRG91YmxlOwog
ICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0gbWFzazsKIH0KIAotdm9pZCBBcml0aFByb2Zp
bGU6OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0
U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChzaG91bGRFbWl0
U2V0RG91YmxlKCkpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KEFyaXRoUHJvZmlsZTo6SW50MzJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxv
dyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVy
b0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkp
OworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihJbnQzMk92ZXJm
bG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9Eb3VibGUgfCBOb25OZWdaZXJvRG91YmxlKSwg
Q0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CiB9CiAKLWJv
b2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+
OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0CiB7CiAgICAgdWludDMyX3QgbWFzayA9
IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9
IG1hc2s7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29u
c3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJp
dGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdAogewogICAgIHVpbnQzMl90
IG1hc2sgPSBBcml0aFByb2ZpbGU6OkJpZ0ludDsKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2sp
ICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2Fs
bEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3Zv
aWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25OdW1lcmljKENDYWxsSGVs
cGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQot
ICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6
Ok5vbk51bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRz
KCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoTm9uTnVt
ZXJpYyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwog
fQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkg
Y29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxl
PEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7
CiAgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQoKSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6
OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmlnSW50KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFk
ZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CiB9CisKKy8vIEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRh
dGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBhYm92ZSBmb3IgVW5hcnlBcml0aFByb2ZpbGUvQmluYXJ5
QXJpdGhQcm9maWxlCisvLyBJZiBjaGFuZ2luZyB0aGUgc2l6ZSBvZiBlaXRoZXIsIGFkZCB0aGUg
Y29ycmVzcG9uZGluZyBsaW5lcyBoZXJlLgordGVtcGxhdGUgY2xhc3MgQXJpdGhQcm9maWxlPHVp
bnQxNl90PjsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKQEAg
LTEwMSw3ICsxMTIsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFBy
b2ZpbGUmIHByb2ZpbGUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGU8VD4mIHByb2ZpbGUpCiB7CiAg
ICAgY29uc3QgY2hhciogc2VwYXJhdG9yID0gIiI7CiAKQEAgLTEzNSwxOSArMTQ3LDMwIEBAIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHBy
b2ZpbGUpCiAgICAgICAgICAgICBzZXBhcmF0b3IgPSAifCI7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0UGF0aCgpKQotICAgICAgICBvdXQucHJpbnQo
c2VwYXJhdG9yLCAiVG9vayBzcGVjaWFsIGZhc3QgcGF0aC4iKTsKICAgICBvdXQucHJpbnQoIj4i
KTsKK30KKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuYXJ5
QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAgIHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNf
Y2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisg
ICAgb3V0LnByaW50KCIgQXJnIE9ic2VydmVkVHlwZTo8Iik7CisgICAgb3V0LnByaW50KHByb2Zp
bGUuYXJnT2JzZXJ2ZWRUeXBlKCkpOworICAgIG91dC5wcmludCgiPiIpOworfQorCit2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlJiBw
cm9maWxlKQoreworICAgIHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2Zp
bGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisgICAgaWYgKHByb2ZpbGUu
dG9va1NwZWNpYWxGYXN0UGF0aCgpKQorICAgICAgICBvdXQucHJpbnQoIiBUb29rIHNwZWNpYWwg
ZmFzdCBwYXRoLiIpOwogCiAgICAgb3V0LnByaW50KCIgTEhTIE9ic2VydmVkVHlwZTo8Iik7CiAg
ICAgb3V0LnByaW50KHByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgi
PiBSSFMgT2JzZXJ2ZWRUeXBlOjwiKTsKICAgICBvdXQucHJpbnQocHJvZmlsZS5yaHNPYnNlcnZl
ZFR5cGUoKSk7CiAgICAgb3V0LnByaW50KCI+Iik7Ci0KLSAgICBvdXQucHJpbnQoIiBMSFMgUmVz
dWx0VHlwZTo8IiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4ocHJvZmlsZS5saHNSZXN1bHRUeXBlKCkuYml0cygpKSkpKTsKLSAgICBvdXQucHJp
bnQoIj4gUkhTIFJlc3VsdFR5cGU6PCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2ZpbGUucmhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7
Ci0gICAgb3V0LnByaW50KCI+Iik7CiB9CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBKU0M6Ok9ic2VydmVkVHlwZSYgb2JzZXJ2ZWRUeXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCmluZGV4IGZjYzRlMjgxOGJl
Li5jYWQ5OWY0OGJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0
aFByb2ZpbGUuaApAQCAtNjYsMTE5ICs2NiwyMTcgQEAgcHJpdmF0ZToKICAgICB1aW50OF90IG1f
Yml0cyB7IDAgfTsKIH07CiAKLXN0cnVjdCBBcml0aFByb2ZpbGUgewotcHJpdmF0ZToKLSAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bWJlck9mRmxhZ0JpdHMgPSA2OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgcmhzUmVzdWx0VHlwZVNoaWZ0ID0gbnVtYmVyT2ZGbGFnQml0
czsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGxoc1Jlc3VsdFR5cGVTaGlmdCA9IHJo
c1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCByaHNPYnNlcnZlZFR5cGVTaGlmdCA9IGxoc1Jlc3VsdFR5cGVT
aGlmdCArIFJlc3VsdFR5cGU6Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBsaHNPYnNlcnZlZFR5cGVTaGlmdCA9IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2Jz
ZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkOwotCi0gICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5
cGU6Om51bUJpdHNOZWVkZWQgPT0gMywgIldlIG1ha2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQg
dGhhdCBoZXJlLiIpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY2xlYXJSaHNPYnNl
cnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KH4oKDEgPDwgcmhzT2JzZXJ2
ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwg
KHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MzJfdCBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
figoMSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgKyAxKSkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyAyKSkpKTsKLQotICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmVzdWx0VHlwZU1hc2sgPSAoMSA8PCBSZXN1bHRUeXBl
OjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNl
cnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorY2xhc3MgQXJpdGhQcm9maWxlIHsKK3B1
YmxpYzoKKyAgICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7CisgICAgICAgIE5vbk5lZ1plcm9Eb3Vi
bGUgPSAxIDw8IDAsCisgICAgICAgIE5lZ1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCisgICAgICAg
IE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCisgICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAx
IDw8IDMsCisgICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCisgICAgICAgIEJpZ0lu
dCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVkZWQgPSA2OwogCi0gICAgZW51bSBjbGFzcyBD
b25zdGFudFRhZyB7IENvbnN0YW50IH07CisgICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBj
b25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQor
ICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNC
aXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRp
ZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsg
fQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmln
SW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KIAotcHVibGlj
OgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8
PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwot
ICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpu
dW1CaXRzTmVlZGVkKSA8PSAoc2l6ZW9mKHVpbnQzMl90KSAqIDgpIC0gMSwgIlNob3VsZCBmaXQg
aW4gYSB1aW50MzJfdC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0
ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzayksICJUaGVzZSBiaXRzIHNob3VsZCBub3Qg
aW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xl
YXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhlc2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIp
OwotICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2
ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNp
YWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBoaWdoZXIgYml0LiIpOworICAgIHZvaWQgc2V0T2Jz
ZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAg
ICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUp
OyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmlj
KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJbnQpOyB9Cisg
ICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93
KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJP
dmVyZmxvdyk7IH0KIAotICAgIEFyaXRoUHJvZmlsZShSZXN1bHRUeXBlIGFyZykKLSAgICAgICAg
OiBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBhcmcpCisgICAgdm9pZCBvYnNl
cnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0
VHlwZSgpLmJpdHMoKSA9PSBhcmcuYml0cygpKTsKLSAgICAgICAgQVNTRVJUKGxoc09ic2VydmVk
VHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFTU0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0Vt
cHR5KCkpOworICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgbV9iaXRzIHw9
IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1pl
cm9Eb3VibGU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZh
bHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9iaXRzIHw9IE5vbk51
bWVyaWM7CiAgICAgfQogCi0gICAgQXJpdGhQcm9maWxlKFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRU
eXBlIHJocykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBs
aHMsIHJocykKKyAgICBjb25zdCB2b2lkKiBhZGRyZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4g
Jm1fYml0czsgfQorCisjaWYgRU5BQkxFKEpJVCkKKyAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93
IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBp
dCBzZWVzIGEKKyAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9u
LW51bWVyaWMuCisgICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1Zh
bHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOworCisgICAgLy8g
U2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwg
TmVnWmVyb0RvdWJsZSkuCisgICAgYm9vbCBzaG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7Cisg
ICAgdm9pZCBlbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYpIGNvbnN0OworCisgICAgLy8gU2V0
cyBOb25OdW1iZXIuCisgICAgdm9pZCBlbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBj
b25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3Q7CisKKyAgICAv
LyBTZXRzIEJpZ0ludAorICAgIHZvaWQgZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25z
dDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdDsKKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQorCisgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBt
X2JpdHM7IH0KKworcHJvdGVjdGVkOgorICAgIEFyaXRoUHJvZmlsZSgpCiAgICAgewotICAgICAg
ICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSBsaHMuYml0cygpICYmIHJoc1Jlc3Vs
dFR5cGUoKS5iaXRzKCkgPT0gcmhzLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZl
ZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNF
bXB0eSgpKTsKICAgICB9CiAKLSAgICBBcml0aFByb2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQot
ICAgICAgICA6IEFyaXRoUHJvZmlsZSh0eXBlcy5maXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKLSAg
ICB7IH0KKyAgICBib29sIGhhc0JpdHMoaW50IG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IG1hc2s7IH0KKyAgICB2b2lkIHNldEJpdChpbnQgbWFzaykgeyBtX2JpdHMgfD0gbWFzazsgfQor
CisgICAgQml0ZmllbGRUeXBlIG1fYml0cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0
ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUg
YW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRhdGlvbiB0byBpdC4KK307CisKKy8qIFRoaXMg
Y2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBpbiAxNiBiaXRzOgorICogLSBP
YnNlcnZlZFJlc3VsdHMKKyAqIC0gT2JzZXJ2ZWRUeXBlIGZvciB0aGUgYXJndW1lbnQKKyAqLwor
dXNpbmcgVW5hcnlBcml0aFByb2ZpbGVCYXNlID0gdWludDE2X3Q7CitjbGFzcyBVbmFyeUFyaXRo
UHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBhcmdPYnNlcnZlZFR5cGVTaGlmdCA9IG9ic2Vy
dmVkUmVzdWx0c051bUJpdHNOZWVkZWQ7CiAKLSAgICBBcml0aFByb2ZpbGUoKSA9IGRlZmF1bHQ7
CisgICAgc3RhdGljX2Fzc2VydChhcmdPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6
bnVtQml0c05lZWRlZCA8PSBzaXplb2YoVW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91
bGQgZml0IGluIGEgdGhlIHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAKLSAg
ICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBmcm9tSW50KHVpbnQzMl90IGJpdHMpCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZl
ZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8VW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTEx
IDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5
QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpu
dW1CaXRzTmVlZGVkKSAtIDE7CisKK3B1YmxpYzoKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSgpCisg
ICAgICAgIDogQXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4oKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEFyaXRoUHJvZmlsZSB7IENvbnN0YW50VGFnOjpDb25zdGFudCwgYml0cyB9
OworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAg
QVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRVbmFyeUludCgpCisgICAgc3RhdGljIGNv
bnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRJbnRCaXRzKCkKICAgICB7CiAg
ICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlw
ZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0gb2Jz
ZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRp
Y19hc3NlcnQoYml0cyA9PSAweDgwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChi
aXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2Jz
ZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQ7CisgICAgICAgIHJldHVy
biBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZl
ZFVuYXJ5TnVtYmVyKCkKKyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZSBvYnNlcnZlZE51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVk
VHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAg
ICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBs
aHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4MTAw
MDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3Rl
eHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8
IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAgICByZXR1cm4gYml0czsKKyAgICB9CisKKyAg
ICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGFyZ09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVk
VHlwZU1hc2spOyB9CisgICAgdm9pZCBzZXRBcmdPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5
cGUpCisgICAgeworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsK
KyAgICAgICAgYml0cyAmPSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2s7CisgICAgICAgIGJp
dHMgfD0gdHlwZS5iaXRzKCkgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQ7CisgICAgICAgIG1fYml0
cyA9IGJpdHM7CisgICAgICAgIEFTU0VSVChhcmdPYnNlcnZlZFR5cGUoKSA9PSB0eXBlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFyZ1Nhd0ludDMyKCkgeyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2Jz
ZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9CisgICAgdm9pZCBhcmdTYXdOdW1iZXIoKSB7IHNl
dEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkpOyB9CisgICAg
dm9pZCBhcmdTYXdOb25OdW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5
cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CisKKyAgICB2b2lkIG9ic2VydmVBcmcoSlNWYWx1ZSBh
cmcpCisgICAgeworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7
CisgICAgICAgIGlmIChhcmcuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgaWYgKGFyZy5pc0lu
dDMyKCkpCisgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld1Byb2ZpbGUuYXJnU2F3TnVtYmVyKCk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbmV3UHJvZmlsZS5hcmdTYXdOb25OdW1iZXIoKTsK
KworICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxlLmJpdHMoKTsKKyAgICB9CisKKyAgICBib29s
IGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFyZ09ic2VydmVk
VHlwZSgpLmlzRW1wdHkoKTsKKyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9m
ZnNldHNFeHRyYWN0b3I7Cit9OworCisvKiBUaGlzIGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5n
IGNvbXBvbmVudHMgaW4gMTYgYml0czoKKyAqIC0gT2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2Vy
dmVkVHlwZSBmb3IgcmlnaHQtaGFuZC1zaWRlCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgbGVmdC1o
YW5kLXNpZGUKKyAqIC0gYSBiaXQgdXNlZCBieSBkaXZpc2lvbiB0byBpbmRpY2F0ZSB3aGV0aGVy
IGEgc3BlY2lhbCBmYXN0IHBhdGggd2FzIHRha2VuCisgKi8KK3VzaW5nIEJpbmFyeUFyaXRoUHJv
ZmlsZUJhc2UgPSB1aW50MTZfdDsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBB
cml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRz
TmVlZGVkOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsK
KworICAgIHN0YXRpY19hc3NlcnQoT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJX
ZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9uIGFib3V0IHRoYXQgaGVyZS4iKTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRN
YXNrID0gc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigwYjExMSA8PCByaHNP
YnNlcnZlZFR5cGVTaGlmdCkpOworICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9m
aWxlQmFzZSBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlB
cml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAg
ICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFz
ayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOworCitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0
aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRz
TmVlZGVkKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2Vy
dmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVC
YXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2Vy
dCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAi
VGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNw
ZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJp
dHMgc2hvdWxkIGludGVyc2VjdC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0
aEJpdCA+IH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBu
b3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJp
dC4iKTsKKworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxl
PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+ICgpCisgICAgeworICAgICAgICBBU1NFUlQobGhzT2Jz
ZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKHJoc09ic2VydmVkVHlwZSgp
LmlzRW1wdHkoKSk7CiAgICAgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9i
c2VydmVkQmluYXJ5SW50SW50KCkKKworICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQ
cm9maWxlQmFzZSBvYnNlcnZlZEludEludEJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHBy
IE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkg
fTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRz
KCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJo
c09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4OTAw
MDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4
cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8
IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNl
cnZlZFR5cGVTaGlmdCk7CisgICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMg
Y29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZEJpbmFyeU51bWJlckludCgpCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkTnVtYmVySW50Qml0
cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVy
IHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigpIH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNl
cnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0g
ICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8
PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMTAwMDAw
LCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIg
QmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBs
aHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2
ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKQorICAgIHN0YXRp
YyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZEludE51bWJlckJpdHMo
KQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7
IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2
ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAg
ICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBs
aHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2Vy
dmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4YTAwMDAwLCAi
Iik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmlu
YXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09i
c2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRU
eXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKQorICAgIHN0YXRp
YyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJlck51bWJlckJp
dHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJl
ciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWlu
dDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0g
ICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDEyMDAwMDAsICIiKTsKLSAgICAgICAgcmV0
dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVC
YXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0
KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAg
ICAgICByZXR1cm4gYml0czsKICAgICB9CiAKLSAgICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7Ci0g
ICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8IDAsCi0gICAgICAgIE5lZ1plcm9Eb3VibGUg
ICAgPSAxIDw8IDEsCi0gICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCi0gICAgICAg
IEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCi0gICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAx
IDw8IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgfTsKLQotICAg
IFJlc3VsdFR5cGUgbGhzUmVzdWx0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUoKG1f
Yml0cyA+PiBsaHNSZXN1bHRUeXBlU2hpZnQpICYgcmVzdWx0VHlwZU1hc2spOyB9Ci0gICAgUmVz
dWx0VHlwZSByaHNSZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1cm4gUmVzdWx0VHlwZSgobV9iaXRz
ID4+IHJoc1Jlc3VsdFR5cGVTaGlmdCkgJiByZXN1bHRUeXBlTWFzayk7IH0KLQogICAgIGNvbnN0
ZXhwciBPYnNlcnZlZFR5cGUgbGhzT2JzZXJ2ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gT2JzZXJ2
ZWRUeXBlKChtX2JpdHMgPj4gbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBlTWFz
ayk7IH0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIHJoc09ic2VydmVkVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IHJoc09ic2VydmVkVHlwZVNoaWZ0KSAm
IG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgdm9pZCBzZXRMaHNPYnNlcnZlZFR5cGUoT2JzZXJ2
ZWRUeXBlIHR5cGUpCiAgICAgewotICAgICAgICB1aW50MzJfdCBiaXRzID0gbV9iaXRzOworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSBtX2JpdHM7CiAgICAgICAgIGJpdHMg
Jj0gY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrOwogICAgICAgICBiaXRzIHw9IHR5cGUuYml0
cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0OwogICAgICAgICBtX2JpdHMgPSBiaXRzOwpAQCAt
MTg3LDcgKzI4NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UmhzT2JzZXJ2ZWRUeXBlKE9i
c2VydmVkVHlwZSB0eXBlKQogICAgIHsgCi0gICAgICAgIHVpbnQzMl90IGJpdHMgPSBtX2JpdHM7
CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKICAgICAgICAg
Yml0cyAmPSBjbGVhclJoc09ic2VydmVkVHlwZUJpdE1hc2s7CiAgICAgICAgIGJpdHMgfD0gdHlw
ZS5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQ7CiAgICAgICAgIG1fYml0cyA9IGJpdHM7
CkBAIC0xOTYsMzkgKzI5NCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdG9va1NwZWNpYWxGYXN0
UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIHNwZWNpYWxGYXN0UGF0aEJpdDsgfQogCi0g
ICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5l
Z1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KLSAg
ICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1pl
cm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1pl
cm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0g
ICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMo
TmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3Qg
eyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0lu
dCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2
ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9
Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0Jp
dHMoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91
YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVk
TmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBzZXRP
YnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0
T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJbnQpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZl
ZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0
T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KLQotICAg
IGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBjb25zdCB7IHJldHVybiAmbV9iaXRzOyB9Ci0K
LSAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlm
ICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh2YWx1
ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBtX2JpdHMgfD0gSW50MzJPdmVyZmxvdyB8IElu
dDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJ
bnQoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9IEJpZ0ludDsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBtX2JpdHMgfD0gTm9uTnVtZXJpYzsKLSAgICB9Ci0KICAg
ICB2b2lkIGxoc1Nhd0ludDMyKCkgeyBzZXRMaHNPYnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBl
KCkud2l0aEludDMyKCkpOyB9CiAgICAgdm9pZCBsaHNTYXdOdW1iZXIoKSB7IHNldExoc09ic2Vy
dmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkpOyB9CiAgICAgdm9pZCBsaHNT
YXdOb25OdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRo
Tm9uTnVtYmVyKCkpOyB9CkBAIC0yMzgsNyArMzAzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBv
YnNlcnZlTEhTKEpTVmFsdWUgbGhzKQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxlIG5ld1By
b2ZpbGUgPSAqdGhpczsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAq
dGhpczsKICAgICAgICAgaWYgKGxocy5pc051bWJlcigpKSB7CiAgICAgICAgICAgICBpZiAobGhz
LmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBuZXdQcm9maWxlLmxoc1Nhd0ludDMyKCk7CkBA
IC0yNTQsNyArMzE5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgb2JzZXJ2ZUxIUyhsaHMp
OwogCi0gICAgICAgIEFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CiAgICAgICAgIGlmIChyaHMuaXNO
dW1iZXIoKSkgewogICAgICAgICAgICAgaWYgKHJocy5pc0ludDMyKCkpCiAgICAgICAgICAgICAg
ICAgbmV3UHJvZmlsZS5yaHNTYXdJbnQzMigpOwpAQCAtMjY2LDQ3ICszMzEsMTEgQEAgcHVibGlj
OgogICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxlLmJpdHMoKTsKICAgICB9CiAKLSNpZiBFTkFC
TEUoSklUKSAgICAKLSAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8
IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKLSAgICAvLyBk
b3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCi0gICAgdm9p
ZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0
ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwotICAgIAotICAgIC8vIFNldHMgKEludDMyT3Zl
cmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUp
LgotICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0OwotICAgIHZvaWQgZW1pdFNl
dERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKLSAgICAKLSAgICAvLyBTZXRzIE5vbk51bWJl
ci4KLSAgICB2b2lkIGVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0OwotICAg
IGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdDsKLQotICAgIC8vIFNldHMgQmln
SW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJv
b2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0OwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0K
LSAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQot
Ci1wcml2YXRlOgotICAgIGNvbnN0ZXhwciBleHBsaWNpdCBBcml0aFByb2ZpbGUoQ29uc3RhbnRU
YWcsIHVpbnQzMl90IGJpdHMpCi0gICAgICAgIDogbV9iaXRzKGJpdHMpCi0gICAgewotICAgIH0K
LQotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWcsIFJlc3VsdFR5cGUgYXJn
KQotICAgICAgICA6IG1fYml0cyhhcmcuYml0cygpIDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkKKyAg
ICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQogICAgIHsKKyAgICAgICAgcmV0dXJuIGxoc09i
c2VydmVkVHlwZSgpLmlzRW1wdHkoKSAmJiByaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiAg
ICAgfQogCi0gICAgY29uc3RleHByIEFyaXRoUHJvZmlsZShDb25zdGFudFRhZywgUmVzdWx0VHlw
ZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQotICAgICAgICA6IG1fYml0cygobGhzLmJpdHMoKSA8PCBs
aHNSZXN1bHRUeXBlU2hpZnQpIHwgKHJocy5iaXRzKCkgPDwgcmhzUmVzdWx0VHlwZVNoaWZ0KSkK
LSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNCaXRzKGludCBtYXNrKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgJiBtYXNrOyB9Ci0gICAgdm9pZCBzZXRCaXQoaW50IG1hc2spIHsgbV9iaXRzIHw9
IG1hc2s7IH0KLQotICAgIHVpbnQzMl90IG1fYml0cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRv
IHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIg
c3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRhdGlvbiB0byBpdC4KLQogICAgIGZy
aWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIH07CiAKQEAgLTMxNCw3ICsz
NDMsOCBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2UgV1RGIHsKIAotdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpBcml0aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6VW5hcnlBcml0aFByb2ZpbGUmKTsKK3ZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6QmluYXJ5QXJpdGhQcm9maWxl
Jik7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6Ok9ic2VydmVk
VHlwZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGMwODZiOGViM2YzLi5hYzRjODBlZTk0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBA
IC00MSw2ICs0MSw3IEBAIHR5cGVzIFsKICAgICA6SlNUeXBlLAogICAgIDpKU1ZhbHVlLAogICAg
IDpMTEludENhbGxMaW5rSW5mbywKKyAgICA6UmVzdWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVz
LAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZzZXQsCkBA
IC01Nyw3ICs1OCw4IEBAIHR5cGVzIFsKIAogICAgIDpWYWx1ZVByb2ZpbGUsCiAgICAgOlZhbHVl
UHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIsCi0gICAgOkFyaXRoUHJvZmlsZSwKKyAgICA6VW5hcnlB
cml0aFByb2ZpbGUsCisgICAgOkJpbmFyeUFyaXRoUHJvZmlsZSwKICAgICA6QXJyYXlQcm9maWxl
LAogICAgIDpBcnJheUFsbG9jYXRpb25Qcm9maWxlLAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSwKQEAgLTI4MiwxMCArMjg0LDcgQEAgb3BfZ3JvdXAgOlByb2ZpbGVkQmluYXJ5T3AsCiAg
ICAgICAgIG9wZXJhbmRUeXBlczogT3BlcmFuZFR5cGVzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6
IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0aFByb2ZpbGUKLSAgICB9LAotICAgIG1ldGFk
YXRhX2luaXRpYWxpemVyczogewotICAgICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMK
KyAgICAgICAgYXJpdGhQcm9maWxlOiBCaW5hcnlBcml0aFByb2ZpbGUKICAgICB9CiAKIG9wX2dy
b3VwIDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCkBAIC0zNjcsMTMgKzM2NiwxMCBAQCBvcCA6bmVn
YXRlLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAg
IG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5k
VHlwZXMsCisgICAgICAgIHJlc3VsdFR5cGU6IFJlc3VsdFR5cGUsCiAgICAgfSwKICAgICBtZXRh
ZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6IEFyaXRoUHJvZmlsZSwKLSAgICB9LAotICAg
IG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5k
VHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBVbmFyeUFyaXRoUHJvZmlsZSwKICAgICB9CiAK
IG9wIDpub3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IDYwY2M2NWU2NDQ1Li4xNDNhMzYyYWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE0ODAsMjUgKzE0ODAsMjUgQEAgU3RydWN0
dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
KQogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9zdHViSW5mb3MuYWRkKGFjY2Vz
c1R5cGUpOwogfQogCi1KSVRBZGRJQyogQ29kZUJsb2NrOjphZGRKSVRBZGRJQyhBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSkKK0pJVEFkZElDKiBDb2RlQmxvY2s6OmFkZEpJVEFkZElDKEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fYWRkSUNz
LmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRNdWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJ
QyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJ
VE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2Nr
ZXIpLm1fbXVsSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRTdWJJQyogQ29kZUJsb2Nr
OjphZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVFN1YklDKiBDb2Rl
QmxvY2s6OmFkZEpJVFN1YklDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewog
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJl
SklURGF0YShsb2NrZXIpLm1fc3ViSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVROZWdJ
QyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJ
VE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJl
dHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9uZWdJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CkBA
IC0zMDg1LDE2ICszMDg1LDE5IEBAIGNvbnN0IEluc3RydWN0aW9uKiBDb2RlQmxvY2s6Om91dE9m
TGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQogICAgIHJldHVybiBpbnN0cnVj
dGlvbnMoKS5hdChvZmZzZXQgKyB0YXJnZXQpLnB0cigpOwogfQogCi1Bcml0aFByb2ZpbGUqIENv
ZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldCBieXRlY29kZU9mZnNldCkKK0JpbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpi
aW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zm
c2V0IGJ5dGVjb2RlT2Zmc2V0KQogewotICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQyhpbnN0
cnVjdGlvbnMoKS5hdChieXRlY29kZU9mZnNldCkucHRyKCkpOworICAgIHJldHVybiBiaW5hcnlB
cml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZU9mZnNldCkucHRyKCkp
OwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yUEMoY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjKQorVW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6dW5hcnlBcml0
aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVj
b2RlT2Zmc2V0KQoreworICAgIHJldHVybiB1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGluc3RydWN0
aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KS5wdHIoKSk7Cit9CisKK0JpbmFyeUFyaXRoUHJvZmls
ZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiog
cGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewotICAgIGNhc2Ugb3BfbmVnYXRl
OgotICAgICAgICByZXR1cm4gJnBjLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YSh0aGlzKS5tX2Fy
aXRoUHJvZmlsZTsKICAgICBjYXNlIG9wX2FkZDoKICAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BB
ZGQ+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CiAgICAgY2FzZSBvcF9tdWw6CkBA
IC0zMTEwLDExICszMTEzLDIzIEBAIEFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjphcml0aFByb2Zp
bGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
K1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIHN3aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKKyAg
ICBjYXNlIG9wX25lZ2F0ZToKKyAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdhdGU+KCkubWV0
YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJvb2wgQ29kZUJsb2NrOjpjb3Vs
ZFRha2VTcGVjaWFsRmFzdENhc2UoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9m
ZnNldCkKIHsKICAgICBpZiAoIWhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBBcml0aFByb2ZpbGUqIHByb2ZpbGUgPSBhcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBw
cm9maWxlID0gYmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpOwogICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biBwcm9maWxlLT50b29rU3BlY2lhbEZhc3RQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNDIzM2VhMjFlOTQuLjJhMDM2Y2FiMzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04Myw2ICs4Myw4
IEBAIHN0cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8vIG5hbWVzcGFjZSBERkcKICNlbmRpZgogCitj
bGFzcyBVbmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNz
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U7CkBAIC05Niw3ICs5OCw2IEBAIGNsYXNzIFN0cnVjdHVy
ZVN0dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CiAKLXN0cnVjdCBB
cml0aFByb2ZpbGU7CiBzdHJ1Y3QgT3BDYXRjaDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUg
eyBEb250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwpAQCAtMjc5
LDIyICsyODAsMjIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVREYXRhJiBlbnN1cmVKSVREYXRh
U2xvdyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKTsKIAotICAgIEpJVEFkZElDKiBhZGRKSVRB
ZGRJQyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRNdWxJQyogYWRkSklUTXVsSUMoQXJpdGhQcm9m
aWxlKik7Ci0gICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJ
VFN1YklDKiBhZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqKTsKKyAgICBKSVRBZGRJQyogYWRkSklU
QWRkSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEJp
bmFyeUFyaXRoUHJvZmlsZSopOworICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhVbmFyeUFyaXRo
UHJvZmlsZSopOworICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUq
KTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUQWRkR2VuZXJhdG9y
Pjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVEFkZElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBw
cm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhwcm9maWxlKTsgfQorICAgIEpJVEFkZElDKiBh
ZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJ
Qyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5h
bWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRN
dWxHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTXVsSUMqIGFkZE1hdGhJQyhBcml0
aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CisgICAg
SklUTXVsSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJu
IGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJh
dG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5l
cmF0b3IsIEpJVE5lZ0dlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBKSVROZWdJQyogYWRk
TWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTmVnSUMocHJvZmls
ZSk7IH0KKyAgICBKSVROZWdJQyogYWRkTWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxl
KSB7IHJldHVybiBhZGRKSVROZWdJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3NhbWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklU
U3ViSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1
YklDKHByb2ZpbGUpOyB9CisgICAgSklUU3ViSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2Zp
bGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CiAKICAgICBTdHJ1
Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNjZXNzVHlwZSk7CiAKQEAgLTQ5Miw4ICs0OTMs
MTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFj
aE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMTEludENhbGxMaW5rSW5mbyhjb25zdCBGdW5j
dG9yJik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpOwotICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICBCaW5hcnlB
cml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpOworICAgIFVuYXJ5QXJpdGhQcm9maWxl
KiB1bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpP
ZmZzZXQgYnl0ZWNvZGVPZmZzZXQpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJp
dGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICBVbmFyeUFyaXRoUHJvZmls
ZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiopOwogCiAgICAgYm9v
bCBjb3VsZFRha2VTcGVjaWFsRmFzdENhc2UoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRl
Y29kZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDlh
Yjc3MTM3YWE2Li5kNDFjZmMxMmI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0
cy5oCkBAIC0yMzYsNiArMjM2LDE4IEBAIHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1CiAgICAgfQog
fTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UmVzdWx0VHlwZSwg
c2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoUmVzdWx0VHlwZSkgIT0gc2l6ZSwgc3RkOjp0
cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihSZXN1bHRUeXBlKSA9PSBzaXplb2YodWludDhfdCkpOworICAgIHVzaW5nIEJh
c2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUmVzdWx0
VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjaGVjayh0eXBlLmJpdHMoKSk7IH0KKworICAgIHN0
YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUmVzdWx0VHlwZSB0eXBlKSB7
IHJldHVybiBCYXNlOjpjb252ZXJ0KHR5cGUuYml0cygpKTsgfQorCisgICAgc3RhdGljIFJlc3Vs
dFR5cGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIHR5cGUpIHsgcmV0dXJuIFJl
c3VsdFR5cGUoQmFzZTo6Y29udmVydCh0eXBlKSk7IH0KK307CisKIHRlbXBsYXRlPE9wY29kZVNp
emUgc2l6ZT4KIHN0cnVjdCBGaXRzPE9wZXJhbmRUeXBlcywgc2l6ZSwgc3RkOjplbmFibGVfaWZf
dDxzaXplb2YoT3BlcmFuZFR5cGVzKSAhPSBzaXplLCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kVHlwZXMpID09IHNpemVvZih1aW50MTZfdCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDdlM2NjOTRmYTQ2Li5lMDI3NzY5YTBj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcApAQCAtNjYsMTAgKzY2LDE2IEBAIHZv
aWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVs
cGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAot
ICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5hcml0aFByb2ZpbGUtPmVt
aXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICBj
YXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmls
ZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwog
ICAgICAgICByZXR1cm47Ci0gICAgfSB9CisgICAgfQorCisgICAgY2FzZSBCaW5hcnlBcml0aFBy
b2ZpbGVSZWFkeTogeworICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVS
ZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQpAQCAtOTQsMTAgKzEwMCwxNiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6
OnJlcG9ydFZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBjYXNlIEFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUuYXJpdGhQcm9maWxlLT5vYnNl
cnZlUmVzdWx0KHZhbHVlKTsKKyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAg
ICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdCh2YWx1ZSk7CiAgICAgICAg
IHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAgICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJl
YWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKaW5kZXggYjVlODRiMTMz
N2UuLjA0NDE1MDEzOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKQEAgLTM1LDEwICsz
NSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7Citj
bGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBDQ2FsbEhlbHBlcnM7CiBjbGFzcyBDb2Rl
QmxvY2s7CiBjbGFzcyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTsKLXN0cnVjdCBBcml0aFBy
b2ZpbGU7CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiBjbGFzcyBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlIHsKQEAgLTU2LDEyICs1NywyMSBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9Ci0gICAgCi0gICAgTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZShBcml0aFByb2ZpbGUqIHByb2ZpbGUpCisKKyAgICBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKQorICAgIHsKKyAg
ICAgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAgICAgICAgIG1fa2luZCA9IFVuYXJ5QXJpdGhQcm9m
aWxlUmVhZHk7CisgICAgICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2tpbmQgPSBOb25lOworICAgIH0KKworICAgIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKQog
ICAgIHsKICAgICAgICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgIG1fa2luZCA9IEFyaXRo
UHJvZmlsZVJlYWR5OwotICAgICAgICAgICAgdS5hcml0aFByb2ZpbGUgPSBwcm9maWxlOworICAg
ICAgICAgICAgbV9raW5kID0gQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk7CisgICAgICAgICAgICB1
LmJpbmFyeUFyaXRoUHJvZmlsZSA9IHByb2ZpbGU7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgbV9raW5kID0gTm9uZTsKICAgICB9CkBAIC03OCwxNCArODgsMTYgQEAgcHJpdmF0ZToKICAg
ICBlbnVtIEtpbmQgewogICAgICAgICBOb25lLAogICAgICAgICBSZWFkeSwKLSAgICAgICAgQXJp
dGhQcm9maWxlUmVhZHksCisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHksCisgICAgICAg
IEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAogICAgICAgICBMYXp5T3BlcmFuZAogICAgIH07CiAg
ICAgCiAgICAgS2luZCBtX2tpbmQ7CiAgICAgdW5pb24gewogICAgICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGU7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlOworICAgICAgICBV
bmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlOwogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZTc5MTRhYTQ3YzUuLmI3YTRhYTNkMWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtMTY2NSwxNCArMTY2NSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE1vdmUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAg
ICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRV
bmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNy
YywgT3BlcmFuZFR5cGVzIHR5cGVzKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNyYywgUmVzdWx0VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBj
YXNlIG9wX25vdDoKICAgICAgICAgZW1pdFVuYXJ5T3A8T3BOb3Q+KGRzdCwgc3JjKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBvcF9uZWdhdGU6Ci0gICAgICAgIE9wTmVnYXRlOjplbWl0KHRo
aXMsIGRzdCwgc3JjLCB0eXBlcyk7CisgICAgICAgIE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwg
c3JjLCB0eXBlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9iaXRub3Q6CiAgICAgICAg
IGVtaXRVbmFyeU9wPE9wQml0bm90Pihkc3QsIHNyYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNDE5N2Fi
YzEyZTUuLjM4ZTc3Y2RiMTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC02ODIsNyArNjgyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZHN0OwogICAgICAgICB9CiAKLSAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdFVuYXJ5T3AoT3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5h
cnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIFJlc3VsdFR5
cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJpbmFyeU9wPgogICAgICAgICBzdGQ6
OmVuYWJsZV9pZl90PApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDY1OTM3ZjMxOWJlLi5lNDgxYTRmMWUxMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtMjEzNiw3ICsyMTM2LDcgQEAgUmVnaXN0ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogewogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0
aW9uKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpLCBPcGVyYW5kVHlwZXMobV9l
eHByLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbmFy
eU9wKG9wY29kZUlEKCksIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQo
KSwgbV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gVW5hcnlQbHVzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCA2NjEwMTNhODc3Ny4uMWZlNGRiZTgwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC05NDIsNTYgKzk0Miw2MCBA
QCBwcml2YXRlOgogICAgICAgICBpZiAoIWlzWDg2KCkgJiYgKG5vZGUtPm9wKCkgPT0gQXJpdGhN
b2QgfHwgbm9kZS0+b3AoKSA9PSBWYWx1ZU1vZCkpCiAgICAgICAgICAgICByZXR1cm4gbm9kZTsK
IAotICAgICAgICB7Ci0gICAgICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQobV9jdXJyZW50SW5kZXgpOwotICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZSkgewot
ICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAgIGNh
c2UgQXJpdGhBZGQ6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aFN1YjoKLSAgICAgICAgICAg
ICAgICBjYXNlIFZhbHVlQWRkOgotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxl
LT5kaWRPYnNlcnZlRG91YmxlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJn
ZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0lu
dFJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVNdWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0
aE11bDogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
SW50NTJPdmVyZmxvdygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMklu
QmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVS
ZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
Tm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhO
b2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJp
dGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhc2UgVmFs
dWVOZWdhdGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aE5lZ2F0ZTogewotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIo
KSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgp
IHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJn
ZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFj
a1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cp
KQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZs
b3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxl
LT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7CisgICAgICAgIGNhc2UgQXJpdGhBZGQ6CisgICAgICAgIGNhc2UgQXJpdGhTdWI6
CisgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKKyAgICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5iaW5h
cnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCk7CisgICAgICAg
ICAgICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAg
ICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAg
IGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOb25OdW1lcmljKCkpCisgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAg
ICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAg
ICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBWYWx1ZU11bDoKKyAgICAgICAgY2Fz
ZSBBcml0aE11bDogeworICAgICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgIGlmICghYXJp
dGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGFyaXRo
UHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSkKKyAgICAgICAgICAgICAgICBub2Rl
LT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDUyKTsKKyAgICAgICAgICAgIGlmIChhcml0
aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2Vs
aW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91
YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxl
LT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6CisgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6
IHsKKyAgICAgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQobV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5hcmdP
YnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3Vi
bGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91Ymxl
UmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJv
RG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJn
ZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGlu
ZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygp
KQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmlj
UmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQo
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVz
dWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1
cnJlbnRJbmRleCkpIHsKQEAgLTEwMzQsNyArMTAzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IEZJWE1FOiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBtYWtlIHRoaXMgbW9yZSBncmFudWxhci4K
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUg
fCBOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwogICAgICAgICAKLSAgICAgICAgQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudElu
ZGV4KTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQogICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggOWQ1YjdkOTMzN2MuLjRjNmQx
MDk5YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTY1Miw3
ICsxNjUyLDkgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihOb2RlKiBjdXJyZW4KICAgICAgICAgICAgICAgICByZXR1
cm4gJnByb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpOwogCiAgICAgICAgICAgICBpZiAocHJvZmls
ZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAgICAgIGlm
IChBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAg
ICAgICAgICAgICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxv
Y2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICAgICAgICAgIGlmIChVbmFyeUFyaXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmls
ZWRCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChub2RlLT5vcmlnaW4u
c2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA5ZDAzOGI1ZjMyYy4uZjYzMmQxMTY0
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC00MDAwLDcgKzQwMDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVBZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBt
X2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Cisg
ICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+
YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAg
SklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVEFkZElDKGFyaXRoUHJv
ZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZE9w
dGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVB
ZGQ7CkBAIC00MDI0LDcgKzQwMjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVTdWIoTm9kZSogbm9kZSkKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2Nr
ID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwogICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFz
ZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlSW5kZXgpOwogICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+
YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rp
b24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hp
bmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwpAQCAtNDYxOCw3ICs0NjE4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUqIG5vZGUpCiB7CiAgICAg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2Rl
QmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTmVnSUMqIG5lZ0lDID0gbV9qaXQuY29k
ZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5n
RnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplOwogICAgIGF1dG8gbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7CkBAIC00ODQxLDcgKzQ4NDEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwoTm9kZSogbm9kZSkKIAog
ICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5l
Q29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9q
aXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplOwogICAgIGF1dG8gbm9u
UmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYTNiODRkNjM3OTguLjkzOGRj
ODcwMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCkBAIC0yMTA3LDcgKzIxMDcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hp
bmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9u
UmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7CiAgICAgICAgIGNvbXBpbGVC
aW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5j
dGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTIxMjYsNyArMjEyNiw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUu
Z3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAg
ICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0
ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2Vs
aW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4
KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRl
eCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJP
cHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25W
YWx1ZVN1YjsKICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+KGFy
aXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpA
QCAtMjE0NSw3ICsyMTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2Vs
aW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBt
X25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplOwogICAgICAgICBhdXRvIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVsOwogICAgICAgICBjb21waWxlQmluYXJ5
TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24s
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTUzLDcgKzIxNTMsNyBAQCBwcml2YXRlOgog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVu
YW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19m
dW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVl
ICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46
OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21waWxlVW5hcnlNYXRoSUMoQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRj
aGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGlsZVVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKIApA
QCAtMjIzOSw3ICsyMjM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBH
ZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBlbmFtZSBGdW5jMiwKICAgICAgICAgdHlwZW5h
bWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1v
dmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+Ojp0eXBlPjo6dmFsdWU+PgotICAgIHZvaWQg
Y29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVw
YXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCisgICAgdm9pZCBj
b21waWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5j
MSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7
CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIApAQCAtMjQwNiw3ICsyNDA2
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
ayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hp
bmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CiAgICAgICAgICAgICBhdXRv
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwogICAgICAgICAgICAg
Y29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRj
aGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMzA3Miw3ICszMDcyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgg
PSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1
bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25S
ZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZTsKICAgICAgICAgY29tcGls
ZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVu
Y3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCA0MjdlOWFlZGY1OS4uMGQyMmZkMGMyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAt
OTE5LDcgKzkxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBJdCB3aWxsIGdpdmUg
dGhlIHNsb3cgcGF0aCB0aGUgc2FtZSB2YWx1ZSByZWFkIGJ5IHRoZSBmYXN0IHBhdGguCiAgICAg
ICAgIEdldFB1dEluZm8gY29waWVkR2V0UHV0SW5mbyhPcFB1dFRvU2NvcGUpOwogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLSAgICAgICAgQXJpdGhQcm9maWxlIGNvcGllZEFy
aXRoUHJvZmlsZShCaW5hcnlPcCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBjb3BpZWRB
cml0aFByb2ZpbGUoQmluYXJ5T3ApOwogCiAgICAgICAgIEludGVycHJldGVyKiBtX2ludGVycHJl
dGVyOwogCkBAIC05MzksNyArOTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3Rv
cjxTd2l0Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7CiAKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwg
dW5zaWduZWQ+IG1fY29waWVkR2V0UHV0SW5mb3M7Ci0gICAgICAgIEhhc2hNYXA8dWludDY0X3Qs
IEFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0aFByb2ZpbGVzOworICAgICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBCaW5hcnlBcml0aFByb2ZpbGU+IG1fY29waWVkQXJpdGhQcm9maWxlczsKIAogICAg
ICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNoZWNrczsKICAgICAgICAgSnVtcExpc3QgbV9leGNl
cHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKaW5kZXggNjI3YWYyNzg3ZTAuLjc0MGIyZWQ4YmQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBA
IC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1
bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0
aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3Qg
QmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0
byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBl
KCkud2l0aEludDMyKCk7CkBAIC03Myw3ICs3Myw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBK
SVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNH
CiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsK
IH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRBZGRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBj
b25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAg
ICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCmluZGV4IDRkYzM0YTJmNWI2Li42
NzVjZjkzYzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRv
ci5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVy
YW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3JpZ2h0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAg
ICAgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVs
cGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAg
IGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlz
dCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBK
SVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBn
ZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVu
ZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25z
dCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAg
c3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVm
dE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0K
ICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJh
bmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiByaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50
MzIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1l
dGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5k
ZXggZjQyMGFlOTlkMGUuLmYzYzcxYTk3N2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1f
YXJpdGhQcm9maWxlOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9h
cml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMqIG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJ
VE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4o
bmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwpAQCAtNjMzLDE0ICs2MzMsOSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQp
OwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBPcGVyYW5kVHlwZXMgZ2V0T3BlcmFuZFR5cGVz
KGNvbnN0IEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQotewotICAgIHJldHVybiBPcGVyYW5k
VHlwZXMoYXJpdGhQcm9maWxlLmxoc1Jlc3VsdFR5cGUoKSwgYXJpdGhQcm9maWxlLnJoc1Jlc3Vs
dFR5cGUoKSk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
JmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1f
YXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJp
dGhQcm9maWxlOwogICAgIEpJVEFkZElDKiBhZGRJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJ
Qyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudElu
c3RydWN0aW9uLCBhZGRJQyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BBZGQ+KGFkZElDLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVl
QWRkKTsKQEAgLTY4NSw3ICs2ODAsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5h
cnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogYwogCiAgICAg
Ym9vbCBnZW5lcmF0ZWRJbmxpbmVDb2RlID0gbWF0aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywg
bWF0aElDR2VuZXJhdGlvblN0YXRlKTsKICAgICBpZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsK
LSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5h
cml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1
bmN0aW9uLCByZXN1bHRSZWdzLCBzcmNSZWdzLCBhcml0aFByb2ZpbGUpOwogICAgICAgICBlbHNl
CkBAIC03MDgsNyArNzAzLDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5l
cmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE4KIHZvaWQgSklUOjpl
bWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVk
RnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBPcGVy
YW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY29waWVkQXJpdGhQcm9maWxlKGJ5dGVj
b2RlKSk7CiAgICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGlu
dCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUu
bV9yaHMub2Zmc2V0KCk7CkBAIC03MjcsOCArNzIxLDggQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNG
YXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9u
KgogICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gZnBSZWdUMjsKICNlbmRpZgogCi0gICAgU25pcHBl
dE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMuZmlyc3QoKSk7Ci0gICAgU25pcHBldE9wZXJhbmQg
cmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3Bl
cmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5maXJzdCgpKTsKKyAgICBTbmlwcGV0T3BlcmFu
ZCByaWdodE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuc2Vjb25kKCkpOwogCiAgICAg
aWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkpCiAgICAgICAgIGxlZnRPcGVyYW5kLnNldENv
bnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSkpOwpAQCAtNzU4LDcgKzc1Miw3IEBA
IHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0
aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIob3AxLCBsZWZ0UmVncyk7CiAgICAgICAgIGVsc2UgaWYgKHJpZ2h0T3BlcmFuZC5pc0NvbnN0
KCkpCiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmlnaHRSZWdzKTsK
LSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+
YXJpdGhQcm9maWxlKCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFBy
b2ZpbGluZygpKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQocHJvZmlsZWRG
dW5jdGlvbiwgcmVzdWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncywgYXJpdGhQcm9maWxlKTsK
ICAgICAgICAgZWxzZQpAQCAtNzk4LDcgKzc5Miw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xv
dyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBj
CiAgICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKICNlbmRpZgogCi0gICAgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIFVuYXJ5
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOwogICAg
IGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGlm
IChtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2hvdWxkU2xvd1BhdGhSZXBhdGNoKQogICAgICAgICAg
ICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb25XaXRo
UmVzdWx0KHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fRUpNaWM+KHByb2ZpbGVkUmVw
YXRjaEZ1bmN0aW9uKSwgcmVzdWx0UmVncywgc3JjUmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMp
KTsKQEAgLTgzMCw3ICs4MjQsNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5
TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgbWF0aElD
R2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogCiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgT3BlcmFuZFR5cGVzIHR5
cGVzID0gZ2V0T3BlcmFuZFR5cGVzKGNvcGllZEFyaXRoUHJvZmlsZShieXRlY29kZSkpOwogICAg
IGludCByZXN1bHQgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0
ZWNvZGUubV9saHMub2Zmc2V0KCk7CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNl
dCgpOwpAQCAtODQ1LDggKzgzOCw4IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5h
cnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gbGVmdFJlZ3M7CiAjZW5kaWYKICAgICAKLSAgICBTbmlwcGV0
T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCBy
aWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVy
YW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5k
IHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBp
ZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29u
c3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC04NjQsNyArODU3LDcgQEAg
dm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRo
SUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7
CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0
aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJ
Qy0+YXJpdGhQcm9maWxlKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpIHsKICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93
UGF0aFJlcGF0Y2gpCiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQoYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9u
X0VKSk1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBsZWZ0UmVncywg
cmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwpAQCAtODkyLDE5ICs4ODUsMTYgQEAg
dm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRo
SUMsIGNvbnN0IEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BEaXY+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0
Lm9mZnNldCgpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBp
bnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRo
UHJvZmlsZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7
CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEpOwogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHJlZ1QyOwogI2Vsc2UKLSAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMo
bWV0YWRhdGEubV9hcml0aFByb2ZpbGUpOwogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSBKU1Zh
bHVlUmVncyhyZWdUMywgcmVnVDIpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0
UmVnczsKQEAgLTkxMiwxMiArOTAyLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiAgICAgRlBSUmVnIHNjcmF0
Y2hGUFIgPSBmcFJlZ1QyOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxs
cHRyOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbnVsbHB0cjsKICAg
ICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICBhcml0aFByb2ZpbGUgPSAmY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcERpdj4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0
aFByb2ZpbGU7CiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgp
KTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAg
IFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0
KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRU
eXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAg
ICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3Ax
KSk7CkBAIC05NTksNyArOTQ5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0X29wX211bChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BNdWw+KCkubWV0YWRhdGEo
bV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BNdWw+KCkubWV0YWRhdGEobV9j
b2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE11bElDKiBtdWxJQyA9IG1fY29kZUJs
b2NrLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJ
Qy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBtdWxJQyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BN
dWw+KG11bElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQs
IG9wZXJhdGlvblZhbHVlTXVsKTsKQEAgLTk3NSw3ICs5NjUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRo
UHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJv
ZmlsZTsKICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2NvZGVCbG9jay0+YWRkSklUU3ViSUMoYXJp
dGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVj
dGlvbiwgc3ViSUMpOwogICAgIGVtaXRNYXRoSUNGYXN0PE9wU3ViPihzdWJJQywgY3VycmVudElu
c3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1Yik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKaW5kZXgg
NjZlMWJlMTRhOGQuLmI4YzQ3OTg2ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVREaXZHZW5lcmF0b3IuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBKSVREaXZHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgbm90RG91Ymxl
WmVyby5saW5rKCZqaXQpOwogI2VuZGlmCiAgICAgaWYgKG1fYXJpdGhQcm9maWxlKQotICAgICAg
ICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6OnNwZWNp
YWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9m
aWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpzcGVjaWFsRmFzdFBhdGhCaXQpLCBDQ2Fs
bEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhtX2FyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygp
KSk7CiAgICAgaml0LmJveERvdWJsZShtX2xlZnRGUFIsIG1fcmVzdWx0KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKaW5kZXggODM5NjY3Nzk0M2Yu
LjcwOGRiMTBkNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERp
dkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJh
dG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIEpJVERpdkdlbmVyYXRvcihTbmlw
cGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCwgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kLAogICAg
ICAgICBKU1ZhbHVlUmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIGxlZnQsIEpTVmFsdWVSZWdzIHJp
Z2h0LAogICAgICAgICBGUFJSZWcgbGVmdEZQUiwgRlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2Ny
YXRjaEdQUiwgRlBSUmVnIHNjcmF0Y2hGUFIsCi0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbnVsbHB0cikKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBudWxscHRyKQogICAgICAgICA6IG1fbGVmdE9wZXJhbmQobGVmdE9wZXJhbmQpCiAgICAg
ICAgICwgbV9yaWdodE9wZXJhbmQocmlnaHRPcGVyYW5kKQogICAgICAgICAsIG1fcmVzdWx0KHJl
c3VsdCkKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9zY3JhdGNoR1BS
OwogICAgIEZQUlJlZyBtX3NjcmF0Y2hGUFI7CiAgICAgYm9vbCBtX2RpZEVtaXRGYXN0UGF0aCB7
IGZhbHNlIH07Ci0gICAgQXJpdGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlB
cml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOwogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dCBtX2VuZEp1bXBMaXN0OwogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbV9zbG93UGF0aEp1
bXBMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAzOTU5Yjhk
NTA4OC4uNTdhODFlYzc5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CkBAIC03MTcsMTMgKzcxNywxMyBAQCBBTFdBWVNfSU5MSU5FIEdldFB1dEluZm8gSklUOjpjb3Bp
ZWRHZXRQdXRJbmZvKE9wUHV0VG9TY29wZSBieXRlY29kZSkKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQmluYXJ5T3A+Ci1BTFdBWVNfSU5MSU5FIEFyaXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRo
UHJvZmlsZShCaW5hcnlPcCBieXRlY29kZSkKK0FMV0FZU19JTkxJTkUgQmluYXJ5QXJpdGhQcm9m
aWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVjb2RlKQogewogICAgIHVp
bnQ2NF90IGtleSA9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4oQmluYXJ5T3A6Om9wY29kZUlEKSAr
IDEpIDw8IDMyIHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ5dGVjb2RlLm1fbWV0YWRhdGFJRCk7
CiAgICAgYXV0byBpdGVyYXRvciA9IG1fY29waWVkQXJpdGhQcm9maWxlcy5maW5kKGtleSk7CiAg
ICAgaWYgKGl0ZXJhdG9yICE9IG1fY29waWVkQXJpdGhQcm9maWxlcy5lbmQoKSkKICAgICAgICAg
cmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLSAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlID0g
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
aykubV9hcml0aFByb2ZpbGU7CiAgICAgbV9jb3BpZWRBcml0aFByb2ZpbGVzLmFkZChrZXksIGFy
aXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE1hdGhJQy5oCmluZGV4IDU2NDVlNDJkZWZmLi44NDY0NjIyYTZkOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCkBAIC01MiwxMSArNTIsMTEgQEAgc3RydWN0
IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSB7CiAKICNkZWZpbmUgRU5BQkxFX01BVEhfSUNfU1RBVFMg
MAogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1w
dHkpKEFyaXRoUHJvZmlsZSYpPgordGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGUsIHR5
cGVuYW1lIEFyaXRoUHJvZmlsZVR5cGU+CiBjbGFzcyBKSVRNYXRoSUMgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEpJVE1hdGhJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKKyAgICBKSVRNYXRoSUMoQXJpdGhQcm9maWxlVHlwZSogYXJpdGhQcm9maWxl
KQogICAgICAgICA6IG1fYXJpdGhQcm9maWxlKGFyaXRoUHJvZmlsZSkKICAgICB7CiAgICAgfQpA
QCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQu
bV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKTsKIAogICAgICAgICBpZiAobV9hcml0aFBy
b2ZpbGUpIHsKLSAgICAgICAgICAgIGlmIChpc1Byb2ZpbGVFbXB0eSgqbV9hcml0aFByb2ZpbGUp
KSB7CisgICAgICAgICAgICBpZiAobV9hcml0aFByb2ZpbGUtPmlzT2JzZXJ2ZWRUeXBlRW1wdHko
KSkgewogICAgICAgICAgICAgICAgIC8vIEl0IGxvb2tzIGxpa2UgdGhlIE1hdGhJQyBoYXMgeWV0
IHRvIGV4ZWN1dGUuIFdlIGRvbid0IHdhbnQgdG8gZW1pdCBjb2RlIGluIHRoaXMKICAgICAgICAg
ICAgICAgICAvLyBjYXNlIGZvciBhIGNvdXBsZSByZWFzb25zLiBGaXJzdCwgdGhlIG9wZXJhdGlv
biBtYXkgbmV2ZXIgZXhlY3V0ZSwgc28gaWYgd2UgZG9uJ3QgZW1pdAogICAgICAgICAgICAgICAg
IC8vIGNvZGUsIGl0J3MgYSB3aW4uIFNlY29uZCwgaWYgdGhlIG9wZXJhdGlvbiBkb2VzIGV4ZWN1
dGUsIHdlIGNhbiBlbWl0IGJldHRlciBjb2RlCkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgog
ICAgICAgICBtX3Nsb3dQYXRoU3RhcnRMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihzdGF0ZS5zbG93UGF0aFN0YXJ0KTsKICAgICB9CiAKLSAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJpdGhQcm9maWxlOyB9
CisgICAgQXJpdGhQcm9maWxlVHlwZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9h
cml0aFByb2ZpbGU7IH0KIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgIHNpemVfdCBt
X2dlbmVyYXRlZENvZGVTaXplIHsgMCB9OwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAg
ICB9CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZSogbV9hcml0aFByb2ZpbGU7CisgICAgQXJp
dGhQcm9maWxlVHlwZSogbV9hcml0aFByb2ZpbGU7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2NvZGU7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJ
bnRlcm5hbFB0clRhZz4gbV9pbmxpbmVTdGFydDsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPiBtX2lubGluZUVuZDsKQEAgLTI0NiwxNSArMjQ2LDE1IEBAIHB1YmxpYzoK
ICAgICBHZW5lcmF0b3JUeXBlIG1fZ2VuZXJhdG9yOwogfTsKIAotaW5saW5lIGJvb2wgaXNCaW5h
cnlQcm9maWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCitpbmxpbmUgYm9vbCBp
c0JpbmFyeVByb2ZpbGVFbXB0eShCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKIHsK
ICAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSB8fCBh
cml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOwogfQogdGVtcGxhdGUgPHR5
cGVuYW1lIEdlbmVyYXRvclR5cGU+Ci1jbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklU
TWF0aElDPEdlbmVyYXRvclR5cGUsIGlzQmluYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRC
aW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRo
UHJvZmlsZT4gewogcHVibGljOgotICAgIEpJVEJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQ
cm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkKKyAgICBKSVRCaW5hcnlNYXRoSUMoQmluYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5
cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4oYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CiB9OwpA
QCAtMjY0LDE1ICsyNjQsMTUgQEAgdHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUTXVsR2VuZXJh
dG9yPiBKSVRNdWxJQzsKIHR5cGVkZWYgSklUQmluYXJ5TWF0aElDPEpJVFN1YkdlbmVyYXRvcj4g
SklUU3ViSUM7CiAKIAotaW5saW5lIGJvb2wgaXNVbmFyeVByb2ZpbGVFbXB0eShBcml0aFByb2Zp
bGUmIGFyaXRoUHJvZmlsZSkKK2lubGluZSBib29sIGlzVW5hcnlQcm9maWxlRW1wdHkoQmluYXJ5
QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZS5s
aHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJh
dG9yVHlwZT4KLWNsYXNzIEpJVFVuYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0
b3JUeXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRVbmFyeU1hdGhJQyA6IHB1
YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgVW5hcnlBcml0aFByb2ZpbGU+IHsKIHB1Ymxp
YzoKLSAgICBKSVRVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAg
ICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0eT4oYXJpdGhQ
cm9maWxlKQorICAgIEpJVFVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVuYXJ5QXJpdGhQcm9maWxl
Pihhcml0aFByb2ZpbGUpCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKaW5kZXggODNkMjkzYjYyNTIuLmNmNmJhYTUyZjYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1
bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0
aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3Qg
QmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0
byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBl
KCkud2l0aEludDMyKCk7CkBAIC04OSw3ICs4OSw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBK
SVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNH
CiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsK
IH0KIAotYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRNdWxHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBj
b25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAg
ICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsKQEAgLTIwNSwx
OCArMjA1LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxs
SGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAKICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIG5vdE5lZ2F0aXZlWmVybyA9IGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6Ok5v
dEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0
KG5lZ2F0aXZlWmVyb0JpdHMpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBq
aXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5l
Z1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUt
PmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGpp
dC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAg
IGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVn
WmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+
YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAg
ICAgICAgaml0Lm1vdmUobV9yZXN1bHQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hHUFIpOwogICAg
ICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUyKSwgbV9zY3JhdGNoR1BS
KTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6SW1tMzIoMHg3ZmYpLCBtX3NjcmF0
Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9JbnQ1Mk92ZXJmbG93ID0gaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW5PckVxdWFsLCBtX3NjcmF0Y2hHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMxKSk7CiAKLSAgICAgICAgaml0Lm9yMzIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0Nh
bGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkp
KTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJp
dGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgbm9JbnQ1Mk92ZXJmbG93
LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwpAQCAtMjI3LDE4ICsyMjcs
MTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmFw
cGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1bHQucGF5bG9h
ZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOwogICAgICAgICBub3ROZWdh
dGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jl
c3VsdC50YWdHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobmVnYXRpdmVaZXJvQml0
cyA+PiAzMikpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRk
cmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3Vi
bGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NP
ZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7
CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJs
ZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09m
Qml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJp
bmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAgICAgICAgaml0
Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC51cnNo
aWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIgLSAzMiksIG1fc2NyYXRjaEdQUik7CiAgICAg
ICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3JhdGNoR1BSKTsK
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGppdC5icmFuY2gz
MihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogICAgICAgICAKLSAgICAgICAgaml0Lm9yMzIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0Nh
bGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkp
KTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJp
dGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAgICBlbmRKdW1wTGlzdC5h
cHBlbmQobm9JbnQ1Mk92ZXJmbG93KTsKICAgICAgICAgaWYgKG1fc2NyYXRjaEdQUiA9PSBtX3Jl
c3VsdC50YWdHUFIoKSB8fCBtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKaW5kZXggMzZkMjZl
YTEyNGUuLjYwODc3OTY2ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE11bEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVs
R2VuZXJhdG9yLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIW1f
bGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9wZXJhbmQuaXNQ
b3NpdGl2ZUNvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0
IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNv
bnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBl
cnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVt
aXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShD
Q2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5hcnlBcml0aFBy
b2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNs
b3dKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNu
aXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5pc1Bvc2l0aXZl
Q29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0
YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRPcGVyYW5kLmlz
UG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TmVnR2VuZXJhdG9yLmNwcAppbmRleCA5MmMyOWRkNjMwYS4uY2VlYmUzOTA5NGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdH
ZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0
aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE1h
dGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVs
cGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBVbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52
YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BS
KCkpOwpAQCAtNDUsNyArNDUsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJh
dG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIC8vIFdl
IGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIG9ic2VydmVk
VHlwZXMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKICAgICBpZiAoYXJpdGhQcm9maWxl
KQotICAgICAgICBvYnNlcnZlZFR5cGVzID0gYXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUo
KTsKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+YXJnT2JzZXJ2ZWRUeXBl
KCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghb2JzZXJ2ZWRUeXBlcy5pc0VtcHR5KCksICJX
ZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2VuZXJhdGUgYW55dGhpbmcgaWYgd2UgZG8gbm90IGhh
dmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYgKG9ic2VydmVkVHlwZXMuaXNPbmx5Tm9uTnVtYmVy
KCkpCkBAIC04Miw3ICs4Miw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0
b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJu
IEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBK
SVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxs
SGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBz
bG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBz
aG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0
LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAg
ICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwogICAgIEFTU0VS
VChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKQEAgLTExNyw3ICsxMTcs
NyBAQCBib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMm
IGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogI2VuZGlmCiAgICAgLy8gVGhlIGZsYWdzIG9m
IEFyaXRoTmVnYXRlIGFyZSBiYXNpYyBpbiBERkcuCiAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGtu
b3cgaWYgd2UgZXZlciBwcm9kdWNlZCBhIG51bWJlci4KLSAgICBpZiAoc2hvdWxkRW1pdFByb2Zp
bGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCku
c2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgIGlm
IChzaG91bGRFbWl0UHJvZmlsaW5nICYmIGFyaXRoUHJvZmlsZSAmJiAhYXJpdGhQcm9maWxlLT5h
cmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSAmJiAhYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
RG91YmxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFNldERvdWJsZShqaXQpOwogICAg
IHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVROZWdHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJh
dG9yLmgKaW5kZXggOGEwYzJkNTE3ZDYuLjc4N2I3MDc2ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgog
ICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgIHsgfQogCi0gICAgSklUTWF0
aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVy
YXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0
UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9m
aWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1
bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwg
Y29uc3QgVW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVs
cGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxl
KiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogcHJpdmF0ZToKICAgICBKU1ZhbHVlUmVn
cyBtX3Jlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IDYzOTQ2M2M5OWU5Li4xODc5NDU5ZGIzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNTU0LDcgKzI1NTQsNyBAQCBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkQWRkKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGQoZXhlYywgb3Ax
LCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmls
ZWRBZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKK0FMV0FZU19J
TkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkQWRkKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmlu
YXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTI1NzQs
NyArMjU3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVB
ZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlCiAgICAgcmV0dXJuIHVucHJvZmls
ZWRBZGQoZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJu
IHByb2ZpbGVkQWRkKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUp
OwpAQCAtMjU4OCw3ICsyNTg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLAogICAgIEpTVmFs
dWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogICAgIEpTVmFsdWUgb3AyID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZSk7CiAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKICAg
ICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09w
dGltaXplOwpAQCAtMjYwOSw3ICsyNjA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJp
dGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJ
Qy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJu
IHByb2ZpbGVkQWRkKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUp
OwogfQpAQCAtMjYyMyw3ICsyNjIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEoKICAgICBK
U1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAogICAgIGF1dG8gbm9u
T3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGROb09wdGltaXplOwotICAgIGlmIChB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBp
ZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxl
KCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAg
ICAgYWRkSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGV4ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6
ZVZhcmlhbnQpOwogCkBAIC0yNjU1LDcgKzI2NTUsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkTXVsKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNdWwoZXhlYywgb3AxLCBvcDIpKTsKIH0K
IAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRNdWwoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhT
QW5kUkhTVHlwZXMgPSB0cnVlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
cHJvZmlsZWRNdWwoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmls
ZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtMjY5Myw3ICsyNjkzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZU11bE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEoKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgIGF1dG8gbm9uT3B0aW1p
emVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplOwotICAgIGlmIChBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCkpCiAg
ICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgbXVsSUMtPmdlbmVy
YXRlT3V0T2ZMaW5lKGV4ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBA
IC0yNzA0LDcgKzI3MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlTXVsT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSgogICAgIHJldHVybiB1
bnByb2ZpbGVkTXVsKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIpOwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CkBAIC0yNzE4LDcgKzI3MTgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmls
ZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFT
U0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7
CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVk
Tm9PcHRpbWl6ZTsKQEAgLTI3MzYsNyArMjczNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVj
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMt
PmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
bXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJl
dHVybiBwcm9maWxlZE11bChleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9m
aWxlKTsKIH0KQEAgLTI3NjAsMTQgKzI3NjAsMTQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgdW5wcm9maWxlZE5lZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1YK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC1udW1iZXIpKTsKIH0KIAotQUxX
QVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWROZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgQXJpdGhQcm9maWxlJiBhcml0
aFByb2ZpbGUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZE5l
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFy
eUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKLSAgICBhcml0aFByb2ZpbGUub2JzZXJ2
ZUxIUyhvcGVyYW5kKTsKKyAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAg
ICAKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZXhlYyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yNzkx
LDcgKzI3OTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogICAgIHJldHVybiB1bnByb2Zp
bGVkTmVnYXRlKGV4ZWMsIG9wZXJhbmQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBvcGVyYW5kLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVk
TmVnYXRlKGV4ZWMsIG9wZXJhbmQsICphcml0aFByb2ZpbGUpOwpAQCAtMjgwNSw5ICsyODA1LDkg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkT3B0aW1pemUoRXhlY1N0YXRlKiBleGUKICAgICAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQ
cm9maWxlKTsKLSAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgYXJp
dGhQcm9maWxlLT5vYnNlcnZlQXJnKG9wZXJhbmQpOwogICAgIG5lZ0lDLT5nZW5lcmF0ZU91dE9m
TGluZShleGVjLT5jb2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCk7CiAK
ICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTI4MzgsOCArMjgzOCw4IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kCiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
bmVnSUMtPmFyaXRoUHJvZmlsZSgpKQotICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMo
b3BlcmFuZCk7CisgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBuZWdJ
Qy0+YXJpdGhQcm9maWxlKCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVy
YW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoZXhlYy0+Y29kZUJsb2NrKCksIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlKTsKIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpAQCAtMjg2
NSw3ICsyODY1LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9m
aWxlZFN1YihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHUKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3ViKGV4ZWMsIG9wMSwgb3AyKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0
aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMg
PSB0cnVlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRTdWIo
Vk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBi
b29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yODg4LDcgKzI4ODgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZQogICAgIHJldHVybiB1bnByb2ZpbGVkU3ViKGV4ZWMsIGVuY29k
ZWRPcDEsIGVuY29kZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQ
cm9maWxlZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogCkBAIC0yOTA0LDcgKzI5MDQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSgogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOwogCiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZVN1
Yk5vT3B0aW1pemU7Ci0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMt
PmFyaXRoUHJvZmlsZSgpKQorICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZl
TEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpKTsKICAgICBzdWJJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoZXhlYy0+Y29kZUJsb2Nr
KCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI5MjgsNyArMjkyOCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEV4
ZWNTdGF0ZSogZXhlYywKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZSk7CiAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBhdXRvIG5v
bk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGltaXplOwpA
QCAtMjk0Niw3ICsyOTQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxl
KCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQ
cm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVk
U3ViKHZtLCBleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOWRiNjczNDE5
MjMuLjNiNmFhZjA0ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaApAQCAtMzgsNiArMzgsOCBAQCB0eXBlZGVmIGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAg
ICAgCiBjbGFzcyBBcnJheUFsbG9jYXRpb25Qcm9maWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOwor
Y2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFz
cyBCdXR0ZXJmbHk7CiBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDYWxsTGlua0luZm87CkBAIC02
NCw3ICs2Niw2IEBAIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiBzdHJ1Y3QgQnlWYWxJbmZvOwogc3Ry
dWN0IElubGluZUNhbGxGcmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKLXN0cnVjdCBBcml0aFBy
b2ZpbGU7CiAKIHVzaW5nIEV4ZWNTdGF0ZSA9IENhbGxGcmFtZTsKIApAQCAtNzksNyArODAsNyBA
QCB0eXBlZGVmIGNoYXIqIFVudXNlZFB0cjsKICAgICBBOiBKU0FycmF5KgogICAgIEFhcDogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZSoKICAgICBBcDogQXJyYXlQcm9maWxlKgotICAgIEFycDogQXJp
dGhQcm9maWxlKgorICAgIEFycDogQmluYXJ5QXJpdGhQcm9maWxlKgogICAgIEI6IEJ1dHRlcmZs
eSoKICAgICBCeTogQnlWYWxJbmZvKgogICAgIEM6IEpTQ2VsbCoKQEAgLTE0NSwxMyArMTQ2LDEz
IEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9u
X0VKWikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRf
T1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkMpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBKU0NlbGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklU
T3BlcmF0aW9uX0VKQSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VBUFop
KEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCB2b2lkKiwgaW50MzJfdCk7Ci10eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkFycCkoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIEFyaXRoUHJvZmlsZSopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAo
SklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpBcnApKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlLCBCaW5hcnlBcml0aFByb2ZpbGUqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJ
VF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BF
UkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpK
X0pJVE9wZXJhdGlvbl9FSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVS
QVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkpBcCkoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBBcnJheVByb2ZpbGUqKTsK
LXR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VK
SkFycCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBBcml0aFBy
b2ZpbGUqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3Bl
cmF0aW9uX0VKSkFycCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBCaW5hcnlBcml0aFByb2ZpbGUqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVS
QVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkJ5KShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklU
X09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpKTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJ
VF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKTWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgdm9pZCopOwpAQCAtNDgyLDcgKzQ4Myw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25DaGVja0lmRXhjZXB0aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKEV4
CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3Rvciwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGQoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lO
VEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFBy
b2ZpbGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5h
cnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVBZGRQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemUo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CkBAIC00OTIsMTMgKzQ5MywxMyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZU11bE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRP
cHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lO
VEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFBy
b2ZpbGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgb3BlcmFuZCk7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3Bl
cmFuZCwgQXJpdGhQcm9maWxlKik7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFu
ZCwgVW5hcnlBcml0aFByb2ZpbGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZVN1YihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJp
dGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVT
dWJPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJ
VFN1YklDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5U
RVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAK
aW5kZXggNzk1YzI3NTg0YzAuLjdiMWE4YjgxOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
SklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBP
YnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03OCw3ICs3
OCw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRTdWJHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0
LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmls
aW5nKQorYm9vbCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3Nj
cmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBt
X2xlZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3ViR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1Ykdl
bmVyYXRvci5oCmluZGV4IDU2MWY2MzM0YWUzLi4zNDkxYTgzZmVkYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5oCkBAIC01Myw4ICs1Myw4IEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX3NjcmF0Y2hGUFIoc2NyYXRjaEZQUikKICAgICB7IH0KIAotICAgIEpJ
VE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNH
ZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRl
RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExp
c3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRo
UHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5l
UmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQ
cm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlz
TGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsg
fQogICAgIHN0YXRpYyBib29sIGlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3Bl
cmFuZCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKaW5kZXggYmRhMzA4Yzg0ZDIuLmMwMzQxYzk1NmNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTM1LDM2ICsxMzUsNDkgQEAgdm9pZCBE
YXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAjZW5kaWYKIAogICAgIHsKLSAgICAgICAg
QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUgYXJp
dGhQcm9maWxlOworICAgICAgICBhcml0aFByb2ZpbGUuYXJnU2F3SW50MzIoKTsKKyAgICAgICAg
QVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVk
SW50Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5hcmdPYnNlcnZlZFR5cGUo
KS5pc09ubHlJbnQzMigpKTsKKyAgICB9CisgICAgeworICAgICAgICBVbmFyeUFyaXRoUHJvZmls
ZSBhcml0aFByb2ZpbGU7CisgICAgICAgIGFyaXRoUHJvZmlsZS5hcmdTYXdOdW1iZXIoKTsKKyAg
ICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gVW5hcnlBcml0aFByb2ZpbGU6Om9i
c2VydmVkTnVtYmVyQml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5hcmdPYnNl
cnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBCaW5h
cnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3
SW50MzIoKTsKICAgICAgICAgYXJpdGhQcm9maWxlLnJoc1Nhd0ludDMyKCk7Ci0gICAgICAgIEFT
U0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJ
bnRJbnQoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2Jz
ZXJ2ZWRCaW5hcnlJbnRJbnQoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKLSAg
ICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCku
cmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRJbnRCaXRzKCkp
OworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUlu
dDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlz
T25seUludDMyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAg
IGFyaXRoUHJvZmlsZS5saHNTYXdOdW1iZXIoKTsKICAgICAgICAgYXJpdGhQcm9maWxlLnJoc1Nh
d0ludDMyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJv
ZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNf
QVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5saHNPYnNlcnZl
ZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9m
aWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgpLnJoc09ic2VydmVkVHlwZSgpLmlzT25seUlu
dDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVySW50Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRo
UHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VS
VChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQog
ICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5
QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051
bWJlcigpOwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3TnVtYmVyKCk7Ci0gICAgICAgIEFT
U0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlO
dW1iZXJOdW1iZXIoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmls
ZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlO
dW1iZXIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJp
bmFyeU51bWJlck51bWJlcigpLnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAg
ICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpv
YnNlcnZlZE51bWJlck51bWJlckJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUu
bGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQ
cm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKICAgICB9CiAgICAgewot
ICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBCaW5hcnlBcml0aFBy
b2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsK
ICAgICAgICAgYXJpdGhQcm9maWxlLnJoc1Nhd051bWJlcigpOwotICAgICAgICBBU1NFUlQoYXJp
dGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVy
KCkuYml0cygpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVk
QmluYXJ5SW50TnVtYmVyKCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Ci0gICAg
ICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigp
LnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRo
UHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJp
dHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNP
bmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBl
KCkuaXNPbmx5TnVtYmVyKCkpOwogICAgIH0KIH0KIElHTk9SRV9XQVJOSU5HU19FTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAKaW5kZXggYTI1Zjk4NGFiZGEuLmY1ZDkxNzc0NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtODYsNyAr
ODYsNyBAQCBwdWJsaWM6CiAKIGNvbnN0IGludDY0X3QqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6
ZHVtbXkoKQogewotLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20vZ2Vu
ZXJhdGVfb2Zmc2V0c19leHRyYWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCisvLyBUaGlzIGlz
IGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9y
LnJiLCBhbmQgY29udGFpbnMgY29kZQogLy8gdG8gY3JlYXRlIGEgdGFibGUgb2Ygb2Zmc2V0cywg
c2l6ZXMsIGFuZCBhIGhlYWRlciBpZGVudGlmeWluZyB3aGF0IGNvbWJpbmF0aW9uIG9mCiAvLyBQ
bGF0Zm9ybS5oIG1hY3JvcyB3ZSBoYXZlIHNldC4gV2UgaW5jbHVkZSBpdCBpbnNpZGUgb2YgYSBt
ZXRob2Qgb24gTExJbnRPZmZzZXRzRXh0cmFjdG9yCiAvLyBiZWNhdXNlIHRoZSBmaWVsZHMgd2hv
c2Ugb2Zmc2V0cyB3ZSdyZSBleHRyYWN0aW5nIGFyZSBtb3N0bHkgcHJpdmF0ZS4gU28gd2UgbWFr
ZSB0aGVpcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCmluZGV4IGMzZDE3ZDhmZjM0Li42ZmQxNjk4NmMxNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAt
MjQwLDEzICsyNDAsMTUgQEAgY29uc3QgSXNJbnZhbGlkYXRlZCA9IGNvbnN0ZXhwciBJc0ludmFs
aWRhdGVkCiAjIFNoYWRvd0NoaWNrZW4gZGF0YQogY29uc3QgU2hhZG93Q2hpY2tlblRhaWxNYXJr
ZXIgPSBjb25zdGV4cHIgU2hhZG93Q2hpY2tlbjo6UGFja2V0Ojp0YWlsTWFya2VyVmFsdWUKIAot
IyBBcml0aFByb2ZpbGUgZGF0YQotY29uc3QgQXJpdGhQcm9maWxlSW50ID0gY29uc3RleHByIChB
cml0aFByb2ZpbGU6Om9ic2VydmVkVW5hcnlJbnQoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2Zp
bGVOdW1iZXIgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRVbmFyeU51bWJlcigp
LmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZUludEludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9m
aWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZU51
bWJlckludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlcklu
dCgpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZUludE51bWJlciA9IGNvbnN0ZXhwciAoQXJp
dGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmJpdHMoKSkKLWNvbnN0IEFyaXRo
UHJvZmlsZU51bWJlck51bWJlciA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJp
bmFyeU51bWJlck51bWJlcigpLmJpdHMoKSkKKyMgVW5hcnlBcml0aFByb2ZpbGUgZGF0YQorY29u
c3QgQXJpdGhQcm9maWxlSW50ID0gY29uc3RleHByIChVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2
ZWRJbnRCaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVOdW1iZXIgPSBjb25zdGV4cHIgKFVuYXJ5
QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckJpdHMoKSkKKworIyBCaW5hcnlBcml0aFByb2Zp
bGUgZGF0YQorY29uc3QgQXJpdGhQcm9maWxlSW50SW50ID0gY29uc3RleHByIChCaW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cygpKQorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVy
SW50ID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVySW50Qml0
cygpKQorY29uc3QgQXJpdGhQcm9maWxlSW50TnVtYmVyID0gY29uc3RleHByIChCaW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkSW50TnVtYmVyQml0cygpKQorY29uc3QgQXJpdGhQcm9maWxlTnVt
YmVyTnVtYmVyID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVy
TnVtYmVyQml0cygpKQogCiAjIFBvaW50ZXIgVGFncwogY29uc3QgQnl0ZWNvZGVQdHJUYWcgPSBj
b25zdGV4cHIgQnl0ZWNvZGVQdHJUYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggMzA0MzVjNDY3ZDMu
LjU5MGJjN2UyYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgZW5k
KQogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9uZWdhdGUsIE9wTmVnYXRlLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKIAogICAgIG1hY3JvIGFyaXRoUHJvZmls
ZSh0eXBlKQotICAgICAgICBvcmkgdHlwZSwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJv
ZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQorICAgICAgICBvcmkgdHlwZSwgT3BOZWdh
dGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEJpbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRz
W3Q1XQogICAgIGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTAzMCw3ICsxMDMwLDcg
QEAgZW5kKQogbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uKQogICAgIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBhcml0aFBy
b2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisgICAgICAgICAg
ICBvcmkgdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEJp
bmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgICAgICBlbmQKIAogICAgICAgICBtZXRh
ZGF0YSh0NSwgdDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGIyZmI1NTFiOWVhLi4wNTliNWEzNTBmNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KQEAgLTk3NiwxOSArOTc2LDE5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfbmVn
YXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByCiAg
ICAgZ2V0KG1fb3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MCwgdDMpCiAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0
YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCisgICAgbG9h
ZGkgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEJpbmFyeUFyaXRoUHJvZmls
ZTo6bV9iaXRzW3QxXSwgdDIKICAgICBicWIgdDMsIG51bWJlclRhZywgLm9wTmVnYXRlTm90SW50
CiAgICAgYnRpeiB0MywgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDMKICAg
ICBvcnEgbnVtYmVyVGFnLCB0MwogICAgIG9yaSBBcml0aFByb2ZpbGVJbnQsIHQyCi0gICAgc3Rv
cmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxl
OjptX2JpdHNbdDFdCisgICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQ
cm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCiAgICAgcmV0dXJuKHQzKQog
Lm9wTmVnYXRlTm90SW50OgogICAgIGJ0cXogdDMsIG51bWJlclRhZywgLm9wTmVnYXRlU2xvdwog
ICAgIHhvcnEgMHg4MDAwMDAwMDAwMDAwMDAwLCB0MwogICAgIG9yaSBBcml0aFByb2ZpbGVOdW1i
ZXIsIHQyCi0gICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxl
ICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCisgICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0
YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCiAg
ICAgcmV0dXJuKHQzKQogCiAub3BOZWdhdGVTbG93OgpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgbWFj
cm8gYmluYXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJP
cGVyYXRpb25BbmRTdG9yZSwgZG8KICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQogCiAgICAgICAg
IG1hY3JvIHByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisg
ICAgICAgICAgICBvcmkgdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJv
ZmlsZSArIEJpbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgICAgICBlbmQKIAogICAg
ICAgICBnZXQobV9yaHMsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9SZXN1bHRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5
cGUuaAppbmRleCA5YjNkMGQ3NGM4ZC4uNTYyMmYyODljYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCkBAIC00OCw2ICs0OCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbnVtQml0c05lZWRlZCA9IDc7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoKFR5cGVCaXRzICYgKCgxIDw8IG51bUJpdHNOZWVkZWQpIC0gMSkp
ID09IFR5cGVCaXRzLCAiVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLiIpOwogCisg
ICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBSZXN1bHRUeXBlKCkKKyAgICAgICAgICAgIDogUmVz
dWx0VHlwZSh1bmtub3duVHlwZSgpKQorICAgICAgICB7CisgICAgICAgIH0KICAgICAgICAgY29u
c3RleHByIGV4cGxpY2l0IFJlc3VsdFR5cGUoVHlwZSB0eXBlKQogICAgICAgICAgICAgOiBtX2Jp
dHModHlwZSkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggOTI0ZjdlNWIzNTIuLjM0MGI5MDA4NjAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
QEAgLTQ4Nyw4ICs0ODcsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fc3RyaW5nKQog
I2lmIEVOQUJMRShKSVQpCiBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFy
aXRoT3AoT3BOZWdhdGU6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNWYWx1ZSByZXN1bHQsIEpTVmFs
dWUgb3BlcmFuZCkKIHsKLSAgICBBcml0aFByb2ZpbGUmIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2Fy
aXRoUHJvZmlsZTsKLSAgICBwcm9maWxlLm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgVW5hcnlB
cml0aFByb2ZpbGUmIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZTsKKyAgICBwcm9m
aWxlLm9ic2VydmVBcmcob3BlcmFuZCk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpIHx8
IHJlc3VsdC5pc0JpZ0ludCgpKTsKICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpIHsKICAgICAg
ICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CkBAIC01NDYsNyArNTQ2LDcgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZv
ckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIEpT
VmFsdWUgcmVzdWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmlnaHQpCiB7CiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBBcml0aFByb2ZpbGUmIHBy
b2ZpbGUgPSAqY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJp
dGhQcm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMo
cGMpOwogCiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICghcmVzdWx0
LmlzSW50MzIoKSkgewpAQCAtNjA3LDcgKzYwNyw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9hZGQpCiAgICAgSlNWYWx1ZSB2MSA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7
CiAgICAgSlNWYWx1ZSB2MiA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAg
ICBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpleGVjLT5jb2RlQmxvY2soKS0+YXJpdGhQ
cm9maWxlRm9yUEMocGMpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlID0g
KmV4ZWMtPmNvZGVCbG9jaygpLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhwYyk7CiAgICAgYXJp
dGhQcm9maWxlLm9ic2VydmVMSFNBbmRSSFModjEsIHYyKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNBZGQoZXhlYywgdjEsIHYyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381463</attachid>
            <date>2019-10-21 15:00:35 -0700</date>
            <delta_ts>2019-10-22 16:34:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>124937</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDc1M2YzYmNjMmE2Li42YmU1YmQ5ZjFhMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY4IEBACisyMDE5LTEwLTE0ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGltZSBvbmx5IHVzZWQgZm9y
IGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQgYmVpbmcgdXNlZCBmb3Ig
bmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1c2VkIGZvciBpbmMgYW5k
IGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBhdGNoIEkgbWFrZSBhIHNl
cGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3IgYSBzaW5nbGUgYXJndW1l
bnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisKKyAgICAgICAgQWZ0ZXIg
ZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXplZCB0aGF0IHRoZSBSZXN1
bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQcm9maWxlIGFyZSBub3Qg
bmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFscmVhZHkgaW4gdGhlIGJ5
dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3ZpbmcgdGhlbSBhbGxvd2Vk
IHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBmaXQgaW4gMTYgYml0cyAo
OSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRoZSB0d28ga2luZHMgc2Vw
YXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRlcGVuZGVudGx5IGluIHRo
ZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlcXVpcmVkIGFkZGluZyB0aGUgIm9yaCIg
aW5zdHJ1Y3Rpb24gdG8gdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCB0byBzZXQgYml0cyBpbiB0aGUg
QXJpdGhQcm9maWxlLgorICAgICAgICBUaGlzIGluIHR1cm4gbW90aXZhdGVkIHRoZSBhZGRpdGlv
biBvZiAic3RvcmVoIiwgYXMgb24gUklTQyBwbGF0Zm9ybXMgIm9yaCIgb24gYSBtZW1vcnkgbG9j
YXRpb24gaXMgYWN0dWFsbHkgbG9hZGggLT4gb3JoIC0+IHN0b3JlaC4KKworICAgICAgICAqIGJ5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51
bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6
c2hvdWxkRW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50IGNvbnN0KToKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbkludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlRG91YmxlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOb25OdW1lcmlj
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSW50MzJPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDUyT3Zl
cmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkTm9u
TmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRO
ZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5v
bk51bWVyaWMpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3cp
OgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSW50NTJPdmVyZmxvdyk6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6YWRkcmVzc09mQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6QXJp
dGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpoYXNCaXRzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRCaXQpOgorICAgICAgICAoSlNDOjpVbmFy
eUFyaXRoUHJvZmlsZTo6VW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmFyeUFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlOjphcmdPYnNlcnZlZFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJv
ZmlsZTo6c2V0QXJnT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2Zp
bGU6OmFyZ1Nhd0ludDMyKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nh
d051bWJlcik6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdOb25OdW1i
ZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZUFyZyk6CisgICAg
ICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpCaW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cyk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMpOgorICAg
ICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cyk6
CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6c2V0TGhzT2JzZXJ2ZWRUeXBlKToK
KyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpzZXRSaHNPYnNlcnZlZFR5cGUpOgor
ICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFMpOgorICAgICAgICAo
SlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFNBbmRSSFMpOgorICAgICAgICAoSlND
OjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2ZWRUeXBlRW1wdHkpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVEFkZElDKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklU
U3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElD
KToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bWFrZURpdlNhZmUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJ
Qyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlN
YXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJp
dGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRB
ZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJ
Q0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKiBqaXQvSklURGl2R2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJ
VERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZSk6CisgICAgICAgICog
aml0L0pJVE1hdGhJQy5oOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OkpJVE1hdGhJQyk6Cisg
ICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpK
SVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OmlzQmluYXJ5UHJv
ZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6SklUQmluYXJ5TWF0aElDOjpKSVRCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjppc1VuYXJ5UHJvZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6
SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAgICAgICAgKiBqaXQvSklUTXVsR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVROZWdHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJ
VFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBsbGludC9M
TEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBl
OjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAg
IChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTAtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBERkc6OkNvbW1vbkRhdGEgbW9kaWZpY2F0aW9u
IGJ5IERGRyByZWFsbHlBZGQgc2hvdWxkIGJlIGd1YXJkZWQgYnkgQ29kZUJsb2NrJ3MgbG9jawpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRl
eCA5OTk5MzNiOGMwZS4uN2Y0NmY3M2ZjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCkBAIC0zMiw3ICszMiw4IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVS
ZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01v
ZGUgbW9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBK
U1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCFzaG91
bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3Vs
ZEVtaXRTZXRCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNDEgKzU5LDUxIEBAIHZv
aWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNW
YWx1ZVJlZ3MgcmVncywgVGFnUmVnCiAgICAgZG9uZS5saW5rKCZqaXQpOwogfQogCi1ib29sIEFy
aXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRF
bWl0U2V0RG91YmxlKCkgY29uc3QKIHsKLSAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxl
OjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJpdGhQcm9m
aWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlOworICAg
IHVpbnQzMl90IG1hc2sgPSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlOwogICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0g
bWFzazsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJz
JiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBj
b25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0RG91YmxlKCkpCi0gICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50MzJPdmVyZmxvdyB8
IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJs
ZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YWRkcmVzc09mQml0cygpKSk7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0
Tm9uTnVtZXJpYygpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29s
IEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNv
bnN0CiB7CiAgICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsKICAg
ICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxl
OjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxk
VHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdAogewogICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6OkJpZ0ludDsK
ICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJpdGhQcm9m
aWxlOjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChz
aG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoTm9uTnVtZXJpYyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZp
ZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQo
KSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9m
aWxlOjpCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRz
KCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmlnSW50
KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CiB9CisK
Ky8vIEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBhYm92ZSBm
b3IgVW5hcnlBcml0aFByb2ZpbGUvQmluYXJ5QXJpdGhQcm9maWxlCisvLyBJZiBjaGFuZ2luZyB0
aGUgc2l6ZSBvZiBlaXRoZXIsIGFkZCB0aGUgY29ycmVzcG9uZGluZyBsaW5lcyBoZXJlLgordGVt
cGxhdGUgY2xhc3MgQXJpdGhQcm9maWxlPHVpbnQxNl90PjsKICNlbmRpZiAvLyBFTkFCTEUoSklU
KQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKQEAgLTEwMSw3ICsxMTIsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0
aFByb2ZpbGU8VD4mIHByb2ZpbGUpCiB7CiAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yID0gIiI7
CiAKQEAgLTEzNSwxOSArMTQ3LDMwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCiAgICAgICAgICAgICBzZXBhcmF0b3Ig
PSAifCI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0
UGF0aCgpKQotICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiVG9vayBzcGVjaWFsIGZhc3Qg
cGF0aC4iKTsKICAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAg
IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFBy
b2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisgICAgb3V0LnByaW50KCIgQXJnIE9ic2VydmVkVHlw
ZTo8Iik7CisgICAgb3V0LnByaW50KHByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkpOworICAgIG91
dC5wcmludCgiPiIpOworfQorCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAgIHByaW50SW50ZXJuYWwo
b3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPj4ocHJv
ZmlsZSkpOworCisgICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0UGF0aCgpKQorICAgICAg
ICBvdXQucHJpbnQoIiBUb29rIHNwZWNpYWwgZmFzdCBwYXRoLiIpOwogCiAgICAgb3V0LnByaW50
KCIgTEhTIE9ic2VydmVkVHlwZTo8Iik7CiAgICAgb3V0LnByaW50KHByb2ZpbGUubGhzT2JzZXJ2
ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgiPiBSSFMgT2JzZXJ2ZWRUeXBlOjwiKTsKICAgICBv
dXQucHJpbnQocHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKSk7CiAgICAgb3V0LnByaW50KCI+Iik7
Ci0KLSAgICBvdXQucHJpbnQoIiBMSFMgUmVzdWx0VHlwZTo8IiwgUmF3UG9pbnRlcihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocHJvZmlsZS5saHNSZXN1bHRUeXBl
KCkuYml0cygpKSkpKTsKLSAgICBvdXQucHJpbnQoIj4gUkhTIFJlc3VsdFR5cGU6PCIsIFJhd1Bv
aW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2ZpbGUu
cmhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7Ci0gICAgb3V0LnByaW50KCI+Iik7CiB9CiAKIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBKU0M6Ok9ic2VydmVkVHlw
ZSYgb2JzZXJ2ZWRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5oCmluZGV4IGZjYzRlMjgxOGJlLi5jYWQ5OWY0OGJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNjYsMTE5ICs2NiwyMTcg
QEAgcHJpdmF0ZToKICAgICB1aW50OF90IG1fYml0cyB7IDAgfTsKIH07CiAKLXN0cnVjdCBBcml0
aFByb2ZpbGUgewotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bWJl
ck9mRmxhZ0JpdHMgPSA2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzUmVzdWx0
VHlwZVNoaWZ0ID0gbnVtYmVyT2ZGbGFnQml0czsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IGxoc1Jlc3VsdFR5cGVTaGlmdCA9IHJoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6
Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNPYnNlcnZl
ZFR5cGVTaGlmdCA9IGxoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6Om51bUJpdHNOZWVk
ZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNPYnNlcnZlZFR5cGVTaGlmdCA9
IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkOwotCi0g
ICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPT0gMywgIldlIG1h
a2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQgdGhhdCBoZXJlLiIpOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KH4oKDEgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKHJoc09ic2Vy
dmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1h
c2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ofigoMSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkg
fCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyAxKSkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRU
eXBlU2hpZnQgKyAyKSkpKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmVzdWx0
VHlwZU1hc2sgPSAoMSA8PCBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQml0ZmllbGRUeXBl
PgorY2xhc3MgQXJpdGhQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBlbnVtIE9ic2VydmVkUmVzdWx0
cyB7CisgICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8IDAsCisgICAgICAgIE5lZ1plcm9E
b3VibGUgICAgPSAxIDw8IDEsCisgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCisg
ICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCisgICAgICAgIEludDUyT3ZlcmZsb3cg
ICAgPSAxIDw8IDQsCisgICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgfTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVk
ZWQgPSA2OwogCi0gICAgZW51bSBjbGFzcyBDb25zdGFudFRhZyB7IENvbnN0YW50IH07CisgICAg
Ym9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1pl
cm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBi
b29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9E
b3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9CisgICAg
Ym9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVn
WmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyBy
ZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgp
IGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUlu
dDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Cisg
ICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMo
SW50NTJPdmVyZmxvdyk7IH0KIAotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3Qgc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNl
cnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVk
VHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSA8PSAoc2l6ZW9mKHVpbnQz
Ml90KSAqIDgpIC0gMSwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFz
ayksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhl
c2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZh
c3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hv
dWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBoaWdo
ZXIgYml0LiIpOworICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRC
aXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJs
ZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51
bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJ
bnQoKSB7IHNldEJpdChCaWdJbnQpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZs
b3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1
Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KIAotICAgIEFyaXRoUHJvZmls
ZShSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNv
bnN0YW50LCBhcmcpCisgICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUpCiAgICAg
ewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSBhcmcuYml0cygpKTsK
LSAgICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFT
U0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOworICAgICAgICBpZiAodmFsdWUuaXNJ
bnQzMigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIo
KSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93
IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGU7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKKyAg
ICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgbV9iaXRzIHw9IE5vbk51bWVyaWM7CiAgICAgfQogCi0gICAgQXJpdGhQcm9m
aWxlKFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBBcml0aFByb2Zp
bGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBsaHMsIHJocykKKyAgICBjb25zdCB2b2lkKiBhZGRy
ZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4gJm1fYml0czsgfQorCisjaWYgRU5BQkxFKEpJVCkK
KyAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKKyAgICAvLyBkb3VibGUuIFNldHMg
Tm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCisgICAgdm9pZCBlbWl0T2JzZXJ2
ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhh
dmVUYWdSZWdpc3RlcnMpOworCisgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3Zl
cmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCisgICAgYm9vbCBzaG91
bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0RG91YmxlKENDYWxsSGVs
cGVycyYpIGNvbnN0OworCisgICAgLy8gU2V0cyBOb25OdW1iZXIuCisgICAgdm9pZCBlbWl0U2V0
Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRO
b25OdW1lcmljKCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIEJpZ0ludAorICAgIHZvaWQgZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdDsKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisgICAgY29uc3RleHByIHVpbnQz
Ml90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworcHJvdGVjdGVkOgorICAgIEFy
aXRoUHJvZmlsZSgpCiAgICAgewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMo
KSA9PSBsaHMuYml0cygpICYmIHJoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gcmhzLmJpdHMoKSk7
Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBB
U1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKICAgICB9CiAKLSAgICBBcml0aFBy
b2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQotICAgICAgICA6IEFyaXRoUHJvZmlsZSh0eXBlcy5m
aXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKLSAgICB7IH0KKyAgICBib29sIGhhc0JpdHMoaW50IG1h
c2spIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIG1hc2s7IH0KKyAgICB2b2lkIHNldEJpdChpbnQg
bWFzaykgeyBtX2JpdHMgfD0gbWFzazsgfQorCisgICAgQml0ZmllbGRUeXBlIG1fYml0cyB7IDAg
fTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVy
YXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRh
dGlvbiB0byBpdC4KK307CisKKy8qIFRoaXMgY2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dpbmcgY29t
cG9uZW50cyBpbiAxNiBiaXRzOgorICogLSBPYnNlcnZlZFJlc3VsdHMKKyAqIC0gT2JzZXJ2ZWRU
eXBlIGZvciB0aGUgYXJndW1lbnQKKyAqLwordXNpbmcgVW5hcnlBcml0aFByb2ZpbGVCYXNlID0g
dWludDE2X3Q7CitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8
VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBh
cmdPYnNlcnZlZFR5cGVTaGlmdCA9IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVkZWQ7CiAKLSAg
ICBBcml0aFByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljX2Fzc2VydChhcmdPYnNlcnZl
ZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8PSBzaXplb2YoVW5hcnlB
cml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdGhlIHR5cGUgb2YgdGhlIHVu
ZGVybHlpbmcgYml0ZmllbGQuIik7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmls
ZSBmcm9tSW50KHVpbnQzMl90IGJpdHMpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8VW5h
cnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSk7CisK
KyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZFR5cGVN
YXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7CisKK3B1YmxpYzoK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPFVuYXJ5QXJp
dGhQcm9maWxlQmFzZT4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEFyaXRoUHJvZmlsZSB7IENv
bnN0YW50VGFnOjpDb25zdGFudCwgYml0cyB9OworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRU
eXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1w
dHkoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2
ZWRVbmFyeUludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ug
b2JzZXJ2ZWRJbnRCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUg
b2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNv
bnN0ZXhwciB1aW50MzJfdCBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2
ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDgwMDAwMCwgIiIp
OwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5
QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29u
c3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZFVuYXJ5TnVtYmVyKCkKKyAgICBzdGF0aWMgY29u
c3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJlckJpdHMoKQogICAgIHsK
ICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVk
VHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4MTAwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJv
bUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gb2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAg
ICByZXR1cm4gYml0czsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGFyZ09i
c2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGFyZ09i
c2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CisgICAgdm9pZCBzZXRBcmdP
YnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKKyAgICAgICAgYml0cyAmPSBjbGVhckFyZ09ic2Vy
dmVkVHlwZUJpdE1hc2s7CisgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIG1fYml0cyA9IGJpdHM7CisgICAgICAgIEFTU0VSVChhcmdP
YnNlcnZlZFR5cGUoKSA9PSB0eXBlKTsKKyAgICB9CisKKyAgICB2b2lkIGFyZ1Nhd0ludDMyKCkg
eyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9Cisg
ICAgdm9pZCBhcmdTYXdOdW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5
cGUoKS53aXRoTnVtYmVyKCkpOyB9CisgICAgdm9pZCBhcmdTYXdOb25OdW1iZXIoKSB7IHNldEFy
Z09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CisKKyAg
ICB2b2lkIG9ic2VydmVBcmcoSlNWYWx1ZSBhcmcpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIGlmIChhcmcuaXNOdW1iZXIoKSkg
eworICAgICAgICAgICAgaWYgKGFyZy5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgbmV3UHJv
ZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5l
d1Byb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbmV3
UHJvZmlsZS5hcmdTYXdOb25OdW1iZXIoKTsKKworICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKKyAgICB9CisKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKKyAgICB9CisKKyAg
ICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9OworCisvKiBUaGlz
IGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMgaW4gMTYgYml0czoKKyAqIC0g
T2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgcmlnaHQtaGFuZC1zaWRlCisg
KiAtIE9ic2VydmVkVHlwZSBmb3IgbGVmdC1oYW5kLXNpZGUKKyAqIC0gYSBiaXQgdXNlZCBieSBk
aXZpc2lvbiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgc3BlY2lhbCBmYXN0IHBhdGggd2FzIHRha2Vu
CisgKi8KK3VzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50MTZfdDsKK2NsYXNzIEJp
bmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxl
QmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsKKworICAgIHN0YXRpY19hc3NlcnQoT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJXZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9uIGFib3V0
IHRoYXQgaGVyZS4iKTsKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQ
cm9maWxlQmFzZT4ofigwYjExMSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCkpOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGxo
c09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVtQml0
c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0
aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNo
aWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChs
aHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9
IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWlu
dDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVh
ckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2Vj
dC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2Jz
ZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4iKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCA+IH5jbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBh
dGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKKworICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+ICgpCisg
ICAgeworICAgICAgICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgQVNTRVJUKHJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQotICAgIHN0YXRp
YyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5SW50SW50KCkKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZEludEludEJpdHMo
KQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsg
T2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90
IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwg
KG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4OTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9t
SW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNl
cnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7CisgICAgICAgIHJldHVy
biBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZl
ZEJpbmFyeU51bWJlckludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2Zp
bGVCYXNlIG9ic2VydmVkTnVtYmVySW50Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIg
T2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigp
IH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2Vy
dmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRz
ID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2Jz
ZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0
aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50
KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0g
KG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4g
Yml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRC
aW5hcnlJbnROdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZEludE51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9i
c2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9
OwogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZl
ZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChiaXRzID09IDB4YTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJp
dHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9i
c2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51
bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0
czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5h
cnlOdW1iZXJOdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHBy
IE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIo
KSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5i
aXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8
PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAw
eDEyMDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNv
bnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0
cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwg
cmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9CiAKLSAg
ICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7Ci0gICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8
IDAsCi0gICAgICAgIE5lZ1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCi0gICAgICAgIE5vbk51bWVy
aWMgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCi0g
ICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAg
ICAgPSAxIDw8IDUsCi0gICAgfTsKLQotICAgIFJlc3VsdFR5cGUgbGhzUmVzdWx0VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUoKG1fYml0cyA+PiBsaHNSZXN1bHRUeXBlU2hpZnQpICYg
cmVzdWx0VHlwZU1hc2spOyB9Ci0gICAgUmVzdWx0VHlwZSByaHNSZXN1bHRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gUmVzdWx0VHlwZSgobV9iaXRzID4+IHJoc1Jlc3VsdFR5cGVTaGlmdCkgJiByZXN1
bHRUeXBlTWFzayk7IH0KLQogICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgbGhzT2JzZXJ2ZWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gT2JzZXJ2ZWRUeXBlKChtX2JpdHMgPj4gbGhzT2JzZXJ2ZWRU
eXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBlTWFzayk7IH0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRU
eXBlIHJoc09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRz
ID4+IHJoc09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgdm9p
ZCBzZXRMaHNPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCiAgICAgewotICAgICAgICB1
aW50MzJfdCBiaXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJp
dHMgPSBtX2JpdHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNr
OwogICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0Owog
ICAgICAgICBtX2JpdHMgPSBiaXRzOwpAQCAtMTg3LDcgKzI4NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0UmhzT2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsgCi0gICAg
ICAgIHVpbnQzMl90IGJpdHMgPSBtX2JpdHM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgYml0cyA9IG1fYml0czsKICAgICAgICAgYml0cyAmPSBjbGVhclJoc09ic2VydmVkVHlwZUJp
dE1hc2s7CiAgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQ7CiAgICAgICAgIG1fYml0cyA9IGJpdHM7CkBAIC0xOTYsMzkgKzI5NCw2IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgdG9va1NwZWNpYWxGYXN0UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IHNwZWNpYWxGYXN0UGF0aEJpdDsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBj
b25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KLSAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQot
ICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNC
aXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRp
ZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsg
fQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmln
SW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIHZv
aWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJs
ZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1pl
cm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChO
b25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJ
bnQpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQz
Mk92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRC
aXQoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBj
b25zdCB7IHJldHVybiAmbV9iaXRzOyB9Ci0KLSAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1
ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBt
X2JpdHMgfD0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9
IEJpZ0ludDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2JpdHMg
fD0gTm9uTnVtZXJpYzsKLSAgICB9Ci0KICAgICB2b2lkIGxoc1Nhd0ludDMyKCkgeyBzZXRMaHNP
YnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9CiAgICAgdm9pZCBs
aHNTYXdOdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRo
TnVtYmVyKCkpOyB9CiAgICAgdm9pZCBsaHNTYXdOb25OdW1iZXIoKSB7IHNldExoc09ic2VydmVk
VHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CkBAIC0yMzgsNyArMzAz
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBvYnNlcnZlTEhTKEpTVmFsdWUgbGhzKQogICAgIHsK
LSAgICAgICAgQXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKKyAgICAgICAgQmluYXJ5
QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKICAgICAgICAgaWYgKGxocy5pc051bWJl
cigpKSB7CiAgICAgICAgICAgICBpZiAobGhzLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBu
ZXdQcm9maWxlLmxoc1Nhd0ludDMyKCk7CkBAIC0yNTQsNyArMzE5LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgb2JzZXJ2ZUxIUyhsaHMpOwogCi0gICAgICAgIEFyaXRoUHJvZmlsZSBuZXdQ
cm9maWxlID0gKnRoaXM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0g
KnRoaXM7CiAgICAgICAgIGlmIChyaHMuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgaWYgKHJo
cy5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5yaHNTYXdJbnQzMigpOwpA
QCAtMjY2LDQ3ICszMzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoSklUKSAgICAKLSAgICAvLyBTZXRzIChJbnQz
Mk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91
YmxlKSBpZiBpdCBzZWVzIGEKLSAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBz
ZWVzIGEgbm9uLW51bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBl
cnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwot
ICAgIAotICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVn
WmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgotICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJs
ZSgpIGNvbnN0OwotICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsK
LSAgICAKLSAgICAvLyBTZXRzIE5vbk51bWJlci4KLSAgICB2b2lkIGVtaXRTZXROb25OdW1lcmlj
KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMo
KSBjb25zdDsKLQotICAgIC8vIFNldHMgQmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KEND
YWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0
OwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLSAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cygp
IGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0ZXhwciBleHBs
aWNpdCBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWcsIHVpbnQzMl90IGJpdHMpCi0gICAgICAgIDog
bV9iaXRzKGJpdHMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUo
Q29uc3RhbnRUYWcsIFJlc3VsdFR5cGUgYXJnKQotICAgICAgICA6IG1fYml0cyhhcmcuYml0cygp
IDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQog
ICAgIHsKKyAgICAgICAgcmV0dXJuIGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSAmJiByaHNP
YnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgY29uc3RleHByIEFyaXRoUHJv
ZmlsZShDb25zdGFudFRhZywgUmVzdWx0VHlwZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQotICAgICAg
ICA6IG1fYml0cygobGhzLmJpdHMoKSA8PCBsaHNSZXN1bHRUeXBlU2hpZnQpIHwgKHJocy5iaXRz
KCkgPDwgcmhzUmVzdWx0VHlwZVNoaWZ0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNC
aXRzKGludCBtYXNrKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBtYXNrOyB9Ci0gICAgdm9pZCBz
ZXRCaXQoaW50IG1hc2spIHsgbV9iaXRzIHw9IG1hc2s7IH0KLQotICAgIHVpbnQzMl90IG1fYml0
cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmds
ZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXBy
ZXNlbnRhdGlvbiB0byBpdC4KLQogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIH07CiAKQEAgLTMxNCw3ICszNDMsOCBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpBcml0
aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6
VW5hcnlBcml0aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNv
bnN0IEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlJik7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBjb25zdCBKU0M6Ok9ic2VydmVkVHlwZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4
IGMwODZiOGViM2YzLi5hYzRjODBlZTk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVzIFsKICAgICA6
SlNUeXBlLAogICAgIDpKU1ZhbHVlLAogICAgIDpMTEludENhbGxMaW5rSW5mbywKKyAgICA6UmVz
dWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxh
ZywKICAgICA6UHJvcGVydHlPZmZzZXQsCkBAIC01Nyw3ICs1OCw4IEBAIHR5cGVzIFsKIAogICAg
IDpWYWx1ZVByb2ZpbGUsCiAgICAgOlZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIsCi0gICAg
OkFyaXRoUHJvZmlsZSwKKyAgICA6VW5hcnlBcml0aFByb2ZpbGUsCisgICAgOkJpbmFyeUFyaXRo
UHJvZmlsZSwKICAgICA6QXJyYXlQcm9maWxlLAogICAgIDpBcnJheUFsbG9jYXRpb25Qcm9maWxl
LAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKQEAgLTI4MiwxMCArMjg0LDcgQEAgb3Bf
Z3JvdXAgOlByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIG9wZXJhbmRUeXBlczogT3BlcmFuZFR5
cGVzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0
aFByb2ZpbGUKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBh
cml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBCaW5hcnlB
cml0aFByb2ZpbGUKICAgICB9CiAKIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCkBA
IC0zNjcsMTMgKzM2NiwxMCBAQCBvcCA6bmVnYXRlLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5kVHlwZXMsCisgICAgICAgIHJlc3VsdFR5cGU6IFJl
c3VsdFR5cGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6
IEFyaXRoUHJvZmlsZSwKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAg
ICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBV
bmFyeUFyaXRoUHJvZmlsZSwKICAgICB9CiAKIG9wIDpub3QsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDYwY2M2NWU2NDQ1Li4xNDNhMzYyYWU1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTE0ODAsMjUgKzE0ODAsMjUgQEAgU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1
YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxv
Y2tlcikubV9zdHViSW5mb3MuYWRkKGFjY2Vzc1R5cGUpOwogfQogCi1KSVRBZGRJQyogQ29kZUJs
b2NrOjphZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVEFkZElDKiBD
b2RlQmxvY2s6OmFkZEpJVEFkZElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fYWRkSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRN
dWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
K0pJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAg
ICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbXVsSUNzLmFkZChhcml0aFByb2ZpbGUp
OwogfQogCi1KSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKK0pJVFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3ViSUNzLmFkZChh
cml0aFByb2ZpbGUpOwogfQogCi1KSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lD
KFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9u
ZWdJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CkBAIC0zMDg1LDE2ICszMDg1LDE5IEBAIGNvbnN0IElu
c3RydWN0aW9uKiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjKQogICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKS5hdChvZmZzZXQgKyB0YXJnZXQpLnB0
cigpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKK0JpbmFy
eUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQogewotICAgIHJl
dHVybiBhcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZU9mZnNldCku
cHRyKCkpOworICAgIHJldHVybiBiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMo
KS5hdChieXRlY29kZU9mZnNldCkucHRyKCkpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9j
azo6YXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorVW5hcnlBcml0aFBy
b2ZpbGUqIENvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQoreworICAgIHJldHVybiB1bmFy
eUFyaXRoUHJvZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KS5wdHIo
KSk7Cit9CisKK0JpbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2Zp
bGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2Rl
SUQoKSkgewotICAgIGNhc2Ugb3BfbmVnYXRlOgotICAgICAgICByZXR1cm4gJnBjLT5hczxPcE5l
Z2F0ZT4oKS5tZXRhZGF0YSh0aGlzKS5tX2FyaXRoUHJvZmlsZTsKICAgICBjYXNlIG9wX2FkZDoK
ICAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BBZGQ+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFBy
b2ZpbGU7CiAgICAgY2FzZSBvcF9tdWw6CkBAIC0zMTEwLDExICszMTEzLDIzIEBAIEFyaXRoUHJv
ZmlsZSogQ29kZUJsb2NrOjphcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6
OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIHN3
aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKKyAgICBjYXNlIG9wX25lZ2F0ZToKKyAgICAgICAgcmV0
dXJuICZwYy0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIGJvb2wgQ29kZUJsb2NrOjpjb3VsZFRha2VTcGVjaWFsRmFzdENhc2UoSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKIHsKICAgICBpZiAoIWhhc0Jhc2VsaW5l
SklUUHJvZmlsaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBcml0aFByb2ZpbGUq
IHByb2ZpbGUgPSBhcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7
CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlID0gYmluYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIGlmICghcHJvZmlsZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBwcm9maWxlLT50b29rU3BlY2lhbEZhc3RQYXRo
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNDIz
M2VhMjFlOTQuLjJhMDM2Y2FiMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCkBAIC04Myw2ICs4Myw4IEBAIHN0cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8v
IG5hbWVzcGFjZSBERkcKICNlbmRpZgogCitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNz
IEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNs
YXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U7CkBAIC05
Niw3ICs5OCw2IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vz
c1R5cGUgOiBpbnQ4X3Q7CiAKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiBzdHJ1Y3QgT3BDYXRjaDsK
IAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRSZW9wdGltaXphdGlvbiwgQ291
bnRSZW9wdGltaXphdGlvbiB9OwpAQCAtMjc5LDIyICsyODAsMjIgQEAgcHVibGljOgogICAgIH0K
ICAgICBKSVREYXRhJiBlbnN1cmVKSVREYXRhU2xvdyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
KTsKIAotICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRN
dWxJQyogYWRkSklUTXVsSUMoQXJpdGhQcm9maWxlKik7Ci0gICAgSklUTmVnSUMqIGFkZEpJVE5l
Z0lDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQyhBcml0aFByb2Zp
bGUqKTsKKyAgICBKSVRBZGRJQyogYWRkSklUQWRkSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7Cisg
ICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSopOworICAgIEpJVE5l
Z0lDKiBhZGRKSVROZWdJQyhVbmFyeUFyaXRoUHJvZmlsZSopOworICAgIEpJVFN1YklDKiBhZGRK
SVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUqKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBH
ZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1l
PEdlbmVyYXRvciwgSklUQWRkR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVEFkZElD
KiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhw
cm9maWxlKTsgfQorICAgIEpJVEFkZElDKiBhZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBw
cm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRNdWxHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0g
ICAgSklUTXVsSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFk
ZEpJVE11bElDKHByb2ZpbGUpOyB9CisgICAgSklUTXVsSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0
aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CiAKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVE5lZ0dlbmVyYXRvcj46OnZhbHVl
Pjo6dHlwZT4KLSAgICBKSVROZWdJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkg
eyByZXR1cm4gYWRkSklUTmVnSUMocHJvZmlsZSk7IH0KKyAgICBKSVROZWdJQyogYWRkTWF0aElD
KFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVROZWdJQyhwcm9maWxl
KTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5lcmF0
b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUU3ViSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUq
IHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CisgICAgSklUU3ViSUMq
IGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1
YklDKHByb2ZpbGUpOyB9CiAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNj
ZXNzVHlwZSk7CiAKQEAgLTQ5Miw4ICs0OTMsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0
IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hM
TEludENhbGxMaW5rSW5mbyhjb25zdCBGdW5jdG9yJik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0
ZWNvZGVPZmZzZXQpOwotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlRm9yUEMoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZz
ZXQpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiB1bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2Rl
T2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25z
dCBJbnN0cnVjdGlvbiopOwogCiAgICAgYm9vbCBjb3VsZFRha2VTcGVjaWFsRmFzdENhc2UoSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDlhYjc3MTM3YWE2Li5kNDFjZmMxMmI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCkBAIC0yMzYsNiArMjM2LDE4IEBAIHN0cnVj
dCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3Rk
Ojppc19lbnVtPEU+Ojp2YWx1CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXpl
Pgorc3RydWN0IEZpdHM8UmVzdWx0VHlwZSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2Yo
UmVzdWx0VHlwZSkgIT0gc2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHVpbnQ4
X3QsIHNpemU+IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZXN1bHRUeXBlKSA9PSBzaXpl
b2YodWludDhfdCkpOworICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisg
ICAgc3RhdGljIGJvb2wgY2hlY2soUmVzdWx0VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjaGVj
ayh0eXBlLmJpdHMoKSk7IH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBl
IGNvbnZlcnQoUmVzdWx0VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjb252ZXJ0KHR5cGUuYml0
cygpKTsgfQorCisgICAgc3RhdGljIFJlc3VsdFR5cGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpU
YXJnZXRUeXBlIHR5cGUpIHsgcmV0dXJuIFJlc3VsdFR5cGUoQmFzZTo6Y29udmVydCh0eXBlKSk7
IH0KK307CisKIHRlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPE9wZXJhbmRU
eXBlcywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoT3BlcmFuZFR5cGVzKSAhPSBzaXpl
LCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kVHlw
ZXMpID09IHNpemVvZih1aW50MTZfdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmlu
ZGV4IDdlM2NjOTRmYTQ2Li5lMDI3NzY5YTBjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmNwcApAQCAtNjYsMTAgKzY2LDE2IEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsK
LSAgICAgICAgdS5hcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9O
b3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsK
KyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdz
LCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwogICAgICAgICByZXR1cm47Ci0gICAgfSB9CisgICAg
fQorCisgICAgY2FzZSBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LmJpbmFy
eUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdS
ZWdpc3RlcnMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KICAgICAKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtOTQsMTAgKzEwMCwxNiBAQCB2b2lkIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKEpTVmFsdWUgdmFsdWUpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYXNlIEFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0g
ICAgICAgIHUuYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICBjYXNlIFVu
YXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+b2Jz
ZXJ2ZVJlc3VsdCh2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAg
ICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQ
cm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmgKaW5kZXggYjVlODRiMTMzN2UuLjA0NDE1MDEzOTExIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLmgKQEAgLTM1LDEwICszNSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Y2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFz
cyBDQ2FsbEhlbHBlcnM7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZUtleTsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwog
CiBjbGFzcyBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHsKQEAgLTU2LDEyICs1NywyMSBA
QCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAg
ICB9Ci0gICAgCi0gICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShBcml0aFByb2ZpbGUq
IHByb2ZpbGUpCisKKyAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKFVuYXJ5QXJpdGhQ
cm9maWxlKiBwcm9maWxlKQorICAgIHsKKyAgICAgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAgICAg
ICAgIG1fa2luZCA9IFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk7CisgICAgICAgICAgICB1LnVuYXJ5
QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2tp
bmQgPSBOb25lOworICAgIH0KKworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoQmlu
YXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKQogICAgIHsKICAgICAgICAgaWYgKHByb2ZpbGUpIHsK
LSAgICAgICAgICAgIG1fa2luZCA9IEFyaXRoUHJvZmlsZVJlYWR5OwotICAgICAgICAgICAgdS5h
cml0aFByb2ZpbGUgPSBwcm9maWxlOworICAgICAgICAgICAgbV9raW5kID0gQmluYXJ5QXJpdGhQ
cm9maWxlUmVhZHk7CisgICAgICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZSA9IHByb2ZpbGU7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9CkBAIC03
OCwxNCArODgsMTYgQEAgcHJpdmF0ZToKICAgICBlbnVtIEtpbmQgewogICAgICAgICBOb25lLAog
ICAgICAgICBSZWFkeSwKLSAgICAgICAgQXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIFVuYXJ5
QXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAogICAg
ICAgICBMYXp5T3BlcmFuZAogICAgIH07CiAgICAgCiAgICAgS2luZCBtX2tpbmQ7CiAgICAgdW5p
b24gewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7Ci0gICAgICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFBy
b2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlOwog
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZTc5
MTRhYTQ3YzUuLmI3YTRhYTNkMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTY2NSwxNCArMTY2
NSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgT3BlcmFuZFR5cGVzIHR5cGVzKQorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSB0eXBlKQogewogICAg
IHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX25vdDoKICAgICAgICAgZW1pdFVuYXJ5
T3A8T3BOb3Q+KGRzdCwgc3JjKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9uZWdhdGU6
Ci0gICAgICAgIE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlcyk7CisgICAgICAg
IE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBvcF9iaXRub3Q6CiAgICAgICAgIGVtaXRVbmFyeU9wPE9wQml0bm90Pihkc3QsIHNy
Yyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggNDE5N2FiYzEyZTUuLjM4ZTc3Y2RiMTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC02ODIsNyArNjgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gZHN0OwogICAgICAgICB9CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFVuYXJ5T3AoT3Bj
b2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5hcnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMsIFJlc3VsdFR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEJpbmFyeU9wPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDY1OTM3
ZjMxOWJlLi5lNDgxYTRmMWUxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjEzNiw3ICsyMTM2LDcgQEAgUmVnaXN0
ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKgogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBv
c2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
c3JjLmdldCgpLCBPcGVyYW5kVHlwZXMobV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbmFyeU9wKG9wY29kZUlEKCksIGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQoKSwgbV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVW5hcnlQbHVzTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA2NjEwMTNhODc3Ny4uMWZlNGRi
ZTgwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC05NDIsNTYgKzk0Miw2MCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWlzWDg2
KCkgJiYgKG5vZGUtPm9wKCkgPT0gQXJpdGhNb2QgfHwgbm9kZS0+b3AoKSA9PSBWYWx1ZU1vZCkp
CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKIAotICAgICAgICB7Ci0gICAgICAgICAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpOwotICAgICAg
ICAgICAgaWYgKGFyaXRoUHJvZmlsZSkgewotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+
b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhBZGQ6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBBcml0aFN1YjoKLSAgICAgICAgICAgICAgICBjYXNlIFZhbHVlQWRkOgotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51
bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVNdWw6
Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aE11bDogewotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VG
bGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0
aXZlWmVybykpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVN
YXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2Zp
bGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1l
cmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmln
SW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBBcml0aE5lZ2F0ZTogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5s
aHNPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVE
b3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxl
LT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGlu
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQz
Mk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVy
aWNSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5v
ZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KKyAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2UgQXJpdGhB
ZGQ6CisgICAgICAgIGNhc2UgQXJpdGhTdWI6CisgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKKyAg
ICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAgICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
RG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVO
b25OdW1lcmljKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2
ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2Jz
ZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhh
dmVCaWdJbnRSZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBWYWx1ZU11bDoKKyAgICAgICAgY2FzZSBBcml0aE11bDogeworICAgICAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudElu
ZGV4KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZs
b3coKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0lu
dDUyKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJm
bG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
Tm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAg
ICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7
CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7Cisg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0
KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAg
ICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6
CisgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKKyAgICAgICAgICAgIFVuYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVu
YXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpOworICAgICAg
ICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBh
cml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5t
ZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0
aFByb2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkK
KyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGlu
ZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxv
dygpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIE92ZXJmbG93KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5v
ZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0
aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJn
ZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkpIHsKQEAgLTEwMzQsNyArMTAz
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEZJWE1FOiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0
byBtYWtlIHRoaXMgbW9yZSBncmFudWxhci4KICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2Rl
TWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUgfCBOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwog
ICAgICAgICAKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1f
Y3VycmVudEluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmls
ZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQogICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2Rl
TWF5SGF2ZUJpZ0ludFJlc3VsdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKaW5kZXggOWQ1YjdkOTMzN2MuLjRjNmQxMDk5YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcApAQCAtMTY1Miw3ICsxNjUyLDkgQEAgTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZSBHcmFwaDo6bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihOb2RlKiBj
dXJyZW4KICAgICAgICAgICAgICAgICByZXR1cm4gJnByb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkp
OwogCiAgICAgICAgICAgICBpZiAocHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxp
bmcoKSkgewotICAgICAgICAgICAgICAgIGlmIChBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2Zp
bGVkQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAgICAgICAgICAgIGlmIChCaW5hcnlBcml0aFBy
b2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIGlmIChVbmFyeUFy
aXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmlsZWRCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCA5NWE3Y2Q2MjQ4ZS4uZmI0Y2IyOWVkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC00MDAwLDcgKzQwMDAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJs
b2NrKCktPmFkZEpJVEFkZElDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGlu
Z0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7CkBAIC00MDI0LDcgKzQwMjQsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKIAogICAgICAgICBD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVC
bG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBKSVRTdWJJQyog
c3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAg
ICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXpl
OwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3Vi
OwpAQCAtNDYxOCw3ICs0NjE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
TmVnYXRlKE5vZGUqIG5vZGUpCiB7CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9
IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5
dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5l
Q29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2st
PnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAg
SklUTmVnSUMqIG5lZ0lDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJv
ZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0
ZU9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJp
dGhOZWdhdGU7CkBAIC00ODQxLDcgKzQ4NDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVNdWwoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5ieXRlY29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNl
bGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRl
eCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVC
bG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7
CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFy
aXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZU11bE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVNdWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggYTNiODRkNjM3OTguLjkzOGRjODcwMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0yMTA3LDcgKzIxMDcsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRl
LmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5
dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNl
bGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRl
eCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVD
b2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5k
ZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRk
T3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVBZGQ7CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPihh
cml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsK
QEAgLTIxMjYsNyArMjEyNiw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNl
bGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0g
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1
bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgY29tcGlsZUJpbmFy
eU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9u
LCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE0NSw3ICsyMTQ1LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFw
aC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29k
ZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVD
b2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwor
ICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsK
ICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGlt
aXplOwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVl
TXVsOwogICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQ
cm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0y
MTUzLDcgKzIxNTMsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVy
YXRvciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVuYW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9w
b2ludGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUg
c3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21w
aWxlVW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hp
bmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGls
ZVVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0
Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAg
ICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKIApAQCAtMjIzOSw3ICsyMjM5LDcgQEAgcHJpdmF0ZToK
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBl
bmFtZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
ZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1
ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+
Ojp0eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBh
dGNoaW5nRnVuY3Rpb24pCisgICAgdm9pZCBjb21waWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7
CiAgICAgICAgIApAQCAtMjQwNiw3ICsyNDA2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVD
b2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgo
KTsKLSAgICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVC
bG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3Vi
T3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlU3ViOwogICAgICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5l
cmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVu
Y3Rpb24pOwpAQCAtMzA3Miw3ICszMDcyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxp
bmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgp
OworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVP
cHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25B
cml0aE5lZ2F0ZTsKICAgICAgICAgY29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRvcj4o
YXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAwM2Y3OTgxM2NlMi4uMzE0MTkzNDkyOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtOTE5LDcgKzkxOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAvLyBJdCB3aWxsIGdpdmUgdGhlIHNsb3cgcGF0aCB0aGUgc2FtZSB2YWx1ZSBy
ZWFkIGJ5IHRoZSBmYXN0IHBhdGguCiAgICAgICAgIEdldFB1dEluZm8gY29waWVkR2V0UHV0SW5m
byhPcFB1dFRvU2NvcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLSAg
ICAgICAgQXJpdGhQcm9maWxlIGNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCk7CisgICAgICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOwogCiAgICAg
ICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwogCkBAIC05MzksNyArOTM5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7CiAK
ICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgdW5zaWduZWQ+IG1fY29waWVkR2V0UHV0SW5mb3M7
Ci0gICAgICAgIEhhc2hNYXA8dWludDY0X3QsIEFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0aFBy
b2ZpbGVzOworICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBCaW5hcnlBcml0aFByb2ZpbGU+IG1f
Y29waWVkQXJpdGhQcm9maWxlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNoZWNr
czsKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJh
Y2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKaW5k
ZXggNjI3YWYyNzg3ZTAuLjc0MGIyZWQ4YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlu
bGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
c3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklU
QWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNl
cnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03Myw3ICs3Myw3
IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJl
c3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBj
b25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5n
KQorYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0
Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xl
ZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQWRkR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVy
YXRvci5oCmluZGV4IDRkYzM0YTJmNWI2Li42NzVjZjkzYzkwNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3JpZ2h0
T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVz
dWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYs
IGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhl
bHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBz
aG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJ
bmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5
QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNo
b3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlk
Q29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVyYW5k
LmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3BlcmFu
ZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiByaWdo
dE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggZjQyMGFlOTlkMGUuLmYzYzcxYTk3N2U0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1Miw3
ICs0NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29wX25l
Z2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIFVuYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0ZT4o
KS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMqIG5l
Z2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9p
bnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsKICAg
ICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
b3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwpAQCAt
NjMzLDE0ICs2MzMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBP
cGVyYW5kVHlwZXMgZ2V0T3BlcmFuZFR5cGVzKGNvbnN0IEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9m
aWxlKQotewotICAgIHJldHVybiBPcGVyYW5kVHlwZXMoYXJpdGhQcm9maWxlLmxoc1Jlc3VsdFR5
cGUoKSwgYXJpdGhQcm9maWxlLnJoc1Jlc3VsdFR5cGUoKSk7Ci19Ci0KIHZvaWQgSklUOjplbWl0
X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+KCku
bWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVEFkZElDKiBhZGRJ
QyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1
Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBhZGRJQyk7CiAgICAgZW1pdE1h
dGhJQ0Zhc3Q8T3BBZGQ+KGFkZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVl
QWRkUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlQWRkKTsKQEAgLTY4NSw3ICs2ODAsNyBAQCB2b2lk
IEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBj
b25zdCBJbnN0cnVjdGlvbiogYwogCiAgICAgYm9vbCBnZW5lcmF0ZWRJbmxpbmVDb2RlID0gbWF0
aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywgbWF0aElDR2VuZXJhdGlvblN0YXRlKTsKICAgICBp
ZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgICAgICBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFy
aXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBzcmNSZWdzLCBh
cml0aFByb2ZpbGUpOwogICAgICAgICBlbHNlCkBAIC03MDgsNyArNzAzLDYgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rp
b24sIHR5cGVuYW1lIE4KIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24g
bm9uUHJvZmlsZWRGdW5jdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcD4oKTsKLSAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlw
ZXMoY29waWVkQXJpdGhQcm9maWxlKGJ5dGVjb2RlKSk7CiAgICAgaW50IHJlc3VsdCA9IGJ5dGVj
b2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQo
KTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CkBAIC03MjcsOCArNzIx
LDggQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gZnBS
ZWdUMjsKICNlbmRpZgogCi0gICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMuZmly
c3QoKSk7Ci0gICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgpKTsK
KyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5m
aXJzdCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVy
YW5kVHlwZXMuc2Vjb25kKCkpOwogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkp
CiAgICAgICAgIGxlZnRPcGVyYW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50SW50
KG9wMSkpOwpAQCAtNzU4LDcgKzc1Miw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRC
aW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICAg
ICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCBsZWZ0UmVncyk7CiAgICAgICAgIGVs
c2UgaWYgKHJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpCiAgICAgICAgICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKG9wMiwgcmlnaHRSZWdzKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgICAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgICAgIGlmIChh
cml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbldpdGhSZXN1bHQocHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgbGVmdFJlZ3Ms
IHJpZ2h0UmVncywgYXJpdGhQcm9maWxlKTsKICAgICAgICAgZWxzZQpAQCAtNzk4LDcgKzc5Miw3
IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBt
YXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjCiAgICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gbGFi
ZWwoKTsKICNlbmRpZgogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMt
PmFyaXRoUHJvZmlsZSgpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBt
YXRoSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1p
dFByb2ZpbGluZygpKSB7CiAgICAgICAgIGlmIChtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2hvdWxk
U2xvd1BhdGhSZXBhdGNoKQogICAgICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRP
cGVyYXRpb25fRUpNaWM+KHByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uKSwgcmVzdWx0UmVncywgc3Jj
UmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKQEAgLTgzMCw3ICs4MjQsNiBAQCB2b2lkIEpJ
VDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29u
c3QgSW5zdHJ1Y3Rpb24qCiAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoU3RhcnQg
PSBsYWJlbCgpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3A+KCk7Ci0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0T3BlcmFuZFR5cGVzKGNvcGllZEFy
aXRoUHJvZmlsZShieXRlY29kZSkpOwogICAgIGludCByZXN1bHQgPSBieXRlY29kZS5tX2RzdC5v
ZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9saHMub2Zmc2V0KCk7CiAgICAgaW50
IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwpAQCAtODQ1LDggKzgzOCw4IEBAIHZvaWQg
SklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBj
b25zdCBJbnN0cnVjdGlvbioKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gbGVmdFJlZ3M7
CiAjZW5kaWYKICAgICAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJz
dCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOwor
ICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZp
cnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJh
bmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkK
ICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQo
b3AxKSk7CkBAIC04NjQsNyArODU3LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJp
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIGF1
dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgaWYgKGFy
aXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgaWYgKG1hdGhJ
Q0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCiAgICAgICAgICAgICBtYXRo
SUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQo
Yml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0VKSk1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rp
b24pLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJ
QykpOwpAQCAtODkyLDE5ICs4ODUsMTYgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJp
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogdm9pZCBK
SVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEaXY+KCk7Ci0g
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAg
aW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGludCBvcDEgPSBieXRl
Y29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0
KCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9w
ZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVm
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0g
SlNWYWx1ZVJlZ3MocmVnVDEpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVn
czsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1QyOwogI2Vsc2UKLSAgICBPcGVyYW5kVHlw
ZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMobWV0YWRhdGEubV9hcml0aFByb2ZpbGUpOwogICAg
IEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBK
U1ZhbHVlUmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpOwogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKQEAgLTkxMiwxMiArOTAyLDEyIEBAIHZv
aWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogI2VuZGlmCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogCi0gICAgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbnVsbHB0cjsKICAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQog
ICAgICAgICBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcERpdj4oKS5t
ZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAKLSAgICBTbmlwcGV0T3BlcmFu
ZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9w
ZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5
dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0
T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQz
MihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC05NTksNyArOTQ5LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAK
IHZvaWQgSklUOjplbWl0X29wX211bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwor
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAg
IEpJVE11bElDKiBtdWxJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUp
OwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBtdWxJ
Qyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BNdWw+KG11bElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlTXVsKTsKQEAgLTk3NSw3
ICs5NjUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9z
dWIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1l
dGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1ldGFk
YXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVRTdWJJQyogc3ViSUMgPSBt
X2NvZGVCbG9jay0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9u
VG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgc3ViSUMpOwogICAgIGVtaXRNYXRoSUNG
YXN0PE9wU3ViPihzdWJJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZVN1YlBy
b2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1Yik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVERpdkdlbmVyYXRvci5jcHAKaW5kZXggNjZlMWJlMTRhOGQuLmI4YzQ3OTg2ZmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCkBAIC0xMzAs
NyArMTMwLDcgQEAgdm9pZCBKSVREaXZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxI
ZWxwZXJzJiBqaXQpCiAgICAgbm90RG91YmxlWmVyby5saW5rKCZqaXQpOwogI2VuZGlmCiAgICAg
aWYgKG1fYXJpdGhQcm9maWxlKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihBcml0aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6
QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAg
ICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxl
OjpzcGVjaWFsRmFzdFBhdGhCaXQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhtX2Fy
aXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAgICAgaml0LmJveERvdWJsZShtX2xlZnRG
UFIsIG1fcmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVREaXZHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2Vu
ZXJhdG9yLmgKaW5kZXggODM5NjY3Nzk0M2YuLjcwOGRiMTBkNmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogICAgIEpJVERpdkdlbmVyYXRvcihTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCwgU25pcHBl
dE9wZXJhbmQgcmlnaHRPcGVyYW5kLAogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQsIEpTVmFs
dWVSZWdzIGxlZnQsIEpTVmFsdWVSZWdzIHJpZ2h0LAogICAgICAgICBGUFJSZWcgbGVmdEZQUiwg
RlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2NyYXRjaEdQUiwgRlBSUmVnIHNjcmF0Y2hGUFIsCi0g
ICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbnVsbHB0cikKKyAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQogICAgICAgICA6IG1fbGVm
dE9wZXJhbmQobGVmdE9wZXJhbmQpCiAgICAgICAgICwgbV9yaWdodE9wZXJhbmQocmlnaHRPcGVy
YW5kKQogICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0
ZToKICAgICBHUFJSZWcgbV9zY3JhdGNoR1BSOwogICAgIEZQUlJlZyBtX3NjcmF0Y2hGUFI7CiAg
ICAgYm9vbCBtX2RpZEVtaXRGYXN0UGF0aCB7IGZhbHNlIH07Ci0gICAgQXJpdGhQcm9maWxlKiBt
X2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOwog
CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX2VuZEp1bXBMaXN0OwogICAgIENDYWxsSGVs
cGVyczo6SnVtcExpc3QgbV9zbG93UGF0aEp1bXBMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAppbmRleCAzOTU5YjhkNTA4OC4uNTdhODFlYzc5YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC03MTcsMTMgKzcxNywxMyBAQCBBTFdBWVNf
SU5MSU5FIEdldFB1dEluZm8gSklUOjpjb3BpZWRHZXRQdXRJbmZvKE9wUHV0VG9TY29wZSBieXRl
Y29kZSkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+Ci1BTFdBWVNfSU5MSU5FIEFy
aXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCBieXRlY29kZSkKK0FM
V0FZU19JTkxJTkUgQmluYXJ5QXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJp
bmFyeU9wIGJ5dGVjb2RlKQogewogICAgIHVpbnQ2NF90IGtleSA9IChzdGF0aWNfY2FzdDx1aW50
NjRfdD4oQmluYXJ5T3A6Om9wY29kZUlEKSArIDEpIDw8IDMyIHwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGJ5dGVjb2RlLm1fbWV0YWRhdGFJRCk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fY29waWVk
QXJpdGhQcm9maWxlcy5maW5kKGtleSk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IG1fY29waWVkQXJp
dGhQcm9maWxlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLSAgICBB
cml0aFByb2ZpbGUgYXJpdGhQcm9maWxlID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
Lm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgbV9jb3Bp
ZWRBcml0aFByb2ZpbGVzLmFkZChrZXksIGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIGFyaXRo
UHJvZmlsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0
aElDLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCmluZGV4IDU2NDVl
NDJkZWZmLi44NDY0NjIyYTZkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRNYXRoSUMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5o
CkBAIC01MiwxMSArNTIsMTEgQEAgc3RydWN0IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSB7CiAKICNk
ZWZpbmUgRU5BQkxFX01BVEhfSUNfU1RBVFMgMAogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJh
dG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1wdHkpKEFyaXRoUHJvZmlsZSYpPgordGVtcGxhdGUg
PHR5cGVuYW1lIEdlbmVyYXRvclR5cGUsIHR5cGVuYW1lIEFyaXRoUHJvZmlsZVR5cGU+CiBjbGFz
cyBKSVRNYXRoSUMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IEpJVE1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKKyAgICBKSVRNYXRoSUMoQXJp
dGhQcm9maWxlVHlwZSogYXJpdGhQcm9maWxlKQogICAgICAgICA6IG1fYXJpdGhQcm9maWxlKGFy
aXRoUHJvZmlsZSkKICAgICB7CiAgICAgfQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUo
KTsKIAogICAgICAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKLSAgICAgICAgICAgIGlmIChpc1By
b2ZpbGVFbXB0eSgqbV9hcml0aFByb2ZpbGUpKSB7CisgICAgICAgICAgICBpZiAobV9hcml0aFBy
b2ZpbGUtPmlzT2JzZXJ2ZWRUeXBlRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIC8vIEl0IGxv
b2tzIGxpa2UgdGhlIE1hdGhJQyBoYXMgeWV0IHRvIGV4ZWN1dGUuIFdlIGRvbid0IHdhbnQgdG8g
ZW1pdCBjb2RlIGluIHRoaXMKICAgICAgICAgICAgICAgICAvLyBjYXNlIGZvciBhIGNvdXBsZSBy
ZWFzb25zLiBGaXJzdCwgdGhlIG9wZXJhdGlvbiBtYXkgbmV2ZXIgZXhlY3V0ZSwgc28gaWYgd2Ug
ZG9uJ3QgZW1pdAogICAgICAgICAgICAgICAgIC8vIGNvZGUsIGl0J3MgYSB3aW4uIFNlY29uZCwg
aWYgdGhlIG9wZXJhdGlvbiBkb2VzIGV4ZWN1dGUsIHdlIGNhbiBlbWl0IGJldHRlciBjb2RlCkBA
IC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgICAgICBtX3Nsb3dQYXRoU3RhcnRMb2NhdGlv
biA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihzdGF0ZS5zbG93UGF0
aFN0YXJ0KTsKICAgICB9CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJpdGhQcm9maWxlOyB9CisgICAgQXJpdGhQcm9maWxlVHlwZSogYXJpdGhQ
cm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KIAogI2lmIEVOQUJMRShN
QVRIX0lDX1NUQVRTKQogICAgIHNpemVfdCBtX2dlbmVyYXRlZENvZGVTaXplIHsgMCB9OwpAQCAt
MjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmls
ZSogbV9hcml0aFByb2ZpbGU7CisgICAgQXJpdGhQcm9maWxlVHlwZSogbV9hcml0aFByb2ZpbGU7
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2NvZGU7
CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9pbmxpbmVTdGFydDsK
ICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2lubGluZUVuZDsKQEAg
LTI0NiwxNSArMjQ2LDE1IEBAIHB1YmxpYzoKICAgICBHZW5lcmF0b3JUeXBlIG1fZ2VuZXJhdG9y
OwogfTsKIAotaW5saW5lIGJvb2wgaXNCaW5hcnlQcm9maWxlRW1wdHkoQXJpdGhQcm9maWxlJiBh
cml0aFByb2ZpbGUpCitpbmxpbmUgYm9vbCBpc0JpbmFyeVByb2ZpbGVFbXB0eShCaW5hcnlBcml0
aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKIHsKICAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09i
c2VydmVkVHlwZSgpLmlzRW1wdHkoKSB8fCBhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCku
aXNFbXB0eSgpOwogfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+Ci1jbGFzcyBK
SVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzQmluYXJ5
UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElD
PEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4gewogcHVibGljOgotICAgIEpJVEJp
bmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRNYXRo
SUM8R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQcm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkKKyAg
ICBKSVRCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAg
ICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4oYXJpdGhQ
cm9maWxlKQogICAgIHsKICAgICB9CiB9OwpAQCAtMjY0LDE1ICsyNjQsMTUgQEAgdHlwZWRlZiBK
SVRCaW5hcnlNYXRoSUM8SklUTXVsR2VuZXJhdG9yPiBKSVRNdWxJQzsKIHR5cGVkZWYgSklUQmlu
YXJ5TWF0aElDPEpJVFN1YkdlbmVyYXRvcj4gSklUU3ViSUM7CiAKIAotaW5saW5lIGJvb2wgaXNV
bmFyeVByb2ZpbGVFbXB0eShBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKK2lubGluZSBib29s
IGlzVW5hcnlQcm9maWxlRW1wdHkoQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7
CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiB9
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZT4KLWNsYXNzIEpJVFVuYXJ5TWF0aElD
IDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5PiB7
CitjbGFzcyBKSVRVbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwg
VW5hcnlBcml0aFByb2ZpbGU+IHsKIHB1YmxpYzoKLSAgICBKSVRVbmFyeU1hdGhJQyhBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwg
aXNVbmFyeVByb2ZpbGVFbXB0eT4oYXJpdGhQcm9maWxlKQorICAgIEpJVFVuYXJ5TWF0aElDKFVu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVy
YXRvclR5cGUsIFVuYXJ5QXJpdGhQcm9maWxlPihhcml0aFByb2ZpbGUpCiAgICAgewogICAgIH0K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKaW5k
ZXggODNkMjkzYjYyNTIuLmNmNmJhYTUyZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlu
bGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
c3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklU
TXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNl
cnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC04OSw3ICs4OSw3
IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJl
c3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRNdWxHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBj
b25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5n
KQorYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0
Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xl
ZnQucGF5bG9hZEdQUigpKTsKQEAgLTIwNSwxOCArMjA1LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdE5lZ2F0aXZlWmVybyA9IGpp
dC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCks
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KG5lZ2F0aXZlWmVyb0JpdHMpKTsKIAotICAgICAg
ICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1pl
cm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFk
ZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRp
dmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJz
b2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGpp
dC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9u
TmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmls
ZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQucGF5bG9h
ZEdQUigpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBl
cnM6OkltbTMyKDUyKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVs
cGVyczo6SW1tMzIoMHg3ZmYpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbm9JbnQ1Mk92ZXJmbG93ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1Ro
YW5PckVxdWFsLCBtX3NjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMx
KSk7CiAKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQ
cm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJp
dGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0Nh
bGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkp
KTsKICAgICAgICAgbm9JbnQ1Mk92ZXJmbG93LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9uZS5s
aW5rKCZqaXQpOwpAQCAtMjI3LDE4ICsyMjcsMTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QK
ICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJz
OjpOb3RFcXVhbCwgbV9yZXN1bHQucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMigwKSkpOwogICAgICAgICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihD
Q2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC50YWdHUFIoKSwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIobmVnYXRpdmVaZXJvQml0cyA+PiAzMikpKTsKIAotICAgICAgICBqaXQub3Iz
MihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUp
LCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJp
dHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5h
cnlBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRk
cmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxp
bmsoJmppdCk7Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFy
aXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRy
ZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0Rv
dWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVz
c09mQml0cygpKSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1fc2Ny
YXRjaEdQUik7CiAgICAgICAgIGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIg
LSAzMiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6Oklt
bTMyKDB4N2ZmKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5v
SW50NTJPdmVyZmxvdyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVh
bCwgbV9zY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogICAg
ICAgICAKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQ
cm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJp
dGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0Nh
bGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkp
KTsKIAogICAgICAgICBlbmRKdW1wTGlzdC5hcHBlbmQobm9JbnQ1Mk92ZXJmbG93KTsKICAgICAg
ICAgaWYgKG1fc2NyYXRjaEdQUiA9PSBtX3Jlc3VsdC50YWdHUFIoKSB8fCBtX3NjcmF0Y2hHUFIg
PT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TXVsR2VuZXJhdG9yLmgKaW5kZXggMzZkMjZlYTEyNGUuLjYwODc3OTY2ODVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKQEAgLTU2LDggKzU2LDggQEAg
cHVibGljOgogICAgICAgICBBU1NFUlQoIW1fbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50
MzIoKSB8fCAhbV9yaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSk7CiAgICAgfQog
Ci0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYs
IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wg
Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBl
bmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBB
cml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lu
bGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9u
U3RhdGUmLCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3Qs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQ
cm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlz
TGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJl
dHVybiBsZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJv
b2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFu
ZCkgeyByZXR1cm4gcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcAppbmRleCA5MmMyOWRk
NjMwYS4uY2VlYmUzOTA5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTmVnR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5l
Z0dlbmVyYXRvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJ
VE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxs
SGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0
b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlLCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAg
IEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2Ny
YXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwpAQCAtNDUsNyArNDUsNyBAQCBKSVRNYXRo
SUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBl
cnMmIGppdCwgTWF0aElDRwogICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIu
CiAgICAgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkVHlwZXMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50
MzIoKTsKICAgICBpZiAoYXJpdGhQcm9maWxlKQotICAgICAgICBvYnNlcnZlZFR5cGVzID0gYXJp
dGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKTsKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFy
aXRoUHJvZmlsZS0+YXJnT2JzZXJ2ZWRUeXBlKCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
b2JzZXJ2ZWRUeXBlcy5pc0VtcHR5KCksICJXZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2VuZXJh
dGUgYW55dGhpbmcgaWYgd2UgZG8gbm90IGhhdmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYgKG9i
c2VydmVkVHlwZXMuaXNPbmx5Tm9uTnVtYmVyKCkpCkBAIC04Miw3ICs4Miw3IEBAIEpJVE1hdGhJ
Q0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVy
cyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJh
dGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0
LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRO
ZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVs
cGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93
UGF0aEp1bXBMaXN0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3Ny
Yy5wYXlsb2FkR1BSKCkpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQucGF5
bG9hZEdQUigpKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAog
I2VuZGlmCiAgICAgLy8gVGhlIGZsYWdzIG9mIEFyaXRoTmVnYXRlIGFyZSBiYXNpYyBpbiBERkcu
CiAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGtub3cgaWYgd2UgZXZlciBwcm9kdWNlZCBhIG51bWJl
ci4KLSAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRo
UHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCkuc2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+
ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nICYmIGFyaXRo
UHJvZmlsZSAmJiAhYXJpdGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSAm
JiAhYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmls
ZS0+ZW1pdFNldERvdWJsZShqaXQpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKaW5kZXggOGEwYzJkNTE3ZDYuLjc4N2I3
MDc2ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgK
QEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNo
R1BSKQogICAgIHsgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmls
ZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1Bh
dGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5n
KTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJz
JiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqKTsKKyAg
ICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExp
c3QsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsK
IAogcHJpdmF0ZToKICAgICBKU1ZhbHVlUmVncyBtX3Jlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGMzZWVjNjQ2NDU4Li43MzY2Njk1YjZi
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0y
NTU4LDcgKzI1NTgsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnBy
b2ZpbGVkQWRkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNBZGQoZXhlYywgb3AxLCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRBZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2Zp
bGUmIGFyaXRoUHJvZmlsZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHBy
b2ZpbGVkQWRkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKQEAgLTI1NzgsNyArMjU3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlCiAgICAgcmV0dXJuIHVucHJvZmlsZWRBZGQoZXhlYywgZW5jb2RlZE9wMSwgZW5jb2Rl
ZE9wMik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVB
ZGRQcm9maWxlZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJU
KGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVkQWRkKGV4ZWMsIGVuY29kZWRPcDEs
IGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwpAQCAtMjU5Miw3ICsyNTkyLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUo
RXhlY1N0YXRlKiBleGVjLAogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDEpOwogICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwog
Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCk7
CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9m
aWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgYXJpdGhQcm9maWxlLT5vYnNl
cnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9w
ZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplOwpAQCAtMjYxMyw3ICsyNjEzLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkTm9P
cHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJU
KGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVkQWRkKGV4ZWMsIGVuY29kZWRPcDEs
IGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQpAQCAtMjYyNyw3ICsyNjI3LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEoKICAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFs
dWVBZGROb09wdGltaXplOwotICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFk
ZElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2Jz
ZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAgICAgYWRkSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGV4
ZWMtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0yNjU5LDcgKzI2NTks
NyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkTXVsKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNNdWwoZXhlYywgb3AxLCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgcHJvZmlsZWRNdWwoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUmIGFyaXRoUHJv
ZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQorQUxXQVlTX0lO
TElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRNdWwoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5h
cnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhT
VHlwZXMgPSB0cnVlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjY5Nyw3ICsyNjk3LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEoKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxO
b09wdGltaXplOwotICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5h
cml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBtdWxJQy0+YXJpdGhQcm9maWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxI
U0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AyKSk7CiAgICAgbXVsSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGV4ZWMtPmNvZGVCbG9jaygp
LCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0yNzA4LDcgKzI3MDgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSgogICAgIHJldHVybiB1bnByb2ZpbGVkTXVsKGV4ZWMsIGVuY29kZWRPcDEs
IGVuY29kZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlTXVsUHJvZmlsZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxl
ZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CkBAIC0yNzIyLDcgKzI3MjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsCiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFy
aXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVs
SUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQg
PSBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTI3NDAsNyArMjc0MCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxl
ZE5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFT
U0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBwcm9maWxlZE11bChleGVjLCBlbmNvZGVk
T3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KQEAgLTI3NjQsMTQgKzI3NjQsMTQg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9maWxlZE5lZ2F0ZShF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1YKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKC1udW1iZXIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgcHJvZmlsZWROZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3BlcmFuZCwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCitBTFdBWVNfSU5MSU5FIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZE5lZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5k
KTsKLSAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBhcml0aFByb2Zp
bGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICAKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9w
ZXJhbmQudG9QcmltaXRpdmUoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yNzk1LDcgKzI3OTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdQogICAgIHJldHVybiB1bnByb2ZpbGVkTmVnYXRlKGV4ZWMsIG9wZXJhbmQpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmls
ZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBvcGVyYW5kLCBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJp
dGhOZWdhdGVQcm9maWxlZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQs
IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVkTmVnYXRlKGV4ZWMsIG9wZXJhbmQsICphcml0aFBy
b2ZpbGUpOwpAQCAtMjgwOSw5ICsyODA5LDkgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRlKiBleGUKICAg
ICAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQp
OwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxl
KCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFBy
b2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKLSAgICBhcml0aFByb2ZpbGUtPm9i
c2VydmVMSFMob3BlcmFuZCk7CisgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlQXJnKG9wZXJhbmQp
OwogICAgIG5lZ0lDLT5nZW5lcmF0ZU91dE9mTGluZShleGVjLT5jb2RlQmxvY2soKSwgb3BlcmF0
aW9uQXJpdGhOZWdhdGVQcm9maWxlZCk7CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAg
LTI4NDIsOCArMjg0Miw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QXJpdGhOZWdhdGVPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kCiAKICAgICBKU1ZhbHVl
IG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgaWYgKEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpKQotICAgICAg
ICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgaWYgKFVuYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgICAgIGFy
aXRoUHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRP
ZkxpbmUoZXhlYy0+Y29kZUJsb2NrKCksIG9wZXJhdGlvbkFyaXRoTmVnYXRlKTsKIAogI2lmIEVO
QUJMRShNQVRIX0lDX1NUQVRTKQpAQCAtMjg2OSw3ICsyODY5LDcgQEAgQUxXQVlTX0lOTElORSBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9maWxlZFN1YihFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3ViKGV4ZWMsIG9wMSwgb3Ay
KSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3Vi
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9vbCBz
aG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQorQUxXQVlTX0lOTElORSBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRTdWIoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFy
aXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBl
cyA9IHRydWUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CkBAIC0yODkyLDcgKzI4OTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlU3ViKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZQogICAgIHJldHVy
biB1bnByb2ZpbGVkU3ViKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwog
CkBAIC0yOTA4LDcgKzI5MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlU3ViT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSgogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgYXV0byBub25PcHRpbWl6
ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZVN1Yk5vT3B0aW1pemU7Ci0gICAgaWYgKEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpKQorICAgIGlmIChCaW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKSkKICAg
ICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBzdWJJQy0+Z2VuZXJh
dGVPdXRPZkxpbmUoZXhlYy0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAg
LTI5MzIsNyArMjkzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7
CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9m
aWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgYXJpdGhQcm9maWxlLT5vYnNl
cnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDIpKTsKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZh
bHVlU3ViUHJvZmlsZWROb09wdGltaXplOwpAQCAtMjk1MCw3ICsyOTUwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZShF
eGVjU3RhdGUqIGV4ZWMKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVkU3ViKHZtLCBleGVjLCBlbmNvZGVkT3AxLCBlbmNv
ZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKaW5kZXggOWRiNjczNDE5MjMuLjNiNmFhZjA0ZmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzgsNiArMzgsOCBAQCB0eXBlZGVm
IGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAgICAgCiBjbGFzcyBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOworY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFz
cyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCdXR0ZXJmbHk7CiBjbGFzcyBDYWxsRnJhbWU7
CiBjbGFzcyBDYWxsTGlua0luZm87CkBAIC02NCw3ICs2Niw2IEBAIGNsYXNzIFdhdGNocG9pbnRT
ZXQ7CiBzdHJ1Y3QgQnlWYWxJbmZvOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIHN0cnVjdCBJ
bnN0cnVjdGlvbjsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiAKIHVzaW5nIEV4ZWNTdGF0ZSA9IENh
bGxGcmFtZTsKIApAQCAtNzksNyArODAsNyBAQCB0eXBlZGVmIGNoYXIqIFVudXNlZFB0cjsKICAg
ICBBOiBKU0FycmF5KgogICAgIEFhcDogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSoKICAgICBBcDog
QXJyYXlQcm9maWxlKgotICAgIEFycDogQXJpdGhQcm9maWxlKgorICAgIEFycDogQmluYXJ5QXJp
dGhQcm9maWxlKgogICAgIEI6IEJ1dHRlcmZseSoKICAgICBCeTogQnlWYWxJbmZvKgogICAgIEM6
IEpTQ2VsbCoKQEAgLTE0NSwxMyArMTQ2LDEzIEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJ
VF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKWikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTCiB0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkMp
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpT
VmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKQSkoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVS
QVRJT04gKkpfSklUT3BlcmF0aW9uX0VBUFopKEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCB2b2lkKiwg
aW50MzJfdCk7Ci10eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9w
ZXJhdGlvbl9FSkFycCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEFyaXRoUHJvZmlsZSop
OwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25f
RUpBcnApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBCaW5hcnlBcml0aFByb2ZpbGUqKTsK
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VK
SSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBl
ZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkopKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkpKKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkpKKShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9O
ICpKX0pJVE9wZXJhdGlvbl9FSkpBcCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBBcnJheVByb2ZpbGUqKTsKLXR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9P
UEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkFycCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBBcml0aFByb2ZpbGUqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkFycCkoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCaW5hcnlBcml0aFByb2ZpbGUqKTsKIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKSkJ5KShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopOwog
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpK
TWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsK
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VK
TWljKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCopOwpAQCAtNDgyLDcgKzQ4Myw3
IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0lmRXhjZXB0aW9uSXNVbmNh
dGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKEV4CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSW5zdGFuY2VPZkN1c3RvbShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3Rh
bmNlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVBZGQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSop
IFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVBZGRQcm9maWxlZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRP
cHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJO
QUw7CkBAIC00OTIsMTMgKzQ5MywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdQogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemUoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7Ci1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJv
ZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCk7Ci1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwgQXJpdGhQcm9maWxlKik7CitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwgVW5hcnlBcml0aFByb2ZpbGUqKTsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGlt
aXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyop
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGlt
aXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyop
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YihFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ay
KSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlU3ViUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOworRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVTdWJOb09wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAKaW5kZXggNzk1YzI3NTg0YzAuLjdiMWE4YjgxOWZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1
bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0
aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3Qg
QmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0
byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBl
KCkud2l0aEludDMyKCk7CkBAIC03OCw3ICs3OCw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBK
SVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNH
CiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsK
IH0KIAotYm9vbCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRTdWJHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBj
b25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAg
ICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5oCmluZGV4IDU2MWY2MzM0YWUzLi4z
NDkxYTgzZmVkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRv
ci5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3NjcmF0Y2hGUFIoc2Ny
YXRjaEZQUikKICAgICB7IH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlu
bGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBBcml0aFBy
b2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNs
b3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2Zp
bGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVs
cGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSop
OworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhK
dW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmls
aW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBw
ZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBib29sIGlzUmlnaHRPcGVy
YW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggYmRhMzA4Yzg0ZDIuLmMw
MzQxYzk1NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApA
QCAtMTM1LDM2ICsxMzUsNDkgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0p
CiAjZW5kaWYKIAogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAg
ICAgICAgVW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBhcml0aFByb2Zp
bGUuYXJnU2F3SW50MzIoKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0g
VW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5hcmdPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICB9CisgICAg
eworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIGFyaXRo
UHJvZmlsZS5hcmdTYXdOdW1iZXIoKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRz
KCkgPT0gVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cygpKTsKKyAgICAgICAg
QVNTRVJUKGFyaXRoUHJvZmlsZS5hcmdPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwog
ICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKICAgICAgICAgYXJpdGhQcm9maWxl
LnJoc1Nhd0ludDMyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnRJbnQoKS5iaXRzKCkpOwotICAgICAgICBTVEFU
SUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnRJbnQoKS5saHNPYnNlcnZl
ZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2Zp
bGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIo
KSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJv
ZmlsZTo6b2JzZXJ2ZWRJbnRJbnRCaXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxl
Lmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQ
cm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAgIH0KICAgICB7Ci0g
ICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdOdW1iZXIoKTsK
ICAgICAgICAgYXJpdGhQcm9maWxlLnJoc1Nhd0ludDMyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0
aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQo
KS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRC
aW5hcnlOdW1iZXJJbnQoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7Ci0gICAg
ICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgp
LnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQ
cm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVySW50Qml0
cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09u
bHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBl
KCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxlIGFy
aXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAg
ICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051bWJlcigpOwogICAgICAgICBhcml0aFByb2ZpbGUu
cmhzU2F3TnVtYmVyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5iaXRzKCkpOwotICAgICAg
ICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIo
KS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NF
UlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51bWJlcigpLnJoc09ic2VydmVk
VHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRz
KCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKSk7Cisg
ICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVy
KCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25s
eU51bWJlcigpKTsKICAgICB9CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9m
aWxlOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBh
cml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKICAgICAgICAgYXJpdGhQcm9maWxlLnJoc1Nhd051
bWJlcigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFByb2Zp
bGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCkuYml0cygpKTsKLSAgICAgICAgU1RBVElDX0FT
U0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCkubGhzT2JzZXJ2ZWRU
eXBlKCkuaXNPbmx5SW50MzIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxl
OjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJl
cigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQ
cm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChh
cml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwogICAgIH0KIH0K
IElHTk9SRV9XQVJOSU5HU19FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYTI1Zjk4NGFiZGEuLmY1ZDkxNzc0
NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAKIGNvbnN0IGludDY0
X3QqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQogewotLy8gVGhpcyBpcyBhIGZpbGUg
Z2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0c19leHRyYWN0b3IucmIsIGFu
ZCBjb250YWlucyBjb2RlCisvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFz
bS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiLCBhbmQgY29udGFpbnMgY29kZQogLy8gdG8g
Y3JlYXRlIGEgdGFibGUgb2Ygb2Zmc2V0cywgc2l6ZXMsIGFuZCBhIGhlYWRlciBpZGVudGlmeWlu
ZyB3aGF0IGNvbWJpbmF0aW9uIG9mCiAvLyBQbGF0Zm9ybS5oIG1hY3JvcyB3ZSBoYXZlIHNldC4g
V2UgaW5jbHVkZSBpdCBpbnNpZGUgb2YgYSBtZXRob2Qgb24gTExJbnRPZmZzZXRzRXh0cmFjdG9y
CiAvLyBiZWNhdXNlIHRoZSBmaWVsZHMgd2hvc2Ugb2Zmc2V0cyB3ZSdyZSBleHRyYWN0aW5nIGFy
ZSBtb3N0bHkgcHJpdmF0ZS4gU28gd2UgbWFrZSB0aGVpcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDNmNjA4MTc5NDNk
Li43YTFlYTkyNjc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjQwLDEzICsyNDAsMTUgQEAgY29uc3QgSXNJbnZh
bGlkYXRlZCA9IGNvbnN0ZXhwciBJc0ludmFsaWRhdGVkCiAjIFNoYWRvd0NoaWNrZW4gZGF0YQog
Y29uc3QgU2hhZG93Q2hpY2tlblRhaWxNYXJrZXIgPSBjb25zdGV4cHIgU2hhZG93Q2hpY2tlbjo6
UGFja2V0Ojp0YWlsTWFya2VyVmFsdWUKIAotIyBBcml0aFByb2ZpbGUgZGF0YQotY29uc3QgQXJp
dGhQcm9maWxlSW50ID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkVW5hcnlJbnQo
KS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXIgPSBjb25zdGV4cHIgKEFyaXRoUHJv
ZmlsZTo6b2JzZXJ2ZWRVbmFyeU51bWJlcigpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZUlu
dEludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLmJp
dHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9m
aWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmls
ZUludE51bWJlciA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51
bWJlcigpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IGNvbnN0ZXhw
ciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51bWJlcigpLmJpdHMoKSkKKyMg
VW5hcnlBcml0aFByb2ZpbGUgZGF0YQorY29uc3QgQXJpdGhQcm9maWxlSW50ID0gY29uc3RleHBy
IChVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKCkpCitjb25zdCBBcml0aFByb2Zp
bGVOdW1iZXIgPSBjb25zdGV4cHIgKFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckJp
dHMoKSkKKworIyBCaW5hcnlBcml0aFByb2ZpbGUgZGF0YQorY29uc3QgQXJpdGhQcm9maWxlSW50
SW50ID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cygp
KQorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVySW50ID0gY29uc3RleHByIChCaW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVkTnVtYmVySW50Qml0cygpKQorY29uc3QgQXJpdGhQcm9maWxlSW50TnVt
YmVyID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50TnVtYmVyQml0
cygpKQorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyTnVtYmVyID0gY29uc3RleHByIChCaW5hcnlB
cml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cygpKQogCiAjIFBvaW50ZXIgVGFn
cwogY29uc3QgQnl0ZWNvZGVQdHJUYWcgPSBjb25zdGV4cHIgQnl0ZWNvZGVQdHJUYWcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KaW5kZXggMzA0MzVjNDY3ZDMuLmZjOTM2MDhhZDQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQpAQCAtMTAwMyw4ICsxMDAzLDggQEAgZW5kKQogCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25l
Z2F0ZSwgT3BOZWdhdGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQogCi0gICAgbWFjcm8gYXJpdGhQcm9maWxlKHR5cGUpCi0gICAgICAgIG9yaSB0eXBlLCBP
cE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNb
dDVdCisgICAgbWFjcm8gdXBkYXRlQXJpdGhQcm9maWxlKHR5cGUpCisgICAgICAgIG9yaCB0eXBl
LCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6
Om1fYml0c1t0NV0KICAgICBlbmQKIAogICAgIG1ldGFkYXRhKHQ1LCB0MCkKQEAgLTEwMTMsMTIg
KzEwMTMsMTIgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9uZWdhdGUsIE9wTmVnYXRlLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHIKICAgICBiaW5lcSB0MSwgSW50MzJU
YWcsIC5vcE5lZ2F0ZVNyY05vdEludAogICAgIGJ0aXogdDIsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0
ZVNsb3cKICAgICBuZWdpIHQyCi0gICAgYXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZUludCkKKyAg
ICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQogICAgIHJldHVybiAoSW50MzJU
YWcsIHQyKQogLm9wTmVnYXRlU3JjTm90SW50OgogICAgIGJpYSB0MSwgTG93ZXN0VGFnLCAub3BO
ZWdhdGVTbG93CiAgICAgeG9yaSAweDgwMDAwMDAwLCB0MQotICAgIGFyaXRoUHJvZmlsZShBcml0
aFByb2ZpbGVOdW1iZXIpCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJl
cikKICAgICByZXR1cm4odDEsIHQyKQogCiAub3BOZWdhdGVTbG93OgpAQCAtMTAzMCw3ICsxMDMw
LDcgQEAgZW5kKQogbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uKQogICAgIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtYWNybyBhcml0
aFByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisgICAgICAg
ICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSAr
IEJpbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgICAgICBlbmQKIAogICAgICAgICBt
ZXRhZGF0YSh0NSwgdDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGIyZmI1NTFiOWVhLi44MWFjYThkMmJhYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KQEAgLTk3MywyMiArOTczLDI0IEBAIGVuZCkKIAogCiBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdhdGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0YSwgcmV0dXJuKQorCisgICAgbWFjcm8gdXBkYXRlQXJpdGhQcm9maWxlKHR5cGUpCisg
ICAgICAgIG9yaCB0eXBlLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5h
cnlBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0KKyAgICBlbmQKKwogICAgIGdldChtX29wZXJhbmQs
IHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQogICAgIG1ldGFk
YXRhKHQxLCB0MikKLSAgICBsb2FkaSBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxl
ICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFdLCB0MgogICAgIGJxYiB0MywgbnVtYmVyVGFnLCAu
b3BOZWdhdGVOb3RJbnQKICAgICBidGl6IHQzLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CiAg
ICAgbmVnaSB0MwogICAgIG9ycSBudW1iZXJUYWcsIHQzCi0gICAgb3JpIEFyaXRoUHJvZmlsZUlu
dCwgdDIKLSAgICBzdG9yZWkgdDIsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUg
KyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0KKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQ
cm9maWxlSW50KQogICAgIHJldHVybih0MykKIC5vcE5lZ2F0ZU5vdEludDoKICAgICBidHF6IHQz
LCBudW1iZXJUYWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JxIDB4ODAwMDAwMDAwMDAwMDAwMCwg
dDMKLSAgICBvcmkgQXJpdGhQcm9maWxlTnVtYmVyLCB0MgotICAgIHN0b3JlaSB0MiwgT3BOZWdh
dGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQor
ICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVOdW1iZXIpCiAgICAgcmV0dXJuKHQz
KQogCiAub3BOZWdhdGVTbG93OgpAQCAtMTAwMiw3ICsxMDA0LDcgQEAgbWFjcm8gYmluYXJ5T3BD
dXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRpb25BbmRT
dG9yZSwgZG8KICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQogCiAgICAgICAgIG1hY3JvIHByb2Zp
bGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisgICAgICAgICAgICBv
cmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIFVuYXJ5
QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAgICAgIGdldChtX3Jo
cywgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0u
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKaW5kZXggOTg4MWU0
ZGJkMDMuLjVlOTgzNGNjYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJt
LnJiCkBAIC00MTgsNyArNDE4LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGVu
ZAogICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCiAgICAgICAgICAgICBlbWl0QXJtQ29tcGFj
dCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAg
ICAgICAgd2hlbiAib3JpIiwgIm9ycCIsICJvcmgiCiAgICAgICAgICAgICBlbWl0QXJtQ29tcGFj
dCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKICAgICAgICAgd2hlbiAib3JpcyIKICAgICAgICAg
ICAgIGVtaXRBcm1Db21wYWN0KCJvcnJzIiwgIm9ycnMiLCBvcGVyYW5kcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKaW5kZXggNGNkOGY2NmUzMDMuLmRkNjYzMDJl
MGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5y
YgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpAQCAtMzc4
LDcgKzM3OCw3IEBAIGNsYXNzIFNlcXVlbmNlCiAgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2Rl
CiAgICAgICAgICAgICB3aGVuICJsb2FkYiIsICJsb2FkYnNpIiwgImxvYWRic3EiLCAic3RvcmVi
IiwgL15iYi8sIC9eYnRiLywgL15jYi8sIC9edGIvCiAgICAgICAgICAgICAgICAgc2l6ZSA9IDEK
LSAgICAgICAgICAgIHdoZW4gImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIKKyAgICAgICAg
ICAgIHdoZW4gImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIsICJvcmgiLCAic3RvcmVoIgog
ICAgICAgICAgICAgICAgIHNpemUgPSAyCiAgICAgICAgICAgICB3aGVuICJsb2FkaSIsICJsb2Fk
aXMiLCAic3RvcmVpIiwgImFkZGkiLCAiYW5kaSIsICJsc2hpZnRpIiwgIm11bGkiLCAibmVnaSIs
CiAgICAgICAgICAgICAgICAgIm5vdGkiLCAib3JpIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiLCAi
c3ViaSIsICJ4b3JpIiwgL15iaS8sIC9eYnRpLywKQEAgLTYzMSw2ICs2MzEsOCBAQCBjbGFzcyBJ
bnN0cnVjdGlvbgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIiLCBvcGVyYW5kcywgOnB0
cikKICAgICAgICAgd2hlbiAib3JxIgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIiLCBv
cGVyYW5kcywgOnF1YWQpCisgICAgICAgIHdoZW4gIm9yaCIKKyAgICAgICAgICAgIGVtaXRBUk02
NFRBQygib3JyIiwgb3BlcmFuZHMsIDpoYWxmKQogICAgICAgICB3aGVuICJ4b3JpIgogICAgICAg
ICAgICAgZW1pdEFSTTY0VEFDKCJlb3IiLCBvcGVyYW5kcywgOndvcmQpCiAgICAgICAgIHdoZW4g
InhvcnAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9v
cC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCmluZGV4IGI3
MTQ5ZTgyYWNiLi5hNjgxNmNiY2E3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vY2xvb3AucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vY2xvb3AucmIKQEAgLTU4NSw2ICs1ODUsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAg
ICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50NjQsICJ8IikKICAgICAgICAg
d2hlbiAib3JwIgogICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50
cHRyLCAifCIpCisgICAgICAgIHdoZW4gIm9yaCIKKyAgICAgICAgICAgIGNsb29wRW1pdE9wZXJh
dGlvbihvcGVyYW5kcywgOmludDE2LCAifCIpCiAKICAgICAgICAgd2hlbiAieG9yaSIKICAgICAg
ICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDMyLCAiXiIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKaW5kZXggNzE3
ODhiMTA4MzcuLjE2NzY3NTRhMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCkBAIC00Miw2ICs0Miw3IEBAIE1BQ1JPX0lOU1RSVUNU
SU9OUyA9CiAgICAgICJuZWdxIiwKICAgICAgIm5vdGkiLAogICAgICAib3JpIiwKKyAgICAgIm9y
aCIsCiAgICAgICJyc2hpZnRpIiwKICAgICAgInVyc2hpZnRpIiwKICAgICAgInJzaGlmdHAiLApA
QCAtNjAsNiArNjEsNyBAQCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAibG9hZGhzcSIsCiAg
ICAgICJzdG9yZWkiLAogICAgICAic3RvcmViIiwKKyAgICAgInN0b3JlaCIsCiAgICAgICJsb2Fk
ZCIsCiAgICAgICJtb3ZlZCIsCiAgICAgICJzdG9yZWQiLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL21pcHMucmIKaW5kZXggZTQ0NjQ3Y2QzYjIuLmRhYjRkODVjOWRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKQEAgLTUyNyw3ICs1MjcsNyBAQCBk
ZWYgbWlwc0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhsaXN0KQogICAgICAgICAgICAgICAgIGVu
ZAogICAgICAgICAgICAgd2hlbiAvXihhZGRpfHN1YmkpLwogICAgICAgICAgICAgICAgIG5ld0xp
c3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0LCAt
MHg3ZmZmLi4weDdmZmYpCi0gICAgICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiLCAib3JpIiwg
Im9ycCIsICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiLCAi
b3JpIiwgIm9ycCIsICJvcmgiLCAieG9yaSIsICJ4b3JwIgogICAgICAgICAgICAgICAgIG5ld0xp
c3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0LCAw
Li4weGZmZmYpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBu
b2RlCkBAIC04NTQsNyArODU0LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGVu
ZAogICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCiAgICAgICAgICAgICBlbWl0TUlQU0NvbXBh
Y3QoImFuZCIsICJhbmQiLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAg
ICAgICAgd2hlbiAib3JpIiwgIm9ycCIsICJvcmgiCiAgICAgICAgICAgICBlbWl0TUlQU0NvbXBh
Y3QoIm9yIiwgIm9yciIsIG9wZXJhbmRzKQogICAgICAgICB3aGVuICJvcmlzIgogICAgICAgICAg
ICAgZW1pdE1JUFNDb21wYWN0KCJvciIsICJvcnJzIiwgb3BlcmFuZHMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgppbmRleCA4YjhkZThkMTI4YS4uZDk0ZWVhY2UxYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgpAQCAtNDg5LDYgKzQ4
OSwxMSBAQCBkZWYgcmlzY0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKGxpc3QpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlzY0FzUmVnaXN0ZXJzKG5ld0xpc3Qs
IHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJicyIpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAgICB3aGVu
ICJvcmgiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5j
b2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJp
c2NBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAi
aCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRp
b24pCiAgICAgICAgICAgICB3aGVuICJhZGRkIiwgImRpdmQiLCAic3ViZCIsICJtdWxkIiwgInNx
cnRkIiwgL15iZC8KICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhu
b2RlLmNvZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS5vcGNvZGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS94ODYucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKaW5k
ZXggMTY2ZjRiZGExMjcuLmRmYjRmOWM4ZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS94ODYucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20veDg2LnJiCkBAIC04ODUsNiArODg1LDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAg
ICAgICAgIGhhbmRsZVg4Nk9wKCJvciN7eDg2U3VmZml4KDpwdHIpfSIsIDpwdHIpCiAgICAgICAg
IHdoZW4gIm9ycSIKICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvciN7eDg2U3VmZml4KDpxdWFk
KX0iLCA6cXVhZCkKKyAgICAgICAgd2hlbiAib3JoIgorICAgICAgICAgICAgaGFuZGxlWDg2T3Ao
Im9yI3t4ODZTdWZmaXgoOmhhbGYpfSIsIDpoYWxmKQogICAgICAgICB3aGVuICJyc2hpZnRpIgog
ICAgICAgICAgICAgaGFuZGxlWDg2U2hpZnQoInNhciN7eDg2U3VmZml4KDppbnQpfSIsIDppbnQp
CiAgICAgICAgIHdoZW4gInJzaGlmdHAiCkBAIC05NzEsNiArOTczLDggQEAgY2xhc3MgSW5zdHJ1
Y3Rpb24KICAgICAgICAgICAgIGVuZAogICAgICAgICB3aGVuICJzdG9yZWIiCiAgICAgICAgICAg
ICAkYXNtLnB1dHMgIm1vdiN7eDg2U3VmZml4KDpieXRlKX0gI3t4ODZPcGVyYW5kcyg6Ynl0ZSwg
OmJ5dGUpfSIKKyAgICAgICAgd2hlbiAic3RvcmVoIgorICAgICAgICAgICAgJGFzbS5wdXRzICJt
b3Yje3g4NlN1ZmZpeCg6aGFsZil9ICN7eDg2T3BlcmFuZHMoOmhhbGYsIDpoYWxmKX0iCiAgICAg
ICAgIHdoZW4gImxvYWRkIgogICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje3g4Nk9wZXJh
bmRzKDpkb3VibGUsIDpkb3VibGUpfSIKICAgICAgICAgd2hlbiAibW92ZWQiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCmluZGV4IDliM2QwZDc0YzhkLi41NjIyZjI4
OWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKQEAgLTQ4
LDYgKzQ4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3RleHByIGlu
dCBudW1CaXRzTmVlZGVkID0gNzsKICAgICAgICAgc3RhdGljX2Fzc2VydCgoVHlwZUJpdHMgJiAo
KDEgPDwgbnVtQml0c05lZWRlZCkgLSAxKSkgPT0gVHlwZUJpdHMsICJUaGlzIGlzIG5lY2Vzc2Fy
eSBmb3IgY29ycmVjdG5lc3MuIik7CiAKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFJlc3Vs
dFR5cGUoKQorICAgICAgICAgICAgOiBSZXN1bHRUeXBlKHVua25vd25UeXBlKCkpCisgICAgICAg
IHsKKyAgICAgICAgfQogICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlwZShUeXBl
IHR5cGUpCiAgICAgICAgICAgICA6IG1fYml0cyh0eXBlKQogICAgICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA5MjRm
N2U1YjM1Mi4uMzQwYjkwMDg2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDg3LDggKzQ4Nyw4IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF90b19zdHJpbmcpCiAjaWYgRU5BQkxFKEpJVCkKIHN0YXRpYyB2b2lkIHVw
ZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmIG1ldGFk
YXRhLCBKU1ZhbHVlIHJlc3VsdCwgSlNWYWx1ZSBvcGVyYW5kKQogewotICAgIEFyaXRoUHJvZmls
ZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOwotICAgIHByb2ZpbGUub2JzZXJ2
ZUxIUyhvcGVyYW5kKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRh
Lm1fYXJpdGhQcm9maWxlOworICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBB
U1NFUlQocmVzdWx0LmlzTnVtYmVyKCkgfHwgcmVzdWx0LmlzQmlnSW50KCkpOwogICAgIGlmIChy
ZXN1bHQuaXNOdW1iZXIoKSkgewogICAgICAgICBpZiAoIXJlc3VsdC5pc0ludDMyKCkpIHsKQEAg
LTU0Niw3ICs1NDYsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQogc3RhdGlj
IHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSByZXN1bHQsIEpTVmFsdWUgbGVmdCwgSlNW
YWx1ZSByaWdodCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOwotICAgIEFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9ICpjb2RlQmxvY2stPmFyaXRoUHJvZmls
ZUZvclBDKHBjKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUmIHByb2ZpbGUgPSAqY29kZUJsb2Nr
LT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhwYyk7CiAKICAgICBpZiAocmVzdWx0LmlzTnVtYmVy
KCkpIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7CkBAIC02MDcsNyArNjA3LDcg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FkZCkKICAgICBKU1ZhbHVlIHYxID0gR0VUX0Mo
Ynl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHYyID0gR0VUX0MoYnl0ZWNv
ZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlID0g
KmV4ZWMtPmNvZGVCbG9jaygpLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJp
dGhQcm9maWxlJiBhcml0aFByb2ZpbGUgPSAqZXhlYy0+Y29kZUJsb2NrKCktPmJpbmFyeUFyaXRo
UHJvZmlsZUZvclBDKHBjKTsKICAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZUxIU0FuZFJIUyh2MSwg
djIpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FkZChleGVjLCB2MSwgdjIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381626</attachid>
            <date>2019-10-22 16:34:16 -0700</date>
            <delta_ts>2019-10-23 18:54:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>123364</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDcyN2E1ODkxMzM1Li5mNDFkN2UyOTcxNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY4IEBACisyMDE5LTEwLTE0ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGltZSBvbmx5IHVzZWQgZm9y
IGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQgYmVpbmcgdXNlZCBmb3Ig
bmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1c2VkIGZvciBpbmMgYW5k
IGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBhdGNoIEkgbWFrZSBhIHNl
cGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3IgYSBzaW5nbGUgYXJndW1l
bnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisKKyAgICAgICAgQWZ0ZXIg
ZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXplZCB0aGF0IHRoZSBSZXN1
bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQcm9maWxlIGFyZSBub3Qg
bmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFscmVhZHkgaW4gdGhlIGJ5
dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3ZpbmcgdGhlbSBhbGxvd2Vk
IHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBmaXQgaW4gMTYgYml0cyAo
OSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRoZSB0d28ga2luZHMgc2Vw
YXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRlcGVuZGVudGx5IGluIHRo
ZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlcXVpcmVkIGFkZGluZyB0aGUgIm9yaCIg
aW5zdHJ1Y3Rpb24gdG8gdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCB0byBzZXQgYml0cyBpbiB0aGUg
QXJpdGhQcm9maWxlLgorICAgICAgICBUaGlzIGluIHR1cm4gbW90aXZhdGVkIHRoZSBhZGRpdGlv
biBvZiAic3RvcmVoIiwgYXMgb24gUklTQyBwbGF0Zm9ybXMgIm9yaCIgb24gYSBtZW1vcnkgbG9j
YXRpb24gaXMgYWN0dWFsbHkgbG9hZGggLT4gb3JoIC0+IHN0b3JlaC4KKworICAgICAgICAqIGJ5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51
bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6
c2hvdWxkRW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50IGNvbnN0KToKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbkludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlRG91YmxlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOb25OdW1lcmlj
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSW50MzJPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDUyT3Zl
cmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkTm9u
TmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRO
ZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5v
bk51bWVyaWMpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3cp
OgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSW50NTJPdmVyZmxvdyk6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6YWRkcmVzc09mQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6QXJp
dGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpoYXNCaXRzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRCaXQpOgorICAgICAgICAoSlNDOjpVbmFy
eUFyaXRoUHJvZmlsZTo6VW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmFyeUFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlOjphcmdPYnNlcnZlZFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJv
ZmlsZTo6c2V0QXJnT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2Zp
bGU6OmFyZ1Nhd0ludDMyKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nh
d051bWJlcik6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdOb25OdW1i
ZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZUFyZyk6CisgICAg
ICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpCaW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cyk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMpOgorICAg
ICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cyk6
CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6c2V0TGhzT2JzZXJ2ZWRUeXBlKToK
KyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpzZXRSaHNPYnNlcnZlZFR5cGUpOgor
ICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFMpOgorICAgICAgICAo
SlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFNBbmRSSFMpOgorICAgICAgICAoSlND
OjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2ZWRUeXBlRW1wdHkpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVEFkZElDKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklU
U3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElD
KToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bWFrZURpdlNhZmUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJ
Qyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlN
YXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJp
dGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRB
ZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJ
Q0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKiBqaXQvSklURGl2R2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJ
VERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZSk6CisgICAgICAgICog
aml0L0pJVE1hdGhJQy5oOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OkpJVE1hdGhJQyk6Cisg
ICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpK
SVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OmlzQmluYXJ5UHJv
ZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6SklUQmluYXJ5TWF0aElDOjpKSVRCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjppc1VuYXJ5UHJvZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6
SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAgICAgICAgKiBqaXQvSklUTXVsR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVROZWdHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJ
VFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBsbGludC9M
TEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBl
OjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAg
IChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTAtMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBtYWtlIDMyYml0IEpJVCBidWlsdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRl
eCA5OTk5MzNiOGMwZS4uN2Y0NmY3M2ZjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCkBAIC0zMiw3ICszMiw4IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVS
ZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01v
ZGUgbW9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBK
U1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCFzaG91
bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3Vs
ZEVtaXRTZXRCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNDEgKzU5LDUxIEBAIHZv
aWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNW
YWx1ZVJlZ3MgcmVncywgVGFnUmVnCiAgICAgZG9uZS5saW5rKCZqaXQpOwogfQogCi1ib29sIEFy
aXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRF
bWl0U2V0RG91YmxlKCkgY29uc3QKIHsKLSAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxl
OjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJpdGhQcm9m
aWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlOworICAg
IHVpbnQzMl90IG1hc2sgPSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlOwogICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0g
bWFzazsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJz
JiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBj
b25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0RG91YmxlKCkpCi0gICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50MzJPdmVyZmxvdyB8
IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJs
ZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YWRkcmVzc09mQml0cygpKSk7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0
Tm9uTnVtZXJpYygpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29s
IEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNv
bnN0CiB7CiAgICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsKICAg
ICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxl
OjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxk
VHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdAogewogICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6OkJpZ0ludDsK
ICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJpdGhQcm9m
aWxlOjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChz
aG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoTm9uTnVtZXJpYyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZp
ZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQo
KSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9m
aWxlOjpCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRz
KCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmlnSW50
KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CiB9CisK
Ky8vIEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBhYm92ZSBm
b3IgVW5hcnlBcml0aFByb2ZpbGUvQmluYXJ5QXJpdGhQcm9maWxlCisvLyBJZiBjaGFuZ2luZyB0
aGUgc2l6ZSBvZiBlaXRoZXIsIGFkZCB0aGUgY29ycmVzcG9uZGluZyBsaW5lcyBoZXJlLgordGVt
cGxhdGUgY2xhc3MgQXJpdGhQcm9maWxlPHVpbnQxNl90PjsKICNlbmRpZiAvLyBFTkFCTEUoSklU
KQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKQEAgLTEwMSw3ICsxMTIsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0
aFByb2ZpbGU8VD4mIHByb2ZpbGUpCiB7CiAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yID0gIiI7
CiAKQEAgLTEzNSwxOSArMTQ3LDMwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCiAgICAgICAgICAgICBzZXBhcmF0b3Ig
PSAifCI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0
UGF0aCgpKQotICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiVG9vayBzcGVjaWFsIGZhc3Qg
cGF0aC4iKTsKICAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAg
IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFBy
b2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisgICAgb3V0LnByaW50KCIgQXJnIE9ic2VydmVkVHlw
ZTo8Iik7CisgICAgb3V0LnByaW50KHByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkpOworICAgIG91
dC5wcmludCgiPiIpOworfQorCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAgIHByaW50SW50ZXJuYWwo
b3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPj4ocHJv
ZmlsZSkpOworCisgICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0UGF0aCgpKQorICAgICAg
ICBvdXQucHJpbnQoIiBUb29rIHNwZWNpYWwgZmFzdCBwYXRoLiIpOwogCiAgICAgb3V0LnByaW50
KCIgTEhTIE9ic2VydmVkVHlwZTo8Iik7CiAgICAgb3V0LnByaW50KHByb2ZpbGUubGhzT2JzZXJ2
ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgiPiBSSFMgT2JzZXJ2ZWRUeXBlOjwiKTsKICAgICBv
dXQucHJpbnQocHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKSk7CiAgICAgb3V0LnByaW50KCI+Iik7
Ci0KLSAgICBvdXQucHJpbnQoIiBMSFMgUmVzdWx0VHlwZTo8IiwgUmF3UG9pbnRlcihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocHJvZmlsZS5saHNSZXN1bHRUeXBl
KCkuYml0cygpKSkpKTsKLSAgICBvdXQucHJpbnQoIj4gUkhTIFJlc3VsdFR5cGU6PCIsIFJhd1Bv
aW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2ZpbGUu
cmhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7Ci0gICAgb3V0LnByaW50KCI+Iik7CiB9CiAKIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBKU0M6Ok9ic2VydmVkVHlw
ZSYgb2JzZXJ2ZWRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5oCmluZGV4IGZjYzRlMjgxOGJlLi5jYWQ5OWY0OGJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNjYsMTE5ICs2NiwyMTcg
QEAgcHJpdmF0ZToKICAgICB1aW50OF90IG1fYml0cyB7IDAgfTsKIH07CiAKLXN0cnVjdCBBcml0
aFByb2ZpbGUgewotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bWJl
ck9mRmxhZ0JpdHMgPSA2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzUmVzdWx0
VHlwZVNoaWZ0ID0gbnVtYmVyT2ZGbGFnQml0czsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IGxoc1Jlc3VsdFR5cGVTaGlmdCA9IHJoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6
Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNPYnNlcnZl
ZFR5cGVTaGlmdCA9IGxoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6Om51bUJpdHNOZWVk
ZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNPYnNlcnZlZFR5cGVTaGlmdCA9
IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkOwotCi0g
ICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPT0gMywgIldlIG1h
a2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQgdGhhdCBoZXJlLiIpOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KH4oKDEgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKHJoc09ic2Vy
dmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1h
c2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ofigoMSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkg
fCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyAxKSkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRU
eXBlU2hpZnQgKyAyKSkpKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmVzdWx0
VHlwZU1hc2sgPSAoMSA8PCBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQml0ZmllbGRUeXBl
PgorY2xhc3MgQXJpdGhQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBlbnVtIE9ic2VydmVkUmVzdWx0
cyB7CisgICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8IDAsCisgICAgICAgIE5lZ1plcm9E
b3VibGUgICAgPSAxIDw8IDEsCisgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCisg
ICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCisgICAgICAgIEludDUyT3ZlcmZsb3cg
ICAgPSAxIDw8IDQsCisgICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgfTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVk
ZWQgPSA2OwogCi0gICAgZW51bSBjbGFzcyBDb25zdGFudFRhZyB7IENvbnN0YW50IH07CisgICAg
Ym9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1pl
cm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBi
b29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9E
b3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9CisgICAg
Ym9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVn
WmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyBy
ZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgp
IGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUlu
dDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Cisg
ICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMo
SW50NTJPdmVyZmxvdyk7IH0KIAotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3Qgc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNl
cnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVk
VHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSA8PSAoc2l6ZW9mKHVpbnQz
Ml90KSAqIDgpIC0gMSwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFz
ayksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhl
c2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZh
c3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hv
dWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBoaWdo
ZXIgYml0LiIpOworICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRC
aXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJs
ZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51
bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJ
bnQoKSB7IHNldEJpdChCaWdJbnQpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZs
b3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1
Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KIAotICAgIEFyaXRoUHJvZmls
ZShSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNv
bnN0YW50LCBhcmcpCisgICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUpCiAgICAg
ewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSBhcmcuYml0cygpKTsK
LSAgICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFT
U0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOworICAgICAgICBpZiAodmFsdWUuaXNJ
bnQzMigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIo
KSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93
IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGU7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKKyAg
ICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgbV9iaXRzIHw9IE5vbk51bWVyaWM7CiAgICAgfQogCi0gICAgQXJpdGhQcm9m
aWxlKFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBBcml0aFByb2Zp
bGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBsaHMsIHJocykKKyAgICBjb25zdCB2b2lkKiBhZGRy
ZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4gJm1fYml0czsgfQorCisjaWYgRU5BQkxFKEpJVCkK
KyAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKKyAgICAvLyBkb3VibGUuIFNldHMg
Tm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCisgICAgdm9pZCBlbWl0T2JzZXJ2
ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhh
dmVUYWdSZWdpc3RlcnMpOworCisgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3Zl
cmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCisgICAgYm9vbCBzaG91
bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0RG91YmxlKENDYWxsSGVs
cGVycyYpIGNvbnN0OworCisgICAgLy8gU2V0cyBOb25OdW1iZXIuCisgICAgdm9pZCBlbWl0U2V0
Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRO
b25OdW1lcmljKCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIEJpZ0ludAorICAgIHZvaWQgZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdDsKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisgICAgY29uc3RleHByIHVpbnQz
Ml90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworcHJvdGVjdGVkOgorICAgIEFy
aXRoUHJvZmlsZSgpCiAgICAgewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMo
KSA9PSBsaHMuYml0cygpICYmIHJoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gcmhzLmJpdHMoKSk7
Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBB
U1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKICAgICB9CiAKLSAgICBBcml0aFBy
b2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQotICAgICAgICA6IEFyaXRoUHJvZmlsZSh0eXBlcy5m
aXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKLSAgICB7IH0KKyAgICBib29sIGhhc0JpdHMoaW50IG1h
c2spIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIG1hc2s7IH0KKyAgICB2b2lkIHNldEJpdChpbnQg
bWFzaykgeyBtX2JpdHMgfD0gbWFzazsgfQorCisgICAgQml0ZmllbGRUeXBlIG1fYml0cyB7IDAg
fTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVy
YXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRh
dGlvbiB0byBpdC4KK307CisKKy8qIFRoaXMgY2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dpbmcgY29t
cG9uZW50cyBpbiAxNiBiaXRzOgorICogLSBPYnNlcnZlZFJlc3VsdHMKKyAqIC0gT2JzZXJ2ZWRU
eXBlIGZvciB0aGUgYXJndW1lbnQKKyAqLwordXNpbmcgVW5hcnlBcml0aFByb2ZpbGVCYXNlID0g
dWludDE2X3Q7CitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8
VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBh
cmdPYnNlcnZlZFR5cGVTaGlmdCA9IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVkZWQ7CiAKLSAg
ICBBcml0aFByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljX2Fzc2VydChhcmdPYnNlcnZl
ZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8PSBzaXplb2YoVW5hcnlB
cml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdGhlIHR5cGUgb2YgdGhlIHVu
ZGVybHlpbmcgYml0ZmllbGQuIik7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmls
ZSBmcm9tSW50KHVpbnQzMl90IGJpdHMpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8VW5h
cnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSk7CisK
KyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZFR5cGVN
YXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7CisKK3B1YmxpYzoK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPFVuYXJ5QXJp
dGhQcm9maWxlQmFzZT4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEFyaXRoUHJvZmlsZSB7IENv
bnN0YW50VGFnOjpDb25zdGFudCwgYml0cyB9OworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRU
eXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1w
dHkoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2
ZWRVbmFyeUludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ug
b2JzZXJ2ZWRJbnRCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUg
b2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNv
bnN0ZXhwciB1aW50MzJfdCBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2
ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDgwMDAwMCwgIiIp
OwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5
QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29u
c3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZFVuYXJ5TnVtYmVyKCkKKyAgICBzdGF0aWMgY29u
c3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJlckJpdHMoKQogICAgIHsK
ICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVk
VHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4MTAwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJv
bUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gb2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAg
ICByZXR1cm4gYml0czsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGFyZ09i
c2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGFyZ09i
c2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CisgICAgdm9pZCBzZXRBcmdP
YnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKKyAgICAgICAgYml0cyAmPSBjbGVhckFyZ09ic2Vy
dmVkVHlwZUJpdE1hc2s7CisgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIG1fYml0cyA9IGJpdHM7CisgICAgICAgIEFTU0VSVChhcmdP
YnNlcnZlZFR5cGUoKSA9PSB0eXBlKTsKKyAgICB9CisKKyAgICB2b2lkIGFyZ1Nhd0ludDMyKCkg
eyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9Cisg
ICAgdm9pZCBhcmdTYXdOdW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5
cGUoKS53aXRoTnVtYmVyKCkpOyB9CisgICAgdm9pZCBhcmdTYXdOb25OdW1iZXIoKSB7IHNldEFy
Z09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CisKKyAg
ICB2b2lkIG9ic2VydmVBcmcoSlNWYWx1ZSBhcmcpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIGlmIChhcmcuaXNOdW1iZXIoKSkg
eworICAgICAgICAgICAgaWYgKGFyZy5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgbmV3UHJv
ZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5l
d1Byb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbmV3
UHJvZmlsZS5hcmdTYXdOb25OdW1iZXIoKTsKKworICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKKyAgICB9CisKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKKyAgICB9CisKKyAg
ICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9OworCisvKiBUaGlz
IGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMgaW4gMTYgYml0czoKKyAqIC0g
T2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgcmlnaHQtaGFuZC1zaWRlCisg
KiAtIE9ic2VydmVkVHlwZSBmb3IgbGVmdC1oYW5kLXNpZGUKKyAqIC0gYSBiaXQgdXNlZCBieSBk
aXZpc2lvbiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgc3BlY2lhbCBmYXN0IHBhdGggd2FzIHRha2Vu
CisgKi8KK3VzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50MTZfdDsKK2NsYXNzIEJp
bmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxl
QmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsKKworICAgIHN0YXRpY19hc3NlcnQoT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJXZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9uIGFib3V0
IHRoYXQgaGVyZS4iKTsKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQ
cm9maWxlQmFzZT4ofigwYjExMSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCkpOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGxo
c09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVtQml0
c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0
aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNo
aWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChs
aHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9
IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWlu
dDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVh
ckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2Vj
dC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2Jz
ZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4iKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCA+IH5jbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBh
dGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKKworICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+ICgpCisg
ICAgeworICAgICAgICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgQVNTRVJUKHJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQotICAgIHN0YXRp
YyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5SW50SW50KCkKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZEludEludEJpdHMo
KQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsg
T2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90
IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwg
KG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4OTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9t
SW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNl
cnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7CisgICAgICAgIHJldHVy
biBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZl
ZEJpbmFyeU51bWJlckludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2Zp
bGVCYXNlIG9ic2VydmVkTnVtYmVySW50Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIg
T2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigp
IH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2Vy
dmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRz
ID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2Jz
ZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0
aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50
KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0g
KG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4g
Yml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRC
aW5hcnlJbnROdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZEludE51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9i
c2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9
OwogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZl
ZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChiaXRzID09IDB4YTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJp
dHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9i
c2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51
bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0
czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5h
cnlOdW1iZXJOdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHBy
IE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIo
KSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5i
aXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8
PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAw
eDEyMDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNv
bnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0
cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwg
cmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9CiAKLSAg
ICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7Ci0gICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8
IDAsCi0gICAgICAgIE5lZ1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCi0gICAgICAgIE5vbk51bWVy
aWMgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCi0g
ICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAg
ICAgPSAxIDw8IDUsCi0gICAgfTsKLQotICAgIFJlc3VsdFR5cGUgbGhzUmVzdWx0VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUoKG1fYml0cyA+PiBsaHNSZXN1bHRUeXBlU2hpZnQpICYg
cmVzdWx0VHlwZU1hc2spOyB9Ci0gICAgUmVzdWx0VHlwZSByaHNSZXN1bHRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gUmVzdWx0VHlwZSgobV9iaXRzID4+IHJoc1Jlc3VsdFR5cGVTaGlmdCkgJiByZXN1
bHRUeXBlTWFzayk7IH0KLQogICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgbGhzT2JzZXJ2ZWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gT2JzZXJ2ZWRUeXBlKChtX2JpdHMgPj4gbGhzT2JzZXJ2ZWRU
eXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBlTWFzayk7IH0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRU
eXBlIHJoc09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRz
ID4+IHJoc09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgdm9p
ZCBzZXRMaHNPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCiAgICAgewotICAgICAgICB1
aW50MzJfdCBiaXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJp
dHMgPSBtX2JpdHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNr
OwogICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0Owog
ICAgICAgICBtX2JpdHMgPSBiaXRzOwpAQCAtMTg3LDcgKzI4NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0UmhzT2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsgCi0gICAg
ICAgIHVpbnQzMl90IGJpdHMgPSBtX2JpdHM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgYml0cyA9IG1fYml0czsKICAgICAgICAgYml0cyAmPSBjbGVhclJoc09ic2VydmVkVHlwZUJp
dE1hc2s7CiAgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQ7CiAgICAgICAgIG1fYml0cyA9IGJpdHM7CkBAIC0xOTYsMzkgKzI5NCw2IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgdG9va1NwZWNpYWxGYXN0UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IHNwZWNpYWxGYXN0UGF0aEJpdDsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBj
b25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KLSAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQot
ICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNC
aXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRp
ZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsg
fQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmln
SW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIHZv
aWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJs
ZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1pl
cm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChO
b25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJ
bnQpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQz
Mk92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRC
aXQoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBj
b25zdCB7IHJldHVybiAmbV9iaXRzOyB9Ci0KLSAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1
ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBt
X2JpdHMgfD0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9
IEJpZ0ludDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2JpdHMg
fD0gTm9uTnVtZXJpYzsKLSAgICB9Ci0KICAgICB2b2lkIGxoc1Nhd0ludDMyKCkgeyBzZXRMaHNP
YnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9CiAgICAgdm9pZCBs
aHNTYXdOdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRo
TnVtYmVyKCkpOyB9CiAgICAgdm9pZCBsaHNTYXdOb25OdW1iZXIoKSB7IHNldExoc09ic2VydmVk
VHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CkBAIC0yMzgsNyArMzAz
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBvYnNlcnZlTEhTKEpTVmFsdWUgbGhzKQogICAgIHsK
LSAgICAgICAgQXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKKyAgICAgICAgQmluYXJ5
QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKICAgICAgICAgaWYgKGxocy5pc051bWJl
cigpKSB7CiAgICAgICAgICAgICBpZiAobGhzLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBu
ZXdQcm9maWxlLmxoc1Nhd0ludDMyKCk7CkBAIC0yNTQsNyArMzE5LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgb2JzZXJ2ZUxIUyhsaHMpOwogCi0gICAgICAgIEFyaXRoUHJvZmlsZSBuZXdQ
cm9maWxlID0gKnRoaXM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0g
KnRoaXM7CiAgICAgICAgIGlmIChyaHMuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgaWYgKHJo
cy5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5yaHNTYXdJbnQzMigpOwpA
QCAtMjY2LDQ3ICszMzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoSklUKSAgICAKLSAgICAvLyBTZXRzIChJbnQz
Mk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91
YmxlKSBpZiBpdCBzZWVzIGEKLSAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBz
ZWVzIGEgbm9uLW51bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBl
cnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwot
ICAgIAotICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVn
WmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgotICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJs
ZSgpIGNvbnN0OwotICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsK
LSAgICAKLSAgICAvLyBTZXRzIE5vbk51bWJlci4KLSAgICB2b2lkIGVtaXRTZXROb25OdW1lcmlj
KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMo
KSBjb25zdDsKLQotICAgIC8vIFNldHMgQmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KEND
YWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0
OwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLSAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cygp
IGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0ZXhwciBleHBs
aWNpdCBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWcsIHVpbnQzMl90IGJpdHMpCi0gICAgICAgIDog
bV9iaXRzKGJpdHMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUo
Q29uc3RhbnRUYWcsIFJlc3VsdFR5cGUgYXJnKQotICAgICAgICA6IG1fYml0cyhhcmcuYml0cygp
IDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQog
ICAgIHsKKyAgICAgICAgcmV0dXJuIGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSAmJiByaHNP
YnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgY29uc3RleHByIEFyaXRoUHJv
ZmlsZShDb25zdGFudFRhZywgUmVzdWx0VHlwZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQotICAgICAg
ICA6IG1fYml0cygobGhzLmJpdHMoKSA8PCBsaHNSZXN1bHRUeXBlU2hpZnQpIHwgKHJocy5iaXRz
KCkgPDwgcmhzUmVzdWx0VHlwZVNoaWZ0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNC
aXRzKGludCBtYXNrKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBtYXNrOyB9Ci0gICAgdm9pZCBz
ZXRCaXQoaW50IG1hc2spIHsgbV9iaXRzIHw9IG1hc2s7IH0KLQotICAgIHVpbnQzMl90IG1fYml0
cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmds
ZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXBy
ZXNlbnRhdGlvbiB0byBpdC4KLQogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIH07CiAKQEAgLTMxNCw3ICszNDMsOCBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpBcml0
aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6
VW5hcnlBcml0aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNv
bnN0IEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlJik7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBjb25zdCBKU0M6Ok9ic2VydmVkVHlwZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4
IGMwODZiOGViM2YzLi5hYzRjODBlZTk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVzIFsKICAgICA6
SlNUeXBlLAogICAgIDpKU1ZhbHVlLAogICAgIDpMTEludENhbGxMaW5rSW5mbywKKyAgICA6UmVz
dWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxh
ZywKICAgICA6UHJvcGVydHlPZmZzZXQsCkBAIC01Nyw3ICs1OCw4IEBAIHR5cGVzIFsKIAogICAg
IDpWYWx1ZVByb2ZpbGUsCiAgICAgOlZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIsCi0gICAg
OkFyaXRoUHJvZmlsZSwKKyAgICA6VW5hcnlBcml0aFByb2ZpbGUsCisgICAgOkJpbmFyeUFyaXRo
UHJvZmlsZSwKICAgICA6QXJyYXlQcm9maWxlLAogICAgIDpBcnJheUFsbG9jYXRpb25Qcm9maWxl
LAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKQEAgLTI4MiwxMCArMjg0LDcgQEAgb3Bf
Z3JvdXAgOlByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIG9wZXJhbmRUeXBlczogT3BlcmFuZFR5
cGVzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0
aFByb2ZpbGUKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBh
cml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBCaW5hcnlB
cml0aFByb2ZpbGUKICAgICB9CiAKIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCkBA
IC0zNjcsMTMgKzM2NiwxMCBAQCBvcCA6bmVnYXRlLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5kVHlwZXMsCisgICAgICAgIHJlc3VsdFR5cGU6IFJl
c3VsdFR5cGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6
IEFyaXRoUHJvZmlsZSwKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAg
ICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBV
bmFyeUFyaXRoUHJvZmlsZSwKICAgICB9CiAKIG9wIDpub3QsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDRlOTQ3YTM3YjQ4Li5hYTA5MWEwNzAw
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTE0NzgsMjUgKzE0NzgsMjUgQEAgU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1
YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxv
Y2tlcikubV9zdHViSW5mb3MuYWRkKGFjY2Vzc1R5cGUpOwogfQogCi1KSVRBZGRJQyogQ29kZUJs
b2NrOjphZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVEFkZElDKiBD
b2RlQmxvY2s6OmFkZEpJVEFkZElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fYWRkSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRN
dWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
K0pJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAg
ICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbXVsSUNzLmFkZChhcml0aFByb2ZpbGUp
OwogfQogCi1KSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKK0pJVFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3ViSUNzLmFkZChh
cml0aFByb2ZpbGUpOwogfQogCi1KSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lD
KFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9u
ZWdJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CkBAIC0zMDgzLDE2ICszMDgzLDE5IEBAIGNvbnN0IElu
c3RydWN0aW9uKiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjKQogICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKS5hdChvZmZzZXQgKyB0YXJnZXQpLnB0
cigpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKK0JpbmFy
eUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQogewotICAgIHJl
dHVybiBhcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZU9mZnNldCku
cHRyKCkpOworICAgIHJldHVybiBiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMo
KS5hdChieXRlY29kZU9mZnNldCkucHRyKCkpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9j
azo6YXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorVW5hcnlBcml0aFBy
b2ZpbGUqIENvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChJbnN0
cnVjdGlvblN0cmVhbTo6T2Zmc2V0IGJ5dGVjb2RlT2Zmc2V0KQoreworICAgIHJldHVybiB1bmFy
eUFyaXRoUHJvZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KS5wdHIo
KSk7Cit9CisKK0JpbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2Zp
bGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2Rl
SUQoKSkgewotICAgIGNhc2Ugb3BfbmVnYXRlOgotICAgICAgICByZXR1cm4gJnBjLT5hczxPcE5l
Z2F0ZT4oKS5tZXRhZGF0YSh0aGlzKS5tX2FyaXRoUHJvZmlsZTsKICAgICBjYXNlIG9wX2FkZDoK
ICAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BBZGQ+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFBy
b2ZpbGU7CiAgICAgY2FzZSBvcF9tdWw6CkBAIC0zMTA4LDExICszMTExLDIzIEBAIEFyaXRoUHJv
ZmlsZSogQ29kZUJsb2NrOjphcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6
OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIHN3
aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKKyAgICBjYXNlIG9wX25lZ2F0ZToKKyAgICAgICAgcmV0
dXJuICZwYy0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIGJvb2wgQ29kZUJsb2NrOjpjb3VsZFRha2VTcGVjaWFsRmFzdENhc2UoSW5zdHJ1Y3Rp
b25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCkKIHsKICAgICBpZiAoIWhhc0Jhc2VsaW5l
SklUUHJvZmlsaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBcml0aFByb2ZpbGUq
IHByb2ZpbGUgPSBhcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7
CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlID0gYmluYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIGlmICghcHJvZmlsZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBwcm9maWxlLT50b29rU3BlY2lhbEZhc3RQYXRo
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZDIw
MGZkNTlmNDIuLmYxYmYzYmQzZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCkBAIC04Myw2ICs4Myw4IEBAIHN0cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8v
IG5hbWVzcGFjZSBERkcKICNlbmRpZgogCitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNz
IEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNs
YXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U7CkBAIC05
Niw3ICs5OCw2IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vz
c1R5cGUgOiBpbnQ4X3Q7CiAKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiBzdHJ1Y3QgT3BDYXRjaDsK
IAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRSZW9wdGltaXphdGlvbiwgQ291
bnRSZW9wdGltaXphdGlvbiB9OwpAQCAtMjc5LDIyICsyODAsMjIgQEAgcHVibGljOgogICAgIH0K
ICAgICBKSVREYXRhJiBlbnN1cmVKSVREYXRhU2xvdyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
KTsKIAotICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRN
dWxJQyogYWRkSklUTXVsSUMoQXJpdGhQcm9maWxlKik7Ci0gICAgSklUTmVnSUMqIGFkZEpJVE5l
Z0lDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQyhBcml0aFByb2Zp
bGUqKTsKKyAgICBKSVRBZGRJQyogYWRkSklUQWRkSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7Cisg
ICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSopOworICAgIEpJVE5l
Z0lDKiBhZGRKSVROZWdJQyhVbmFyeUFyaXRoUHJvZmlsZSopOworICAgIEpJVFN1YklDKiBhZGRK
SVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUqKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBH
ZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1l
PEdlbmVyYXRvciwgSklUQWRkR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVEFkZElD
KiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhw
cm9maWxlKTsgfQorICAgIEpJVEFkZElDKiBhZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBw
cm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRNdWxHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0g
ICAgSklUTXVsSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFk
ZEpJVE11bElDKHByb2ZpbGUpOyB9CisgICAgSklUTXVsSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0
aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CiAKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVE5lZ0dlbmVyYXRvcj46OnZhbHVl
Pjo6dHlwZT4KLSAgICBKSVROZWdJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkg
eyByZXR1cm4gYWRkSklUTmVnSUMocHJvZmlsZSk7IH0KKyAgICBKSVROZWdJQyogYWRkTWF0aElD
KFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVROZWdJQyhwcm9maWxl
KTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5lcmF0
b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUU3ViSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUq
IHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CisgICAgSklUU3ViSUMq
IGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1
YklDKHByb2ZpbGUpOyB9CiAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNj
ZXNzVHlwZSk7CiAKQEAgLTQ5Miw4ICs0OTMsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0
IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hM
TEludENhbGxMaW5rSW5mbyhjb25zdCBGdW5jdG9yJik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0
ZWNvZGVPZmZzZXQpOwotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlRm9yUEMoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZz
ZXQpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiB1bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2Rl
T2Zmc2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgYnl0ZWNvZGVPZmZzZXQpOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25z
dCBJbnN0cnVjdGlvbiopOwogCiAgICAgYm9vbCBjb3VsZFRha2VTcGVjaWFsRmFzdENhc2UoSW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBieXRlY29kZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDlhYjc3MTM3YWE2Li5kNDFjZmMxMmI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCkBAIC0yMzYsNiArMjM2LDE4IEBAIHN0cnVj
dCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3Rk
Ojppc19lbnVtPEU+Ojp2YWx1CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXpl
Pgorc3RydWN0IEZpdHM8UmVzdWx0VHlwZSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2Yo
UmVzdWx0VHlwZSkgIT0gc2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHVpbnQ4
X3QsIHNpemU+IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZXN1bHRUeXBlKSA9PSBzaXpl
b2YodWludDhfdCkpOworICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisg
ICAgc3RhdGljIGJvb2wgY2hlY2soUmVzdWx0VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjaGVj
ayh0eXBlLmJpdHMoKSk7IH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBl
IGNvbnZlcnQoUmVzdWx0VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjb252ZXJ0KHR5cGUuYml0
cygpKTsgfQorCisgICAgc3RhdGljIFJlc3VsdFR5cGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpU
YXJnZXRUeXBlIHR5cGUpIHsgcmV0dXJuIFJlc3VsdFR5cGUoQmFzZTo6Y29udmVydCh0eXBlKSk7
IH0KK307CisKIHRlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPE9wZXJhbmRU
eXBlcywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoT3BlcmFuZFR5cGVzKSAhPSBzaXpl
LCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kVHlw
ZXMpID09IHNpemVvZih1aW50MTZfdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmlu
ZGV4IDdlM2NjOTRmYTQ2Li5lMDI3NzY5YTBjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmNwcApAQCAtNjYsMTAgKzY2LDE2IEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsK
LSAgICAgICAgdS5hcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9O
b3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsK
KyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdz
LCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwogICAgICAgICByZXR1cm47Ci0gICAgfSB9CisgICAg
fQorCisgICAgY2FzZSBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LmJpbmFy
eUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdS
ZWdpc3RlcnMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KICAgICAKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtOTQsMTAgKzEwMCwxNiBAQCB2b2lkIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKEpTVmFsdWUgdmFsdWUpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYXNlIEFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0g
ICAgICAgIHUuYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICBjYXNlIFVu
YXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+b2Jz
ZXJ2ZVJlc3VsdCh2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAg
ICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQ
cm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmgKaW5kZXggYjVlODRiMTMzN2UuLjA0NDE1MDEzOTExIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlLmgKQEAgLTM1LDEwICszNSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Y2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFz
cyBDQ2FsbEhlbHBlcnM7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZUtleTsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwog
CiBjbGFzcyBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHsKQEAgLTU2LDEyICs1NywyMSBA
QCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAg
ICB9Ci0gICAgCi0gICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShBcml0aFByb2ZpbGUq
IHByb2ZpbGUpCisKKyAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKFVuYXJ5QXJpdGhQ
cm9maWxlKiBwcm9maWxlKQorICAgIHsKKyAgICAgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAgICAg
ICAgIG1fa2luZCA9IFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk7CisgICAgICAgICAgICB1LnVuYXJ5
QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2tp
bmQgPSBOb25lOworICAgIH0KKworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoQmlu
YXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKQogICAgIHsKICAgICAgICAgaWYgKHByb2ZpbGUpIHsK
LSAgICAgICAgICAgIG1fa2luZCA9IEFyaXRoUHJvZmlsZVJlYWR5OwotICAgICAgICAgICAgdS5h
cml0aFByb2ZpbGUgPSBwcm9maWxlOworICAgICAgICAgICAgbV9raW5kID0gQmluYXJ5QXJpdGhQ
cm9maWxlUmVhZHk7CisgICAgICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZSA9IHByb2ZpbGU7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9CkBAIC03
OCwxNCArODgsMTYgQEAgcHJpdmF0ZToKICAgICBlbnVtIEtpbmQgewogICAgICAgICBOb25lLAog
ICAgICAgICBSZWFkeSwKLSAgICAgICAgQXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIFVuYXJ5
QXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAogICAg
ICAgICBMYXp5T3BlcmFuZAogICAgIH07CiAgICAgCiAgICAgS2luZCBtX2tpbmQ7CiAgICAgdW5p
b24gewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7Ci0gICAgICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFBy
b2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlOwog
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZTc5
MTRhYTQ3YzUuLmI3YTRhYTNkMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTY2NSwxNCArMTY2
NSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgT3BlcmFuZFR5cGVzIHR5cGVzKQorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSB0eXBlKQogewogICAg
IHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX25vdDoKICAgICAgICAgZW1pdFVuYXJ5
T3A8T3BOb3Q+KGRzdCwgc3JjKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9uZWdhdGU6
Ci0gICAgICAgIE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlcyk7CisgICAgICAg
IE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBvcF9iaXRub3Q6CiAgICAgICAgIGVtaXRVbmFyeU9wPE9wQml0bm90Pihkc3QsIHNy
Yyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggNDE5N2FiYzEyZTUuLjM4ZTc3Y2RiMTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC02ODIsNyArNjgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gZHN0OwogICAgICAgICB9CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFVuYXJ5T3AoT3Bj
b2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5hcnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMsIFJlc3VsdFR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEJpbmFyeU9wPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDJlMDNi
ZTBiN2M3Li4wNThmZTU5ZDcwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjEzOSw3ICsyMTM5LDcgQEAgUmVnaXN0
ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKgogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBv
c2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
c3JjLmdldCgpLCBPcGVyYW5kVHlwZXMobV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbmFyeU9wKG9wY29kZUlEKCksIGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQoKSwgbV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVW5hcnlQbHVzTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA2NjEwMTNhODc3Ny4uMWZlNGRi
ZTgwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC05NDIsNTYgKzk0Miw2MCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWlzWDg2
KCkgJiYgKG5vZGUtPm9wKCkgPT0gQXJpdGhNb2QgfHwgbm9kZS0+b3AoKSA9PSBWYWx1ZU1vZCkp
CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKIAotICAgICAgICB7Ci0gICAgICAgICAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpOwotICAgICAg
ICAgICAgaWYgKGFyaXRoUHJvZmlsZSkgewotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+
b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhBZGQ6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBBcml0aFN1YjoKLSAgICAgICAgICAgICAgICBjYXNlIFZhbHVlQWRkOgotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51
bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVNdWw6
Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aE11bDogewotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VG
bGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0
aXZlWmVybykpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVN
YXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2Zp
bGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1l
cmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmln
SW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBBcml0aE5lZ2F0ZTogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5s
aHNPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVE
b3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxl
LT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGlu
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQz
Mk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVy
aWNSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5v
ZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KKyAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2UgQXJpdGhB
ZGQ6CisgICAgICAgIGNhc2UgQXJpdGhTdWI6CisgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKKyAg
ICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAgICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
RG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVO
b25OdW1lcmljKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2
ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2Jz
ZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhh
dmVCaWdJbnRSZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBWYWx1ZU11bDoKKyAgICAgICAgY2FzZSBBcml0aE11bDogeworICAgICAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudElu
ZGV4KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZs
b3coKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0lu
dDUyKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJm
bG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
Tm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAg
ICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7
CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7Cisg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0
KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAg
ICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6
CisgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKKyAgICAgICAgICAgIFVuYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVu
YXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpOworICAgICAg
ICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBh
cml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5t
ZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0
aFByb2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkK
KyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGlu
ZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxv
dygpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIE92ZXJmbG93KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5v
ZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0
aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJn
ZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkpIHsKQEAgLTEwMzQsNyArMTAz
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEZJWE1FOiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0
byBtYWtlIHRoaXMgbW9yZSBncmFudWxhci4KICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2Rl
TWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUgfCBOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwog
ICAgICAgICAKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1f
Y3VycmVudEluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmls
ZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQogICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2Rl
TWF5SGF2ZUJpZ0ludFJlc3VsdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKaW5kZXggOWQ1YjdkOTMzN2MuLjRjNmQxMDk5YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcApAQCAtMTY1Miw3ICsxNjUyLDkgQEAgTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZSBHcmFwaDo6bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihOb2RlKiBj
dXJyZW4KICAgICAgICAgICAgICAgICByZXR1cm4gJnByb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkp
OwogCiAgICAgICAgICAgICBpZiAocHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxp
bmcoKSkgewotICAgICAgICAgICAgICAgIGlmIChBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2Zp
bGVkQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAgICAgICAgICAgIGlmIChCaW5hcnlBcml0aFBy
b2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIGlmIChVbmFyeUFy
aXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmlsZWRCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCAzZGFlYzQzOTRlNy4uMzQ5YjYyNzI3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zOTk5LDcgKzM5OTksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJs
b2NrKCktPmFkZEpJVEFkZElDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGlu
Z0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7CkBAIC00MDIzLDcgKzQwMjMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKIAogICAgICAgICBD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVC
bG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBKSVRTdWJJQyog
c3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAg
ICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXpl
OwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3Vi
OwpAQCAtNDYxNyw3ICs0NjE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
TmVnYXRlKE5vZGUqIG5vZGUpCiB7CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9
IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5
dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5l
Q29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2st
PnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAg
SklUTmVnSUMqIG5lZ0lDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJv
ZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0
ZU9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJp
dGhOZWdhdGU7CkBAIC00ODQwLDcgKzQ4NDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVNdWwoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5ieXRlY29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNl
bGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRl
eCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVC
bG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7
CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFy
aXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZU11bE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVNdWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggN2VmNDE3OTlmNGYuLmE4NTQ1OGZmNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0yMTExLDcgKzIxMTEsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRl
LmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5
dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNl
bGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRl
eCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVD
b2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5k
ZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRk
T3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVBZGQ7CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPihh
cml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsK
QEAgLTIxMzIsNyArMjEzMiw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNl
bGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0g
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1
bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgY29tcGlsZUJpbmFy
eU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9u
LCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE1Myw3ICsyMTUzLDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFw
aC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29k
ZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVD
b2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwor
ICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsK
ICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGlt
aXplOwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVl
TXVsOwogICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQ
cm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0y
MTYxLDcgKzIxNjEsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVy
YXRvciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVuYW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9w
b2ludGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUg
c3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21w
aWxlVW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hp
bmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGls
ZVVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0
Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAg
ICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKIApAQCAtMjI0Nyw3ICsyMjQ3LDcgQEAgcHJpdmF0ZToK
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBl
bmFtZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
ZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1
ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+
Ojp0eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBh
dGNoaW5nRnVuY3Rpb24pCisgICAgdm9pZCBjb21waWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7
CiAgICAgICAgIApAQCAtMjQxNiw3ICsyNDE2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVD
b2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgo
KTsKLSAgICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVC
bG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3Vi
T3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlU3ViOwogICAgICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5l
cmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVu
Y3Rpb24pOwpAQCAtMzA5NCw3ICszMDk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxp
bmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgp
OworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVP
cHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25B
cml0aE5lZ2F0ZTsKICAgICAgICAgY29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRvcj4o
YXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAxOTc3OWEzYzIzYy4uODFkNDEyYTA1M2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtOTE5LDcgKzkxOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAvLyBJdCB3aWxsIGdpdmUgdGhlIHNsb3cgcGF0aCB0aGUgc2FtZSB2YWx1ZSBy
ZWFkIGJ5IHRoZSBmYXN0IHBhdGguCiAgICAgICAgIEdldFB1dEluZm8gY29waWVkR2V0UHV0SW5m
byhPcFB1dFRvU2NvcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLSAg
ICAgICAgQXJpdGhQcm9maWxlIGNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCk7CisgICAgICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOwogCiAgICAg
ICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwogCkBAIC05MzksNyArOTM5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7CiAK
ICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgdW5zaWduZWQ+IG1fY29waWVkR2V0UHV0SW5mb3M7
Ci0gICAgICAgIEhhc2hNYXA8dWludDY0X3QsIEFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0aFBy
b2ZpbGVzOworICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBCaW5hcnlBcml0aFByb2ZpbGU+IG1f
Y29waWVkQXJpdGhQcm9maWxlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNoZWNr
czsKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJh
Y2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKaW5k
ZXggNjI3YWYyNzg3ZTAuLjc0MGIyZWQ4YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlu
bGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
c3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklU
QWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNl
cnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03Myw3ICs3Myw3
IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJl
c3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBj
b25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5n
KQorYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0
Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xl
ZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQWRkR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVy
YXRvci5oCmluZGV4IDRkYzM0YTJmNWI2Li42NzVjZjkzYzkwNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3JpZ2h0
T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVz
dWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYs
IGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhl
bHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBz
aG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJ
bmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5
QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNo
b3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlk
Q29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVyYW5k
LmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3BlcmFu
ZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiByaWdo
dE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNWZjZjg4OWQzMTguLjc2MzQ0NWNjYWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1Miw3
ICs0NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29wX25l
Z2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIFVuYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0ZT4o
KS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMqIG5l
Z2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9p
bnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsKICAg
ICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
b3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwpAQCAt
NjMzLDE0ICs2MzMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBP
cGVyYW5kVHlwZXMgZ2V0T3BlcmFuZFR5cGVzKGNvbnN0IEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9m
aWxlKQotewotICAgIHJldHVybiBPcGVyYW5kVHlwZXMoYXJpdGhQcm9maWxlLmxoc1Jlc3VsdFR5
cGUoKSwgYXJpdGhQcm9maWxlLnJoc1Jlc3VsdFR5cGUoKSk7Ci19Ci0KIHZvaWQgSklUOjplbWl0
X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+KCku
bWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVEFkZElDKiBhZGRJ
QyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1
Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBhZGRJQyk7CiAgICAgZW1pdE1h
dGhJQ0Zhc3Q8T3BBZGQ+KGFkZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVl
QWRkUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlQWRkKTsKQEAgLTY4NSw3ICs2ODAsNyBAQCB2b2lk
IEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBj
b25zdCBJbnN0cnVjdGlvbiogYwogCiAgICAgYm9vbCBnZW5lcmF0ZWRJbmxpbmVDb2RlID0gbWF0
aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywgbWF0aElDR2VuZXJhdGlvblN0YXRlKTsKICAgICBp
ZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgICAgICBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFy
aXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHNyY1JlZ3MsIGFyaXRoUHJvZmlsZSk7
CiAgICAgICAgIGVsc2UKQEAgLTcwOCw3ICs3MDMsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3As
IHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUg
Tgogdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBt
YXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkRnVu
Y3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxlZEZ1
bmN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
PigpOwotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRBcml0
aFByb2ZpbGUoYnl0ZWNvZGUpKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zm
c2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBv
cDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKQEAgLTcyNyw4ICs3MjEsOCBAQCB2b2lkIEpJ
VDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29u
c3QgSW5zdHJ1Y3Rpb24qCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogI2VuZGlm
CiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBT
bmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRP
cGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAg
IFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNv
bmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVm
dE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC03
NTgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxH
ZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgICAgICAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihvcDEsIGxlZnRSZWdzKTsKICAgICAgICAgZWxzZSBpZiAocmlnaHRP
cGVyYW5kLmlzQ29uc3QoKSkKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3Ay
LCByaWdodFJlZ3MpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJ
Qy0+YXJpdGhQcm9maWxlKCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZSAm
JiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFJl
c3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIGFyaXRoUHJvZmlsZSk7
CiAgICAgICAgIGVsc2UKQEAgLTc5OCw3ICs3OTIsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Ns
b3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiog
YwogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBVbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAg
ICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICBp
ZiAobWF0aElDR2VuZXJhdGlvblN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCkKICAgICAgICAg
ICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uV2l0
aFJlc3VsdChyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dKTWljPihwcm9maWxlZFJl
cGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgc3JjUmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKQEAgLTgzMCw3
ICs4MjQsNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVy
YXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgbWF0aElDR2VuZXJhdGlvblN0
YXRlLnNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0T3Bl
cmFuZFR5cGVzKGNvcGllZEFyaXRoUHJvZmlsZShieXRlY29kZSkpOwogICAgIGludCByZXN1bHQg
PSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9saHMu
b2Zmc2V0KCk7CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwpAQCAtODQ1
LDggKzgzOCw4IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2Vu
ZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gbGVmdFJlZ3M7CiAjZW5kaWYKICAgICAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0
T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQo
dHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2Rl
Lm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFu
ZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5k
Q29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRP
cGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC04NjQsNyArODU3LDcgQEAgdm9pZCBKSVQ6OmVt
aXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IElu
c3RydWN0aW9uKgogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAot
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsK
KyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9m
aWxlKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsK
ICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0Y2gp
CiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbldpdGhSZXN1bHQoYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0dKSk1pYz4ocHJv
ZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIFRydXN0ZWRJbW1QdHIo
bWF0aElDKSk7CkBAIC04OTIsMTkgKzg4NSwxNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3co
SklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiB2
b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERpdj4o
KTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsK
ICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9
IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5v
ZmZzZXQoKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0g
Z2V0T3BlcmFuZFR5cGVzKG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlKTsKICAgICBKU1ZhbHVlUmVn
cyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyByaWdodFJl
Z3MgPSBKU1ZhbHVlUmVncyhyZWdUMSk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxl
ZnRSZWdzOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDI7CiAjZWxzZQotICAgIE9wZXJh
bmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZSk7
CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwog
ICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7CiAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxlZnRSZWdzOwpAQCAtOTEyLDEyICs5MDIsMTIg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAjZW5kaWYKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IGZwUmVnVDI7CiAKLSAgICBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHI7CisgICAgQmluYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyOwogICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5n
KCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGl2
PigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKIAotICAgIFNuaXBwZXRP
cGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVzLmZpcnN0KCkpOwotICAgIFNuaXBwZXRPcGVyYW5kIHJp
Z2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQoKSk7CisgICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJh
bmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuZmlyc3QoKSk7CisgICAgU25pcHBldE9wZXJhbmQg
cmlnaHRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLnNlY29uZCgpKTsKIAogICAgIGlm
IChpc09wZXJhbmRDb25zdGFudEludChvcDEpKQogICAgICAgICBsZWZ0T3BlcmFuZC5zZXRDb25z
dEludDMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDEpKTsKQEAgLTk1OSw3ICs5NDksNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudElu
c3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2Zp
bGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7
CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9jb2RlQmxvY2stPmFkZEpJVE11bElDKGFyaXRoUHJv
ZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24s
IG11bElDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcE11bD4obXVsSUMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVNdWwpOwpAQCAt
OTc1LDcgKzk2NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAKIHZvaWQgSklUOjplbWl0
X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdWI+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdWI+KCku
bWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVFN1YklDKiBzdWJJ
QyA9IG1fY29kZUJsb2NrLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1
Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBzdWJJQyk7CiAgICAgZW1pdE1h
dGhJQ0Zhc3Q8T3BTdWI+KHN1YklDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVl
U3ViUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcAppbmRleCA2NmUxYmUxNGE4ZC4uYjhjNDc5ODZmYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKQEAg
LTEzMCw3ICsxMzAsNyBAQCB2b2lkIEpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmIGppdCkKICAgICBub3REb3VibGVaZXJvLmxpbmsoJmppdCk7CiAjZW5kaWYK
ICAgICBpZiAobV9hcml0aFByb2ZpbGUpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6c3BlY2lhbEZhc3RQYXRoQml0KSwgQ0NhbGxIZWxw
ZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9hcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwor
ICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFBy
b2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNz
KG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICBqaXQuYm94RG91YmxlKG1f
bGVmdEZQUiwgbV9yZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVERpdkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRE
aXZHZW5lcmF0b3IuaAppbmRleCA4Mzk2Njc3OTQzZi4uNzA4ZGIxMGQ2Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaApAQCAtMzcsNyArMzcsNyBAQCBw
dWJsaWM6CiAgICAgSklURGl2R2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kLCBT
bmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCwg
SlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCiAgICAgICAgIEZQUlJlZyBsZWZ0
RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRjaEZQ
UiwKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQorICAgICAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIpCiAgICAgICAgIDog
bV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKICAgICAgICAgLCBtX3JpZ2h0T3BlcmFuZChyaWdo
dE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQpAQCAtNzEsNyArNzEsNyBAQCBw
cml2YXRlOgogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7CiAgICAgRlBSUmVnIG1fc2NyYXRjaEZQ
UjsKICAgICBib29sIG1fZGlkRW1pdEZhc3RQYXRoIHsgZmFsc2UgfTsKLSAgICBBcml0aFByb2Zp
bGUqIG1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogbV9hcml0aFByb2Zp
bGU7CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1fZW5kSnVtcExpc3Q7CiAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCBtX3Nsb3dQYXRoSnVtcExpc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDM5NTliOGQ1MDg4Li41N2E4MWVjNzljMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTcxNywxMyArNzE3LDEzIEBAIEFM
V0FZU19JTkxJTkUgR2V0UHV0SW5mbyBKSVQ6OmNvcGllZEdldFB1dEluZm8oT3BQdXRUb1Njb3Bl
IGJ5dGVjb2RlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLUFMV0FZU19JTkxJ
TkUgQXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVjb2Rl
KQorQUxXQVlTX0lOTElORSBCaW5hcnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFByb2Zp
bGUoQmluYXJ5T3AgYnl0ZWNvZGUpCiB7CiAgICAgdWludDY0X3Qga2V5ID0gKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihCaW5hcnlPcDo6b3Bjb2RlSUQpICsgMSkgPDwgMzIgfCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oYnl0ZWNvZGUubV9tZXRhZGF0YUlEKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9j
b3BpZWRBcml0aFByb2ZpbGVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXRlcmF0b3IgIT0gbV9jb3Bp
ZWRBcml0aFByb2ZpbGVzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwot
ICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jaykubV9hcml0aFByb2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmls
ZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBt
X2NvcGllZEFyaXRoUHJvZmlsZXMuYWRkKGtleSwgYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4g
YXJpdGhQcm9maWxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRNYXRoSUMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKaW5kZXgg
NTY0NWU0MmRlZmYuLjg0NjQ2MjJhNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE1hdGhJQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0
aElDLmgKQEAgLTUyLDExICs1MiwxMSBAQCBzdHJ1Y3QgTWF0aElDR2VuZXJhdGlvblN0YXRlIHsK
IAogI2RlZmluZSBFTkFCTEVfTUFUSF9JQ19TVEFUUyAwCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBH
ZW5lcmF0b3JUeXBlLCBib29sKCppc1Byb2ZpbGVFbXB0eSkoQXJpdGhQcm9maWxlJik+Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgdHlwZW5hbWUgQXJpdGhQcm9maWxlVHlwZT4K
IGNsYXNzIEpJVE1hdGhJQyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgSklUTWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgIEpJVE1hdGhJ
QyhBcml0aFByb2ZpbGVUeXBlKiBhcml0aFByb2ZpbGUpCiAgICAgICAgIDogbV9hcml0aFByb2Zp
bGUoYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2Rl
U2l6ZSgpOwogCiAgICAgICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewotICAgICAgICAgICAgaWYg
KGlzUHJvZmlsZUVtcHR5KCptX2FyaXRoUHJvZmlsZSkpIHsKKyAgICAgICAgICAgIGlmIChtX2Fy
aXRoUHJvZmlsZS0+aXNPYnNlcnZlZFR5cGVFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgLy8g
SXQgbG9va3MgbGlrZSB0aGUgTWF0aElDIGhhcyB5ZXQgdG8gZXhlY3V0ZS4gV2UgZG9uJ3Qgd2Fu
dCB0byBlbWl0IGNvZGUgaW4gdGhpcwogICAgICAgICAgICAgICAgIC8vIGNhc2UgZm9yIGEgY291
cGxlIHJlYXNvbnMuIEZpcnN0LCB0aGUgb3BlcmF0aW9uIG1heSBuZXZlciBleGVjdXRlLCBzbyBp
ZiB3ZSBkb24ndCBlbWl0CiAgICAgICAgICAgICAgICAgLy8gY29kZSwgaXQncyBhIHdpbi4gU2Vj
b25kLCBpZiB0aGUgb3BlcmF0aW9uIGRvZXMgZXhlY3V0ZSwgd2UgY2FuIGVtaXQgYmV0dGVyIGNv
ZGUKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2xvd1BhdGhTdGFydExv
Y2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHN0YXRlLnNs
b3dQYXRoU3RhcnQpOwogICAgIH0KIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KKyAgICBBcml0aFByb2ZpbGVUeXBlKiBh
cml0aFByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2FyaXRoUHJvZmlsZTsgfQogCiAjaWYgRU5B
QkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgc2l6ZV90IG1fZ2VuZXJhdGVkQ29kZVNpemUgeyAwIH07
CkBAIC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0gICAgQXJpdGhQ
cm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAgICBBcml0aFByb2ZpbGVUeXBlKiBtX2FyaXRoUHJv
ZmlsZTsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1f
Y29kZTsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2lubGluZVN0
YXJ0OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1faW5saW5lRW5k
OwpAQCAtMjQ2LDE1ICsyNDYsMTUgQEAgcHVibGljOgogICAgIEdlbmVyYXRvclR5cGUgbV9nZW5l
cmF0b3I7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0JpbmFyeVByb2ZpbGVFbXB0eShBcml0aFByb2Zp
bGUmIGFyaXRoUHJvZmlsZSkKK2lubGluZSBib29sIGlzQmluYXJ5UHJvZmlsZUVtcHR5KEJpbmFy
eUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQogewogICAgIHJldHVybiBhcml0aFByb2ZpbGUu
bGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpIHx8IGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5
cGUoKS5pc0VtcHR5KCk7CiB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZT4KLWNs
YXNzIEpJVEJpbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNC
aW5hcnlQcm9maWxlRW1wdHk+IHsKK2NsYXNzIEpJVEJpbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRN
YXRoSUM8R2VuZXJhdG9yVHlwZSwgQmluYXJ5QXJpdGhQcm9maWxlPiB7CiBwdWJsaWM6Ci0gICAg
SklUQmluYXJ5TWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQotICAgICAgICA6IEpJ
VE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc0JpbmFyeVByb2ZpbGVFbXB0eT4oYXJpdGhQcm9maWxl
KQorICAgIEpJVEJpbmFyeU1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
KyAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgQmluYXJ5QXJpdGhQcm9maWxlPihh
cml0aFByb2ZpbGUpCiAgICAgewogICAgIH0KIH07CkBAIC0yNjQsMTUgKzI2NCwxNSBAQCB0eXBl
ZGVmIEpJVEJpbmFyeU1hdGhJQzxKSVRNdWxHZW5lcmF0b3I+IEpJVE11bElDOwogdHlwZWRlZiBK
SVRCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPiBKSVRTdWJJQzsKIAogCi1pbmxpbmUgYm9v
bCBpc1VuYXJ5UHJvZmlsZUVtcHR5KEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQoraW5saW5l
IGJvb2wgaXNVbmFyeVByb2ZpbGVFbXB0eShCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmls
ZSkKIHsKICAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHko
KTsKIH0KIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3JUeXBlPgotY2xhc3MgSklUVW5hcnlN
YXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzVW5hcnlQcm9maWxlRW1w
dHk+IHsKK2NsYXNzIEpJVFVuYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JU
eXBlLCBVbmFyeUFyaXRoUHJvZmlsZT4gewogcHVibGljOgotICAgIEpJVFVuYXJ5TWF0aElDKEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQotICAgICAgICA6IEpJVE1hdGhJQzxHZW5lcmF0b3JU
eXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5Pihhcml0aFByb2ZpbGUpCisgICAgSklUVW5hcnlNYXRo
SUMoVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKKyAgICAgICAgOiBKSVRNYXRoSUM8
R2VuZXJhdG9yVHlwZSwgVW5hcnlBcml0aFByb2ZpbGU+KGFyaXRoUHJvZmlsZSkKICAgICB7CiAg
ICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNw
cAppbmRleCA4M2QyOTNiNjI1Mi4uY2Y2YmFhNTJmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVy
YXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE1hdGhJQ0lubGluZVJlc3Vs
dCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRo
SUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSkKIHsKICAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1bGF0aW5nIGludDMyLgogICAg
IE9ic2VydmVkVHlwZSBsaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKQEAgLTg5LDcg
Kzg5LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJ
bmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICByZXR1cm4gSklUTWF0aElDSW5s
aW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0OwogfQogCi1ib29sIEpJVE11bEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExp
c3QsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9m
aWxpbmcpCitib29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBl
cnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVy
czo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAgICAgQVNTRVJUKG1f
c2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9
IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpAQCAtMjA1LDE4ICsyMDUsMTggQEAgYm9vbCBKSVRNdWxH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVy
czo6SnVtcExpc3QKIAogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90TmVnYXRpdmVaZXJv
ID0gaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6Tm90RXF1YWwsIG1fcmVzdWx0LnBheWxvYWRH
UFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQobmVnYXRpdmVaZXJvQml0cykpOwogCi0g
ICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6
TmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmls
ZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKIAogICAgICAgICBub3RO
ZWdhdGl2ZVplcm8ubGluaygmaml0KTsKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJz
OjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAg
ICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxl
OjpOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQ
cm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAgICBqaXQubW92ZShtX3Jlc3VsdC5w
YXlsb2FkR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC51cnNoaWZ0UHRyKENDYWxs
SGVscGVyczo6SW1tMzIoNTIpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQuYW5kMzIoQ0Nh
bGxIZWxwZXJzOjpJbW0zMigweDdmZiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcCBub0ludDUyT3ZlcmZsb3cgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpM
ZXNzVGhhbk9yRXF1YWwsIG1fc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MHg0MzEpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihB
cml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVz
cyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cp
LCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJp
dHMoKSkpOwogICAgICAgICBub0ludDUyT3ZlcmZsb3cubGluaygmaml0KTsKIAogICAgICAgICBk
b25lLmxpbmsoJmppdCk7CkBAIC0yMjcsMTggKzIyNywxOCBAQCBib29sIEpJVE11bEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdAogICAgICAgICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhl
bHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKDApKSk7CiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5hcHBlbmQoaml0LmJyYW5j
aDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIG1fcmVzdWx0LnRhZ0dQUigpLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihuZWdhdGl2ZVplcm9CaXRzID4+IDMyKSkpOwogCi0gICAgICAgIGpp
dC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6TmVnWmVyb0Rv
dWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVz
c09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KEJpbmFyeUFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAgICAgICAgIENDYWxs
SGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKIAogICAgICAgICBub3ROZWdhdGl2ZVpl
cm8ubGluaygmaml0KTsKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9y
MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpOb25OZWda
ZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5h
ZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAgICBqaXQubW92ZShtX3Jlc3VsdC50YWdHUFIoKSwg
bV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LnVyc2hpZnRQdHIoQ0NhbGxIZWxwZXJzOjpJbW0z
Mig1MiAtIDMyKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVscGVy
czo6SW1tMzIoMHg3ZmYpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgbm9JbnQ1Mk92ZXJmbG93ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW5P
ckVxdWFsLCBtX3NjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMxKSk7
CiAgICAgICAgIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihB
cml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVz
cyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cp
LCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJp
dHMoKSkpOwogCiAgICAgICAgIGVuZEp1bXBMaXN0LmFwcGVuZChub0ludDUyT3ZlcmZsb3cpOwog
ICAgICAgICBpZiAobV9zY3JhdGNoR1BSID09IG1fcmVzdWx0LnRhZ0dQUigpIHx8IG1fc2NyYXRj
aEdQUiA9PSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRNdWxHZW5lcmF0b3IuaAppbmRleCAzNmQyNmVhMTI0ZS4uNjA4Nzc5NjY4NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuaApAQCAtNTYsOCArNTYs
OCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghbV9sZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29u
c3RJbnQzMigpIHx8ICFtX3JpZ2h0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpKTsKICAg
ICB9CiAKLSAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxw
ZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQXJpdGhQcm9maWxlKik7Ci0gICAg
Ym9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93SnVtcExpc3QsIGNv
bnN0IEFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0
aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVy
YXRpb25TdGF0ZSYsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJh
dGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1w
TGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBCaW5hcnlB
cml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJv
b2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQp
IHsgcmV0dXJuIGxlZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0
aWMgYm9vbCBpc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRP
cGVyYW5kKSB7IHJldHVybiByaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuY3BwCmluZGV4IDky
YzI5ZGQ2MzBhLi5jZWViZTM5MDk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVROZWdHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTmVnR2VuZXJhdG9yLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUo
Q0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE5lZ0dl
bmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7
CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQo
bV9zY3JhdGNoR1BSICE9IG1fc3JjLnBheWxvYWRHUFIoKSk7CkBAIC00NSw3ICs0NSw3IEBAIEpJ
VE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxs
SGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBp
bnQzMi4KICAgICBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRUeXBlcyA9IE9ic2VydmVkVHlwZSgpLndp
dGhJbnQzMigpOwogICAgIGlmIChhcml0aFByb2ZpbGUpCi0gICAgICAgIG9ic2VydmVkVHlwZXMg
PSBhcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpOworICAgICAgICBvYnNlcnZlZFR5cGVz
ID0gYXJpdGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKTsKICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFvYnNlcnZlZFR5cGVzLmlzRW1wdHkoKSwgIldlIHNob3VsZCBub3QgYXR0ZW1wdCB0byBn
ZW5lcmF0ZSBhbnl0aGluZyBpZiB3ZSBkbyBub3QgaGF2ZSBhIHByb2ZpbGUuIik7CiAKICAgICBp
ZiAob2JzZXJ2ZWRUeXBlcy5pc09ubHlOb25OdW1iZXIoKSkKQEAgLTgyLDcgKzgyLDcgQEAgSklU
TWF0aElDSW5saW5lUmVzdWx0IEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxI
ZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICByZXR1cm4gSklUTWF0aElDSW5saW5lUmVzdWx0OjpH
ZW5lcmF0ZUZ1bGxTbmlwcGV0OwogfQogCi1ib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVt
cExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCitib29s
IEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUs
IGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9
IG1fc3JjLnBheWxvYWRHUFIoKSk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3Jlc3Vs
dC5wYXlsb2FkR1BSKCkpOwpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgSklUTmVnR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0CiAjZW5kaWYKICAgICAvLyBUaGUgZmxhZ3Mgb2YgQXJpdGhOZWdhdGUgYXJlIGJhc2ljIGlu
IERGRy4KICAgICAvLyBXZSBvbmx5IG5lZWQgdG8ga25vdyBpZiB3ZSBldmVyIHByb2R1Y2VkIGEg
bnVtYmVyLgotICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nICYmIGFyaXRoUHJvZmlsZSAmJiAh
YXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSAmJiAhYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcgJiYg
YXJpdGhQcm9maWxlICYmICFhcml0aFByb2ZpbGUtPmFyZ09ic2VydmVkVHlwZSgpLnNhd051bWJl
cigpICYmICFhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKICAgICAgICAgYXJpdGhQ
cm9maWxlLT5lbWl0U2V0RG91YmxlKGppdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaAppbmRleCA4YTBjMmQ1MTdkNi4u
Nzg3YjcwNzY4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVn
R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0
b3IuaApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zY3JhdGNoR1BSKHNj
cmF0Y2hHUFIpCiAgICAgeyB9CiAKLSAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJ
bmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQXJpdGhQ
cm9maWxlKik7Ci0gICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxs
SGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBz
bG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9m
aWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhl
bHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSop
OworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhK
dW1wTGlzdCwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxp
bmcpOwogCiBwcml2YXRlOgogICAgIEpTVmFsdWVSZWdzIG1fcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggODhkNTA4YTAzZGQuLjRkN2Fi
OWJkMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
QEAgLTI2NDAsNyArMjY0MCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25FeGNlcHRp
b25GdXp6KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAjZW5kaWYgLy8gQ09NUElMRVIo
R0NDX0NPTVBBVElCTEUpCiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgcHJvZmls
ZWRBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcDEsIEpTVmFsdWUg
b3AyLCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpT
VmFsdWUgcHJvZmlsZWRBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBv
cDEsIEpTVmFsdWUgb3AyLCBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKIHsKICAg
ICBhcml0aFByb2ZpbGUub2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc0FkZChnbG9iYWxPYmplY3QsIG9wMSwgb3AyKTsKQEAgLTI2NTYsNyArMjY1Niw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0FkZChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDIpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yNjc0LDcgKzI2NzQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZwogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDEpOwogICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDIpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9m
aWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJp
dGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgYXJpdGhQcm9maWxl
LT5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFu
dCA9IG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplOwpAQCAtMjY5Niw3ICsyNjk2
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2Zp
bGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRk
SUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvZmlsZWRBZGQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSwgKmFyaXRo
UHJvZmlsZSkpOwogfQpAQCAtMjcxMSw3ICsyNzExLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmoKICAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAogICAg
IGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGROb09wdGltaXplOwot
ICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUo
KSkKKyAgICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJp
dGhQcm9maWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEs
IG9wMik7CiAgICAgYWRkSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI3NDQsNyArMjc0NCw3IEBAIEFMV0FZU19J
TkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHVucHJvZmlsZWRNdWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTXVsKGdsb2JhbE9i
amVjdCwgb3AxLCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgcHJvZmlsZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBh
cml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FM
V0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNo
b3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
QEAgLTI3ODUsNyArMjc4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gbm9uT3B0
aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplOwotICAgIGlmIChBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBpZiAo
QmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCkp
CiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgbXVsSUMtPmdl
bmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFu
dCk7CiAKQEAgLTI3OTYsNyArMjc5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAg
cmV0dXJuIHVucHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3Ay
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFBy
b2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2Zp
bGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yODEyLDcgKzI4MTIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmls
ZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJ
Qy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBtdWxJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAg
YXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ax
KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBhdXRvIG5vbk9wdGltaXplVmFy
aWFudCA9IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplOwpAQCAtMjgzMSw3ICsy
ODMxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFBy
b2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
bXVsSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwog
ICAgIHJldHVybiBwcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRP
cDIsICphcml0aFByb2ZpbGUpOwogfQpAQCAtMjg1Nyw3ICsyODU3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogCiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQs
IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjg2Niw3ICsyODY2
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVBy
b2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKLSAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3Bl
cmFuZCk7CisgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlQXJnKG9wZXJhbmQpOwogCiAgICAgSlNW
YWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODk0LDkg
KzI4OTQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVn
YXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdAogICAgIAogICAgIEpTVmFsdWUgb3Bl
cmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFuZCk7CiAKLSAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBVbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VS
VChhcml0aFByb2ZpbGUpOwotICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsK
KyAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7CiAgICAgbmVnSUMtPmdlbmVy
YXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG9wZXJhdGlvbkFyaXRoTmVnYXRl
UHJvZmlsZWQpOwogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCkBAIC0yOTI4LDggKzI5Mjgs
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIAotICAgIGlmIChBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKSkKLSAgICAgICAgYXJpdGhQcm9maWxl
LT5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIGlmIChVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpKQorICAgICAgICBhcml0aFByb2ZpbGUtPm9i
c2VydmVBcmcob3BlcmFuZCk7CiAgICAgbmVnSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCksIG9wZXJhdGlvbkFyaXRoTmVnYXRlKTsKIAogI2lmIEVOQUJMRShNQVRI
X0lDX1NUQVRTKQpAQCAtMjk1NSw3ICsyOTU1LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgdW5wcm9maWxlZFN1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdWIoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMikp
OwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZFN1YihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9m
aWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCitBTFdBWVNfSU5M
SU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZFN1YihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNo
b3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yOTc5LDcgKzI5NzksNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuYwogICAgIHJldHVybiB1bnByb2ZpbGVkU3ViKGdsb2JhbE9iamVjdCwgZW5j
b2RlZE9wMSwgZW5jb2RlZE9wMik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVTdWJQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsK
IApAQCAtMjk5Nyw3ICsyOTk3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZVN1Yk9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBub25P
cHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZVN1Yk5vT3B0aW1pemU7Ci0gICAgaWYgKEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpKQorICAgIGlm
IChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUo
KSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBzdWJJQy0+
Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVWYXJp
YW50KTsKIApAQCAtMzAyMyw3ICszMDIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGcKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFT
U0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7
CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVk
Tm9PcHRpbWl6ZTsKQEAgLTMwNDIsNyArMzA0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKICAg
ICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWRTdWIodm0sIGdsb2Jh
bE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDBhZGRiZmYyZTQ4Li5k
ODYyNTY2OGQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
QEAgLTM4LDYgKzM4LDggQEAgdHlwZWRlZiBpbnQ2NF90IEVuY29kZWRKU1ZhbHVlOwogICAgIAog
Y2xhc3MgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKIGNsYXNzIEFycmF5UHJvZmlsZTsKK2NsYXNz
IFVuYXJ5QXJpdGhQcm9maWxlOworY2xhc3MgQmluYXJ5QXJpdGhQcm9maWxlOwogY2xhc3MgQnV0
dGVyZmx5OwogY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQ2FsbExpbmtJbmZvOwpAQCAtNjQsNyAr
NjYsNiBAQCBjbGFzcyBXYXRjaHBvaW50U2V0Owogc3RydWN0IEJ5VmFsSW5mbzsKIHN0cnVjdCBJ
bmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci1zdHJ1Y3QgQXJpdGhQcm9maWxl
OwogCiBleHRlcm4gIkMiIHsKIApAQCAtNzcsNyArNzgsNyBAQCB0eXBlZGVmIGNoYXIqIFVudXNl
ZFB0cjsKICAgICBBOiBKU0FycmF5KgogICAgIEFhcDogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSoK
ICAgICBBcDogQXJyYXlQcm9maWxlKgotICAgIEFycDogQXJpdGhQcm9maWxlKgorICAgIEFycDog
QmluYXJ5QXJpdGhQcm9maWxlKgogICAgIEI6IEJ1dHRlcmZseSoKICAgICBCeTogQnlWYWxJbmZv
KgogICAgIEM6IEpTQ2VsbCoKQEAgLTI4Miw3ICsyODMsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ2hlY2tJZkV4Y2VwdGlvbklzVW5jYXRjaGFibGVBbmROb3RpZnlQcm9maWxl
cihWTQogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20oSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTT2JqZWN0KiBjb25z
dHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSBXVEZfSU5URVJOQUw7
CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGQoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlQWRkUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJv
ZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkTm9PcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMq
KSBXVEZfSU5URVJOQUw7CkBAIC0yOTIsMTMgKzI5MywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSgogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE5vT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwg
SklUTXVsSUMqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZf
SU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVs
UHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCk7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSBvcGVyYW5kLCBBcml0aFByb2ZpbGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKik7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyop
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5l
Z0lDKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKikgV1RG
X0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1
YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJ
VFN1YklDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyopIFdU
Rl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3Vi
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9y
LmNwcAppbmRleCA3OTVjMjc1ODRjMC4uN2IxYThiODE5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0b3I6Omdl
bmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE1hdGhJQ0lubGluZVJl
c3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBN
YXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKIHsKICAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1bGF0aW5nIGludDMyLgog
ICAgIE9ic2VydmVkVHlwZSBsaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKQEAgLTc4
LDcgKzc4LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICByZXR1cm4gSklUTWF0aElD
SW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0OwogfQogCi1ib29sIEpJVFN1YkdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVt
cExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQ
cm9maWxpbmcpCitib29sIEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhl
bHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVs
cGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAgICAgQVNTRVJU
KG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BS
ICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3ViR2VuZXJhdG9yLmgKaW5kZXggNTYxZjYzMzRhZTMuLjM0OTFhODNmZWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmgKQEAgLTUzLDggKzUzLDggQEAg
cHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEZQUihzY3JhdGNoRlBSKQogICAgIHsgfQogCi0g
ICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3Qg
QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlv
blN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZh
c3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0
LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlB
cml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJv
b2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBw
ZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnREYXRhLmNwcAppbmRleCBiZGEzMDhjODRkMi4uYzAzNDFjOTU2Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xMzUsMzYgKzEzNSw0OSBAQCB2
b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICNlbmRpZgogCiAgICAgewotICAg
ICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRoUHJvZmls
ZSBhcml0aFByb2ZpbGU7CisgICAgICAgIGFyaXRoUHJvZmlsZS5hcmdTYXdJbnQzMigpOworICAg
ICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBVbmFyeUFyaXRoUHJvZmlsZTo6b2Jz
ZXJ2ZWRJbnRCaXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmFyZ09ic2VydmVk
VHlwZSgpLmlzT25seUludDMyKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFVuYXJ5QXJpdGhQ
cm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgYXJpdGhQcm9maWxlLmFyZ1Nhd051bWJlcigp
OworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBVbmFyeUFyaXRoUHJvZmls
ZTo6b2JzZXJ2ZWROdW1iZXJCaXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmFy
Z09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5s
aHNTYXdJbnQzMigpOwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3SW50MzIoKTsKLSAgICAg
ICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJp
bmFyeUludEludCgpLmJpdHMoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxl
OjpvYnNlcnZlZEJpbmFyeUludEludCgpLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkp
OwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnRJ
bnQoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEludEJp
dHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNP
bmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBl
KCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxlIGFy
aXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAg
ICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051bWJlcigpOwogICAgICAgICBhcml0aFByb2ZpbGUu
cmhzU2F3SW50MzIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJp
dGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgpLmJpdHMoKSk7Ci0gICAgICAgIFNU
QVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgpLmxoc09i
c2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0
aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNP
bmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEJpbmFy
eUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKCkpOworICAgICAgICBBU1NFUlQo
YXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICAgICAg
QVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKICAg
ICB9CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBC
aW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhz
U2F3TnVtYmVyKCk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdOdW1iZXIoKTsKLSAgICAg
ICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJp
bmFyeU51bWJlck51bWJlcigpLmJpdHMoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQ
cm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51bWJlcigpLmxoc09ic2VydmVkVHlwZSgpLmlz
T25seU51bWJlcigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2Vy
dmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkp
OworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0aFByb2Zp
bGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChh
cml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwogICAgIH0KICAg
ICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdJbnQz
MigpOwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3TnVtYmVyKCk7Ci0gICAgICAgIEFTU0VS
VChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnRO
dW1iZXIoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2Jz
ZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsK
LSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50TnVt
YmVyKCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQo
YXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50TnVt
YmVyQml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUo
KS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZl
ZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQogfQogSUdOT1JFX1dBUk5JTkdTX0VORApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcAppbmRleCBhMjVmOTg0YWJkYS4uZjVkOTE3NzQ2MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC04
Niw3ICs4Niw3IEBAIHB1YmxpYzoKIAogY29uc3QgaW50NjRfdCogTExJbnRPZmZzZXRzRXh0cmFj
dG9yOjpkdW1teSgpCiB7Ci0vLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFz
bS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNvZGUKKy8vIFRo
aXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCiAvLyB0byBjcmVhdGUgYSB0YWJsZSBvZiBvZmZz
ZXRzLCBzaXplcywgYW5kIGEgaGVhZGVyIGlkZW50aWZ5aW5nIHdoYXQgY29tYmluYXRpb24gb2YK
IC8vIFBsYXRmb3JtLmggbWFjcm9zIHdlIGhhdmUgc2V0LiBXZSBpbmNsdWRlIGl0IGluc2lkZSBv
ZiBhIG1ldGhvZCBvbiBMTEludE9mZnNldHNFeHRyYWN0b3IKIC8vIGJlY2F1c2UgdGhlIGZpZWxk
cyB3aG9zZSBvZmZzZXRzIHdlJ3JlIGV4dHJhY3RpbmcgYXJlIG1vc3RseSBwcml2YXRlLiBTbyB3
ZSBtYWtlIHRoZWlyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYmNmYTI1MmU0ZWYuLmI1Yzc1ODMxOGUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CkBAIC0yNDAsMTMgKzI0MCwxNSBAQCBjb25zdCBJc0ludmFsaWRhdGVkID0gY29uc3RleHByIElz
SW52YWxpZGF0ZWQKICMgU2hhZG93Q2hpY2tlbiBkYXRhCiBjb25zdCBTaGFkb3dDaGlja2VuVGFp
bE1hcmtlciA9IGNvbnN0ZXhwciBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OnRhaWxNYXJrZXJWYWx1
ZQogCi0jIEFyaXRoUHJvZmlsZSBkYXRhCi1jb25zdCBBcml0aFByb2ZpbGVJbnQgPSBjb25zdGV4
cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRVbmFyeUludCgpLmJpdHMoKSkKLWNvbnN0IEFyaXRo
UHJvZmlsZU51bWJlciA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZFVuYXJ5TnVt
YmVyKCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlSW50SW50ID0gY29uc3RleHByIChBcml0
aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9m
aWxlTnVtYmVySW50ID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVt
YmVySW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlSW50TnVtYmVyID0gY29uc3RleHBy
IChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCkuYml0cygpKQotY29uc3Qg
QXJpdGhQcm9maWxlTnVtYmVyTnVtYmVyID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2Vy
dmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkuYml0cygpKQorIyBVbmFyeUFyaXRoUHJvZmlsZSBkYXRh
Citjb25zdCBBcml0aFByb2ZpbGVJbnQgPSBjb25zdGV4cHIgKFVuYXJ5QXJpdGhQcm9maWxlOjpv
YnNlcnZlZEludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlciA9IGNvbnN0ZXhwciAo
VW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cygpKQorCisjIEJpbmFyeUFyaXRo
UHJvZmlsZSBkYXRhCitjb25zdCBBcml0aFByb2ZpbGVJbnRJbnQgPSBjb25zdGV4cHIgKEJpbmFy
eUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRJbnRCaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVO
dW1iZXJJbnQgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJ
bnRCaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVJbnROdW1iZXIgPSBjb25zdGV4cHIgKEJpbmFy
eUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkpCitjb25zdCBBcml0aFByb2Zp
bGVOdW1iZXJOdW1iZXIgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRO
dW1iZXJOdW1iZXJCaXRzKCkpCiAKICMgUG9pbnRlciBUYWdzCiBjb25zdCBCeXRlY29kZVB0clRh
ZyA9IGNvbnN0ZXhwciBCeXRlY29kZVB0clRhZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAzMDQzNWM0
NjdkMy4uZmM5MzYwOGFkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xMDAzLDggKzEwMDMsOCBA
QCBlbmQpCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAKLSAgICBtYWNybyBhcml0
aFByb2ZpbGUodHlwZSkKLSAgICAgICAgb3JpIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9h
cml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICBtYWNybyB1cGRhdGVB
cml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6
bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgIGVuZAog
CiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTAxMywxMiArMTAxMywxMiBAQCBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdhdGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZGF0YSwgcgogICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50
CiAgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDIKLSAg
ICBhcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShB
cml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuIChJbnQzMlRhZywgdDIpCiAub3BOZWdhdGVTcmNO
b3RJbnQ6CiAgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JpIDB4
ODAwMDAwMDAsIHQxCi0gICAgYXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKKyAgICB1
cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlTnVtYmVyKQogICAgIHJldHVybih0MSwgdDIp
CiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDMwLDcgKzEwMzAsNyBAQCBlbmQpCiBtYWNybyBiaW5h
cnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlv
bkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8l
b3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAg
ICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUg
KyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjpt
X2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KaW5kZXggYjJmYjU1MWI5ZWEuLjgxYWNhOGQyYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtOTczLDIy
ICs5NzMsMjQgQEAgZW5kKQogCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5l
Z2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAg
ICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAgb3JoIHR5cGUsIE9wTmVn
YXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRz
W3QxXQorICAgIGVuZAorCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgIGxvYWRp
IE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0
c1t0MV0sIHQyCiAgICAgYnFiIHQzLCBudW1iZXJUYWcsIC5vcE5lZ2F0ZU5vdEludAogICAgIGJ0
aXogdDMsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKICAgICBuZWdpIHQzCiAgICAgb3JxIG51
bWJlclRhZywgdDMKLSAgICBvcmkgQXJpdGhQcm9maWxlSW50LCB0MgotICAgIHN0b3JlaSB0Miwg
T3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRz
W3QxXQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJu
KHQzKQogLm9wTmVnYXRlTm90SW50OgogICAgIGJ0cXogdDMsIG51bWJlclRhZywgLm9wTmVnYXRl
U2xvdwogICAgIHhvcnEgMHg4MDAwMDAwMDAwMDAwMDAwLCB0MwotICAgIG9yaSBBcml0aFByb2Zp
bGVOdW1iZXIsIHQyCi0gICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQ
cm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCisgICAgdXBkYXRlQXJpdGhQcm9maWxl
KEFyaXRoUHJvZmlsZU51bWJlcikKICAgICByZXR1cm4odDMpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBA
IC0xMDAyLDcgKzEwMDQsNyBAQCBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkbwogICAgICAgICBtZXRh
ZGF0YSh0NSwgdDApCiAKICAgICAgICAgbWFjcm8gcHJvZmlsZSh0eXBlKQotICAgICAgICAgICAg
b3JpIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0
aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0
NV0KICAgICAgICAgZW5kCiAKICAgICAgICAgZ2V0KG1fcmhzLCB0MCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FybS5yYgppbmRleCA5ODgxZTRkYmQwMy4uNWU5ODM0Y2NhZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKQEAgLTQxOCw3ICs0MTgsNyBA
QCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAgICAgIHdoZW4gImFuZGki
LCAiYW5kcCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJhbmRzIiwgImFuZCIsIG9wZXJh
bmRzKQotICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICB3aGVuICJvcmkiLCAib3Jw
IiwgIm9yaCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJzIiwgIm9yciIsIG9wZXJh
bmRzKQogICAgICAgICB3aGVuICJvcmlzIgogICAgICAgICAgICAgZW1pdEFybUNvbXBhY3QoIm9y
cnMiLCAib3JycyIsIG9wZXJhbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm02NC5yYgppbmRleCA0Y2Q4ZjY2ZTMwMy4uZGQ2NjMwMmUwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBAIC0zNzgsNyArMzc4LDcgQEAgY2xhc3MgU2Vx
dWVuY2UKICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAgICAgICAgIHdoZW4gImxv
YWRiIiwgImxvYWRic2kiLCAibG9hZGJzcSIsICJzdG9yZWIiLCAvXmJiLywgL15idGIvLCAvXmNi
LywgL150Yi8KICAgICAgICAgICAgICAgICBzaXplID0gMQotICAgICAgICAgICAgd2hlbiAibG9h
ZGgiLCAibG9hZGhzaSIsICJsb2FkaHNxIgorICAgICAgICAgICAgd2hlbiAibG9hZGgiLCAibG9h
ZGhzaSIsICJsb2FkaHNxIiwgIm9yaCIsICJzdG9yZWgiCiAgICAgICAgICAgICAgICAgc2l6ZSA9
IDIKICAgICAgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIsICJzdG9yZWkiLCAiYWRkaSIs
ICJhbmRpIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwKICAgICAgICAgICAgICAgICAibm90
aSIsICJvcmkiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwgInhvcmkiLCAvXmJpLywg
L15idGkvLApAQCAtNjMxLDYgKzYzMSw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAg
ICBlbWl0QVJNNjRUQUMoIm9yciIsIG9wZXJhbmRzLCA6cHRyKQogICAgICAgICB3aGVuICJvcnEi
CiAgICAgICAgICAgICBlbWl0QVJNNjRUQUMoIm9yciIsIG9wZXJhbmRzLCA6cXVhZCkKKyAgICAg
ICAgd2hlbiAib3JoIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIiLCBvcGVyYW5kcywg
OmhhbGYpCiAgICAgICAgIHdoZW4gInhvcmkiCiAgICAgICAgICAgICBlbWl0QVJNNjRUQUMoImVv
ciIsIG9wZXJhbmRzLCA6d29yZCkKICAgICAgICAgd2hlbiAieG9ycCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKaW5kZXggYjcxNDllODJhY2IuLmE2ODE2Y2JjYTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgpAQCAtNTg1LDYg
KzU4NSw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRp
b24ob3BlcmFuZHMsIDppbnQ2NCwgInwiKQogICAgICAgICB3aGVuICJvcnAiCiAgICAgICAgICAg
ICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnRwdHIsICJ8IikKKyAgICAgICAgd2hl
biAib3JoIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50MTYs
ICJ8IikKIAogICAgICAgICB3aGVuICJ4b3JpIgogICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0
aW9uKG9wZXJhbmRzLCA6aW50MzIsICJeIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgppbmRleCA3MTc4OGIxMDgzNy4uMTY3Njc1NGEwNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9u
cy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMu
cmIKQEAgLTQyLDYgKzQyLDcgQEAgTUFDUk9fSU5TVFJVQ1RJT05TID0KICAgICAgIm5lZ3EiLAog
ICAgICAibm90aSIsCiAgICAgICJvcmkiLAorICAgICAib3JoIiwKICAgICAgInJzaGlmdGkiLAog
ICAgICAidXJzaGlmdGkiLAogICAgICAicnNoaWZ0cCIsCkBAIC02MCw2ICs2MSw3IEBAIE1BQ1JP
X0lOU1RSVUNUSU9OUyA9CiAgICAgICJsb2FkaHNxIiwKICAgICAgInN0b3JlaSIsCiAgICAgICJz
dG9yZWIiLAorICAgICAic3RvcmVoIiwKICAgICAgImxvYWRkIiwKICAgICAgIm1vdmVkIiwKICAg
ICAgInN0b3JlZCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9taXBzLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgppbmRl
eCBlNDQ2NDdjZDNiMi4uZGFiNGQ4NWM5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vbWlwcy5yYgpAQCAtNTI3LDcgKzUyNyw3IEBAIGRlZiBtaXBzTG93ZXJNaXNwbGFjZWRJ
bW1lZGlhdGVzKGxpc3QpCiAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICB3aGVuIC9e
KGFkZGl8c3ViaSkvCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLnJpc2NMb3dlck1h
bGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QsIC0weDdmZmYuLjB4N2ZmZikKLSAgICAg
ICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIsICJvcmkiLCAib3JwIiwgInhvcmkiLCAieG9ycCIK
KyAgICAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIsICJvcmkiLCAib3JwIiwgIm9yaCIsICJ4
b3JpIiwgInhvcnAiCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLnJpc2NMb3dlck1h
bGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QsIDAuLjB4ZmZmZikKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKQEAgLTg1NCw3ICs4NTQsNyBA
QCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAgICAgIHdoZW4gImFuZGki
LCAiYW5kcCIKICAgICAgICAgICAgIGVtaXRNSVBTQ29tcGFjdCgiYW5kIiwgImFuZCIsIG9wZXJh
bmRzKQotICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICB3aGVuICJvcmkiLCAib3Jw
IiwgIm9yaCIKICAgICAgICAgICAgIGVtaXRNSVBTQ29tcGFjdCgib3IiLCAib3JyIiwgb3BlcmFu
ZHMpCiAgICAgICAgIHdoZW4gIm9yaXMiCiAgICAgICAgICAgICBlbWl0TUlQU0NvbXBhY3QoIm9y
IiwgIm9ycnMiLCBvcGVyYW5kcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3Jpc2MucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNj
LnJiCmluZGV4IDhiOGRlOGQxMjhhLi5kOTRlZWFjZTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9yaXNjLnJiCkBAIC00ODksNiArNDg5LDExIEBAIGRlZiByaXNjTG93ZXJN
aXNwbGFjZWRBZGRyZXNzZXMobGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLm9wY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByaXNjQXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9k
ZS5vcGVyYW5kcywgImJzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5ub3RhdGlvbikKKyAgICAgICAgICAgIHdoZW4gIm9yaCIKKyAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlzY0FzUmVnaXN0ZXJzKG5ld0xpc3Qs
IHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJoIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbikKICAgICAgICAgICAgIHdoZW4g
ImFkZGQiLCAiZGl2ZCIsICJzdWJkIiwgIm11bGQiLCAic3FydGQiLCAvXmJkLwogICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgppbmRleCAxNjZmNGJkYTEyNy4uZGZiNGY5
YzhmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5y
YgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKQEAgLTg4NSw2
ICs4ODUsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgaGFuZGxlWDg2T3AoIm9y
I3t4ODZTdWZmaXgoOnB0cil9IiwgOnB0cikKICAgICAgICAgd2hlbiAib3JxIgogICAgICAgICAg
ICAgaGFuZGxlWDg2T3AoIm9yI3t4ODZTdWZmaXgoOnF1YWQpfSIsIDpxdWFkKQorICAgICAgICB3
aGVuICJvcmgiCisgICAgICAgICAgICBoYW5kbGVYODZPcCgib3Ije3g4NlN1ZmZpeCg6aGFsZil9
IiwgOmhhbGYpCiAgICAgICAgIHdoZW4gInJzaGlmdGkiCiAgICAgICAgICAgICBoYW5kbGVYODZT
aGlmdCgic2FyI3t4ODZTdWZmaXgoOmludCl9IiwgOmludCkKICAgICAgICAgd2hlbiAicnNoaWZ0
cCIKQEAgLTk3MSw2ICs5NzMsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5k
CiAgICAgICAgIHdoZW4gInN0b3JlYiIKICAgICAgICAgICAgICRhc20ucHV0cyAibW92I3t4ODZT
dWZmaXgoOmJ5dGUpfSAje3g4Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgICAgICB3aGVu
ICJzdG9yZWgiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdiN7eDg2U3VmZml4KDpoYWxmKX0g
I3t4ODZPcGVyYW5kcyg6aGFsZiwgOmhhbGYpfSIKICAgICAgICAgd2hlbiAibG9hZGQiCiAgICAg
ICAgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9
IgogICAgICAgICB3aGVuICJtb3ZlZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUmVzdWx0VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1
bHRUeXBlLmgKaW5kZXggOWIzZDBkNzRjOGQuLjU2MjJmMjg5Y2MxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaApAQCAtNDgsNiArNDgsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG51bUJpdHNOZWVkZWQgPSA3Owog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KChUeXBlQml0cyAmICgoMSA8PCBudW1CaXRzTmVlZGVkKSAt
IDEpKSA9PSBUeXBlQml0cywgIlRoaXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcy4iKTsK
IAorICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlwZSgpCisgICAgICAgICAgICA6
IFJlc3VsdFR5cGUodW5rbm93blR5cGUoKSkKKyAgICAgICAgeworICAgICAgICB9CiAgICAgICAg
IGNvbnN0ZXhwciBleHBsaWNpdCBSZXN1bHRUeXBlKFR5cGUgdHlwZSkKICAgICAgICAgICAgIDog
bV9iaXRzKHR5cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDkwYzNkZTdhMzQzLi5lNzVkMDhhMGIwOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCkBAIC00NzYsOCArNDc2LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3N0cmlu
ZykKICNpZiBFTkFCTEUoSklUKQogc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5h
cnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmFsdWUgcmVzdWx0LCBK
U1ZhbHVlIG9wZXJhbmQpCiB7Ci0gICAgQXJpdGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEu
bV9hcml0aFByb2ZpbGU7Ci0gICAgcHJvZmlsZS5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIFVu
YXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEubV9hcml0aFByb2ZpbGU7CisgICAg
cHJvZmlsZS5vYnNlcnZlQXJnKG9wZXJhbmQpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOdW1iZXIo
KSB8fCByZXN1bHQuaXNCaWdJbnQoKSk7CiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAg
ICAgICAgIGlmICghcmVzdWx0LmlzSW50MzIoKSkgewpAQCAtNTM0LDcgKzUzNCw3IEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpCiAjaWYgRU5BQkxFKERGR19KSVQpCiBzdGF0aWMg
dm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0Kiwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSByZXN1
bHQsIEpTVmFsdWUgbGVmdCwgSlNWYWx1ZSByaWdodCkKIHsKLSAgICBBcml0aFByb2ZpbGUmIHBy
b2ZpbGUgPSAqY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJp
dGhQcm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMo
cGMpOwogCiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICghcmVzdWx0
LmlzSW50MzIoKSkgewpAQCAtNTk1LDcgKzU5NSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9hZGQpCiAgICAgSlNWYWx1ZSB2MSA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7
CiAgICAgSlNWYWx1ZSB2MiA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAg
ICBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpjb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZv
clBDKHBjKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpjb2RlQmxv
Y2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKHBjKTsKICAgICBhcml0aFByb2ZpbGUub2JzZXJ2
ZUxIU0FuZFJIUyh2MSwgdjIpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FkZChnbG9iYWxP
YmplY3QsIHYxLCB2Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381763</attachid>
            <date>2019-10-23 18:54:50 -0700</date>
            <delta_ts>2019-10-29 16:20:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>123295</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRhZTQ5NzdkM2NiLi5kZDYyMDk3NTAzZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY4IEBACisyMDE5LTEwLTE0ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGltZSBvbmx5IHVzZWQgZm9y
IGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQgYmVpbmcgdXNlZCBmb3Ig
bmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1c2VkIGZvciBpbmMgYW5k
IGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBhdGNoIEkgbWFrZSBhIHNl
cGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3IgYSBzaW5nbGUgYXJndW1l
bnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisKKyAgICAgICAgQWZ0ZXIg
ZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXplZCB0aGF0IHRoZSBSZXN1
bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQcm9maWxlIGFyZSBub3Qg
bmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFscmVhZHkgaW4gdGhlIGJ5
dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3ZpbmcgdGhlbSBhbGxvd2Vk
IHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBmaXQgaW4gMTYgYml0cyAo
OSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRoZSB0d28ga2luZHMgc2Vw
YXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRlcGVuZGVudGx5IGluIHRo
ZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlcXVpcmVkIGFkZGluZyB0aGUgIm9yaCIg
aW5zdHJ1Y3Rpb24gdG8gdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCB0byBzZXQgYml0cyBpbiB0aGUg
QXJpdGhQcm9maWxlLgorICAgICAgICBUaGlzIGluIHR1cm4gbW90aXZhdGVkIHRoZSBhZGRpdGlv
biBvZiAic3RvcmVoIiwgYXMgb24gUklTQyBwbGF0Zm9ybXMgIm9yaCIgb24gYSBtZW1vcnkgbG9j
YXRpb24gaXMgYWN0dWFsbHkgbG9hZGggLT4gb3JoIC0+IHN0b3JlaC4KKworICAgICAgICAqIGJ5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51
bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6
c2hvdWxkRW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50IGNvbnN0KToKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbkludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlRG91YmxlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOb25OdW1lcmlj
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSW50MzJPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDUyT3Zl
cmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkTm9u
TmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRO
ZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5v
bk51bWVyaWMpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3cp
OgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSW50NTJPdmVyZmxvdyk6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6YWRkcmVzc09mQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6QXJp
dGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpoYXNCaXRzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRCaXQpOgorICAgICAgICAoSlNDOjpVbmFy
eUFyaXRoUHJvZmlsZTo6VW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmFyeUFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlOjphcmdPYnNlcnZlZFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJv
ZmlsZTo6c2V0QXJnT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2Zp
bGU6OmFyZ1Nhd0ludDMyKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nh
d051bWJlcik6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdOb25OdW1i
ZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZUFyZyk6CisgICAg
ICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpCaW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cyk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMpOgorICAg
ICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cyk6
CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6c2V0TGhzT2JzZXJ2ZWRUeXBlKToK
KyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpzZXRSaHNPYnNlcnZlZFR5cGUpOgor
ICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFMpOgorICAgICAgICAo
SlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFNBbmRSSFMpOgorICAgICAgICAoSlND
OjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2ZWRUeXBlRW1wdHkpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVEFkZElDKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklU
U3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElD
KToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bWFrZURpdlNhZmUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJ
Qyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlN
YXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJp
dGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRB
ZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJ
Q0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKiBqaXQvSklURGl2R2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJ
VERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZSk6CisgICAgICAgICog
aml0L0pJVE1hdGhJQy5oOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OkpJVE1hdGhJQyk6Cisg
ICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpK
SVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OmlzQmluYXJ5UHJv
ZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6SklUQmluYXJ5TWF0aElDOjpKSVRCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjppc1VuYXJ5UHJvZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6
SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAgICAgICAgKiBqaXQvSklUTXVsR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVROZWdHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJ
VFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBsbGludC9M
TEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBl
OjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAg
IChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBGaWd1cmUgb3V0IG1pc3NpbmcgcHJlcGFyZUNh
bGxPcGVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cml0aFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJv
ZmlsZS5jcHAKaW5kZXggOTk5OTMzYjhjMGUuLjdmNDZmNzNmYzllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcApAQCAtMzIsNyArMzIsOCBA
QAogbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQotdm9pZCBBcml0aFByb2ZpbGU6
OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBU
YWdSZWdpc3RlcnNNb2RlIG1vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2
b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhl
bHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQogewog
ICAgIGlmICghc2hvdWxkRW1pdFNldERvdWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJp
YygpICYmICFzaG91bGRFbWl0U2V0QmlnSW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDQx
ICs1OSw1MSBAQCB2b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZwogICAgIGRvbmUubGluaygmaml0KTsK
IH0KIAotYm9vbCBBcml0aFByb2ZpbGU6OnNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdAordGVt
cGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRU
eXBlPjo6c2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0CiB7Ci0gICAgdWludDMyX3QgbWFzayA9
IEFyaXRoUHJvZmlsZTo6SW50MzJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxv
dyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVy
b0RvdWJsZTsKKyAgICB1aW50MzJfdCBtYXNrID0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZs
b3cgfCBOZWdaZXJvRG91YmxlIHwgTm9uTmVnWmVyb0RvdWJsZTsKICAgICByZXR1cm4gKG1fYml0
cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0RG91Ymxl
KENDYWxsSGVscGVycyYgaml0KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBl
Pgordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldERvdWJsZShDQ2FsbEhl
bHBlcnMmIGppdCkgY29uc3QKIHsKICAgICBpZiAoc2hvdWxkRW1pdFNldERvdWJsZSgpKQotICAg
ICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Oklu
dDMyT3ZlcmZsb3cgfCBBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cgfCBBcml0aFByb2ZpbGU6
Ok5lZ1plcm9Eb3VibGUgfCBBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhl
bHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9y
MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZs
b3cgfCBOZWdaZXJvRG91YmxlIHwgTm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJz
b2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwogfQogCi1ib29sIEFyaXRoUHJvZmlsZTo6
c2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0Zmll
bGRUeXBlPgorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5v
bk51bWVyaWMoKSBjb25zdAogewogICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6Ok5v
bk51bWVyaWM7CiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCi1ib29s
IEFyaXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91
bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKIHsKICAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9m
aWxlOjpCaWdJbnQ7CiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCi12
b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJiBqaXQpIGNv
bnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QK
IHsKICAgICBpZiAoc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSkKLSAgICAgICAgaml0Lm9yMzIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOb25OdW1lcmljKSwgQ0Nh
bGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGpp
dC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKE5vbk51bWVyaWMpLCBDQ2FsbEhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKIH0KIAotdm9pZCBBcml0aFBy
b2ZpbGU6OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChzaG91bGRF
bWl0U2V0QmlnSW50KCkpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKEFyaXRoUHJvZmlsZTo6QmlnSW50KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEJpZ0ludCksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJp
dHMoKSkpOwogfQorCisvLyBHZW5lcmF0ZSB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBmdW5j
dGlvbnMgYWJvdmUgZm9yIFVuYXJ5QXJpdGhQcm9maWxlL0JpbmFyeUFyaXRoUHJvZmlsZQorLy8g
SWYgY2hhbmdpbmcgdGhlIHNpemUgb2YgZWl0aGVyLCBhZGQgdGhlIGNvcnJlc3BvbmRpbmcgbGlu
ZXMgaGVyZS4KK3RlbXBsYXRlIGNsYXNzIEFyaXRoUHJvZmlsZTx1aW50MTZfdD47CiAjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkBAIC0xMDEsNyArMTEyLDggQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi12b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQXJpdGhQcm9maWxlJiBwcm9maWxlKQor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgY29uc3QgQXJpdGhQcm9maWxlPFQ+JiBwcm9maWxlKQogewogICAgIGNvbnN0IGNoYXIqIHNl
cGFyYXRvciA9ICIiOwogCkBAIC0xMzUsMTkgKzE0NywzMCBAQCB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQXJpdGhQcm9maWxlJiBwcm9maWxlKQogICAgICAgICAg
ICAgc2VwYXJhdG9yID0gInwiOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChwcm9maWxlLnRv
b2tTcGVjaWFsRmFzdFBhdGgoKSkKLSAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIlRvb2sg
c3BlY2lhbCBmYXN0IHBhdGguIik7CiAgICAgb3V0LnByaW50KCI+Iik7Cit9CisKK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSYgcHJv
ZmlsZSkKK3sKKyAgICBwcmludEludGVybmFsKG91dCwgc3RhdGljX2Nhc3Q8QXJpdGhQcm9maWxl
PFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4+KHByb2ZpbGUpKTsKKworICAgIG91dC5wcmludCgiIEFy
ZyBPYnNlcnZlZFR5cGU6PCIpOworICAgIG91dC5wcmludChwcm9maWxlLmFyZ09ic2VydmVkVHlw
ZSgpKTsKKyAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSkKK3sKKyAgICBw
cmludEludGVybmFsKG91dCwgc3RhdGljX2Nhc3Q8QXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9m
aWxlQmFzZT4+KHByb2ZpbGUpKTsKKworICAgIGlmIChwcm9maWxlLnRvb2tTcGVjaWFsRmFzdFBh
dGgoKSkKKyAgICAgICAgb3V0LnByaW50KCIgVG9vayBzcGVjaWFsIGZhc3QgcGF0aC4iKTsKIAog
ICAgIG91dC5wcmludCgiIExIUyBPYnNlcnZlZFR5cGU6PCIpOwogICAgIG91dC5wcmludChwcm9m
aWxlLmxoc09ic2VydmVkVHlwZSgpKTsKICAgICBvdXQucHJpbnQoIj4gUkhTIE9ic2VydmVkVHlw
ZTo8Iik7CiAgICAgb3V0LnByaW50KHByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkpOwogICAgIG91
dC5wcmludCgiPiIpOwotCi0gICAgb3V0LnByaW50KCIgTEhTIFJlc3VsdFR5cGU6PCIsIFJhd1Bv
aW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2ZpbGUu
bGhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7Ci0gICAgb3V0LnByaW50KCI+IFJIUyBSZXN1bHRU
eXBlOjwiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0
cl90Pihwcm9maWxlLnJoc1Jlc3VsdFR5cGUoKS5iaXRzKCkpKSkpOwotICAgIG91dC5wcmludCgi
PiIpOwogfQogCiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSlND
OjpPYnNlcnZlZFR5cGUmIG9ic2VydmVkVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Bcml0aFByb2ZpbGUuaAppbmRleCBmY2M0ZTI4MThiZS4uY2FkOTlmNDhiYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKQEAgLTY2
LDExOSArNjYsMjE3IEBAIHByaXZhdGU6CiAgICAgdWludDhfdCBtX2JpdHMgeyAwIH07CiB9Owog
Ci1zdHJ1Y3QgQXJpdGhQcm9maWxlIHsKLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBudW1iZXJPZkZsYWdCaXRzID0gNjsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IHJoc1Jlc3VsdFR5cGVTaGlmdCA9IG51bWJlck9mRmxhZ0JpdHM7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50MzJfdCBsaHNSZXN1bHRUeXBlU2hpZnQgPSByaHNSZXN1bHRUeXBlU2hpZnQg
KyBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3QgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSBsaHNSZXN1bHRUeXBlU2hpZnQgKyBSZXN1bHRUeXBl
OjpudW1CaXRzTmVlZGVkOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbGhzT2JzZXJ2
ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0
c05lZWRlZDsKLQotICAgIHN0YXRpY19hc3NlcnQoT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVk
ID09IDMsICJXZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9uIGFib3V0IHRoYXQgaGVyZS4iKTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGNsZWFyUmhzT2JzZXJ2ZWRUeXBlQml0TWFzayA9
IHN0YXRpY19jYXN0PHVpbnQzMl90Pih+KCgxIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KSB8ICgx
IDw8IChyaHNPYnNlcnZlZFR5cGVTaGlmdCArIDEpKSB8ICgxIDw8IChyaHNPYnNlcnZlZFR5cGVT
aGlmdCArIDIpKSkpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY2xlYXJMaHNPYnNl
cnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KH4oKDEgPDwgbGhzT2JzZXJ2
ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwg
KGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IHJlc3VsdFR5cGVNYXNrID0gKDEgPDwgUmVzdWx0VHlwZTo6bnVtQml0c05lZWRlZCkg
LSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgb2JzZXJ2ZWRUeXBlTWFzayA9ICgx
IDw8IE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOwordGVtcGxhdGUgPHR5cGVuYW1l
IEJpdGZpZWxkVHlwZT4KK2NsYXNzIEFyaXRoUHJvZmlsZSB7CitwdWJsaWM6CisgICAgZW51bSBP
YnNlcnZlZFJlc3VsdHMgeworICAgICAgICBOb25OZWdaZXJvRG91YmxlID0gMSA8PCAwLAorICAg
ICAgICBOZWdaZXJvRG91YmxlICAgID0gMSA8PCAxLAorICAgICAgICBOb25OdW1lcmljICAgICAg
ID0gMSA8PCAyLAorICAgICAgICBJbnQzMk92ZXJmbG93ICAgID0gMSA8PCAzLAorICAgICAgICBJ
bnQ1Mk92ZXJmbG93ICAgID0gMSA8PCA0LAorICAgICAgICBCaWdJbnQgICAgICAgICAgID0gMSA8
PCA1LAorICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNlcnZlZFJlc3Vs
dHNOdW1CaXRzTmVlZGVkID0gNjsKIAotICAgIGVudW0gY2xhc3MgQ29uc3RhbnRUYWcgeyBDb25z
dGFudCB9OworICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgY29uc3QgeyByZXR1cm4gaGFz
Qml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBCaWdJ
bnQpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFzQml0
cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2Vy
dmVOb25OZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91
YmxlKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKE5lZ1plcm9Eb3VibGUpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlTm9uTnVtZXJp
YygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTnVtZXJpYyk7IH0KKyAgICBib29sIGRpZE9i
c2VydmVCaWdJbnQoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEJpZ0ludCk7IH0KKyAgICBib29s
IGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhJbnQzMk92
ZXJmbG93KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSBjb25zdCB7IHJl
dHVybiBoYXNCaXRzKEludDUyT3ZlcmZsb3cpOyB9CiAKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQzMl90IHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlw
ZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgPD0g
KHNpemVvZih1aW50MzJfdCkgKiA4KSAtIDEsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7
Ci0gICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVhckxoc09ic2Vy
dmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdC4iKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2JzZXJ2ZWRUeXBl
Qml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4iKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCA+IH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJU
aGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hv
dWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKKyAgICB2b2lkIHNldE9ic2VydmVkTm9uTmVnWmVyb0Rv
dWJsZSgpIHsgc2V0Qml0KE5vbk5lZ1plcm9Eb3VibGUpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZl
ZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChOZWdaZXJvRG91YmxlKTsgfQorICAgIHZvaWQgc2V0
T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoTm9uTnVtZXJpYyk7IH0KKyAgICB2b2lkIHNl
dE9ic2VydmVkQmlnSW50KCkgeyBzZXRCaXQoQmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2
ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQoSW50MzJPdmVyZmxvdyk7IH0KKyAgICB2b2lkIHNl
dE9ic2VydmVkSW50NTJPdmVyZmxvdygpIHsgc2V0Qml0KEludDUyT3ZlcmZsb3cpOyB9CiAKLSAg
ICBBcml0aFByb2ZpbGUoUmVzdWx0VHlwZSBhcmcpCi0gICAgICAgIDogQXJpdGhQcm9maWxlKENv
bnN0YW50VGFnOjpDb25zdGFudCwgYXJnKQorICAgIHZvaWQgb2JzZXJ2ZVJlc3VsdChKU1ZhbHVl
IHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGxoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0g
YXJnLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkp
OwotICAgICAgICBBU1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAg
aWYgKHZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHZh
bHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBJbnQzMk92ZXJmbG93IHwg
SW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc0Jp
Z0ludCgpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gQmlnSW50OworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIG1fYml0cyB8PSBOb25OdW1lcmljOwogICAgIH0KIAot
ICAgIEFyaXRoUHJvZmlsZShSZXN1bHRUeXBlIGxocywgUmVzdWx0VHlwZSByaHMpCi0gICAgICAg
IDogQXJpdGhQcm9maWxlKENvbnN0YW50VGFnOjpDb25zdGFudCwgbGhzLCByaHMpCisgICAgY29u
c3Qgdm9pZCogYWRkcmVzc09mQml0cygpIGNvbnN0IHsgcmV0dXJuICZtX2JpdHM7IH0KKworI2lm
IEVOQUJMRShKSVQpCisgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cg
fCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQgc2VlcyBhCisgICAgLy8g
ZG91YmxlLiBTZXRzIE5vbk51bWVyaWMgaWYgaXQgc2VlcyBhIG5vbi1udW1lcmljLgorICAgIHZv
aWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIFRhZ1JlZ2lz
dGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKKworICAgIC8vIFNldHMgKEludDMyT3ZlcmZs
b3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgor
ICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0OworICAgIHZvaWQgZW1pdFNldERv
dWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKworICAgIC8vIFNldHMgTm9uTnVtYmVyLgorICAg
IHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisgICAgYm9vbCBz
aG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0OworCisgICAgLy8gU2V0cyBCaWdJbnQKKyAg
ICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisgICAgYm9vbCBzaG91
bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworICAgIGNv
bnN0ZXhwciB1aW50MzJfdCBiaXRzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzOyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICBBcml0aFByb2ZpbGUoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGxoc1Jlc3Vs
dFR5cGUoKS5iaXRzKCkgPT0gbGhzLmJpdHMoKSAmJiByaHNSZXN1bHRUeXBlKCkuYml0cygpID09
IHJocy5iaXRzKCkpOwotICAgICAgICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgp
KTsKLSAgICAgICAgQVNTRVJUKHJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQog
Ci0gICAgQXJpdGhQcm9maWxlKE9wZXJhbmRUeXBlcyB0eXBlcykKLSAgICAgICAgOiBBcml0aFBy
b2ZpbGUodHlwZXMuZmlyc3QoKSwgdHlwZXMuc2Vjb25kKCkpCi0gICAgeyB9CisgICAgYm9vbCBo
YXNCaXRzKGludCBtYXNrKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBtYXNrOyB9CisgICAgdm9p
ZCBzZXRCaXQoaW50IG1hc2spIHsgbV9iaXRzIHw9IG1hc2s7IH0KKworICAgIEJpdGZpZWxkVHlw
ZSBtX2JpdHMgeyAwIH07IC8vIFdlIHRha2UgY2FyZSB0byB1cGRhdGUgbV9iaXRzIG9ubHkgaW4g
YSBzaW5nbGUgb3BlcmF0aW9uLiBXZSBkb24ndCBldmVyIHN0b3JlIGFuIGluY29uc2lzdGVudCBi
aXQgcmVwcmVzZW50YXRpb24gdG8gaXQuCit9OworCisvKiBUaGlzIGNsYXNzIHN0b3JlcyB0aGUg
Zm9sbG93aW5nIGNvbXBvbmVudHMgaW4gMTYgYml0czoKKyAqIC0gT2JzZXJ2ZWRSZXN1bHRzCisg
KiAtIE9ic2VydmVkVHlwZSBmb3IgdGhlIGFyZ3VtZW50CisgKi8KK3VzaW5nIFVuYXJ5QXJpdGhQ
cm9maWxlQmFzZSA9IHVpbnQxNl90OworY2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMg
QXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRz
TmVlZGVkOwogCi0gICAgQXJpdGhQcm9maWxlKCkgPSBkZWZhdWx0OworICAgIHN0YXRpY19hc3Nl
cnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPD0g
c2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHRoZSB0
eXBlIG9mIHRoZSB1bmRlcmx5aW5nIGJpdGZpZWxkLiIpOwogCi0gICAgc3RhdGljIGNvbnN0ZXhw
ciBBcml0aFByb2ZpbGUgZnJvbUludCh1aW50MzJfdCBiaXRzKQorICAgIHN0YXRpYyBjb25zdGV4
cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFyQXJnT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0
YXRpY19jYXN0PFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigwYjExMSA8PCBhcmdPYnNlcnZlZFR5
cGVTaGlmdCkpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ug
b2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgLSAx
OworCitwdWJsaWM6CisgICAgVW5hcnlBcml0aFByb2ZpbGUoKQorICAgICAgICA6IEFyaXRoUHJv
ZmlsZTxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBBcml0
aFByb2ZpbGUgeyBDb25zdGFudFRhZzo6Q29uc3RhbnQsIGJpdHMgfTsKKyAgICAgICAgQVNTRVJU
KGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChhcmdPYnNlcnZl
ZFR5cGUoKS5pc0VtcHR5KCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQ
cm9maWxlIG9ic2VydmVkVW5hcnlJbnQoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0
aFByb2ZpbGVCYXNlIG9ic2VydmVkSW50Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIg
T2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9
OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IG9ic2VydmVkSW50MzIuYml0cygp
IDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0OwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0g
MHg4MDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNv
bnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IG9ic2VydmVkSW50MzIuYml0cygp
IDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRVbmFyeU51bWJlcigpCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWROdW1iZXJC
aXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWROdW1i
ZXIgeyBPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVp
bnQzMl90IGJpdHMgPSBvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQ7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDEwMDAwMDAsICIiKTsKLSAgICAg
ICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJv
ZmlsZUJhc2UgYml0cyA9IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBhcmdPYnNlcnZlZFR5cGVT
aGlmdDsKKyAgICAgICAgcmV0dXJuIGJpdHM7CisgICAgfQorCisgICAgY29uc3RleHByIE9ic2Vy
dmVkVHlwZSBhcmdPYnNlcnZlZFR5cGUoKSBjb25zdCB7IHJldHVybiBPYnNlcnZlZFR5cGUoKG1f
Yml0cyA+PiBhcmdPYnNlcnZlZFR5cGVTaGlmdCkgJiBvYnNlcnZlZFR5cGVNYXNrKTsgfQorICAg
IHZvaWQgc2V0QXJnT2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQorICAgIHsKKyAgICAg
ICAgVW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSBtX2JpdHM7CisgICAgICAgIGJpdHMgJj0g
Y2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrOworICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygp
IDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAgICBtX2JpdHMgPSBiaXRzOworICAgICAg
ICBBU1NFUlQoYXJnT2JzZXJ2ZWRUeXBlKCkgPT0gdHlwZSk7CisgICAgfQorCisgICAgdm9pZCBh
cmdTYXdJbnQzMigpIHsgc2V0QXJnT2JzZXJ2ZWRUeXBlKGFyZ09ic2VydmVkVHlwZSgpLndpdGhJ
bnQzMigpKTsgfQorICAgIHZvaWQgYXJnU2F3TnVtYmVyKCkgeyBzZXRBcmdPYnNlcnZlZFR5cGUo
YXJnT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigpKTsgfQorICAgIHZvaWQgYXJnU2F3Tm9uTnVt
YmVyKCkgeyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0aE5vbk51bWJl
cigpKTsgfQorCisgICAgdm9pZCBvYnNlcnZlQXJnKEpTVmFsdWUgYXJnKQorICAgIHsKKyAgICAg
ICAgVW5hcnlBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlzOworICAgICAgICBpZiAoYXJn
LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGlmIChhcmcuaXNJbnQzMigpKQorICAgICAgICAg
ICAgICAgIG5ld1Byb2ZpbGUuYXJnU2F3SW50MzIoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBuZXdQcm9maWxlLmFyZ1Nhd051bWJlcigpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIG5ld1Byb2ZpbGUuYXJnU2F3Tm9uTnVtYmVyKCk7CisKKyAgICAgICAgbV9iaXRz
ID0gbmV3UHJvZmlsZS5iaXRzKCk7CisgICAgfQorCisgICAgYm9vbCBpc09ic2VydmVkVHlwZUVt
cHR5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhcmdPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7
CisgICAgfQorCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
fTsKKworLyogVGhpcyBjbGFzcyBzdG9yZXMgdGhlIGZvbGxvd2luZyBjb21wb25lbnRzIGluIDE2
IGJpdHM6CisgKiAtIE9ic2VydmVkUmVzdWx0cworICogLSBPYnNlcnZlZFR5cGUgZm9yIHJpZ2h0
LWhhbmQtc2lkZQorICogLSBPYnNlcnZlZFR5cGUgZm9yIGxlZnQtaGFuZC1zaWRlCisgKiAtIGEg
Yml0IHVzZWQgYnkgZGl2aXNpb24gdG8gaW5kaWNhdGUgd2hldGhlciBhIHNwZWNpYWwgZmFzdCBw
YXRoIHdhcyB0YWtlbgorICovCit1c2luZyBCaW5hcnlBcml0aFByb2ZpbGVCYXNlID0gdWludDE2
X3Q7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPEJpbmFy
eUFyaXRoUHJvZmlsZUJhc2U+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHJoc09i
c2VydmVkVHlwZVNoaWZ0ID0gb2JzZXJ2ZWRSZXN1bHRzTnVtQml0c05lZWRlZDsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVpbnQzMl90IGxoc09ic2VydmVkVHlwZVNoaWZ0ID0gcmhzT2JzZXJ2ZWRU
eXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQ7CisKKyAgICBzdGF0aWNfYXNz
ZXJ0KE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA9PSAzLCAiV2UgbWFrZSBhIGhhcmQgYXNz
dW1wdGlvbiBhYm91dCB0aGF0IGhlcmUuIik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlB
cml0aFByb2ZpbGVCYXNlIGNsZWFyUmhzT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0
PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQp
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJMaHNP
YnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4o
figwYjExMSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkpOworCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkVHlwZU1hc2sgPSAoMSA8PCBPYnNlcnZl
ZFR5cGU6Om51bUJpdHNOZWVkZWQpIC0gMTsKKworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4
cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBzcGVjaWFsRmFzdFBhdGhCaXQgPSAxIDw8IChsaHNP
YnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCk7CisgICAgc3Rh
dGljX2Fzc2VydCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNO
ZWVkZWQgKyAxKSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxk
IGZpdCBpbiBhIHVpbnQzMl90LiIpOworICAgIHN0YXRpY19hc3NlcnQoIShzcGVjaWFsRmFzdFBh
dGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJpdHMgc2hvdWxk
IG5vdCBpbnRlcnNlY3QuIik7CisgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhCaXQg
JiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBpbnRlcnNl
Y3QuIik7CisgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhCaXQgPiB+Y2xlYXJMaHNP
YnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdCBhbmQg
c3BlY2lhbEZhc3RQYXRoQml0IHNob3VsZCBiZSBhIGhpZ2hlciBiaXQuIik7CisKKyAgICBCaW5h
cnlBcml0aFByb2ZpbGUoKQorICAgICAgICA6IEFyaXRoUHJvZmlsZTxCaW5hcnlBcml0aFByb2Zp
bGVCYXNlPiAoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1w
dHkoKSk7CisgICAgICAgIEFTU0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwogICAg
IH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZEJpbmFyeUludElu
dCgpCisKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2
ZWRJbnRJbnRCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2Jz
ZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0
ZXhwciB1aW50MzJfdCBiaXRzID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVk
VHlwZVNoaWZ0KSB8IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlm
dCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDkwMDAwMCwgIiIpOwotICAgICAg
ICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJv
ZmlsZUJhc2UgYml0cyA9IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVT
aGlmdCkgfCAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOwor
ICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFBy
b2ZpbGUgb2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmlu
YXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJlckludEJpdHMoKQogICAgIHsKICAgICAg
ICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgp
LndpdGhOdW1iZXIoKSB9OwogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVk
SW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIg
dWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBl
U2hpZnQpIHwgKG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsK
LSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4MTEwMDAwMCwgIiIpOwotICAgICAgICBy
ZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmls
ZUJhc2UgYml0cyA9IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQpIHwgKG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKKyAg
ICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9m
aWxlIG9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCkKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFy
eUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAg
IGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53
aXRoTnVtYmVyKCkgfTsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZElu
dDMyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVp
bnQzMl90IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0g
ICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweGEwMDAwMCwgIiIpOwotICAgICAgICByZXR1
cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgYml0cyA9IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkg
fCAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKKyAgICAg
ICAgcmV0dXJuIGJpdHM7CiAgICAgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxl
IG9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFy
eUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWROdW1iZXJOdW1iZXJCaXRzKCkKICAgICB7CiAgICAg
ICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUo
KS53aXRoTnVtYmVyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2Jz
ZXJ2ZWROdW1iZXIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51
bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KGJpdHMgPT0gMHgxMjAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMp
OworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2Vy
dmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1i
ZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7
CiAgICAgfQogCi0gICAgZW51bSBPYnNlcnZlZFJlc3VsdHMgewotICAgICAgICBOb25OZWdaZXJv
RG91YmxlID0gMSA8PCAwLAotICAgICAgICBOZWdaZXJvRG91YmxlICAgID0gMSA8PCAxLAotICAg
ICAgICBOb25OdW1lcmljICAgICAgID0gMSA8PCAyLAotICAgICAgICBJbnQzMk92ZXJmbG93ICAg
ID0gMSA8PCAzLAotICAgICAgICBJbnQ1Mk92ZXJmbG93ICAgID0gMSA8PCA0LAotICAgICAgICBC
aWdJbnQgICAgICAgICAgID0gMSA8PCA1LAotICAgIH07Ci0KLSAgICBSZXN1bHRUeXBlIGxoc1Jl
c3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBSZXN1bHRUeXBlKChtX2JpdHMgPj4gbGhzUmVzdWx0
VHlwZVNoaWZ0KSAmIHJlc3VsdFR5cGVNYXNrKTsgfQotICAgIFJlc3VsdFR5cGUgcmhzUmVzdWx0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUoKG1fYml0cyA+PiByaHNSZXN1bHRUeXBl
U2hpZnQpICYgcmVzdWx0VHlwZU1hc2spOyB9Ci0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBl
IGxoc09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+
IGxoc09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgY29uc3Rl
eHByIE9ic2VydmVkVHlwZSByaHNPYnNlcnZlZFR5cGUoKSBjb25zdCB7IHJldHVybiBPYnNlcnZl
ZFR5cGUoKG1fYml0cyA+PiByaHNPYnNlcnZlZFR5cGVTaGlmdCkgJiBvYnNlcnZlZFR5cGVNYXNr
KTsgfQogICAgIHZvaWQgc2V0TGhzT2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAg
IHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9IG1fYml0czsKKyAgICAgICAgQmluYXJ5QXJpdGhQ
cm9maWxlQmFzZSBiaXRzID0gbV9iaXRzOwogICAgICAgICBiaXRzICY9IGNsZWFyTGhzT2JzZXJ2
ZWRUeXBlQml0TWFzazsKICAgICAgICAgYml0cyB8PSB0eXBlLmJpdHMoKSA8PCBsaHNPYnNlcnZl
ZFR5cGVTaGlmdDsKICAgICAgICAgbV9iaXRzID0gYml0czsKQEAgLTE4Nyw3ICsyODUsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldFJoc09ic2VydmVkVHlwZShPYnNlcnZlZFR5cGUgdHlwZSkK
ICAgICB7IAotICAgICAgICB1aW50MzJfdCBiaXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlB
cml0aFByb2ZpbGVCYXNlIGJpdHMgPSBtX2JpdHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJSaHNP
YnNlcnZlZFR5cGVCaXRNYXNrOwogICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IHJoc09i
c2VydmVkVHlwZVNoaWZ0OwogICAgICAgICBtX2JpdHMgPSBiaXRzOwpAQCAtMTk2LDM5ICsyOTQs
NiBAQCBwdWJsaWM6CiAKICAgICBib29sIHRvb2tTcGVjaWFsRmFzdFBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBzcGVjaWFsRmFzdFBhdGhCaXQ7IH0KIAotICAgIGJvb2wgZGlkT2JzZXJ2
ZU5vbkludDMyKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVn
WmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBCaWdJbnQpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZl
RG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVy
b0RvdWJsZSk7IH0KLSAgICBib29sIGRpZE9ic2VydmVOb25OZWdaZXJvRG91YmxlKCkgY29uc3Qg
eyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2
ZU5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5lZ1plcm9Eb3VibGUpOyB9
Ci0gICAgYm9vbCBkaWRPYnNlcnZlTm9uTnVtZXJpYygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMo
Tm9uTnVtZXJpYyk7IH0KLSAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKEJpZ0ludCk7IH0KLSAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkg
Y29uc3QgeyByZXR1cm4gaGFzQml0cyhJbnQzMk92ZXJmbG93KTsgfQotICAgIGJvb2wgZGlkT2Jz
ZXJ2ZUludDUyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDUyT3ZlcmZsb3cp
OyB9Ci0KLSAgICB2b2lkIHNldE9ic2VydmVkTm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5v
bk5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7
IHNldEJpdChOZWdaZXJvRG91YmxlKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmlj
KCkgeyBzZXRCaXQoTm9uTnVtZXJpYyk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50KCkg
eyBzZXRCaXQoQmlnSW50KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkg
eyBzZXRCaXQoSW50MzJPdmVyZmxvdyk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkSW50NTJPdmVy
ZmxvdygpIHsgc2V0Qml0KEludDUyT3ZlcmZsb3cpOyB9Ci0KLSAgICBjb25zdCB2b2lkKiBhZGRy
ZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4gJm1fYml0czsgfQotCi0gICAgdm9pZCBvYnNlcnZl
UmVzdWx0KEpTVmFsdWUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewot
ICAgICAgICAgICAgbV9iaXRzIHw9IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9u
TmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAg
ICAgIG1fYml0cyB8PSBCaWdJbnQ7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9iaXRzIHw9IE5vbk51bWVyaWM7Ci0gICAgfQotCiAgICAgdm9pZCBsaHNTYXdJbnQz
MigpIHsgc2V0TGhzT2JzZXJ2ZWRUeXBlKGxoc09ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpKTsg
fQogICAgIHZvaWQgbGhzU2F3TnVtYmVyKCkgeyBzZXRMaHNPYnNlcnZlZFR5cGUobGhzT2JzZXJ2
ZWRUeXBlKCkud2l0aE51bWJlcigpKTsgfQogICAgIHZvaWQgbGhzU2F3Tm9uTnVtYmVyKCkgeyBz
ZXRMaHNPYnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aE5vbk51bWJlcigpKTsgfQpA
QCAtMjM4LDcgKzMwMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgb2JzZXJ2ZUxIUyhKU1ZhbHVl
IGxocykKICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7Cisg
ICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CiAgICAgICAgIGlm
IChsaHMuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgaWYgKGxocy5pc0ludDMyKCkpCiAgICAg
ICAgICAgICAgICAgbmV3UHJvZmlsZS5saHNTYXdJbnQzMigpOwpAQCAtMjU0LDcgKzMxOSw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIG9ic2VydmVMSFMobGhzKTsKIAotICAgICAgICBBcml0
aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUg
bmV3UHJvZmlsZSA9ICp0aGlzOwogICAgICAgICBpZiAocmhzLmlzTnVtYmVyKCkpIHsKICAgICAg
ICAgICAgIGlmIChyaHMuaXNJbnQzMigpKQogICAgICAgICAgICAgICAgIG5ld1Byb2ZpbGUucmhz
U2F3SW50MzIoKTsKQEAgLTI2Niw0NyArMzMxLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRz
ID0gbmV3UHJvZmlsZS5iaXRzKCk7CiAgICAgfQogCi0jaWYgRU5BQkxFKEpJVCkgICAgCi0gICAg
Ly8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQgc2VlcyBhCi0gICAgLy8gZG91YmxlLiBTZXRzIE5vbk51
bWVyaWMgaWYgaXQgc2VlcyBhIG5vbi1udW1lcmljLgotICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1
bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFn
UmVnaXN0ZXJzKTsKLSAgICAKLSAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVy
ZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKS4KLSAgICBib29sIHNob3Vs
ZEVtaXRTZXREb3VibGUoKSBjb25zdDsKLSAgICB2b2lkIGVtaXRTZXREb3VibGUoQ0NhbGxIZWxw
ZXJzJikgY29uc3Q7Ci0gICAgCi0gICAgLy8gU2V0cyBOb25OdW1iZXIuCi0gICAgdm9pZCBlbWl0
U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsKLSAgICBib29sIHNob3VsZEVtaXRT
ZXROb25OdW1lcmljKCkgY29uc3Q7Ci0KLSAgICAvLyBTZXRzIEJpZ0ludAotICAgIHZvaWQgZW1p
dFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKLSAgICBib29sIHNob3VsZEVtaXRTZXRC
aWdJbnQoKSBjb25zdDsKLSNlbmRpZiAvLyBFTkFCTEUoSklUKQotCi0gICAgY29uc3RleHByIHVp
bnQzMl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KLQotcHJpdmF0ZToKLSAgICBj
b25zdGV4cHIgZXhwbGljaXQgQXJpdGhQcm9maWxlKENvbnN0YW50VGFnLCB1aW50MzJfdCBiaXRz
KQotICAgICAgICA6IG1fYml0cyhiaXRzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIg
QXJpdGhQcm9maWxlKENvbnN0YW50VGFnLCBSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBtX2Jp
dHMoYXJnLmJpdHMoKSA8PCBsaHNSZXN1bHRUeXBlU2hpZnQpCisgICAgYm9vbCBpc09ic2VydmVk
VHlwZUVtcHR5KCkKICAgICB7CisgICAgICAgIHJldHVybiBsaHNPYnNlcnZlZFR5cGUoKS5pc0Vt
cHR5KCkgJiYgcmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOwogICAgIH0KIAotICAgIGNvbnN0
ZXhwciBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWcsIFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBl
IHJocykKLSAgICAgICAgOiBtX2JpdHMoKGxocy5iaXRzKCkgPDwgbGhzUmVzdWx0VHlwZVNoaWZ0
KSB8IChyaHMuYml0cygpIDw8IHJoc1Jlc3VsdFR5cGVTaGlmdCkpCi0gICAgewotICAgIH0KLQot
ICAgIGJvb2wgaGFzQml0cyhpbnQgbWFzaykgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgbWFzazsg
fQotICAgIHZvaWQgc2V0Qml0KGludCBtYXNrKSB7IG1fYml0cyB8PSBtYXNrOyB9Ci0KLSAgICB1
aW50MzJfdCBtX2JpdHMgeyAwIH07IC8vIFdlIHRha2UgY2FyZSB0byB1cGRhdGUgbV9iaXRzIG9u
bHkgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLiBXZSBkb24ndCBldmVyIHN0b3JlIGFuIGluY29uc2lz
dGVudCBiaXQgcmVwcmVzZW50YXRpb24gdG8gaXQuCi0KICAgICBmcmllbmQgY2xhc3MgSlNDOjpM
TEludE9mZnNldHNFeHRyYWN0b3I7CiB9OwogCkBAIC0zMTQsNyArMzQzLDggQEAgcHJpdmF0ZToK
IAogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNv
bnN0IEpTQzo6QXJpdGhQcm9maWxlJik7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
LCBjb25zdCBKU0M6OlVuYXJ5QXJpdGhQcm9maWxlJik7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mLCBjb25zdCBKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZSYpOwogdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpPYnNlcnZlZFR5cGUmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgppbmRleCBjMDg2YjhlYjNmMy4uYWM0YzgwZWU5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNDEsNiArNDEsNyBAQCB0
eXBlcyBbCiAgICAgOkpTVHlwZSwKICAgICA6SlNWYWx1ZSwKICAgICA6TExJbnRDYWxsTGlua0lu
Zm8sCisgICAgOlJlc3VsdFR5cGUsCiAgICAgOk9wZXJhbmRUeXBlcywKICAgICA6UHJvZmlsZVR5
cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LApAQCAtNTcsNyArNTgsOCBAQCB0
eXBlcyBbCiAKICAgICA6VmFsdWVQcm9maWxlLAogICAgIDpWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
QnVmZmVyLAotICAgIDpBcml0aFByb2ZpbGUsCisgICAgOlVuYXJ5QXJpdGhQcm9maWxlLAorICAg
IDpCaW5hcnlBcml0aFByb2ZpbGUsCiAgICAgOkFycmF5UHJvZmlsZSwKICAgICA6QXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSwKICAgICA6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUsCkBAIC0yODIsMTAg
KzI4NCw3IEBAIG9wX2dyb3VwIDpQcm9maWxlZEJpbmFyeU9wLAogICAgICAgICBvcGVyYW5kVHlw
ZXM6IE9wZXJhbmRUeXBlcywKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFyaXRo
UHJvZmlsZTogQXJpdGhQcm9maWxlCi0gICAgfSwKLSAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6
IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiA6b3BlcmFuZFR5cGVzCisgICAgICAgIGFyaXRoUHJv
ZmlsZTogQmluYXJ5QXJpdGhQcm9maWxlCiAgICAgfQogCiBvcF9ncm91cCA6VmFsdWVQcm9maWxl
ZEJpbmFyeU9wLApAQCAtMzY3LDEzICszNjYsMTAgQEAgb3AgOm5lZ2F0ZSwKICAgICBhcmdzOiB7
CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFs
UmVnaXN0ZXIsCi0gICAgICAgIG9wZXJhbmRUeXBlczogT3BlcmFuZFR5cGVzLAorICAgICAgICBy
ZXN1bHRUeXBlOiBSZXN1bHRUeXBlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAg
YXJpdGhQcm9maWxlOiBBcml0aFByb2ZpbGUsCi0gICAgfSwKLSAgICBtZXRhZGF0YV9pbml0aWFs
aXplcnM6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiA6b3BlcmFuZFR5cGVzCisgICAgICAgIGFy
aXRoUHJvZmlsZTogVW5hcnlBcml0aFByb2ZpbGUsCiAgICAgfQogCiBvcCA6bm90LApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA3ZTIxMTY4M2Q3
OS4uMDQ2MWE2Mzc3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC0xNDc4LDI1ICsxNDc4LDI1IEBAIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2Rl
QmxvY2s6OmFkZFN0dWJJbmZvKEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKICAgICByZXR1cm4gZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fc3R1YkluZm9zLmFkZChhY2Nlc3NUeXBlKTsKIH0KIAotSklU
QWRkSUMqIENvZGVCbG9jazo6YWRkSklUQWRkSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUp
CitKSVRBZGRJQyogQ29kZUJsb2NrOjphZGRKSVRBZGRJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAg
ICAgcmV0dXJuIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX2FkZElDcy5hZGQoYXJpdGhQcm9maWxl
KTsKIH0KIAotSklUTXVsSUMqIENvZGVCbG9jazo6YWRkSklUTXVsSUMoQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCitKSVRNdWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhCaW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CiAgICAgcmV0dXJuIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX211bElDcy5hZGQo
YXJpdGhQcm9maWxlKTsKIH0KIAotSklUU3ViSUMqIENvZGVCbG9jazo6YWRkSklUU3ViSUMoQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJ
QyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJuIGVuc3VyZUpJVERhdGEobG9ja2VyKS5t
X3N1YklDcy5hZGQoYXJpdGhQcm9maWxlKTsKIH0KIAotSklUTmVnSUMqIENvZGVCbG9jazo6YWRk
SklUTmVnSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVROZWdJQyogQ29kZUJsb2Nr
OjphZGRKSVROZWdJQyhVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0
YShsb2NrZXIpLm1fbmVnSUNzLmFkZChhcml0aFByb2ZpbGUpOwpAQCAtMzA4MywxNiArMzA4Mywx
OSBAQCBjb25zdCBJbnN0cnVjdGlvbiogQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNv
bnN0IEluc3RydWN0aW9uKiBwYykKICAgICByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQob2Zmc2V0
ICsgdGFyZ2V0KS5wdHIoKTsKIH0KIAotQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRoUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQorQmluYXJ5
QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5k
ZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewotICAgIHJldHVybiBhcml0aFByb2Zp
bGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKSk7
CisgICAgcmV0dXJuIGJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpKTsKIH0KIAotQXJpdGhQcm9maWxlKiBDb2RlQmxv
Y2s6OmFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKK1VuYXJ5QXJpdGhQ
cm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgcmV0dXJuIHVuYXJ5QXJpdGhQcm9maWxl
Rm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCkpOwor
fQorCitCaW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9y
UEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQogewogICAgIHN3aXRjaCAocGMtPm9wY29kZUlEKCkp
IHsKLSAgICBjYXNlIG9wX25lZ2F0ZToKLSAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdhdGU+
KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CiAgICAgY2FzZSBvcF9hZGQ6CiAgICAg
ICAgIHJldHVybiAmcGMtPmFzPE9wQWRkPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJpdGhQcm9maWxl
OwogICAgIGNhc2Ugb3BfbXVsOgpAQCAtMzEwOCwxMSArMzExMSwyMyBAQCBBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQogICAg
IHJldHVybiBudWxscHRyOwogfQogCitVbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjp1bmFy
eUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBzd2l0Y2gg
KHBjLT5vcGNvZGVJRCgpKSB7CisgICAgY2FzZSBvcF9uZWdhdGU6CisgICAgICAgIHJldHVybiAm
cGMtPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJpdGhQcm9maWxlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQor
CiBib29sIENvZGVCbG9jazo6Y291bGRUYWtlU3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4KQogewogICAgIGlmICghaGFzQmFzZWxpbmVKSVRQcm9maWxpbmco
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEFyaXRoUHJvZmlsZSogcHJvZmlsZSA9IGFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgQmluYXJ5QXJp
dGhQcm9maWxlKiBwcm9maWxlID0gYmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChi
eXRlY29kZUluZGV4KTsKICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gcHJvZmlsZS0+dG9va1NwZWNpYWxGYXN0UGF0aCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDk5NmE4N2QwOTNlLi4xOGQ3ZDll
NWNlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAt
ODMsNiArODMsOCBAQCBzdHJ1Y3QgT1NSRXhpdFN0YXRlOwogfSAvLyBuYW1lc3BhY2UgREZHCiAj
ZW5kaWYKIAorY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2Zp
bGU7CiBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7
CiBjbGFzcyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOwpAQCAtOTYsNyArOTgsNiBAQCBjbGFz
cyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90Owog
Ci1zdHJ1Y3QgQXJpdGhQcm9maWxlOwogc3RydWN0IE9wQ2F0Y2g7CiAKIGVudW0gUmVvcHRpbWl6
YXRpb25Nb2RlIHsgRG9udENvdW50UmVvcHRpbWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRpb24g
fTsKQEAgLTI3OSwyMiArMjgwLDIyIEBAIHB1YmxpYzoKICAgICB9CiAgICAgSklURGF0YSYgZW5z
dXJlSklURGF0YVNsb3coY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJik7CiAKLSAgICBKSVRBZGRJ
QyogYWRkSklUQWRkSUMoQXJpdGhQcm9maWxlKik7Ci0gICAgSklUTXVsSUMqIGFkZEpJVE11bElD
KEFyaXRoUHJvZmlsZSopOwotICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhBcml0aFByb2ZpbGUq
KTsKLSAgICBKSVRTdWJJQyogYWRkSklUU3ViSUMoQXJpdGhQcm9maWxlKik7CisgICAgSklUQWRk
SUMqIGFkZEpJVEFkZElDKEJpbmFyeUFyaXRoUHJvZmlsZSopOworICAgIEpJVE11bElDKiBhZGRK
SVRNdWxJQyhCaW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBKSVROZWdJQyogYWRkSklUTmVnSUMo
VW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBKSVRTdWJJQyogYWRkSklUU3ViSUMoQmluYXJ5QXJp
dGhQcm9maWxlKik7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFt
ZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVEFk
ZEdlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBKSVRBZGRJQyogYWRkTWF0aElDKEFyaXRo
UHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUQWRkSUMocHJvZmlsZSk7IH0KKyAgICBK
SVRBZGRJQyogYWRkTWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4g
YWRkSklUQWRkSUMocHJvZmlsZSk7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0
b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVy
YXRvciwgSklUTXVsR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVE11bElDKiBhZGRN
YXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRNdWxJQyhwcm9maWxl
KTsgfQorICAgIEpJVE11bElDKiBhZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxl
KSB7IHJldHVybiBhZGRKSVRNdWxJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3NhbWU8R2VuZXJhdG9yLCBKSVROZWdHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklU
TmVnSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE5l
Z0lDKHByb2ZpbGUpOyB9CisgICAgSklUTmVnSUMqIGFkZE1hdGhJQyhVbmFyeUFyaXRoUHJvZmls
ZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTmVnSUMocHJvZmlsZSk7IH0KIAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUU3ViR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBl
PgotICAgIEpJVFN1YklDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVy
biBhZGRKSVRTdWJJQyhwcm9maWxlKTsgfQorICAgIEpJVFN1YklDKiBhZGRNYXRoSUMoQmluYXJ5
QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRTdWJJQyhwcm9maWxlKTsgfQog
CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGFkZFN0dWJJbmZvKEFjY2Vzc1R5cGUpOwogCkBAIC00
OTcsOCArNDk4LDEwIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGZvckVhY2hPYmplY3RBbGxvY2F0aW9uUHJvZmlsZShjb25zdCBGdW5jdG9yJik7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoTExJbnRDYWxsTGlua0luZm8o
Y29uc3QgRnVuY3RvciYpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGVGb3JCeXRl
Y29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
Rm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7CisgICAgVW5hcnlB
cml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNv
bnN0IEluc3RydWN0aW9uKik7CisgICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9m
aWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAogICAgIGJvb2wgY291bGRUYWtlU3BlY2lh
bEFyaXRoRmFzdENhc2UoQnl0ZWNvZGVJbmRleCBieXRlY29kZU9mZnNldCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDlhYjc3MTM3YWE2Li5kNDFjZmMxMmI2NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCkBAIC0yMzYsNiArMjM2LDE4IEBA
IHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUg
JiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6
ZSBzaXplPgorc3RydWN0IEZpdHM8UmVzdWx0VHlwZSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxz
aXplb2YoUmVzdWx0VHlwZSkgIT0gc2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRz
PHVpbnQ4X3QsIHNpemU+IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZXN1bHRUeXBlKSA9
PSBzaXplb2YodWludDhfdCkpOworICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+
OworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUmVzdWx0VHlwZSB0eXBlKSB7IHJldHVybiBCYXNl
OjpjaGVjayh0eXBlLmJpdHMoKSk7IH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJn
ZXRUeXBlIGNvbnZlcnQoUmVzdWx0VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjb252ZXJ0KHR5
cGUuYml0cygpKTsgfQorCisgICAgc3RhdGljIFJlc3VsdFR5cGUgY29udmVydCh0eXBlbmFtZSBC
YXNlOjpUYXJnZXRUeXBlIHR5cGUpIHsgcmV0dXJuIFJlc3VsdFR5cGUoQmFzZTo6Y29udmVydCh0
eXBlKSk7IH0KK307CisKIHRlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPE9w
ZXJhbmRUeXBlcywgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoT3BlcmFuZFR5cGVzKSAh
PSBzaXplLCBzdGQ6OnRydWVfdHlwZT4+IHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcGVy
YW5kVHlwZXMpID09IHNpemVvZih1aW50MTZfdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
Y3BwCmluZGV4IDcxMDRkMDFhZTExLi4yYjY5ZjM2YzdmYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmNwcApAQCAtNjYsMTAgKzY2LDE2IEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVh
ZHk6IHsKLSAgICAgICAgdS5hcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVn
cywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKKyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVh
ZHk6IHsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0
LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOwogICAgICAgICByZXR1cm47Ci0gICAgfSB9
CisgICAgfQorCisgICAgY2FzZSBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1
LmJpbmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhh
dmVUYWdSZWdpc3RlcnMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KICAgICAKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtOTQsMTAgKzEwMCwxNiBAQCB2
b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKEpTVmFsdWUgdmFs
dWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYXNlIEFyaXRoUHJvZmlsZVJlYWR5
OiB7Ci0gICAgICAgIHUuYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICBj
YXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmls
ZS0+b2JzZXJ2ZVJlc3VsdCh2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9
CisKKyAgICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5
QXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLmgKaW5kZXggY2ZiODM0NzA2YWYuLjVkODFjNGM5MDBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmgKQEAgLTM2LDEwICszNiwxMSBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7
CiBjbGFzcyBDQ2FsbEhlbHBlcnM7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleTsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiBzdHJ1Y3QgVmFsdWVQcm9m
aWxlOwogCiBjbGFzcyBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHsKQEAgLTU3LDEyICs1
OCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9raW5kID0gTm9u
ZTsKICAgICB9Ci0gICAgCi0gICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShBcml0aFBy
b2ZpbGUqIHByb2ZpbGUpCisKKyAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKFVuYXJ5
QXJpdGhQcm9maWxlKiBwcm9maWxlKQorICAgIHsKKyAgICAgICAgaWYgKHByb2ZpbGUpIHsKKyAg
ICAgICAgICAgIG1fa2luZCA9IFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk7CisgICAgICAgICAgICB1
LnVuYXJ5QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBtX2tpbmQgPSBOb25lOworICAgIH0KKworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKQogICAgIHsKICAgICAgICAgaWYgKHByb2Zp
bGUpIHsKLSAgICAgICAgICAgIG1fa2luZCA9IEFyaXRoUHJvZmlsZVJlYWR5OwotICAgICAgICAg
ICAgdS5hcml0aFByb2ZpbGUgPSBwcm9maWxlOworICAgICAgICAgICAgbV9raW5kID0gQmluYXJ5
QXJpdGhQcm9maWxlUmVhZHk7CisgICAgICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZSA9IHBy
b2ZpbGU7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9
CkBAIC03OSw3ICs4OSw4IEBAIHByaXZhdGU6CiAgICAgZW51bSBLaW5kIHsKICAgICAgICAgTm9u
ZSwKICAgICAgICAgUmVhZHksCi0gICAgICAgIEFyaXRoUHJvZmlsZVJlYWR5LAorICAgICAgICBV
bmFyeUFyaXRoUHJvZmlsZVJlYWR5LAorICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeSwK
ICAgICAgICAgTGF6eU9wZXJhbmQKICAgICB9OwogICAgIApAQCAtOTAsNyArMTAxLDggQEAgcHJp
dmF0ZToKICAgICAgICAgeyB9CiAKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOwotICAg
ICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgVW5hcnlBcml0aFByb2Zp
bGUqIHVuYXJ5QXJpdGhQcm9maWxlOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFy
eUFyaXRoUHJvZmlsZTsKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrOwogICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZU9mZnNldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggMTU0YmQzY2ZiY2MuLjhlNTg1NzM4ZmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcApAQCAtMTY2NSwxNCArMTY2NSwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdE1vdmUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJu
IGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9w
Y29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgT3BlcmFu
ZFR5cGVzIHR5cGVzKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9w
KE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVz
dWx0VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX25v
dDoKICAgICAgICAgZW1pdFVuYXJ5T3A8T3BOb3Q+KGRzdCwgc3JjKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBvcF9uZWdhdGU6Ci0gICAgICAgIE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwg
c3JjLCB0eXBlcyk7CisgICAgICAgIE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9iaXRub3Q6CiAgICAgICAgIGVtaXRVbmFy
eU9wPE9wQml0bm90Pihkc3QsIHNyYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNDE5N2FiYzEyZTUuLjM4
ZTc3Y2RiMTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC02ODIsNyArNjgyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gZHN0OwogICAgICAgICB9CiAKLSAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdFVuYXJ5T3AoT3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjLCBPcGVyYW5kVHlwZXMpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5hcnlPcChPcGNv
ZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIFJlc3VsdFR5cGUpOwogCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJpbmFyeU9wPgogICAgICAgICBzdGQ6OmVuYWJsZV9p
Zl90PApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCmluZGV4IDJlMDNiZTBiN2M3Li4wNThmZTU5ZDcwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjEz
OSw3ICsyMTM5LDcgQEAgUmVnaXN0ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogewogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzcmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkpOwot
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpLCBPcGVyYW5kVHlwZXMobV9leHByLT5yZXN1
bHREZXNjcmlwdG9yKCkpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbmFyeU9wKG9wY29k
ZUlEKCksIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQoKSwgbV9leHBy
LT5yZXN1bHREZXNjcmlwdG9yKCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gVW5hcnlQbHVzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCAyMjM0NDVjMmQ5NC4uOGNiNzEwMDQxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC05NDIsNTYgKzk0Miw2MCBAQCBwcml2YXRl
OgogICAgICAgICBpZiAoIWlzWDg2KCkgJiYgKG5vZGUtPm9wKCkgPT0gQXJpdGhNb2QgfHwgbm9k
ZS0+b3AoKSA9PSBWYWx1ZU1vZCkpCiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKIAotICAgICAg
ICB7Ci0gICAgICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1
cnJlbnRJbmRleCk7Ci0gICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlKSB7Ci0gICAgICAgICAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aEFk
ZDoKLSAgICAgICAgICAgICAgICBjYXNlIEFyaXRoU3ViOgotICAgICAgICAgICAgICAgIGNhc2Ug
VmFsdWVBZGQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9k
ZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBjYXNlIFZhbHVl
TXVsOgotICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhNdWw6IHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50NTIpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVy
ZmxvdygpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIE92ZXJmbG93KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1l
cmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBO
ZWdhdGl2ZVplcm8pKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhO
b2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2Rl
LT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0lu
dCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2
ZUJpZ0ludFJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIFZhbHVlTmVnYXRlOgotICAgICAgICAgICAgICAg
IGNhc2UgQXJpdGhOZWdhdGU6IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmls
ZS0+bGhzT2JzZXJ2ZWRUeXBlKCkuc2F3TnVtYmVyKCkgfHwgYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlRG91YmxlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5v
ZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFz
ZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
SW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25O
dW1lcmljUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlk
T2JzZXJ2ZUJpZ0ludCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAg
IGNhc2UgQXJpdGhBZGQ6CisgICAgICAgIGNhc2UgQXJpdGhTdWI6CisgICAgICAgIGNhc2UgVmFs
dWVBZGQ6IHsKKyAgICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JC
eXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9m
aWxlKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmls
ZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
Tm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+
ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdz
KE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFZhbHVlTXVsOgorICAgICAgICBjYXNlIEFyaXRoTXVsOiB7CisgICAg
ICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleCht
X2N1cnJlbnRJbmRleCk7CisgICAgICAgICAgICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJ
bnQ1Mk92ZXJmbG93KCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5
T3ZlcmZsb3dJbnQ1Mik7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
SW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKKyAgICAgICAgICAgICAgICBub2RlLT5t
ZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGluZSk7CisgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZl
WmVybykpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0lu
QmFzZWxpbmUpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJs
ZSgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVS
ZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVy
aWMoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVt
ZXJpY1Jlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmln
SW50KCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0lu
dFJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZh
bHVlTmVnYXRlOgorICAgICAgICBjYXNlIEFyaXRoTmVnYXRlOiB7CisgICAgICAgICAgICBVbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgp
OworICAgICAgICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1i
ZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAg
ICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAg
IGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVT
dGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRp
dmVaZXJvKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJv
SW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50
MzJPdmVyZmxvdygpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJn
ZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAo
YXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5v
ZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAg
IGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBu
b2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xv
d0Nhc2UobV9jdXJyZW50SW5kZXgpKSB7CkBAIC0xMDMzLDggKzEwMzcsOCBAQCBwcml2YXRlOgog
ICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIG1ha2Ug
dGhpcyBtb3JlIGdyYW51bGFyLgogICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVy
Zmxvd0ludDMySW5CYXNlbGluZSB8IE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAg
IAotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJ
bmRleCk7CisKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgobV9jdXJyZW50SW5kZXgpOwogICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRP
YnNlcnZlQmlnSW50KCkpCiAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRl
eCBhZGJmNTAyNWNmMy4uOTllZWY2YWY5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCkBAIC0xNjUyLDcgKzE2NTIsOSBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlIEdyYXBoOjptZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKE5vZGUqIGN1cnJlbgog
ICAgICAgICAgICAgICAgIHJldHVybiAmcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0
ZWNvZGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKTsKIAogICAg
ICAgICAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoQXJpdGhQcm9maWxlKiByZXN1bHQgPSBwcm9maWxlZEJsb2Nr
LT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCkpKQorICAgICAgICAgICAgICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIHJl
c3VsdCA9IHByb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgo
bm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxl
KiByZXN1bHQgPSBwcm9maWxlZEJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5k
ZXgobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNDc0MTYx
NGM1N2IuLmFhNTI2YzgzMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzk5NCw3ICszOTk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUpCiAKICAgICBDb2RlQmxvY2sqIGJhc2Vs
aW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRl
eChieXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9
IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5
dGVjb2RlSW5kZXgpOwogICAgIEpJVEFkZElDKiBhZGRJQyA9IG1faml0LmNvZGVCbG9jaygpLT5h
ZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0g
b3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZTsKICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlv
biA9IG9wZXJhdGlvblZhbHVlQWRkOwpAQCAtNDAxOCw3ICs0MDE4LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKE5vZGUqIG5vZGUpCiAKICAgICAgICAgQ29kZUJsb2Nr
KiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICAgICAgSklUU3ViSUMqIHN1YklD
ID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAg
IGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAg
ICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKQEAg
LTQ2MTIsNyArNDYxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0
ZShOb2RlKiBub2RlKQogewogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2pp
dC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5
dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5l
Q29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwor
ICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+
dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJ
VE5lZ0lDKiBuZWdJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVROZWdJQyhhcml0aFByb2Zp
bGUpOwogICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVP
cHRpbWl6ZTsKICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRo
TmVnYXRlOwpAQCAtNDgzNSw3ICs0ODM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2Nr
ID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBi
YXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
OwogICAgIEpJVE11bElDKiBtdWxJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRNdWxJQyhh
cml0aFByb2ZpbGUpOwogICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVNdWxPcHRpbWl6ZTsKICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlv
blZhbHVlTXVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCmluZGV4IDYwYjAwNGY4ZTU5Li5hZGQzMjAxYjIzZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMjExMSw3ICsyMTExLDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0
ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29k
ZUluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNl
bGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29k
ZUluZGV4KTsKICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZUFkZE9wdGltaXplOwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlQWRkOwogICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVEFkZEdlbmVyYXRv
cj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlv
bik7CkBAIC0yMTMyLDcgKzIxMzIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFBy
b2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFBy
b2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0
Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CiAgICAgICAgIGF1dG8g
bm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CiAgICAgICAgIGNvbXBp
bGVCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdG
dW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTIxNTMsNyArMjE1Myw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3Rh
dGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwog
ICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFz
ZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVNdWxPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVy
YXRpb25WYWx1ZU11bDsKICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRNdWxHZW5lcmF0
b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rp
b24pOwpAQCAtMjE2MSw3ICsyMTYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBlbmFtZSBGdW5jMiwKICAgICAgICAg
dHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9u
PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+Ojp0eXBlPjo6dmFsdWU+PgotICAg
IHZvaWQgY29tcGlsZVVuYXJ5TWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5j
MSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKKyAgICB2
b2lkIGNvbXBpbGVVbmFyeU1hdGhJQyhVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBG
dW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAg
ICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAKQEAgLTIyNDcsNyArMjI0Nyw3IEBA
IHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBG
dW5jMSwgdHlwZW5hbWUgRnVuYzIsCiAgICAgICAgIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzE+Ojp0
eXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2lu
dGVyPEZ1bmMyPjo6dHlwZT46OnZhbHVlPj4KLSAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMo
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVu
YzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhC
aW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9u
LCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCiAgICAgewogICAgICAgICBOb2RlKiBub2Rl
ID0gbV9ub2RlOwogICAgICAgICAKQEAgLTI0MTYsNyArMjQxNiw3IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBo
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAg
ICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCk7CisgICAgICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9
IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5
dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVy
YXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRo
SUM8SklUU3ViR2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9u
UmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTMwOTQsNyArMzA5NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9
IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBiYXNlbGluZUNvZGVCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4
KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvbkFyaXRoTmVnYXRlT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7CiAgICAgICAgIGNvbXBpbGVVbmFyeU1hdGhJQzxK
SVROZWdHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBh
dGNoaW5nRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYjVlZmUyNjgwNDYu
LjJiNGE1ZDY0YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTkxOSw3ICs5MTksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gSXQgd2lsbCBnaXZlIHRoZSBzbG93IHBhdGgg
dGhlIHNhbWUgdmFsdWUgcmVhZCBieSB0aGUgZmFzdCBwYXRoLgogICAgICAgICBHZXRQdXRJbmZv
IGNvcGllZEdldFB1dEluZm8oT3BQdXRUb1Njb3BlKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQmluYXJ5T3A+Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmlu
YXJ5T3ApOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgY29waWVkQXJpdGhQcm9maWxlKEJp
bmFyeU9wKTsKIAogICAgICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsKIApAQCAtOTM5
LDcgKzkzOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8U3dpdGNoUmVjb3Jk
PiBtX3N3aXRjaGVzOwogCiAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkPiBtX2Nv
cGllZEdldFB1dEluZm9zOwotICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBBcml0aFByb2ZpbGU+
IG1fY29waWVkQXJpdGhQcm9maWxlczsKKyAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwgQmluYXJ5
QXJpdGhQcm9maWxlPiBtX2NvcGllZEFyaXRoUHJvZmlsZXM7CiAKICAgICAgICAgSnVtcExpc3Qg
bV9leGNlcHRpb25DaGVja3M7CiAgICAgICAgIEp1bXBMaXN0IG1fZXhjZXB0aW9uQ2hlY2tzV2l0
aENhbGxGcmFtZVJvbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRBZGRHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRH
ZW5lcmF0b3IuY3BwCmluZGV4IDYyN2FmMjc4N2UwLi43NDBiMmVkOGJkNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmNwcApAQCAtMzQsNyArMzQsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdlbmVy
YXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25T
dGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUTWF0aElD
SW5saW5lUmVzdWx0IEpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJz
JiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcg
aW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigp
OwpAQCAtNzMsNyArNzMsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9y
OjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBK
SVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklU
QWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xv
d1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hv
dWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKIHsKICAg
ICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3Nj
cmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBZGRHZW5lcmF0b3IuaAppbmRleCA0ZGMzNGEyZjViNi4uNjc1Y2Y5M2M5MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaApAQCAtNTUsOCAr
NTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghbV9sZWZ0T3BlcmFuZC5pc0NvbnN0SW50
MzIoKSB8fCAhbV9yaWdodE9wZXJhbmQuaXNDb25zdEludDMyKCkpOwogICAgIH0KIAotICAgIEpJ
VE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNH
ZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRl
RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExp
c3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRo
UHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5l
UmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQ
cm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlz
TGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJl
dHVybiBsZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJv
b2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFu
ZCkgeyByZXR1cm4gcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IDVmY2Y4ODlkMzE4
Li43NjM0NDVjY2FmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRB
cml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0
aWMuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwog
ICAgIEpJVE5lZ0lDKiBuZWdhdGVJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVROZWdJQyhhcml0aFBy
b2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9u
LCBuZWdhdGVJQyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BOZWdhdGU+KG5lZ2F0ZUlDLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFy
aXRoTmVnYXRlKTsKQEAgLTYzMywxNCArNjMzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdXJzaGlm
dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRSaWdodFNo
aWZ0RmFzdFBhdGgoY3VycmVudEluc3RydWN0aW9uLCBvcF91cnNoaWZ0KTsKIH0KIAotQUxXQVlT
X0lOTElORSBzdGF0aWMgT3BlcmFuZFR5cGVzIGdldE9wZXJhbmRUeXBlcyhjb25zdCBBcml0aFBy
b2ZpbGUmIGFyaXRoUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gT3BlcmFuZFR5cGVzKGFyaXRoUHJv
ZmlsZS5saHNSZXN1bHRUeXBlKCksIGFyaXRoUHJvZmlsZS5yaHNSZXN1bHRUeXBlKCkpOwotfQot
CiB2b2lkIEpJVDo6ZW1pdF9vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wQWRkPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsK
KyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wQWRkPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAg
ICBKSVRBZGRJQyogYWRkSUMgPSBtX2NvZGVCbG9jay0+YWRkSklUQWRkSUMoYXJpdGhQcm9maWxl
KTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYWRk
SUMpOwogICAgIGVtaXRNYXRoSUNGYXN0PE9wQWRkPihhZGRJQywgY3VycmVudEluc3RydWN0aW9u
LCBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZUFkZCk7CkBAIC02ODUs
NyArNjgwLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdlbmVy
YXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGMKIAogICAgIGJvb2wgZ2VuZXJhdGVk
SW5saW5lQ29kZSA9IG1hdGhJQy0+Z2VuZXJhdGVJbmxpbmUoKnRoaXMsIG1hdGhJQ0dlbmVyYXRp
b25TdGF0ZSk7CiAgICAgaWYgKCFnZW5lcmF0ZWRJbmxpbmVDb2RlKSB7Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICAgICAg
VW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7
CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQocHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBzcmNSZWdz
LCBhcml0aFByb2ZpbGUpOwogICAgICAgICBlbHNlCkBAIC03MDgsNyArNzAzLDYgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVu
Y3Rpb24sIHR5cGVuYW1lIE4KIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRo
SUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rp
b24gbm9uUHJvZmlsZWRGdW5jdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5k
VHlwZXMoY29waWVkQXJpdGhQcm9maWxlKGJ5dGVjb2RlKSk7CiAgICAgaW50IHJlc3VsdCA9IGJ5
dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZz
ZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CkBAIC03MjcsOCAr
NzIxLDggQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0
b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIEZQUlJlZyBzY3JhdGNoRlBSID0g
ZnBSZWdUMjsKICNlbmRpZgogCi0gICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMu
Zmlyc3QoKSk7Ci0gICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgp
KTsKKyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBl
cy5maXJzdCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYnl0ZWNvZGUubV9v
cGVyYW5kVHlwZXMuc2Vjb25kKCkpOwogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9w
MSkpCiAgICAgICAgIGxlZnRPcGVyYW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50
SW50KG9wMSkpOwpAQCAtNzU4LDcgKzc1Miw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChK
SVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAg
ICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCBsZWZ0UmVncyk7CiAgICAgICAg
IGVsc2UgaWYgKHJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpCiAgICAgICAgICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKG9wMiwgcmlnaHRSZWdzKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgICAgICBCaW5hcnlBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgICAgIGlm
IChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbldpdGhSZXN1bHQocHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBsZWZ0UmVncywgcmlnaHRSZWdz
LCBhcml0aFByb2ZpbGUpOwogICAgICAgICBlbHNlCkBAIC03OTgsNyArNzkyLDcgQEAgdm9pZCBK
SVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29u
c3QgSW5zdHJ1Y3Rpb24qIGMKICAgICBhdXRvIHNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogI2Vu
ZGlmCiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9m
aWxlKCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJp
dGhQcm9maWxlKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJl
cGF0Y2gpCiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbldpdGhSZXN1bHQocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9H
Sk1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHNyY1JlZ3MsIFRydXN0ZWRJbW1QdHIobWF0
aElDKSk7CkBAIC04MzAsNyArODI0LDYgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJp
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIG1h
dGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKIAogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIE9wZXJhbmRUeXBl
cyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRBcml0aFByb2ZpbGUoYnl0ZWNvZGUpKTsK
ICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9
IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5v
ZmZzZXQoKTsKQEAgLTg0NSw4ICs4MzgsOCBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklU
QmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxlZnRSZWdzOwogI2VuZGlmCiAgICAgCi0gICAgU25p
cHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMuZmlyc3QoKSk7Ci0gICAgU25pcHBldE9wZXJh
bmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0
T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5maXJzdCgpKTsKKyAgICBTbmlwcGV0T3Bl
cmFuZCByaWdodE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuc2Vjb25kKCkpOwogCiAg
ICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkpCiAgICAgICAgIGxlZnRPcGVyYW5kLnNl
dENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSkpOwpAQCAtODY0LDcgKzg1Nyw3
IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiog
bWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBhdXRvIHNsb3dQYXRoU3RhcnQgPSBsYWJl
bCgpOwogI2VuZGlmCiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+
YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBt
YXRoSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1p
dFByb2ZpbGluZygpKSB7CiAgICAgICAgIGlmIChtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2hvdWxk
U2xvd1BhdGhSZXBhdGNoKQogICAgICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KGJpdHdpc2VfY2FzdDxKX0pJVE9wZXJh
dGlvbl9HSkpNaWM+KHByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uKSwgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBsZWZ0UmVncywgcmlnaHRSZWdz
LCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwpAQCAtODkyLDE5ICs4ODUsMTYgQEAgdm9pZCBKSVQ6
OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0
IEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BEaXY+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayk7CiAgICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgp
OwogICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0g
Ynl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIE9wZXJh
bmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZSk7
CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAgICAgSlNW
YWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEpOwogICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1QyOwog
I2Vsc2UKLSAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMobWV0YWRhdGEu
bV9hcml0aFByb2ZpbGUpOwogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gSlNWYWx1ZVJlZ3Mo
cmVnVDEsIHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhy
ZWdUMywgcmVnVDIpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKQEAg
LTkxMiwxMiArOTAyLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBm
cFJlZ1QyOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyOworICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbnVsbHB0cjsKICAgICBpZiAoc2hv
dWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcERpdj4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7
CiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBT
bmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRP
cGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAg
IFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNv
bmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVm
dE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC05
NTksNyArOTQ5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0X29wX211bChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxv
Y2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2sp
Lm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE11bElDKiBtdWxJQyA9IG1fY29kZUJsb2NrLT5hZGRK
SVRNdWxJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3Vy
cmVudEluc3RydWN0aW9uLCBtdWxJQyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BNdWw+KG11bElD
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlv
blZhbHVlTXVsKTsKQEAgLTk3NSw3ICs5NjUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9zdWIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wU3ViPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsK
KyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wU3ViPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAg
ICBKSVRTdWJJQyogc3ViSUMgPSBtX2NvZGVCbG9jay0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxl
KTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgc3Vi
SUMpOwogICAgIGVtaXRNYXRoSUNGYXN0PE9wU3ViPihzdWJJQywgY3VycmVudEluc3RydWN0aW9u
LCBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1Yik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKaW5kZXggNjZlMWJlMTRh
OGQuLmI4YzQ3OTg2ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VERpdkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZH
ZW5lcmF0b3IuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBKSVREaXZHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgbm90RG91YmxlWmVyby5saW5r
KCZqaXQpOwogI2VuZGlmCiAgICAgaWYgKG1fYXJpdGhQcm9maWxlKQotICAgICAgICBqaXQub3Iz
MihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0
aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRy
ZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoQmluYXJ5QXJpdGhQcm9maWxlOjpzcGVjaWFsRmFzdFBhdGhCaXQpLCBDQ2FsbEhlbHBlcnM6
OkFic29sdXRlQWRkcmVzcyhtX2FyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAgICAg
aml0LmJveERvdWJsZShtX2xlZnRGUFIsIG1fcmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKaW5kZXggODM5NjY3Nzk0M2YuLjcwOGRiMTBk
NmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIEpJVERpdkdlbmVyYXRvcihTbmlwcGV0T3BlcmFu
ZCBsZWZ0T3BlcmFuZCwgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kLAogICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIGxlZnQsIEpTVmFsdWVSZWdzIHJpZ2h0LAogICAg
ICAgICBGUFJSZWcgbGVmdEZQUiwgRlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2NyYXRjaEdQUiwg
RlBSUmVnIHNjcmF0Y2hGUFIsCi0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
bnVsbHB0cikKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxs
cHRyKQogICAgICAgICA6IG1fbGVmdE9wZXJhbmQobGVmdE9wZXJhbmQpCiAgICAgICAgICwgbV9y
aWdodE9wZXJhbmQocmlnaHRPcGVyYW5kKQogICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKQEAg
LTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9zY3JhdGNoR1BSOwogICAgIEZQ
UlJlZyBtX3NjcmF0Y2hGUFI7CiAgICAgYm9vbCBtX2RpZEVtaXRGYXN0UGF0aCB7IGZhbHNlIH07
Ci0gICAgQXJpdGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIG1fYXJpdGhQcm9maWxlOwogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX2VuZEp1
bXBMaXN0OwogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbV9zbG93UGF0aEp1bXBMaXN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAxMDgwMDQ2M2JhYy4uMjk2
ZWVlM2FiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC03MTEs
MTMgKzcxMSwxMyBAQCBBTFdBWVNfSU5MSU5FIEdldFB1dEluZm8gSklUOjpjb3BpZWRHZXRQdXRJ
bmZvKE9wUHV0VG9TY29wZSBieXRlY29kZSkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5
T3A+Ci1BTFdBWVNfSU5MSU5FIEFyaXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZShC
aW5hcnlPcCBieXRlY29kZSkKK0FMV0FZU19JTkxJTkUgQmluYXJ5QXJpdGhQcm9maWxlIEpJVDo6
Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVjb2RlKQogewogICAgIHVpbnQ2NF90IGtl
eSA9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4oQmluYXJ5T3A6Om9wY29kZUlEKSArIDEpIDw8IDMy
IHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ5dGVjb2RlLm1fbWV0YWRhdGFJRCk7CiAgICAgYXV0
byBpdGVyYXRvciA9IG1fY29waWVkQXJpdGhQcm9maWxlcy5maW5kKGtleSk7CiAgICAgaWYgKGl0
ZXJhdG9yICE9IG1fY29waWVkQXJpdGhQcm9maWxlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0
ZXJhdG9yLT52YWx1ZTsKLSAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0
aFByb2ZpbGU7CiAgICAgbV9jb3BpZWRBcml0aFByb2ZpbGVzLmFkZChrZXksIGFyaXRoUHJvZmls
ZSk7CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE1hdGhJQy5oCmluZGV4IDU2NDVlNDJkZWZmLi5mZGFlYzkyNzVlMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE1hdGhJQy5oCkBAIC01MiwxMSArNTIsMTEgQEAgc3RydWN0IE1hdGhJQ0dl
bmVyYXRpb25TdGF0ZSB7CiAKICNkZWZpbmUgRU5BQkxFX01BVEhfSUNfU1RBVFMgMAogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1wdHkpKEFyaXRo
UHJvZmlsZSYpPgordGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGUsIHR5cGVuYW1lIEFy
aXRoUHJvZmlsZVR5cGU+CiBjbGFzcyBKSVRNYXRoSUMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIEpJVE1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKKyAgICBKSVRNYXRoSUMoQXJpdGhQcm9maWxlVHlwZSogYXJpdGhQcm9maWxlKQogICAgICAg
ICA6IG1fYXJpdGhQcm9maWxlKGFyaXRoUHJvZmlsZSkKICAgICB7CiAgICAgfQpAQCAtNzEsNyAr
NzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJs
ZXIuYnVmZmVyKCkuY29kZVNpemUoKTsKIAogICAgICAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsK
LSAgICAgICAgICAgIGlmIChpc1Byb2ZpbGVFbXB0eSgqbV9hcml0aFByb2ZpbGUpKSB7CisgICAg
ICAgICAgICBpZiAobV9hcml0aFByb2ZpbGUtPmlzT2JzZXJ2ZWRUeXBlRW1wdHkoKSkgewogICAg
ICAgICAgICAgICAgIC8vIEl0IGxvb2tzIGxpa2UgdGhlIE1hdGhJQyBoYXMgeWV0IHRvIGV4ZWN1
dGUuIFdlIGRvbid0IHdhbnQgdG8gZW1pdCBjb2RlIGluIHRoaXMKICAgICAgICAgICAgICAgICAv
LyBjYXNlIGZvciBhIGNvdXBsZSByZWFzb25zLiBGaXJzdCwgdGhlIG9wZXJhdGlvbiBtYXkgbmV2
ZXIgZXhlY3V0ZSwgc28gaWYgd2UgZG9uJ3QgZW1pdAogICAgICAgICAgICAgICAgIC8vIGNvZGUs
IGl0J3MgYSB3aW4uIFNlY29uZCwgaWYgdGhlIG9wZXJhdGlvbiBkb2VzIGV4ZWN1dGUsIHdlIGNh
biBlbWl0IGJldHRlciBjb2RlCkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgICAgICBt
X3Nsb3dQYXRoU3RhcnRMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihzdGF0ZS5zbG93UGF0aFN0YXJ0KTsKICAgICB9CiAKLSAgICBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJpdGhQcm9maWxlOyB9CisgICAgQXJp
dGhQcm9maWxlVHlwZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2Zp
bGU7IH0KIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgIHNpemVfdCBtX2dlbmVyYXRl
ZENvZGVTaXplIHsgMCB9OwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5k
aWYKIAotICAgIEFyaXRoUHJvZmlsZSogbV9hcml0aFByb2ZpbGU7CisgICAgQXJpdGhQcm9maWxl
VHlwZSogbV9hcml0aFByb2ZpbGU7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiBtX2NvZGU7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0
clRhZz4gbV9pbmxpbmVTdGFydDsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBtX2lubGluZUVuZDsKQEAgLTI0NiwxNSArMjQ2LDExIEBAIHB1YmxpYzoKICAgICBHZW5l
cmF0b3JUeXBlIG1fZ2VuZXJhdG9yOwogfTsKIAotaW5saW5lIGJvb2wgaXNCaW5hcnlQcm9maWxl
RW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCi17Ci0gICAgcmV0dXJuIGFyaXRoUHJv
ZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkgfHwgYXJpdGhQcm9maWxlLnJoc09ic2Vy
dmVkVHlwZSgpLmlzRW1wdHkoKTsKLX0KIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3JUeXBl
PgotY2xhc3MgSklUQmluYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBl
LCBpc0JpbmFyeVByb2ZpbGVFbXB0eT4geworY2xhc3MgSklUQmluYXJ5TWF0aElDIDogcHVibGlj
IEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBCaW5hcnlBcml0aFByb2ZpbGU+IHsKIHB1YmxpYzoK
LSAgICBKSVRCaW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCi0gICAgICAg
IDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzQmluYXJ5UHJvZmlsZUVtcHR5Pihhcml0aFBy
b2ZpbGUpCisgICAgSklUQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlKQorICAgICAgICA6IEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBCaW5hcnlBcml0aFByb2Zp
bGU+KGFyaXRoUHJvZmlsZSkKICAgICB7CiAgICAgfQogfTsKQEAgLTI2MywxNiArMjU5LDExIEBA
IHR5cGVkZWYgSklUQmluYXJ5TWF0aElDPEpJVEFkZEdlbmVyYXRvcj4gSklUQWRkSUM7CiB0eXBl
ZGVmIEpJVEJpbmFyeU1hdGhJQzxKSVRNdWxHZW5lcmF0b3I+IEpJVE11bElDOwogdHlwZWRlZiBK
SVRCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPiBKSVRTdWJJQzsKIAotCi1pbmxpbmUgYm9v
bCBpc1VuYXJ5UHJvZmlsZUVtcHR5KEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQotewotICAg
IHJldHVybiBhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOwotfQogdGVt
cGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+Ci1jbGFzcyBKSVRVbmFyeU1hdGhJQyA6IHB1
YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0eT4geworY2xh
c3MgSklUVW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVuYXJ5
QXJpdGhQcm9maWxlPiB7CiBwdWJsaWM6Ci0gICAgSklUVW5hcnlNYXRoSUMoQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUpCi0gICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzVW5h
cnlQcm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkKKyAgICBKSVRVbmFyeU1hdGhJQyhVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgICAgICA6IEpJVE1hdGhJQzxHZW5lcmF0b3JU
eXBlLCBVbmFyeUFyaXRoUHJvZmlsZT4oYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCmluZGV4IDgz
ZDI5M2I2MjUyLi5jZjZiYWE1MmY2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTXVsR2VuZXJhdG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUo
Q0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE11bEdl
bmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRU
eXBlIGxocyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtODksNyArODksNyBAQCBK
SVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2Fs
bEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6
OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3Qg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jv
b2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BS
ICE9IEludmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBh
eWxvYWRHUFIoKSk7CkBAIC0yMDUsMTggKzIwNSwxOCBAQCBib29sIEpJVE11bEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dAogCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3ROZWdhdGl2ZVplcm8gPSBqaXQuYnJh
bmNoNjQoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1bHQucGF5bG9hZEdQUigpLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW02NChuZWdhdGl2ZVplcm9CaXRzKSk7CiAKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91
YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmluYXJ5QXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0aXZlWmVy
by5saW5rKCZqaXQpOwotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRl
QWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3Iz
MihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5vbk5lZ1pl
cm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFk
ZHJlc3NPZkJpdHMoKSkpOwogCiAgICAgICAgIGppdC5tb3ZlKG1fcmVzdWx0LnBheWxvYWRHUFIo
KSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LnVyc2hpZnRQdHIoQ0NhbGxIZWxwZXJzOjpJ
bW0zMig1MiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6
OkltbTMyKDB4N2ZmKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
IG5vSW50NTJPdmVyZmxvdyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JF
cXVhbCwgbV9zY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwog
Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmls
ZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJv
ZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVs
cGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAg
ICAgICAgIG5vSW50NTJPdmVyZmxvdy5saW5rKCZqaXQpOwogCiAgICAgICAgIGRvbmUubGluaygm
aml0KTsKQEAgLTIyNywxOCArMjI3LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAgICAg
ICAgIG5vdE5lZ2F0aXZlWmVyby5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90
RXF1YWwsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MCkpKTsKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1bHQudGFnR1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKG5lZ2F0aXZlWmVyb0JpdHMgPj4gMzIpKSk7CiAKLSAgICAgICAgaml0Lm9yMzIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKSwgQ0Nh
bGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkp
KTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJp
dGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5saW5rKCZq
aXQpOwotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFBy
b2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhh
cml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUp
LCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJp
dHMoKSkpOwogCiAgICAgICAgIGppdC5tb3ZlKG1fcmVzdWx0LnRhZ0dQUigpLCBtX3NjcmF0Y2hH
UFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUyIC0gMzIp
LCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpJbW0zMigw
eDdmZiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub0ludDUy
T3ZlcmZsb3cgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpMZXNzVGhhbk9yRXF1YWwsIG1f
c2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHg0MzEpKTsKICAgICAgICAg
Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmls
ZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJv
ZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVs
cGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAK
ICAgICAgICAgZW5kSnVtcExpc3QuYXBwZW5kKG5vSW50NTJPdmVyZmxvdyk7CiAgICAgICAgIGlm
IChtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQudGFnR1BSKCkgfHwgbV9zY3JhdGNoR1BSID09IG1f
cmVzdWx0LnBheWxvYWRHUFIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTXVsR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdl
bmVyYXRvci5oCmluZGV4IDM2ZDI2ZWExMjRlLi42MDg3Nzk2Njg1YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCkBAIC01Niw4ICs1Niw4IEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCkg
fHwgIW1fcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCkpOwogICAgIH0KIAotICAg
IEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRo
SUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVy
YXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVt
cExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dKdW1wTGlzdCwgY29uc3QgQXJpdGhQ
cm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVS
ZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRl
JiwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRo
KENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93SnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmls
ZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0xlZnRP
cGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCkgeyByZXR1cm4g
bGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQogICAgIHN0YXRpYyBib29sIGlz
UmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQpIHsg
cmV0dXJuIHJpZ2h0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKaW5kZXggOTJjMjlkZDYzMGEu
LmNlZWJlMzkwOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5l
Z0dlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5l
cmF0b3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRo
SUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBl
cnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpn
ZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBBU1NF
UlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hH
UFIgIT0gbV9zcmMucGF5bG9hZEdQUigpKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgSklUTWF0aElDSW5s
aW5lUmVzdWx0IEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBq
aXQsIE1hdGhJQ0cKICAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1bGF0aW5nIGludDMyLgogICAg
IE9ic2VydmVkVHlwZSBvYnNlcnZlZFR5cGVzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7
CiAgICAgaWYgKGFyaXRoUHJvZmlsZSkKLSAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJv
ZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCk7CisgICAgICAgIG9ic2VydmVkVHlwZXMgPSBhcml0aFBy
b2ZpbGUtPmFyZ09ic2VydmVkVHlwZSgpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW9ic2Vy
dmVkVHlwZXMuaXNFbXB0eSgpLCAiV2Ugc2hvdWxkIG5vdCBhdHRlbXB0IHRvIGdlbmVyYXRlIGFu
eXRoaW5nIGlmIHdlIGRvIG5vdCBoYXZlIGEgcHJvZmlsZS4iKTsKIAogICAgIGlmIChvYnNlcnZl
ZFR5cGVzLmlzT25seU5vbk51bWJlcigpKQpAQCAtODIsNyArODIsNyBAQCBKSVRNYXRoSUNJbmxp
bmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGpp
dCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVs
bFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEND
YWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUTmVnR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhK
dW1wTGlzdCwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9zcmMucGF5
bG9hZEdQUigpKTsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IG1fcmVzdWx0LnBheWxvYWRH
UFIoKSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICNlbmRp
ZgogICAgIC8vIFRoZSBmbGFncyBvZiBBcml0aE5lZ2F0ZSBhcmUgYmFzaWMgaW4gREZHLgogICAg
IC8vIFdlIG9ubHkgbmVlZCB0byBrbm93IGlmIHdlIGV2ZXIgcHJvZHVjZWQgYSBudW1iZXIuCi0g
ICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcgJiYgYXJpdGhQcm9maWxlICYmICFhcml0aFByb2Zp
bGUtPmxoc09ic2VydmVkVHlwZSgpLnNhd051bWJlcigpICYmICFhcml0aFByb2ZpbGUtPmRpZE9i
c2VydmVEb3VibGUoKSkKKyAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZyAmJiBhcml0aFByb2Zp
bGUgJiYgIWFyaXRoUHJvZmlsZS0+YXJnT2JzZXJ2ZWRUeXBlKCkuc2F3TnVtYmVyKCkgJiYgIWFy
aXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQogICAgICAgICBhcml0aFByb2ZpbGUtPmVt
aXRTZXREb3VibGUoaml0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCmluZGV4IDhhMGMyZDUxN2Q2Li43ODdiNzA3Njgy
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCkBAIC00
Myw4ICs0Myw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3NjcmF0Y2hHUFIoc2NyYXRjaEdQUikK
ICAgICB7IH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2Fs
bEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBBcml0aFByb2ZpbGUqKTsK
LSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVt
cExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7Cisg
ICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9v
bCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBj
b25zdCBVbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CiAKIHBy
aXZhdGU6CiAgICAgSlNWYWx1ZVJlZ3MgbV9yZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA5YzY3NmYxNTA0Ni4uMjIwZmNkNGVkOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjY0Myw3
ICsyNjQzLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enooSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICNlbmRpZiAvLyBDT01QSUxFUihHQ0NfQ09NUEFU
SUJMRSkKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBwcm9maWxlZEFkZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wMSwgSlNWYWx1ZSBvcDIsIEFyaXRo
UHJvZmlsZSYgYXJpdGhQcm9maWxlKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBwcm9m
aWxlZEFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wMSwgSlNWYWx1
ZSBvcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQogewogICAgIGFyaXRoUHJv
ZmlsZS5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
QWRkKGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpOwpAQCAtMjY1OSw3ICsyNjU5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQWRkKGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZUFkZFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZUFkZFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI2NzcsNyArMjY3Nyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAKLSAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKKyAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUo
KTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVM
SFNBbmRSSFMob3AxLCBvcDIpOwogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0
aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemU7CkBAIC0yNjk5LDcgKzI2OTksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9
IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb2ZpbGVkQWRkKGdsb2JhbE9iamVjdCwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMiksICph
cml0aFByb2ZpbGUpKTsKIH0KQEAgLTI3MTQsNyArMjcxNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqCiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAK
ICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlQWRkTm9PcHRpbWl6
ZTsKLSAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9m
aWxlKCkpCisgICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMt
PmFyaXRoUHJvZmlsZSgpKQogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMo
b3AxLCBvcDIpOwogICAgIGFkZElDLT5nZW5lcmF0ZU91dE9mTGluZShjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0yNzQ3LDcgKzI3NDcsNyBAQCBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkTXVsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc011bChnbG9i
YWxPYmplY3QsIG9wMSwgb3AyKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIHByb2ZpbGVkTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmls
ZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUp
CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZE11bChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9v
bCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC0yNzg4LDcgKzI3ODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGlt
aXplOwotICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFBy
b2ZpbGUoKSkKKyAgICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJ
Qy0+YXJpdGhQcm9maWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJI
UyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ay
KSk7CiAgICAgbXVsSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCks
IG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI3OTksNyArMjc5OSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIHVucHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNv
ZGVkT3AxLCBlbmNvZGVkT3AyKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZU11bFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0yODE1LDcgKzI4MTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBC
aW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsK
ICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNB
bmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMikpOwogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxQ
cm9maWxlZE5vT3B0aW1pemU7CkBAIC0yODM0LDcgKzI4MzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFs
T2JqZWN0KgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0
aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElD
LT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4g
cHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQ
cm9maWxlKTsKIH0KQEAgLTI4NjAsNyArMjg2MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
IAogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRl
UHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wZXJhbmQsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4NjksNyArMjg2OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKLSAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMo
b3BlcmFuZCk7CisgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlQXJnKG9wZXJhbmQpOwogCiAgICAg
SlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODk3
LDkgKzI4OTcsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdAogICAgIAogICAgIEpTVmFsdWUg
b3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFuZCk7CiAKLSAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFT
U0VSVChhcml0aFByb2ZpbGUpOwotICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5k
KTsKKyAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7CiAgICAgbmVnSUMtPmdl
bmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG9wZXJhdGlvbkFyaXRoTmVn
YXRlUHJvZmlsZWQpOwogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCkBAIC0yOTMxLDggKzI5
MzEsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRl
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIAotICAgIGlmIChBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKSkKLSAgICAgICAgYXJpdGhQcm9m
aWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIGlmIChVbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpKQorICAgICAgICBhcml0aFByb2ZpbGUt
Pm9ic2VydmVBcmcob3BlcmFuZCk7CiAgICAgbmVnSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCksIG9wZXJhdGlvbkFyaXRoTmVnYXRlKTsKIAogI2lmIEVOQUJMRShN
QVRIX0lDX1NUQVRTKQpAQCAtMjk1OCw3ICsyOTU4LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgdW5wcm9maWxlZFN1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdWIoZ2xvYmFsT2JqZWN0LCBvcDEsIG9w
MikpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZFN1
YihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQ
cm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCitBTFdBWVNf
SU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZFN1YihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29s
IHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yOTgyLDcgKzI5ODIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuYwogICAgIHJldHVybiB1bnByb2ZpbGVkU3ViKGdsb2JhbE9iamVjdCwg
ZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxl
KTsKIApAQCAtMzAwMCw3ICszMDAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlU3ViTm9PcHRp
bWl6ZTsKLSAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQ
cm9maWxlKCkpCisgICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3Vi
SUMtPmFyaXRoUHJvZmlsZSgpKQogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRS
SFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MikpOwogICAgIHN1YklDLT5nZW5lcmF0ZU91dE9mTGluZShjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0zMDI2LDcgKzMwMjYsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklD
LT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9
IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBh
cml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEp
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJp
YW50ID0gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1pemU7CkBAIC0zMDQ1LDcgKzMw
NDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJv
ZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJp
dGhQcm9maWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWRTdWIodm0sIGdsb2JhbE9iamVjdCwgZW5j
b2RlZE9wMSwgZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDM3ZTgzNjE1ZDQ3Li41OTVhZWM0N2NkNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTM4LDYgKzM4
LDggQEAgdHlwZWRlZiBpbnQ2NF90IEVuY29kZWRKU1ZhbHVlOwogICAgIAogY2xhc3MgQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZTsKIGNsYXNzIEFycmF5UHJvZmlsZTsKK2NsYXNzIFVuYXJ5QXJpdGhQ
cm9maWxlOworY2xhc3MgQmluYXJ5QXJpdGhQcm9maWxlOwogY2xhc3MgQnV0dGVyZmx5OwogY2xh
c3MgQ2FsbEZyYW1lOwogY2xhc3MgQ2FsbExpbmtJbmZvOwpAQCAtNjQsNyArNjYsNiBAQCBjbGFz
cyBXYXRjaHBvaW50U2V0Owogc3RydWN0IEJ5VmFsSW5mbzsKIHN0cnVjdCBJbmxpbmVDYWxsRnJh
bWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci1zdHJ1Y3QgQXJpdGhQcm9maWxlOwogCiBleHRlcm4g
IkMiIHsKIApAQCAtNzcsNyArNzgsNyBAQCB0eXBlZGVmIGNoYXIqIFVudXNlZFB0cjsKICAgICBB
OiBKU0FycmF5KgogICAgIEFhcDogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSoKICAgICBBcDogQXJy
YXlQcm9maWxlKgotICAgIEFycDogQXJpdGhQcm9maWxlKgorICAgIEFycDogQmluYXJ5QXJpdGhQ
cm9maWxlKgogICAgIEI6IEJ1dHRlcmZseSoKICAgICBCeTogQnlWYWxJbmZvKgogICAgIEM6IEpT
Q2VsbCoKQEAgLTI4Miw3ICsyODMsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q2hlY2tJZkV4Y2VwdGlvbklzVW5jYXRjaGFibGVBbmROb3RpZnlQcm9maWxlcihWTQogaW50MzJf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20oSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGQoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZf
SU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRk
UHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJ
VEFkZElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJO
QUw7CkBAIC0yOTIsMTMgKzI5MywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSgogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklU
TXVsSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBX
VEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
TXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgb3BlcmFuZCk7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBvcGVyYW5kLCBBcml0aFByb2ZpbGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIG9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyopOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKik7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikg
V1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOwor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlU3ViTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1
YlByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcAppbmRleCA3
OTVjMjc1ODRjMC4uN2IxYThiODE5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN1YkdlbmVyYXRvci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRTdWJH
ZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0
aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
IHsKICAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1bGF0aW5nIGludDMyLgogICAgIE9ic2VydmVk
VHlwZSBsaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKQEAgLTc4LDcgKzc4LDcgQEAg
SklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0Nh
bGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICByZXR1cm4gSklUTWF0aElDSW5saW5lUmVzdWx0
OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0OwogfQogCi1ib29sIEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJh
dGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5k
SnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiti
b29sIEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQ
UiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IG1fbGVmdC5w
YXlsb2FkR1BSKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dWJHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9y
LmgKaW5kZXggNTYxZjYzMzRhZTMuLjM0OTFhODNmZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmgKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAg
ICAgICAsIG1fc2NyYXRjaEZQUihzY3JhdGNoRlBSKQogICAgIHsgfQogCi0gICAgSklUTWF0aElD
SW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRp
b25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxl
KiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29u
c3QgQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxs
SGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUq
LCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3Bl
cmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
c3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kKSB7
IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAppbmRleCBiZGEzMDhjODRkMi4uYzAzNDFjOTU2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xMzUsMzYgKzEzNSw0OSBAQCB2b2lkIERhdGE6OnBl
cmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICNlbmRpZgogCiAgICAgewotICAgICAgICBBcml0aFBy
b2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2Zp
bGU7CisgICAgICAgIGFyaXRoUHJvZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAgICBBU1NFUlQo
YXJpdGhQcm9maWxlLmJpdHMoKSA9PSBVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRz
KCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmFyZ09ic2VydmVkVHlwZSgpLmlzT25s
eUludDMyKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIGFyaXRo
UHJvZmlsZTsKKyAgICAgICAgYXJpdGhQcm9maWxlLmFyZ1Nhd051bWJlcigpOworICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRO
dW1iZXJCaXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmFyZ09ic2VydmVkVHlw
ZSgpLmlzT25seU51bWJlcigpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdJbnQzMigp
OwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3SW50MzIoKTsKLSAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgp
LmJpdHMoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJp
bmFyeUludEludCgpLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwotICAgICAgICBT
VEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnRJbnQoKS5yaHNPYnNl
cnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5i
aXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEludEJpdHMoKSk7CisgICAg
ICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7
CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50
MzIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsK
KyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQ
cm9maWxlLmxoc1Nhd051bWJlcigpOwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3SW50MzIo
KTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJpdGhQcm9maWxlOjpv
YnNlcnZlZEJpbmFyeU51bWJlckludCgpLmJpdHMoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQo
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgpLmxoc09ic2VydmVkVHlwZSgp
LmlzT25seU51bWJlcigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9i
c2VydmVkQmluYXJ5TnVtYmVySW50KCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7
CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmls
ZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxl
Lmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRo
UHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKICAgICB9CiAgICAgewot
ICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBCaW5hcnlBcml0aFBy
b2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3TnVtYmVyKCk7
CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdOdW1iZXIoKTsKLSAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51
bWJlcigpLmJpdHMoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNl
cnZlZEJpbmFyeU51bWJlck51bWJlcigpLmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigp
KTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVt
YmVyTnVtYmVyKCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVk
TnVtYmVyTnVtYmVyQml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5saHNPYnNl
cnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUu
cmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAg
IEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBh
cml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdJbnQzMigpOwogICAgICAg
ICBhcml0aFByb2ZpbGUucmhzU2F3TnVtYmVyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFByb2Zp
bGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5iaXRz
KCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJ
bnROdW1iZXIoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKLSAgICAgICAgU1RB
VElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCkucmhzT2Jz
ZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxl
LmJpdHMoKSA9PSBCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50TnVtYmVyQml0cygpKTsK
KyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQz
MigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09u
bHlOdW1iZXIoKSk7CiAgICAgfQogfQogSUdOT1JFX1dBUk5JTkdTX0VORApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRl
eCBhMjVmOTg0YWJkYS4uZjVkOTE3NzQ2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IHB1YmxpYzoKIAogY29uc3QgaW50NjRfdCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgp
CiB7Ci0vLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbS9nZW5lcmF0ZV9v
ZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNvZGUKKy8vIFRoaXMgaXMgYSBmaWxl
IGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIsIGFu
ZCBjb250YWlucyBjb2RlCiAvLyB0byBjcmVhdGUgYSB0YWJsZSBvZiBvZmZzZXRzLCBzaXplcywg
YW5kIGEgaGVhZGVyIGlkZW50aWZ5aW5nIHdoYXQgY29tYmluYXRpb24gb2YKIC8vIFBsYXRmb3Jt
LmggbWFjcm9zIHdlIGhhdmUgc2V0LiBXZSBpbmNsdWRlIGl0IGluc2lkZSBvZiBhIG1ldGhvZCBv
biBMTEludE9mZnNldHNFeHRyYWN0b3IKIC8vIGJlY2F1c2UgdGhlIGZpZWxkcyB3aG9zZSBvZmZz
ZXRzIHdlJ3JlIGV4dHJhY3RpbmcgYXJlIG1vc3RseSBwcml2YXRlLiBTbyB3ZSBtYWtlIHRoZWly
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KaW5kZXggYmNmYTI1MmU0ZWYuLmI1Yzc1ODMxOGUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNDAsMTMg
KzI0MCwxNSBAQCBjb25zdCBJc0ludmFsaWRhdGVkID0gY29uc3RleHByIElzSW52YWxpZGF0ZWQK
ICMgU2hhZG93Q2hpY2tlbiBkYXRhCiBjb25zdCBTaGFkb3dDaGlja2VuVGFpbE1hcmtlciA9IGNv
bnN0ZXhwciBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OnRhaWxNYXJrZXJWYWx1ZQogCi0jIEFyaXRo
UHJvZmlsZSBkYXRhCi1jb25zdCBBcml0aFByb2ZpbGVJbnQgPSBjb25zdGV4cHIgKEFyaXRoUHJv
ZmlsZTo6b2JzZXJ2ZWRVbmFyeUludCgpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJl
ciA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZFVuYXJ5TnVtYmVyKCkuYml0cygp
KQotY29uc3QgQXJpdGhQcm9maWxlSW50SW50ID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9i
c2VydmVkQmluYXJ5SW50SW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVySW50
ID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkuYml0
cygpKQotY29uc3QgQXJpdGhQcm9maWxlSW50TnVtYmVyID0gY29uc3RleHByIChBcml0aFByb2Zp
bGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxl
TnVtYmVyTnVtYmVyID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVt
YmVyTnVtYmVyKCkuYml0cygpKQorIyBVbmFyeUFyaXRoUHJvZmlsZSBkYXRhCitjb25zdCBBcml0
aFByb2ZpbGVJbnQgPSBjb25zdGV4cHIgKFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEJp
dHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlciA9IGNvbnN0ZXhwciAoVW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cygpKQorCisjIEJpbmFyeUFyaXRoUHJvZmlsZSBkYXRh
Citjb25zdCBBcml0aFByb2ZpbGVJbnRJbnQgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmls
ZTo6b2JzZXJ2ZWRJbnRJbnRCaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJJbnQgPSBj
b25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKCkpCitj
b25zdCBBcml0aFByb2ZpbGVJbnROdW1iZXIgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmls
ZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1i
ZXIgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdW1iZXJC
aXRzKCkpCiAKICMgUG9pbnRlciBUYWdzCiBjb25zdCBCeXRlY29kZVB0clRhZyA9IGNvbnN0ZXhw
ciBCeXRlY29kZVB0clRhZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCAzMDQzNWM0NjdkMy4uZmM5MzYw
OGFkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xMDAzLDggKzEwMDMsOCBAQCBlbmQpCiAKIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAKLSAgICBtYWNybyBhcml0aFByb2ZpbGUodHlw
ZSkKLSAgICAgICAgb3JpIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUg
KyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUo
dHlwZSkKKyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgIGVuZAogCiAgICAgbWV0YWRh
dGEodDUsIHQwKQpAQCAtMTAxMywxMiArMTAxMywxMiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X25lZ2F0ZSwgT3BOZWdhdGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cgogICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CiAgICAgYnRpeiB0
MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDIKLSAgICBhcml0aFByb2Zp
bGUoQXJpdGhQcm9maWxlSW50KQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJ
bnQpCiAgICAgcmV0dXJuIChJbnQzMlRhZywgdDIpCiAub3BOZWdhdGVTcmNOb3RJbnQ6CiAgICAg
YmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JpIDB4ODAwMDAwMDAsIHQx
Ci0gICAgYXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKKyAgICB1cGRhdGVBcml0aFBy
b2ZpbGUoQXJpdGhQcm9maWxlTnVtYmVyKQogICAgIHJldHVybih0MSwgdDIpCiAKIC5vcE5lZ2F0
ZVNsb3c6CkBAIC0xMDMwLDcgKzEwMzAsNyBAQCBlbmQpCiBtYWNybyBiaW5hcnlPcEN1c3RvbVN0
b3JlKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBk
b3VibGVPcGVyYXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUs
IG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1
cm4pCiAgICAgICAgIG1hY3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5
cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2Zp
bGU6Om1fYml0c1t0NV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAg
ICAgICAgIGVuZAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggYjJm
YjU1MWI5ZWEuLjgxYWNhOGQyYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtOTczLDIyICs5NzMsMjQgQEAg
ZW5kKQogCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAgICBtYWNybyB1cGRh
dGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0
YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIGVu
ZAorCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShz
aXplLCB0MCwgdDMpCiAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgIGxvYWRpIE9wTmVnYXRlOjpN
ZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCiAg
ICAgYnFiIHQzLCBudW1iZXJUYWcsIC5vcE5lZ2F0ZU5vdEludAogICAgIGJ0aXogdDMsIDB4N2Zm
ZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKICAgICBuZWdpIHQzCiAgICAgb3JxIG51bWJlclRhZywgdDMK
LSAgICBvcmkgQXJpdGhQcm9maWxlSW50LCB0MgotICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1l
dGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIHVw
ZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuKHQzKQogLm9wTmVn
YXRlTm90SW50OgogICAgIGJ0cXogdDMsIG51bWJlclRhZywgLm9wTmVnYXRlU2xvdwogICAgIHhv
cnEgMHg4MDAwMDAwMDAwMDAwMDAwLCB0MwotICAgIG9yaSBBcml0aFByb2ZpbGVOdW1iZXIsIHQy
Ci0gICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJp
dGhQcm9maWxlOjptX2JpdHNbdDFdCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmls
ZU51bWJlcikKICAgICByZXR1cm4odDMpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDAyLDcgKzEw
MDQsNyBAQCBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUsIG9wY29kZVN0cnVj
dCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkbwogICAgICAgICBtZXRhZGF0YSh0NSwgdDAp
CiAKICAgICAgICAgbWFjcm8gcHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1f
Yml0c1t0NV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KICAgICAgICAg
ZW5kCiAKICAgICAgICAgZ2V0KG1fcmhzLCB0MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FybS5yYgppbmRleCA5ODgxZTRkYmQwMy4uNWU5ODM0Y2NhZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKQEAgLTQxOCw3ICs0MTgsNyBAQCBjbGFzcyBJbnN0
cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKICAg
ICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJhbmRzIiwgImFuZCIsIG9wZXJhbmRzKQotICAgICAg
ICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICB3aGVuICJvcmkiLCAib3JwIiwgIm9yaCIKICAg
ICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJzIiwgIm9yciIsIG9wZXJhbmRzKQogICAgICAg
ICB3aGVuICJvcmlzIgogICAgICAgICAgICAgZW1pdEFybUNvbXBhY3QoIm9ycnMiLCAib3JycyIs
IG9wZXJhbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgppbmRl
eCA0Y2Q4ZjY2ZTMwMy4uZGQ2NjMwMmUwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FybTY0LnJiCkBAIC0zNzgsNyArMzc4LDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAg
ICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAgICAgICAgIHdoZW4gImxvYWRiIiwgImxvYWRi
c2kiLCAibG9hZGJzcSIsICJzdG9yZWIiLCAvXmJiLywgL15idGIvLCAvXmNiLywgL150Yi8KICAg
ICAgICAgICAgICAgICBzaXplID0gMQotICAgICAgICAgICAgd2hlbiAibG9hZGgiLCAibG9hZGhz
aSIsICJsb2FkaHNxIgorICAgICAgICAgICAgd2hlbiAibG9hZGgiLCAibG9hZGhzaSIsICJsb2Fk
aHNxIiwgIm9yaCIsICJzdG9yZWgiCiAgICAgICAgICAgICAgICAgc2l6ZSA9IDIKICAgICAgICAg
ICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIsICJzdG9yZWkiLCAiYWRkaSIsICJhbmRpIiwgImxz
aGlmdGkiLCAibXVsaSIsICJuZWdpIiwKICAgICAgICAgICAgICAgICAibm90aSIsICJvcmkiLCAi
cnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwgInhvcmkiLCAvXmJpLywgL15idGkvLApAQCAt
NjMxLDYgKzYzMSw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBlbWl0QVJNNjRU
QUMoIm9yciIsIG9wZXJhbmRzLCA6cHRyKQogICAgICAgICB3aGVuICJvcnEiCiAgICAgICAgICAg
ICBlbWl0QVJNNjRUQUMoIm9yciIsIG9wZXJhbmRzLCA6cXVhZCkKKyAgICAgICAgd2hlbiAib3Jo
IgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIiLCBvcGVyYW5kcywgOmhhbGYpCiAgICAg
ICAgIHdoZW4gInhvcmkiCiAgICAgICAgICAgICBlbWl0QVJNNjRUQUMoImVvciIsIG9wZXJhbmRz
LCA6d29yZCkKICAgICAgICAgd2hlbiAieG9ycCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vY2xvb3AucmIKaW5kZXggYjcxNDllODJhY2IuLmE2ODE2Y2JjYTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgpAQCAtNTg1LDYgKzU4NSw4IEBAIGNs
YXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMs
IDppbnQ2NCwgInwiKQogICAgICAgICB3aGVuICJvcnAiCiAgICAgICAgICAgICBjbG9vcEVtaXRP
cGVyYXRpb24ob3BlcmFuZHMsIDppbnRwdHIsICJ8IikKKyAgICAgICAgd2hlbiAib3JoIgorICAg
ICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50MTYsICJ8IikKIAogICAg
ICAgICB3aGVuICJ4b3JpIgogICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRz
LCA6aW50MzIsICJeIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2luc3RydWN0aW9ucy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2lu
c3RydWN0aW9ucy5yYgppbmRleCA3MTc4OGIxMDgzNy4uMTY3Njc1NGEwNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKQEAgLTQyLDYg
KzQyLDcgQEAgTUFDUk9fSU5TVFJVQ1RJT05TID0KICAgICAgIm5lZ3EiLAogICAgICAibm90aSIs
CiAgICAgICJvcmkiLAorICAgICAib3JoIiwKICAgICAgInJzaGlmdGkiLAogICAgICAidXJzaGlm
dGkiLAogICAgICAicnNoaWZ0cCIsCkBAIC02MCw2ICs2MSw3IEBAIE1BQ1JPX0lOU1RSVUNUSU9O
UyA9CiAgICAgICJsb2FkaHNxIiwKICAgICAgInN0b3JlaSIsCiAgICAgICJzdG9yZWIiLAorICAg
ICAic3RvcmVoIiwKICAgICAgImxvYWRkIiwKICAgICAgIm1vdmVkIiwKICAgICAgInN0b3JlZCIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgppbmRleCBlNDQ2NDdjZDNi
Mi4uZGFiNGQ4NWM5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL21pcHMucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5y
YgpAQCAtNTI3LDcgKzUyNyw3IEBAIGRlZiBtaXBzTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKGxp
c3QpCiAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICB3aGVuIC9eKGFkZGl8c3ViaSkv
CiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLnJpc2NMb3dlck1hbGZvcm1lZEltbWVk
aWF0ZXNSZWN1cnNlKG5ld0xpc3QsIC0weDdmZmYuLjB4N2ZmZikKLSAgICAgICAgICAgIHdoZW4g
ImFuZGkiLCAiYW5kcCIsICJvcmkiLCAib3JwIiwgInhvcmkiLCAieG9ycCIKKyAgICAgICAgICAg
IHdoZW4gImFuZGkiLCAiYW5kcCIsICJvcmkiLCAib3JwIiwgIm9yaCIsICJ4b3JpIiwgInhvcnAi
CiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLnJpc2NMb3dlck1hbGZvcm1lZEltbWVk
aWF0ZXNSZWN1cnNlKG5ld0xpc3QsIDAuLjB4ZmZmZikKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKQEAgLTg1NCw3ICs4NTQsNyBAQCBjbGFzcyBJbnN0
cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKICAg
ICAgICAgICAgIGVtaXRNSVBTQ29tcGFjdCgiYW5kIiwgImFuZCIsIG9wZXJhbmRzKQotICAgICAg
ICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICB3aGVuICJvcmkiLCAib3JwIiwgIm9yaCIKICAg
ICAgICAgICAgIGVtaXRNSVBTQ29tcGFjdCgib3IiLCAib3JyIiwgb3BlcmFuZHMpCiAgICAgICAg
IHdoZW4gIm9yaXMiCiAgICAgICAgICAgICBlbWl0TUlQU0NvbXBhY3QoIm9yIiwgIm9ycnMiLCBv
cGVyYW5kcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jp
c2MucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiCmluZGV4IDhi
OGRlOGQxMjhhLi5kOTRlZWFjZTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vcmlzYy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9yaXNjLnJiCkBAIC00ODksNiArNDg5LDExIEBAIGRlZiByaXNjTG93ZXJNaXNwbGFjZWRBZGRy
ZXNzZXMobGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLm9wY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
aXNjQXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywg
ImJzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3Rh
dGlvbikKKyAgICAgICAgICAgIHdoZW4gIm9yaCIKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmlzY0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVj
dGlvbnMsIG5vZGUub3BlcmFuZHMsICJoIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5ub3RhdGlvbikKICAgICAgICAgICAgIHdoZW4gImFkZGQiLCAiZGl2
ZCIsICJzdWJkIiwgIm11bGQiLCAic3FydGQiLCAvXmJkLwogICAgICAgICAgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgppbmRleCAxNjZmNGJkYTEyNy4uZGZiNGY5YzhmMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKQEAgLTg4NSw2ICs4ODUsOCBAQCBj
bGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgaGFuZGxlWDg2T3AoIm9yI3t4ODZTdWZmaXgo
OnB0cil9IiwgOnB0cikKICAgICAgICAgd2hlbiAib3JxIgogICAgICAgICAgICAgaGFuZGxlWDg2
T3AoIm9yI3t4ODZTdWZmaXgoOnF1YWQpfSIsIDpxdWFkKQorICAgICAgICB3aGVuICJvcmgiCisg
ICAgICAgICAgICBoYW5kbGVYODZPcCgib3Ije3g4NlN1ZmZpeCg6aGFsZil9IiwgOmhhbGYpCiAg
ICAgICAgIHdoZW4gInJzaGlmdGkiCiAgICAgICAgICAgICBoYW5kbGVYODZTaGlmdCgic2FyI3t4
ODZTdWZmaXgoOmludCl9IiwgOmludCkKICAgICAgICAgd2hlbiAicnNoaWZ0cCIKQEAgLTk3MSw2
ICs5NzMsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAgICAgIHdo
ZW4gInN0b3JlYiIKICAgICAgICAgICAgICRhc20ucHV0cyAibW92I3t4ODZTdWZmaXgoOmJ5dGUp
fSAje3g4Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgICAgICB3aGVuICJzdG9yZWgiCisg
ICAgICAgICAgICAkYXNtLnB1dHMgIm1vdiN7eDg2U3VmZml4KDpoYWxmKX0gI3t4ODZPcGVyYW5k
cyg6aGFsZiwgOmhhbGYpfSIKICAgICAgICAgd2hlbiAibG9hZGQiCiAgICAgICAgICAgICAkYXNt
LnB1dHMgIm1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgogICAgICAgICB3
aGVuICJtb3ZlZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVz
dWx0VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKaW5k
ZXggOWIzZDBkNzRjOGQuLjU2MjJmMjg5Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1Jlc3VsdFR5cGUuaApAQCAtNDgsNiArNDgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG51bUJpdHNOZWVkZWQgPSA3OwogICAgICAgICBzdGF0
aWNfYXNzZXJ0KChUeXBlQml0cyAmICgoMSA8PCBudW1CaXRzTmVlZGVkKSAtIDEpKSA9PSBUeXBl
Qml0cywgIlRoaXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcy4iKTsKIAorICAgICAgICBj
b25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlwZSgpCisgICAgICAgICAgICA6IFJlc3VsdFR5cGUo
dW5rbm93blR5cGUoKSkKKyAgICAgICAgeworICAgICAgICB9CiAgICAgICAgIGNvbnN0ZXhwciBl
eHBsaWNpdCBSZXN1bHRUeXBlKFR5cGUgdHlwZSkKICAgICAgICAgICAgIDogbV9iaXRzKHR5cGUp
CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCmluZGV4IDg2NmQyYTljMmUzLi43MmUwNDA5MTU0YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00NzYs
OCArNDc2LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3N0cmluZykKICNpZiBFTkFC
TEUoSklUKQogc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9w
TmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmFsdWUgcmVzdWx0LCBKU1ZhbHVlIG9wZXJh
bmQpCiB7Ci0gICAgQXJpdGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEubV9hcml0aFByb2Zp
bGU7Ci0gICAgcHJvZmlsZS5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIFVuYXJ5QXJpdGhQcm9m
aWxlJiBwcm9maWxlID0gbWV0YWRhdGEubV9hcml0aFByb2ZpbGU7CisgICAgcHJvZmlsZS5vYnNl
cnZlQXJnKG9wZXJhbmQpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOdW1iZXIoKSB8fCByZXN1bHQu
aXNCaWdJbnQoKSk7CiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICgh
cmVzdWx0LmlzSW50MzIoKSkgewpAQCAtNTM0LDcgKzUzNCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9uZWdhdGUpCiAjaWYgRU5BQkxFKERGR19KSVQpCiBzdGF0aWMgdm9pZCB1cGRhdGVB
cml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSByZXN1bHQsIEpTVmFsdWUg
bGVmdCwgSlNWYWx1ZSByaWdodCkKIHsKLSAgICBBcml0aFByb2ZpbGUmIHByb2ZpbGUgPSAqY29k
ZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlJiBw
cm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMocGMpOwogCiAgICAg
aWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICghcmVzdWx0LmlzSW50MzIoKSkg
ewpAQCAtNTk1LDcgKzU5NSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZGQpCiAgICAg
SlNWYWx1ZSB2MSA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1
ZSB2MiA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICBBcml0aFByb2Zp
bGUmIGFyaXRoUHJvZmlsZSA9ICpjb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKHBjKTsKKyAg
ICBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpjb2RlQmxvY2stPmJpbmFyeUFy
aXRoUHJvZmlsZUZvclBDKHBjKTsKICAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZUxIU0FuZFJIUyh2
MSwgdjIpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FkZChnbG9iYWxPYmplY3QsIHYxLCB2
Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382248</attachid>
            <date>2019-10-29 16:20:07 -0700</date>
            <delta_ts>2019-10-29 16:58:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>123278</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZiZWQyNDIwYzVmLi4xNmYyYzk4MTM3MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY4IEBACisyMDE5LTEwLTE0ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGltZSBvbmx5IHVzZWQgZm9y
IGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQgYmVpbmcgdXNlZCBmb3Ig
bmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1c2VkIGZvciBpbmMgYW5k
IGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBhdGNoIEkgbWFrZSBhIHNl
cGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3IgYSBzaW5nbGUgYXJndW1l
bnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisKKyAgICAgICAgQWZ0ZXIg
ZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXplZCB0aGF0IHRoZSBSZXN1
bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQcm9maWxlIGFyZSBub3Qg
bmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFscmVhZHkgaW4gdGhlIGJ5
dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3ZpbmcgdGhlbSBhbGxvd2Vk
IHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBmaXQgaW4gMTYgYml0cyAo
OSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRoZSB0d28ga2luZHMgc2Vw
YXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRlcGVuZGVudGx5IGluIHRo
ZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlcXVpcmVkIGFkZGluZyB0aGUgIm9yaCIg
aW5zdHJ1Y3Rpb24gdG8gdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCB0byBzZXQgYml0cyBpbiB0aGUg
QXJpdGhQcm9maWxlLgorICAgICAgICBUaGlzIGluIHR1cm4gbW90aXZhdGVkIHRoZSBhZGRpdGlv
biBvZiAic3RvcmVoIiwgYXMgb24gUklTQyBwbGF0Zm9ybXMgIm9yaCIgb24gYSBtZW1vcnkgbG9j
YXRpb24gaXMgYWN0dWFsbHkgbG9hZGggLT4gb3JoIC0+IHN0b3JlaC4KKworICAgICAgICAqIGJ5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51
bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6
c2hvdWxkRW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50IGNvbnN0KToKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbkludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlRG91YmxlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOb25OdW1lcmlj
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSW50MzJPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDUyT3Zl
cmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkTm9u
TmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRO
ZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5v
bk51bWVyaWMpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3cp
OgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSW50NTJPdmVyZmxvdyk6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6YWRkcmVzc09mQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6QXJp
dGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpoYXNCaXRzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRCaXQpOgorICAgICAgICAoSlNDOjpVbmFy
eUFyaXRoUHJvZmlsZTo6VW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmFyeUFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlOjphcmdPYnNlcnZlZFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJv
ZmlsZTo6c2V0QXJnT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2Zp
bGU6OmFyZ1Nhd0ludDMyKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nh
d051bWJlcik6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdOb25OdW1i
ZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZUFyZyk6CisgICAg
ICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpCaW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cyk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMpOgorICAg
ICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cyk6
CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6c2V0TGhzT2JzZXJ2ZWRUeXBlKToK
KyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpzZXRSaHNPYnNlcnZlZFR5cGUpOgor
ICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFMpOgorICAgICAgICAo
SlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFNBbmRSSFMpOgorICAgICAgICAoSlND
OjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2ZWRUeXBlRW1wdHkpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVEFkZElDKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklU
U3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElD
KToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bWFrZURpdlNhZmUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJ
Qyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlN
YXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJp
dGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRB
ZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJ
Q0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKiBqaXQvSklURGl2R2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJ
VERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZSk6CisgICAgICAgICog
aml0L0pJVE1hdGhJQy5oOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OkpJVE1hdGhJQyk6Cisg
ICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpK
SVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OmlzQmluYXJ5UHJv
ZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6SklUQmluYXJ5TWF0aElDOjpKSVRCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjppc1VuYXJ5UHJvZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6
SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAgICAgICAgKiBqaXQvSklUTXVsR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVROZWdHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJ
VFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBsbGludC9M
TEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBl
OjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAg
IChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTAtMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHRoZSBSZW1vdGUgUGxheWJhY2sgQVBJLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRl
eCA5OTk5MzNiOGMwZS4uN2Y0NmY3M2ZjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCkBAIC0zMiw3ICszMiw4IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVS
ZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01v
ZGUgbW9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBK
U1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCFzaG91
bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3Vs
ZEVtaXRTZXRCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNDEgKzU5LDUxIEBAIHZv
aWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNW
YWx1ZVJlZ3MgcmVncywgVGFnUmVnCiAgICAgZG9uZS5saW5rKCZqaXQpOwogfQogCi1ib29sIEFy
aXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRF
bWl0U2V0RG91YmxlKCkgY29uc3QKIHsKLSAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxl
OjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJpdGhQcm9m
aWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlOworICAg
IHVpbnQzMl90IG1hc2sgPSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlOwogICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0g
bWFzazsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJz
JiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBj
b25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0RG91YmxlKCkpCi0gICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50MzJPdmVyZmxvdyB8
IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJs
ZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YWRkcmVzc09mQml0cygpKSk7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0
Tm9uTnVtZXJpYygpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29s
IEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNv
bnN0CiB7CiAgICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsKICAg
ICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxl
OjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxk
VHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdAogewogICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6OkJpZ0ludDsK
ICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJpdGhQcm9m
aWxlOjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChz
aG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoTm9uTnVtZXJpYyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZp
ZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQo
KSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9m
aWxlOjpCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRz
KCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmlnSW50
KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CiB9CisK
Ky8vIEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBhYm92ZSBm
b3IgVW5hcnlBcml0aFByb2ZpbGUvQmluYXJ5QXJpdGhQcm9maWxlCisvLyBJZiBjaGFuZ2luZyB0
aGUgc2l6ZSBvZiBlaXRoZXIsIGFkZCB0aGUgY29ycmVzcG9uZGluZyBsaW5lcyBoZXJlLgordGVt
cGxhdGUgY2xhc3MgQXJpdGhQcm9maWxlPHVpbnQxNl90PjsKICNlbmRpZiAvLyBFTkFCTEUoSklU
KQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKQEAgLTEwMSw3ICsxMTIsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0
aFByb2ZpbGU8VD4mIHByb2ZpbGUpCiB7CiAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yID0gIiI7
CiAKQEAgLTEzNSwxOSArMTQ3LDMwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCiAgICAgICAgICAgICBzZXBhcmF0b3Ig
PSAifCI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0
UGF0aCgpKQotICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiVG9vayBzcGVjaWFsIGZhc3Qg
cGF0aC4iKTsKICAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAg
IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFBy
b2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisgICAgb3V0LnByaW50KCIgQXJnIE9ic2VydmVkVHlw
ZTo8Iik7CisgICAgb3V0LnByaW50KHByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkpOworICAgIG91
dC5wcmludCgiPiIpOworfQorCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAgIHByaW50SW50ZXJuYWwo
b3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPj4ocHJv
ZmlsZSkpOworCisgICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0UGF0aCgpKQorICAgICAg
ICBvdXQucHJpbnQoIiBUb29rIHNwZWNpYWwgZmFzdCBwYXRoLiIpOwogCiAgICAgb3V0LnByaW50
KCIgTEhTIE9ic2VydmVkVHlwZTo8Iik7CiAgICAgb3V0LnByaW50KHByb2ZpbGUubGhzT2JzZXJ2
ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgiPiBSSFMgT2JzZXJ2ZWRUeXBlOjwiKTsKICAgICBv
dXQucHJpbnQocHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKSk7CiAgICAgb3V0LnByaW50KCI+Iik7
Ci0KLSAgICBvdXQucHJpbnQoIiBMSFMgUmVzdWx0VHlwZTo8IiwgUmF3UG9pbnRlcihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocHJvZmlsZS5saHNSZXN1bHRUeXBl
KCkuYml0cygpKSkpKTsKLSAgICBvdXQucHJpbnQoIj4gUkhTIFJlc3VsdFR5cGU6PCIsIFJhd1Bv
aW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2ZpbGUu
cmhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7Ci0gICAgb3V0LnByaW50KCI+Iik7CiB9CiAKIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBKU0M6Ok9ic2VydmVkVHlw
ZSYgb2JzZXJ2ZWRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5oCmluZGV4IGZjYzRlMjgxOGJlLi5jYWQ5OWY0OGJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNjYsMTE5ICs2NiwyMTcg
QEAgcHJpdmF0ZToKICAgICB1aW50OF90IG1fYml0cyB7IDAgfTsKIH07CiAKLXN0cnVjdCBBcml0
aFByb2ZpbGUgewotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bWJl
ck9mRmxhZ0JpdHMgPSA2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzUmVzdWx0
VHlwZVNoaWZ0ID0gbnVtYmVyT2ZGbGFnQml0czsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IGxoc1Jlc3VsdFR5cGVTaGlmdCA9IHJoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6
Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNPYnNlcnZl
ZFR5cGVTaGlmdCA9IGxoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6Om51bUJpdHNOZWVk
ZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNPYnNlcnZlZFR5cGVTaGlmdCA9
IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkOwotCi0g
ICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPT0gMywgIldlIG1h
a2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQgdGhhdCBoZXJlLiIpOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KH4oKDEgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKHJoc09ic2Vy
dmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1h
c2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ofigoMSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkg
fCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyAxKSkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRU
eXBlU2hpZnQgKyAyKSkpKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmVzdWx0
VHlwZU1hc2sgPSAoMSA8PCBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQml0ZmllbGRUeXBl
PgorY2xhc3MgQXJpdGhQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBlbnVtIE9ic2VydmVkUmVzdWx0
cyB7CisgICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8IDAsCisgICAgICAgIE5lZ1plcm9E
b3VibGUgICAgPSAxIDw8IDEsCisgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCisg
ICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCisgICAgICAgIEludDUyT3ZlcmZsb3cg
ICAgPSAxIDw8IDQsCisgICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgfTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVk
ZWQgPSA2OwogCi0gICAgZW51bSBjbGFzcyBDb25zdGFudFRhZyB7IENvbnN0YW50IH07CisgICAg
Ym9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1pl
cm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBi
b29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9E
b3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9CisgICAg
Ym9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVn
WmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyBy
ZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgp
IGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUlu
dDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Cisg
ICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMo
SW50NTJPdmVyZmxvdyk7IH0KIAotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3Qgc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNl
cnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVk
VHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSA8PSAoc2l6ZW9mKHVpbnQz
Ml90KSAqIDgpIC0gMSwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFz
ayksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhl
c2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZh
c3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hv
dWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBoaWdo
ZXIgYml0LiIpOworICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRC
aXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJs
ZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51
bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJ
bnQoKSB7IHNldEJpdChCaWdJbnQpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZs
b3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1
Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KIAotICAgIEFyaXRoUHJvZmls
ZShSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNv
bnN0YW50LCBhcmcpCisgICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUpCiAgICAg
ewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSBhcmcuYml0cygpKTsK
LSAgICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFT
U0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOworICAgICAgICBpZiAodmFsdWUuaXNJ
bnQzMigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIo
KSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93
IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGU7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKKyAg
ICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgbV9iaXRzIHw9IE5vbk51bWVyaWM7CiAgICAgfQogCi0gICAgQXJpdGhQcm9m
aWxlKFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBBcml0aFByb2Zp
bGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBsaHMsIHJocykKKyAgICBjb25zdCB2b2lkKiBhZGRy
ZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4gJm1fYml0czsgfQorCisjaWYgRU5BQkxFKEpJVCkK
KyAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKKyAgICAvLyBkb3VibGUuIFNldHMg
Tm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCisgICAgdm9pZCBlbWl0T2JzZXJ2
ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhh
dmVUYWdSZWdpc3RlcnMpOworCisgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3Zl
cmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCisgICAgYm9vbCBzaG91
bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0RG91YmxlKENDYWxsSGVs
cGVycyYpIGNvbnN0OworCisgICAgLy8gU2V0cyBOb25OdW1iZXIuCisgICAgdm9pZCBlbWl0U2V0
Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRO
b25OdW1lcmljKCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIEJpZ0ludAorICAgIHZvaWQgZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdDsKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisgICAgY29uc3RleHByIHVpbnQz
Ml90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworcHJvdGVjdGVkOgorICAgIEFy
aXRoUHJvZmlsZSgpCiAgICAgewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMo
KSA9PSBsaHMuYml0cygpICYmIHJoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gcmhzLmJpdHMoKSk7
Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBB
U1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKICAgICB9CiAKLSAgICBBcml0aFBy
b2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQotICAgICAgICA6IEFyaXRoUHJvZmlsZSh0eXBlcy5m
aXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKLSAgICB7IH0KKyAgICBib29sIGhhc0JpdHMoaW50IG1h
c2spIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIG1hc2s7IH0KKyAgICB2b2lkIHNldEJpdChpbnQg
bWFzaykgeyBtX2JpdHMgfD0gbWFzazsgfQorCisgICAgQml0ZmllbGRUeXBlIG1fYml0cyB7IDAg
fTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVy
YXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRh
dGlvbiB0byBpdC4KK307CisKKy8qIFRoaXMgY2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dpbmcgY29t
cG9uZW50cyBpbiAxNiBiaXRzOgorICogLSBPYnNlcnZlZFJlc3VsdHMKKyAqIC0gT2JzZXJ2ZWRU
eXBlIGZvciB0aGUgYXJndW1lbnQKKyAqLwordXNpbmcgVW5hcnlBcml0aFByb2ZpbGVCYXNlID0g
dWludDE2X3Q7CitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8
VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBh
cmdPYnNlcnZlZFR5cGVTaGlmdCA9IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVkZWQ7CiAKLSAg
ICBBcml0aFByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljX2Fzc2VydChhcmdPYnNlcnZl
ZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8PSBzaXplb2YoVW5hcnlB
cml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdGhlIHR5cGUgb2YgdGhlIHVu
ZGVybHlpbmcgYml0ZmllbGQuIik7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmls
ZSBmcm9tSW50KHVpbnQzMl90IGJpdHMpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8VW5h
cnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSk7CisK
KyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZFR5cGVN
YXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7CisKK3B1YmxpYzoK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPFVuYXJ5QXJp
dGhQcm9maWxlQmFzZT4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEFyaXRoUHJvZmlsZSB7IENv
bnN0YW50VGFnOjpDb25zdGFudCwgYml0cyB9OworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRU
eXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1w
dHkoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2
ZWRVbmFyeUludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ug
b2JzZXJ2ZWRJbnRCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUg
b2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNv
bnN0ZXhwciB1aW50MzJfdCBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2
ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDgwMDAwMCwgIiIp
OwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5
QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29u
c3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZFVuYXJ5TnVtYmVyKCkKKyAgICBzdGF0aWMgY29u
c3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJlckJpdHMoKQogICAgIHsK
ICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVk
VHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4MTAwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJv
bUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gb2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAg
ICByZXR1cm4gYml0czsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGFyZ09i
c2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGFyZ09i
c2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CisgICAgdm9pZCBzZXRBcmdP
YnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKKyAgICAgICAgYml0cyAmPSBjbGVhckFyZ09ic2Vy
dmVkVHlwZUJpdE1hc2s7CisgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIG1fYml0cyA9IGJpdHM7CisgICAgICAgIEFTU0VSVChhcmdP
YnNlcnZlZFR5cGUoKSA9PSB0eXBlKTsKKyAgICB9CisKKyAgICB2b2lkIGFyZ1Nhd0ludDMyKCkg
eyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9Cisg
ICAgdm9pZCBhcmdTYXdOdW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5
cGUoKS53aXRoTnVtYmVyKCkpOyB9CisgICAgdm9pZCBhcmdTYXdOb25OdW1iZXIoKSB7IHNldEFy
Z09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CisKKyAg
ICB2b2lkIG9ic2VydmVBcmcoSlNWYWx1ZSBhcmcpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIGlmIChhcmcuaXNOdW1iZXIoKSkg
eworICAgICAgICAgICAgaWYgKGFyZy5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgbmV3UHJv
ZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5l
d1Byb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbmV3
UHJvZmlsZS5hcmdTYXdOb25OdW1iZXIoKTsKKworICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKKyAgICB9CisKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKKyAgICB9CisKKyAg
ICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9OworCisvKiBUaGlz
IGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMgaW4gMTYgYml0czoKKyAqIC0g
T2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgcmlnaHQtaGFuZC1zaWRlCisg
KiAtIE9ic2VydmVkVHlwZSBmb3IgbGVmdC1oYW5kLXNpZGUKKyAqIC0gYSBiaXQgdXNlZCBieSBk
aXZpc2lvbiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgc3BlY2lhbCBmYXN0IHBhdGggd2FzIHRha2Vu
CisgKi8KK3VzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50MTZfdDsKK2NsYXNzIEJp
bmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxl
QmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsKKworICAgIHN0YXRpY19hc3NlcnQoT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJXZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9uIGFib3V0
IHRoYXQgaGVyZS4iKTsKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQ
cm9maWxlQmFzZT4ofigwYjExMSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCkpOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGxo
c09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVtQml0
c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0
aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNo
aWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChs
aHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9
IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWlu
dDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVh
ckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2Vj
dC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2Jz
ZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4iKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCA+IH5jbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBh
dGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKKworICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+ICgpCisg
ICAgeworICAgICAgICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgQVNTRVJUKHJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQotICAgIHN0YXRp
YyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5SW50SW50KCkKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZEludEludEJpdHMo
KQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsg
T2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90
IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwg
KG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4OTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9t
SW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNl
cnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7CisgICAgICAgIHJldHVy
biBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZl
ZEJpbmFyeU51bWJlckludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2Zp
bGVCYXNlIG9ic2VydmVkTnVtYmVySW50Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIg
T2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigp
IH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2Vy
dmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRz
ID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2Jz
ZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0
aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50
KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0g
KG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4g
Yml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRC
aW5hcnlJbnROdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZEludE51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9i
c2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9
OwogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZl
ZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChiaXRzID09IDB4YTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJp
dHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9i
c2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51
bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0
czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5h
cnlOdW1iZXJOdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHBy
IE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIo
KSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5i
aXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8
PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAw
eDEyMDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNv
bnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0
cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwg
cmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9CiAKLSAg
ICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7Ci0gICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8
IDAsCi0gICAgICAgIE5lZ1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCi0gICAgICAgIE5vbk51bWVy
aWMgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCi0g
ICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAg
ICAgPSAxIDw8IDUsCi0gICAgfTsKLQotICAgIFJlc3VsdFR5cGUgbGhzUmVzdWx0VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUoKG1fYml0cyA+PiBsaHNSZXN1bHRUeXBlU2hpZnQpICYg
cmVzdWx0VHlwZU1hc2spOyB9Ci0gICAgUmVzdWx0VHlwZSByaHNSZXN1bHRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gUmVzdWx0VHlwZSgobV9iaXRzID4+IHJoc1Jlc3VsdFR5cGVTaGlmdCkgJiByZXN1
bHRUeXBlTWFzayk7IH0KLQogICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgbGhzT2JzZXJ2ZWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gT2JzZXJ2ZWRUeXBlKChtX2JpdHMgPj4gbGhzT2JzZXJ2ZWRU
eXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBlTWFzayk7IH0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRU
eXBlIHJoc09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRz
ID4+IHJoc09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgdm9p
ZCBzZXRMaHNPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCiAgICAgewotICAgICAgICB1
aW50MzJfdCBiaXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJp
dHMgPSBtX2JpdHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNr
OwogICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0Owog
ICAgICAgICBtX2JpdHMgPSBiaXRzOwpAQCAtMTg3LDcgKzI4NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0UmhzT2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsgCi0gICAg
ICAgIHVpbnQzMl90IGJpdHMgPSBtX2JpdHM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgYml0cyA9IG1fYml0czsKICAgICAgICAgYml0cyAmPSBjbGVhclJoc09ic2VydmVkVHlwZUJp
dE1hc2s7CiAgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQ7CiAgICAgICAgIG1fYml0cyA9IGJpdHM7CkBAIC0xOTYsMzkgKzI5NCw2IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgdG9va1NwZWNpYWxGYXN0UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IHNwZWNpYWxGYXN0UGF0aEJpdDsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBj
b25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KLSAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQot
ICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNC
aXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRp
ZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsg
fQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmln
SW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIHZv
aWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJs
ZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1pl
cm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChO
b25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJ
bnQpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQz
Mk92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRC
aXQoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBj
b25zdCB7IHJldHVybiAmbV9iaXRzOyB9Ci0KLSAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1
ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBt
X2JpdHMgfD0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9
IEJpZ0ludDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2JpdHMg
fD0gTm9uTnVtZXJpYzsKLSAgICB9Ci0KICAgICB2b2lkIGxoc1Nhd0ludDMyKCkgeyBzZXRMaHNP
YnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9CiAgICAgdm9pZCBs
aHNTYXdOdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRo
TnVtYmVyKCkpOyB9CiAgICAgdm9pZCBsaHNTYXdOb25OdW1iZXIoKSB7IHNldExoc09ic2VydmVk
VHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CkBAIC0yMzgsNyArMzAz
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBvYnNlcnZlTEhTKEpTVmFsdWUgbGhzKQogICAgIHsK
LSAgICAgICAgQXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKKyAgICAgICAgQmluYXJ5
QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKICAgICAgICAgaWYgKGxocy5pc051bWJl
cigpKSB7CiAgICAgICAgICAgICBpZiAobGhzLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBu
ZXdQcm9maWxlLmxoc1Nhd0ludDMyKCk7CkBAIC0yNTQsNyArMzE5LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgb2JzZXJ2ZUxIUyhsaHMpOwogCi0gICAgICAgIEFyaXRoUHJvZmlsZSBuZXdQ
cm9maWxlID0gKnRoaXM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0g
KnRoaXM7CiAgICAgICAgIGlmIChyaHMuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgaWYgKHJo
cy5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5yaHNTYXdJbnQzMigpOwpA
QCAtMjY2LDQ3ICszMzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoSklUKSAgICAKLSAgICAvLyBTZXRzIChJbnQz
Mk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91
YmxlKSBpZiBpdCBzZWVzIGEKLSAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBz
ZWVzIGEgbm9uLW51bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBl
cnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwot
ICAgIAotICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVn
WmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgotICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJs
ZSgpIGNvbnN0OwotICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsK
LSAgICAKLSAgICAvLyBTZXRzIE5vbk51bWJlci4KLSAgICB2b2lkIGVtaXRTZXROb25OdW1lcmlj
KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMo
KSBjb25zdDsKLQotICAgIC8vIFNldHMgQmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KEND
YWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0
OwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLSAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cygp
IGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0ZXhwciBleHBs
aWNpdCBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWcsIHVpbnQzMl90IGJpdHMpCi0gICAgICAgIDog
bV9iaXRzKGJpdHMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUo
Q29uc3RhbnRUYWcsIFJlc3VsdFR5cGUgYXJnKQotICAgICAgICA6IG1fYml0cyhhcmcuYml0cygp
IDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQog
ICAgIHsKKyAgICAgICAgcmV0dXJuIGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSAmJiByaHNP
YnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgY29uc3RleHByIEFyaXRoUHJv
ZmlsZShDb25zdGFudFRhZywgUmVzdWx0VHlwZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQotICAgICAg
ICA6IG1fYml0cygobGhzLmJpdHMoKSA8PCBsaHNSZXN1bHRUeXBlU2hpZnQpIHwgKHJocy5iaXRz
KCkgPDwgcmhzUmVzdWx0VHlwZVNoaWZ0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNC
aXRzKGludCBtYXNrKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBtYXNrOyB9Ci0gICAgdm9pZCBz
ZXRCaXQoaW50IG1hc2spIHsgbV9iaXRzIHw9IG1hc2s7IH0KLQotICAgIHVpbnQzMl90IG1fYml0
cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmds
ZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXBy
ZXNlbnRhdGlvbiB0byBpdC4KLQogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIH07CiAKQEAgLTMxNCw3ICszNDMsOCBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpBcml0
aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6
VW5hcnlBcml0aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNv
bnN0IEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlJik7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBjb25zdCBKU0M6Ok9ic2VydmVkVHlwZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4
IGMwODZiOGViM2YzLi5hYzRjODBlZTk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVzIFsKICAgICA6
SlNUeXBlLAogICAgIDpKU1ZhbHVlLAogICAgIDpMTEludENhbGxMaW5rSW5mbywKKyAgICA6UmVz
dWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxh
ZywKICAgICA6UHJvcGVydHlPZmZzZXQsCkBAIC01Nyw3ICs1OCw4IEBAIHR5cGVzIFsKIAogICAg
IDpWYWx1ZVByb2ZpbGUsCiAgICAgOlZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIsCi0gICAg
OkFyaXRoUHJvZmlsZSwKKyAgICA6VW5hcnlBcml0aFByb2ZpbGUsCisgICAgOkJpbmFyeUFyaXRo
UHJvZmlsZSwKICAgICA6QXJyYXlQcm9maWxlLAogICAgIDpBcnJheUFsbG9jYXRpb25Qcm9maWxl
LAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKQEAgLTI4MiwxMCArMjg0LDcgQEAgb3Bf
Z3JvdXAgOlByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIG9wZXJhbmRUeXBlczogT3BlcmFuZFR5
cGVzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0
aFByb2ZpbGUKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBh
cml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBCaW5hcnlB
cml0aFByb2ZpbGUKICAgICB9CiAKIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCkBA
IC0zNjcsMTMgKzM2NiwxMCBAQCBvcCA6bmVnYXRlLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5kVHlwZXMsCisgICAgICAgIHJlc3VsdFR5cGU6IFJl
c3VsdFR5cGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6
IEFyaXRoUHJvZmlsZSwKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAg
ICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBV
bmFyeUFyaXRoUHJvZmlsZSwKICAgICB9CiAKIG9wIDpub3QsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdlMjExNjgzZDc5Li4wNDYxYTYzNzcy
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTE0NzgsMjUgKzE0NzgsMjUgQEAgU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1
YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxv
Y2tlcikubV9zdHViSW5mb3MuYWRkKGFjY2Vzc1R5cGUpOwogfQogCi1KSVRBZGRJQyogQ29kZUJs
b2NrOjphZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVEFkZElDKiBD
b2RlQmxvY2s6OmFkZEpJVEFkZElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fYWRkSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRN
dWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
K0pJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAg
ICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbXVsSUNzLmFkZChhcml0aFByb2ZpbGUp
OwogfQogCi1KSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKK0pJVFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3ViSUNzLmFkZChh
cml0aFByb2ZpbGUpOwogfQogCi1KSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lD
KFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9u
ZWdJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CkBAIC0zMDgzLDE2ICszMDgzLDE5IEBAIGNvbnN0IElu
c3RydWN0aW9uKiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjKQogICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKS5hdChvZmZzZXQgKyB0YXJnZXQpLnB0
cigpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCitCaW5hcnlBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgcmV0dXJuIGFyaXRoUHJvZmlsZUZvclBDKGluc3Ry
dWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpKTsKKyAgICByZXR1cm4g
YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKSkucHRyKCkpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9m
aWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorVW5hcnlBcml0aFByb2ZpbGUqIENvZGVC
bG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCkKK3sKKyAgICByZXR1cm4gdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVj
dGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKSk7Cit9CisKK0JpbmFyeUFy
aXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0
cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewotICAgIGNhc2Ug
b3BfbmVnYXRlOgotICAgICAgICByZXR1cm4gJnBjLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YSh0
aGlzKS5tX2FyaXRoUHJvZmlsZTsKICAgICBjYXNlIG9wX2FkZDoKICAgICAgICAgcmV0dXJuICZw
Yy0+YXM8T3BBZGQ+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CiAgICAgY2FzZSBv
cF9tdWw6CkBAIC0zMTA4LDExICszMTExLDIzIEBAIEFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjph
cml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKK1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxl
Rm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIHN3aXRjaCAocGMtPm9wY29kZUlE
KCkpIHsKKyAgICBjYXNlIG9wX25lZ2F0ZToKKyAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdh
dGU+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJvb2wgQ29kZUJs
b2NrOjpjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2FzZShCeXRlY29kZUluZGV4IGJ5dGVjb2Rl
SW5kZXgpCiB7CiAgICAgaWYgKCFoYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgQXJpdGhQcm9maWxlKiBwcm9maWxlID0gYXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIHBy
b2ZpbGUgPSBiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
OwogICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBw
cm9maWxlLT50b29rU3BlY2lhbEZhc3RQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZDJjMDY5ODAzYTguLjE4ZTQ4YzI2NmEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04Myw2ICs4Myw4IEBA
IHN0cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8vIG5hbWVzcGFjZSBERkcKICNlbmRpZgogCitjbGFz
cyBVbmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U7CkBAIC05Niw3ICs5OCw2IEBAIGNsYXNzIFN0cnVjdHVyZVN0
dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CiAKLXN0cnVjdCBBcml0
aFByb2ZpbGU7CiBzdHJ1Y3QgT3BDYXRjaDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBE
b250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwpAQCAtMjc5LDIy
ICsyODAsMjIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVREYXRhJiBlbnN1cmVKSVREYXRhU2xv
dyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKTsKIAotICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJ
QyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRNdWxJQyogYWRkSklUTXVsSUMoQXJpdGhQcm9maWxl
Kik7Ci0gICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVFN1
YklDKiBhZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqKTsKKyAgICBKSVRBZGRJQyogYWRkSklUQWRk
SUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEJpbmFy
eUFyaXRoUHJvZmlsZSopOworICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhVbmFyeUFyaXRoUHJv
ZmlsZSopOworICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUqKTsK
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUQWRkR2VuZXJhdG9yPjo6
dmFsdWU+Ojp0eXBlPgotICAgIEpJVEFkZElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9m
aWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhwcm9maWxlKTsgfQorICAgIEpJVEFkZElDKiBhZGRN
YXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhw
cm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRNdWxH
ZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTXVsSUMqIGFkZE1hdGhJQyhBcml0aFBy
b2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CisgICAgSklU
TXVsSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFk
ZEpJVE11bElDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9y
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0
b3IsIEpJVE5lZ0dlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBKSVROZWdJQyogYWRkTWF0
aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTmVnSUMocHJvZmlsZSk7
IH0KKyAgICBKSVROZWdJQyogYWRkTWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7
IHJldHVybiBhZGRKSVROZWdJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Nh
bWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUU3Vi
SUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklD
KHByb2ZpbGUpOyB9CisgICAgSklUU3ViSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUq
IHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CiAKICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNjZXNzVHlwZSk7CiAKQEAgLTQ5Nyw4ICs0OTgsMTAg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMTEludENhbGxMaW5rSW5mbyhjb25zdCBGdW5jdG9y
Jik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0
ZWNvZGVJbmRleCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJ
bnN0cnVjdGlvbiopOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSog
dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25z
dCBJbnN0cnVjdGlvbiopOwogCiAgICAgYm9vbCBjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2Fz
ZShCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmgKaW5kZXggOWFiNzcxMzdhYTYuLmQ0MWNmYzEyYjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTIzNiw2ICsyMzYsMTggQEAgc3RydWN0IEZpdHM8
RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2Vu
dW08RT46OnZhbHUKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1
Y3QgRml0czxSZXN1bHRUeXBlLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihSZXN1bHRU
eXBlKSAhPSBzaXplLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6
ZT4geworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFJlc3VsdFR5cGUpID09IHNpemVvZih1aW50
OF90KSk7CisgICAgdXNpbmcgQmFzZSA9IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAgICBzdGF0
aWMgYm9vbCBjaGVjayhSZXN1bHRUeXBlIHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNrKHR5cGUu
Yml0cygpKTsgfQorCisgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgY29udmVy
dChSZXN1bHRUeXBlIHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNvbnZlcnQodHlwZS5iaXRzKCkpOyB9
CisKKyAgICBzdGF0aWMgUmVzdWx0VHlwZSBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5
cGUgdHlwZSkgeyByZXR1cm4gUmVzdWx0VHlwZShCYXNlOjpjb252ZXJ0KHR5cGUpKTsgfQorfTsK
KwogdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8T3BlcmFuZFR5cGVzLCBz
aXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihPcGVyYW5kVHlwZXMpICE9IHNpemUsIHN0ZDo6
dHJ1ZV90eXBlPj4gewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmRUeXBlcykgPT0g
c2l6ZW9mKHVpbnQxNl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKaW5kZXggNzEw
NGQwMWFlMTEuLjJiNjlmMzZjN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCkBA
IC02NiwxMCArNjYsMTYgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0
UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAg
ICB1LmFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVU
YWdSZWdpc3RlcnMpOworICAgIGNhc2UgVW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAg
ICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90
SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAg
ICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQ
cm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVy
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC05NCwxMCArMTAwLDE2IEBAIHZvaWQgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAg
dS5hcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgIGNhc2UgVW5hcnlBcml0
aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5vYnNlcnZlUmVz
dWx0KHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gfQorICAgIH0KKworICAgIGNhc2Ug
QmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUt
Pm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KIAog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaAppbmRleCBjZmI4MzQ3MDZhZi4uNWQ4MWM0YzkwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUuaApAQCAtMzYsMTAgKzM2LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBV
bmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIENDYWxs
SGVscGVyczsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
S2V5Owotc3RydWN0IEFyaXRoUHJvZmlsZTsKIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKIGNsYXNz
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgewpAQCAtNTcsMTIgKzU4LDIxIEBAIHB1Ymxp
YzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwogICAgIH0KLSAg
ICAKLSAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKEFyaXRoUHJvZmlsZSogcHJvZmls
ZSkKKworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoVW5hcnlBcml0aFByb2ZpbGUq
IHByb2ZpbGUpCisgICAgeworICAgICAgICBpZiAocHJvZmlsZSkgeworICAgICAgICAgICAgbV9r
aW5kID0gVW5hcnlBcml0aFByb2ZpbGVSZWFkeTsKKyAgICAgICAgICAgIHUudW5hcnlBcml0aFBy
b2ZpbGUgPSBwcm9maWxlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fa2luZCA9IE5v
bmU7CisgICAgfQorCisgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShCaW5hcnlBcml0
aFByb2ZpbGUqIHByb2ZpbGUpCiAgICAgewogICAgICAgICBpZiAocHJvZmlsZSkgewotICAgICAg
ICAgICAgbV9raW5kID0gQXJpdGhQcm9maWxlUmVhZHk7Ci0gICAgICAgICAgICB1LmFyaXRoUHJv
ZmlsZSA9IHByb2ZpbGU7CisgICAgICAgICAgICBtX2tpbmQgPSBCaW5hcnlBcml0aFByb2ZpbGVS
ZWFkeTsKKyAgICAgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwogICAgIH0KQEAgLTc5LDcgKzg5
LDggQEAgcHJpdmF0ZToKICAgICBlbnVtIEtpbmQgewogICAgICAgICBOb25lLAogICAgICAgICBS
ZWFkeSwKLSAgICAgICAgQXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIFVuYXJ5QXJpdGhQcm9m
aWxlUmVhZHksCisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAogICAgICAgICBMYXp5
T3BlcmFuZAogICAgIH07CiAgICAgCkBAIC05MCw3ICsxMDEsOCBAQCBwcml2YXRlOgogICAgICAg
ICB7IH0KIAogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7Ci0gICAgICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0
aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
OwogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAg
ICAgICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCAxNTRiZDNjZmJjYy4uOGU1ODU3MzhmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNjY1
LDE0ICsxNjY1LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKICAgICByZXR1cm4gZHN0OwogfQogCi1S
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMgdHlwZXMp
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQgb3Bj
b2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBSZXN1bHRUeXBlIHR5cGUp
CiB7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfbm90OgogICAgICAgICBl
bWl0VW5hcnlPcDxPcE5vdD4oZHN0LCBzcmMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIG9w
X25lZ2F0ZToKLSAgICAgICAgT3BOZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGVzKTsK
KyAgICAgICAgT3BOZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGUpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIG9wX2JpdG5vdDoKICAgICAgICAgZW1pdFVuYXJ5T3A8T3BCaXRub3Q+
KGRzdCwgc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0MTk3YWJjMTJlNS4uMzhlNzdjZGIxNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTY4Miw3ICs2ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBkc3Q7CiAgICAgICAgIH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5h
cnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIE9wZXJhbmRU
eXBlcyk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRVbmFyeU9wKE9wY29kZUlELCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSk7CiAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQmluYXJ5T3A+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggMmUwM2JlMGI3YzcuLjA1OGZlNTlkNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yMTM5LDcgKzIxMzksNyBA
QCBSZWdpc3RlcklEKiBVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYyA9
IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8ocG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSk7Ci0gICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0VW5hcnlPcChvcGNvZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCBzcmMuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERlc2NyaXB0b3Io
KSkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpLCBtX2V4cHItPnJlc3VsdERlc2Ny
aXB0b3IoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVbmFyeVBs
dXNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDIyMzQ0NWMyZDk0
Li44Y2I3MTAwNDFlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTk0Miw1NiArOTQyLDYwIEBAIHByaXZhdGU6CiAgICAgICAgIGlm
ICghaXNYODYoKSAmJiAobm9kZS0+b3AoKSA9PSBBcml0aE1vZCB8fCBub2RlLT5vcCgpID09IFZh
bHVlTW9kKSkKICAgICAgICAgICAgIHJldHVybiBub2RlOwogCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsK
LSAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEFyaXRoQWRkOgotICAgICAgICAg
ICAgICAgIGNhc2UgQXJpdGhTdWI6Ci0gICAgICAgICAgICAgICAgY2FzZSBWYWx1ZUFkZDoKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJs
ZVJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVOb25OdW1lcmljKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdz
KE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChh
cml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVNdWw6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBBcml0aE11bDogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
T3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2Rl
TWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJp
dGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJv
SW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9i
c2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
Tm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aE5l
Z2F0ZTogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5saHNPYnNlcnZl
ZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3Vi
bGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VG
bGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBBcml0aEFk
ZDoKKyAgICAgICAgY2FzZSBBcml0aFN1YjoKKyAgICAgICAgY2FzZSBWYWx1ZUFkZDogeworICAg
ICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgo
bV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
RG91YmxlKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURv
dWJsZVJlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9u
TnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVO
b25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgVmFsdWVNdWw6CisgICAgICAgIGNhc2UgQXJpdGhNdWw6IHsKKyAgICAgICAgICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4
KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3co
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDUy
KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9k
ZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2Zp
bGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Cisg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAgICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7CisgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAg
ICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsK
KyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Cisg
ICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKKyAgICAgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVuYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAg
ICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGlmIChhcml0aFByb2ZpbGUtPmFyZ09ic2VydmVkVHlwZSgpLnNhd051bWJlcigpIHx8IGFyaXRo
UHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsK
KyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkg
fHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVOb25OdW1lcmljKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJl
bnRJbmRleCkpIHsKQEAgLTEwMzMsOCArMTAzNyw4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gbWFrZSB0aGlzIG1vcmUgZ3Jh
bnVsYXIuCiAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJh
c2VsaW5lIHwgTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsKLSAgICAgICAgCi0gICAgICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsKKworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1
cnJlbnRJbmRleCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQo
KSkKICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IGFkYmY1MDI1Y2Yz
Li45OWVlZjZhZjk5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAg
LTE2NTIsNyArMTY1Miw5IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9kZSogY3VycmVuCiAgICAgICAgICAgICAg
ICAgcmV0dXJuICZwcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpOwogCiAgICAgICAgICAgICBpZiAo
cHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAg
ICAgIGlmIChBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSkp
CisgICAgICAgICAgICAgICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmls
ZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmlnaW4u
c2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgICAgICAgICBpZiAoVW5hcnlBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHBy
b2ZpbGVkQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmln
aW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0NzQxNjE0YzU3Yi4uYWE1MjZj
ODMwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0zOTk0LDcgKzM5OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVBZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sg
PSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5k
ZXgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVEFkZElDKGFy
aXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZUFkZE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVBZGQ7CkBAIC00MDE4LDcgKzQwMTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29k
ZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5v
cmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2Rl
QmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgYXV0byByZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwpAQCAtNDYxMiw3ICs0NjEy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUqIG5vZGUp
CiB7CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFz
ZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgp
OwotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgVW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTmVnSUMqIG5lZ0lD
ID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0
byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplOwogICAg
IGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7CkBAIC00
ODM1LDcgKzQ4MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwoTm9k
ZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFw
aCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTXVs
SUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7
CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXpl
OwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYWYw
YThlYjA3MGIuLmRmMmRlYTIwZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC0yMTEyLDcgKzIxMTIsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJ
bmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2Nr
LT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemU7
CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7
CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPihhcml0aFByb2Zp
bGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTIxMzMs
NyArMjEzMyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVC
bG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9u
ID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5n
RnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJ
QzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25S
ZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE1NCw3ICsyMTU0LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNl
bGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9j
ay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAg
ICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXpl
OwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVs
OwogICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQcm9m
aWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTYy
LDcgKzIxNjIsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRv
ciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVuYW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9IHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2lu
dGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21waWxl
VW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdG
dW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGlsZVVu
YXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hp
bmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKIApAQCAtMjI0OCw3ICsyMjQ4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBlbmFt
ZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZnVu
Y3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1ZSAm
JiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+Ojp0
eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNo
aW5nRnVuY3Rpb24pCisgICAgdm9pZCBjb21waWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJl
cGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAg
ICAgICAgIApAQCAtMjQxNyw3ICsyNDE3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2Rl
QmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRl
eCgpOwotICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3Vi
T3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlU3ViOwogICAgICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5l
cmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVu
Y3Rpb24pOwpAQCAtMzA5NSw3ICszMDk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBi
YXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5l
Q29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRl
eCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdh
dGVPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRp
b25Bcml0aE5lZ2F0ZTsKICAgICAgICAgY29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRv
cj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBiNWVmZTI2ODA0Ni4uMmI0YTVkNjRiZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtOTE5LDcgKzkxOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAvLyBJdCB3aWxsIGdpdmUgdGhlIHNsb3cgcGF0aCB0aGUgc2FtZSB2YWx1
ZSByZWFkIGJ5IHRoZSBmYXN0IHBhdGguCiAgICAgICAgIEdldFB1dEluZm8gY29waWVkR2V0UHV0
SW5mbyhPcFB1dFRvU2NvcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4K
LSAgICAgICAgQXJpdGhQcm9maWxlIGNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCk7CisgICAg
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOwogCiAg
ICAgICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwogCkBAIC05MzksNyArOTM5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7
CiAKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgdW5zaWduZWQ+IG1fY29waWVkR2V0UHV0SW5m
b3M7Ci0gICAgICAgIEhhc2hNYXA8dWludDY0X3QsIEFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0
aFByb2ZpbGVzOworICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBCaW5hcnlBcml0aFByb2ZpbGU+
IG1fY29waWVkQXJpdGhQcm9maWxlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNo
ZWNrczsKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9s
bGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAK
aW5kZXggNjI3YWYyNzg3ZTAuLjc0MGIyZWQ4YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBP
YnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03Myw3ICs3
Myw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0
LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmls
aW5nKQorYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3Nj
cmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBt
X2xlZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQWRkR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdl
bmVyYXRvci5oCmluZGV4IDRkYzM0YTJmNWI2Li42NzVjZjkzYzkwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCkBAIC01NSw4ICs1NSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3Jp
Z2h0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5l
UmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJh
dGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmlu
YXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZh
bGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVy
YW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3Bl
cmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiBy
aWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNWZjZjg4OWQzMTguLjc2MzQ0NWNjYWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1
Miw3ICs0NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29w
X25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdh
dGU+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIFVuYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0
ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMq
IG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAg
bV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsK
ICAgICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwpA
QCAtNjMzLDE0ICs2MzMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChj
dXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRp
YyBPcGVyYW5kVHlwZXMgZ2V0T3BlcmFuZFR5cGVzKGNvbnN0IEFyaXRoUHJvZmlsZSYgYXJpdGhQ
cm9maWxlKQotewotICAgIHJldHVybiBPcGVyYW5kVHlwZXMoYXJpdGhQcm9maWxlLmxoc1Jlc3Vs
dFR5cGUoKSwgYXJpdGhQcm9maWxlLnJoc1Jlc3VsdFR5cGUoKSk7Ci19Ci0KIHZvaWQgSklUOjpl
bWl0X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BB
ZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVEFkZElDKiBh
ZGRJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBhZGRJQyk7CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BBZGQ+KGFkZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZh
bHVlQWRkUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlQWRkKTsKQEAgLTY4NSw3ICs2ODAsNyBAQCB2
b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElD
LCBjb25zdCBJbnN0cnVjdGlvbiogYwogCiAgICAgYm9vbCBnZW5lcmF0ZWRJbmxpbmVDb2RlID0g
bWF0aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywgbWF0aElDR2VuZXJhdGlvblN0YXRlKTsKICAg
ICBpZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgICAgICBVbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHNyY1JlZ3MsIGFyaXRoUHJvZmls
ZSk7CiAgICAgICAgIGVsc2UKQEAgLTcwOCw3ICs3MDMsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5h
bWUgTgogdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVk
RnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxl
ZEZ1bmN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wPigpOwotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRB
cml0aFByb2ZpbGUoYnl0ZWNvZGUpKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qu
b2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGlu
dCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKQEAgLTcyNyw4ICs3MjEsOCBAQCB2b2lk
IEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywg
Y29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogI2Vu
ZGlmCiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAg
ICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBw
ZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOwor
ICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5z
ZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAg
bGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBA
IC03NTgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJ
QzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIGxlZnRSZWdzKTsKICAgICAgICAgZWxzZSBpZiAocmln
aHRPcGVyYW5kLmlzQ29uc3QoKSkKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
b3AyLCByaWdodFJlZ3MpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1h
dGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmls
ZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0
aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIGFyaXRoUHJvZmls
ZSk7CiAgICAgICAgIGVsc2UKQEAgLTc5OCw3ICs3OTIsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJ
Q1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlv
biogYwogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBV
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsK
ICAgICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAg
ICBpZiAobWF0aElDR2VuZXJhdGlvblN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCkKICAgICAg
ICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFJlc3VsdChyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dKTWljPihwcm9maWxl
ZFJlcGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgc3JjUmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKQEAgLTgz
MCw3ICs4MjQsNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgbWF0aElDR2VuZXJhdGlv
blN0YXRlLnNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0
T3BlcmFuZFR5cGVzKGNvcGllZEFyaXRoUHJvZmlsZShieXRlY29kZSkpOwogICAgIGludCByZXN1
bHQgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9s
aHMub2Zmc2V0KCk7CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwpAQCAt
ODQ1LDggKzgzOCw4IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gbGVmdFJlZ3M7CiAjZW5kaWYKICAgICAKLSAgICBTbmlwcGV0T3BlcmFuZCBs
ZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJh
bmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVj
b2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3Bl
cmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihn
ZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC04NjQsNyArODU3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0
IEluc3RydWN0aW9uKgogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYK
IAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUo
KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQ
cm9maWxlKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkp
IHsKICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0
Y2gpCiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbldpdGhSZXN1bHQoYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0dKSk1pYz4o
cHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIFRydXN0ZWRJbW1Q
dHIobWF0aElDKSk7CkBAIC04OTIsMTkgKzg4NSwxNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Ns
b3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24q
CiB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERp
dj4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9w
MSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jo
cy5vZmZzZXQoKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgT3BlcmFuZFR5cGVzIHR5cGVz
ID0gZ2V0T3BlcmFuZFR5cGVzKG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlKTsKICAgICBKU1ZhbHVl
UmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyByaWdo
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IGxlZnRSZWdzOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDI7CiAjZWxzZQotICAgIE9w
ZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmls
ZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
OwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7
CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxlZnRSZWdzOwpAQCAtOTEyLDEyICs5MDIs
MTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAjZW5kaWYKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IGZwUmVnVDI7CiAKLSAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHI7CisgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyOwogICAgIGlmIChzaG91bGRFbWl0UHJvZmls
aW5nKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RGl2PigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKIAotICAgIFNuaXBw
ZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVzLmZpcnN0KCkpOwotICAgIFNuaXBwZXRPcGVyYW5k
IHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQoKSk7CisgICAgU25pcHBldE9wZXJhbmQgbGVmdE9w
ZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuZmlyc3QoKSk7CisgICAgU25pcHBldE9wZXJh
bmQgcmlnaHRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLnNlY29uZCgpKTsKIAogICAg
IGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDEpKQogICAgICAgICBsZWZ0T3BlcmFuZC5zZXRD
b25zdEludDMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDEpKTsKQEAgLTk1OSw3ICs5NDksNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFBy
b2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudElu
c3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2Zp
bGU7CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9jb2RlQmxvY2stPmFkZEpJVE11bElDKGFyaXRo
UHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rp
b24sIG11bElDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcE11bD4obXVsSUMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVNdWwpOwpA
QCAtOTc1LDcgKzk2NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAKIHZvaWQgSklUOjpl
bWl0X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BT
dWI+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdWI+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVFN1YklDKiBz
dWJJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBzdWJJQyk7CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BTdWI+KHN1YklDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZh
bHVlU3ViUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcAppbmRleCA2NmUxYmUxNGE4ZC4uYjhjNDc5ODZm
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmIGppdCkKICAgICBub3REb3VibGVaZXJvLmxpbmsoJmppdCk7CiAjZW5k
aWYKICAgICBpZiAobV9hcml0aFByb2ZpbGUpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6c3BlY2lhbEZhc3RQYXRoQml0KSwgQ0NhbGxI
ZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9hcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkp
OworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0
aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRy
ZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICBqaXQuYm94RG91Ymxl
KG1fbGVmdEZQUiwgbV9yZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVREaXZHZW5lcmF0b3IuaAppbmRleCA4Mzk2Njc3OTQzZi4uNzA4ZGIxMGQ2Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaApAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAgICAgSklURGl2R2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
LCBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCiAgICAgICAgIEZQUlJlZyBs
ZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRj
aEZQUiwKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQorICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIpCiAgICAgICAg
IDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKICAgICAgICAgLCBtX3JpZ2h0T3BlcmFuZChy
aWdodE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQpAQCAtNzEsNyArNzEsNyBA
QCBwcml2YXRlOgogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7CiAgICAgRlBSUmVnIG1fc2NyYXRj
aEZQUjsKICAgICBib29sIG1fZGlkRW1pdEZhc3RQYXRoIHsgZmFsc2UgfTsKLSAgICBBcml0aFBy
b2ZpbGUqIG1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogbV9hcml0aFBy
b2ZpbGU7CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1fZW5kSnVtcExpc3Q7CiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX3Nsb3dQYXRoSnVtcExpc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDYyZWFiOWI5N2ZhLi4yNWJjYzJiOWM1NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTcxNiwxMyArNzE2LDEzIEBA
IEFMV0FZU19JTkxJTkUgR2V0UHV0SW5mbyBKSVQ6OmNvcGllZEdldFB1dEluZm8oT3BQdXRUb1Nj
b3BlIGJ5dGVjb2RlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLUFMV0FZU19J
TkxJTkUgQXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVj
b2RlKQorQUxXQVlTX0lOTElORSBCaW5hcnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFBy
b2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCiB7CiAgICAgdWludDY0X3Qga2V5ID0gKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihCaW5hcnlPcDo6b3Bjb2RlSUQpICsgMSkgPDwgMzIgfCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYnl0ZWNvZGUubV9tZXRhZGF0YUlEKTsKICAgICBhdXRvIGl0ZXJhdG9yID0g
bV9jb3BpZWRBcml0aFByb2ZpbGVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXRlcmF0b3IgIT0gbV9j
b3BpZWRBcml0aFByb2ZpbGVzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVl
OwotICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJv
ZmlsZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAg
ICBtX2NvcGllZEFyaXRoUHJvZmlsZXMuYWRkKGtleSwgYXJpdGhQcm9maWxlKTsKICAgICByZXR1
cm4gYXJpdGhQcm9maWxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRNYXRoSUMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKaW5k
ZXggNTY0NWU0MmRlZmYuLmZkYWVjOTI3NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE1hdGhJQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TWF0aElDLmgKQEAgLTUyLDExICs1MiwxMSBAQCBzdHJ1Y3QgTWF0aElDR2VuZXJhdGlvblN0YXRl
IHsKIAogI2RlZmluZSBFTkFCTEVfTUFUSF9JQ19TVEFUUyAwCiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBHZW5lcmF0b3JUeXBlLCBib29sKCppc1Byb2ZpbGVFbXB0eSkoQXJpdGhQcm9maWxlJik+Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgdHlwZW5hbWUgQXJpdGhQcm9maWxlVHlw
ZT4KIGNsYXNzIEpJVE1hdGhJQyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgSklUTWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgIEpJVE1h
dGhJQyhBcml0aFByb2ZpbGVUeXBlKiBhcml0aFByb2ZpbGUpCiAgICAgICAgIDogbV9hcml0aFBy
b2ZpbGUoYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CkBAIC03MSw3ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5j
b2RlU2l6ZSgpOwogCiAgICAgICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewotICAgICAgICAgICAg
aWYgKGlzUHJvZmlsZUVtcHR5KCptX2FyaXRoUHJvZmlsZSkpIHsKKyAgICAgICAgICAgIGlmICht
X2FyaXRoUHJvZmlsZS0+aXNPYnNlcnZlZFR5cGVFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gSXQgbG9va3MgbGlrZSB0aGUgTWF0aElDIGhhcyB5ZXQgdG8gZXhlY3V0ZS4gV2UgZG9uJ3Qg
d2FudCB0byBlbWl0IGNvZGUgaW4gdGhpcwogICAgICAgICAgICAgICAgIC8vIGNhc2UgZm9yIGEg
Y291cGxlIHJlYXNvbnMuIEZpcnN0LCB0aGUgb3BlcmF0aW9uIG1heSBuZXZlciBleGVjdXRlLCBz
byBpZiB3ZSBkb24ndCBlbWl0CiAgICAgICAgICAgICAgICAgLy8gY29kZSwgaXQncyBhIHdpbi4g
U2Vjb25kLCBpZiB0aGUgb3BlcmF0aW9uIGRvZXMgZXhlY3V0ZSwgd2UgY2FuIGVtaXQgYmV0dGVy
IGNvZGUKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2xvd1BhdGhTdGFy
dExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHN0YXRl
LnNsb3dQYXRoU3RhcnQpOwogICAgIH0KIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KKyAgICBBcml0aFByb2ZpbGVUeXBl
KiBhcml0aFByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2FyaXRoUHJvZmlsZTsgfQogCiAjaWYg
RU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgc2l6ZV90IG1fZ2VuZXJhdGVkQ29kZVNpemUgeyAw
IH07CkBAIC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0gICAgQXJp
dGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAgICBBcml0aFByb2ZpbGVUeXBlKiBtX2FyaXRo
UHJvZmlsZTsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
IG1fY29kZTsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2lubGlu
ZVN0YXJ0OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1faW5saW5l
RW5kOwpAQCAtMjQ2LDE1ICsyNDYsMTEgQEAgcHVibGljOgogICAgIEdlbmVyYXRvclR5cGUgbV9n
ZW5lcmF0b3I7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0JpbmFyeVByb2ZpbGVFbXB0eShBcml0aFBy
b2ZpbGUmIGFyaXRoUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2Vy
dmVkVHlwZSgpLmlzRW1wdHkoKSB8fCBhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNF
bXB0eSgpOwotfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+Ci1jbGFzcyBKSVRC
aW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzQmluYXJ5UHJv
ZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdl
bmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4gewogcHVibGljOgotICAgIEpJVEJpbmFy
eU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8
R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQcm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkKKyAgICBK
SVRCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAgICAg
IDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4oYXJpdGhQcm9m
aWxlKQogICAgIHsKICAgICB9CiB9OwpAQCAtMjYzLDE2ICsyNTksMTEgQEAgdHlwZWRlZiBKSVRC
aW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPiBKSVRBZGRJQzsKIHR5cGVkZWYgSklUQmluYXJ5
TWF0aElDPEpJVE11bEdlbmVyYXRvcj4gSklUTXVsSUM7CiB0eXBlZGVmIEpJVEJpbmFyeU1hdGhJ
QzxKSVRTdWJHZW5lcmF0b3I+IEpJVFN1YklDOwogCi0KLWlubGluZSBib29sIGlzVW5hcnlQcm9m
aWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCi17Ci0gICAgcmV0dXJuIGFyaXRo
UHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7Ci19CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgR2VuZXJhdG9yVHlwZT4KLWNsYXNzIEpJVFVuYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJ
QzxHZW5lcmF0b3JUeXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRVbmFyeU1h
dGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgVW5hcnlBcml0aFByb2ZpbGU+
IHsKIHB1YmxpYzoKLSAgICBKSVRVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0
eT4oYXJpdGhQcm9maWxlKQorICAgIEpJVFVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVuYXJ5QXJp
dGhQcm9maWxlPihhcml0aFByb2ZpbGUpCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKaW5kZXggODNkMjkzYjYyNTIuLmNm
NmJhYTUyZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0
b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMm
IGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5l
cmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2Ug
ZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2Jz
ZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC04OSw3ICs4OSw3IEBAIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0
LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxs
U25pcHBldDsKIH0KIAotYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRNdWxHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1
bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQ
UlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsK
QEAgLTIwNSwxOCArMjA1LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAKICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIG5vdE5lZ2F0aXZlWmVybyA9IGppdC5icmFuY2g2NChDQ2FsbEhl
bHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTY0KG5lZ2F0aXZlWmVyb0JpdHMpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhl
bHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwor
ICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFBy
b2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0
aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
ZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7
Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmls
ZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRo
UHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIEND
YWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygp
KSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hH
UFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUyKSwgbV9z
Y3JhdGNoR1BSKTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6SW1tMzIoMHg3ZmYp
LCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9JbnQ1Mk92ZXJm
bG93ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW5PckVxdWFsLCBtX3NjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMxKSk7CiAKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgbm9JbnQ1
Mk92ZXJmbG93LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwpAQCAtMjI3
LDE4ICsyMjcsMTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICAgICAgICAgbm90TmVnYXRp
dmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1
bHQucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOwogICAgICAg
ICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBtX3Jlc3VsdC50YWdHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobmVnYXRp
dmVaZXJvQml0cyA+PiAzMikpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBq
aXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5l
Z1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUt
PmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGpp
dC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAg
IGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVn
WmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+
YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAg
ICAgICAgaml0Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAg
IGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIgLSAzMiksIG1fc2NyYXRjaEdQ
Uik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3Jh
dGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogICAgICAgICAKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAgICBlbmRK
dW1wTGlzdC5hcHBlbmQobm9JbnQ1Mk92ZXJmbG93KTsKICAgICAgICAgaWYgKG1fc2NyYXRjaEdQ
UiA9PSBtX3Jlc3VsdC50YWdHUFIoKSB8fCBtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQucGF5bG9h
ZEdQUigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKaW5k
ZXggMzZkMjZlYTEyNGUuLjYwODc3OTY2ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTXVsR2VuZXJhdG9yLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgICAgICBB
U1NFUlQoIW1fbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9w
ZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5s
aW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25T
dGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5h
cnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIHNsb3dKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENv
bnN0YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5p
c1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRW
YWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRP
cGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcAppbmRleCA5MmMyOWRkNjMwYS4uY2VlYmUzOTA5NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3Vs
dCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRo
SUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBV
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hH
UFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5w
YXlsb2FkR1BSKCkpOwpAQCAtNDUsNyArNDUsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklU
TmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwog
ICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBl
IG9ic2VydmVkVHlwZXMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKICAgICBpZiAoYXJp
dGhQcm9maWxlKQotICAgICAgICBvYnNlcnZlZFR5cGVzID0gYXJpdGhQcm9maWxlLT5saHNPYnNl
cnZlZFR5cGUoKTsKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+YXJnT2Jz
ZXJ2ZWRUeXBlKCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghb2JzZXJ2ZWRUeXBlcy5pc0Vt
cHR5KCksICJXZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2VuZXJhdGUgYW55dGhpbmcgaWYgd2Ug
ZG8gbm90IGhhdmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYgKG9ic2VydmVkVHlwZXMuaXNPbmx5
Tm9uTnVtYmVyKCkpCkBAIC04Miw3ICs4Miw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRO
ZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAg
ICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0K
IAotYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVu
ZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25z
dCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxp
bmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogI2VuZGlmCiAgICAgLy8gVGhl
IGZsYWdzIG9mIEFyaXRoTmVnYXRlIGFyZSBiYXNpYyBpbiBERkcuCiAgICAgLy8gV2Ugb25seSBu
ZWVkIHRvIGtub3cgaWYgd2UgZXZlciBwcm9kdWNlZCBhIG51bWJlci4KLSAgICBpZiAoc2hvdWxk
RW1pdFByb2ZpbGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2
ZWRUeXBlKCkuc2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgp
KQorICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nICYmIGFyaXRoUHJvZmlsZSAmJiAhYXJpdGhQ
cm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSAmJiAhYXJpdGhQcm9maWxlLT5k
aWRPYnNlcnZlRG91YmxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFNldERvdWJsZShq
aXQpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TmVnR2VuZXJhdG9yLmgKaW5kZXggOGEwYzJkNTE3ZDYuLjc4N2I3MDc2ODI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKQEAgLTQzLDggKzQzLDggQEAg
cHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgIHsgfQogCi0g
ICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3Qg
QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlv
blN0YXRlJiwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3Qs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IFVuYXJ5QXJp
dGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogcHJpdmF0ZToKICAgICBK
U1ZhbHVlUmVncyBtX3Jlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDljNjc2ZjE1MDQ2Li4yMjBmY2Q0ZWQ5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNjQzLDcgKzI2NDMsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQogfQogCi1B
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVkQWRkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9wMiwgQXJpdGhQcm9maWxlJiBhcml0
aFByb2ZpbGUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVkQWRkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9wMiwgQmluYXJ5
QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAgYXJpdGhQcm9maWxlLm9ic2VydmVM
SFNBbmRSSFMob3AxLCBvcDIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGQoZ2xvYmFsT2Jq
ZWN0LCBvcDEsIG9wMik7CkBAIC0yNjU5LDcgKzI2NTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGQoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmls
ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUp
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwpAQCAtMjY3Nyw3ICsyNjc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGcK
ICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBKU1Zh
bHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAotICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VS
VChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEs
IG9wMik7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZUFkZFBy
b2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTI2OTksNyArMjY5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRo
UHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMt
PmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocHJvZmlsZWRBZGQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSwgKmFyaXRoUHJvZmlsZSkp
OwogfQpAQCAtMjcxNCw3ICsyNzE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBK
U1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAogICAgIGF1dG8gbm9u
T3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGROb09wdGltaXplOwotICAgIGlmIChB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBp
ZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxl
KCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAg
ICAgYWRkSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9w
dGltaXplVmFyaWFudCk7CiAKQEAgLTI3NDcsNyArMjc0Nyw3IEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIHVucHJvZmlsZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTXVsKGdsb2JhbE9iamVjdCwgb3Ax
LCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmls
ZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2Zp
bGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FMV0FZU19JTkxJ
TkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2Vy
dmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTI3ODgs
NyArMjc4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBu
b25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemU7Ci0gICAgaWYg
KEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpKQorICAg
IGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2Zp
bGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBtdWxJ
Qy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVW
YXJpYW50KTsKIApAQCAtMjc5OSw3ICsyNzk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoK
ICAgICByZXR1cm4gdW5wcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29k
ZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
TXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVs
UHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI4MTUsNyAr
MjgxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQ
cm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChh
cml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAg
YXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRp
bWl6ZTsKQEAgLTI4MzQsNyArMjgzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAot
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwor
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmls
ZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBwcm9maWxlZE11bChn
bG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQpA
QCAtMjg2MCw3ICsyODYwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpAQCAtMjg2OSw3ICsyODY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWwKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wZXJhbmQpOwotICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAg
ICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7CiAKICAgICBKU1ZhbHVlIHByaW1W
YWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4OTcsOSArMjg5Nyw5IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZSk7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxp
bmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCk7
CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTI5MzEsOCArMjkzMSw4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpKQotICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVM
SFMob3BlcmFuZCk7CisgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBu
ZWdJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUFyZyhv
cGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMp
CkBAIC0yOTU4LDcgKzI5NTgsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSB1bnByb2ZpbGVkU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N1YihnbG9iYWxPYmplY3QsIG9wMSwgb3AyKSk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wg
c2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2
ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKQEAgLTI5ODIsNyArMjk4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jCiAgICAgcmV0dXJuIHVucHJvZmlsZWRTdWIoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBl
bmNvZGVkT3AyKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogCkBAIC0zMDAw
LDcgKzMwMDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
U3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8g
bm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplOwotICAgIGlm
IChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKSkKKyAg
ICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9m
aWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgc3Vi
SUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXpl
VmFyaWFudCk7CiAKQEAgLTMwMjYsNyArMzAyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBn
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRo
UHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTMwNDUsNyArMzA0NSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
c3ViSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwog
ICAgIHJldHVybiBwcm9maWxlZFN1Yih2bSwgZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNv
ZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKaW5kZXggMzdlODM2MTVkNDcuLjU5NWFlYzQ3Y2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzgsNiArMzgsOCBAQCB0eXBlZGVm
IGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAgICAgCiBjbGFzcyBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOworY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFz
cyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCdXR0ZXJmbHk7CiBjbGFzcyBDYWxsRnJhbWU7
CiBjbGFzcyBDYWxsTGlua0luZm87CkBAIC02NCw3ICs2Niw2IEBAIGNsYXNzIFdhdGNocG9pbnRT
ZXQ7CiBzdHJ1Y3QgQnlWYWxJbmZvOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIHN0cnVjdCBJ
bnN0cnVjdGlvbjsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiAKIGV4dGVybiAiQyIgewogCkBAIC03
Nyw3ICs3OCw3IEBAIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogICAgIEE6IEpTQXJyYXkqCiAg
ICAgQWFwOiBBcnJheUFsbG9jYXRpb25Qcm9maWxlKgogICAgIEFwOiBBcnJheVByb2ZpbGUqCi0g
ICAgQXJwOiBBcml0aFByb2ZpbGUqCisgICAgQXJwOiBCaW5hcnlBcml0aFByb2ZpbGUqCiAgICAg
QjogQnV0dGVyZmx5KgogICAgIEJ5OiBCeVZhbEluZm8qCiAgICAgQzogSlNDZWxsKgpAQCAtMjgy
LDcgKzI4Myw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0lmRXhjZXB0
aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKFZNCiBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkSGFzSW5zdGFuY2UpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFy
eUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRk
SUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRk
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdURl9JTlRFUk5BTDsKQEAgLTI5Miwx
MyArMjkzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11
bElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQ
cm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJp
bmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBvcGVyYW5kKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIEFy
aXRoUHJvZmlsZSopOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwg
VW5hcnlBcml0aFByb2ZpbGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgSklUTmVnSUMqKTsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBC
aW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVTdWJOb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCmluZGV4IDc5NWMyNzU4NGMwLi43
YjFhOGI4MTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJh
dG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElD
SW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJz
JiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2Vu
ZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3Rh
dGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdl
IGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9i
c2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtNzgsNyArNzgsNyBAQCBKSVRNYXRoSUNJbmxp
bmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGpp
dCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVs
bFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEND
YWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUU3ViR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhK
dW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hv
dWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRH
UFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRHUFIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAppbmRleCA1NjFm
NjMzNGFlMy4uMzQ5MWE4M2ZlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3ViR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dWJHZW5lcmF0b3IuaApAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zY3Jh
dGNoRlBSKHNjcmF0Y2hGUFIpCiAgICAgeyB9CiAKLSAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29u
c3QgQXJpdGhQcm9maWxlKik7Ci0gICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3Vs
ZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5hcnlBcml0
aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxk
RW1pdFByb2ZpbGluZyk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0xlZnRPcGVyYW5kVmFsaWRDb25z
dGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBp
c1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQpIHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGJkYTMw
OGM4NGQyLi5jMDM0MWM5NTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKQEAgLTEzNSwzNiArMTM1LDQ5IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMoVk0mIHZtKQogI2VuZGlmCiAKICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAg
YXJpdGhQcm9maWxlLmFyZ1Nhd0ludDMyKCk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUu
Yml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEJpdHMoKSk7CisgICAgICAg
IEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAg
ICAgICBhcml0aFByb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckJpdHMoKSk7
CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVt
YmVyKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRo
UHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CiAgICAgICAgIGFy
aXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkuYml0cygpKTsKLSAg
ICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCku
bGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQo
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLnJoc09ic2VydmVkVHlwZSgpLmlz
T25seUludDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5h
cnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKICAgICB9
CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBCaW5h
cnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3
TnVtYmVyKCk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5
TnVtYmVySW50KCkuYml0cygpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6
Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVy
KCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlO
dW1iZXJJbnQoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51
bWJlckludEJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRU
eXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09i
c2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdOdW1iZXIoKTsKICAgICAgICAgYXJp
dGhQcm9maWxlLnJoc1Nhd051bWJlcigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkuYml0cygp
KTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVt
YmVyTnVtYmVyKCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwotICAgICAgICBT
VEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5y
aHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdW1iZXJC
aXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlz
T25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5
cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxl
IGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsK
ICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CiAgICAgICAgIGFyaXRoUHJvZmls
ZS5yaHNTYXdOdW1iZXIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0g
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmJpdHMoKSk7Ci0gICAgICAg
IFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmxo
c09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5yaHNPYnNlcnZlZFR5cGUoKS5p
c09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEJp
bmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkpOworICAgICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgICAg
ICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsK
ICAgICB9CiB9CiBJR05PUkVfV0FSTklOR1NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IGEyNWY5ODRhYmRh
Li5mNWQ5MTc3NDYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogCiBj
b25zdCBpbnQ2NF90KiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKIHsKLS8vIFRoaXMg
aXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldHNfZXh0cmFj
dG9yLnJiLCBhbmQgY29udGFpbnMgY29kZQorLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5
IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNv
ZGUKIC8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIg
aWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgogLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2Ug
aGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0
c0V4dHJhY3RvcgogLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdob3NlIG9mZnNldHMgd2UncmUgZXh0
cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAw
MTM1ODc3MjFiOS4uYjJhNzQyZTdiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI0MCwxMyArMjQwLDE1IEBAIGNv
bnN0IElzSW52YWxpZGF0ZWQgPSBjb25zdGV4cHIgSXNJbnZhbGlkYXRlZAogIyBTaGFkb3dDaGlj
a2VuIGRhdGEKIGNvbnN0IFNoYWRvd0NoaWNrZW5UYWlsTWFya2VyID0gY29uc3RleHByIFNoYWRv
d0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlclZhbHVlCiAKLSMgQXJpdGhQcm9maWxlIGRhdGEK
LWNvbnN0IEFyaXRoUHJvZmlsZUludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZl
ZFVuYXJ5SW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHBy
IChBcml0aFByb2ZpbGU6Om9ic2VydmVkVW5hcnlOdW1iZXIoKS5iaXRzKCkpCi1jb25zdCBBcml0
aFByb2ZpbGVJbnRJbnQgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJ
bnRJbnQoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJJbnQgPSBjb25zdGV4cHIg
KEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5iaXRzKCkpCi1jb25zdCBB
cml0aFByb2ZpbGVJbnROdW1iZXIgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRC
aW5hcnlJbnROdW1iZXIoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIg
PSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5i
aXRzKCkpCisjIFVuYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0IEFyaXRoUHJvZmlsZUludCA9
IGNvbnN0ZXhwciAoVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cygpKQorY29uc3Qg
QXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHByIChVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2
ZWROdW1iZXJCaXRzKCkpCisKKyMgQmluYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0IEFyaXRo
UHJvZmlsZUludEludCA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dEludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IGNvbnN0ZXhwciAoQmlu
YXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJv
ZmlsZUludE51bWJlciA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dE51bWJlckJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IGNvbnN0ZXhw
ciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKSkKIAogIyBQ
b2ludGVyIFRhZ3MKIGNvbnN0IEJ5dGVjb2RlUHRyVGFnID0gY29uc3RleHByIEJ5dGVjb2RlUHRy
VGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGJjMjMwZTU3Mzg2Li4yZTcyZWMyZDcxNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KQEAgLTk5Miw4ICs5OTIsOCBAQCBlbmQpCiAKIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCiAKLSAgICBtYWNybyBhcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgb3Jp
IHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6
Om1fYml0c1t0NV0KKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAg
b3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRo
UHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgIGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAt
MTAwMiwxMiArMTAwMiwxMiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdh
dGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcgogICAgIGJpbmVxIHQx
LCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CiAgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwg
Lm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDIKLSAgICBhcml0aFByb2ZpbGUoQXJpdGhQcm9maWxl
SW50KQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJu
IChJbnQzMlRhZywgdDIpCiAub3BOZWdhdGVTcmNOb3RJbnQ6CiAgICAgYmlhIHQxLCBMb3dlc3RU
YWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgYXJpdGhQcm9m
aWxlKEFyaXRoUHJvZmlsZU51bWJlcikKKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9m
aWxlTnVtYmVyKQogICAgIHJldHVybih0MSwgdDIpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDE5
LDcgKzEwMTksNyBAQCBlbmQpCiBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24p
CiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1h
Y3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0K
KyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQ
cm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAg
ICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZjJkZGJiMjc5ZWEuLjcyZjg0
ZWE4NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtOTY0LDIyICs5NjQsMjQgQEAgZW5kKQogCiAKIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUo
dHlwZSkKKyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIGVuZAorCiAgICAgZ2V0KG1f
b3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAg
ICAgbWV0YWRhdGEodDEsIHQyKQotICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0
aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCiAgICAgYnFiIHQzLCBudW1i
ZXJUYWcsIC5vcE5lZ2F0ZU5vdEludAogICAgIGJ0aXogdDMsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0
ZVNsb3cKICAgICBuZWdpIHQzCiAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICBvcmkgQXJpdGhQ
cm9maWxlSW50LCB0MgotICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRo
UHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIHVwZGF0ZUFyaXRoUHJvZmls
ZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuKHQzKQogLm9wTmVnYXRlTm90SW50OgogICAg
IGJ0cXogdDMsIG51bWJlclRhZywgLm9wTmVnYXRlU2xvdwogICAgIHhvcnEgMHg4MDAwMDAwMDAw
MDAwMDAwLCB0MwotICAgIG9yaSBBcml0aFByb2ZpbGVOdW1iZXIsIHQyCi0gICAgc3RvcmVpIHQy
LCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2Jp
dHNbdDFdCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKICAgICBy
ZXR1cm4odDMpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC05OTMsNyArOTk1LDcgQEAgbWFjcm8gYmlu
YXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRp
b25BbmRTdG9yZSwgZG8KICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQogCiAgICAgICAgIG1hY3Jv
IHByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisgICAgICAg
ICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSAr
IFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAgICAgIGdl
dChtX3JocywgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm0ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKaW5kZXgg
OTg4MWU0ZGJkMDMuLjVlOTgzNGNjYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXJtLnJiCkBAIC00MTgsNyArNDE4LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAg
ICAgIGVuZAogICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCiAgICAgICAgICAgICBlbWl0QXJt
Q29tcGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAib3JpIiwgIm9y
cCIKKyAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIsICJvcmgiCiAgICAgICAgICAgICBlbWl0QXJt
Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKICAgICAgICAgd2hlbiAib3JpcyIKICAg
ICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJzIiwgIm9ycnMiLCBvcGVyYW5kcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKaW5kZXggNGNkOGY2NmUzMDMuLmRk
NjYzMDJlMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm02NC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpA
QCAtMzc4LDcgKzM3OCw3IEBAIGNsYXNzIFNlcXVlbmNlCiAgICAgICAgICAgICBjYXNlIG5vZGUu
b3Bjb2RlCiAgICAgICAgICAgICB3aGVuICJsb2FkYiIsICJsb2FkYnNpIiwgImxvYWRic3EiLCAi
c3RvcmViIiwgL15iYi8sIC9eYnRiLywgL15jYi8sIC9edGIvCiAgICAgICAgICAgICAgICAgc2l6
ZSA9IDEKLSAgICAgICAgICAgIHdoZW4gImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIKKyAg
ICAgICAgICAgIHdoZW4gImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIsICJvcmgiLCAic3Rv
cmVoIgogICAgICAgICAgICAgICAgIHNpemUgPSAyCiAgICAgICAgICAgICB3aGVuICJsb2FkaSIs
ICJsb2FkaXMiLCAic3RvcmVpIiwgImFkZGkiLCAiYW5kaSIsICJsc2hpZnRpIiwgIm11bGkiLCAi
bmVnaSIsCiAgICAgICAgICAgICAgICAgIm5vdGkiLCAib3JpIiwgInJzaGlmdGkiLCAidXJzaGlm
dGkiLCAic3ViaSIsICJ4b3JpIiwgL15iaS8sIC9eYnRpLywKQEAgLTYzMSw2ICs2MzEsOCBAQCBj
bGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIiLCBvcGVyYW5k
cywgOnB0cikKICAgICAgICAgd2hlbiAib3JxIgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJv
cnIiLCBvcGVyYW5kcywgOnF1YWQpCisgICAgICAgIHdoZW4gIm9yaCIKKyAgICAgICAgICAgIGVt
aXRBUk02NFRBQygib3JyIiwgb3BlcmFuZHMsIDpoYWxmKQogICAgICAgICB3aGVuICJ4b3JpIgog
ICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJlb3IiLCBvcGVyYW5kcywgOndvcmQpCiAgICAgICAg
IHdoZW4gInhvcnAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9jbG9vcC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCmlu
ZGV4IGI3MTQ5ZTgyYWNiLi5hNjgxNmNiY2E3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vY2xvb3AucmIKQEAgLTU4NSw2ICs1ODUsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgog
ICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50NjQsICJ8IikKICAg
ICAgICAgd2hlbiAib3JwIgogICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRz
LCA6aW50cHRyLCAifCIpCisgICAgICAgIHdoZW4gIm9yaCIKKyAgICAgICAgICAgIGNsb29wRW1p
dE9wZXJhdGlvbihvcGVyYW5kcywgOmludDE2LCAifCIpCiAKICAgICAgICAgd2hlbiAieG9yaSIK
ICAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDMyLCAiXiIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKaW5k
ZXggNzE3ODhiMTA4MzcuLjE2NzY3NTRhMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCkBAIC00Miw2ICs0Miw3IEBAIE1BQ1JPX0lO
U1RSVUNUSU9OUyA9CiAgICAgICJuZWdxIiwKICAgICAgIm5vdGkiLAogICAgICAib3JpIiwKKyAg
ICAgIm9yaCIsCiAgICAgICJyc2hpZnRpIiwKICAgICAgInVyc2hpZnRpIiwKICAgICAgInJzaGlm
dHAiLApAQCAtNjAsNiArNjEsNyBAQCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAibG9hZGhz
cSIsCiAgICAgICJzdG9yZWkiLAogICAgICAic3RvcmViIiwKKyAgICAgInN0b3JlaCIsCiAgICAg
ICJsb2FkZCIsCiAgICAgICJtb3ZlZCIsCiAgICAgICJzdG9yZWQiLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKaW5kZXggOWVlZDI1NDk5ZWMuLjM3NmQ2OTlkOWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKQEAgLTUyNyw3ICs1Mjcs
NyBAQCBkZWYgbWlwc0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhsaXN0KQogICAgICAgICAgICAg
ICAgIGVuZAogICAgICAgICAgICAgd2hlbiAvXihhZGRpfHN1YmkpLwogICAgICAgICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdM
aXN0LCAtMHg3ZmZmLi4weDdmZmYpCi0gICAgICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiLCAi
b3JpIiwgIm9ycCIsICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICB3aGVuICJhbmRpIiwgImFu
ZHAiLCAib3JpIiwgIm9ycCIsICJvcmgiLCAieG9yaSIsICJ4b3JwIgogICAgICAgICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdM
aXN0LCAwLi4weGZmZmYpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBub2RlCkBAIC04NjAsNyArODYwLDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAg
ICAgIGVuZAogICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCiAgICAgICAgICAgICBlbWl0TUlQ
U0NvbXBhY3QoImFuZCIsICJhbmQiLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAib3JpIiwgIm9y
cCIKKyAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIsICJvcmgiCiAgICAgICAgICAgICBlbWl0TUlQ
U0NvbXBhY3QoIm9yIiwgIm9yciIsIG9wZXJhbmRzKQogICAgICAgICB3aGVuICJvcmlzIgogICAg
ICAgICAgICAgZW1pdE1JUFNDb21wYWN0KCJvciIsICJvcnJzIiwgb3BlcmFuZHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgppbmRleCA4YjhkZThkMTI4YS4uZDk0ZWVh
Y2UxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2Mu
cmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgpAQCAtNDg5
LDYgKzQ4OSwxMSBAQCBkZWYgcmlzY0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKGxpc3QpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlzY0FzUmVnaXN0ZXJzKG5l
d0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJicyIpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAg
ICB3aGVuICJvcmgiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJpc2NBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJh
bmRzLCAiaCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
bm90YXRpb24pCiAgICAgICAgICAgICB3aGVuICJhZGRkIiwgImRpdmQiLCAic3ViZCIsICJtdWxk
IiwgInNxcnRkIiwgL15iZC8KICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhub2RlLmNvZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS5vcGNvZGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYu
cmIKaW5kZXggMTY2ZjRiZGExMjcuLmRmYjRmOWM4ZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCkBAIC04ODUsNiArODg1LDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24K
ICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvciN7eDg2U3VmZml4KDpwdHIpfSIsIDpwdHIpCiAg
ICAgICAgIHdoZW4gIm9ycSIKICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvciN7eDg2U3VmZml4
KDpxdWFkKX0iLCA6cXVhZCkKKyAgICAgICAgd2hlbiAib3JoIgorICAgICAgICAgICAgaGFuZGxl
WDg2T3AoIm9yI3t4ODZTdWZmaXgoOmhhbGYpfSIsIDpoYWxmKQogICAgICAgICB3aGVuICJyc2hp
ZnRpIgogICAgICAgICAgICAgaGFuZGxlWDg2U2hpZnQoInNhciN7eDg2U3VmZml4KDppbnQpfSIs
IDppbnQpCiAgICAgICAgIHdoZW4gInJzaGlmdHAiCkBAIC05NzEsNiArOTczLDggQEAgY2xhc3Mg
SW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGVuZAogICAgICAgICB3aGVuICJzdG9yZWIiCiAgICAg
ICAgICAgICAkYXNtLnB1dHMgIm1vdiN7eDg2U3VmZml4KDpieXRlKX0gI3t4ODZPcGVyYW5kcyg6
Ynl0ZSwgOmJ5dGUpfSIKKyAgICAgICAgd2hlbiAic3RvcmVoIgorICAgICAgICAgICAgJGFzbS5w
dXRzICJtb3Yje3g4NlN1ZmZpeCg6aGFsZil9ICN7eDg2T3BlcmFuZHMoOmhhbGYsIDpoYWxmKX0i
CiAgICAgICAgIHdoZW4gImxvYWRkIgogICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje3g4
Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKICAgICAgICAgd2hlbiAibW92ZWQiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCmluZGV4IDliM2QwZDc0YzhkLi41
NjIyZjI4OWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1
bHRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgK
QEAgLTQ4LDYgKzQ4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBudW1CaXRzTmVlZGVkID0gNzsKICAgICAgICAgc3RhdGljX2Fzc2VydCgoVHlwZUJp
dHMgJiAoKDEgPDwgbnVtQml0c05lZWRlZCkgLSAxKSkgPT0gVHlwZUJpdHMsICJUaGlzIGlzIG5l
Y2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MuIik7CiAKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0
IFJlc3VsdFR5cGUoKQorICAgICAgICAgICAgOiBSZXN1bHRUeXBlKHVua25vd25UeXBlKCkpCisg
ICAgICAgIHsKKyAgICAgICAgfQogICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlw
ZShUeXBlIHR5cGUpCiAgICAgICAgICAgICA6IG1fYml0cyh0eXBlKQogICAgICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRl
eCA4NjZkMmE5YzJlMy4uNzJlMDQwOTE1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDc2LDggKzQ3Niw4IEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF90b19zdHJpbmcpCiAjaWYgRU5BQkxFKEpJVCkKIHN0YXRpYyB2
b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEm
IG1ldGFkYXRhLCBKU1ZhbHVlIHJlc3VsdCwgSlNWYWx1ZSBvcGVyYW5kKQogewotICAgIEFyaXRo
UHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOwotICAgIHByb2ZpbGUu
b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1l
dGFkYXRhLm1fYXJpdGhQcm9maWxlOworICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsK
ICAgICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkgfHwgcmVzdWx0LmlzQmlnSW50KCkpOwogICAg
IGlmIChyZXN1bHQuaXNOdW1iZXIoKSkgewogICAgICAgICBpZiAoIXJlc3VsdC5pc0ludDMyKCkp
IHsKQEAgLTUzNCw3ICs1MzQsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQog
I2lmIEVOQUJMRShERkdfSklUKQogc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmlu
YXJ5QXJpdGhPcChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
bnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgcmVzdWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmln
aHQpCiB7Ci0gICAgQXJpdGhQcm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+YXJpdGhQcm9m
aWxlRm9yUEMocGMpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9ICpjb2RlQmxv
Y2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKHBjKTsKIAogICAgIGlmIChyZXN1bHQuaXNOdW1i
ZXIoKSkgewogICAgICAgICBpZiAoIXJlc3VsdC5pc0ludDMyKCkpIHsKQEAgLTU5NSw3ICs1OTUs
NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQogICAgIEpTVmFsdWUgdjEgPSBHRVRf
QyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgdjIgPSBHRVRfQyhieXRl
Y29kZS5tX3JocykuanNWYWx1ZSgpOwogCi0gICAgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUg
PSAqY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJpdGhQcm9m
aWxlJiBhcml0aFByb2ZpbGUgPSAqY29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhw
Yyk7CiAgICAgYXJpdGhQcm9maWxlLm9ic2VydmVMSFNBbmRSSFModjEsIHYyKTsKIAogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNBZGQoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382253</attachid>
            <date>2019-10-29 16:58:52 -0700</date>
            <delta_ts>2019-10-30 11:38:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>123335</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZiZWQyNDIwYzVmLi4xNmYyYzk4MTM3MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY4IEBACisyMDE5LTEwLTE0ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGltZSBvbmx5IHVzZWQgZm9y
IGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQgYmVpbmcgdXNlZCBmb3Ig
bmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1c2VkIGZvciBpbmMgYW5k
IGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBhdGNoIEkgbWFrZSBhIHNl
cGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3IgYSBzaW5nbGUgYXJndW1l
bnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisKKyAgICAgICAgQWZ0ZXIg
ZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXplZCB0aGF0IHRoZSBSZXN1
bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQcm9maWxlIGFyZSBub3Qg
bmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFscmVhZHkgaW4gdGhlIGJ5
dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3ZpbmcgdGhlbSBhbGxvd2Vk
IHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBmaXQgaW4gMTYgYml0cyAo
OSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRoZSB0d28ga2luZHMgc2Vw
YXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRlcGVuZGVudGx5IGluIHRo
ZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlcXVpcmVkIGFkZGluZyB0aGUgIm9yaCIg
aW5zdHJ1Y3Rpb24gdG8gdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCB0byBzZXQgYml0cyBpbiB0aGUg
QXJpdGhQcm9maWxlLgorICAgICAgICBUaGlzIGluIHR1cm4gbW90aXZhdGVkIHRoZSBhZGRpdGlv
biBvZiAic3RvcmVoIiwgYXMgb24gUklTQyBwbGF0Zm9ybXMgIm9yaCIgb24gYSBtZW1vcnkgbG9j
YXRpb24gaXMgYWN0dWFsbHkgbG9hZGggLT4gb3JoIC0+IHN0b3JlaC4KKworICAgICAgICAqIGJ5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51
bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6
c2hvdWxkRW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50IGNvbnN0KToKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbkludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlRG91YmxlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOb25OdW1lcmlj
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSW50MzJPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDUyT3Zl
cmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkTm9u
TmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRO
ZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5v
bk51bWVyaWMpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3cp
OgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSW50NTJPdmVyZmxvdyk6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6YWRkcmVzc09mQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6QXJp
dGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpoYXNCaXRzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRCaXQpOgorICAgICAgICAoSlNDOjpVbmFy
eUFyaXRoUHJvZmlsZTo6VW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmFyeUFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlOjphcmdPYnNlcnZlZFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJv
ZmlsZTo6c2V0QXJnT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2Zp
bGU6OmFyZ1Nhd0ludDMyKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nh
d051bWJlcik6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdOb25OdW1i
ZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZUFyZyk6CisgICAg
ICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpCaW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cyk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMpOgorICAg
ICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cyk6
CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6c2V0TGhzT2JzZXJ2ZWRUeXBlKToK
KyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpzZXRSaHNPYnNlcnZlZFR5cGUpOgor
ICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFMpOgorICAgICAgICAo
SlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFNBbmRSSFMpOgorICAgICAgICAoSlND
OjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2ZWRUeXBlRW1wdHkpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVEFkZElDKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklU
U3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElD
KToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bWFrZURpdlNhZmUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJ
Qyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlN
YXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJp
dGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRB
ZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJ
Q0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKiBqaXQvSklURGl2R2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJ
VERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZSk6CisgICAgICAgICog
aml0L0pJVE1hdGhJQy5oOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OkpJVE1hdGhJQyk6Cisg
ICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpK
SVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OmlzQmluYXJ5UHJv
ZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6SklUQmluYXJ5TWF0aElDOjpKSVRCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjppc1VuYXJ5UHJvZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6
SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAgICAgICAgKiBqaXQvSklUTXVsR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVROZWdHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJ
VFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBsbGludC9M
TEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBl
OjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAg
IChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTAtMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHRoZSBSZW1vdGUgUGxheWJhY2sgQVBJLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRl
eCA5OTk5MzNiOGMwZS4uN2Y0NmY3M2ZjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCkBAIC0zMiw3ICszMiw4IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVS
ZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01v
ZGUgbW9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBK
U1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCFzaG91
bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3Vs
ZEVtaXRTZXRCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNDEgKzU5LDUxIEBAIHZv
aWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNW
YWx1ZVJlZ3MgcmVncywgVGFnUmVnCiAgICAgZG9uZS5saW5rKCZqaXQpOwogfQogCi1ib29sIEFy
aXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRF
bWl0U2V0RG91YmxlKCkgY29uc3QKIHsKLSAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxl
OjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJpdGhQcm9m
aWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlOworICAg
IHVpbnQzMl90IG1hc2sgPSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlOwogICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0g
bWFzazsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJz
JiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBj
b25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0RG91YmxlKCkpCi0gICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50MzJPdmVyZmxvdyB8
IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJs
ZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YWRkcmVzc09mQml0cygpKSk7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0
Tm9uTnVtZXJpYygpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29s
IEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNv
bnN0CiB7CiAgICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsKICAg
ICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxl
OjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxk
VHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdAogewogICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6OkJpZ0ludDsK
ICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJpdGhQcm9m
aWxlOjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChz
aG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoTm9uTnVtZXJpYyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZp
ZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQo
KSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9m
aWxlOjpCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRz
KCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmlnSW50
KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CiB9CisK
Ky8vIEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBhYm92ZSBm
b3IgVW5hcnlBcml0aFByb2ZpbGUvQmluYXJ5QXJpdGhQcm9maWxlCisvLyBJZiBjaGFuZ2luZyB0
aGUgc2l6ZSBvZiBlaXRoZXIsIGFkZCB0aGUgY29ycmVzcG9uZGluZyBsaW5lcyBoZXJlLgordGVt
cGxhdGUgY2xhc3MgQXJpdGhQcm9maWxlPHVpbnQxNl90PjsKICNlbmRpZiAvLyBFTkFCTEUoSklU
KQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKQEAgLTEwMSw3ICsxMTIsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0
aFByb2ZpbGU8VD4mIHByb2ZpbGUpCiB7CiAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yID0gIiI7
CiAKQEAgLTEzNSwxOSArMTQ3LDMwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCiAgICAgICAgICAgICBzZXBhcmF0b3Ig
PSAifCI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0
UGF0aCgpKQotICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiVG9vayBzcGVjaWFsIGZhc3Qg
cGF0aC4iKTsKICAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAg
IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFBy
b2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisgICAgb3V0LnByaW50KCIgQXJnIE9ic2VydmVkVHlw
ZTo8Iik7CisgICAgb3V0LnByaW50KHByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkpOworICAgIG91
dC5wcmludCgiPiIpOworfQorCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAgIHByaW50SW50ZXJuYWwo
b3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPj4ocHJv
ZmlsZSkpOworCisgICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0UGF0aCgpKQorICAgICAg
ICBvdXQucHJpbnQoIiBUb29rIHNwZWNpYWwgZmFzdCBwYXRoLiIpOwogCiAgICAgb3V0LnByaW50
KCIgTEhTIE9ic2VydmVkVHlwZTo8Iik7CiAgICAgb3V0LnByaW50KHByb2ZpbGUubGhzT2JzZXJ2
ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgiPiBSSFMgT2JzZXJ2ZWRUeXBlOjwiKTsKICAgICBv
dXQucHJpbnQocHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKSk7CiAgICAgb3V0LnByaW50KCI+Iik7
Ci0KLSAgICBvdXQucHJpbnQoIiBMSFMgUmVzdWx0VHlwZTo8IiwgUmF3UG9pbnRlcihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocHJvZmlsZS5saHNSZXN1bHRUeXBl
KCkuYml0cygpKSkpKTsKLSAgICBvdXQucHJpbnQoIj4gUkhTIFJlc3VsdFR5cGU6PCIsIFJhd1Bv
aW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2ZpbGUu
cmhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7Ci0gICAgb3V0LnByaW50KCI+Iik7CiB9CiAKIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBKU0M6Ok9ic2VydmVkVHlw
ZSYgb2JzZXJ2ZWRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5oCmluZGV4IGZjYzRlMjgxOGJlLi5jYWQ5OWY0OGJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNjYsMTE5ICs2NiwyMTcg
QEAgcHJpdmF0ZToKICAgICB1aW50OF90IG1fYml0cyB7IDAgfTsKIH07CiAKLXN0cnVjdCBBcml0
aFByb2ZpbGUgewotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bWJl
ck9mRmxhZ0JpdHMgPSA2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzUmVzdWx0
VHlwZVNoaWZ0ID0gbnVtYmVyT2ZGbGFnQml0czsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IGxoc1Jlc3VsdFR5cGVTaGlmdCA9IHJoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6
Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNPYnNlcnZl
ZFR5cGVTaGlmdCA9IGxoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6Om51bUJpdHNOZWVk
ZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNPYnNlcnZlZFR5cGVTaGlmdCA9
IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkOwotCi0g
ICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPT0gMywgIldlIG1h
a2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQgdGhhdCBoZXJlLiIpOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KH4oKDEgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKHJoc09ic2Vy
dmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1h
c2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ofigoMSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkg
fCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyAxKSkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRU
eXBlU2hpZnQgKyAyKSkpKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmVzdWx0
VHlwZU1hc2sgPSAoMSA8PCBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQml0ZmllbGRUeXBl
PgorY2xhc3MgQXJpdGhQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBlbnVtIE9ic2VydmVkUmVzdWx0
cyB7CisgICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8IDAsCisgICAgICAgIE5lZ1plcm9E
b3VibGUgICAgPSAxIDw8IDEsCisgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCisg
ICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCisgICAgICAgIEludDUyT3ZlcmZsb3cg
ICAgPSAxIDw8IDQsCisgICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgfTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVk
ZWQgPSA2OwogCi0gICAgZW51bSBjbGFzcyBDb25zdGFudFRhZyB7IENvbnN0YW50IH07CisgICAg
Ym9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1pl
cm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBi
b29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9E
b3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9CisgICAg
Ym9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVn
WmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyBy
ZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgp
IGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUlu
dDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Cisg
ICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMo
SW50NTJPdmVyZmxvdyk7IH0KIAotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3Qgc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNl
cnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVk
VHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSA8PSAoc2l6ZW9mKHVpbnQz
Ml90KSAqIDgpIC0gMSwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFz
ayksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhl
c2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZh
c3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hv
dWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBoaWdo
ZXIgYml0LiIpOworICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRC
aXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJs
ZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51
bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJ
bnQoKSB7IHNldEJpdChCaWdJbnQpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZs
b3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1
Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KIAotICAgIEFyaXRoUHJvZmls
ZShSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNv
bnN0YW50LCBhcmcpCisgICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUpCiAgICAg
ewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSBhcmcuYml0cygpKTsK
LSAgICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFT
U0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOworICAgICAgICBpZiAodmFsdWUuaXNJ
bnQzMigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIo
KSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93
IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGU7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKKyAg
ICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgbV9iaXRzIHw9IE5vbk51bWVyaWM7CiAgICAgfQogCi0gICAgQXJpdGhQcm9m
aWxlKFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBBcml0aFByb2Zp
bGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBsaHMsIHJocykKKyAgICBjb25zdCB2b2lkKiBhZGRy
ZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4gJm1fYml0czsgfQorCisjaWYgRU5BQkxFKEpJVCkK
KyAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKKyAgICAvLyBkb3VibGUuIFNldHMg
Tm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCisgICAgdm9pZCBlbWl0T2JzZXJ2
ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhh
dmVUYWdSZWdpc3RlcnMpOworCisgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3Zl
cmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCisgICAgYm9vbCBzaG91
bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0RG91YmxlKENDYWxsSGVs
cGVycyYpIGNvbnN0OworCisgICAgLy8gU2V0cyBOb25OdW1iZXIuCisgICAgdm9pZCBlbWl0U2V0
Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRO
b25OdW1lcmljKCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIEJpZ0ludAorICAgIHZvaWQgZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdDsKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisgICAgY29uc3RleHByIHVpbnQz
Ml90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworcHJvdGVjdGVkOgorICAgIEFy
aXRoUHJvZmlsZSgpCiAgICAgewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMo
KSA9PSBsaHMuYml0cygpICYmIHJoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gcmhzLmJpdHMoKSk7
Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBB
U1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKICAgICB9CiAKLSAgICBBcml0aFBy
b2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQotICAgICAgICA6IEFyaXRoUHJvZmlsZSh0eXBlcy5m
aXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKLSAgICB7IH0KKyAgICBib29sIGhhc0JpdHMoaW50IG1h
c2spIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIG1hc2s7IH0KKyAgICB2b2lkIHNldEJpdChpbnQg
bWFzaykgeyBtX2JpdHMgfD0gbWFzazsgfQorCisgICAgQml0ZmllbGRUeXBlIG1fYml0cyB7IDAg
fTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVy
YXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRh
dGlvbiB0byBpdC4KK307CisKKy8qIFRoaXMgY2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dpbmcgY29t
cG9uZW50cyBpbiAxNiBiaXRzOgorICogLSBPYnNlcnZlZFJlc3VsdHMKKyAqIC0gT2JzZXJ2ZWRU
eXBlIGZvciB0aGUgYXJndW1lbnQKKyAqLwordXNpbmcgVW5hcnlBcml0aFByb2ZpbGVCYXNlID0g
dWludDE2X3Q7CitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8
VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBh
cmdPYnNlcnZlZFR5cGVTaGlmdCA9IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVkZWQ7CiAKLSAg
ICBBcml0aFByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljX2Fzc2VydChhcmdPYnNlcnZl
ZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8PSBzaXplb2YoVW5hcnlB
cml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdGhlIHR5cGUgb2YgdGhlIHVu
ZGVybHlpbmcgYml0ZmllbGQuIik7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmls
ZSBmcm9tSW50KHVpbnQzMl90IGJpdHMpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8VW5h
cnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSk7CisK
KyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZFR5cGVN
YXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7CisKK3B1YmxpYzoK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPFVuYXJ5QXJp
dGhQcm9maWxlQmFzZT4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEFyaXRoUHJvZmlsZSB7IENv
bnN0YW50VGFnOjpDb25zdGFudCwgYml0cyB9OworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRU
eXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1w
dHkoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2
ZWRVbmFyeUludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ug
b2JzZXJ2ZWRJbnRCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUg
b2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNv
bnN0ZXhwciB1aW50MzJfdCBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2
ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDgwMDAwMCwgIiIp
OwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5
QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29u
c3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZFVuYXJ5TnVtYmVyKCkKKyAgICBzdGF0aWMgY29u
c3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJlckJpdHMoKQogICAgIHsK
ICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVk
VHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4MTAwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJv
bUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gb2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAg
ICByZXR1cm4gYml0czsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGFyZ09i
c2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGFyZ09i
c2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CisgICAgdm9pZCBzZXRBcmdP
YnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKKyAgICAgICAgYml0cyAmPSBjbGVhckFyZ09ic2Vy
dmVkVHlwZUJpdE1hc2s7CisgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIG1fYml0cyA9IGJpdHM7CisgICAgICAgIEFTU0VSVChhcmdP
YnNlcnZlZFR5cGUoKSA9PSB0eXBlKTsKKyAgICB9CisKKyAgICB2b2lkIGFyZ1Nhd0ludDMyKCkg
eyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9Cisg
ICAgdm9pZCBhcmdTYXdOdW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5
cGUoKS53aXRoTnVtYmVyKCkpOyB9CisgICAgdm9pZCBhcmdTYXdOb25OdW1iZXIoKSB7IHNldEFy
Z09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CisKKyAg
ICB2b2lkIG9ic2VydmVBcmcoSlNWYWx1ZSBhcmcpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIGlmIChhcmcuaXNOdW1iZXIoKSkg
eworICAgICAgICAgICAgaWYgKGFyZy5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgbmV3UHJv
ZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5l
d1Byb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbmV3
UHJvZmlsZS5hcmdTYXdOb25OdW1iZXIoKTsKKworICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKKyAgICB9CisKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKKyAgICB9CisKKyAg
ICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9OworCisvKiBUaGlz
IGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMgaW4gMTYgYml0czoKKyAqIC0g
T2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgcmlnaHQtaGFuZC1zaWRlCisg
KiAtIE9ic2VydmVkVHlwZSBmb3IgbGVmdC1oYW5kLXNpZGUKKyAqIC0gYSBiaXQgdXNlZCBieSBk
aXZpc2lvbiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgc3BlY2lhbCBmYXN0IHBhdGggd2FzIHRha2Vu
CisgKi8KK3VzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50MTZfdDsKK2NsYXNzIEJp
bmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxl
QmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsKKworICAgIHN0YXRpY19hc3NlcnQoT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJXZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9uIGFib3V0
IHRoYXQgaGVyZS4iKTsKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQ
cm9maWxlQmFzZT4ofigwYjExMSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCkpOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGxo
c09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVtQml0
c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0
aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNo
aWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChs
aHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9
IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWlu
dDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVh
ckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2Vj
dC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2Jz
ZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4iKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCA+IH5jbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBh
dGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKKworICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+ICgpCisg
ICAgeworICAgICAgICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgQVNTRVJUKHJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQotICAgIHN0YXRp
YyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5SW50SW50KCkKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZEludEludEJpdHMo
KQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsg
T2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90
IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwg
KG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4OTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9t
SW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNl
cnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7CisgICAgICAgIHJldHVy
biBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZl
ZEJpbmFyeU51bWJlckludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2Zp
bGVCYXNlIG9ic2VydmVkTnVtYmVySW50Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIg
T2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigp
IH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2Vy
dmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRz
ID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2Jz
ZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0
aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50
KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0g
KG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4g
Yml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRC
aW5hcnlJbnROdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZEludE51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9i
c2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9
OwogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZl
ZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChiaXRzID09IDB4YTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJp
dHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9i
c2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51
bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0
czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5h
cnlOdW1iZXJOdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHBy
IE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIo
KSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5i
aXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8
PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAw
eDEyMDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNv
bnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0
cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwg
cmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9CiAKLSAg
ICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7Ci0gICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8
IDAsCi0gICAgICAgIE5lZ1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCi0gICAgICAgIE5vbk51bWVy
aWMgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCi0g
ICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAg
ICAgPSAxIDw8IDUsCi0gICAgfTsKLQotICAgIFJlc3VsdFR5cGUgbGhzUmVzdWx0VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUoKG1fYml0cyA+PiBsaHNSZXN1bHRUeXBlU2hpZnQpICYg
cmVzdWx0VHlwZU1hc2spOyB9Ci0gICAgUmVzdWx0VHlwZSByaHNSZXN1bHRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gUmVzdWx0VHlwZSgobV9iaXRzID4+IHJoc1Jlc3VsdFR5cGVTaGlmdCkgJiByZXN1
bHRUeXBlTWFzayk7IH0KLQogICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgbGhzT2JzZXJ2ZWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gT2JzZXJ2ZWRUeXBlKChtX2JpdHMgPj4gbGhzT2JzZXJ2ZWRU
eXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBlTWFzayk7IH0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRU
eXBlIHJoc09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRz
ID4+IHJoc09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgdm9p
ZCBzZXRMaHNPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCiAgICAgewotICAgICAgICB1
aW50MzJfdCBiaXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJp
dHMgPSBtX2JpdHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNr
OwogICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0Owog
ICAgICAgICBtX2JpdHMgPSBiaXRzOwpAQCAtMTg3LDcgKzI4NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0UmhzT2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsgCi0gICAg
ICAgIHVpbnQzMl90IGJpdHMgPSBtX2JpdHM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgYml0cyA9IG1fYml0czsKICAgICAgICAgYml0cyAmPSBjbGVhclJoc09ic2VydmVkVHlwZUJp
dE1hc2s7CiAgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQ7CiAgICAgICAgIG1fYml0cyA9IGJpdHM7CkBAIC0xOTYsMzkgKzI5NCw2IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgdG9va1NwZWNpYWxGYXN0UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IHNwZWNpYWxGYXN0UGF0aEJpdDsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBj
b25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KLSAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQot
ICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNC
aXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRp
ZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsg
fQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmln
SW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIHZv
aWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJs
ZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1pl
cm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChO
b25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJ
bnQpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQz
Mk92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRC
aXQoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBj
b25zdCB7IHJldHVybiAmbV9iaXRzOyB9Ci0KLSAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1
ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBt
X2JpdHMgfD0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9
IEJpZ0ludDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2JpdHMg
fD0gTm9uTnVtZXJpYzsKLSAgICB9Ci0KICAgICB2b2lkIGxoc1Nhd0ludDMyKCkgeyBzZXRMaHNP
YnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9CiAgICAgdm9pZCBs
aHNTYXdOdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRo
TnVtYmVyKCkpOyB9CiAgICAgdm9pZCBsaHNTYXdOb25OdW1iZXIoKSB7IHNldExoc09ic2VydmVk
VHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CkBAIC0yMzgsNyArMzAz
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBvYnNlcnZlTEhTKEpTVmFsdWUgbGhzKQogICAgIHsK
LSAgICAgICAgQXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKKyAgICAgICAgQmluYXJ5
QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKICAgICAgICAgaWYgKGxocy5pc051bWJl
cigpKSB7CiAgICAgICAgICAgICBpZiAobGhzLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBu
ZXdQcm9maWxlLmxoc1Nhd0ludDMyKCk7CkBAIC0yNTQsNyArMzE5LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgb2JzZXJ2ZUxIUyhsaHMpOwogCi0gICAgICAgIEFyaXRoUHJvZmlsZSBuZXdQ
cm9maWxlID0gKnRoaXM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0g
KnRoaXM7CiAgICAgICAgIGlmIChyaHMuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgaWYgKHJo
cy5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5yaHNTYXdJbnQzMigpOwpA
QCAtMjY2LDQ3ICszMzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoSklUKSAgICAKLSAgICAvLyBTZXRzIChJbnQz
Mk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91
YmxlKSBpZiBpdCBzZWVzIGEKLSAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBz
ZWVzIGEgbm9uLW51bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBl
cnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwot
ICAgIAotICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVn
WmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgotICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJs
ZSgpIGNvbnN0OwotICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsK
LSAgICAKLSAgICAvLyBTZXRzIE5vbk51bWJlci4KLSAgICB2b2lkIGVtaXRTZXROb25OdW1lcmlj
KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMo
KSBjb25zdDsKLQotICAgIC8vIFNldHMgQmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KEND
YWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0
OwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLSAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cygp
IGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0ZXhwciBleHBs
aWNpdCBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWcsIHVpbnQzMl90IGJpdHMpCi0gICAgICAgIDog
bV9iaXRzKGJpdHMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUo
Q29uc3RhbnRUYWcsIFJlc3VsdFR5cGUgYXJnKQotICAgICAgICA6IG1fYml0cyhhcmcuYml0cygp
IDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQog
ICAgIHsKKyAgICAgICAgcmV0dXJuIGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSAmJiByaHNP
YnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgY29uc3RleHByIEFyaXRoUHJv
ZmlsZShDb25zdGFudFRhZywgUmVzdWx0VHlwZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQotICAgICAg
ICA6IG1fYml0cygobGhzLmJpdHMoKSA8PCBsaHNSZXN1bHRUeXBlU2hpZnQpIHwgKHJocy5iaXRz
KCkgPDwgcmhzUmVzdWx0VHlwZVNoaWZ0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNC
aXRzKGludCBtYXNrKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBtYXNrOyB9Ci0gICAgdm9pZCBz
ZXRCaXQoaW50IG1hc2spIHsgbV9iaXRzIHw9IG1hc2s7IH0KLQotICAgIHVpbnQzMl90IG1fYml0
cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmds
ZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXBy
ZXNlbnRhdGlvbiB0byBpdC4KLQogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIH07CiAKQEAgLTMxNCw3ICszNDMsOCBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpBcml0
aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6
VW5hcnlBcml0aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNv
bnN0IEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlJik7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBjb25zdCBKU0M6Ok9ic2VydmVkVHlwZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4
IGMwODZiOGViM2YzLi5hYzRjODBlZTk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVzIFsKICAgICA6
SlNUeXBlLAogICAgIDpKU1ZhbHVlLAogICAgIDpMTEludENhbGxMaW5rSW5mbywKKyAgICA6UmVz
dWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxh
ZywKICAgICA6UHJvcGVydHlPZmZzZXQsCkBAIC01Nyw3ICs1OCw4IEBAIHR5cGVzIFsKIAogICAg
IDpWYWx1ZVByb2ZpbGUsCiAgICAgOlZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIsCi0gICAg
OkFyaXRoUHJvZmlsZSwKKyAgICA6VW5hcnlBcml0aFByb2ZpbGUsCisgICAgOkJpbmFyeUFyaXRo
UHJvZmlsZSwKICAgICA6QXJyYXlQcm9maWxlLAogICAgIDpBcnJheUFsbG9jYXRpb25Qcm9maWxl
LAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKQEAgLTI4MiwxMCArMjg0LDcgQEAgb3Bf
Z3JvdXAgOlByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIG9wZXJhbmRUeXBlczogT3BlcmFuZFR5
cGVzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0
aFByb2ZpbGUKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBh
cml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBCaW5hcnlB
cml0aFByb2ZpbGUKICAgICB9CiAKIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCkBA
IC0zNjcsMTMgKzM2NiwxMCBAQCBvcCA6bmVnYXRlLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5kVHlwZXMsCisgICAgICAgIHJlc3VsdFR5cGU6IFJl
c3VsdFR5cGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6
IEFyaXRoUHJvZmlsZSwKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAg
ICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBV
bmFyeUFyaXRoUHJvZmlsZSwKICAgICB9CiAKIG9wIDpub3QsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdlMjExNjgzZDc5Li4wNDYxYTYzNzcy
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTE0NzgsMjUgKzE0NzgsMjUgQEAgU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1
YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxv
Y2tlcikubV9zdHViSW5mb3MuYWRkKGFjY2Vzc1R5cGUpOwogfQogCi1KSVRBZGRJQyogQ29kZUJs
b2NrOjphZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVEFkZElDKiBD
b2RlQmxvY2s6OmFkZEpJVEFkZElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fYWRkSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRN
dWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
K0pJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAg
ICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbXVsSUNzLmFkZChhcml0aFByb2ZpbGUp
OwogfQogCi1KSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKK0pJVFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3ViSUNzLmFkZChh
cml0aFByb2ZpbGUpOwogfQogCi1KSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lD
KFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9u
ZWdJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CkBAIC0zMDgzLDE2ICszMDgzLDE5IEBAIGNvbnN0IElu
c3RydWN0aW9uKiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjKQogICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKS5hdChvZmZzZXQgKyB0YXJnZXQpLnB0
cigpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCitCaW5hcnlBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgcmV0dXJuIGFyaXRoUHJvZmlsZUZvclBDKGluc3Ry
dWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpKTsKKyAgICByZXR1cm4g
YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKSkucHRyKCkpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9m
aWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorVW5hcnlBcml0aFByb2ZpbGUqIENvZGVC
bG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCkKK3sKKyAgICByZXR1cm4gdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVj
dGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKSk7Cit9CisKK0JpbmFyeUFy
aXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0
cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewotICAgIGNhc2Ug
b3BfbmVnYXRlOgotICAgICAgICByZXR1cm4gJnBjLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YSh0
aGlzKS5tX2FyaXRoUHJvZmlsZTsKICAgICBjYXNlIG9wX2FkZDoKICAgICAgICAgcmV0dXJuICZw
Yy0+YXM8T3BBZGQ+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CiAgICAgY2FzZSBv
cF9tdWw6CkBAIC0zMTA4LDExICszMTExLDIzIEBAIEFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjph
cml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKK1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxl
Rm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIHN3aXRjaCAocGMtPm9wY29kZUlE
KCkpIHsKKyAgICBjYXNlIG9wX25lZ2F0ZToKKyAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdh
dGU+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJvb2wgQ29kZUJs
b2NrOjpjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2FzZShCeXRlY29kZUluZGV4IGJ5dGVjb2Rl
SW5kZXgpCiB7CiAgICAgaWYgKCFoYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgQXJpdGhQcm9maWxlKiBwcm9maWxlID0gYXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIHBy
b2ZpbGUgPSBiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
OwogICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBw
cm9maWxlLT50b29rU3BlY2lhbEZhc3RQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZDJjMDY5ODAzYTguLjE4ZTQ4YzI2NmEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04Myw2ICs4Myw4IEBA
IHN0cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8vIG5hbWVzcGFjZSBERkcKICNlbmRpZgogCitjbGFz
cyBVbmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U7CkBAIC05Niw3ICs5OCw2IEBAIGNsYXNzIFN0cnVjdHVyZVN0
dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CiAKLXN0cnVjdCBBcml0
aFByb2ZpbGU7CiBzdHJ1Y3QgT3BDYXRjaDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBE
b250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwpAQCAtMjc5LDIy
ICsyODAsMjIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVREYXRhJiBlbnN1cmVKSVREYXRhU2xv
dyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKTsKIAotICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJ
QyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRNdWxJQyogYWRkSklUTXVsSUMoQXJpdGhQcm9maWxl
Kik7Ci0gICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVFN1
YklDKiBhZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqKTsKKyAgICBKSVRBZGRJQyogYWRkSklUQWRk
SUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEJpbmFy
eUFyaXRoUHJvZmlsZSopOworICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhVbmFyeUFyaXRoUHJv
ZmlsZSopOworICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUqKTsK
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUQWRkR2VuZXJhdG9yPjo6
dmFsdWU+Ojp0eXBlPgotICAgIEpJVEFkZElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9m
aWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhwcm9maWxlKTsgfQorICAgIEpJVEFkZElDKiBhZGRN
YXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhw
cm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRNdWxH
ZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTXVsSUMqIGFkZE1hdGhJQyhBcml0aFBy
b2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CisgICAgSklU
TXVsSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFk
ZEpJVE11bElDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9y
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0
b3IsIEpJVE5lZ0dlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBKSVROZWdJQyogYWRkTWF0
aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTmVnSUMocHJvZmlsZSk7
IH0KKyAgICBKSVROZWdJQyogYWRkTWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7
IHJldHVybiBhZGRKSVROZWdJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Nh
bWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUU3Vi
SUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklD
KHByb2ZpbGUpOyB9CisgICAgSklUU3ViSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUq
IHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CiAKICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNjZXNzVHlwZSk7CiAKQEAgLTQ5Nyw4ICs0OTgsMTAg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMTEludENhbGxMaW5rSW5mbyhjb25zdCBGdW5jdG9y
Jik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0
ZWNvZGVJbmRleCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJ
bnN0cnVjdGlvbiopOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSog
dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25z
dCBJbnN0cnVjdGlvbiopOwogCiAgICAgYm9vbCBjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2Fz
ZShCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmgKaW5kZXggOWFiNzcxMzdhYTYuLmQ0MWNmYzEyYjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTIzNiw2ICsyMzYsMTggQEAgc3RydWN0IEZpdHM8
RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2Vu
dW08RT46OnZhbHUKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1
Y3QgRml0czxSZXN1bHRUeXBlLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihSZXN1bHRU
eXBlKSAhPSBzaXplLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6
ZT4geworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFJlc3VsdFR5cGUpID09IHNpemVvZih1aW50
OF90KSk7CisgICAgdXNpbmcgQmFzZSA9IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAgICBzdGF0
aWMgYm9vbCBjaGVjayhSZXN1bHRUeXBlIHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNrKHR5cGUu
Yml0cygpKTsgfQorCisgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgY29udmVy
dChSZXN1bHRUeXBlIHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNvbnZlcnQodHlwZS5iaXRzKCkpOyB9
CisKKyAgICBzdGF0aWMgUmVzdWx0VHlwZSBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5
cGUgdHlwZSkgeyByZXR1cm4gUmVzdWx0VHlwZShCYXNlOjpjb252ZXJ0KHR5cGUpKTsgfQorfTsK
KwogdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8T3BlcmFuZFR5cGVzLCBz
aXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihPcGVyYW5kVHlwZXMpICE9IHNpemUsIHN0ZDo6
dHJ1ZV90eXBlPj4gewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmRUeXBlcykgPT0g
c2l6ZW9mKHVpbnQxNl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKaW5kZXggNzEw
NGQwMWFlMTEuLjJiNjlmMzZjN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCkBA
IC02NiwxMCArNjYsMTYgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0
UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAg
ICB1LmFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVU
YWdSZWdpc3RlcnMpOworICAgIGNhc2UgVW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAg
ICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90
SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAg
ICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQ
cm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVy
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC05NCwxMCArMTAwLDE2IEBAIHZvaWQgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAg
dS5hcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgIGNhc2UgVW5hcnlBcml0
aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5vYnNlcnZlUmVz
dWx0KHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gfQorICAgIH0KKworICAgIGNhc2Ug
QmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUt
Pm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KIAog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaAppbmRleCBjZmI4MzQ3MDZhZi4uNWQ4MWM0YzkwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUuaApAQCAtMzYsMTAgKzM2LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBV
bmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIENDYWxs
SGVscGVyczsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
S2V5Owotc3RydWN0IEFyaXRoUHJvZmlsZTsKIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKIGNsYXNz
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgewpAQCAtNTcsMTIgKzU4LDIxIEBAIHB1Ymxp
YzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwogICAgIH0KLSAg
ICAKLSAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKEFyaXRoUHJvZmlsZSogcHJvZmls
ZSkKKworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoVW5hcnlBcml0aFByb2ZpbGUq
IHByb2ZpbGUpCisgICAgeworICAgICAgICBpZiAocHJvZmlsZSkgeworICAgICAgICAgICAgbV9r
aW5kID0gVW5hcnlBcml0aFByb2ZpbGVSZWFkeTsKKyAgICAgICAgICAgIHUudW5hcnlBcml0aFBy
b2ZpbGUgPSBwcm9maWxlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fa2luZCA9IE5v
bmU7CisgICAgfQorCisgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShCaW5hcnlBcml0
aFByb2ZpbGUqIHByb2ZpbGUpCiAgICAgewogICAgICAgICBpZiAocHJvZmlsZSkgewotICAgICAg
ICAgICAgbV9raW5kID0gQXJpdGhQcm9maWxlUmVhZHk7Ci0gICAgICAgICAgICB1LmFyaXRoUHJv
ZmlsZSA9IHByb2ZpbGU7CisgICAgICAgICAgICBtX2tpbmQgPSBCaW5hcnlBcml0aFByb2ZpbGVS
ZWFkeTsKKyAgICAgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwogICAgIH0KQEAgLTc5LDcgKzg5
LDggQEAgcHJpdmF0ZToKICAgICBlbnVtIEtpbmQgewogICAgICAgICBOb25lLAogICAgICAgICBS
ZWFkeSwKLSAgICAgICAgQXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIFVuYXJ5QXJpdGhQcm9m
aWxlUmVhZHksCisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAogICAgICAgICBMYXp5
T3BlcmFuZAogICAgIH07CiAgICAgCkBAIC05MCw3ICsxMDEsOCBAQCBwcml2YXRlOgogICAgICAg
ICB7IH0KIAogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7Ci0gICAgICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0
aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
OwogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAg
ICAgICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCAxNTRiZDNjZmJjYy4uOGU1ODU3MzhmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNjY1
LDE0ICsxNjY1LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKICAgICByZXR1cm4gZHN0OwogfQogCi1S
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMgdHlwZXMp
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQgb3Bj
b2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBSZXN1bHRUeXBlIHR5cGUp
CiB7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfbm90OgogICAgICAgICBl
bWl0VW5hcnlPcDxPcE5vdD4oZHN0LCBzcmMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIG9w
X25lZ2F0ZToKLSAgICAgICAgT3BOZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGVzKTsK
KyAgICAgICAgT3BOZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGUpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIG9wX2JpdG5vdDoKICAgICAgICAgZW1pdFVuYXJ5T3A8T3BCaXRub3Q+
KGRzdCwgc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0MTk3YWJjMTJlNS4uMzhlNzdjZGIxNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTY4Miw3ICs2ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBkc3Q7CiAgICAgICAgIH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5h
cnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIE9wZXJhbmRU
eXBlcyk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRVbmFyeU9wKE9wY29kZUlELCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSk7CiAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQmluYXJ5T3A+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggMmUwM2JlMGI3YzcuLjA1OGZlNTlkNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yMTM5LDcgKzIxMzksNyBA
QCBSZWdpc3RlcklEKiBVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYyA9
IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8ocG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSk7Ci0gICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0VW5hcnlPcChvcGNvZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCBzcmMuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERlc2NyaXB0b3Io
KSkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpLCBtX2V4cHItPnJlc3VsdERlc2Ny
aXB0b3IoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVbmFyeVBs
dXNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDIyMzQ0NWMyZDk0
Li44Y2I3MTAwNDFlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTk0Miw1NiArOTQyLDYwIEBAIHByaXZhdGU6CiAgICAgICAgIGlm
ICghaXNYODYoKSAmJiAobm9kZS0+b3AoKSA9PSBBcml0aE1vZCB8fCBub2RlLT5vcCgpID09IFZh
bHVlTW9kKSkKICAgICAgICAgICAgIHJldHVybiBub2RlOwogCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsK
LSAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEFyaXRoQWRkOgotICAgICAgICAg
ICAgICAgIGNhc2UgQXJpdGhTdWI6Ci0gICAgICAgICAgICAgICAgY2FzZSBWYWx1ZUFkZDoKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJs
ZVJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVOb25OdW1lcmljKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdz
KE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChh
cml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVNdWw6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBBcml0aE11bDogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
T3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2Rl
TWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJp
dGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJv
SW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9i
c2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
Tm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aE5l
Z2F0ZTogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5saHNPYnNlcnZl
ZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3Vi
bGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VG
bGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBBcml0aEFk
ZDoKKyAgICAgICAgY2FzZSBBcml0aFN1YjoKKyAgICAgICAgY2FzZSBWYWx1ZUFkZDogeworICAg
ICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgo
bV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
RG91YmxlKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURv
dWJsZVJlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9u
TnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVO
b25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgVmFsdWVNdWw6CisgICAgICAgIGNhc2UgQXJpdGhNdWw6IHsKKyAgICAgICAgICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4
KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3co
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDUy
KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9k
ZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2Zp
bGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Cisg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAgICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7CisgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAg
ICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsK
KyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Cisg
ICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKKyAgICAgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVuYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAg
ICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGlmIChhcml0aFByb2ZpbGUtPmFyZ09ic2VydmVkVHlwZSgpLnNhd051bWJlcigpIHx8IGFyaXRo
UHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsK
KyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkg
fHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVOb25OdW1lcmljKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJl
bnRJbmRleCkpIHsKQEAgLTEwMzMsOCArMTAzNyw4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gbWFrZSB0aGlzIG1vcmUgZ3Jh
bnVsYXIuCiAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJh
c2VsaW5lIHwgTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsKLSAgICAgICAgCi0gICAgICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsKKworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1
cnJlbnRJbmRleCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQo
KSkKICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IGFkYmY1MDI1Y2Yz
Li45OWVlZjZhZjk5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAg
LTE2NTIsNyArMTY1Miw5IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9kZSogY3VycmVuCiAgICAgICAgICAgICAg
ICAgcmV0dXJuICZwcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpOwogCiAgICAgICAgICAgICBpZiAo
cHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAg
ICAgIGlmIChBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSkp
CisgICAgICAgICAgICAgICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmls
ZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmlnaW4u
c2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgICAgICAgICBpZiAoVW5hcnlBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHBy
b2ZpbGVkQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmln
aW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0NzQxNjE0YzU3Yi4uYWE1MjZj
ODMwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0zOTk0LDcgKzM5OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVBZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sg
PSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5k
ZXgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVEFkZElDKGFy
aXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZUFkZE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVBZGQ7CkBAIC00MDE4LDcgKzQwMTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29k
ZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5v
cmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2Rl
QmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgYXV0byByZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwpAQCAtNDYxMiw3ICs0NjEy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUqIG5vZGUp
CiB7CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFz
ZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgp
OwotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgVW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTmVnSUMqIG5lZ0lD
ID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0
byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplOwogICAg
IGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7CkBAIC00
ODM1LDcgKzQ4MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwoTm9k
ZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFw
aCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTXVs
SUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7
CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXpl
OwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYWYw
YThlYjA3MGIuLmRmMmRlYTIwZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC0yMTEyLDcgKzIxMTIsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJ
bmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2Nr
LT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemU7
CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7
CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPihhcml0aFByb2Zp
bGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTIxMzMs
NyArMjEzMyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVC
bG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9u
ID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5n
RnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJ
QzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25S
ZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE1NCw3ICsyMTU0LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNl
bGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9j
ay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAg
ICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXpl
OwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVs
OwogICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQcm9m
aWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTYy
LDcgKzIxNjIsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRv
ciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVuYW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9IHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2lu
dGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21waWxl
VW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdG
dW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGlsZVVu
YXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hp
bmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKIApAQCAtMjI0OCw3ICsyMjQ4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBlbmFt
ZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZnVu
Y3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1ZSAm
JiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+Ojp0
eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNo
aW5nRnVuY3Rpb24pCisgICAgdm9pZCBjb21waWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJl
cGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAg
ICAgICAgIApAQCAtMjQxNyw3ICsyNDE3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2Rl
QmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRl
eCgpOwotICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3Vi
T3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlU3ViOwogICAgICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5l
cmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVu
Y3Rpb24pOwpAQCAtMzA5NSw3ICszMDk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBi
YXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5l
Q29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRl
eCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdh
dGVPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRp
b25Bcml0aE5lZ2F0ZTsKICAgICAgICAgY29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRv
cj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBiNWVmZTI2ODA0Ni4uMmI0YTVkNjRiZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtOTE5LDcgKzkxOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAvLyBJdCB3aWxsIGdpdmUgdGhlIHNsb3cgcGF0aCB0aGUgc2FtZSB2YWx1
ZSByZWFkIGJ5IHRoZSBmYXN0IHBhdGguCiAgICAgICAgIEdldFB1dEluZm8gY29waWVkR2V0UHV0
SW5mbyhPcFB1dFRvU2NvcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4K
LSAgICAgICAgQXJpdGhQcm9maWxlIGNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCk7CisgICAg
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOwogCiAg
ICAgICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwogCkBAIC05MzksNyArOTM5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7
CiAKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgdW5zaWduZWQ+IG1fY29waWVkR2V0UHV0SW5m
b3M7Ci0gICAgICAgIEhhc2hNYXA8dWludDY0X3QsIEFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0
aFByb2ZpbGVzOworICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBCaW5hcnlBcml0aFByb2ZpbGU+
IG1fY29waWVkQXJpdGhQcm9maWxlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNo
ZWNrczsKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9s
bGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAK
aW5kZXggNjI3YWYyNzg3ZTAuLjc0MGIyZWQ4YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBP
YnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03Myw3ICs3
Myw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0
LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmls
aW5nKQorYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3Nj
cmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBt
X2xlZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQWRkR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdl
bmVyYXRvci5oCmluZGV4IDRkYzM0YTJmNWI2Li42NzVjZjkzYzkwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCkBAIC01NSw4ICs1NSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3Jp
Z2h0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5l
UmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJh
dGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmlu
YXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZh
bGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVy
YW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3Bl
cmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiBy
aWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNWZjZjg4OWQzMTguLjc2MzQ0NWNjYWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1
Miw3ICs0NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29w
X25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdh
dGU+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIFVuYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0
ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMq
IG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAg
bV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsK
ICAgICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwpA
QCAtNjMzLDE0ICs2MzMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChj
dXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRp
YyBPcGVyYW5kVHlwZXMgZ2V0T3BlcmFuZFR5cGVzKGNvbnN0IEFyaXRoUHJvZmlsZSYgYXJpdGhQ
cm9maWxlKQotewotICAgIHJldHVybiBPcGVyYW5kVHlwZXMoYXJpdGhQcm9maWxlLmxoc1Jlc3Vs
dFR5cGUoKSwgYXJpdGhQcm9maWxlLnJoc1Jlc3VsdFR5cGUoKSk7Ci19Ci0KIHZvaWQgSklUOjpl
bWl0X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BB
ZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVEFkZElDKiBh
ZGRJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBhZGRJQyk7CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BBZGQ+KGFkZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZh
bHVlQWRkUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlQWRkKTsKQEAgLTY4NSw3ICs2ODAsNyBAQCB2
b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElD
LCBjb25zdCBJbnN0cnVjdGlvbiogYwogCiAgICAgYm9vbCBnZW5lcmF0ZWRJbmxpbmVDb2RlID0g
bWF0aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywgbWF0aElDR2VuZXJhdGlvblN0YXRlKTsKICAg
ICBpZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgICAgICBVbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHNyY1JlZ3MsIGFyaXRoUHJvZmls
ZSk7CiAgICAgICAgIGVsc2UKQEAgLTcwOCw3ICs3MDMsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5h
bWUgTgogdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVk
RnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxl
ZEZ1bmN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wPigpOwotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRB
cml0aFByb2ZpbGUoYnl0ZWNvZGUpKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qu
b2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGlu
dCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKQEAgLTcyNyw4ICs3MjEsOCBAQCB2b2lk
IEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywg
Y29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogI2Vu
ZGlmCiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAg
ICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBw
ZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOwor
ICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5z
ZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAg
bGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBA
IC03NTgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJ
QzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIGxlZnRSZWdzKTsKICAgICAgICAgZWxzZSBpZiAocmln
aHRPcGVyYW5kLmlzQ29uc3QoKSkKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
b3AyLCByaWdodFJlZ3MpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1h
dGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmls
ZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0
aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIGFyaXRoUHJvZmls
ZSk7CiAgICAgICAgIGVsc2UKQEAgLTc5OCw3ICs3OTIsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJ
Q1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlv
biogYwogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBV
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsK
ICAgICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAg
ICBpZiAobWF0aElDR2VuZXJhdGlvblN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCkKICAgICAg
ICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFJlc3VsdChyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dKTWljPihwcm9maWxl
ZFJlcGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgc3JjUmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKQEAgLTgz
MCw3ICs4MjQsNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgbWF0aElDR2VuZXJhdGlv
blN0YXRlLnNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0
T3BlcmFuZFR5cGVzKGNvcGllZEFyaXRoUHJvZmlsZShieXRlY29kZSkpOwogICAgIGludCByZXN1
bHQgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9s
aHMub2Zmc2V0KCk7CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwpAQCAt
ODQ1LDggKzgzOCw4IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gbGVmdFJlZ3M7CiAjZW5kaWYKICAgICAKLSAgICBTbmlwcGV0T3BlcmFuZCBs
ZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJh
bmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVj
b2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3Bl
cmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihn
ZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC04NjQsNyArODU3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0
IEluc3RydWN0aW9uKgogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYK
IAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUo
KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQ
cm9maWxlKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkp
IHsKICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0
Y2gpCiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbldpdGhSZXN1bHQoYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0dKSk1pYz4o
cHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIFRydXN0ZWRJbW1Q
dHIobWF0aElDKSk7CkBAIC04OTIsMTkgKzg4NSwxNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Ns
b3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24q
CiB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERp
dj4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9w
MSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jo
cy5vZmZzZXQoKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgT3BlcmFuZFR5cGVzIHR5cGVz
ID0gZ2V0T3BlcmFuZFR5cGVzKG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlKTsKICAgICBKU1ZhbHVl
UmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyByaWdo
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IGxlZnRSZWdzOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDI7CiAjZWxzZQotICAgIE9w
ZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmls
ZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
OwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7
CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxlZnRSZWdzOwpAQCAtOTEyLDEyICs5MDIs
MTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAjZW5kaWYKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IGZwUmVnVDI7CiAKLSAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHI7CisgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyOwogICAgIGlmIChzaG91bGRFbWl0UHJvZmls
aW5nKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RGl2PigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKIAotICAgIFNuaXBw
ZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVzLmZpcnN0KCkpOwotICAgIFNuaXBwZXRPcGVyYW5k
IHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQoKSk7CisgICAgU25pcHBldE9wZXJhbmQgbGVmdE9w
ZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuZmlyc3QoKSk7CisgICAgU25pcHBldE9wZXJh
bmQgcmlnaHRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLnNlY29uZCgpKTsKIAogICAg
IGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDEpKQogICAgICAgICBsZWZ0T3BlcmFuZC5zZXRD
b25zdEludDMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDEpKTsKQEAgLTk1OSw3ICs5NDksNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFBy
b2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudElu
c3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2Zp
bGU7CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9jb2RlQmxvY2stPmFkZEpJVE11bElDKGFyaXRo
UHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rp
b24sIG11bElDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcE11bD4obXVsSUMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVNdWwpOwpA
QCAtOTc1LDcgKzk2NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAKIHZvaWQgSklUOjpl
bWl0X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BT
dWI+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdWI+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVFN1YklDKiBz
dWJJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBzdWJJQyk7CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BTdWI+KHN1YklDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZh
bHVlU3ViUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcAppbmRleCA2NmUxYmUxNGE4ZC4uYjhjNDc5ODZm
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmIGppdCkKICAgICBub3REb3VibGVaZXJvLmxpbmsoJmppdCk7CiAjZW5k
aWYKICAgICBpZiAobV9hcml0aFByb2ZpbGUpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6c3BlY2lhbEZhc3RQYXRoQml0KSwgQ0NhbGxI
ZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9hcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkp
OworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0
aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRy
ZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICBqaXQuYm94RG91Ymxl
KG1fbGVmdEZQUiwgbV9yZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVREaXZHZW5lcmF0b3IuaAppbmRleCA4Mzk2Njc3OTQzZi4uNzA4ZGIxMGQ2Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaApAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAgICAgSklURGl2R2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
LCBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCiAgICAgICAgIEZQUlJlZyBs
ZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRj
aEZQUiwKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQorICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIpCiAgICAgICAg
IDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKICAgICAgICAgLCBtX3JpZ2h0T3BlcmFuZChy
aWdodE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQpAQCAtNzEsNyArNzEsNyBA
QCBwcml2YXRlOgogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7CiAgICAgRlBSUmVnIG1fc2NyYXRj
aEZQUjsKICAgICBib29sIG1fZGlkRW1pdEZhc3RQYXRoIHsgZmFsc2UgfTsKLSAgICBBcml0aFBy
b2ZpbGUqIG1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogbV9hcml0aFBy
b2ZpbGU7CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1fZW5kSnVtcExpc3Q7CiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX3Nsb3dQYXRoSnVtcExpc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDYyZWFiOWI5N2ZhLi4yNWJjYzJiOWM1NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTcxNiwxMyArNzE2LDEzIEBA
IEFMV0FZU19JTkxJTkUgR2V0UHV0SW5mbyBKSVQ6OmNvcGllZEdldFB1dEluZm8oT3BQdXRUb1Nj
b3BlIGJ5dGVjb2RlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLUFMV0FZU19J
TkxJTkUgQXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVj
b2RlKQorQUxXQVlTX0lOTElORSBCaW5hcnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFBy
b2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCiB7CiAgICAgdWludDY0X3Qga2V5ID0gKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihCaW5hcnlPcDo6b3Bjb2RlSUQpICsgMSkgPDwgMzIgfCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYnl0ZWNvZGUubV9tZXRhZGF0YUlEKTsKICAgICBhdXRvIGl0ZXJhdG9yID0g
bV9jb3BpZWRBcml0aFByb2ZpbGVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXRlcmF0b3IgIT0gbV9j
b3BpZWRBcml0aFByb2ZpbGVzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVl
OwotICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJv
ZmlsZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAg
ICBtX2NvcGllZEFyaXRoUHJvZmlsZXMuYWRkKGtleSwgYXJpdGhQcm9maWxlKTsKICAgICByZXR1
cm4gYXJpdGhQcm9maWxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRNYXRoSUMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKaW5k
ZXggNTY0NWU0MmRlZmYuLmZkYWVjOTI3NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE1hdGhJQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TWF0aElDLmgKQEAgLTUyLDExICs1MiwxMSBAQCBzdHJ1Y3QgTWF0aElDR2VuZXJhdGlvblN0YXRl
IHsKIAogI2RlZmluZSBFTkFCTEVfTUFUSF9JQ19TVEFUUyAwCiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBHZW5lcmF0b3JUeXBlLCBib29sKCppc1Byb2ZpbGVFbXB0eSkoQXJpdGhQcm9maWxlJik+Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgdHlwZW5hbWUgQXJpdGhQcm9maWxlVHlw
ZT4KIGNsYXNzIEpJVE1hdGhJQyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgSklUTWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgIEpJVE1h
dGhJQyhBcml0aFByb2ZpbGVUeXBlKiBhcml0aFByb2ZpbGUpCiAgICAgICAgIDogbV9hcml0aFBy
b2ZpbGUoYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CkBAIC03MSw3ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5j
b2RlU2l6ZSgpOwogCiAgICAgICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewotICAgICAgICAgICAg
aWYgKGlzUHJvZmlsZUVtcHR5KCptX2FyaXRoUHJvZmlsZSkpIHsKKyAgICAgICAgICAgIGlmICht
X2FyaXRoUHJvZmlsZS0+aXNPYnNlcnZlZFR5cGVFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gSXQgbG9va3MgbGlrZSB0aGUgTWF0aElDIGhhcyB5ZXQgdG8gZXhlY3V0ZS4gV2UgZG9uJ3Qg
d2FudCB0byBlbWl0IGNvZGUgaW4gdGhpcwogICAgICAgICAgICAgICAgIC8vIGNhc2UgZm9yIGEg
Y291cGxlIHJlYXNvbnMuIEZpcnN0LCB0aGUgb3BlcmF0aW9uIG1heSBuZXZlciBleGVjdXRlLCBz
byBpZiB3ZSBkb24ndCBlbWl0CiAgICAgICAgICAgICAgICAgLy8gY29kZSwgaXQncyBhIHdpbi4g
U2Vjb25kLCBpZiB0aGUgb3BlcmF0aW9uIGRvZXMgZXhlY3V0ZSwgd2UgY2FuIGVtaXQgYmV0dGVy
IGNvZGUKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2xvd1BhdGhTdGFy
dExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHN0YXRl
LnNsb3dQYXRoU3RhcnQpOwogICAgIH0KIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KKyAgICBBcml0aFByb2ZpbGVUeXBl
KiBhcml0aFByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2FyaXRoUHJvZmlsZTsgfQogCiAjaWYg
RU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgc2l6ZV90IG1fZ2VuZXJhdGVkQ29kZVNpemUgeyAw
IH07CkBAIC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0gICAgQXJp
dGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAgICBBcml0aFByb2ZpbGVUeXBlKiBtX2FyaXRo
UHJvZmlsZTsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
IG1fY29kZTsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2lubGlu
ZVN0YXJ0OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1faW5saW5l
RW5kOwpAQCAtMjQ2LDE1ICsyNDYsMTEgQEAgcHVibGljOgogICAgIEdlbmVyYXRvclR5cGUgbV9n
ZW5lcmF0b3I7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0JpbmFyeVByb2ZpbGVFbXB0eShBcml0aFBy
b2ZpbGUmIGFyaXRoUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2Vy
dmVkVHlwZSgpLmlzRW1wdHkoKSB8fCBhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNF
bXB0eSgpOwotfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+Ci1jbGFzcyBKSVRC
aW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzQmluYXJ5UHJv
ZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdl
bmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4gewogcHVibGljOgotICAgIEpJVEJpbmFy
eU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8
R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQcm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkKKyAgICBK
SVRCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAgICAg
IDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4oYXJpdGhQcm9m
aWxlKQogICAgIHsKICAgICB9CiB9OwpAQCAtMjYzLDE2ICsyNTksMTEgQEAgdHlwZWRlZiBKSVRC
aW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPiBKSVRBZGRJQzsKIHR5cGVkZWYgSklUQmluYXJ5
TWF0aElDPEpJVE11bEdlbmVyYXRvcj4gSklUTXVsSUM7CiB0eXBlZGVmIEpJVEJpbmFyeU1hdGhJ
QzxKSVRTdWJHZW5lcmF0b3I+IEpJVFN1YklDOwogCi0KLWlubGluZSBib29sIGlzVW5hcnlQcm9m
aWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCi17Ci0gICAgcmV0dXJuIGFyaXRo
UHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7Ci19CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgR2VuZXJhdG9yVHlwZT4KLWNsYXNzIEpJVFVuYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJ
QzxHZW5lcmF0b3JUeXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRVbmFyeU1h
dGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgVW5hcnlBcml0aFByb2ZpbGU+
IHsKIHB1YmxpYzoKLSAgICBKSVRVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0
eT4oYXJpdGhQcm9maWxlKQorICAgIEpJVFVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVuYXJ5QXJp
dGhQcm9maWxlPihhcml0aFByb2ZpbGUpCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKaW5kZXggODNkMjkzYjYyNTIuLmNm
NmJhYTUyZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0
b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMm
IGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5l
cmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2Ug
ZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2Jz
ZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC04OSw3ICs4OSw3IEBAIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0
LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxs
U25pcHBldDsKIH0KIAotYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRNdWxHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1
bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQ
UlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsK
QEAgLTIwNSwxOCArMjA1LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAKICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIG5vdE5lZ2F0aXZlWmVybyA9IGppdC5icmFuY2g2NChDQ2FsbEhl
bHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTY0KG5lZ2F0aXZlWmVyb0JpdHMpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhl
bHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwor
ICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFBy
b2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0
aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
ZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7
Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmls
ZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRo
UHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIEND
YWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygp
KSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hH
UFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUyKSwgbV9z
Y3JhdGNoR1BSKTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6SW1tMzIoMHg3ZmYp
LCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9JbnQ1Mk92ZXJm
bG93ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW5PckVxdWFsLCBtX3NjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMxKSk7CiAKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgbm9JbnQ1
Mk92ZXJmbG93LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwpAQCAtMjI3
LDE4ICsyMjcsMTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICAgICAgICAgbm90TmVnYXRp
dmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1
bHQucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOwogICAgICAg
ICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBtX3Jlc3VsdC50YWdHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobmVnYXRp
dmVaZXJvQml0cyA+PiAzMikpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBq
aXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5l
Z1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUt
PmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGpp
dC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAg
IGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVn
WmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+
YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAg
ICAgICAgaml0Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAg
IGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIgLSAzMiksIG1fc2NyYXRjaEdQ
Uik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3Jh
dGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogICAgICAgICAKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAgICBlbmRK
dW1wTGlzdC5hcHBlbmQobm9JbnQ1Mk92ZXJmbG93KTsKICAgICAgICAgaWYgKG1fc2NyYXRjaEdQ
UiA9PSBtX3Jlc3VsdC50YWdHUFIoKSB8fCBtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQucGF5bG9h
ZEdQUigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKaW5k
ZXggMzZkMjZlYTEyNGUuLjYwODc3OTY2ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTXVsR2VuZXJhdG9yLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgICAgICBB
U1NFUlQoIW1fbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9w
ZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5s
aW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25T
dGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5h
cnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIHNsb3dKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENv
bnN0YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5p
c1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRW
YWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRP
cGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcAppbmRleCA5MmMyOWRkNjMwYS4uY2VlYmUzOTA5NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3Vs
dCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRo
SUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBV
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hH
UFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5w
YXlsb2FkR1BSKCkpOwpAQCAtNDUsNyArNDUsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklU
TmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwog
ICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBl
IG9ic2VydmVkVHlwZXMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKICAgICBpZiAoYXJp
dGhQcm9maWxlKQotICAgICAgICBvYnNlcnZlZFR5cGVzID0gYXJpdGhQcm9maWxlLT5saHNPYnNl
cnZlZFR5cGUoKTsKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+YXJnT2Jz
ZXJ2ZWRUeXBlKCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghb2JzZXJ2ZWRUeXBlcy5pc0Vt
cHR5KCksICJXZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2VuZXJhdGUgYW55dGhpbmcgaWYgd2Ug
ZG8gbm90IGhhdmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYgKG9ic2VydmVkVHlwZXMuaXNPbmx5
Tm9uTnVtYmVyKCkpCkBAIC04Miw3ICs4Miw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRO
ZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAg
ICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0K
IAotYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVu
ZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25z
dCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxp
bmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogI2VuZGlmCiAgICAgLy8gVGhl
IGZsYWdzIG9mIEFyaXRoTmVnYXRlIGFyZSBiYXNpYyBpbiBERkcuCiAgICAgLy8gV2Ugb25seSBu
ZWVkIHRvIGtub3cgaWYgd2UgZXZlciBwcm9kdWNlZCBhIG51bWJlci4KLSAgICBpZiAoc2hvdWxk
RW1pdFByb2ZpbGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2
ZWRUeXBlKCkuc2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgp
KQorICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nICYmIGFyaXRoUHJvZmlsZSAmJiAhYXJpdGhQ
cm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSAmJiAhYXJpdGhQcm9maWxlLT5k
aWRPYnNlcnZlRG91YmxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFNldERvdWJsZShq
aXQpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TmVnR2VuZXJhdG9yLmgKaW5kZXggOGEwYzJkNTE3ZDYuLjc4N2I3MDc2ODI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKQEAgLTQzLDggKzQzLDggQEAg
cHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgIHsgfQogCi0g
ICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3Qg
QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlv
blN0YXRlJiwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3Qs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IFVuYXJ5QXJp
dGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogcHJpdmF0ZToKICAgICBK
U1ZhbHVlUmVncyBtX3Jlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDljNjc2ZjE1MDQ2Li4yMjBmY2Q0ZWQ5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNjQzLDcgKzI2NDMsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQogfQogCi1B
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVkQWRkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9wMiwgQXJpdGhQcm9maWxlJiBhcml0
aFByb2ZpbGUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVkQWRkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9wMiwgQmluYXJ5
QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAgYXJpdGhQcm9maWxlLm9ic2VydmVM
SFNBbmRSSFMob3AxLCBvcDIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGQoZ2xvYmFsT2Jq
ZWN0LCBvcDEsIG9wMik7CkBAIC0yNjU5LDcgKzI2NTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGQoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmls
ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUp
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwpAQCAtMjY3Nyw3ICsyNjc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGcK
ICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBKU1Zh
bHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAotICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VS
VChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEs
IG9wMik7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZUFkZFBy
b2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTI2OTksNyArMjY5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRo
UHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMt
PmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocHJvZmlsZWRBZGQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSwgKmFyaXRoUHJvZmlsZSkp
OwogfQpAQCAtMjcxNCw3ICsyNzE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBK
U1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAogICAgIGF1dG8gbm9u
T3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGROb09wdGltaXplOwotICAgIGlmIChB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBp
ZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxl
KCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAg
ICAgYWRkSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9w
dGltaXplVmFyaWFudCk7CiAKQEAgLTI3NDcsNyArMjc0Nyw3IEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIHVucHJvZmlsZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTXVsKGdsb2JhbE9iamVjdCwgb3Ax
LCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmls
ZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2Zp
bGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FMV0FZU19JTkxJ
TkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2Vy
dmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTI3ODgs
NyArMjc4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBu
b25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemU7Ci0gICAgaWYg
KEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpKQorICAg
IGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2Zp
bGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBtdWxJ
Qy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVW
YXJpYW50KTsKIApAQCAtMjc5OSw3ICsyNzk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoK
ICAgICByZXR1cm4gdW5wcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29k
ZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
TXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVs
UHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI4MTUsNyAr
MjgxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQ
cm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChh
cml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAg
YXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRp
bWl6ZTsKQEAgLTI4MzQsNyArMjgzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAot
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwor
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmls
ZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBwcm9maWxlZE11bChn
bG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQpA
QCAtMjg2MCw3ICsyODYwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpAQCAtMjg2OSw3ICsyODY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWwKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wZXJhbmQpOwotICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAg
ICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7CiAKICAgICBKU1ZhbHVlIHByaW1W
YWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4OTcsOSArMjg5Nyw5IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZSk7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxp
bmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCk7
CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTI5MzEsOCArMjkzMSw4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpKQotICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVM
SFMob3BlcmFuZCk7CisgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBu
ZWdJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUFyZyhv
cGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMp
CkBAIC0yOTU4LDcgKzI5NTgsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSB1bnByb2ZpbGVkU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N1YihnbG9iYWxPYmplY3QsIG9wMSwgb3AyKSk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wg
c2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2
ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKQEAgLTI5ODIsNyArMjk4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jCiAgICAgcmV0dXJuIHVucHJvZmlsZWRTdWIoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBl
bmNvZGVkT3AyKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogCkBAIC0zMDAw
LDcgKzMwMDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
U3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8g
bm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplOwotICAgIGlm
IChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKSkKKyAg
ICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9m
aWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgc3Vi
SUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXpl
VmFyaWFudCk7CiAKQEAgLTMwMjYsNyArMzAyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBn
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRo
UHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTMwNDUsNyArMzA0NSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
c3ViSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwog
ICAgIHJldHVybiBwcm9maWxlZFN1Yih2bSwgZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNv
ZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKaW5kZXggMzdlODM2MTVkNDcuLjU5NWFlYzQ3Y2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzgsNiArMzgsOCBAQCB0eXBlZGVm
IGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAgICAgCiBjbGFzcyBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOworY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFz
cyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCdXR0ZXJmbHk7CiBjbGFzcyBDYWxsRnJhbWU7
CiBjbGFzcyBDYWxsTGlua0luZm87CkBAIC02NCw3ICs2Niw2IEBAIGNsYXNzIFdhdGNocG9pbnRT
ZXQ7CiBzdHJ1Y3QgQnlWYWxJbmZvOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIHN0cnVjdCBJ
bnN0cnVjdGlvbjsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiAKIGV4dGVybiAiQyIgewogCkBAIC03
Nyw3ICs3OCw3IEBAIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogICAgIEE6IEpTQXJyYXkqCiAg
ICAgQWFwOiBBcnJheUFsbG9jYXRpb25Qcm9maWxlKgogICAgIEFwOiBBcnJheVByb2ZpbGUqCi0g
ICAgQXJwOiBBcml0aFByb2ZpbGUqCisgICAgQXJwOiBCaW5hcnlBcml0aFByb2ZpbGUqCiAgICAg
QjogQnV0dGVyZmx5KgogICAgIEJ5OiBCeVZhbEluZm8qCiAgICAgQzogSlNDZWxsKgpAQCAtMjgy
LDcgKzI4Myw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0lmRXhjZXB0
aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKFZNCiBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkSGFzSW5zdGFuY2UpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFy
eUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRk
SUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRk
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdURl9JTlRFUk5BTDsKQEAgLTI5Miwx
MyArMjkzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11
bElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQ
cm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJp
bmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBvcGVyYW5kKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIEFy
aXRoUHJvZmlsZSopOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwg
VW5hcnlBcml0aFByb2ZpbGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgSklUTmVnSUMqKTsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBC
aW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVTdWJOb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCmluZGV4IDc5NWMyNzU4NGMwLi43
YjFhOGI4MTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJh
dG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElD
SW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJz
JiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2Vu
ZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3Rh
dGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdl
IGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9i
c2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtNzgsNyArNzgsNyBAQCBKSVRNYXRoSUNJbmxp
bmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGpp
dCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVs
bFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEND
YWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUU3ViR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhK
dW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hv
dWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRH
UFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRHUFIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAppbmRleCA1NjFm
NjMzNGFlMy4uMzQ5MWE4M2ZlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3ViR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dWJHZW5lcmF0b3IuaApAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zY3Jh
dGNoRlBSKHNjcmF0Y2hGUFIpCiAgICAgeyB9CiAKLSAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29u
c3QgQXJpdGhQcm9maWxlKik7Ci0gICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3Vs
ZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5hcnlBcml0
aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxk
RW1pdFByb2ZpbGluZyk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0xlZnRPcGVyYW5kVmFsaWRDb25z
dGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBp
c1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQpIHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGJkYTMw
OGM4NGQyLi5jMDM0MWM5NTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKQEAgLTEzNSwzNiArMTM1LDQ5IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMoVk0mIHZtKQogI2VuZGlmCiAKICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAg
YXJpdGhQcm9maWxlLmFyZ1Nhd0ludDMyKCk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUu
Yml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEJpdHMoKSk7CisgICAgICAg
IEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAg
ICAgICBhcml0aFByb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckJpdHMoKSk7
CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVt
YmVyKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRo
UHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CiAgICAgICAgIGFy
aXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkuYml0cygpKTsKLSAg
ICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCku
bGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQo
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLnJoc09ic2VydmVkVHlwZSgpLmlz
T25seUludDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5h
cnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKICAgICB9
CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBCaW5h
cnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3
TnVtYmVyKCk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5
TnVtYmVySW50KCkuYml0cygpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6
Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVy
KCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlO
dW1iZXJJbnQoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51
bWJlckludEJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRU
eXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09i
c2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdOdW1iZXIoKTsKICAgICAgICAgYXJp
dGhQcm9maWxlLnJoc1Nhd051bWJlcigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkuYml0cygp
KTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVt
YmVyTnVtYmVyKCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwotICAgICAgICBT
VEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5y
aHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdW1iZXJC
aXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlz
T25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5
cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxl
IGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsK
ICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CiAgICAgICAgIGFyaXRoUHJvZmls
ZS5yaHNTYXdOdW1iZXIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0g
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmJpdHMoKSk7Ci0gICAgICAg
IFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmxo
c09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5yaHNPYnNlcnZlZFR5cGUoKS5p
c09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEJp
bmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkpOworICAgICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgICAg
ICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsK
ICAgICB9CiB9CiBJR05PUkVfV0FSTklOR1NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IGEyNWY5ODRhYmRh
Li5mNWQ5MTc3NDYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogCiBj
b25zdCBpbnQ2NF90KiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKIHsKLS8vIFRoaXMg
aXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldHNfZXh0cmFj
dG9yLnJiLCBhbmQgY29udGFpbnMgY29kZQorLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5
IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNv
ZGUKIC8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIg
aWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgogLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2Ug
aGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0
c0V4dHJhY3RvcgogLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdob3NlIG9mZnNldHMgd2UncmUgZXh0
cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAw
MTM1ODc3MjFiOS4uYjJhNzQyZTdiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI0MCwxMyArMjQwLDE1IEBAIGNv
bnN0IElzSW52YWxpZGF0ZWQgPSBjb25zdGV4cHIgSXNJbnZhbGlkYXRlZAogIyBTaGFkb3dDaGlj
a2VuIGRhdGEKIGNvbnN0IFNoYWRvd0NoaWNrZW5UYWlsTWFya2VyID0gY29uc3RleHByIFNoYWRv
d0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlclZhbHVlCiAKLSMgQXJpdGhQcm9maWxlIGRhdGEK
LWNvbnN0IEFyaXRoUHJvZmlsZUludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZl
ZFVuYXJ5SW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHBy
IChBcml0aFByb2ZpbGU6Om9ic2VydmVkVW5hcnlOdW1iZXIoKS5iaXRzKCkpCi1jb25zdCBBcml0
aFByb2ZpbGVJbnRJbnQgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJ
bnRJbnQoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJJbnQgPSBjb25zdGV4cHIg
KEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5iaXRzKCkpCi1jb25zdCBB
cml0aFByb2ZpbGVJbnROdW1iZXIgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRC
aW5hcnlJbnROdW1iZXIoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIg
PSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5i
aXRzKCkpCisjIFVuYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0IEFyaXRoUHJvZmlsZUludCA9
IGNvbnN0ZXhwciAoVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cygpKQorY29uc3Qg
QXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHByIChVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2
ZWROdW1iZXJCaXRzKCkpCisKKyMgQmluYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0IEFyaXRo
UHJvZmlsZUludEludCA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dEludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IGNvbnN0ZXhwciAoQmlu
YXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJv
ZmlsZUludE51bWJlciA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dE51bWJlckJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IGNvbnN0ZXhw
ciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKSkKIAogIyBQ
b2ludGVyIFRhZ3MKIGNvbnN0IEJ5dGVjb2RlUHRyVGFnID0gY29uc3RleHByIEJ5dGVjb2RlUHRy
VGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGJjMjMwZTU3Mzg2Li4yZTcyZWMyZDcxNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KQEAgLTk5Miw4ICs5OTIsOCBAQCBlbmQpCiAKIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCiAKLSAgICBtYWNybyBhcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgb3Jp
IHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6
Om1fYml0c1t0NV0KKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAg
b3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRo
UHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgIGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAt
MTAwMiwxMiArMTAwMiwxMiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdh
dGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcgogICAgIGJpbmVxIHQx
LCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CiAgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwg
Lm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDIKLSAgICBhcml0aFByb2ZpbGUoQXJpdGhQcm9maWxl
SW50KQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJu
IChJbnQzMlRhZywgdDIpCiAub3BOZWdhdGVTcmNOb3RJbnQ6CiAgICAgYmlhIHQxLCBMb3dlc3RU
YWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgYXJpdGhQcm9m
aWxlKEFyaXRoUHJvZmlsZU51bWJlcikKKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9m
aWxlTnVtYmVyKQogICAgIHJldHVybih0MSwgdDIpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDE5
LDcgKzEwMTksNyBAQCBlbmQpCiBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24p
CiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1h
Y3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0K
KyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQ
cm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAg
ICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZjJkZGJiMjc5ZWEuLjcyZjg0
ZWE4NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtOTY0LDIyICs5NjQsMjQgQEAgZW5kKQogCiAKIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUo
dHlwZSkKKyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIGVuZAorCiAgICAgZ2V0KG1f
b3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAg
ICAgbWV0YWRhdGEodDEsIHQyKQotICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0
aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCiAgICAgYnFiIHQzLCBudW1i
ZXJUYWcsIC5vcE5lZ2F0ZU5vdEludAogICAgIGJ0aXogdDMsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0
ZVNsb3cKICAgICBuZWdpIHQzCiAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICBvcmkgQXJpdGhQ
cm9maWxlSW50LCB0MgotICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRo
UHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIHVwZGF0ZUFyaXRoUHJvZmls
ZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuKHQzKQogLm9wTmVnYXRlTm90SW50OgogICAg
IGJ0cXogdDMsIG51bWJlclRhZywgLm9wTmVnYXRlU2xvdwogICAgIHhvcnEgMHg4MDAwMDAwMDAw
MDAwMDAwLCB0MwotICAgIG9yaSBBcml0aFByb2ZpbGVOdW1iZXIsIHQyCi0gICAgc3RvcmVpIHQy
LCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2Jp
dHNbdDFdCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKICAgICBy
ZXR1cm4odDMpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC05OTMsNyArOTk1LDcgQEAgbWFjcm8gYmlu
YXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRp
b25BbmRTdG9yZSwgZG8KICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQogCiAgICAgICAgIG1hY3Jv
IHByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisgICAgICAg
ICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSAr
IFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAgICAgIGdl
dChtX3JocywgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm0ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKaW5kZXgg
OTg4MWU0ZGJkMDMuLjVlOTgzNGNjYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXJtLnJiCkBAIC00MTgsNyArNDE4LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAg
ICAgIGVuZAogICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCiAgICAgICAgICAgICBlbWl0QXJt
Q29tcGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAib3JpIiwgIm9y
cCIKKyAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIsICJvcmgiCiAgICAgICAgICAgICBlbWl0QXJt
Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKICAgICAgICAgd2hlbiAib3JpcyIKICAg
ICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJzIiwgIm9ycnMiLCBvcGVyYW5kcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKaW5kZXggNGNkOGY2NmUzMDMuLmE1
N2U2MzhhNTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm02NC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpA
QCAtMzc4LDcgKzM3OCw3IEBAIGNsYXNzIFNlcXVlbmNlCiAgICAgICAgICAgICBjYXNlIG5vZGUu
b3Bjb2RlCiAgICAgICAgICAgICB3aGVuICJsb2FkYiIsICJsb2FkYnNpIiwgImxvYWRic3EiLCAi
c3RvcmViIiwgL15iYi8sIC9eYnRiLywgL15jYi8sIC9edGIvCiAgICAgICAgICAgICAgICAgc2l6
ZSA9IDEKLSAgICAgICAgICAgIHdoZW4gImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIKKyAg
ICAgICAgICAgIHdoZW4gImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIsICJvcmgiLCAic3Rv
cmVoIgogICAgICAgICAgICAgICAgIHNpemUgPSAyCiAgICAgICAgICAgICB3aGVuICJsb2FkaSIs
ICJsb2FkaXMiLCAic3RvcmVpIiwgImFkZGkiLCAiYW5kaSIsICJsc2hpZnRpIiwgIm11bGkiLCAi
bmVnaSIsCiAgICAgICAgICAgICAgICAgIm5vdGkiLCAib3JpIiwgInJzaGlmdGkiLCAidXJzaGlm
dGkiLCAic3ViaSIsICJ4b3JpIiwgL15iaS8sIC9eYnRpLywKQEAgLTYzMSw2ICs2MzEsOCBAQCBj
bGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIiLCBvcGVyYW5k
cywgOnB0cikKICAgICAgICAgd2hlbiAib3JxIgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJv
cnIiLCBvcGVyYW5kcywgOnF1YWQpCisgICAgICAgIHdoZW4gIm9yaCIKKyAgICAgICAgICAgIGVt
aXRBUk02NFRBQygib3JyIiwgb3BlcmFuZHMsIDp3b3JkKSAjIG5vdCA6aGFsZiBiZWNhdXNlIDE2
LWJpdCByZWdpc3RlcnMgZG9uJ3QgZXhpc3Qgb24gQVJNLgogICAgICAgICB3aGVuICJ4b3JpIgog
ICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJlb3IiLCBvcGVyYW5kcywgOndvcmQpCiAgICAgICAg
IHdoZW4gInhvcnAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9jbG9vcC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCmlu
ZGV4IGI3MTQ5ZTgyYWNiLi5hNjgxNmNiY2E3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vY2xvb3AucmIKQEAgLTU4NSw2ICs1ODUsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgog
ICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50NjQsICJ8IikKICAg
ICAgICAgd2hlbiAib3JwIgogICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRz
LCA6aW50cHRyLCAifCIpCisgICAgICAgIHdoZW4gIm9yaCIKKyAgICAgICAgICAgIGNsb29wRW1p
dE9wZXJhdGlvbihvcGVyYW5kcywgOmludDE2LCAifCIpCiAKICAgICAgICAgd2hlbiAieG9yaSIK
ICAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDMyLCAiXiIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKaW5k
ZXggNzE3ODhiMTA4MzcuLjE2NzY3NTRhMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCkBAIC00Miw2ICs0Miw3IEBAIE1BQ1JPX0lO
U1RSVUNUSU9OUyA9CiAgICAgICJuZWdxIiwKICAgICAgIm5vdGkiLAogICAgICAib3JpIiwKKyAg
ICAgIm9yaCIsCiAgICAgICJyc2hpZnRpIiwKICAgICAgInVyc2hpZnRpIiwKICAgICAgInJzaGlm
dHAiLApAQCAtNjAsNiArNjEsNyBAQCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAibG9hZGhz
cSIsCiAgICAgICJzdG9yZWkiLAogICAgICAic3RvcmViIiwKKyAgICAgInN0b3JlaCIsCiAgICAg
ICJsb2FkZCIsCiAgICAgICJtb3ZlZCIsCiAgICAgICJzdG9yZWQiLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKaW5kZXggOWVlZDI1NDk5ZWMuLjM3NmQ2OTlkOWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKQEAgLTUyNyw3ICs1Mjcs
NyBAQCBkZWYgbWlwc0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhsaXN0KQogICAgICAgICAgICAg
ICAgIGVuZAogICAgICAgICAgICAgd2hlbiAvXihhZGRpfHN1YmkpLwogICAgICAgICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdM
aXN0LCAtMHg3ZmZmLi4weDdmZmYpCi0gICAgICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiLCAi
b3JpIiwgIm9ycCIsICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICB3aGVuICJhbmRpIiwgImFu
ZHAiLCAib3JpIiwgIm9ycCIsICJvcmgiLCAieG9yaSIsICJ4b3JwIgogICAgICAgICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdM
aXN0LCAwLi4weGZmZmYpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBub2RlCkBAIC04NjAsNyArODYwLDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAg
ICAgIGVuZAogICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCiAgICAgICAgICAgICBlbWl0TUlQ
U0NvbXBhY3QoImFuZCIsICJhbmQiLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAib3JpIiwgIm9y
cCIKKyAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIsICJvcmgiCiAgICAgICAgICAgICBlbWl0TUlQ
U0NvbXBhY3QoIm9yIiwgIm9yciIsIG9wZXJhbmRzKQogICAgICAgICB3aGVuICJvcmlzIgogICAg
ICAgICAgICAgZW1pdE1JUFNDb21wYWN0KCJvciIsICJvcnJzIiwgb3BlcmFuZHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgppbmRleCA4YjhkZThkMTI4YS4uZDk0ZWVh
Y2UxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2Mu
cmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgpAQCAtNDg5
LDYgKzQ4OSwxMSBAQCBkZWYgcmlzY0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKGxpc3QpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlzY0FzUmVnaXN0ZXJzKG5l
d0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJicyIpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAg
ICB3aGVuICJvcmgiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJpc2NBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJh
bmRzLCAiaCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
bm90YXRpb24pCiAgICAgICAgICAgICB3aGVuICJhZGRkIiwgImRpdmQiLCAic3ViZCIsICJtdWxk
IiwgInNxcnRkIiwgL15iZC8KICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhub2RlLmNvZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS5vcGNvZGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYu
cmIKaW5kZXggMTY2ZjRiZGExMjcuLmRmYjRmOWM4ZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCkBAIC04ODUsNiArODg1LDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24K
ICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvciN7eDg2U3VmZml4KDpwdHIpfSIsIDpwdHIpCiAg
ICAgICAgIHdoZW4gIm9ycSIKICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvciN7eDg2U3VmZml4
KDpxdWFkKX0iLCA6cXVhZCkKKyAgICAgICAgd2hlbiAib3JoIgorICAgICAgICAgICAgaGFuZGxl
WDg2T3AoIm9yI3t4ODZTdWZmaXgoOmhhbGYpfSIsIDpoYWxmKQogICAgICAgICB3aGVuICJyc2hp
ZnRpIgogICAgICAgICAgICAgaGFuZGxlWDg2U2hpZnQoInNhciN7eDg2U3VmZml4KDppbnQpfSIs
IDppbnQpCiAgICAgICAgIHdoZW4gInJzaGlmdHAiCkBAIC05NzEsNiArOTczLDggQEAgY2xhc3Mg
SW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGVuZAogICAgICAgICB3aGVuICJzdG9yZWIiCiAgICAg
ICAgICAgICAkYXNtLnB1dHMgIm1vdiN7eDg2U3VmZml4KDpieXRlKX0gI3t4ODZPcGVyYW5kcyg6
Ynl0ZSwgOmJ5dGUpfSIKKyAgICAgICAgd2hlbiAic3RvcmVoIgorICAgICAgICAgICAgJGFzbS5w
dXRzICJtb3Yje3g4NlN1ZmZpeCg6aGFsZil9ICN7eDg2T3BlcmFuZHMoOmhhbGYsIDpoYWxmKX0i
CiAgICAgICAgIHdoZW4gImxvYWRkIgogICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje3g4
Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKICAgICAgICAgd2hlbiAibW92ZWQiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCmluZGV4IDliM2QwZDc0YzhkLi41
NjIyZjI4OWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1
bHRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgK
QEAgLTQ4LDYgKzQ4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBudW1CaXRzTmVlZGVkID0gNzsKICAgICAgICAgc3RhdGljX2Fzc2VydCgoVHlwZUJp
dHMgJiAoKDEgPDwgbnVtQml0c05lZWRlZCkgLSAxKSkgPT0gVHlwZUJpdHMsICJUaGlzIGlzIG5l
Y2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MuIik7CiAKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0
IFJlc3VsdFR5cGUoKQorICAgICAgICAgICAgOiBSZXN1bHRUeXBlKHVua25vd25UeXBlKCkpCisg
ICAgICAgIHsKKyAgICAgICAgfQogICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlw
ZShUeXBlIHR5cGUpCiAgICAgICAgICAgICA6IG1fYml0cyh0eXBlKQogICAgICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRl
eCA4NjZkMmE5YzJlMy4uNzJlMDQwOTE1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDc2LDggKzQ3Niw4IEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF90b19zdHJpbmcpCiAjaWYgRU5BQkxFKEpJVCkKIHN0YXRpYyB2
b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEm
IG1ldGFkYXRhLCBKU1ZhbHVlIHJlc3VsdCwgSlNWYWx1ZSBvcGVyYW5kKQogewotICAgIEFyaXRo
UHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOwotICAgIHByb2ZpbGUu
b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1l
dGFkYXRhLm1fYXJpdGhQcm9maWxlOworICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsK
ICAgICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkgfHwgcmVzdWx0LmlzQmlnSW50KCkpOwogICAg
IGlmIChyZXN1bHQuaXNOdW1iZXIoKSkgewogICAgICAgICBpZiAoIXJlc3VsdC5pc0ludDMyKCkp
IHsKQEAgLTUzNCw3ICs1MzQsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQog
I2lmIEVOQUJMRShERkdfSklUKQogc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmlu
YXJ5QXJpdGhPcChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
bnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgcmVzdWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmln
aHQpCiB7Ci0gICAgQXJpdGhQcm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+YXJpdGhQcm9m
aWxlRm9yUEMocGMpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9ICpjb2RlQmxv
Y2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKHBjKTsKIAogICAgIGlmIChyZXN1bHQuaXNOdW1i
ZXIoKSkgewogICAgICAgICBpZiAoIXJlc3VsdC5pc0ludDMyKCkpIHsKQEAgLTU5NSw3ICs1OTUs
NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQogICAgIEpTVmFsdWUgdjEgPSBHRVRf
QyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgdjIgPSBHRVRfQyhieXRl
Y29kZS5tX3JocykuanNWYWx1ZSgpOwogCi0gICAgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUg
PSAqY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJpdGhQcm9m
aWxlJiBhcml0aFByb2ZpbGUgPSAqY29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhw
Yyk7CiAgICAgYXJpdGhQcm9maWxlLm9ic2VydmVMSFNBbmRSSFModjEsIHYyKTsKIAogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNBZGQoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382337</attachid>
            <date>2019-10-30 11:38:48 -0700</date>
            <delta_ts>2019-10-30 13:32:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>123134</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZiZWQyNDIwYzVmLi4xNmYyYzk4MTM3MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY4IEBACisyMDE5LTEwLTE0ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGltZSBvbmx5IHVzZWQgZm9y
IGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQgYmVpbmcgdXNlZCBmb3Ig
bmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1c2VkIGZvciBpbmMgYW5k
IGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBhdGNoIEkgbWFrZSBhIHNl
cGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3IgYSBzaW5nbGUgYXJndW1l
bnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisKKyAgICAgICAgQWZ0ZXIg
ZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXplZCB0aGF0IHRoZSBSZXN1
bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQcm9maWxlIGFyZSBub3Qg
bmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFscmVhZHkgaW4gdGhlIGJ5
dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3ZpbmcgdGhlbSBhbGxvd2Vk
IHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBmaXQgaW4gMTYgYml0cyAo
OSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRoZSB0d28ga2luZHMgc2Vw
YXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRlcGVuZGVudGx5IGluIHRo
ZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlcXVpcmVkIGFkZGluZyB0aGUgIm9yaCIg
aW5zdHJ1Y3Rpb24gdG8gdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCB0byBzZXQgYml0cyBpbiB0aGUg
QXJpdGhQcm9maWxlLgorICAgICAgICBUaGlzIGluIHR1cm4gbW90aXZhdGVkIHRoZSBhZGRpdGlv
biBvZiAic3RvcmVoIiwgYXMgb24gUklTQyBwbGF0Zm9ybXMgIm9yaCIgb24gYSBtZW1vcnkgbG9j
YXRpb24gaXMgYWN0dWFsbHkgbG9hZGggLT4gb3JoIC0+IHN0b3JlaC4KKworICAgICAgICAqIGJ5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51
bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6
c2hvdWxkRW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50IGNvbnN0KToKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbkludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlRG91YmxlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOb25OdW1lcmlj
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSW50MzJPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDUyT3Zl
cmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkTm9u
TmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRO
ZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5v
bk51bWVyaWMpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3cp
OgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSW50NTJPdmVyZmxvdyk6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6YWRkcmVzc09mQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6QXJp
dGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpoYXNCaXRzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRCaXQpOgorICAgICAgICAoSlNDOjpVbmFy
eUFyaXRoUHJvZmlsZTo6VW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmFyeUFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlOjphcmdPYnNlcnZlZFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJv
ZmlsZTo6c2V0QXJnT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2Zp
bGU6OmFyZ1Nhd0ludDMyKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nh
d051bWJlcik6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdOb25OdW1i
ZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZUFyZyk6CisgICAg
ICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpCaW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cyk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMpOgorICAg
ICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cyk6
CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6c2V0TGhzT2JzZXJ2ZWRUeXBlKToK
KyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpzZXRSaHNPYnNlcnZlZFR5cGUpOgor
ICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFMpOgorICAgICAgICAo
SlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFNBbmRSSFMpOgorICAgICAgICAoSlND
OjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2ZWRUeXBlRW1wdHkpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVEFkZElDKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklU
U3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElD
KToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bWFrZURpdlNhZmUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJ
Qyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlN
YXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJp
dGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRB
ZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJ
Q0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKiBqaXQvSklURGl2R2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJ
VERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZSk6CisgICAgICAgICog
aml0L0pJVE1hdGhJQy5oOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OkpJVE1hdGhJQyk6Cisg
ICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpK
SVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OmlzQmluYXJ5UHJv
ZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6SklUQmluYXJ5TWF0aElDOjpKSVRCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjppc1VuYXJ5UHJvZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6
SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAgICAgICAgKiBqaXQvSklUTXVsR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVROZWdHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJ
VFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBsbGludC9M
TEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBl
OjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAg
IChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTAtMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHRoZSBSZW1vdGUgUGxheWJhY2sgQVBJLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRl
eCA5OTk5MzNiOGMwZS4uN2Y0NmY3M2ZjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCkBAIC0zMiw3ICszMiw4IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVS
ZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01v
ZGUgbW9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBK
U1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCFzaG91
bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3Vs
ZEVtaXRTZXRCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNDEgKzU5LDUxIEBAIHZv
aWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNW
YWx1ZVJlZ3MgcmVncywgVGFnUmVnCiAgICAgZG9uZS5saW5rKCZqaXQpOwogfQogCi1ib29sIEFy
aXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRF
bWl0U2V0RG91YmxlKCkgY29uc3QKIHsKLSAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxl
OjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJpdGhQcm9m
aWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlOworICAg
IHVpbnQzMl90IG1hc2sgPSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlOwogICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0g
bWFzazsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJz
JiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBj
b25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0RG91YmxlKCkpCi0gICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50MzJPdmVyZmxvdyB8
IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJs
ZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YWRkcmVzc09mQml0cygpKSk7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0
Tm9uTnVtZXJpYygpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29s
IEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNv
bnN0CiB7CiAgICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsKICAg
ICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxl
OjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxk
VHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdAogewogICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6OkJpZ0ludDsK
ICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJpdGhQcm9m
aWxlOjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChz
aG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoTm9uTnVtZXJpYyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZp
ZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQo
KSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9m
aWxlOjpCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRz
KCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmlnSW50
KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CiB9CisK
Ky8vIEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBhYm92ZSBm
b3IgVW5hcnlBcml0aFByb2ZpbGUvQmluYXJ5QXJpdGhQcm9maWxlCisvLyBJZiBjaGFuZ2luZyB0
aGUgc2l6ZSBvZiBlaXRoZXIsIGFkZCB0aGUgY29ycmVzcG9uZGluZyBsaW5lcyBoZXJlLgordGVt
cGxhdGUgY2xhc3MgQXJpdGhQcm9maWxlPHVpbnQxNl90PjsKICNlbmRpZiAvLyBFTkFCTEUoSklU
KQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKQEAgLTEwMSw3ICsxMTIsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0
aFByb2ZpbGU8VD4mIHByb2ZpbGUpCiB7CiAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yID0gIiI7
CiAKQEAgLTEzNSwxOSArMTQ3LDMwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCiAgICAgICAgICAgICBzZXBhcmF0b3Ig
PSAifCI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0
UGF0aCgpKQotICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiVG9vayBzcGVjaWFsIGZhc3Qg
cGF0aC4iKTsKICAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAg
IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFBy
b2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisgICAgb3V0LnByaW50KCIgQXJnIE9ic2VydmVkVHlw
ZTo8Iik7CisgICAgb3V0LnByaW50KHByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkpOworICAgIG91
dC5wcmludCgiPiIpOworfQorCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAgIHByaW50SW50ZXJuYWwo
b3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPj4ocHJv
ZmlsZSkpOworCisgICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0UGF0aCgpKQorICAgICAg
ICBvdXQucHJpbnQoIiBUb29rIHNwZWNpYWwgZmFzdCBwYXRoLiIpOwogCiAgICAgb3V0LnByaW50
KCIgTEhTIE9ic2VydmVkVHlwZTo8Iik7CiAgICAgb3V0LnByaW50KHByb2ZpbGUubGhzT2JzZXJ2
ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgiPiBSSFMgT2JzZXJ2ZWRUeXBlOjwiKTsKICAgICBv
dXQucHJpbnQocHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKSk7CiAgICAgb3V0LnByaW50KCI+Iik7
Ci0KLSAgICBvdXQucHJpbnQoIiBMSFMgUmVzdWx0VHlwZTo8IiwgUmF3UG9pbnRlcihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocHJvZmlsZS5saHNSZXN1bHRUeXBl
KCkuYml0cygpKSkpKTsKLSAgICBvdXQucHJpbnQoIj4gUkhTIFJlc3VsdFR5cGU6PCIsIFJhd1Bv
aW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2ZpbGUu
cmhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7Ci0gICAgb3V0LnByaW50KCI+Iik7CiB9CiAKIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBKU0M6Ok9ic2VydmVkVHlw
ZSYgb2JzZXJ2ZWRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5oCmluZGV4IGZjYzRlMjgxOGJlLi5jYWQ5OWY0OGJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNjYsMTE5ICs2NiwyMTcg
QEAgcHJpdmF0ZToKICAgICB1aW50OF90IG1fYml0cyB7IDAgfTsKIH07CiAKLXN0cnVjdCBBcml0
aFByb2ZpbGUgewotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bWJl
ck9mRmxhZ0JpdHMgPSA2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzUmVzdWx0
VHlwZVNoaWZ0ID0gbnVtYmVyT2ZGbGFnQml0czsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IGxoc1Jlc3VsdFR5cGVTaGlmdCA9IHJoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6
Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNPYnNlcnZl
ZFR5cGVTaGlmdCA9IGxoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6Om51bUJpdHNOZWVk
ZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNPYnNlcnZlZFR5cGVTaGlmdCA9
IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkOwotCi0g
ICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPT0gMywgIldlIG1h
a2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQgdGhhdCBoZXJlLiIpOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KH4oKDEgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKHJoc09ic2Vy
dmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1h
c2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ofigoMSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkg
fCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyAxKSkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRU
eXBlU2hpZnQgKyAyKSkpKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmVzdWx0
VHlwZU1hc2sgPSAoMSA8PCBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQml0ZmllbGRUeXBl
PgorY2xhc3MgQXJpdGhQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBlbnVtIE9ic2VydmVkUmVzdWx0
cyB7CisgICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8IDAsCisgICAgICAgIE5lZ1plcm9E
b3VibGUgICAgPSAxIDw8IDEsCisgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCisg
ICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCisgICAgICAgIEludDUyT3ZlcmZsb3cg
ICAgPSAxIDw8IDQsCisgICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgfTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVk
ZWQgPSA2OwogCi0gICAgZW51bSBjbGFzcyBDb25zdGFudFRhZyB7IENvbnN0YW50IH07CisgICAg
Ym9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1pl
cm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBi
b29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9E
b3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9CisgICAg
Ym9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVn
WmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyBy
ZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgp
IGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUlu
dDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Cisg
ICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMo
SW50NTJPdmVyZmxvdyk7IH0KIAotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3Qgc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNl
cnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVk
VHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSA8PSAoc2l6ZW9mKHVpbnQz
Ml90KSAqIDgpIC0gMSwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFz
ayksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhl
c2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZh
c3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hv
dWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBoaWdo
ZXIgYml0LiIpOworICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRC
aXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJs
ZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51
bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJ
bnQoKSB7IHNldEJpdChCaWdJbnQpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZs
b3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1
Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KIAotICAgIEFyaXRoUHJvZmls
ZShSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNv
bnN0YW50LCBhcmcpCisgICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUpCiAgICAg
ewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSBhcmcuYml0cygpKTsK
LSAgICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFT
U0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOworICAgICAgICBpZiAodmFsdWUuaXNJ
bnQzMigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIo
KSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93
IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGU7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKKyAg
ICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgbV9iaXRzIHw9IE5vbk51bWVyaWM7CiAgICAgfQogCi0gICAgQXJpdGhQcm9m
aWxlKFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBBcml0aFByb2Zp
bGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBsaHMsIHJocykKKyAgICBjb25zdCB2b2lkKiBhZGRy
ZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4gJm1fYml0czsgfQorCisjaWYgRU5BQkxFKEpJVCkK
KyAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKKyAgICAvLyBkb3VibGUuIFNldHMg
Tm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCisgICAgdm9pZCBlbWl0T2JzZXJ2
ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhh
dmVUYWdSZWdpc3RlcnMpOworCisgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3Zl
cmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCisgICAgYm9vbCBzaG91
bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0RG91YmxlKENDYWxsSGVs
cGVycyYpIGNvbnN0OworCisgICAgLy8gU2V0cyBOb25OdW1iZXIuCisgICAgdm9pZCBlbWl0U2V0
Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRO
b25OdW1lcmljKCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIEJpZ0ludAorICAgIHZvaWQgZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdDsKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisgICAgY29uc3RleHByIHVpbnQz
Ml90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworcHJvdGVjdGVkOgorICAgIEFy
aXRoUHJvZmlsZSgpCiAgICAgewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMo
KSA9PSBsaHMuYml0cygpICYmIHJoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gcmhzLmJpdHMoKSk7
Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBB
U1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKICAgICB9CiAKLSAgICBBcml0aFBy
b2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQotICAgICAgICA6IEFyaXRoUHJvZmlsZSh0eXBlcy5m
aXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKLSAgICB7IH0KKyAgICBib29sIGhhc0JpdHMoaW50IG1h
c2spIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIG1hc2s7IH0KKyAgICB2b2lkIHNldEJpdChpbnQg
bWFzaykgeyBtX2JpdHMgfD0gbWFzazsgfQorCisgICAgQml0ZmllbGRUeXBlIG1fYml0cyB7IDAg
fTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVy
YXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRh
dGlvbiB0byBpdC4KK307CisKKy8qIFRoaXMgY2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dpbmcgY29t
cG9uZW50cyBpbiAxNiBiaXRzOgorICogLSBPYnNlcnZlZFJlc3VsdHMKKyAqIC0gT2JzZXJ2ZWRU
eXBlIGZvciB0aGUgYXJndW1lbnQKKyAqLwordXNpbmcgVW5hcnlBcml0aFByb2ZpbGVCYXNlID0g
dWludDE2X3Q7CitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8
VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBh
cmdPYnNlcnZlZFR5cGVTaGlmdCA9IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVkZWQ7CiAKLSAg
ICBBcml0aFByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljX2Fzc2VydChhcmdPYnNlcnZl
ZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8PSBzaXplb2YoVW5hcnlB
cml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdGhlIHR5cGUgb2YgdGhlIHVu
ZGVybHlpbmcgYml0ZmllbGQuIik7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmls
ZSBmcm9tSW50KHVpbnQzMl90IGJpdHMpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8VW5h
cnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSk7CisK
KyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZFR5cGVN
YXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7CisKK3B1YmxpYzoK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPFVuYXJ5QXJp
dGhQcm9maWxlQmFzZT4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEFyaXRoUHJvZmlsZSB7IENv
bnN0YW50VGFnOjpDb25zdGFudCwgYml0cyB9OworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRU
eXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1w
dHkoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2
ZWRVbmFyeUludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ug
b2JzZXJ2ZWRJbnRCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUg
b2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNv
bnN0ZXhwciB1aW50MzJfdCBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2
ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDgwMDAwMCwgIiIp
OwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5
QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29u
c3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZFVuYXJ5TnVtYmVyKCkKKyAgICBzdGF0aWMgY29u
c3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJlckJpdHMoKQogICAgIHsK
ICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVk
VHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4MTAwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJv
bUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gb2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAg
ICByZXR1cm4gYml0czsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGFyZ09i
c2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGFyZ09i
c2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CisgICAgdm9pZCBzZXRBcmdP
YnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKKyAgICAgICAgYml0cyAmPSBjbGVhckFyZ09ic2Vy
dmVkVHlwZUJpdE1hc2s7CisgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIG1fYml0cyA9IGJpdHM7CisgICAgICAgIEFTU0VSVChhcmdP
YnNlcnZlZFR5cGUoKSA9PSB0eXBlKTsKKyAgICB9CisKKyAgICB2b2lkIGFyZ1Nhd0ludDMyKCkg
eyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9Cisg
ICAgdm9pZCBhcmdTYXdOdW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5
cGUoKS53aXRoTnVtYmVyKCkpOyB9CisgICAgdm9pZCBhcmdTYXdOb25OdW1iZXIoKSB7IHNldEFy
Z09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CisKKyAg
ICB2b2lkIG9ic2VydmVBcmcoSlNWYWx1ZSBhcmcpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIGlmIChhcmcuaXNOdW1iZXIoKSkg
eworICAgICAgICAgICAgaWYgKGFyZy5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgbmV3UHJv
ZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5l
d1Byb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbmV3
UHJvZmlsZS5hcmdTYXdOb25OdW1iZXIoKTsKKworICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKKyAgICB9CisKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKKyAgICB9CisKKyAg
ICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9OworCisvKiBUaGlz
IGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMgaW4gMTYgYml0czoKKyAqIC0g
T2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgcmlnaHQtaGFuZC1zaWRlCisg
KiAtIE9ic2VydmVkVHlwZSBmb3IgbGVmdC1oYW5kLXNpZGUKKyAqIC0gYSBiaXQgdXNlZCBieSBk
aXZpc2lvbiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgc3BlY2lhbCBmYXN0IHBhdGggd2FzIHRha2Vu
CisgKi8KK3VzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50MTZfdDsKK2NsYXNzIEJp
bmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxl
QmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsKKworICAgIHN0YXRpY19hc3NlcnQoT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJXZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9uIGFib3V0
IHRoYXQgaGVyZS4iKTsKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQ
cm9maWxlQmFzZT4ofigwYjExMSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCkpOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGxo
c09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVtQml0
c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0
aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNo
aWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChs
aHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9
IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWlu
dDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVh
ckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2Vj
dC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2Jz
ZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4iKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCA+IH5jbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBh
dGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKKworICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+ICgpCisg
ICAgeworICAgICAgICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgQVNTRVJUKHJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQotICAgIHN0YXRp
YyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5SW50SW50KCkKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZEludEludEJpdHMo
KQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsg
T2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90
IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwg
KG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4OTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9t
SW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNl
cnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7CisgICAgICAgIHJldHVy
biBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZl
ZEJpbmFyeU51bWJlckludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2Zp
bGVCYXNlIG9ic2VydmVkTnVtYmVySW50Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIg
T2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigp
IH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2Vy
dmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRz
ID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2Jz
ZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0
aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50
KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0g
KG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4g
Yml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRC
aW5hcnlJbnROdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZEludE51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9i
c2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9
OwogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZl
ZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChiaXRzID09IDB4YTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJp
dHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9i
c2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51
bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0
czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5h
cnlOdW1iZXJOdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHBy
IE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIo
KSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5i
aXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8
PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAw
eDEyMDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNv
bnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0
cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwg
cmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9CiAKLSAg
ICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7Ci0gICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8
IDAsCi0gICAgICAgIE5lZ1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCi0gICAgICAgIE5vbk51bWVy
aWMgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCi0g
ICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAg
ICAgPSAxIDw8IDUsCi0gICAgfTsKLQotICAgIFJlc3VsdFR5cGUgbGhzUmVzdWx0VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUoKG1fYml0cyA+PiBsaHNSZXN1bHRUeXBlU2hpZnQpICYg
cmVzdWx0VHlwZU1hc2spOyB9Ci0gICAgUmVzdWx0VHlwZSByaHNSZXN1bHRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gUmVzdWx0VHlwZSgobV9iaXRzID4+IHJoc1Jlc3VsdFR5cGVTaGlmdCkgJiByZXN1
bHRUeXBlTWFzayk7IH0KLQogICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgbGhzT2JzZXJ2ZWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gT2JzZXJ2ZWRUeXBlKChtX2JpdHMgPj4gbGhzT2JzZXJ2ZWRU
eXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBlTWFzayk7IH0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRU
eXBlIHJoc09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRz
ID4+IHJoc09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgdm9p
ZCBzZXRMaHNPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCiAgICAgewotICAgICAgICB1
aW50MzJfdCBiaXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJp
dHMgPSBtX2JpdHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNr
OwogICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0Owog
ICAgICAgICBtX2JpdHMgPSBiaXRzOwpAQCAtMTg3LDcgKzI4NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0UmhzT2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsgCi0gICAg
ICAgIHVpbnQzMl90IGJpdHMgPSBtX2JpdHM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgYml0cyA9IG1fYml0czsKICAgICAgICAgYml0cyAmPSBjbGVhclJoc09ic2VydmVkVHlwZUJp
dE1hc2s7CiAgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQ7CiAgICAgICAgIG1fYml0cyA9IGJpdHM7CkBAIC0xOTYsMzkgKzI5NCw2IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgdG9va1NwZWNpYWxGYXN0UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IHNwZWNpYWxGYXN0UGF0aEJpdDsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBj
b25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KLSAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQot
ICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNC
aXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRp
ZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsg
fQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmln
SW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIHZv
aWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJs
ZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1pl
cm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChO
b25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJ
bnQpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQz
Mk92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRC
aXQoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBj
b25zdCB7IHJldHVybiAmbV9iaXRzOyB9Ci0KLSAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1
ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBt
X2JpdHMgfD0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9
IEJpZ0ludDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2JpdHMg
fD0gTm9uTnVtZXJpYzsKLSAgICB9Ci0KICAgICB2b2lkIGxoc1Nhd0ludDMyKCkgeyBzZXRMaHNP
YnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9CiAgICAgdm9pZCBs
aHNTYXdOdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRo
TnVtYmVyKCkpOyB9CiAgICAgdm9pZCBsaHNTYXdOb25OdW1iZXIoKSB7IHNldExoc09ic2VydmVk
VHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CkBAIC0yMzgsNyArMzAz
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBvYnNlcnZlTEhTKEpTVmFsdWUgbGhzKQogICAgIHsK
LSAgICAgICAgQXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKKyAgICAgICAgQmluYXJ5
QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKICAgICAgICAgaWYgKGxocy5pc051bWJl
cigpKSB7CiAgICAgICAgICAgICBpZiAobGhzLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBu
ZXdQcm9maWxlLmxoc1Nhd0ludDMyKCk7CkBAIC0yNTQsNyArMzE5LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgb2JzZXJ2ZUxIUyhsaHMpOwogCi0gICAgICAgIEFyaXRoUHJvZmlsZSBuZXdQ
cm9maWxlID0gKnRoaXM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0g
KnRoaXM7CiAgICAgICAgIGlmIChyaHMuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgaWYgKHJo
cy5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5yaHNTYXdJbnQzMigpOwpA
QCAtMjY2LDQ3ICszMzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoSklUKSAgICAKLSAgICAvLyBTZXRzIChJbnQz
Mk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91
YmxlKSBpZiBpdCBzZWVzIGEKLSAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBz
ZWVzIGEgbm9uLW51bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBl
cnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwot
ICAgIAotICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVn
WmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgotICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJs
ZSgpIGNvbnN0OwotICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsK
LSAgICAKLSAgICAvLyBTZXRzIE5vbk51bWJlci4KLSAgICB2b2lkIGVtaXRTZXROb25OdW1lcmlj
KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMo
KSBjb25zdDsKLQotICAgIC8vIFNldHMgQmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KEND
YWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0
OwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLSAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cygp
IGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0ZXhwciBleHBs
aWNpdCBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWcsIHVpbnQzMl90IGJpdHMpCi0gICAgICAgIDog
bV9iaXRzKGJpdHMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUo
Q29uc3RhbnRUYWcsIFJlc3VsdFR5cGUgYXJnKQotICAgICAgICA6IG1fYml0cyhhcmcuYml0cygp
IDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQog
ICAgIHsKKyAgICAgICAgcmV0dXJuIGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSAmJiByaHNP
YnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgY29uc3RleHByIEFyaXRoUHJv
ZmlsZShDb25zdGFudFRhZywgUmVzdWx0VHlwZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQotICAgICAg
ICA6IG1fYml0cygobGhzLmJpdHMoKSA8PCBsaHNSZXN1bHRUeXBlU2hpZnQpIHwgKHJocy5iaXRz
KCkgPDwgcmhzUmVzdWx0VHlwZVNoaWZ0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNC
aXRzKGludCBtYXNrKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBtYXNrOyB9Ci0gICAgdm9pZCBz
ZXRCaXQoaW50IG1hc2spIHsgbV9iaXRzIHw9IG1hc2s7IH0KLQotICAgIHVpbnQzMl90IG1fYml0
cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmds
ZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXBy
ZXNlbnRhdGlvbiB0byBpdC4KLQogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIH07CiAKQEAgLTMxNCw3ICszNDMsOCBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpBcml0
aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6
VW5hcnlBcml0aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNv
bnN0IEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlJik7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBjb25zdCBKU0M6Ok9ic2VydmVkVHlwZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4
IGMwODZiOGViM2YzLi5hYzRjODBlZTk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVzIFsKICAgICA6
SlNUeXBlLAogICAgIDpKU1ZhbHVlLAogICAgIDpMTEludENhbGxMaW5rSW5mbywKKyAgICA6UmVz
dWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxh
ZywKICAgICA6UHJvcGVydHlPZmZzZXQsCkBAIC01Nyw3ICs1OCw4IEBAIHR5cGVzIFsKIAogICAg
IDpWYWx1ZVByb2ZpbGUsCiAgICAgOlZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIsCi0gICAg
OkFyaXRoUHJvZmlsZSwKKyAgICA6VW5hcnlBcml0aFByb2ZpbGUsCisgICAgOkJpbmFyeUFyaXRo
UHJvZmlsZSwKICAgICA6QXJyYXlQcm9maWxlLAogICAgIDpBcnJheUFsbG9jYXRpb25Qcm9maWxl
LAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKQEAgLTI4MiwxMCArMjg0LDcgQEAgb3Bf
Z3JvdXAgOlByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIG9wZXJhbmRUeXBlczogT3BlcmFuZFR5
cGVzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0
aFByb2ZpbGUKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBh
cml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBCaW5hcnlB
cml0aFByb2ZpbGUKICAgICB9CiAKIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCkBA
IC0zNjcsMTMgKzM2NiwxMCBAQCBvcCA6bmVnYXRlLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5kVHlwZXMsCisgICAgICAgIHJlc3VsdFR5cGU6IFJl
c3VsdFR5cGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6
IEFyaXRoUHJvZmlsZSwKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAg
ICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBV
bmFyeUFyaXRoUHJvZmlsZSwKICAgICB9CiAKIG9wIDpub3QsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdlMjExNjgzZDc5Li4wNDYxYTYzNzcy
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTE0NzgsMjUgKzE0NzgsMjUgQEAgU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1
YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxv
Y2tlcikubV9zdHViSW5mb3MuYWRkKGFjY2Vzc1R5cGUpOwogfQogCi1KSVRBZGRJQyogQ29kZUJs
b2NrOjphZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVEFkZElDKiBD
b2RlQmxvY2s6OmFkZEpJVEFkZElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fYWRkSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRN
dWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
K0pJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAg
ICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbXVsSUNzLmFkZChhcml0aFByb2ZpbGUp
OwogfQogCi1KSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKK0pJVFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3ViSUNzLmFkZChh
cml0aFByb2ZpbGUpOwogfQogCi1KSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lD
KFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9u
ZWdJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CkBAIC0zMDgzLDE2ICszMDgzLDE5IEBAIGNvbnN0IElu
c3RydWN0aW9uKiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjKQogICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKS5hdChvZmZzZXQgKyB0YXJnZXQpLnB0
cigpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCitCaW5hcnlBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgcmV0dXJuIGFyaXRoUHJvZmlsZUZvclBDKGluc3Ry
dWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpKTsKKyAgICByZXR1cm4g
YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKSkucHRyKCkpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9m
aWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorVW5hcnlBcml0aFByb2ZpbGUqIENvZGVC
bG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCkKK3sKKyAgICByZXR1cm4gdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVj
dGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKSk7Cit9CisKK0JpbmFyeUFy
aXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0
cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewotICAgIGNhc2Ug
b3BfbmVnYXRlOgotICAgICAgICByZXR1cm4gJnBjLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YSh0
aGlzKS5tX2FyaXRoUHJvZmlsZTsKICAgICBjYXNlIG9wX2FkZDoKICAgICAgICAgcmV0dXJuICZw
Yy0+YXM8T3BBZGQ+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CiAgICAgY2FzZSBv
cF9tdWw6CkBAIC0zMTA4LDExICszMTExLDIzIEBAIEFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjph
cml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKK1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxl
Rm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIHN3aXRjaCAocGMtPm9wY29kZUlE
KCkpIHsKKyAgICBjYXNlIG9wX25lZ2F0ZToKKyAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdh
dGU+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJvb2wgQ29kZUJs
b2NrOjpjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2FzZShCeXRlY29kZUluZGV4IGJ5dGVjb2Rl
SW5kZXgpCiB7CiAgICAgaWYgKCFoYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgQXJpdGhQcm9maWxlKiBwcm9maWxlID0gYXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIHBy
b2ZpbGUgPSBiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
OwogICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBw
cm9maWxlLT50b29rU3BlY2lhbEZhc3RQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZDJjMDY5ODAzYTguLjE4ZTQ4YzI2NmEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04Myw2ICs4Myw4IEBA
IHN0cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8vIG5hbWVzcGFjZSBERkcKICNlbmRpZgogCitjbGFz
cyBVbmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U7CkBAIC05Niw3ICs5OCw2IEBAIGNsYXNzIFN0cnVjdHVyZVN0
dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CiAKLXN0cnVjdCBBcml0
aFByb2ZpbGU7CiBzdHJ1Y3QgT3BDYXRjaDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBE
b250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwpAQCAtMjc5LDIy
ICsyODAsMjIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVREYXRhJiBlbnN1cmVKSVREYXRhU2xv
dyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKTsKIAotICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJ
QyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRNdWxJQyogYWRkSklUTXVsSUMoQXJpdGhQcm9maWxl
Kik7Ci0gICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVFN1
YklDKiBhZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqKTsKKyAgICBKSVRBZGRJQyogYWRkSklUQWRk
SUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEJpbmFy
eUFyaXRoUHJvZmlsZSopOworICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhVbmFyeUFyaXRoUHJv
ZmlsZSopOworICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUqKTsK
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUQWRkR2VuZXJhdG9yPjo6
dmFsdWU+Ojp0eXBlPgotICAgIEpJVEFkZElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9m
aWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhwcm9maWxlKTsgfQorICAgIEpJVEFkZElDKiBhZGRN
YXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhw
cm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRNdWxH
ZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTXVsSUMqIGFkZE1hdGhJQyhBcml0aFBy
b2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CisgICAgSklU
TXVsSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFk
ZEpJVE11bElDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9y
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0
b3IsIEpJVE5lZ0dlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBKSVROZWdJQyogYWRkTWF0
aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTmVnSUMocHJvZmlsZSk7
IH0KKyAgICBKSVROZWdJQyogYWRkTWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7
IHJldHVybiBhZGRKSVROZWdJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Nh
bWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUU3Vi
SUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklD
KHByb2ZpbGUpOyB9CisgICAgSklUU3ViSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUq
IHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CiAKICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNjZXNzVHlwZSk7CiAKQEAgLTQ5Nyw4ICs0OTgsMTAg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMTEludENhbGxMaW5rSW5mbyhjb25zdCBGdW5jdG9y
Jik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0
ZWNvZGVJbmRleCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJ
bnN0cnVjdGlvbiopOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSog
dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25z
dCBJbnN0cnVjdGlvbiopOwogCiAgICAgYm9vbCBjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2Fz
ZShCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmgKaW5kZXggOWFiNzcxMzdhYTYuLmQ0MWNmYzEyYjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTIzNiw2ICsyMzYsMTggQEAgc3RydWN0IEZpdHM8
RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2Vu
dW08RT46OnZhbHUKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1
Y3QgRml0czxSZXN1bHRUeXBlLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihSZXN1bHRU
eXBlKSAhPSBzaXplLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6
ZT4geworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFJlc3VsdFR5cGUpID09IHNpemVvZih1aW50
OF90KSk7CisgICAgdXNpbmcgQmFzZSA9IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAgICBzdGF0
aWMgYm9vbCBjaGVjayhSZXN1bHRUeXBlIHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNrKHR5cGUu
Yml0cygpKTsgfQorCisgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgY29udmVy
dChSZXN1bHRUeXBlIHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNvbnZlcnQodHlwZS5iaXRzKCkpOyB9
CisKKyAgICBzdGF0aWMgUmVzdWx0VHlwZSBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5
cGUgdHlwZSkgeyByZXR1cm4gUmVzdWx0VHlwZShCYXNlOjpjb252ZXJ0KHR5cGUpKTsgfQorfTsK
KwogdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8T3BlcmFuZFR5cGVzLCBz
aXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihPcGVyYW5kVHlwZXMpICE9IHNpemUsIHN0ZDo6
dHJ1ZV90eXBlPj4gewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmRUeXBlcykgPT0g
c2l6ZW9mKHVpbnQxNl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKaW5kZXggNzEw
NGQwMWFlMTEuLjJiNjlmMzZjN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCkBA
IC02NiwxMCArNjYsMTYgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0
UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAg
ICB1LmFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVU
YWdSZWdpc3RlcnMpOworICAgIGNhc2UgVW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAg
ICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90
SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAg
ICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQ
cm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVy
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC05NCwxMCArMTAwLDE2IEBAIHZvaWQgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAg
dS5hcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgIGNhc2UgVW5hcnlBcml0
aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5vYnNlcnZlUmVz
dWx0KHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gfQorICAgIH0KKworICAgIGNhc2Ug
QmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUt
Pm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KIAog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaAppbmRleCBjZmI4MzQ3MDZhZi4uNWQ4MWM0YzkwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUuaApAQCAtMzYsMTAgKzM2LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBV
bmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIENDYWxs
SGVscGVyczsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
S2V5Owotc3RydWN0IEFyaXRoUHJvZmlsZTsKIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKIGNsYXNz
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgewpAQCAtNTcsMTIgKzU4LDIxIEBAIHB1Ymxp
YzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwogICAgIH0KLSAg
ICAKLSAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKEFyaXRoUHJvZmlsZSogcHJvZmls
ZSkKKworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoVW5hcnlBcml0aFByb2ZpbGUq
IHByb2ZpbGUpCisgICAgeworICAgICAgICBpZiAocHJvZmlsZSkgeworICAgICAgICAgICAgbV9r
aW5kID0gVW5hcnlBcml0aFByb2ZpbGVSZWFkeTsKKyAgICAgICAgICAgIHUudW5hcnlBcml0aFBy
b2ZpbGUgPSBwcm9maWxlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fa2luZCA9IE5v
bmU7CisgICAgfQorCisgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShCaW5hcnlBcml0
aFByb2ZpbGUqIHByb2ZpbGUpCiAgICAgewogICAgICAgICBpZiAocHJvZmlsZSkgewotICAgICAg
ICAgICAgbV9raW5kID0gQXJpdGhQcm9maWxlUmVhZHk7Ci0gICAgICAgICAgICB1LmFyaXRoUHJv
ZmlsZSA9IHByb2ZpbGU7CisgICAgICAgICAgICBtX2tpbmQgPSBCaW5hcnlBcml0aFByb2ZpbGVS
ZWFkeTsKKyAgICAgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwogICAgIH0KQEAgLTc5LDcgKzg5
LDggQEAgcHJpdmF0ZToKICAgICBlbnVtIEtpbmQgewogICAgICAgICBOb25lLAogICAgICAgICBS
ZWFkeSwKLSAgICAgICAgQXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIFVuYXJ5QXJpdGhQcm9m
aWxlUmVhZHksCisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAogICAgICAgICBMYXp5
T3BlcmFuZAogICAgIH07CiAgICAgCkBAIC05MCw3ICsxMDEsOCBAQCBwcml2YXRlOgogICAgICAg
ICB7IH0KIAogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7Ci0gICAgICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0
aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
OwogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAg
ICAgICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCAxNTRiZDNjZmJjYy4uOGU1ODU3MzhmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNjY1
LDE0ICsxNjY1LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKICAgICByZXR1cm4gZHN0OwogfQogCi1S
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMgdHlwZXMp
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQgb3Bj
b2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBSZXN1bHRUeXBlIHR5cGUp
CiB7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfbm90OgogICAgICAgICBl
bWl0VW5hcnlPcDxPcE5vdD4oZHN0LCBzcmMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIG9w
X25lZ2F0ZToKLSAgICAgICAgT3BOZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGVzKTsK
KyAgICAgICAgT3BOZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGUpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIG9wX2JpdG5vdDoKICAgICAgICAgZW1pdFVuYXJ5T3A8T3BCaXRub3Q+
KGRzdCwgc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0MTk3YWJjMTJlNS4uMzhlNzdjZGIxNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTY4Miw3ICs2ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBkc3Q7CiAgICAgICAgIH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5h
cnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIE9wZXJhbmRU
eXBlcyk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRVbmFyeU9wKE9wY29kZUlELCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSk7CiAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQmluYXJ5T3A+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggMmUwM2JlMGI3YzcuLjA1OGZlNTlkNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yMTM5LDcgKzIxMzksNyBA
QCBSZWdpc3RlcklEKiBVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYyA9
IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8ocG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSk7Ci0gICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0VW5hcnlPcChvcGNvZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCBzcmMuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERlc2NyaXB0b3Io
KSkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpLCBtX2V4cHItPnJlc3VsdERlc2Ny
aXB0b3IoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVbmFyeVBs
dXNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDIyMzQ0NWMyZDk0
Li44Y2I3MTAwNDFlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTk0Miw1NiArOTQyLDYwIEBAIHByaXZhdGU6CiAgICAgICAgIGlm
ICghaXNYODYoKSAmJiAobm9kZS0+b3AoKSA9PSBBcml0aE1vZCB8fCBub2RlLT5vcCgpID09IFZh
bHVlTW9kKSkKICAgICAgICAgICAgIHJldHVybiBub2RlOwogCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsK
LSAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEFyaXRoQWRkOgotICAgICAgICAg
ICAgICAgIGNhc2UgQXJpdGhTdWI6Ci0gICAgICAgICAgICAgICAgY2FzZSBWYWx1ZUFkZDoKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJs
ZVJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVOb25OdW1lcmljKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdz
KE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChh
cml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVNdWw6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBBcml0aE11bDogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
T3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2Rl
TWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJp
dGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJv
SW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9i
c2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
Tm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aE5l
Z2F0ZTogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5saHNPYnNlcnZl
ZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3Vi
bGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VG
bGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBBcml0aEFk
ZDoKKyAgICAgICAgY2FzZSBBcml0aFN1YjoKKyAgICAgICAgY2FzZSBWYWx1ZUFkZDogeworICAg
ICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgo
bV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
RG91YmxlKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURv
dWJsZVJlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9u
TnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVO
b25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgVmFsdWVNdWw6CisgICAgICAgIGNhc2UgQXJpdGhNdWw6IHsKKyAgICAgICAgICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4
KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3co
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDUy
KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9k
ZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2Zp
bGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Cisg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAgICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7CisgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAg
ICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsK
KyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Cisg
ICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKKyAgICAgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVuYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAg
ICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGlmIChhcml0aFByb2ZpbGUtPmFyZ09ic2VydmVkVHlwZSgpLnNhd051bWJlcigpIHx8IGFyaXRo
UHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsK
KyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkg
fHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVOb25OdW1lcmljKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJl
bnRJbmRleCkpIHsKQEAgLTEwMzMsOCArMTAzNyw4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gbWFrZSB0aGlzIG1vcmUgZ3Jh
bnVsYXIuCiAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJh
c2VsaW5lIHwgTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsKLSAgICAgICAgCi0gICAgICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsKKworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1
cnJlbnRJbmRleCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQo
KSkKICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IGFkYmY1MDI1Y2Yz
Li45OWVlZjZhZjk5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAg
LTE2NTIsNyArMTY1Miw5IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9kZSogY3VycmVuCiAgICAgICAgICAgICAg
ICAgcmV0dXJuICZwcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpOwogCiAgICAgICAgICAgICBpZiAo
cHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAg
ICAgIGlmIChBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSkp
CisgICAgICAgICAgICAgICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmls
ZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmlnaW4u
c2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgICAgICAgICBpZiAoVW5hcnlBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHBy
b2ZpbGVkQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmln
aW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0NzQxNjE0YzU3Yi4uYWE1MjZj
ODMwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0zOTk0LDcgKzM5OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVBZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sg
PSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5k
ZXgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVEFkZElDKGFy
aXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZUFkZE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVBZGQ7CkBAIC00MDE4LDcgKzQwMTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29k
ZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5v
cmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2Rl
QmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgYXV0byByZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwpAQCAtNDYxMiw3ICs0NjEy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUqIG5vZGUp
CiB7CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFz
ZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgp
OwotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgVW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTmVnSUMqIG5lZ0lD
ID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0
byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplOwogICAg
IGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7CkBAIC00
ODM1LDcgKzQ4MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwoTm9k
ZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFw
aCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTXVs
SUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7
CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXpl
OwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYWYw
YThlYjA3MGIuLmRmMmRlYTIwZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC0yMTEyLDcgKzIxMTIsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJ
bmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2Nr
LT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemU7
CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7
CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPihhcml0aFByb2Zp
bGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTIxMzMs
NyArMjEzMyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVC
bG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9u
ID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5n
RnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJ
QzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25S
ZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE1NCw3ICsyMTU0LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNl
bGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9j
ay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAg
ICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXpl
OwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVs
OwogICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQcm9m
aWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTYy
LDcgKzIxNjIsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRv
ciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVuYW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9IHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2lu
dGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21waWxl
VW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdG
dW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGlsZVVu
YXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hp
bmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKIApAQCAtMjI0OCw3ICsyMjQ4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBlbmFt
ZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZnVu
Y3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1ZSAm
JiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+Ojp0
eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNo
aW5nRnVuY3Rpb24pCisgICAgdm9pZCBjb21waWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJl
cGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAg
ICAgICAgIApAQCAtMjQxNyw3ICsyNDE3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2Rl
QmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRl
eCgpOwotICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3Vi
T3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlU3ViOwogICAgICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5l
cmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVu
Y3Rpb24pOwpAQCAtMzA5NSw3ICszMDk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBi
YXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5l
Q29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRl
eCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdh
dGVPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRp
b25Bcml0aE5lZ2F0ZTsKICAgICAgICAgY29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRv
cj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBiNWVmZTI2ODA0Ni4uMmI0YTVkNjRiZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtOTE5LDcgKzkxOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAvLyBJdCB3aWxsIGdpdmUgdGhlIHNsb3cgcGF0aCB0aGUgc2FtZSB2YWx1
ZSByZWFkIGJ5IHRoZSBmYXN0IHBhdGguCiAgICAgICAgIEdldFB1dEluZm8gY29waWVkR2V0UHV0
SW5mbyhPcFB1dFRvU2NvcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4K
LSAgICAgICAgQXJpdGhQcm9maWxlIGNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCk7CisgICAg
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOwogCiAg
ICAgICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwogCkBAIC05MzksNyArOTM5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7
CiAKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgdW5zaWduZWQ+IG1fY29waWVkR2V0UHV0SW5m
b3M7Ci0gICAgICAgIEhhc2hNYXA8dWludDY0X3QsIEFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0
aFByb2ZpbGVzOworICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBCaW5hcnlBcml0aFByb2ZpbGU+
IG1fY29waWVkQXJpdGhQcm9maWxlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNo
ZWNrczsKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9s
bGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAK
aW5kZXggNjI3YWYyNzg3ZTAuLjc0MGIyZWQ4YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBP
YnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03Myw3ICs3
Myw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0
LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmls
aW5nKQorYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3Nj
cmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBt
X2xlZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQWRkR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdl
bmVyYXRvci5oCmluZGV4IDRkYzM0YTJmNWI2Li42NzVjZjkzYzkwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCkBAIC01NSw4ICs1NSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3Jp
Z2h0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5l
UmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJh
dGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmlu
YXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZh
bGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVy
YW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3Bl
cmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiBy
aWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNWZjZjg4OWQzMTguLjc2MzQ0NWNjYWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1
Miw3ICs0NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29w
X25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdh
dGU+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIFVuYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0
ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMq
IG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAg
bV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsK
ICAgICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwpA
QCAtNjMzLDE0ICs2MzMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChj
dXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRp
YyBPcGVyYW5kVHlwZXMgZ2V0T3BlcmFuZFR5cGVzKGNvbnN0IEFyaXRoUHJvZmlsZSYgYXJpdGhQ
cm9maWxlKQotewotICAgIHJldHVybiBPcGVyYW5kVHlwZXMoYXJpdGhQcm9maWxlLmxoc1Jlc3Vs
dFR5cGUoKSwgYXJpdGhQcm9maWxlLnJoc1Jlc3VsdFR5cGUoKSk7Ci19Ci0KIHZvaWQgSklUOjpl
bWl0X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BB
ZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVEFkZElDKiBh
ZGRJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBhZGRJQyk7CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BBZGQ+KGFkZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZh
bHVlQWRkUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlQWRkKTsKQEAgLTY4NSw3ICs2ODAsNyBAQCB2
b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElD
LCBjb25zdCBJbnN0cnVjdGlvbiogYwogCiAgICAgYm9vbCBnZW5lcmF0ZWRJbmxpbmVDb2RlID0g
bWF0aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywgbWF0aElDR2VuZXJhdGlvblN0YXRlKTsKICAg
ICBpZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgICAgICBVbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHNyY1JlZ3MsIGFyaXRoUHJvZmls
ZSk7CiAgICAgICAgIGVsc2UKQEAgLTcwOCw3ICs3MDMsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5h
bWUgTgogdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVk
RnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxl
ZEZ1bmN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wPigpOwotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRB
cml0aFByb2ZpbGUoYnl0ZWNvZGUpKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qu
b2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGlu
dCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKQEAgLTcyNyw4ICs3MjEsOCBAQCB2b2lk
IEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywg
Y29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogI2Vu
ZGlmCiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAg
ICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBw
ZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOwor
ICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5z
ZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAg
bGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBA
IC03NTgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJ
QzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIGxlZnRSZWdzKTsKICAgICAgICAgZWxzZSBpZiAocmln
aHRPcGVyYW5kLmlzQ29uc3QoKSkKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
b3AyLCByaWdodFJlZ3MpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1h
dGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmls
ZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0
aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIGFyaXRoUHJvZmls
ZSk7CiAgICAgICAgIGVsc2UKQEAgLTc5OCw3ICs3OTIsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJ
Q1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlv
biogYwogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBV
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsK
ICAgICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAg
ICBpZiAobWF0aElDR2VuZXJhdGlvblN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCkKICAgICAg
ICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFJlc3VsdChyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dKTWljPihwcm9maWxl
ZFJlcGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgc3JjUmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKQEAgLTgz
MCw3ICs4MjQsNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgbWF0aElDR2VuZXJhdGlv
blN0YXRlLnNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0
T3BlcmFuZFR5cGVzKGNvcGllZEFyaXRoUHJvZmlsZShieXRlY29kZSkpOwogICAgIGludCByZXN1
bHQgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9s
aHMub2Zmc2V0KCk7CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwpAQCAt
ODQ1LDggKzgzOCw4IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gbGVmdFJlZ3M7CiAjZW5kaWYKICAgICAKLSAgICBTbmlwcGV0T3BlcmFuZCBs
ZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJh
bmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVj
b2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3Bl
cmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihn
ZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC04NjQsNyArODU3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0
IEluc3RydWN0aW9uKgogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYK
IAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUo
KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQ
cm9maWxlKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkp
IHsKICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0
Y2gpCiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbldpdGhSZXN1bHQoYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0dKSk1pYz4o
cHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIFRydXN0ZWRJbW1Q
dHIobWF0aElDKSk7CkBAIC04OTIsMTkgKzg4NSwxNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Ns
b3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24q
CiB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERp
dj4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9w
MSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jo
cy5vZmZzZXQoKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgT3BlcmFuZFR5cGVzIHR5cGVz
ID0gZ2V0T3BlcmFuZFR5cGVzKG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlKTsKICAgICBKU1ZhbHVl
UmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyByaWdo
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IGxlZnRSZWdzOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDI7CiAjZWxzZQotICAgIE9w
ZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmls
ZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
OwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7
CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxlZnRSZWdzOwpAQCAtOTEyLDEyICs5MDIs
MTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAjZW5kaWYKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IGZwUmVnVDI7CiAKLSAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHI7CisgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyOwogICAgIGlmIChzaG91bGRFbWl0UHJvZmls
aW5nKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RGl2PigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKIAotICAgIFNuaXBw
ZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVzLmZpcnN0KCkpOwotICAgIFNuaXBwZXRPcGVyYW5k
IHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQoKSk7CisgICAgU25pcHBldE9wZXJhbmQgbGVmdE9w
ZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuZmlyc3QoKSk7CisgICAgU25pcHBldE9wZXJh
bmQgcmlnaHRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLnNlY29uZCgpKTsKIAogICAg
IGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDEpKQogICAgICAgICBsZWZ0T3BlcmFuZC5zZXRD
b25zdEludDMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDEpKTsKQEAgLTk1OSw3ICs5NDksNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFBy
b2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudElu
c3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2Zp
bGU7CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9jb2RlQmxvY2stPmFkZEpJVE11bElDKGFyaXRo
UHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rp
b24sIG11bElDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcE11bD4obXVsSUMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVNdWwpOwpA
QCAtOTc1LDcgKzk2NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAKIHZvaWQgSklUOjpl
bWl0X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BT
dWI+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdWI+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVFN1YklDKiBz
dWJJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBzdWJJQyk7CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BTdWI+KHN1YklDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZh
bHVlU3ViUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcAppbmRleCA2NmUxYmUxNGE4ZC4uYjhjNDc5ODZm
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmIGppdCkKICAgICBub3REb3VibGVaZXJvLmxpbmsoJmppdCk7CiAjZW5k
aWYKICAgICBpZiAobV9hcml0aFByb2ZpbGUpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6c3BlY2lhbEZhc3RQYXRoQml0KSwgQ0NhbGxI
ZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9hcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkp
OworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0
aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRy
ZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICBqaXQuYm94RG91Ymxl
KG1fbGVmdEZQUiwgbV9yZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVREaXZHZW5lcmF0b3IuaAppbmRleCA4Mzk2Njc3OTQzZi4uNzA4ZGIxMGQ2Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaApAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAgICAgSklURGl2R2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
LCBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCiAgICAgICAgIEZQUlJlZyBs
ZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRj
aEZQUiwKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQorICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIpCiAgICAgICAg
IDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKICAgICAgICAgLCBtX3JpZ2h0T3BlcmFuZChy
aWdodE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQpAQCAtNzEsNyArNzEsNyBA
QCBwcml2YXRlOgogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7CiAgICAgRlBSUmVnIG1fc2NyYXRj
aEZQUjsKICAgICBib29sIG1fZGlkRW1pdEZhc3RQYXRoIHsgZmFsc2UgfTsKLSAgICBBcml0aFBy
b2ZpbGUqIG1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogbV9hcml0aFBy
b2ZpbGU7CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1fZW5kSnVtcExpc3Q7CiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX3Nsb3dQYXRoSnVtcExpc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDYyZWFiOWI5N2ZhLi4yNWJjYzJiOWM1NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTcxNiwxMyArNzE2LDEzIEBA
IEFMV0FZU19JTkxJTkUgR2V0UHV0SW5mbyBKSVQ6OmNvcGllZEdldFB1dEluZm8oT3BQdXRUb1Nj
b3BlIGJ5dGVjb2RlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLUFMV0FZU19J
TkxJTkUgQXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVj
b2RlKQorQUxXQVlTX0lOTElORSBCaW5hcnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFBy
b2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCiB7CiAgICAgdWludDY0X3Qga2V5ID0gKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihCaW5hcnlPcDo6b3Bjb2RlSUQpICsgMSkgPDwgMzIgfCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYnl0ZWNvZGUubV9tZXRhZGF0YUlEKTsKICAgICBhdXRvIGl0ZXJhdG9yID0g
bV9jb3BpZWRBcml0aFByb2ZpbGVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXRlcmF0b3IgIT0gbV9j
b3BpZWRBcml0aFByb2ZpbGVzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVl
OwotICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJv
ZmlsZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAg
ICBtX2NvcGllZEFyaXRoUHJvZmlsZXMuYWRkKGtleSwgYXJpdGhQcm9maWxlKTsKICAgICByZXR1
cm4gYXJpdGhQcm9maWxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRNYXRoSUMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKaW5k
ZXggNTY0NWU0MmRlZmYuLmZkYWVjOTI3NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE1hdGhJQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TWF0aElDLmgKQEAgLTUyLDExICs1MiwxMSBAQCBzdHJ1Y3QgTWF0aElDR2VuZXJhdGlvblN0YXRl
IHsKIAogI2RlZmluZSBFTkFCTEVfTUFUSF9JQ19TVEFUUyAwCiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBHZW5lcmF0b3JUeXBlLCBib29sKCppc1Byb2ZpbGVFbXB0eSkoQXJpdGhQcm9maWxlJik+Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgdHlwZW5hbWUgQXJpdGhQcm9maWxlVHlw
ZT4KIGNsYXNzIEpJVE1hdGhJQyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgSklUTWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgIEpJVE1h
dGhJQyhBcml0aFByb2ZpbGVUeXBlKiBhcml0aFByb2ZpbGUpCiAgICAgICAgIDogbV9hcml0aFBy
b2ZpbGUoYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CkBAIC03MSw3ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5j
b2RlU2l6ZSgpOwogCiAgICAgICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewotICAgICAgICAgICAg
aWYgKGlzUHJvZmlsZUVtcHR5KCptX2FyaXRoUHJvZmlsZSkpIHsKKyAgICAgICAgICAgIGlmICht
X2FyaXRoUHJvZmlsZS0+aXNPYnNlcnZlZFR5cGVFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gSXQgbG9va3MgbGlrZSB0aGUgTWF0aElDIGhhcyB5ZXQgdG8gZXhlY3V0ZS4gV2UgZG9uJ3Qg
d2FudCB0byBlbWl0IGNvZGUgaW4gdGhpcwogICAgICAgICAgICAgICAgIC8vIGNhc2UgZm9yIGEg
Y291cGxlIHJlYXNvbnMuIEZpcnN0LCB0aGUgb3BlcmF0aW9uIG1heSBuZXZlciBleGVjdXRlLCBz
byBpZiB3ZSBkb24ndCBlbWl0CiAgICAgICAgICAgICAgICAgLy8gY29kZSwgaXQncyBhIHdpbi4g
U2Vjb25kLCBpZiB0aGUgb3BlcmF0aW9uIGRvZXMgZXhlY3V0ZSwgd2UgY2FuIGVtaXQgYmV0dGVy
IGNvZGUKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2xvd1BhdGhTdGFy
dExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHN0YXRl
LnNsb3dQYXRoU3RhcnQpOwogICAgIH0KIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KKyAgICBBcml0aFByb2ZpbGVUeXBl
KiBhcml0aFByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2FyaXRoUHJvZmlsZTsgfQogCiAjaWYg
RU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgc2l6ZV90IG1fZ2VuZXJhdGVkQ29kZVNpemUgeyAw
IH07CkBAIC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0gICAgQXJp
dGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAgICBBcml0aFByb2ZpbGVUeXBlKiBtX2FyaXRo
UHJvZmlsZTsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
IG1fY29kZTsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2lubGlu
ZVN0YXJ0OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1faW5saW5l
RW5kOwpAQCAtMjQ2LDE1ICsyNDYsMTEgQEAgcHVibGljOgogICAgIEdlbmVyYXRvclR5cGUgbV9n
ZW5lcmF0b3I7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0JpbmFyeVByb2ZpbGVFbXB0eShBcml0aFBy
b2ZpbGUmIGFyaXRoUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2Vy
dmVkVHlwZSgpLmlzRW1wdHkoKSB8fCBhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNF
bXB0eSgpOwotfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+Ci1jbGFzcyBKSVRC
aW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzQmluYXJ5UHJv
ZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdl
bmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4gewogcHVibGljOgotICAgIEpJVEJpbmFy
eU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8
R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQcm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkKKyAgICBK
SVRCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAgICAg
IDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4oYXJpdGhQcm9m
aWxlKQogICAgIHsKICAgICB9CiB9OwpAQCAtMjYzLDE2ICsyNTksMTEgQEAgdHlwZWRlZiBKSVRC
aW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPiBKSVRBZGRJQzsKIHR5cGVkZWYgSklUQmluYXJ5
TWF0aElDPEpJVE11bEdlbmVyYXRvcj4gSklUTXVsSUM7CiB0eXBlZGVmIEpJVEJpbmFyeU1hdGhJ
QzxKSVRTdWJHZW5lcmF0b3I+IEpJVFN1YklDOwogCi0KLWlubGluZSBib29sIGlzVW5hcnlQcm9m
aWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCi17Ci0gICAgcmV0dXJuIGFyaXRo
UHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7Ci19CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgR2VuZXJhdG9yVHlwZT4KLWNsYXNzIEpJVFVuYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJ
QzxHZW5lcmF0b3JUeXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRVbmFyeU1h
dGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgVW5hcnlBcml0aFByb2ZpbGU+
IHsKIHB1YmxpYzoKLSAgICBKSVRVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0
eT4oYXJpdGhQcm9maWxlKQorICAgIEpJVFVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVuYXJ5QXJp
dGhQcm9maWxlPihhcml0aFByb2ZpbGUpCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKaW5kZXggODNkMjkzYjYyNTIuLmNm
NmJhYTUyZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0
b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMm
IGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5l
cmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2Ug
ZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2Jz
ZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC04OSw3ICs4OSw3IEBAIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0
LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxs
U25pcHBldDsKIH0KIAotYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRNdWxHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1
bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQ
UlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsK
QEAgLTIwNSwxOCArMjA1LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAKICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIG5vdE5lZ2F0aXZlWmVybyA9IGppdC5icmFuY2g2NChDQ2FsbEhl
bHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTY0KG5lZ2F0aXZlWmVyb0JpdHMpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhl
bHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwor
ICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFBy
b2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0
aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
ZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7
Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmls
ZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRo
UHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIEND
YWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygp
KSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hH
UFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUyKSwgbV9z
Y3JhdGNoR1BSKTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6SW1tMzIoMHg3ZmYp
LCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9JbnQ1Mk92ZXJm
bG93ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW5PckVxdWFsLCBtX3NjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMxKSk7CiAKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgbm9JbnQ1
Mk92ZXJmbG93LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwpAQCAtMjI3
LDE4ICsyMjcsMTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICAgICAgICAgbm90TmVnYXRp
dmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1
bHQucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOwogICAgICAg
ICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBtX3Jlc3VsdC50YWdHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobmVnYXRp
dmVaZXJvQml0cyA+PiAzMikpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBq
aXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5l
Z1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUt
PmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGpp
dC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAg
IGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVn
WmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+
YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAg
ICAgICAgaml0Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAg
IGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIgLSAzMiksIG1fc2NyYXRjaEdQ
Uik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3Jh
dGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogICAgICAgICAKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAgICBlbmRK
dW1wTGlzdC5hcHBlbmQobm9JbnQ1Mk92ZXJmbG93KTsKICAgICAgICAgaWYgKG1fc2NyYXRjaEdQ
UiA9PSBtX3Jlc3VsdC50YWdHUFIoKSB8fCBtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQucGF5bG9h
ZEdQUigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKaW5k
ZXggMzZkMjZlYTEyNGUuLjYwODc3OTY2ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTXVsR2VuZXJhdG9yLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgICAgICBB
U1NFUlQoIW1fbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9w
ZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5s
aW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25T
dGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5h
cnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIHNsb3dKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENv
bnN0YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5p
c1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRW
YWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRP
cGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcAppbmRleCA5MmMyOWRkNjMwYS4uY2VlYmUzOTA5NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3Vs
dCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRo
SUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBV
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hH
UFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5w
YXlsb2FkR1BSKCkpOwpAQCAtNDUsNyArNDUsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklU
TmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwog
ICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBl
IG9ic2VydmVkVHlwZXMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKICAgICBpZiAoYXJp
dGhQcm9maWxlKQotICAgICAgICBvYnNlcnZlZFR5cGVzID0gYXJpdGhQcm9maWxlLT5saHNPYnNl
cnZlZFR5cGUoKTsKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+YXJnT2Jz
ZXJ2ZWRUeXBlKCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghb2JzZXJ2ZWRUeXBlcy5pc0Vt
cHR5KCksICJXZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2VuZXJhdGUgYW55dGhpbmcgaWYgd2Ug
ZG8gbm90IGhhdmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYgKG9ic2VydmVkVHlwZXMuaXNPbmx5
Tm9uTnVtYmVyKCkpCkBAIC04Miw3ICs4Miw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRO
ZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAg
ICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0K
IAotYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVu
ZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25z
dCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxp
bmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogI2VuZGlmCiAgICAgLy8gVGhl
IGZsYWdzIG9mIEFyaXRoTmVnYXRlIGFyZSBiYXNpYyBpbiBERkcuCiAgICAgLy8gV2Ugb25seSBu
ZWVkIHRvIGtub3cgaWYgd2UgZXZlciBwcm9kdWNlZCBhIG51bWJlci4KLSAgICBpZiAoc2hvdWxk
RW1pdFByb2ZpbGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2
ZWRUeXBlKCkuc2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgp
KQorICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nICYmIGFyaXRoUHJvZmlsZSAmJiAhYXJpdGhQ
cm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSAmJiAhYXJpdGhQcm9maWxlLT5k
aWRPYnNlcnZlRG91YmxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFNldERvdWJsZShq
aXQpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TmVnR2VuZXJhdG9yLmgKaW5kZXggOGEwYzJkNTE3ZDYuLjc4N2I3MDc2ODI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKQEAgLTQzLDggKzQzLDggQEAg
cHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgIHsgfQogCi0g
ICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3Qg
QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlv
blN0YXRlJiwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3Qs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IFVuYXJ5QXJp
dGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogcHJpdmF0ZToKICAgICBK
U1ZhbHVlUmVncyBtX3Jlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDljNjc2ZjE1MDQ2Li4yMjBmY2Q0ZWQ5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNjQzLDcgKzI2NDMsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQogfQogCi1B
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVkQWRkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9wMiwgQXJpdGhQcm9maWxlJiBhcml0
aFByb2ZpbGUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVkQWRkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9wMiwgQmluYXJ5
QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAgYXJpdGhQcm9maWxlLm9ic2VydmVM
SFNBbmRSSFMob3AxLCBvcDIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGQoZ2xvYmFsT2Jq
ZWN0LCBvcDEsIG9wMik7CkBAIC0yNjU5LDcgKzI2NTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGQoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmls
ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUp
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwpAQCAtMjY3Nyw3ICsyNjc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGcK
ICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBKU1Zh
bHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAotICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VS
VChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEs
IG9wMik7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZUFkZFBy
b2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTI2OTksNyArMjY5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRo
UHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMt
PmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocHJvZmlsZWRBZGQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSwgKmFyaXRoUHJvZmlsZSkp
OwogfQpAQCAtMjcxNCw3ICsyNzE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBK
U1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAogICAgIGF1dG8gbm9u
T3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGROb09wdGltaXplOwotICAgIGlmIChB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBp
ZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxl
KCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAg
ICAgYWRkSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9w
dGltaXplVmFyaWFudCk7CiAKQEAgLTI3NDcsNyArMjc0Nyw3IEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIHVucHJvZmlsZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTXVsKGdsb2JhbE9iamVjdCwgb3Ax
LCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmls
ZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2Zp
bGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FMV0FZU19JTkxJ
TkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2Vy
dmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTI3ODgs
NyArMjc4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBu
b25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemU7Ci0gICAgaWYg
KEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpKQorICAg
IGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2Zp
bGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBtdWxJ
Qy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVW
YXJpYW50KTsKIApAQCAtMjc5OSw3ICsyNzk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoK
ICAgICByZXR1cm4gdW5wcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29k
ZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
TXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVs
UHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI4MTUsNyAr
MjgxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQ
cm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChh
cml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAg
YXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRp
bWl6ZTsKQEAgLTI4MzQsNyArMjgzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAot
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwor
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmls
ZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBwcm9maWxlZE11bChn
bG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQpA
QCAtMjg2MCw3ICsyODYwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpAQCAtMjg2OSw3ICsyODY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWwKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wZXJhbmQpOwotICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAg
ICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7CiAKICAgICBKU1ZhbHVlIHByaW1W
YWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4OTcsOSArMjg5Nyw5IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZSk7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxp
bmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCk7
CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTI5MzEsOCArMjkzMSw4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpKQotICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVM
SFMob3BlcmFuZCk7CisgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBu
ZWdJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUFyZyhv
cGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMp
CkBAIC0yOTU4LDcgKzI5NTgsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSB1bnByb2ZpbGVkU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N1YihnbG9iYWxPYmplY3QsIG9wMSwgb3AyKSk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wg
c2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2
ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKQEAgLTI5ODIsNyArMjk4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jCiAgICAgcmV0dXJuIHVucHJvZmlsZWRTdWIoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBl
bmNvZGVkT3AyKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogCkBAIC0zMDAw
LDcgKzMwMDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
U3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8g
bm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplOwotICAgIGlm
IChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKSkKKyAg
ICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9m
aWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgc3Vi
SUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXpl
VmFyaWFudCk7CiAKQEAgLTMwMjYsNyArMzAyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBn
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRo
UHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTMwNDUsNyArMzA0NSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
c3ViSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwog
ICAgIHJldHVybiBwcm9maWxlZFN1Yih2bSwgZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNv
ZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKaW5kZXggMzdlODM2MTVkNDcuLjU5NWFlYzQ3Y2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzgsNiArMzgsOCBAQCB0eXBlZGVm
IGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAgICAgCiBjbGFzcyBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOworY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFz
cyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCdXR0ZXJmbHk7CiBjbGFzcyBDYWxsRnJhbWU7
CiBjbGFzcyBDYWxsTGlua0luZm87CkBAIC02NCw3ICs2Niw2IEBAIGNsYXNzIFdhdGNocG9pbnRT
ZXQ7CiBzdHJ1Y3QgQnlWYWxJbmZvOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIHN0cnVjdCBJ
bnN0cnVjdGlvbjsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiAKIGV4dGVybiAiQyIgewogCkBAIC03
Nyw3ICs3OCw3IEBAIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogICAgIEE6IEpTQXJyYXkqCiAg
ICAgQWFwOiBBcnJheUFsbG9jYXRpb25Qcm9maWxlKgogICAgIEFwOiBBcnJheVByb2ZpbGUqCi0g
ICAgQXJwOiBBcml0aFByb2ZpbGUqCisgICAgQXJwOiBCaW5hcnlBcml0aFByb2ZpbGUqCiAgICAg
QjogQnV0dGVyZmx5KgogICAgIEJ5OiBCeVZhbEluZm8qCiAgICAgQzogSlNDZWxsKgpAQCAtMjgy
LDcgKzI4Myw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0lmRXhjZXB0
aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKFZNCiBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkSGFzSW5zdGFuY2UpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFy
eUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRk
SUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRk
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdURl9JTlRFUk5BTDsKQEAgLTI5Miwx
MyArMjkzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11
bElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQ
cm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJp
bmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBvcGVyYW5kKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIEFy
aXRoUHJvZmlsZSopOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwg
VW5hcnlBcml0aFByb2ZpbGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgSklUTmVnSUMqKTsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBC
aW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVTdWJOb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCmluZGV4IDc5NWMyNzU4NGMwLi43
YjFhOGI4MTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJh
dG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElD
SW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJz
JiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2Vu
ZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3Rh
dGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdl
IGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9i
c2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtNzgsNyArNzgsNyBAQCBKSVRNYXRoSUNJbmxp
bmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGpp
dCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVs
bFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEND
YWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUU3ViR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhK
dW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hv
dWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRH
UFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRHUFIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAppbmRleCA1NjFm
NjMzNGFlMy4uMzQ5MWE4M2ZlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3ViR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dWJHZW5lcmF0b3IuaApAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zY3Jh
dGNoRlBSKHNjcmF0Y2hGUFIpCiAgICAgeyB9CiAKLSAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29u
c3QgQXJpdGhQcm9maWxlKik7Ci0gICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3Vs
ZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5hcnlBcml0
aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxk
RW1pdFByb2ZpbGluZyk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0xlZnRPcGVyYW5kVmFsaWRDb25z
dGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBp
c1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQpIHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGJkYTMw
OGM4NGQyLi5jMDM0MWM5NTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKQEAgLTEzNSwzNiArMTM1LDQ5IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMoVk0mIHZtKQogI2VuZGlmCiAKICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAg
YXJpdGhQcm9maWxlLmFyZ1Nhd0ludDMyKCk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUu
Yml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEJpdHMoKSk7CisgICAgICAg
IEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAg
ICAgICBhcml0aFByb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckJpdHMoKSk7
CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVt
YmVyKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRo
UHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CiAgICAgICAgIGFy
aXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkuYml0cygpKTsKLSAg
ICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCku
bGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQo
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLnJoc09ic2VydmVkVHlwZSgpLmlz
T25seUludDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5h
cnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKICAgICB9
CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBCaW5h
cnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3
TnVtYmVyKCk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5
TnVtYmVySW50KCkuYml0cygpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6
Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVy
KCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlO
dW1iZXJJbnQoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51
bWJlckludEJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRU
eXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09i
c2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdOdW1iZXIoKTsKICAgICAgICAgYXJp
dGhQcm9maWxlLnJoc1Nhd051bWJlcigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkuYml0cygp
KTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVt
YmVyTnVtYmVyKCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwotICAgICAgICBT
VEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5y
aHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdW1iZXJC
aXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlz
T25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5
cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxl
IGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsK
ICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CiAgICAgICAgIGFyaXRoUHJvZmls
ZS5yaHNTYXdOdW1iZXIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0g
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmJpdHMoKSk7Ci0gICAgICAg
IFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmxo
c09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5yaHNPYnNlcnZlZFR5cGUoKS5p
c09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEJp
bmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkpOworICAgICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgICAg
ICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsK
ICAgICB9CiB9CiBJR05PUkVfV0FSTklOR1NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IGEyNWY5ODRhYmRh
Li5mNWQ5MTc3NDYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogCiBj
b25zdCBpbnQ2NF90KiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKIHsKLS8vIFRoaXMg
aXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldHNfZXh0cmFj
dG9yLnJiLCBhbmQgY29udGFpbnMgY29kZQorLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5
IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNv
ZGUKIC8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIg
aWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgogLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2Ug
aGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0
c0V4dHJhY3RvcgogLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdob3NlIG9mZnNldHMgd2UncmUgZXh0
cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAw
MTM1ODc3MjFiOS4uYjJhNzQyZTdiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI0MCwxMyArMjQwLDE1IEBAIGNv
bnN0IElzSW52YWxpZGF0ZWQgPSBjb25zdGV4cHIgSXNJbnZhbGlkYXRlZAogIyBTaGFkb3dDaGlj
a2VuIGRhdGEKIGNvbnN0IFNoYWRvd0NoaWNrZW5UYWlsTWFya2VyID0gY29uc3RleHByIFNoYWRv
d0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlclZhbHVlCiAKLSMgQXJpdGhQcm9maWxlIGRhdGEK
LWNvbnN0IEFyaXRoUHJvZmlsZUludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZl
ZFVuYXJ5SW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHBy
IChBcml0aFByb2ZpbGU6Om9ic2VydmVkVW5hcnlOdW1iZXIoKS5iaXRzKCkpCi1jb25zdCBBcml0
aFByb2ZpbGVJbnRJbnQgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJ
bnRJbnQoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJJbnQgPSBjb25zdGV4cHIg
KEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5iaXRzKCkpCi1jb25zdCBB
cml0aFByb2ZpbGVJbnROdW1iZXIgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRC
aW5hcnlJbnROdW1iZXIoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIg
PSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5i
aXRzKCkpCisjIFVuYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0IEFyaXRoUHJvZmlsZUludCA9
IGNvbnN0ZXhwciAoVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cygpKQorY29uc3Qg
QXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHByIChVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2
ZWROdW1iZXJCaXRzKCkpCisKKyMgQmluYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0IEFyaXRo
UHJvZmlsZUludEludCA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dEludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IGNvbnN0ZXhwciAoQmlu
YXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJv
ZmlsZUludE51bWJlciA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dE51bWJlckJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IGNvbnN0ZXhw
ciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKSkKIAogIyBQ
b2ludGVyIFRhZ3MKIGNvbnN0IEJ5dGVjb2RlUHRyVGFnID0gY29uc3RleHByIEJ5dGVjb2RlUHRy
VGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGJjMjMwZTU3Mzg2Li4yZTcyZWMyZDcxNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KQEAgLTk5Miw4ICs5OTIsOCBAQCBlbmQpCiAKIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCiAKLSAgICBtYWNybyBhcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgb3Jp
IHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6
Om1fYml0c1t0NV0KKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAg
b3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRo
UHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgIGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAt
MTAwMiwxMiArMTAwMiwxMiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdh
dGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcgogICAgIGJpbmVxIHQx
LCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CiAgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwg
Lm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDIKLSAgICBhcml0aFByb2ZpbGUoQXJpdGhQcm9maWxl
SW50KQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJu
IChJbnQzMlRhZywgdDIpCiAub3BOZWdhdGVTcmNOb3RJbnQ6CiAgICAgYmlhIHQxLCBMb3dlc3RU
YWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgYXJpdGhQcm9m
aWxlKEFyaXRoUHJvZmlsZU51bWJlcikKKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9m
aWxlTnVtYmVyKQogICAgIHJldHVybih0MSwgdDIpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDE5
LDcgKzEwMTksNyBAQCBlbmQpCiBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24p
CiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1h
Y3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0K
KyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQ
cm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAg
ICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZjJkZGJiMjc5ZWEuLjcyZjg0
ZWE4NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtOTY0LDIyICs5NjQsMjQgQEAgZW5kKQogCiAKIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUo
dHlwZSkKKyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIGVuZAorCiAgICAgZ2V0KG1f
b3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAg
ICAgbWV0YWRhdGEodDEsIHQyKQotICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0
aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCiAgICAgYnFiIHQzLCBudW1i
ZXJUYWcsIC5vcE5lZ2F0ZU5vdEludAogICAgIGJ0aXogdDMsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0
ZVNsb3cKICAgICBuZWdpIHQzCiAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICBvcmkgQXJpdGhQ
cm9maWxlSW50LCB0MgotICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRo
UHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIHVwZGF0ZUFyaXRoUHJvZmls
ZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuKHQzKQogLm9wTmVnYXRlTm90SW50OgogICAg
IGJ0cXogdDMsIG51bWJlclRhZywgLm9wTmVnYXRlU2xvdwogICAgIHhvcnEgMHg4MDAwMDAwMDAw
MDAwMDAwLCB0MwotICAgIG9yaSBBcml0aFByb2ZpbGVOdW1iZXIsIHQyCi0gICAgc3RvcmVpIHQy
LCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2Jp
dHNbdDFdCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKICAgICBy
ZXR1cm4odDMpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC05OTMsNyArOTk1LDcgQEAgbWFjcm8gYmlu
YXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRp
b25BbmRTdG9yZSwgZG8KICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQogCiAgICAgICAgIG1hY3Jv
IHByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisgICAgICAg
ICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSAr
IFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAgICAgIGdl
dChtX3JocywgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm0ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKaW5kZXgg
OTg4MWU0ZGJkMDMuLjVlOTgzNGNjYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXJtLnJiCkBAIC00MTgsNyArNDE4LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAg
ICAgIGVuZAogICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCiAgICAgICAgICAgICBlbWl0QXJt
Q29tcGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAib3JpIiwgIm9y
cCIKKyAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIsICJvcmgiCiAgICAgICAgICAgICBlbWl0QXJt
Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKICAgICAgICAgd2hlbiAib3JpcyIKICAg
ICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJzIiwgIm9ycnMiLCBvcGVyYW5kcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKaW5kZXggNGNkOGY2NmUzMDMuLmE1
N2U2MzhhNTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm02NC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpA
QCAtMzc4LDcgKzM3OCw3IEBAIGNsYXNzIFNlcXVlbmNlCiAgICAgICAgICAgICBjYXNlIG5vZGUu
b3Bjb2RlCiAgICAgICAgICAgICB3aGVuICJsb2FkYiIsICJsb2FkYnNpIiwgImxvYWRic3EiLCAi
c3RvcmViIiwgL15iYi8sIC9eYnRiLywgL15jYi8sIC9edGIvCiAgICAgICAgICAgICAgICAgc2l6
ZSA9IDEKLSAgICAgICAgICAgIHdoZW4gImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIKKyAg
ICAgICAgICAgIHdoZW4gImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIsICJvcmgiLCAic3Rv
cmVoIgogICAgICAgICAgICAgICAgIHNpemUgPSAyCiAgICAgICAgICAgICB3aGVuICJsb2FkaSIs
ICJsb2FkaXMiLCAic3RvcmVpIiwgImFkZGkiLCAiYW5kaSIsICJsc2hpZnRpIiwgIm11bGkiLCAi
bmVnaSIsCiAgICAgICAgICAgICAgICAgIm5vdGkiLCAib3JpIiwgInJzaGlmdGkiLCAidXJzaGlm
dGkiLCAic3ViaSIsICJ4b3JpIiwgL15iaS8sIC9eYnRpLywKQEAgLTYzMSw2ICs2MzEsOCBAQCBj
bGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIiLCBvcGVyYW5k
cywgOnB0cikKICAgICAgICAgd2hlbiAib3JxIgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJv
cnIiLCBvcGVyYW5kcywgOnF1YWQpCisgICAgICAgIHdoZW4gIm9yaCIKKyAgICAgICAgICAgIGVt
aXRBUk02NFRBQygib3JyIiwgb3BlcmFuZHMsIDp3b3JkKSAjIG5vdCA6aGFsZiBiZWNhdXNlIDE2
LWJpdCByZWdpc3RlcnMgZG9uJ3QgZXhpc3Qgb24gQVJNLgogICAgICAgICB3aGVuICJ4b3JpIgog
ICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJlb3IiLCBvcGVyYW5kcywgOndvcmQpCiAgICAgICAg
IHdoZW4gInhvcnAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9jbG9vcC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCmlu
ZGV4IGI3MTQ5ZTgyYWNiLi5hNjgxNmNiY2E3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vY2xvb3AucmIKQEAgLTU4NSw2ICs1ODUsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgog
ICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50NjQsICJ8IikKICAg
ICAgICAgd2hlbiAib3JwIgogICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRz
LCA6aW50cHRyLCAifCIpCisgICAgICAgIHdoZW4gIm9yaCIKKyAgICAgICAgICAgIGNsb29wRW1p
dE9wZXJhdGlvbihvcGVyYW5kcywgOmludDE2LCAifCIpCiAKICAgICAgICAgd2hlbiAieG9yaSIK
ICAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDMyLCAiXiIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKaW5k
ZXggNzE3ODhiMTA4MzcuLjE2NzY3NTRhMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCkBAIC00Miw2ICs0Miw3IEBAIE1BQ1JPX0lO
U1RSVUNUSU9OUyA9CiAgICAgICJuZWdxIiwKICAgICAgIm5vdGkiLAogICAgICAib3JpIiwKKyAg
ICAgIm9yaCIsCiAgICAgICJyc2hpZnRpIiwKICAgICAgInVyc2hpZnRpIiwKICAgICAgInJzaGlm
dHAiLApAQCAtNjAsNiArNjEsNyBAQCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAibG9hZGhz
cSIsCiAgICAgICJzdG9yZWkiLAogICAgICAic3RvcmViIiwKKyAgICAgInN0b3JlaCIsCiAgICAg
ICJsb2FkZCIsCiAgICAgICJtb3ZlZCIsCiAgICAgICJzdG9yZWQiLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKaW5kZXggOWVlZDI1NDk5ZWMuLjM3NmQ2OTlkOWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKQEAgLTUyNyw3ICs1Mjcs
NyBAQCBkZWYgbWlwc0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhsaXN0KQogICAgICAgICAgICAg
ICAgIGVuZAogICAgICAgICAgICAgd2hlbiAvXihhZGRpfHN1YmkpLwogICAgICAgICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdM
aXN0LCAtMHg3ZmZmLi4weDdmZmYpCi0gICAgICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiLCAi
b3JpIiwgIm9ycCIsICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICB3aGVuICJhbmRpIiwgImFu
ZHAiLCAib3JpIiwgIm9ycCIsICJvcmgiLCAieG9yaSIsICJ4b3JwIgogICAgICAgICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdM
aXN0LCAwLi4weGZmZmYpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBub2RlCkBAIC04NjAsNyArODYwLDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAg
ICAgIGVuZAogICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCiAgICAgICAgICAgICBlbWl0TUlQ
U0NvbXBhY3QoImFuZCIsICJhbmQiLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAib3JpIiwgIm9y
cCIKKyAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIsICJvcmgiCiAgICAgICAgICAgICBlbWl0TUlQ
U0NvbXBhY3QoIm9yIiwgIm9yciIsIG9wZXJhbmRzKQogICAgICAgICB3aGVuICJvcmlzIgogICAg
ICAgICAgICAgZW1pdE1JUFNDb21wYWN0KCJvciIsICJvcnJzIiwgb3BlcmFuZHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgppbmRleCA4YjhkZThkMTI4YS4uZTBhYTIz
NmIyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2Mu
cmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgpAQCAtNDYw
LDcgKzQ2MCw3IEBAIGRlZiByaXNjTG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMobGlzdCkKICAgICAg
ICAgICAgIHBvc3RJbnN0cnVjdGlvbnMgPSBbXQogICAgICAgICAgICAgYW5ub3RhdGlvbiA9IG5v
ZGUuYW5ub3RhdGlvbgogICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQotICAgICAgICAgICAg
d2hlbiAiYWRkaSIsICJhZGRpcyIsICJhbmRpIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwg
Im5vdGkiLCAib3JpIiwgIm9yaXMiLAorICAgICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRpcyIs
ICJhbmRpIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwgIm5vdGkiLCAib3JpIiwgIm9yaCIs
ICJvcmlzIiwKICAgICAgICAgICAgICAgICAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwg
InN1YmlzIiwgInhvcmkiLCAvXmJpLywgL15idGkvLCAvXmNpLywgL150aS8KICAgICAgICAgICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKaW5kZXggMTY2ZjRiZGExMjcuLmRmYjRmOWM4
ZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCkBAIC04ODUsNiAr
ODg1LDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvciN7
eDg2U3VmZml4KDpwdHIpfSIsIDpwdHIpCiAgICAgICAgIHdoZW4gIm9ycSIKICAgICAgICAgICAg
IGhhbmRsZVg4Nk9wKCJvciN7eDg2U3VmZml4KDpxdWFkKX0iLCA6cXVhZCkKKyAgICAgICAgd2hl
biAib3JoIgorICAgICAgICAgICAgaGFuZGxlWDg2T3AoIm9yI3t4ODZTdWZmaXgoOmhhbGYpfSIs
IDpoYWxmKQogICAgICAgICB3aGVuICJyc2hpZnRpIgogICAgICAgICAgICAgaGFuZGxlWDg2U2hp
ZnQoInNhciN7eDg2U3VmZml4KDppbnQpfSIsIDppbnQpCiAgICAgICAgIHdoZW4gInJzaGlmdHAi
CkBAIC05NzEsNiArOTczLDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGVuZAog
ICAgICAgICB3aGVuICJzdG9yZWIiCiAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdiN7eDg2U3Vm
Zml4KDpieXRlKX0gI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICAgICAgd2hlbiAi
c3RvcmVoIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Yje3g4NlN1ZmZpeCg6aGFsZil9ICN7
eDg2T3BlcmFuZHMoOmhhbGYsIDpoYWxmKX0iCiAgICAgICAgIHdoZW4gImxvYWRkIgogICAgICAg
ICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIK
ICAgICAgICAgd2hlbiAibW92ZWQiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1Jlc3VsdFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0
VHlwZS5oCmluZGV4IDliM2QwZDc0YzhkLi41NjIyZjI4OWNjMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKQEAgLTQ4LDYgKzQ4LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgY29uc3RleHByIGludCBudW1CaXRzTmVlZGVkID0gNzsKICAg
ICAgICAgc3RhdGljX2Fzc2VydCgoVHlwZUJpdHMgJiAoKDEgPDwgbnVtQml0c05lZWRlZCkgLSAx
KSkgPT0gVHlwZUJpdHMsICJUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MuIik7CiAK
KyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFJlc3VsdFR5cGUoKQorICAgICAgICAgICAgOiBS
ZXN1bHRUeXBlKHVua25vd25UeXBlKCkpCisgICAgICAgIHsKKyAgICAgICAgfQogICAgICAgICBj
b25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlwZShUeXBlIHR5cGUpCiAgICAgICAgICAgICA6IG1f
Yml0cyh0eXBlKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA4NjZkMmE5YzJlMy4uNzJlMDQwOTE1NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cApAQCAtNDc2LDggKzQ3Niw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19zdHJpbmcp
CiAjaWYgRU5BQkxFKEpJVCkKIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5
QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmIG1ldGFkYXRhLCBKU1ZhbHVlIHJlc3VsdCwgSlNW
YWx1ZSBvcGVyYW5kKQogewotICAgIEFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1f
YXJpdGhQcm9maWxlOwotICAgIHByb2ZpbGUub2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBVbmFy
eUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOworICAgIHBy
b2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkg
fHwgcmVzdWx0LmlzQmlnSW50KCkpOwogICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkgewogICAg
ICAgICBpZiAoIXJlc3VsdC5pc0ludDMyKCkpIHsKQEAgLTUzNCw3ICs1MzQsNyBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQogI2lmIEVOQUJMRShERkdfSklUKQogc3RhdGljIHZv
aWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgcmVzdWx0
LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmlnaHQpCiB7Ci0gICAgQXJpdGhQcm9maWxlJiBwcm9m
aWxlID0gKmNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yUEMocGMpOworICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSYgcHJvZmlsZSA9ICpjb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKHBj
KTsKIAogICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkgewogICAgICAgICBpZiAoIXJlc3VsdC5p
c0ludDMyKCkpIHsKQEAgLTU5NSw3ICs1OTUsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
YWRkKQogICAgIEpTVmFsdWUgdjEgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwog
ICAgIEpTVmFsdWUgdjIgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwogCi0gICAg
QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUgPSAqY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQ
QyhwYyk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUgPSAqY29kZUJsb2Nr
LT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhwYyk7CiAgICAgYXJpdGhQcm9maWxlLm9ic2VydmVM
SFNBbmRSSFModjEsIHYyKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGQoZ2xvYmFsT2Jq
ZWN0LCB2MSwgdjIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382346</attachid>
            <date>2019-10-30 13:32:43 -0700</date>
            <delta_ts>2019-10-30 13:38:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>123628</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZiZWQyNDIwYzVmLi4xNmYyYzk4MTM3MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY4IEBACisyMDE5LTEwLTE0ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGltZSBvbmx5IHVzZWQgZm9y
IGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQgYmVpbmcgdXNlZCBmb3Ig
bmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1c2VkIGZvciBpbmMgYW5k
IGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBhdGNoIEkgbWFrZSBhIHNl
cGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3IgYSBzaW5nbGUgYXJndW1l
bnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisKKyAgICAgICAgQWZ0ZXIg
ZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXplZCB0aGF0IHRoZSBSZXN1
bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQcm9maWxlIGFyZSBub3Qg
bmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFscmVhZHkgaW4gdGhlIGJ5
dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3ZpbmcgdGhlbSBhbGxvd2Vk
IHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBmaXQgaW4gMTYgYml0cyAo
OSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRoZSB0d28ga2luZHMgc2Vw
YXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRlcGVuZGVudGx5IGluIHRo
ZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlcXVpcmVkIGFkZGluZyB0aGUgIm9yaCIg
aW5zdHJ1Y3Rpb24gdG8gdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCB0byBzZXQgYml0cyBpbiB0aGUg
QXJpdGhQcm9maWxlLgorICAgICAgICBUaGlzIGluIHR1cm4gbW90aXZhdGVkIHRoZSBhZGRpdGlv
biBvZiAic3RvcmVoIiwgYXMgb24gUklTQyBwbGF0Zm9ybXMgIm9yaCIgb24gYSBtZW1vcnkgbG9j
YXRpb24gaXMgYWN0dWFsbHkgbG9hZGggLT4gb3JoIC0+IHN0b3JlaC4KKworICAgICAgICAqIGJ5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51
bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6
c2hvdWxkRW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50IGNvbnN0KToKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbkludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlRG91YmxlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOb25OdW1lcmlj
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSW50MzJPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDUyT3Zl
cmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkTm9u
TmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRO
ZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5v
bk51bWVyaWMpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3cp
OgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSW50NTJPdmVyZmxvdyk6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6YWRkcmVzc09mQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6QXJp
dGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpoYXNCaXRzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRCaXQpOgorICAgICAgICAoSlNDOjpVbmFy
eUFyaXRoUHJvZmlsZTo6VW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmFyeUFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlOjphcmdPYnNlcnZlZFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJv
ZmlsZTo6c2V0QXJnT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2Zp
bGU6OmFyZ1Nhd0ludDMyKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nh
d051bWJlcik6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdOb25OdW1i
ZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZUFyZyk6CisgICAg
ICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpCaW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cyk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMpOgorICAg
ICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cyk6
CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6c2V0TGhzT2JzZXJ2ZWRUeXBlKToK
KyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpzZXRSaHNPYnNlcnZlZFR5cGUpOgor
ICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFMpOgorICAgICAgICAo
SlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFNBbmRSSFMpOgorICAgICAgICAoSlND
OjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2ZWRUeXBlRW1wdHkpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVEFkZElDKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklU
U3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElD
KToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bWFrZURpdlNhZmUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJ
Qyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlN
YXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJp
dGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRB
ZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJ
Q0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKiBqaXQvSklURGl2R2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJ
VERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZSk6CisgICAgICAgICog
aml0L0pJVE1hdGhJQy5oOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OkpJVE1hdGhJQyk6Cisg
ICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpK
SVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OmlzQmluYXJ5UHJv
ZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6SklUQmluYXJ5TWF0aElDOjpKSVRCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjppc1VuYXJ5UHJvZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6
SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAgICAgICAgKiBqaXQvSklUTXVsR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVROZWdHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJ
VFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBsbGludC9M
TEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBl
OjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAg
IChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTAtMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHRoZSBSZW1vdGUgUGxheWJhY2sgQVBJLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRl
eCA5OTk5MzNiOGMwZS4uN2Y0NmY3M2ZjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCkBAIC0zMiw3ICszMiw4IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVS
ZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01v
ZGUgbW9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBK
U1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCFzaG91
bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3Vs
ZEVtaXRTZXRCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNDEgKzU5LDUxIEBAIHZv
aWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNW
YWx1ZVJlZ3MgcmVncywgVGFnUmVnCiAgICAgZG9uZS5saW5rKCZqaXQpOwogfQogCi1ib29sIEFy
aXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRF
bWl0U2V0RG91YmxlKCkgY29uc3QKIHsKLSAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxl
OjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJpdGhQcm9m
aWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlOworICAg
IHVpbnQzMl90IG1hc2sgPSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlOwogICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0g
bWFzazsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJz
JiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBj
b25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0RG91YmxlKCkpCi0gICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50MzJPdmVyZmxvdyB8
IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJs
ZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YWRkcmVzc09mQml0cygpKSk7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0
Tm9uTnVtZXJpYygpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29s
IEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNv
bnN0CiB7CiAgICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsKICAg
ICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxl
OjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxk
VHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdAogewogICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6OkJpZ0ludDsK
ICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJpdGhQcm9m
aWxlOjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChz
aG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoTm9uTnVtZXJpYyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZp
ZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQo
KSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9m
aWxlOjpCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRz
KCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmlnSW50
KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CiB9CisK
Ky8vIEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBhYm92ZSBm
b3IgVW5hcnlBcml0aFByb2ZpbGUvQmluYXJ5QXJpdGhQcm9maWxlCisvLyBJZiBjaGFuZ2luZyB0
aGUgc2l6ZSBvZiBlaXRoZXIsIGFkZCB0aGUgY29ycmVzcG9uZGluZyBsaW5lcyBoZXJlLgordGVt
cGxhdGUgY2xhc3MgQXJpdGhQcm9maWxlPHVpbnQxNl90PjsKICNlbmRpZiAvLyBFTkFCTEUoSklU
KQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKQEAgLTEwMSw3ICsxMTIsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0
aFByb2ZpbGU8VD4mIHByb2ZpbGUpCiB7CiAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yID0gIiI7
CiAKQEAgLTEzNSwxOSArMTQ3LDMwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCiAgICAgICAgICAgICBzZXBhcmF0b3Ig
PSAifCI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0
UGF0aCgpKQotICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiVG9vayBzcGVjaWFsIGZhc3Qg
cGF0aC4iKTsKICAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAg
IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFBy
b2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisgICAgb3V0LnByaW50KCIgQXJnIE9ic2VydmVkVHlw
ZTo8Iik7CisgICAgb3V0LnByaW50KHByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkpOworICAgIG91
dC5wcmludCgiPiIpOworfQorCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAgIHByaW50SW50ZXJuYWwo
b3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPj4ocHJv
ZmlsZSkpOworCisgICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0UGF0aCgpKQorICAgICAg
ICBvdXQucHJpbnQoIiBUb29rIHNwZWNpYWwgZmFzdCBwYXRoLiIpOwogCiAgICAgb3V0LnByaW50
KCIgTEhTIE9ic2VydmVkVHlwZTo8Iik7CiAgICAgb3V0LnByaW50KHByb2ZpbGUubGhzT2JzZXJ2
ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgiPiBSSFMgT2JzZXJ2ZWRUeXBlOjwiKTsKICAgICBv
dXQucHJpbnQocHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKSk7CiAgICAgb3V0LnByaW50KCI+Iik7
Ci0KLSAgICBvdXQucHJpbnQoIiBMSFMgUmVzdWx0VHlwZTo8IiwgUmF3UG9pbnRlcihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocHJvZmlsZS5saHNSZXN1bHRUeXBl
KCkuYml0cygpKSkpKTsKLSAgICBvdXQucHJpbnQoIj4gUkhTIFJlc3VsdFR5cGU6PCIsIFJhd1Bv
aW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2ZpbGUu
cmhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7Ci0gICAgb3V0LnByaW50KCI+Iik7CiB9CiAKIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBKU0M6Ok9ic2VydmVkVHlw
ZSYgb2JzZXJ2ZWRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5oCmluZGV4IGZjYzRlMjgxOGJlLi5jYWQ5OWY0OGJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNjYsMTE5ICs2NiwyMTcg
QEAgcHJpdmF0ZToKICAgICB1aW50OF90IG1fYml0cyB7IDAgfTsKIH07CiAKLXN0cnVjdCBBcml0
aFByb2ZpbGUgewotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bWJl
ck9mRmxhZ0JpdHMgPSA2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzUmVzdWx0
VHlwZVNoaWZ0ID0gbnVtYmVyT2ZGbGFnQml0czsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IGxoc1Jlc3VsdFR5cGVTaGlmdCA9IHJoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6
Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNPYnNlcnZl
ZFR5cGVTaGlmdCA9IGxoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6Om51bUJpdHNOZWVk
ZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNPYnNlcnZlZFR5cGVTaGlmdCA9
IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkOwotCi0g
ICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPT0gMywgIldlIG1h
a2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQgdGhhdCBoZXJlLiIpOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KH4oKDEgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKHJoc09ic2Vy
dmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1h
c2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ofigoMSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkg
fCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyAxKSkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRU
eXBlU2hpZnQgKyAyKSkpKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmVzdWx0
VHlwZU1hc2sgPSAoMSA8PCBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQml0ZmllbGRUeXBl
PgorY2xhc3MgQXJpdGhQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBlbnVtIE9ic2VydmVkUmVzdWx0
cyB7CisgICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8IDAsCisgICAgICAgIE5lZ1plcm9E
b3VibGUgICAgPSAxIDw8IDEsCisgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCisg
ICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCisgICAgICAgIEludDUyT3ZlcmZsb3cg
ICAgPSAxIDw8IDQsCisgICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgfTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVk
ZWQgPSA2OwogCi0gICAgZW51bSBjbGFzcyBDb25zdGFudFRhZyB7IENvbnN0YW50IH07CisgICAg
Ym9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1pl
cm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBi
b29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9E
b3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9CisgICAg
Ym9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVn
WmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyBy
ZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgp
IGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUlu
dDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Cisg
ICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMo
SW50NTJPdmVyZmxvdyk7IH0KIAotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3Qgc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNl
cnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVk
VHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSA8PSAoc2l6ZW9mKHVpbnQz
Ml90KSAqIDgpIC0gMSwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFz
ayksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhl
c2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZh
c3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hv
dWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBoaWdo
ZXIgYml0LiIpOworICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRC
aXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJs
ZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51
bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJ
bnQoKSB7IHNldEJpdChCaWdJbnQpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZs
b3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1
Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KIAotICAgIEFyaXRoUHJvZmls
ZShSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNv
bnN0YW50LCBhcmcpCisgICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUpCiAgICAg
ewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSBhcmcuYml0cygpKTsK
LSAgICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFT
U0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOworICAgICAgICBpZiAodmFsdWUuaXNJ
bnQzMigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIo
KSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93
IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGU7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKKyAg
ICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgbV9iaXRzIHw9IE5vbk51bWVyaWM7CiAgICAgfQogCi0gICAgQXJpdGhQcm9m
aWxlKFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBBcml0aFByb2Zp
bGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBsaHMsIHJocykKKyAgICBjb25zdCB2b2lkKiBhZGRy
ZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4gJm1fYml0czsgfQorCisjaWYgRU5BQkxFKEpJVCkK
KyAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKKyAgICAvLyBkb3VibGUuIFNldHMg
Tm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCisgICAgdm9pZCBlbWl0T2JzZXJ2
ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhh
dmVUYWdSZWdpc3RlcnMpOworCisgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3Zl
cmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCisgICAgYm9vbCBzaG91
bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0RG91YmxlKENDYWxsSGVs
cGVycyYpIGNvbnN0OworCisgICAgLy8gU2V0cyBOb25OdW1iZXIuCisgICAgdm9pZCBlbWl0U2V0
Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRO
b25OdW1lcmljKCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIEJpZ0ludAorICAgIHZvaWQgZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdDsKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisgICAgY29uc3RleHByIHVpbnQz
Ml90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworcHJvdGVjdGVkOgorICAgIEFy
aXRoUHJvZmlsZSgpCiAgICAgewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMo
KSA9PSBsaHMuYml0cygpICYmIHJoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gcmhzLmJpdHMoKSk7
Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBB
U1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKICAgICB9CiAKLSAgICBBcml0aFBy
b2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQotICAgICAgICA6IEFyaXRoUHJvZmlsZSh0eXBlcy5m
aXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKLSAgICB7IH0KKyAgICBib29sIGhhc0JpdHMoaW50IG1h
c2spIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIG1hc2s7IH0KKyAgICB2b2lkIHNldEJpdChpbnQg
bWFzaykgeyBtX2JpdHMgfD0gbWFzazsgfQorCisgICAgQml0ZmllbGRUeXBlIG1fYml0cyB7IDAg
fTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVy
YXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRh
dGlvbiB0byBpdC4KK307CisKKy8qIFRoaXMgY2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dpbmcgY29t
cG9uZW50cyBpbiAxNiBiaXRzOgorICogLSBPYnNlcnZlZFJlc3VsdHMKKyAqIC0gT2JzZXJ2ZWRU
eXBlIGZvciB0aGUgYXJndW1lbnQKKyAqLwordXNpbmcgVW5hcnlBcml0aFByb2ZpbGVCYXNlID0g
dWludDE2X3Q7CitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8
VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBh
cmdPYnNlcnZlZFR5cGVTaGlmdCA9IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVkZWQ7CiAKLSAg
ICBBcml0aFByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljX2Fzc2VydChhcmdPYnNlcnZl
ZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8PSBzaXplb2YoVW5hcnlB
cml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdGhlIHR5cGUgb2YgdGhlIHVu
ZGVybHlpbmcgYml0ZmllbGQuIik7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmls
ZSBmcm9tSW50KHVpbnQzMl90IGJpdHMpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8VW5h
cnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSk7CisK
KyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZFR5cGVN
YXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7CisKK3B1YmxpYzoK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPFVuYXJ5QXJp
dGhQcm9maWxlQmFzZT4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEFyaXRoUHJvZmlsZSB7IENv
bnN0YW50VGFnOjpDb25zdGFudCwgYml0cyB9OworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRU
eXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1w
dHkoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2
ZWRVbmFyeUludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ug
b2JzZXJ2ZWRJbnRCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUg
b2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNv
bnN0ZXhwciB1aW50MzJfdCBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2
ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDgwMDAwMCwgIiIp
OwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5
QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29u
c3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZFVuYXJ5TnVtYmVyKCkKKyAgICBzdGF0aWMgY29u
c3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJlckJpdHMoKQogICAgIHsK
ICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVk
VHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4MTAwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJv
bUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gb2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAg
ICByZXR1cm4gYml0czsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGFyZ09i
c2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGFyZ09i
c2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CisgICAgdm9pZCBzZXRBcmdP
YnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKKyAgICAgICAgYml0cyAmPSBjbGVhckFyZ09ic2Vy
dmVkVHlwZUJpdE1hc2s7CisgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIG1fYml0cyA9IGJpdHM7CisgICAgICAgIEFTU0VSVChhcmdP
YnNlcnZlZFR5cGUoKSA9PSB0eXBlKTsKKyAgICB9CisKKyAgICB2b2lkIGFyZ1Nhd0ludDMyKCkg
eyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9Cisg
ICAgdm9pZCBhcmdTYXdOdW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5
cGUoKS53aXRoTnVtYmVyKCkpOyB9CisgICAgdm9pZCBhcmdTYXdOb25OdW1iZXIoKSB7IHNldEFy
Z09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CisKKyAg
ICB2b2lkIG9ic2VydmVBcmcoSlNWYWx1ZSBhcmcpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIGlmIChhcmcuaXNOdW1iZXIoKSkg
eworICAgICAgICAgICAgaWYgKGFyZy5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgbmV3UHJv
ZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5l
d1Byb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbmV3
UHJvZmlsZS5hcmdTYXdOb25OdW1iZXIoKTsKKworICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKKyAgICB9CisKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKKyAgICB9CisKKyAg
ICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9OworCisvKiBUaGlz
IGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMgaW4gMTYgYml0czoKKyAqIC0g
T2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgcmlnaHQtaGFuZC1zaWRlCisg
KiAtIE9ic2VydmVkVHlwZSBmb3IgbGVmdC1oYW5kLXNpZGUKKyAqIC0gYSBiaXQgdXNlZCBieSBk
aXZpc2lvbiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgc3BlY2lhbCBmYXN0IHBhdGggd2FzIHRha2Vu
CisgKi8KK3VzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50MTZfdDsKK2NsYXNzIEJp
bmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxl
QmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsKKworICAgIHN0YXRpY19hc3NlcnQoT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJXZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9uIGFib3V0
IHRoYXQgaGVyZS4iKTsKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQ
cm9maWxlQmFzZT4ofigwYjExMSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCkpOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGxo
c09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVtQml0
c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0
aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNo
aWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChs
aHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9
IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWlu
dDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVh
ckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2Vj
dC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2Jz
ZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4iKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCA+IH5jbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBh
dGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKKworICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+ICgpCisg
ICAgeworICAgICAgICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgQVNTRVJUKHJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQotICAgIHN0YXRp
YyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5SW50SW50KCkKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZEludEludEJpdHMo
KQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsg
T2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90
IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwg
KG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4OTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9t
SW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNl
cnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7CisgICAgICAgIHJldHVy
biBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZl
ZEJpbmFyeU51bWJlckludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2Zp
bGVCYXNlIG9ic2VydmVkTnVtYmVySW50Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIg
T2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigp
IH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2Vy
dmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRz
ID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2Jz
ZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0
aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50
KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0g
KG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4g
Yml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRC
aW5hcnlJbnROdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZEludE51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9i
c2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9
OwogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZl
ZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChiaXRzID09IDB4YTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJp
dHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9i
c2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51
bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0
czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5h
cnlOdW1iZXJOdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHBy
IE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIo
KSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5i
aXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8
PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAw
eDEyMDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNv
bnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0
cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwg
cmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9CiAKLSAg
ICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7Ci0gICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8
IDAsCi0gICAgICAgIE5lZ1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCi0gICAgICAgIE5vbk51bWVy
aWMgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCi0g
ICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAg
ICAgPSAxIDw8IDUsCi0gICAgfTsKLQotICAgIFJlc3VsdFR5cGUgbGhzUmVzdWx0VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUoKG1fYml0cyA+PiBsaHNSZXN1bHRUeXBlU2hpZnQpICYg
cmVzdWx0VHlwZU1hc2spOyB9Ci0gICAgUmVzdWx0VHlwZSByaHNSZXN1bHRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gUmVzdWx0VHlwZSgobV9iaXRzID4+IHJoc1Jlc3VsdFR5cGVTaGlmdCkgJiByZXN1
bHRUeXBlTWFzayk7IH0KLQogICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgbGhzT2JzZXJ2ZWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gT2JzZXJ2ZWRUeXBlKChtX2JpdHMgPj4gbGhzT2JzZXJ2ZWRU
eXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBlTWFzayk7IH0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRU
eXBlIHJoc09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRz
ID4+IHJoc09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgdm9p
ZCBzZXRMaHNPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCiAgICAgewotICAgICAgICB1
aW50MzJfdCBiaXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJp
dHMgPSBtX2JpdHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNr
OwogICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0Owog
ICAgICAgICBtX2JpdHMgPSBiaXRzOwpAQCAtMTg3LDcgKzI4NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0UmhzT2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsgCi0gICAg
ICAgIHVpbnQzMl90IGJpdHMgPSBtX2JpdHM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgYml0cyA9IG1fYml0czsKICAgICAgICAgYml0cyAmPSBjbGVhclJoc09ic2VydmVkVHlwZUJp
dE1hc2s7CiAgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQ7CiAgICAgICAgIG1fYml0cyA9IGJpdHM7CkBAIC0xOTYsMzkgKzI5NCw2IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgdG9va1NwZWNpYWxGYXN0UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IHNwZWNpYWxGYXN0UGF0aEJpdDsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBj
b25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KLSAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQot
ICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNC
aXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRp
ZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsg
fQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmln
SW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIHZv
aWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJs
ZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1pl
cm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChO
b25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJ
bnQpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQz
Mk92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRC
aXQoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBj
b25zdCB7IHJldHVybiAmbV9iaXRzOyB9Ci0KLSAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1
ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBt
X2JpdHMgfD0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9
IEJpZ0ludDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2JpdHMg
fD0gTm9uTnVtZXJpYzsKLSAgICB9Ci0KICAgICB2b2lkIGxoc1Nhd0ludDMyKCkgeyBzZXRMaHNP
YnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9CiAgICAgdm9pZCBs
aHNTYXdOdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRo
TnVtYmVyKCkpOyB9CiAgICAgdm9pZCBsaHNTYXdOb25OdW1iZXIoKSB7IHNldExoc09ic2VydmVk
VHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CkBAIC0yMzgsNyArMzAz
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBvYnNlcnZlTEhTKEpTVmFsdWUgbGhzKQogICAgIHsK
LSAgICAgICAgQXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKKyAgICAgICAgQmluYXJ5
QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKICAgICAgICAgaWYgKGxocy5pc051bWJl
cigpKSB7CiAgICAgICAgICAgICBpZiAobGhzLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBu
ZXdQcm9maWxlLmxoc1Nhd0ludDMyKCk7CkBAIC0yNTQsNyArMzE5LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgb2JzZXJ2ZUxIUyhsaHMpOwogCi0gICAgICAgIEFyaXRoUHJvZmlsZSBuZXdQ
cm9maWxlID0gKnRoaXM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0g
KnRoaXM7CiAgICAgICAgIGlmIChyaHMuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgaWYgKHJo
cy5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5yaHNTYXdJbnQzMigpOwpA
QCAtMjY2LDQ3ICszMzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoSklUKSAgICAKLSAgICAvLyBTZXRzIChJbnQz
Mk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91
YmxlKSBpZiBpdCBzZWVzIGEKLSAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBz
ZWVzIGEgbm9uLW51bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBl
cnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwot
ICAgIAotICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVn
WmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgotICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJs
ZSgpIGNvbnN0OwotICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsK
LSAgICAKLSAgICAvLyBTZXRzIE5vbk51bWJlci4KLSAgICB2b2lkIGVtaXRTZXROb25OdW1lcmlj
KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMo
KSBjb25zdDsKLQotICAgIC8vIFNldHMgQmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KEND
YWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0
OwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLSAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cygp
IGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0ZXhwciBleHBs
aWNpdCBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWcsIHVpbnQzMl90IGJpdHMpCi0gICAgICAgIDog
bV9iaXRzKGJpdHMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUo
Q29uc3RhbnRUYWcsIFJlc3VsdFR5cGUgYXJnKQotICAgICAgICA6IG1fYml0cyhhcmcuYml0cygp
IDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQog
ICAgIHsKKyAgICAgICAgcmV0dXJuIGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSAmJiByaHNP
YnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgY29uc3RleHByIEFyaXRoUHJv
ZmlsZShDb25zdGFudFRhZywgUmVzdWx0VHlwZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQotICAgICAg
ICA6IG1fYml0cygobGhzLmJpdHMoKSA8PCBsaHNSZXN1bHRUeXBlU2hpZnQpIHwgKHJocy5iaXRz
KCkgPDwgcmhzUmVzdWx0VHlwZVNoaWZ0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNC
aXRzKGludCBtYXNrKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBtYXNrOyB9Ci0gICAgdm9pZCBz
ZXRCaXQoaW50IG1hc2spIHsgbV9iaXRzIHw9IG1hc2s7IH0KLQotICAgIHVpbnQzMl90IG1fYml0
cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmds
ZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXBy
ZXNlbnRhdGlvbiB0byBpdC4KLQogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIH07CiAKQEAgLTMxNCw3ICszNDMsOCBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpBcml0
aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6
VW5hcnlBcml0aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNv
bnN0IEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlJik7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBjb25zdCBKU0M6Ok9ic2VydmVkVHlwZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4
IGMwODZiOGViM2YzLi5hYzRjODBlZTk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVzIFsKICAgICA6
SlNUeXBlLAogICAgIDpKU1ZhbHVlLAogICAgIDpMTEludENhbGxMaW5rSW5mbywKKyAgICA6UmVz
dWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxh
ZywKICAgICA6UHJvcGVydHlPZmZzZXQsCkBAIC01Nyw3ICs1OCw4IEBAIHR5cGVzIFsKIAogICAg
IDpWYWx1ZVByb2ZpbGUsCiAgICAgOlZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIsCi0gICAg
OkFyaXRoUHJvZmlsZSwKKyAgICA6VW5hcnlBcml0aFByb2ZpbGUsCisgICAgOkJpbmFyeUFyaXRo
UHJvZmlsZSwKICAgICA6QXJyYXlQcm9maWxlLAogICAgIDpBcnJheUFsbG9jYXRpb25Qcm9maWxl
LAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKQEAgLTI4MiwxMCArMjg0LDcgQEAgb3Bf
Z3JvdXAgOlByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIG9wZXJhbmRUeXBlczogT3BlcmFuZFR5
cGVzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0
aFByb2ZpbGUKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBh
cml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBCaW5hcnlB
cml0aFByb2ZpbGUKICAgICB9CiAKIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCkBA
IC0zNjcsMTMgKzM2NiwxMCBAQCBvcCA6bmVnYXRlLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5kVHlwZXMsCisgICAgICAgIHJlc3VsdFR5cGU6IFJl
c3VsdFR5cGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6
IEFyaXRoUHJvZmlsZSwKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAg
ICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBV
bmFyeUFyaXRoUHJvZmlsZSwKICAgICB9CiAKIG9wIDpub3QsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdlMjExNjgzZDc5Li4wNDYxYTYzNzcy
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTE0NzgsMjUgKzE0NzgsMjUgQEAgU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1
YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxv
Y2tlcikubV9zdHViSW5mb3MuYWRkKGFjY2Vzc1R5cGUpOwogfQogCi1KSVRBZGRJQyogQ29kZUJs
b2NrOjphZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVEFkZElDKiBD
b2RlQmxvY2s6OmFkZEpJVEFkZElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fYWRkSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRN
dWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
K0pJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAg
ICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbXVsSUNzLmFkZChhcml0aFByb2ZpbGUp
OwogfQogCi1KSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKK0pJVFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3ViSUNzLmFkZChh
cml0aFByb2ZpbGUpOwogfQogCi1KSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lD
KFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9u
ZWdJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CkBAIC0zMDgzLDE2ICszMDgzLDE5IEBAIGNvbnN0IElu
c3RydWN0aW9uKiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjKQogICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKS5hdChvZmZzZXQgKyB0YXJnZXQpLnB0
cigpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCitCaW5hcnlBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgcmV0dXJuIGFyaXRoUHJvZmlsZUZvclBDKGluc3Ry
dWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpKTsKKyAgICByZXR1cm4g
YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKSkucHRyKCkpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9m
aWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorVW5hcnlBcml0aFByb2ZpbGUqIENvZGVC
bG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCkKK3sKKyAgICByZXR1cm4gdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVj
dGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKSk7Cit9CisKK0JpbmFyeUFy
aXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0
cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewotICAgIGNhc2Ug
b3BfbmVnYXRlOgotICAgICAgICByZXR1cm4gJnBjLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YSh0
aGlzKS5tX2FyaXRoUHJvZmlsZTsKICAgICBjYXNlIG9wX2FkZDoKICAgICAgICAgcmV0dXJuICZw
Yy0+YXM8T3BBZGQ+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CiAgICAgY2FzZSBv
cF9tdWw6CkBAIC0zMTA4LDExICszMTExLDIzIEBAIEFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjph
cml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKK1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxl
Rm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIHN3aXRjaCAocGMtPm9wY29kZUlE
KCkpIHsKKyAgICBjYXNlIG9wX25lZ2F0ZToKKyAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdh
dGU+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJvb2wgQ29kZUJs
b2NrOjpjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2FzZShCeXRlY29kZUluZGV4IGJ5dGVjb2Rl
SW5kZXgpCiB7CiAgICAgaWYgKCFoYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgQXJpdGhQcm9maWxlKiBwcm9maWxlID0gYXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIHBy
b2ZpbGUgPSBiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
OwogICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBw
cm9maWxlLT50b29rU3BlY2lhbEZhc3RQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZDJjMDY5ODAzYTguLjE4ZTQ4YzI2NmEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04Myw2ICs4Myw4IEBA
IHN0cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8vIG5hbWVzcGFjZSBERkcKICNlbmRpZgogCitjbGFz
cyBVbmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U7CkBAIC05Niw3ICs5OCw2IEBAIGNsYXNzIFN0cnVjdHVyZVN0
dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CiAKLXN0cnVjdCBBcml0
aFByb2ZpbGU7CiBzdHJ1Y3QgT3BDYXRjaDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBE
b250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwpAQCAtMjc5LDIy
ICsyODAsMjIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVREYXRhJiBlbnN1cmVKSVREYXRhU2xv
dyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKTsKIAotICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJ
QyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRNdWxJQyogYWRkSklUTXVsSUMoQXJpdGhQcm9maWxl
Kik7Ci0gICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVFN1
YklDKiBhZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqKTsKKyAgICBKSVRBZGRJQyogYWRkSklUQWRk
SUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEJpbmFy
eUFyaXRoUHJvZmlsZSopOworICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhVbmFyeUFyaXRoUHJv
ZmlsZSopOworICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUqKTsK
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUQWRkR2VuZXJhdG9yPjo6
dmFsdWU+Ojp0eXBlPgotICAgIEpJVEFkZElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9m
aWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhwcm9maWxlKTsgfQorICAgIEpJVEFkZElDKiBhZGRN
YXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhw
cm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRNdWxH
ZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTXVsSUMqIGFkZE1hdGhJQyhBcml0aFBy
b2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CisgICAgSklU
TXVsSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFk
ZEpJVE11bElDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9y
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0
b3IsIEpJVE5lZ0dlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBKSVROZWdJQyogYWRkTWF0
aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTmVnSUMocHJvZmlsZSk7
IH0KKyAgICBKSVROZWdJQyogYWRkTWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7
IHJldHVybiBhZGRKSVROZWdJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Nh
bWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUU3Vi
SUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklD
KHByb2ZpbGUpOyB9CisgICAgSklUU3ViSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUq
IHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CiAKICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNjZXNzVHlwZSk7CiAKQEAgLTQ5Nyw4ICs0OTgsMTAg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMTEludENhbGxMaW5rSW5mbyhjb25zdCBGdW5jdG9y
Jik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0
ZWNvZGVJbmRleCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJ
bnN0cnVjdGlvbiopOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSog
dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25z
dCBJbnN0cnVjdGlvbiopOwogCiAgICAgYm9vbCBjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2Fz
ZShCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmgKaW5kZXggOWFiNzcxMzdhYTYuLmQ0MWNmYzEyYjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTIzNiw2ICsyMzYsMTggQEAgc3RydWN0IEZpdHM8
RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2Vu
dW08RT46OnZhbHUKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1
Y3QgRml0czxSZXN1bHRUeXBlLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihSZXN1bHRU
eXBlKSAhPSBzaXplLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6
ZT4geworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFJlc3VsdFR5cGUpID09IHNpemVvZih1aW50
OF90KSk7CisgICAgdXNpbmcgQmFzZSA9IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAgICBzdGF0
aWMgYm9vbCBjaGVjayhSZXN1bHRUeXBlIHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNrKHR5cGUu
Yml0cygpKTsgfQorCisgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgY29udmVy
dChSZXN1bHRUeXBlIHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNvbnZlcnQodHlwZS5iaXRzKCkpOyB9
CisKKyAgICBzdGF0aWMgUmVzdWx0VHlwZSBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5
cGUgdHlwZSkgeyByZXR1cm4gUmVzdWx0VHlwZShCYXNlOjpjb252ZXJ0KHR5cGUpKTsgfQorfTsK
KwogdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8T3BlcmFuZFR5cGVzLCBz
aXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihPcGVyYW5kVHlwZXMpICE9IHNpemUsIHN0ZDo6
dHJ1ZV90eXBlPj4gewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmRUeXBlcykgPT0g
c2l6ZW9mKHVpbnQxNl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKaW5kZXggNzEw
NGQwMWFlMTEuLjJiNjlmMzZjN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCkBA
IC02NiwxMCArNjYsMTYgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0
UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAg
ICB1LmFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVU
YWdSZWdpc3RlcnMpOworICAgIGNhc2UgVW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAg
ICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90
SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAg
ICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQ
cm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVy
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC05NCwxMCArMTAwLDE2IEBAIHZvaWQgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAg
dS5hcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgIGNhc2UgVW5hcnlBcml0
aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5vYnNlcnZlUmVz
dWx0KHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gfQorICAgIH0KKworICAgIGNhc2Ug
QmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUt
Pm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KIAog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaAppbmRleCBjZmI4MzQ3MDZhZi4uNWQ4MWM0YzkwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUuaApAQCAtMzYsMTAgKzM2LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBV
bmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIENDYWxs
SGVscGVyczsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
S2V5Owotc3RydWN0IEFyaXRoUHJvZmlsZTsKIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKIGNsYXNz
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgewpAQCAtNTcsMTIgKzU4LDIxIEBAIHB1Ymxp
YzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwogICAgIH0KLSAg
ICAKLSAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKEFyaXRoUHJvZmlsZSogcHJvZmls
ZSkKKworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoVW5hcnlBcml0aFByb2ZpbGUq
IHByb2ZpbGUpCisgICAgeworICAgICAgICBpZiAocHJvZmlsZSkgeworICAgICAgICAgICAgbV9r
aW5kID0gVW5hcnlBcml0aFByb2ZpbGVSZWFkeTsKKyAgICAgICAgICAgIHUudW5hcnlBcml0aFBy
b2ZpbGUgPSBwcm9maWxlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fa2luZCA9IE5v
bmU7CisgICAgfQorCisgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShCaW5hcnlBcml0
aFByb2ZpbGUqIHByb2ZpbGUpCiAgICAgewogICAgICAgICBpZiAocHJvZmlsZSkgewotICAgICAg
ICAgICAgbV9raW5kID0gQXJpdGhQcm9maWxlUmVhZHk7Ci0gICAgICAgICAgICB1LmFyaXRoUHJv
ZmlsZSA9IHByb2ZpbGU7CisgICAgICAgICAgICBtX2tpbmQgPSBCaW5hcnlBcml0aFByb2ZpbGVS
ZWFkeTsKKyAgICAgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwogICAgIH0KQEAgLTc5LDcgKzg5
LDggQEAgcHJpdmF0ZToKICAgICBlbnVtIEtpbmQgewogICAgICAgICBOb25lLAogICAgICAgICBS
ZWFkeSwKLSAgICAgICAgQXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIFVuYXJ5QXJpdGhQcm9m
aWxlUmVhZHksCisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAogICAgICAgICBMYXp5
T3BlcmFuZAogICAgIH07CiAgICAgCkBAIC05MCw3ICsxMDEsOCBAQCBwcml2YXRlOgogICAgICAg
ICB7IH0KIAogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7Ci0gICAgICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0
aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
OwogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAg
ICAgICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCAxNTRiZDNjZmJjYy4uOGU1ODU3MzhmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNjY1
LDE0ICsxNjY1LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKICAgICByZXR1cm4gZHN0OwogfQogCi1S
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMgdHlwZXMp
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQgb3Bj
b2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBSZXN1bHRUeXBlIHR5cGUp
CiB7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfbm90OgogICAgICAgICBl
bWl0VW5hcnlPcDxPcE5vdD4oZHN0LCBzcmMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIG9w
X25lZ2F0ZToKLSAgICAgICAgT3BOZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGVzKTsK
KyAgICAgICAgT3BOZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGUpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIG9wX2JpdG5vdDoKICAgICAgICAgZW1pdFVuYXJ5T3A8T3BCaXRub3Q+
KGRzdCwgc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0MTk3YWJjMTJlNS4uMzhlNzdjZGIxNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTY4Miw3ICs2ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBkc3Q7CiAgICAgICAgIH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5h
cnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIE9wZXJhbmRU
eXBlcyk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRVbmFyeU9wKE9wY29kZUlELCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSk7CiAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQmluYXJ5T3A+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggMmUwM2JlMGI3YzcuLjA1OGZlNTlkNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yMTM5LDcgKzIxMzksNyBA
QCBSZWdpc3RlcklEKiBVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYyA9
IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8ocG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSk7Ci0gICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0VW5hcnlPcChvcGNvZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCBzcmMuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERlc2NyaXB0b3Io
KSkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpLCBtX2V4cHItPnJlc3VsdERlc2Ny
aXB0b3IoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVbmFyeVBs
dXNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDIyMzQ0NWMyZDk0
Li44Y2I3MTAwNDFlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTk0Miw1NiArOTQyLDYwIEBAIHByaXZhdGU6CiAgICAgICAgIGlm
ICghaXNYODYoKSAmJiAobm9kZS0+b3AoKSA9PSBBcml0aE1vZCB8fCBub2RlLT5vcCgpID09IFZh
bHVlTW9kKSkKICAgICAgICAgICAgIHJldHVybiBub2RlOwogCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsK
LSAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEFyaXRoQWRkOgotICAgICAgICAg
ICAgICAgIGNhc2UgQXJpdGhTdWI6Ci0gICAgICAgICAgICAgICAgY2FzZSBWYWx1ZUFkZDoKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJs
ZVJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVOb25OdW1lcmljKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdz
KE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChh
cml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVNdWw6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBBcml0aE11bDogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
T3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2Rl
TWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJp
dGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJv
SW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9i
c2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
Tm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aE5l
Z2F0ZTogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5saHNPYnNlcnZl
ZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3Vi
bGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VG
bGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBBcml0aEFk
ZDoKKyAgICAgICAgY2FzZSBBcml0aFN1YjoKKyAgICAgICAgY2FzZSBWYWx1ZUFkZDogeworICAg
ICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgo
bV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
RG91YmxlKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURv
dWJsZVJlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9u
TnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVO
b25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgVmFsdWVNdWw6CisgICAgICAgIGNhc2UgQXJpdGhNdWw6IHsKKyAgICAgICAgICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4
KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3co
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDUy
KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9k
ZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2Zp
bGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Cisg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAgICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7CisgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAg
ICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsK
KyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Cisg
ICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKKyAgICAgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVuYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAg
ICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGlmIChhcml0aFByb2ZpbGUtPmFyZ09ic2VydmVkVHlwZSgpLnNhd051bWJlcigpIHx8IGFyaXRo
UHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsK
KyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkg
fHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVOb25OdW1lcmljKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJl
bnRJbmRleCkpIHsKQEAgLTEwMzMsOCArMTAzNyw4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gbWFrZSB0aGlzIG1vcmUgZ3Jh
bnVsYXIuCiAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJh
c2VsaW5lIHwgTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsKLSAgICAgICAgCi0gICAgICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsKKworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1
cnJlbnRJbmRleCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQo
KSkKICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IGFkYmY1MDI1Y2Yz
Li45OWVlZjZhZjk5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAg
LTE2NTIsNyArMTY1Miw5IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9kZSogY3VycmVuCiAgICAgICAgICAgICAg
ICAgcmV0dXJuICZwcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpOwogCiAgICAgICAgICAgICBpZiAo
cHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAg
ICAgIGlmIChBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSkp
CisgICAgICAgICAgICAgICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmls
ZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmlnaW4u
c2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgICAgICAgICBpZiAoVW5hcnlBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHBy
b2ZpbGVkQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmln
aW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0NzQxNjE0YzU3Yi4uYWE1MjZj
ODMwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0zOTk0LDcgKzM5OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVBZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sg
PSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5k
ZXgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVEFkZElDKGFy
aXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZUFkZE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVBZGQ7CkBAIC00MDE4LDcgKzQwMTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29k
ZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5v
cmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2Rl
QmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgYXV0byByZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwpAQCAtNDYxMiw3ICs0NjEy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUqIG5vZGUp
CiB7CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFz
ZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgp
OwotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgVW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTmVnSUMqIG5lZ0lD
ID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0
byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplOwogICAg
IGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7CkBAIC00
ODM1LDcgKzQ4MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwoTm9k
ZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFw
aCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTXVs
SUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7
CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXpl
OwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYWYw
YThlYjA3MGIuLmRmMmRlYTIwZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC0yMTEyLDcgKzIxMTIsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJ
bmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2Nr
LT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemU7
CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7
CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPihhcml0aFByb2Zp
bGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTIxMzMs
NyArMjEzMyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVC
bG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9u
ID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5n
RnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJ
QzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25S
ZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE1NCw3ICsyMTU0LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNl
bGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9j
ay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAg
ICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXpl
OwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVs
OwogICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQcm9m
aWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTYy
LDcgKzIxNjIsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRv
ciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVuYW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9IHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2lu
dGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21waWxl
VW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdG
dW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGlsZVVu
YXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hp
bmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKIApAQCAtMjI0OCw3ICsyMjQ4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBlbmFt
ZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZnVu
Y3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1ZSAm
JiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+Ojp0
eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNo
aW5nRnVuY3Rpb24pCisgICAgdm9pZCBjb21waWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJl
cGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAg
ICAgICAgIApAQCAtMjQxNyw3ICsyNDE3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2Rl
QmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRl
eCgpOwotICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3Vi
T3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlU3ViOwogICAgICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5l
cmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVu
Y3Rpb24pOwpAQCAtMzA5NSw3ICszMDk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBi
YXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5l
Q29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRl
eCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdh
dGVPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRp
b25Bcml0aE5lZ2F0ZTsKICAgICAgICAgY29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRv
cj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBiNWVmZTI2ODA0Ni4uMmI0YTVkNjRiZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtOTE5LDcgKzkxOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAvLyBJdCB3aWxsIGdpdmUgdGhlIHNsb3cgcGF0aCB0aGUgc2FtZSB2YWx1
ZSByZWFkIGJ5IHRoZSBmYXN0IHBhdGguCiAgICAgICAgIEdldFB1dEluZm8gY29waWVkR2V0UHV0
SW5mbyhPcFB1dFRvU2NvcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4K
LSAgICAgICAgQXJpdGhQcm9maWxlIGNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCk7CisgICAg
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOwogCiAg
ICAgICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwogCkBAIC05MzksNyArOTM5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7
CiAKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgdW5zaWduZWQ+IG1fY29waWVkR2V0UHV0SW5m
b3M7Ci0gICAgICAgIEhhc2hNYXA8dWludDY0X3QsIEFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0
aFByb2ZpbGVzOworICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBCaW5hcnlBcml0aFByb2ZpbGU+
IG1fY29waWVkQXJpdGhQcm9maWxlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNo
ZWNrczsKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9s
bGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAK
aW5kZXggNjI3YWYyNzg3ZTAuLjc0MGIyZWQ4YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBP
YnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03Myw3ICs3
Myw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0
LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmls
aW5nKQorYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3Nj
cmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBt
X2xlZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQWRkR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdl
bmVyYXRvci5oCmluZGV4IDRkYzM0YTJmNWI2Li42NzVjZjkzYzkwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCkBAIC01NSw4ICs1NSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3Jp
Z2h0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5l
UmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJh
dGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmlu
YXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZh
bGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVy
YW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3Bl
cmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiBy
aWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNWZjZjg4OWQzMTguLjc2MzQ0NWNjYWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1
Miw3ICs0NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29w
X25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdh
dGU+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIFVuYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0
ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMq
IG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAg
bV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsK
ICAgICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwpA
QCAtNjMzLDE0ICs2MzMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChj
dXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRp
YyBPcGVyYW5kVHlwZXMgZ2V0T3BlcmFuZFR5cGVzKGNvbnN0IEFyaXRoUHJvZmlsZSYgYXJpdGhQ
cm9maWxlKQotewotICAgIHJldHVybiBPcGVyYW5kVHlwZXMoYXJpdGhQcm9maWxlLmxoc1Jlc3Vs
dFR5cGUoKSwgYXJpdGhQcm9maWxlLnJoc1Jlc3VsdFR5cGUoKSk7Ci19Ci0KIHZvaWQgSklUOjpl
bWl0X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BB
ZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVEFkZElDKiBh
ZGRJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBhZGRJQyk7CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BBZGQ+KGFkZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZh
bHVlQWRkUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlQWRkKTsKQEAgLTY4NSw3ICs2ODAsNyBAQCB2
b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElD
LCBjb25zdCBJbnN0cnVjdGlvbiogYwogCiAgICAgYm9vbCBnZW5lcmF0ZWRJbmxpbmVDb2RlID0g
bWF0aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywgbWF0aElDR2VuZXJhdGlvblN0YXRlKTsKICAg
ICBpZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgICAgICBVbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHNyY1JlZ3MsIGFyaXRoUHJvZmls
ZSk7CiAgICAgICAgIGVsc2UKQEAgLTcwOCw3ICs3MDMsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5h
bWUgTgogdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVk
RnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxl
ZEZ1bmN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wPigpOwotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRB
cml0aFByb2ZpbGUoYnl0ZWNvZGUpKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qu
b2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGlu
dCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKQEAgLTcyNyw4ICs3MjEsOCBAQCB2b2lk
IEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywg
Y29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogI2Vu
ZGlmCiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAg
ICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBw
ZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOwor
ICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5z
ZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAg
bGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBA
IC03NTgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJ
QzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIGxlZnRSZWdzKTsKICAgICAgICAgZWxzZSBpZiAocmln
aHRPcGVyYW5kLmlzQ29uc3QoKSkKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
b3AyLCByaWdodFJlZ3MpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1h
dGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmls
ZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0
aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIGFyaXRoUHJvZmls
ZSk7CiAgICAgICAgIGVsc2UKQEAgLTc5OCw3ICs3OTIsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJ
Q1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlv
biogYwogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBV
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsK
ICAgICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAg
ICBpZiAobWF0aElDR2VuZXJhdGlvblN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCkKICAgICAg
ICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFJlc3VsdChyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dKTWljPihwcm9maWxl
ZFJlcGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgc3JjUmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKQEAgLTgz
MCw3ICs4MjQsNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgbWF0aElDR2VuZXJhdGlv
blN0YXRlLnNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0
T3BlcmFuZFR5cGVzKGNvcGllZEFyaXRoUHJvZmlsZShieXRlY29kZSkpOwogICAgIGludCByZXN1
bHQgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9s
aHMub2Zmc2V0KCk7CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwpAQCAt
ODQ1LDggKzgzOCw4IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gbGVmdFJlZ3M7CiAjZW5kaWYKICAgICAKLSAgICBTbmlwcGV0T3BlcmFuZCBs
ZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJh
bmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVj
b2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3Bl
cmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihn
ZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC04NjQsNyArODU3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0
IEluc3RydWN0aW9uKgogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYK
IAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUo
KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQ
cm9maWxlKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkp
IHsKICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0
Y2gpCiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbldpdGhSZXN1bHQoYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0dKSk1pYz4o
cHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIFRydXN0ZWRJbW1Q
dHIobWF0aElDKSk7CkBAIC04OTIsMTkgKzg4NSwxNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Ns
b3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24q
CiB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERp
dj4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9w
MSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jo
cy5vZmZzZXQoKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgT3BlcmFuZFR5cGVzIHR5cGVz
ID0gZ2V0T3BlcmFuZFR5cGVzKG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlKTsKICAgICBKU1ZhbHVl
UmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyByaWdo
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IGxlZnRSZWdzOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDI7CiAjZWxzZQotICAgIE9w
ZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmls
ZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
OwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7
CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxlZnRSZWdzOwpAQCAtOTEyLDEyICs5MDIs
MTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAjZW5kaWYKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IGZwUmVnVDI7CiAKLSAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHI7CisgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyOwogICAgIGlmIChzaG91bGRFbWl0UHJvZmls
aW5nKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RGl2PigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKIAotICAgIFNuaXBw
ZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVzLmZpcnN0KCkpOwotICAgIFNuaXBwZXRPcGVyYW5k
IHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQoKSk7CisgICAgU25pcHBldE9wZXJhbmQgbGVmdE9w
ZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuZmlyc3QoKSk7CisgICAgU25pcHBldE9wZXJh
bmQgcmlnaHRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLnNlY29uZCgpKTsKIAogICAg
IGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDEpKQogICAgICAgICBsZWZ0T3BlcmFuZC5zZXRD
b25zdEludDMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDEpKTsKQEAgLTk1OSw3ICs5NDksNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFBy
b2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudElu
c3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2Zp
bGU7CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9jb2RlQmxvY2stPmFkZEpJVE11bElDKGFyaXRo
UHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rp
b24sIG11bElDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcE11bD4obXVsSUMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVNdWwpOwpA
QCAtOTc1LDcgKzk2NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAKIHZvaWQgSklUOjpl
bWl0X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BT
dWI+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdWI+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVFN1YklDKiBz
dWJJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBzdWJJQyk7CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BTdWI+KHN1YklDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZh
bHVlU3ViUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcAppbmRleCA2NmUxYmUxNGE4ZC4uYjhjNDc5ODZm
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmIGppdCkKICAgICBub3REb3VibGVaZXJvLmxpbmsoJmppdCk7CiAjZW5k
aWYKICAgICBpZiAobV9hcml0aFByb2ZpbGUpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6c3BlY2lhbEZhc3RQYXRoQml0KSwgQ0NhbGxI
ZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9hcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkp
OworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0
aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRy
ZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICBqaXQuYm94RG91Ymxl
KG1fbGVmdEZQUiwgbV9yZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVREaXZHZW5lcmF0b3IuaAppbmRleCA4Mzk2Njc3OTQzZi4uNzA4ZGIxMGQ2Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaApAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAgICAgSklURGl2R2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
LCBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCiAgICAgICAgIEZQUlJlZyBs
ZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRj
aEZQUiwKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQorICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIpCiAgICAgICAg
IDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKICAgICAgICAgLCBtX3JpZ2h0T3BlcmFuZChy
aWdodE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQpAQCAtNzEsNyArNzEsNyBA
QCBwcml2YXRlOgogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7CiAgICAgRlBSUmVnIG1fc2NyYXRj
aEZQUjsKICAgICBib29sIG1fZGlkRW1pdEZhc3RQYXRoIHsgZmFsc2UgfTsKLSAgICBBcml0aFBy
b2ZpbGUqIG1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogbV9hcml0aFBy
b2ZpbGU7CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1fZW5kSnVtcExpc3Q7CiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX3Nsb3dQYXRoSnVtcExpc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDYyZWFiOWI5N2ZhLi4yNWJjYzJiOWM1NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTcxNiwxMyArNzE2LDEzIEBA
IEFMV0FZU19JTkxJTkUgR2V0UHV0SW5mbyBKSVQ6OmNvcGllZEdldFB1dEluZm8oT3BQdXRUb1Nj
b3BlIGJ5dGVjb2RlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLUFMV0FZU19J
TkxJTkUgQXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVj
b2RlKQorQUxXQVlTX0lOTElORSBCaW5hcnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFBy
b2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCiB7CiAgICAgdWludDY0X3Qga2V5ID0gKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihCaW5hcnlPcDo6b3Bjb2RlSUQpICsgMSkgPDwgMzIgfCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYnl0ZWNvZGUubV9tZXRhZGF0YUlEKTsKICAgICBhdXRvIGl0ZXJhdG9yID0g
bV9jb3BpZWRBcml0aFByb2ZpbGVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXRlcmF0b3IgIT0gbV9j
b3BpZWRBcml0aFByb2ZpbGVzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVl
OwotICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJv
ZmlsZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAg
ICBtX2NvcGllZEFyaXRoUHJvZmlsZXMuYWRkKGtleSwgYXJpdGhQcm9maWxlKTsKICAgICByZXR1
cm4gYXJpdGhQcm9maWxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRNYXRoSUMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKaW5k
ZXggNTY0NWU0MmRlZmYuLmZkYWVjOTI3NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE1hdGhJQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TWF0aElDLmgKQEAgLTUyLDExICs1MiwxMSBAQCBzdHJ1Y3QgTWF0aElDR2VuZXJhdGlvblN0YXRl
IHsKIAogI2RlZmluZSBFTkFCTEVfTUFUSF9JQ19TVEFUUyAwCiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBHZW5lcmF0b3JUeXBlLCBib29sKCppc1Byb2ZpbGVFbXB0eSkoQXJpdGhQcm9maWxlJik+Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgdHlwZW5hbWUgQXJpdGhQcm9maWxlVHlw
ZT4KIGNsYXNzIEpJVE1hdGhJQyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgSklUTWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgIEpJVE1h
dGhJQyhBcml0aFByb2ZpbGVUeXBlKiBhcml0aFByb2ZpbGUpCiAgICAgICAgIDogbV9hcml0aFBy
b2ZpbGUoYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CkBAIC03MSw3ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5j
b2RlU2l6ZSgpOwogCiAgICAgICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewotICAgICAgICAgICAg
aWYgKGlzUHJvZmlsZUVtcHR5KCptX2FyaXRoUHJvZmlsZSkpIHsKKyAgICAgICAgICAgIGlmICht
X2FyaXRoUHJvZmlsZS0+aXNPYnNlcnZlZFR5cGVFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gSXQgbG9va3MgbGlrZSB0aGUgTWF0aElDIGhhcyB5ZXQgdG8gZXhlY3V0ZS4gV2UgZG9uJ3Qg
d2FudCB0byBlbWl0IGNvZGUgaW4gdGhpcwogICAgICAgICAgICAgICAgIC8vIGNhc2UgZm9yIGEg
Y291cGxlIHJlYXNvbnMuIEZpcnN0LCB0aGUgb3BlcmF0aW9uIG1heSBuZXZlciBleGVjdXRlLCBz
byBpZiB3ZSBkb24ndCBlbWl0CiAgICAgICAgICAgICAgICAgLy8gY29kZSwgaXQncyBhIHdpbi4g
U2Vjb25kLCBpZiB0aGUgb3BlcmF0aW9uIGRvZXMgZXhlY3V0ZSwgd2UgY2FuIGVtaXQgYmV0dGVy
IGNvZGUKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2xvd1BhdGhTdGFy
dExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHN0YXRl
LnNsb3dQYXRoU3RhcnQpOwogICAgIH0KIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KKyAgICBBcml0aFByb2ZpbGVUeXBl
KiBhcml0aFByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2FyaXRoUHJvZmlsZTsgfQogCiAjaWYg
RU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgc2l6ZV90IG1fZ2VuZXJhdGVkQ29kZVNpemUgeyAw
IH07CkBAIC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0gICAgQXJp
dGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAgICBBcml0aFByb2ZpbGVUeXBlKiBtX2FyaXRo
UHJvZmlsZTsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
IG1fY29kZTsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2lubGlu
ZVN0YXJ0OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1faW5saW5l
RW5kOwpAQCAtMjQ2LDE1ICsyNDYsMTEgQEAgcHVibGljOgogICAgIEdlbmVyYXRvclR5cGUgbV9n
ZW5lcmF0b3I7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0JpbmFyeVByb2ZpbGVFbXB0eShBcml0aFBy
b2ZpbGUmIGFyaXRoUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2Vy
dmVkVHlwZSgpLmlzRW1wdHkoKSB8fCBhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNF
bXB0eSgpOwotfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+Ci1jbGFzcyBKSVRC
aW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzQmluYXJ5UHJv
ZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdl
bmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4gewogcHVibGljOgotICAgIEpJVEJpbmFy
eU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8
R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQcm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkKKyAgICBK
SVRCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAgICAg
IDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4oYXJpdGhQcm9m
aWxlKQogICAgIHsKICAgICB9CiB9OwpAQCAtMjYzLDE2ICsyNTksMTEgQEAgdHlwZWRlZiBKSVRC
aW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPiBKSVRBZGRJQzsKIHR5cGVkZWYgSklUQmluYXJ5
TWF0aElDPEpJVE11bEdlbmVyYXRvcj4gSklUTXVsSUM7CiB0eXBlZGVmIEpJVEJpbmFyeU1hdGhJ
QzxKSVRTdWJHZW5lcmF0b3I+IEpJVFN1YklDOwogCi0KLWlubGluZSBib29sIGlzVW5hcnlQcm9m
aWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCi17Ci0gICAgcmV0dXJuIGFyaXRo
UHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7Ci19CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgR2VuZXJhdG9yVHlwZT4KLWNsYXNzIEpJVFVuYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJ
QzxHZW5lcmF0b3JUeXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRVbmFyeU1h
dGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgVW5hcnlBcml0aFByb2ZpbGU+
IHsKIHB1YmxpYzoKLSAgICBKSVRVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0
eT4oYXJpdGhQcm9maWxlKQorICAgIEpJVFVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVuYXJ5QXJp
dGhQcm9maWxlPihhcml0aFByb2ZpbGUpCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKaW5kZXggODNkMjkzYjYyNTIuLmNm
NmJhYTUyZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0
b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMm
IGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5l
cmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2Ug
ZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2Jz
ZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC04OSw3ICs4OSw3IEBAIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0
LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxs
U25pcHBldDsKIH0KIAotYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRNdWxHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1
bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQ
UlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsK
QEAgLTIwNSwxOCArMjA1LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAKICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIG5vdE5lZ2F0aXZlWmVybyA9IGppdC5icmFuY2g2NChDQ2FsbEhl
bHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTY0KG5lZ2F0aXZlWmVyb0JpdHMpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhl
bHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwor
ICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFBy
b2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0
aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
ZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7
Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmls
ZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRo
UHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIEND
YWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygp
KSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hH
UFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUyKSwgbV9z
Y3JhdGNoR1BSKTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6SW1tMzIoMHg3ZmYp
LCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9JbnQ1Mk92ZXJm
bG93ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW5PckVxdWFsLCBtX3NjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMxKSk7CiAKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgbm9JbnQ1
Mk92ZXJmbG93LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwpAQCAtMjI3
LDE4ICsyMjcsMTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICAgICAgICAgbm90TmVnYXRp
dmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1
bHQucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOwogICAgICAg
ICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBtX3Jlc3VsdC50YWdHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobmVnYXRp
dmVaZXJvQml0cyA+PiAzMikpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBq
aXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5l
Z1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUt
PmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGpp
dC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAg
IGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVn
WmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+
YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAg
ICAgICAgaml0Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAg
IGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIgLSAzMiksIG1fc2NyYXRjaEdQ
Uik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3Jh
dGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogICAgICAgICAKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAgICBlbmRK
dW1wTGlzdC5hcHBlbmQobm9JbnQ1Mk92ZXJmbG93KTsKICAgICAgICAgaWYgKG1fc2NyYXRjaEdQ
UiA9PSBtX3Jlc3VsdC50YWdHUFIoKSB8fCBtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQucGF5bG9h
ZEdQUigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKaW5k
ZXggMzZkMjZlYTEyNGUuLjYwODc3OTY2ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTXVsR2VuZXJhdG9yLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgICAgICBB
U1NFUlQoIW1fbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9w
ZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5s
aW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25T
dGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5h
cnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIHNsb3dKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENv
bnN0YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5p
c1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRW
YWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRP
cGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcAppbmRleCA5MmMyOWRkNjMwYS4uY2VlYmUzOTA5NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3Vs
dCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRo
SUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBV
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hH
UFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5w
YXlsb2FkR1BSKCkpOwpAQCAtNDUsNyArNDUsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklU
TmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwog
ICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBl
IG9ic2VydmVkVHlwZXMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKICAgICBpZiAoYXJp
dGhQcm9maWxlKQotICAgICAgICBvYnNlcnZlZFR5cGVzID0gYXJpdGhQcm9maWxlLT5saHNPYnNl
cnZlZFR5cGUoKTsKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+YXJnT2Jz
ZXJ2ZWRUeXBlKCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghb2JzZXJ2ZWRUeXBlcy5pc0Vt
cHR5KCksICJXZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2VuZXJhdGUgYW55dGhpbmcgaWYgd2Ug
ZG8gbm90IGhhdmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYgKG9ic2VydmVkVHlwZXMuaXNPbmx5
Tm9uTnVtYmVyKCkpCkBAIC04Miw3ICs4Miw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRO
ZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAg
ICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0K
IAotYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVu
ZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25z
dCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxp
bmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogI2VuZGlmCiAgICAgLy8gVGhl
IGZsYWdzIG9mIEFyaXRoTmVnYXRlIGFyZSBiYXNpYyBpbiBERkcuCiAgICAgLy8gV2Ugb25seSBu
ZWVkIHRvIGtub3cgaWYgd2UgZXZlciBwcm9kdWNlZCBhIG51bWJlci4KLSAgICBpZiAoc2hvdWxk
RW1pdFByb2ZpbGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2
ZWRUeXBlKCkuc2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgp
KQorICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nICYmIGFyaXRoUHJvZmlsZSAmJiAhYXJpdGhQ
cm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSAmJiAhYXJpdGhQcm9maWxlLT5k
aWRPYnNlcnZlRG91YmxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFNldERvdWJsZShq
aXQpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TmVnR2VuZXJhdG9yLmgKaW5kZXggOGEwYzJkNTE3ZDYuLjc4N2I3MDc2ODI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKQEAgLTQzLDggKzQzLDggQEAg
cHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgIHsgfQogCi0g
ICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3Qg
QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlv
blN0YXRlJiwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3Qs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IFVuYXJ5QXJp
dGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogcHJpdmF0ZToKICAgICBK
U1ZhbHVlUmVncyBtX3Jlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDljNjc2ZjE1MDQ2Li4yMjBmY2Q0ZWQ5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNjQzLDcgKzI2NDMsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQogfQogCi1B
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVkQWRkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9wMiwgQXJpdGhQcm9maWxlJiBhcml0
aFByb2ZpbGUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVkQWRkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9wMiwgQmluYXJ5
QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAgYXJpdGhQcm9maWxlLm9ic2VydmVM
SFNBbmRSSFMob3AxLCBvcDIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGQoZ2xvYmFsT2Jq
ZWN0LCBvcDEsIG9wMik7CkBAIC0yNjU5LDcgKzI2NTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGQoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmls
ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUp
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwpAQCAtMjY3Nyw3ICsyNjc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGcK
ICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBKU1Zh
bHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAotICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VS
VChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEs
IG9wMik7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZUFkZFBy
b2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTI2OTksNyArMjY5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRo
UHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMt
PmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocHJvZmlsZWRBZGQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSwgKmFyaXRoUHJvZmlsZSkp
OwogfQpAQCAtMjcxNCw3ICsyNzE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBK
U1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAogICAgIGF1dG8gbm9u
T3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGROb09wdGltaXplOwotICAgIGlmIChB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBp
ZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxl
KCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAg
ICAgYWRkSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9w
dGltaXplVmFyaWFudCk7CiAKQEAgLTI3NDcsNyArMjc0Nyw3IEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIHVucHJvZmlsZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTXVsKGdsb2JhbE9iamVjdCwgb3Ax
LCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmls
ZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2Zp
bGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FMV0FZU19JTkxJ
TkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2Vy
dmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTI3ODgs
NyArMjc4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBu
b25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemU7Ci0gICAgaWYg
KEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpKQorICAg
IGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2Zp
bGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBtdWxJ
Qy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVW
YXJpYW50KTsKIApAQCAtMjc5OSw3ICsyNzk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoK
ICAgICByZXR1cm4gdW5wcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29k
ZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
TXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVs
UHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI4MTUsNyAr
MjgxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQ
cm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChh
cml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAg
YXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRp
bWl6ZTsKQEAgLTI4MzQsNyArMjgzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAot
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwor
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmls
ZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBwcm9maWxlZE11bChn
bG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQpA
QCAtMjg2MCw3ICsyODYwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpAQCAtMjg2OSw3ICsyODY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWwKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wZXJhbmQpOwotICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAg
ICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7CiAKICAgICBKU1ZhbHVlIHByaW1W
YWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4OTcsOSArMjg5Nyw5IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZSk7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxp
bmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCk7
CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTI5MzEsOCArMjkzMSw4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpKQotICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVM
SFMob3BlcmFuZCk7CisgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBu
ZWdJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUFyZyhv
cGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMp
CkBAIC0yOTU4LDcgKzI5NTgsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSB1bnByb2ZpbGVkU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N1YihnbG9iYWxPYmplY3QsIG9wMSwgb3AyKSk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wg
c2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2
ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKQEAgLTI5ODIsNyArMjk4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jCiAgICAgcmV0dXJuIHVucHJvZmlsZWRTdWIoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBl
bmNvZGVkT3AyKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogCkBAIC0zMDAw
LDcgKzMwMDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
U3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8g
bm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplOwotICAgIGlm
IChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKSkKKyAg
ICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9m
aWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgc3Vi
SUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXpl
VmFyaWFudCk7CiAKQEAgLTMwMjYsNyArMzAyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBn
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRo
UHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTMwNDUsNyArMzA0NSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
c3ViSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwog
ICAgIHJldHVybiBwcm9maWxlZFN1Yih2bSwgZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNv
ZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKaW5kZXggMzdlODM2MTVkNDcuLjU5NWFlYzQ3Y2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzgsNiArMzgsOCBAQCB0eXBlZGVm
IGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAgICAgCiBjbGFzcyBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOworY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFz
cyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCdXR0ZXJmbHk7CiBjbGFzcyBDYWxsRnJhbWU7
CiBjbGFzcyBDYWxsTGlua0luZm87CkBAIC02NCw3ICs2Niw2IEBAIGNsYXNzIFdhdGNocG9pbnRT
ZXQ7CiBzdHJ1Y3QgQnlWYWxJbmZvOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIHN0cnVjdCBJ
bnN0cnVjdGlvbjsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiAKIGV4dGVybiAiQyIgewogCkBAIC03
Nyw3ICs3OCw3IEBAIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogICAgIEE6IEpTQXJyYXkqCiAg
ICAgQWFwOiBBcnJheUFsbG9jYXRpb25Qcm9maWxlKgogICAgIEFwOiBBcnJheVByb2ZpbGUqCi0g
ICAgQXJwOiBBcml0aFByb2ZpbGUqCisgICAgQXJwOiBCaW5hcnlBcml0aFByb2ZpbGUqCiAgICAg
QjogQnV0dGVyZmx5KgogICAgIEJ5OiBCeVZhbEluZm8qCiAgICAgQzogSlNDZWxsKgpAQCAtMjgy
LDcgKzI4Myw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0lmRXhjZXB0
aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKFZNCiBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkSGFzSW5zdGFuY2UpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFy
eUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRk
SUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRk
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdURl9JTlRFUk5BTDsKQEAgLTI5Miwx
MyArMjkzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11
bElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQ
cm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJp
bmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBvcGVyYW5kKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIEFy
aXRoUHJvZmlsZSopOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwg
VW5hcnlBcml0aFByb2ZpbGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgSklUTmVnSUMqKTsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBC
aW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVTdWJOb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCmluZGV4IDc5NWMyNzU4NGMwLi43
YjFhOGI4MTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJh
dG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElD
SW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJz
JiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2Vu
ZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3Rh
dGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdl
IGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9i
c2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtNzgsNyArNzgsNyBAQCBKSVRNYXRoSUNJbmxp
bmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGpp
dCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVs
bFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEND
YWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUU3ViR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhK
dW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hv
dWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRH
UFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRHUFIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAppbmRleCA1NjFm
NjMzNGFlMy4uMzQ5MWE4M2ZlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3ViR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dWJHZW5lcmF0b3IuaApAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zY3Jh
dGNoRlBSKHNjcmF0Y2hGUFIpCiAgICAgeyB9CiAKLSAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29u
c3QgQXJpdGhQcm9maWxlKik7Ci0gICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3Vs
ZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5hcnlBcml0
aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxk
RW1pdFByb2ZpbGluZyk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0xlZnRPcGVyYW5kVmFsaWRDb25z
dGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBp
c1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQpIHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGJkYTMw
OGM4NGQyLi5jMDM0MWM5NTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKQEAgLTEzNSwzNiArMTM1LDQ5IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMoVk0mIHZtKQogI2VuZGlmCiAKICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAg
YXJpdGhQcm9maWxlLmFyZ1Nhd0ludDMyKCk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUu
Yml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEJpdHMoKSk7CisgICAgICAg
IEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAg
ICAgICBhcml0aFByb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckJpdHMoKSk7
CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVt
YmVyKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRo
UHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CiAgICAgICAgIGFy
aXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkuYml0cygpKTsKLSAg
ICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCku
bGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQo
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLnJoc09ic2VydmVkVHlwZSgpLmlz
T25seUludDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5h
cnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKICAgICB9
CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBCaW5h
cnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3
TnVtYmVyKCk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5
TnVtYmVySW50KCkuYml0cygpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6
Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVy
KCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlO
dW1iZXJJbnQoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51
bWJlckludEJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRU
eXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09i
c2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdOdW1iZXIoKTsKICAgICAgICAgYXJp
dGhQcm9maWxlLnJoc1Nhd051bWJlcigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkuYml0cygp
KTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVt
YmVyTnVtYmVyKCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwotICAgICAgICBT
VEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5y
aHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdW1iZXJC
aXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlz
T25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5
cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxl
IGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsK
ICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CiAgICAgICAgIGFyaXRoUHJvZmls
ZS5yaHNTYXdOdW1iZXIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0g
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmJpdHMoKSk7Ci0gICAgICAg
IFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmxo
c09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5yaHNPYnNlcnZlZFR5cGUoKS5p
c09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEJp
bmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkpOworICAgICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgICAg
ICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsK
ICAgICB9CiB9CiBJR05PUkVfV0FSTklOR1NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IGEyNWY5ODRhYmRh
Li5mNWQ5MTc3NDYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogCiBj
b25zdCBpbnQ2NF90KiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKIHsKLS8vIFRoaXMg
aXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldHNfZXh0cmFj
dG9yLnJiLCBhbmQgY29udGFpbnMgY29kZQorLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5
IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNv
ZGUKIC8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIg
aWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgogLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2Ug
aGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0
c0V4dHJhY3RvcgogLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdob3NlIG9mZnNldHMgd2UncmUgZXh0
cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAw
MTM1ODc3MjFiOS4uYjJhNzQyZTdiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI0MCwxMyArMjQwLDE1IEBAIGNv
bnN0IElzSW52YWxpZGF0ZWQgPSBjb25zdGV4cHIgSXNJbnZhbGlkYXRlZAogIyBTaGFkb3dDaGlj
a2VuIGRhdGEKIGNvbnN0IFNoYWRvd0NoaWNrZW5UYWlsTWFya2VyID0gY29uc3RleHByIFNoYWRv
d0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlclZhbHVlCiAKLSMgQXJpdGhQcm9maWxlIGRhdGEK
LWNvbnN0IEFyaXRoUHJvZmlsZUludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZl
ZFVuYXJ5SW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHBy
IChBcml0aFByb2ZpbGU6Om9ic2VydmVkVW5hcnlOdW1iZXIoKS5iaXRzKCkpCi1jb25zdCBBcml0
aFByb2ZpbGVJbnRJbnQgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJ
bnRJbnQoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJJbnQgPSBjb25zdGV4cHIg
KEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5iaXRzKCkpCi1jb25zdCBB
cml0aFByb2ZpbGVJbnROdW1iZXIgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRC
aW5hcnlJbnROdW1iZXIoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIg
PSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5i
aXRzKCkpCisjIFVuYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0IEFyaXRoUHJvZmlsZUludCA9
IGNvbnN0ZXhwciAoVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cygpKQorY29uc3Qg
QXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHByIChVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2
ZWROdW1iZXJCaXRzKCkpCisKKyMgQmluYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0IEFyaXRo
UHJvZmlsZUludEludCA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dEludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IGNvbnN0ZXhwciAoQmlu
YXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJv
ZmlsZUludE51bWJlciA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dE51bWJlckJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IGNvbnN0ZXhw
ciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKSkKIAogIyBQ
b2ludGVyIFRhZ3MKIGNvbnN0IEJ5dGVjb2RlUHRyVGFnID0gY29uc3RleHByIEJ5dGVjb2RlUHRy
VGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGJjMjMwZTU3Mzg2Li4yZTcyZWMyZDcxNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KQEAgLTk5Miw4ICs5OTIsOCBAQCBlbmQpCiAKIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCiAKLSAgICBtYWNybyBhcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgb3Jp
IHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6
Om1fYml0c1t0NV0KKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAg
b3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRo
UHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgIGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAt
MTAwMiwxMiArMTAwMiwxMiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdh
dGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcgogICAgIGJpbmVxIHQx
LCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CiAgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwg
Lm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDIKLSAgICBhcml0aFByb2ZpbGUoQXJpdGhQcm9maWxl
SW50KQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJu
IChJbnQzMlRhZywgdDIpCiAub3BOZWdhdGVTcmNOb3RJbnQ6CiAgICAgYmlhIHQxLCBMb3dlc3RU
YWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgYXJpdGhQcm9m
aWxlKEFyaXRoUHJvZmlsZU51bWJlcikKKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9m
aWxlTnVtYmVyKQogICAgIHJldHVybih0MSwgdDIpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDE5
LDcgKzEwMTksNyBAQCBlbmQpCiBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24p
CiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1h
Y3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0K
KyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQ
cm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAg
ICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZjJkZGJiMjc5ZWEuLjcyZjg0
ZWE4NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtOTY0LDIyICs5NjQsMjQgQEAgZW5kKQogCiAKIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUo
dHlwZSkKKyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIGVuZAorCiAgICAgZ2V0KG1f
b3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAg
ICAgbWV0YWRhdGEodDEsIHQyKQotICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0
aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCiAgICAgYnFiIHQzLCBudW1i
ZXJUYWcsIC5vcE5lZ2F0ZU5vdEludAogICAgIGJ0aXogdDMsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0
ZVNsb3cKICAgICBuZWdpIHQzCiAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICBvcmkgQXJpdGhQ
cm9maWxlSW50LCB0MgotICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRo
UHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIHVwZGF0ZUFyaXRoUHJvZmls
ZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuKHQzKQogLm9wTmVnYXRlTm90SW50OgogICAg
IGJ0cXogdDMsIG51bWJlclRhZywgLm9wTmVnYXRlU2xvdwogICAgIHhvcnEgMHg4MDAwMDAwMDAw
MDAwMDAwLCB0MwotICAgIG9yaSBBcml0aFByb2ZpbGVOdW1iZXIsIHQyCi0gICAgc3RvcmVpIHQy
LCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2Jp
dHNbdDFdCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKICAgICBy
ZXR1cm4odDMpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC05OTMsNyArOTk1LDcgQEAgbWFjcm8gYmlu
YXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRp
b25BbmRTdG9yZSwgZG8KICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQogCiAgICAgICAgIG1hY3Jv
IHByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisgICAgICAg
ICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSAr
IFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAgICAgIGdl
dChtX3JocywgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm0ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKaW5kZXgg
OTg4MWU0ZGJkMDMuLmM3MmY1MGU1ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXJtLnJiCkBAIC0yOTksNyArMjk5LDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAg
IGVuZAogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1lZEFkZHJl
c3Nlc0RvdWJsZShyZXN1bHQpCi0gICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1pc3BsYWNlZElt
bWVkaWF0ZXMocmVzdWx0LCBbInN0b3JlYiIsICJzdG9yZWkiLCAic3RvcmVwIiwgInN0b3JlcSJd
KQorICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKHJlc3VsdCwg
WyJzdG9yZWIiLCAic3RvcmVoIiwgInN0b3JlaSIsICJzdG9yZXAiLCAic3RvcmVxIl0pCiAgICAg
ICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMocmVzdWx0LCAwLi4weGZm
KQogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMocmVzdWx0KQog
ICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJSZWdpc3RlclJldXNlKHJlc3VsdCkKQEAgLTQxOCw3
ICs0MTgsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAgICAgIHdo
ZW4gImFuZGkiLCAiYW5kcCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJhbmRzIiwgImFu
ZCIsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICB3aGVuICJv
cmkiLCAib3JwIiwgIm9yaCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJzIiwgIm9y
ciIsIG9wZXJhbmRzKQogICAgICAgICB3aGVuICJvcmlzIgogICAgICAgICAgICAgZW1pdEFybUNv
bXBhY3QoIm9ycnMiLCAib3JycyIsIG9wZXJhbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hcm02NC5yYgppbmRleCA0Y2Q4ZjY2ZTMwMy4uYTU3ZTYzOGE1MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBAIC0zNzgsNyArMzc4LDcgQEAg
Y2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAgICAgICAg
IHdoZW4gImxvYWRiIiwgImxvYWRic2kiLCAibG9hZGJzcSIsICJzdG9yZWIiLCAvXmJiLywgL15i
dGIvLCAvXmNiLywgL150Yi8KICAgICAgICAgICAgICAgICBzaXplID0gMQotICAgICAgICAgICAg
d2hlbiAibG9hZGgiLCAibG9hZGhzaSIsICJsb2FkaHNxIgorICAgICAgICAgICAgd2hlbiAibG9h
ZGgiLCAibG9hZGhzaSIsICJsb2FkaHNxIiwgIm9yaCIsICJzdG9yZWgiCiAgICAgICAgICAgICAg
ICAgc2l6ZSA9IDIKICAgICAgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIsICJzdG9yZWki
LCAiYWRkaSIsICJhbmRpIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwKICAgICAgICAgICAg
ICAgICAibm90aSIsICJvcmkiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwgInhvcmki
LCAvXmJpLywgL15idGkvLApAQCAtNjMxLDYgKzYzMSw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAg
ICAgICAgICAgICBlbWl0QVJNNjRUQUMoIm9yciIsIG9wZXJhbmRzLCA6cHRyKQogICAgICAgICB3
aGVuICJvcnEiCiAgICAgICAgICAgICBlbWl0QVJNNjRUQUMoIm9yciIsIG9wZXJhbmRzLCA6cXVh
ZCkKKyAgICAgICAgd2hlbiAib3JoIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIiLCBv
cGVyYW5kcywgOndvcmQpICMgbm90IDpoYWxmIGJlY2F1c2UgMTYtYml0IHJlZ2lzdGVycyBkb24n
dCBleGlzdCBvbiBBUk0uCiAgICAgICAgIHdoZW4gInhvcmkiCiAgICAgICAgICAgICBlbWl0QVJN
NjRUQUMoImVvciIsIG9wZXJhbmRzLCA6d29yZCkKICAgICAgICAgd2hlbiAieG9ycCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKaW5kZXggYjcxNDllODJhY2IuLmE2
ODE2Y2JjYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9j
bG9vcC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgpA
QCAtNTg1LDYgKzU4NSw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBjbG9vcEVt
aXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQ2NCwgInwiKQogICAgICAgICB3aGVuICJvcnAiCiAg
ICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnRwdHIsICJ8IikKKyAg
ICAgICAgd2hlbiAib3JoIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRz
LCA6aW50MTYsICJ8IikKIAogICAgICAgICB3aGVuICJ4b3JpIgogICAgICAgICAgICAgY2xvb3BF
bWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50MzIsICJeIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgppbmRleCA3MTc4OGIxMDgzNy4uMTY3
Njc1NGEwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2lu
c3RydWN0aW9ucy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0
cnVjdGlvbnMucmIKQEAgLTQyLDYgKzQyLDcgQEAgTUFDUk9fSU5TVFJVQ1RJT05TID0KICAgICAg
Im5lZ3EiLAogICAgICAibm90aSIsCiAgICAgICJvcmkiLAorICAgICAib3JoIiwKICAgICAgInJz
aGlmdGkiLAogICAgICAidXJzaGlmdGkiLAogICAgICAicnNoaWZ0cCIsCkBAIC02MCw2ICs2MSw3
IEBAIE1BQ1JPX0lOU1RSVUNUSU9OUyA9CiAgICAgICJsb2FkaHNxIiwKICAgICAgInN0b3JlaSIs
CiAgICAgICJzdG9yZWIiLAorICAgICAic3RvcmVoIiwKICAgICAgImxvYWRkIiwKICAgICAgIm1v
dmVkIiwKICAgICAgInN0b3JlZCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9taXBzLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlw
cy5yYgppbmRleCA5ZWVkMjU0OTllYy4uMzc2ZDY5OWQ5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vbWlwcy5yYgpAQCAtNTI3LDcgKzUyNyw3IEBAIGRlZiBtaXBzTG93ZXJN
aXNwbGFjZWRJbW1lZGlhdGVzKGxpc3QpCiAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAg
ICB3aGVuIC9eKGFkZGl8c3ViaSkvCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLnJp
c2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QsIC0weDdmZmYuLjB4N2Zm
ZikKLSAgICAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIsICJvcmkiLCAib3JwIiwgInhvcmki
LCAieG9ycCIKKyAgICAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIsICJvcmkiLCAib3JwIiwg
Im9yaCIsICJ4b3JpIiwgInhvcnAiCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLnJp
c2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QsIDAuLjB4ZmZmZikKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKQEAgLTg2MCw3
ICs4NjAsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAgICAgIHdo
ZW4gImFuZGkiLCAiYW5kcCIKICAgICAgICAgICAgIGVtaXRNSVBTQ29tcGFjdCgiYW5kIiwgImFu
ZCIsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICB3aGVuICJv
cmkiLCAib3JwIiwgIm9yaCIKICAgICAgICAgICAgIGVtaXRNSVBTQ29tcGFjdCgib3IiLCAib3Jy
Iiwgb3BlcmFuZHMpCiAgICAgICAgIHdoZW4gIm9yaXMiCiAgICAgICAgICAgICBlbWl0TUlQU0Nv
bXBhY3QoIm9yIiwgIm9ycnMiLCBvcGVyYW5kcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9yaXNjLnJiCmluZGV4IDhiOGRlOGQxMjhhLi5lMGFhMjM2YjJkZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiCkBAIC00NjAsNyArNDYwLDcgQEAgZGVmIHJp
c2NMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhsaXN0KQogICAgICAgICAgICAgcG9zdEluc3RydWN0
aW9ucyA9IFtdCiAgICAgICAgICAgICBhbm5vdGF0aW9uID0gbm9kZS5hbm5vdGF0aW9uCiAgICAg
ICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCi0gICAgICAgICAgICB3aGVuICJhZGRpIiwgImFkZGlz
IiwgImFuZGkiLCAibHNoaWZ0aSIsICJtdWxpIiwgIm5lZ2kiLCAibm90aSIsICJvcmkiLCAib3Jp
cyIsCisgICAgICAgICAgICB3aGVuICJhZGRpIiwgImFkZGlzIiwgImFuZGkiLCAibHNoaWZ0aSIs
ICJtdWxpIiwgIm5lZ2kiLCAibm90aSIsICJvcmkiLCAib3JoIiwgIm9yaXMiLAogICAgICAgICAg
ICAgICAgICJyc2hpZnRpIiwgInVyc2hpZnRpIiwgInN1YmkiLCAic3ViaXMiLCAieG9yaSIsIC9e
YmkvLCAvXmJ0aS8sIC9eY2kvLCAvXnRpLwogICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3g4Ni5yYgppbmRleCAxNjZmNGJkYTEyNy4uZGZiNGY5YzhmMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKQEAgLTg4NSw2ICs4ODUsOCBAQCBjbGFzcyBJbnN0
cnVjdGlvbgogICAgICAgICAgICAgaGFuZGxlWDg2T3AoIm9yI3t4ODZTdWZmaXgoOnB0cil9Iiwg
OnB0cikKICAgICAgICAgd2hlbiAib3JxIgogICAgICAgICAgICAgaGFuZGxlWDg2T3AoIm9yI3t4
ODZTdWZmaXgoOnF1YWQpfSIsIDpxdWFkKQorICAgICAgICB3aGVuICJvcmgiCisgICAgICAgICAg
ICBoYW5kbGVYODZPcCgib3Ije3g4NlN1ZmZpeCg6aGFsZil9IiwgOmhhbGYpCiAgICAgICAgIHdo
ZW4gInJzaGlmdGkiCiAgICAgICAgICAgICBoYW5kbGVYODZTaGlmdCgic2FyI3t4ODZTdWZmaXgo
OmludCl9IiwgOmludCkKICAgICAgICAgd2hlbiAicnNoaWZ0cCIKQEAgLTk3MSw2ICs5NzMsOCBA
QCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAgICAgIHdoZW4gInN0b3Jl
YiIKICAgICAgICAgICAgICRhc20ucHV0cyAibW92I3t4ODZTdWZmaXgoOmJ5dGUpfSAje3g4Nk9w
ZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgICAgICB3aGVuICJzdG9yZWgiCisgICAgICAgICAg
ICAkYXNtLnB1dHMgIm1vdiN7eDg2U3VmZml4KDpoYWxmKX0gI3t4ODZPcGVyYW5kcyg6aGFsZiwg
OmhhbGYpfSIKICAgICAgICAgd2hlbiAibG9hZGQiCiAgICAgICAgICAgICAkYXNtLnB1dHMgIm1v
dnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgogICAgICAgICB3aGVuICJtb3Zl
ZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKaW5kZXggOWIzZDBk
NzRjOGQuLjU2MjJmMjg5Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1Jlc3VsdFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3Vs
dFR5cGUuaApAQCAtNDgsNiArNDgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50IG51bUJpdHNOZWVkZWQgPSA3OwogICAgICAgICBzdGF0aWNfYXNzZXJ0
KChUeXBlQml0cyAmICgoMSA8PCBudW1CaXRzTmVlZGVkKSAtIDEpKSA9PSBUeXBlQml0cywgIlRo
aXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcy4iKTsKIAorICAgICAgICBjb25zdGV4cHIg
ZXhwbGljaXQgUmVzdWx0VHlwZSgpCisgICAgICAgICAgICA6IFJlc3VsdFR5cGUodW5rbm93blR5
cGUoKSkKKyAgICAgICAgeworICAgICAgICB9CiAgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBS
ZXN1bHRUeXBlKFR5cGUgdHlwZSkKICAgICAgICAgICAgIDogbV9iaXRzKHR5cGUpCiAgICAgICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCmluZGV4IDg2NmQyYTljMmUzLi43MmUwNDA5MTU0YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00NzYsOCArNDc2LDgg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3N0cmluZykKICNpZiBFTkFCTEUoSklUKQog
c3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpN
ZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmFsdWUgcmVzdWx0LCBKU1ZhbHVlIG9wZXJhbmQpCiB7Ci0g
ICAgQXJpdGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEubV9hcml0aFByb2ZpbGU7Ci0gICAg
cHJvZmlsZS5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9m
aWxlID0gbWV0YWRhdGEubV9hcml0aFByb2ZpbGU7CisgICAgcHJvZmlsZS5vYnNlcnZlQXJnKG9w
ZXJhbmQpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOdW1iZXIoKSB8fCByZXN1bHQuaXNCaWdJbnQo
KSk7CiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmlz
SW50MzIoKSkgewpAQCAtNTM0LDcgKzUzNCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9u
ZWdhdGUpCiAjaWYgRU5BQkxFKERGR19KSVQpCiBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2Zp
bGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IGNvbnN0IEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSByZXN1bHQsIEpTVmFsdWUgbGVmdCwgSlNW
YWx1ZSByaWdodCkKIHsKLSAgICBBcml0aFByb2ZpbGUmIHByb2ZpbGUgPSAqY29kZUJsb2NrLT5h
cml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlID0g
KmNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMocGMpOwogCiAgICAgaWYgKHJlc3Vs
dC5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICghcmVzdWx0LmlzSW50MzIoKSkgewpAQCAtNTk1
LDcgKzU5NSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZGQpCiAgICAgSlNWYWx1ZSB2
MSA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSB2MiA9IEdF
VF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICBBcml0aFByb2ZpbGUmIGFyaXRo
UHJvZmlsZSA9ICpjb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKHBjKTsKKyAgICBCaW5hcnlB
cml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpjb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmls
ZUZvclBDKHBjKTsKICAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZUxIU0FuZFJIUyh2MSwgdjIpOwog
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FkZChnbG9iYWxPYmplY3QsIHYxLCB2Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382349</attachid>
            <date>2019-10-30 14:07:38 -0700</date>
            <delta_ts>2019-10-30 14:10:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>124092</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZiZWQyNDIwYzVmLi4xNmYyYzk4MTM3MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY4IEBACisyMDE5LTEwLTE0ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGltZSBvbmx5IHVzZWQgZm9y
IGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQgYmVpbmcgdXNlZCBmb3Ig
bmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1c2VkIGZvciBpbmMgYW5k
IGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBhdGNoIEkgbWFrZSBhIHNl
cGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3IgYSBzaW5nbGUgYXJndW1l
bnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisKKyAgICAgICAgQWZ0ZXIg
ZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXplZCB0aGF0IHRoZSBSZXN1
bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQcm9maWxlIGFyZSBub3Qg
bmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFscmVhZHkgaW4gdGhlIGJ5
dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3ZpbmcgdGhlbSBhbGxvd2Vk
IHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBmaXQgaW4gMTYgYml0cyAo
OSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRoZSB0d28ga2luZHMgc2Vw
YXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRlcGVuZGVudGx5IGluIHRo
ZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlcXVpcmVkIGFkZGluZyB0aGUgIm9yaCIg
aW5zdHJ1Y3Rpb24gdG8gdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCB0byBzZXQgYml0cyBpbiB0aGUg
QXJpdGhQcm9maWxlLgorICAgICAgICBUaGlzIGluIHR1cm4gbW90aXZhdGVkIHRoZSBhZGRpdGlv
biBvZiAic3RvcmVoIiwgYXMgb24gUklTQyBwbGF0Zm9ybXMgIm9yaCIgb24gYSBtZW1vcnkgbG9j
YXRpb24gaXMgYWN0dWFsbHkgbG9hZGggLT4gb3JoIC0+IHN0b3JlaC4KKworICAgICAgICAqIGJ5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51
bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6
c2hvdWxkRW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50IGNvbnN0KToKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbkludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlRG91YmxlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOb25OdW1lcmlj
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSW50MzJPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDUyT3Zl
cmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkTm9u
TmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRO
ZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5v
bk51bWVyaWMpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3cp
OgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSW50NTJPdmVyZmxvdyk6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6YWRkcmVzc09mQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6QXJp
dGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpoYXNCaXRzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRCaXQpOgorICAgICAgICAoSlNDOjpVbmFy
eUFyaXRoUHJvZmlsZTo6VW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmFyeUFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlOjphcmdPYnNlcnZlZFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJv
ZmlsZTo6c2V0QXJnT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2Zp
bGU6OmFyZ1Nhd0ludDMyKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nh
d051bWJlcik6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdOb25OdW1i
ZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZUFyZyk6CisgICAg
ICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpCaW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cyk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMpOgorICAg
ICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cyk6
CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6c2V0TGhzT2JzZXJ2ZWRUeXBlKToK
KyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpzZXRSaHNPYnNlcnZlZFR5cGUpOgor
ICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFMpOgorICAgICAgICAo
SlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFNBbmRSSFMpOgorICAgICAgICAoSlND
OjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2ZWRUeXBlRW1wdHkpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVEFkZElDKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklU
U3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElD
KToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bWFrZURpdlNhZmUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJ
Qyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlN
YXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJp
dGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRB
ZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJ
Q0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKiBqaXQvSklURGl2R2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJ
VERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZSk6CisgICAgICAgICog
aml0L0pJVE1hdGhJQy5oOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OkpJVE1hdGhJQyk6Cisg
ICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpK
SVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OmlzQmluYXJ5UHJv
ZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6SklUQmluYXJ5TWF0aElDOjpKSVRCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjppc1VuYXJ5UHJvZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6
SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAgICAgICAgKiBqaXQvSklUTXVsR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVROZWdHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJ
VFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBsbGludC9M
TEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBl
OjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAg
IChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTAtMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHRoZSBSZW1vdGUgUGxheWJhY2sgQVBJLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRl
eCA5OTk5MzNiOGMwZS4uN2Y0NmY3M2ZjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCkBAIC0zMiw3ICszMiw4IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVS
ZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01v
ZGUgbW9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBK
U1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCFzaG91
bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3Vs
ZEVtaXRTZXRCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNDEgKzU5LDUxIEBAIHZv
aWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNW
YWx1ZVJlZ3MgcmVncywgVGFnUmVnCiAgICAgZG9uZS5saW5rKCZqaXQpOwogfQogCi1ib29sIEFy
aXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRF
bWl0U2V0RG91YmxlKCkgY29uc3QKIHsKLSAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxl
OjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJpdGhQcm9m
aWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlOworICAg
IHVpbnQzMl90IG1hc2sgPSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlOwogICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0g
bWFzazsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJz
JiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBj
b25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0RG91YmxlKCkpCi0gICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50MzJPdmVyZmxvdyB8
IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJs
ZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9E
b3VibGUgfCBOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YWRkcmVzc09mQml0cygpKSk7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0
Tm9uTnVtZXJpYygpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29s
IEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNv
bnN0CiB7CiAgICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsKICAg
ICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxl
OjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxk
VHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdAogewogICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6OkJpZ0ludDsK
ICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJpdGhQcm9m
aWxlOjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46
OmVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChz
aG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoTm9uTnVtZXJpYyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZp
ZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQo
KSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9m
aWxlOjpCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRz
KCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmlnSW50
KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CiB9CisK
Ky8vIEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBhYm92ZSBm
b3IgVW5hcnlBcml0aFByb2ZpbGUvQmluYXJ5QXJpdGhQcm9maWxlCisvLyBJZiBjaGFuZ2luZyB0
aGUgc2l6ZSBvZiBlaXRoZXIsIGFkZCB0aGUgY29ycmVzcG9uZGluZyBsaW5lcyBoZXJlLgordGVt
cGxhdGUgY2xhc3MgQXJpdGhQcm9maWxlPHVpbnQxNl90PjsKICNlbmRpZiAvLyBFTkFCTEUoSklU
KQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKQEAgLTEwMSw3ICsxMTIsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0
aFByb2ZpbGU8VD4mIHByb2ZpbGUpCiB7CiAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yID0gIiI7
CiAKQEAgLTEzNSwxOSArMTQ3LDMwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCiAgICAgICAgICAgICBzZXBhcmF0b3Ig
PSAifCI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0
UGF0aCgpKQotICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiVG9vayBzcGVjaWFsIGZhc3Qg
cGF0aC4iKTsKICAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAg
IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFBy
b2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisgICAgb3V0LnByaW50KCIgQXJnIE9ic2VydmVkVHlw
ZTo8Iik7CisgICAgb3V0LnByaW50KHByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkpOworICAgIG91
dC5wcmludCgiPiIpOworfQorCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAgIHByaW50SW50ZXJuYWwo
b3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPj4ocHJv
ZmlsZSkpOworCisgICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0UGF0aCgpKQorICAgICAg
ICBvdXQucHJpbnQoIiBUb29rIHNwZWNpYWwgZmFzdCBwYXRoLiIpOwogCiAgICAgb3V0LnByaW50
KCIgTEhTIE9ic2VydmVkVHlwZTo8Iik7CiAgICAgb3V0LnByaW50KHByb2ZpbGUubGhzT2JzZXJ2
ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgiPiBSSFMgT2JzZXJ2ZWRUeXBlOjwiKTsKICAgICBv
dXQucHJpbnQocHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKSk7CiAgICAgb3V0LnByaW50KCI+Iik7
Ci0KLSAgICBvdXQucHJpbnQoIiBMSFMgUmVzdWx0VHlwZTo8IiwgUmF3UG9pbnRlcihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocHJvZmlsZS5saHNSZXN1bHRUeXBl
KCkuYml0cygpKSkpKTsKLSAgICBvdXQucHJpbnQoIj4gUkhTIFJlc3VsdFR5cGU6PCIsIFJhd1Bv
aW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2ZpbGUu
cmhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7Ci0gICAgb3V0LnByaW50KCI+Iik7CiB9CiAKIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBKU0M6Ok9ic2VydmVkVHlw
ZSYgb2JzZXJ2ZWRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5oCmluZGV4IGZjYzRlMjgxOGJlLi5jYWQ5OWY0OGJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNjYsMTE5ICs2NiwyMTcg
QEAgcHJpdmF0ZToKICAgICB1aW50OF90IG1fYml0cyB7IDAgfTsKIH07CiAKLXN0cnVjdCBBcml0
aFByb2ZpbGUgewotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bWJl
ck9mRmxhZ0JpdHMgPSA2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzUmVzdWx0
VHlwZVNoaWZ0ID0gbnVtYmVyT2ZGbGFnQml0czsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IGxoc1Jlc3VsdFR5cGVTaGlmdCA9IHJoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6
Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNPYnNlcnZl
ZFR5cGVTaGlmdCA9IGxoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6Om51bUJpdHNOZWVk
ZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNPYnNlcnZlZFR5cGVTaGlmdCA9
IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkOwotCi0g
ICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPT0gMywgIldlIG1h
a2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQgdGhhdCBoZXJlLiIpOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KH4oKDEgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKHJoc09ic2Vy
dmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1h
c2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ofigoMSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkg
fCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyAxKSkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRU
eXBlU2hpZnQgKyAyKSkpKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmVzdWx0
VHlwZU1hc2sgPSAoMSA8PCBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQml0ZmllbGRUeXBl
PgorY2xhc3MgQXJpdGhQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBlbnVtIE9ic2VydmVkUmVzdWx0
cyB7CisgICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8IDAsCisgICAgICAgIE5lZ1plcm9E
b3VibGUgICAgPSAxIDw8IDEsCisgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCisg
ICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCisgICAgICAgIEludDUyT3ZlcmZsb3cg
ICAgPSAxIDw8IDQsCisgICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisgICAgfTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVk
ZWQgPSA2OwogCi0gICAgZW51bSBjbGFzcyBDb25zdGFudFRhZyB7IENvbnN0YW50IH07CisgICAg
Ym9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1pl
cm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KKyAgICBi
b29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9E
b3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9CisgICAg
Ym9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVn
WmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyBy
ZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgp
IGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUlu
dDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Cisg
ICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMo
SW50NTJPdmVyZmxvdyk7IH0KIAotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3Qgc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNl
cnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVk
VHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSA8PSAoc2l6ZW9mKHVpbnQz
Ml90KSAqIDgpIC0gMSwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFz
ayksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhl
c2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZh
c3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hv
dWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0aEJpdCBzaG91bGQgYmUgYSBoaWdo
ZXIgYml0LiIpOworICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRC
aXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJs
ZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51
bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJ
bnQoKSB7IHNldEJpdChCaWdJbnQpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZs
b3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1
Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KIAotICAgIEFyaXRoUHJvZmls
ZShSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNv
bnN0YW50LCBhcmcpCisgICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUpCiAgICAg
ewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSBhcmcuYml0cygpKTsK
LSAgICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFT
U0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOworICAgICAgICBpZiAodmFsdWUuaXNJ
bnQzMigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIo
KSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93
IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGU7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKKyAg
ICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgbV9iaXRzIHw9IE5vbk51bWVyaWM7CiAgICAgfQogCi0gICAgQXJpdGhQcm9m
aWxlKFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBBcml0aFByb2Zp
bGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBsaHMsIHJocykKKyAgICBjb25zdCB2b2lkKiBhZGRy
ZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4gJm1fYml0czsgfQorCisjaWYgRU5BQkxFKEpJVCkK
KyAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKKyAgICAvLyBkb3VibGUuIFNldHMg
Tm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCisgICAgdm9pZCBlbWl0T2JzZXJ2
ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhh
dmVUYWdSZWdpc3RlcnMpOworCisgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3Zl
cmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCisgICAgYm9vbCBzaG91
bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0RG91YmxlKENDYWxsSGVs
cGVycyYpIGNvbnN0OworCisgICAgLy8gU2V0cyBOb25OdW1iZXIuCisgICAgdm9pZCBlbWl0U2V0
Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRO
b25OdW1lcmljKCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIEJpZ0ludAorICAgIHZvaWQgZW1pdFNl
dEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdDsKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisgICAgY29uc3RleHByIHVpbnQz
Ml90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworcHJvdGVjdGVkOgorICAgIEFy
aXRoUHJvZmlsZSgpCiAgICAgewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMo
KSA9PSBsaHMuYml0cygpICYmIHJoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gcmhzLmJpdHMoKSk7
Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBB
U1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKICAgICB9CiAKLSAgICBBcml0aFBy
b2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQotICAgICAgICA6IEFyaXRoUHJvZmlsZSh0eXBlcy5m
aXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKLSAgICB7IH0KKyAgICBib29sIGhhc0JpdHMoaW50IG1h
c2spIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIG1hc2s7IH0KKyAgICB2b2lkIHNldEJpdChpbnQg
bWFzaykgeyBtX2JpdHMgfD0gbWFzazsgfQorCisgICAgQml0ZmllbGRUeXBlIG1fYml0cyB7IDAg
fTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVy
YXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRh
dGlvbiB0byBpdC4KK307CisKKy8qIFRoaXMgY2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dpbmcgY29t
cG9uZW50cyBpbiAxNiBiaXRzOgorICogLSBPYnNlcnZlZFJlc3VsdHMKKyAqIC0gT2JzZXJ2ZWRU
eXBlIGZvciB0aGUgYXJndW1lbnQKKyAqLwordXNpbmcgVW5hcnlBcml0aFByb2ZpbGVCYXNlID0g
dWludDE2X3Q7CitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8
VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBh
cmdPYnNlcnZlZFR5cGVTaGlmdCA9IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVkZWQ7CiAKLSAg
ICBBcml0aFByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljX2Fzc2VydChhcmdPYnNlcnZl
ZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8PSBzaXplb2YoVW5hcnlB
cml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdGhlIHR5cGUgb2YgdGhlIHVu
ZGVybHlpbmcgYml0ZmllbGQuIik7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmls
ZSBmcm9tSW50KHVpbnQzMl90IGJpdHMpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8VW5h
cnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSk7CisK
KyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZFR5cGVN
YXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7CisKK3B1YmxpYzoK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPFVuYXJ5QXJp
dGhQcm9maWxlQmFzZT4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEFyaXRoUHJvZmlsZSB7IENv
bnN0YW50VGFnOjpDb25zdGFudCwgYml0cyB9OworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRU
eXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1w
dHkoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2
ZWRVbmFyeUludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ug
b2JzZXJ2ZWRJbnRCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUg
b2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNv
bnN0ZXhwciB1aW50MzJfdCBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2
ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDgwMDAwMCwgIiIp
OwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5
QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29u
c3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZFVuYXJ5TnVtYmVyKCkKKyAgICBzdGF0aWMgY29u
c3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJlckJpdHMoKQogICAgIHsK
ICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVk
VHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4MTAwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJv
bUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gb2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAg
ICByZXR1cm4gYml0czsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGFyZ09i
c2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGFyZ09i
c2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CisgICAgdm9pZCBzZXRBcmdP
YnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKKyAgICAgICAgYml0cyAmPSBjbGVhckFyZ09ic2Vy
dmVkVHlwZUJpdE1hc2s7CisgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQ7CisgICAgICAgIG1fYml0cyA9IGJpdHM7CisgICAgICAgIEFTU0VSVChhcmdP
YnNlcnZlZFR5cGUoKSA9PSB0eXBlKTsKKyAgICB9CisKKyAgICB2b2lkIGFyZ1Nhd0ludDMyKCkg
eyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9Cisg
ICAgdm9pZCBhcmdTYXdOdW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5
cGUoKS53aXRoTnVtYmVyKCkpOyB9CisgICAgdm9pZCBhcmdTYXdOb25OdW1iZXIoKSB7IHNldEFy
Z09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CisKKyAg
ICB2b2lkIG9ic2VydmVBcmcoSlNWYWx1ZSBhcmcpCisgICAgeworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIGlmIChhcmcuaXNOdW1iZXIoKSkg
eworICAgICAgICAgICAgaWYgKGFyZy5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgbmV3UHJv
ZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5l
d1Byb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbmV3
UHJvZmlsZS5hcmdTYXdOb25OdW1iZXIoKTsKKworICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKKyAgICB9CisKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKKyAgICB9CisKKyAg
ICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9OworCisvKiBUaGlz
IGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMgaW4gMTYgYml0czoKKyAqIC0g
T2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgcmlnaHQtaGFuZC1zaWRlCisg
KiAtIE9ic2VydmVkVHlwZSBmb3IgbGVmdC1oYW5kLXNpZGUKKyAqIC0gYSBiaXQgdXNlZCBieSBk
aXZpc2lvbiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgc3BlY2lhbCBmYXN0IHBhdGggd2FzIHRha2Vu
CisgKi8KK3VzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50MTZfdDsKK2NsYXNzIEJp
bmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxl
QmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsKKworICAgIHN0YXRpY19hc3NlcnQoT2JzZXJ2ZWRU
eXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJXZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9uIGFib3V0
IHRoYXQgaGVyZS4iKTsKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQ
cm9maWxlQmFzZT4ofigwYjExMSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCkpOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGxo
c09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVtQml0
c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0
aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNo
aWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChs
aHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCArIDEpIDw9
IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdWlu
dDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVh
ckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2Vj
dC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2Jz
ZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4iKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCA+IH5jbGVhckxoc09ic2VydmVkVHlwZUJp
dE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBh
dGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKKworICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+ICgpCisg
ICAgeworICAgICAgICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgQVNTRVJUKHJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQotICAgIHN0YXRp
YyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5SW50SW50KCkKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZEludEludEJpdHMo
KQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsg
T2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90
IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwg
KG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4OTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9t
SW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNl
cnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7CisgICAgICAgIHJldHVy
biBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZl
ZEJpbmFyeU51bWJlckludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2Zp
bGVCYXNlIG9ic2VydmVkTnVtYmVySW50Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIg
T2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigp
IH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2Vy
dmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRz
ID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2Jz
ZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0
aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50
KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0g
KG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4g
Yml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRC
aW5hcnlJbnROdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZEludE51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9i
c2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9
OwogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZl
ZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9
IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2
ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChiaXRzID09IDB4YTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJp
dHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9i
c2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51
bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0
czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5h
cnlOdW1iZXJOdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHBy
IE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIo
KSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5i
aXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8
PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAw
eDEyMDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNv
bnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0
cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwg
cmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9CiAKLSAg
ICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7Ci0gICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8
IDAsCi0gICAgICAgIE5lZ1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCi0gICAgICAgIE5vbk51bWVy
aWMgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCi0g
ICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAg
ICAgPSAxIDw8IDUsCi0gICAgfTsKLQotICAgIFJlc3VsdFR5cGUgbGhzUmVzdWx0VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUoKG1fYml0cyA+PiBsaHNSZXN1bHRUeXBlU2hpZnQpICYg
cmVzdWx0VHlwZU1hc2spOyB9Ci0gICAgUmVzdWx0VHlwZSByaHNSZXN1bHRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gUmVzdWx0VHlwZSgobV9iaXRzID4+IHJoc1Jlc3VsdFR5cGVTaGlmdCkgJiByZXN1
bHRUeXBlTWFzayk7IH0KLQogICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgbGhzT2JzZXJ2ZWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gT2JzZXJ2ZWRUeXBlKChtX2JpdHMgPj4gbGhzT2JzZXJ2ZWRU
eXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBlTWFzayk7IH0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRU
eXBlIHJoc09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRz
ID4+IHJoc09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgdm9p
ZCBzZXRMaHNPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCiAgICAgewotICAgICAgICB1
aW50MzJfdCBiaXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJp
dHMgPSBtX2JpdHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNr
OwogICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0Owog
ICAgICAgICBtX2JpdHMgPSBiaXRzOwpAQCAtMTg3LDcgKzI4NSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0UmhzT2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsgCi0gICAg
ICAgIHVpbnQzMl90IGJpdHMgPSBtX2JpdHM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2UgYml0cyA9IG1fYml0czsKICAgICAgICAgYml0cyAmPSBjbGVhclJoc09ic2VydmVkVHlwZUJp
dE1hc2s7CiAgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQ7CiAgICAgICAgIG1fYml0cyA9IGJpdHM7CkBAIC0xOTYsMzkgKzI5NCw2IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgdG9va1NwZWNpYWxGYXN0UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IHNwZWNpYWxGYXN0UGF0aEJpdDsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBj
b25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KLSAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQot
ICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNC
aXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRp
ZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsg
fQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmln
SW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIHZv
aWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJs
ZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1pl
cm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChO
b25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJ
bnQpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQz
Mk92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRC
aXQoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBj
b25zdCB7IHJldHVybiAmbV9iaXRzOyB9Ci0KLSAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1
ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBt
X2JpdHMgfD0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9
IEJpZ0ludDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2JpdHMg
fD0gTm9uTnVtZXJpYzsKLSAgICB9Ci0KICAgICB2b2lkIGxoc1Nhd0ludDMyKCkgeyBzZXRMaHNP
YnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9CiAgICAgdm9pZCBs
aHNTYXdOdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRo
TnVtYmVyKCkpOyB9CiAgICAgdm9pZCBsaHNTYXdOb25OdW1iZXIoKSB7IHNldExoc09ic2VydmVk
VHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CkBAIC0yMzgsNyArMzAz
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBvYnNlcnZlTEhTKEpTVmFsdWUgbGhzKQogICAgIHsK
LSAgICAgICAgQXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKKyAgICAgICAgQmluYXJ5
QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKICAgICAgICAgaWYgKGxocy5pc051bWJl
cigpKSB7CiAgICAgICAgICAgICBpZiAobGhzLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBu
ZXdQcm9maWxlLmxoc1Nhd0ludDMyKCk7CkBAIC0yNTQsNyArMzE5LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgb2JzZXJ2ZUxIUyhsaHMpOwogCi0gICAgICAgIEFyaXRoUHJvZmlsZSBuZXdQ
cm9maWxlID0gKnRoaXM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0g
KnRoaXM7CiAgICAgICAgIGlmIChyaHMuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgaWYgKHJo
cy5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5yaHNTYXdJbnQzMigpOwpA
QCAtMjY2LDQ3ICszMzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxl
LmJpdHMoKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoSklUKSAgICAKLSAgICAvLyBTZXRzIChJbnQz
Mk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91
YmxlKSBpZiBpdCBzZWVzIGEKLSAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBz
ZWVzIGEgbm9uLW51bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBl
cnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwot
ICAgIAotICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVn
WmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgotICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJs
ZSgpIGNvbnN0OwotICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsK
LSAgICAKLSAgICAvLyBTZXRzIE5vbk51bWJlci4KLSAgICB2b2lkIGVtaXRTZXROb25OdW1lcmlj
KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMo
KSBjb25zdDsKLQotICAgIC8vIFNldHMgQmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KEND
YWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0
OwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLSAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cygp
IGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0ZXhwciBleHBs
aWNpdCBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWcsIHVpbnQzMl90IGJpdHMpCi0gICAgICAgIDog
bV9iaXRzKGJpdHMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUo
Q29uc3RhbnRUYWcsIFJlc3VsdFR5cGUgYXJnKQotICAgICAgICA6IG1fYml0cyhhcmcuYml0cygp
IDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQog
ICAgIHsKKyAgICAgICAgcmV0dXJuIGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSAmJiByaHNP
YnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgY29uc3RleHByIEFyaXRoUHJv
ZmlsZShDb25zdGFudFRhZywgUmVzdWx0VHlwZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQotICAgICAg
ICA6IG1fYml0cygobGhzLmJpdHMoKSA8PCBsaHNSZXN1bHRUeXBlU2hpZnQpIHwgKHJocy5iaXRz
KCkgPDwgcmhzUmVzdWx0VHlwZVNoaWZ0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNC
aXRzKGludCBtYXNrKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBtYXNrOyB9Ci0gICAgdm9pZCBz
ZXRCaXQoaW50IG1hc2spIHsgbV9iaXRzIHw9IG1hc2s7IH0KLQotICAgIHVpbnQzMl90IG1fYml0
cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmds
ZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXBy
ZXNlbnRhdGlvbiB0byBpdC4KLQogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIH07CiAKQEAgLTMxNCw3ICszNDMsOCBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpBcml0
aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6
VW5hcnlBcml0aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNv
bnN0IEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlJik7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBjb25zdCBKU0M6Ok9ic2VydmVkVHlwZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4
IGMwODZiOGViM2YzLi5hYzRjODBlZTk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVzIFsKICAgICA6
SlNUeXBlLAogICAgIDpKU1ZhbHVlLAogICAgIDpMTEludENhbGxMaW5rSW5mbywKKyAgICA6UmVz
dWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxh
ZywKICAgICA6UHJvcGVydHlPZmZzZXQsCkBAIC01Nyw3ICs1OCw4IEBAIHR5cGVzIFsKIAogICAg
IDpWYWx1ZVByb2ZpbGUsCiAgICAgOlZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIsCi0gICAg
OkFyaXRoUHJvZmlsZSwKKyAgICA6VW5hcnlBcml0aFByb2ZpbGUsCisgICAgOkJpbmFyeUFyaXRo
UHJvZmlsZSwKICAgICA6QXJyYXlQcm9maWxlLAogICAgIDpBcnJheUFsbG9jYXRpb25Qcm9maWxl
LAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKQEAgLTI4MiwxMCArMjg0LDcgQEAgb3Bf
Z3JvdXAgOlByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIG9wZXJhbmRUeXBlczogT3BlcmFuZFR5
cGVzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0
aFByb2ZpbGUKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBh
cml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBCaW5hcnlB
cml0aFByb2ZpbGUKICAgICB9CiAKIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCkBA
IC0zNjcsMTMgKzM2NiwxMCBAQCBvcCA6bmVnYXRlLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0
OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKLSAg
ICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5kVHlwZXMsCisgICAgICAgIHJlc3VsdFR5cGU6IFJl
c3VsdFR5cGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6
IEFyaXRoUHJvZmlsZSwKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAg
ICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBV
bmFyeUFyaXRoUHJvZmlsZSwKICAgICB9CiAKIG9wIDpub3QsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdlMjExNjgzZDc5Li4wNDYxYTYzNzcy
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTE0NzgsMjUgKzE0NzgsMjUgQEAgU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1
YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxv
Y2tlcikubV9zdHViSW5mb3MuYWRkKGFjY2Vzc1R5cGUpOwogfQogCi1KSVRBZGRJQyogQ29kZUJs
b2NrOjphZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVEFkZElDKiBD
b2RlQmxvY2s6OmFkZEpJVEFkZElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fYWRkSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRN
dWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
K0pJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAg
ICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbXVsSUNzLmFkZChhcml0aFByb2ZpbGUp
OwogfQogCi1KSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKK0pJVFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3ViSUNzLmFkZChh
cml0aFByb2ZpbGUpOwogfQogCi1KSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lD
KFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9u
ZWdJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CkBAIC0zMDgzLDE2ICszMDgzLDE5IEBAIGNvbnN0IElu
c3RydWN0aW9uKiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjKQogICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKS5hdChvZmZzZXQgKyB0YXJnZXQpLnB0
cigpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNv
ZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCitCaW5hcnlBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgcmV0dXJuIGFyaXRoUHJvZmlsZUZvclBDKGluc3Ry
dWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpKTsKKyAgICByZXR1cm4g
YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKSkucHRyKCkpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9m
aWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorVW5hcnlBcml0aFByb2ZpbGUqIENvZGVC
bG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCkKK3sKKyAgICByZXR1cm4gdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVj
dGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKSk7Cit9CisKK0JpbmFyeUFy
aXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0
cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewotICAgIGNhc2Ug
b3BfbmVnYXRlOgotICAgICAgICByZXR1cm4gJnBjLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YSh0
aGlzKS5tX2FyaXRoUHJvZmlsZTsKICAgICBjYXNlIG9wX2FkZDoKICAgICAgICAgcmV0dXJuICZw
Yy0+YXM8T3BBZGQ+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CiAgICAgY2FzZSBv
cF9tdWw6CkBAIC0zMTA4LDExICszMTExLDIzIEBAIEFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjph
cml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKK1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxl
Rm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIHN3aXRjaCAocGMtPm9wY29kZUlE
KCkpIHsKKyAgICBjYXNlIG9wX25lZ2F0ZToKKyAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdh
dGU+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJvb2wgQ29kZUJs
b2NrOjpjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2FzZShCeXRlY29kZUluZGV4IGJ5dGVjb2Rl
SW5kZXgpCiB7CiAgICAgaWYgKCFoYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgQXJpdGhQcm9maWxlKiBwcm9maWxlID0gYXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIHBy
b2ZpbGUgPSBiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
OwogICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBw
cm9maWxlLT50b29rU3BlY2lhbEZhc3RQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZDJjMDY5ODAzYTguLjE4ZTQ4YzI2NmEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04Myw2ICs4Myw4IEBA
IHN0cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8vIG5hbWVzcGFjZSBERkcKICNlbmRpZgogCitjbGFz
cyBVbmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U7CkBAIC05Niw3ICs5OCw2IEBAIGNsYXNzIFN0cnVjdHVyZVN0
dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CiAKLXN0cnVjdCBBcml0
aFByb2ZpbGU7CiBzdHJ1Y3QgT3BDYXRjaDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBE
b250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwpAQCAtMjc5LDIy
ICsyODAsMjIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVREYXRhJiBlbnN1cmVKSVREYXRhU2xv
dyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKTsKIAotICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJ
QyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRNdWxJQyogYWRkSklUTXVsSUMoQXJpdGhQcm9maWxl
Kik7Ci0gICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVFN1
YklDKiBhZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqKTsKKyAgICBKSVRBZGRJQyogYWRkSklUQWRk
SUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEJpbmFy
eUFyaXRoUHJvZmlsZSopOworICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhVbmFyeUFyaXRoUHJv
ZmlsZSopOworICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUqKTsK
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUQWRkR2VuZXJhdG9yPjo6
dmFsdWU+Ojp0eXBlPgotICAgIEpJVEFkZElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9m
aWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhwcm9maWxlKTsgfQorICAgIEpJVEFkZElDKiBhZGRN
YXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhw
cm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRNdWxH
ZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTXVsSUMqIGFkZE1hdGhJQyhBcml0aFBy
b2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CisgICAgSklU
TXVsSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFk
ZEpJVE11bElDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9y
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0
b3IsIEpJVE5lZ0dlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBKSVROZWdJQyogYWRkTWF0
aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTmVnSUMocHJvZmlsZSk7
IH0KKyAgICBKSVROZWdJQyogYWRkTWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7
IHJldHVybiBhZGRKSVROZWdJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Nh
bWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUU3Vi
SUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklD
KHByb2ZpbGUpOyB9CisgICAgSklUU3ViSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUq
IHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CiAKICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNjZXNzVHlwZSk7CiAKQEAgLTQ5Nyw4ICs0OTgsMTAg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMTEludENhbGxMaW5rSW5mbyhjb25zdCBGdW5jdG9y
Jik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0
ZWNvZGVJbmRleCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJ
bnN0cnVjdGlvbiopOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
Rm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSog
dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25z
dCBJbnN0cnVjdGlvbiopOwogCiAgICAgYm9vbCBjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2Fz
ZShCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmgKaW5kZXggOWFiNzcxMzdhYTYuLmQ0MWNmYzEyYjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTIzNiw2ICsyMzYsMTggQEAgc3RydWN0IEZpdHM8
RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2Vu
dW08RT46OnZhbHUKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1
Y3QgRml0czxSZXN1bHRUeXBlLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihSZXN1bHRU
eXBlKSAhPSBzaXplLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6
ZT4geworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFJlc3VsdFR5cGUpID09IHNpemVvZih1aW50
OF90KSk7CisgICAgdXNpbmcgQmFzZSA9IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAgICBzdGF0
aWMgYm9vbCBjaGVjayhSZXN1bHRUeXBlIHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNrKHR5cGUu
Yml0cygpKTsgfQorCisgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgY29udmVy
dChSZXN1bHRUeXBlIHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNvbnZlcnQodHlwZS5iaXRzKCkpOyB9
CisKKyAgICBzdGF0aWMgUmVzdWx0VHlwZSBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5
cGUgdHlwZSkgeyByZXR1cm4gUmVzdWx0VHlwZShCYXNlOjpjb252ZXJ0KHR5cGUpKTsgfQorfTsK
KwogdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8T3BlcmFuZFR5cGVzLCBz
aXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihPcGVyYW5kVHlwZXMpICE9IHNpemUsIHN0ZDo6
dHJ1ZV90eXBlPj4gewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmRUeXBlcykgPT0g
c2l6ZW9mKHVpbnQxNl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKaW5kZXggNzEw
NGQwMWFlMTEuLjJiNjlmMzZjN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCkBA
IC02NiwxMCArNjYsMTYgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0
UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAg
ICB1LmFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVU
YWdSZWdpc3RlcnMpOworICAgIGNhc2UgVW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAg
ICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90
SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAg
ICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQ
cm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVy
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC05NCwxMCArMTAwLDE2IEBAIHZvaWQgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAg
dS5hcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgIGNhc2UgVW5hcnlBcml0
aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5vYnNlcnZlUmVz
dWx0KHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gfQorICAgIH0KKworICAgIGNhc2Ug
QmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUt
Pm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KIAog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuaAppbmRleCBjZmI4MzQ3MDZhZi4uNWQ4MWM0YzkwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUuaApAQCAtMzYsMTAgKzM2LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBV
bmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIENDYWxs
SGVscGVyczsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
S2V5Owotc3RydWN0IEFyaXRoUHJvZmlsZTsKIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKIGNsYXNz
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgewpAQCAtNTcsMTIgKzU4LDIxIEBAIHB1Ymxp
YzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwogICAgIH0KLSAg
ICAKLSAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKEFyaXRoUHJvZmlsZSogcHJvZmls
ZSkKKworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoVW5hcnlBcml0aFByb2ZpbGUq
IHByb2ZpbGUpCisgICAgeworICAgICAgICBpZiAocHJvZmlsZSkgeworICAgICAgICAgICAgbV9r
aW5kID0gVW5hcnlBcml0aFByb2ZpbGVSZWFkeTsKKyAgICAgICAgICAgIHUudW5hcnlBcml0aFBy
b2ZpbGUgPSBwcm9maWxlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fa2luZCA9IE5v
bmU7CisgICAgfQorCisgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShCaW5hcnlBcml0
aFByb2ZpbGUqIHByb2ZpbGUpCiAgICAgewogICAgICAgICBpZiAocHJvZmlsZSkgewotICAgICAg
ICAgICAgbV9raW5kID0gQXJpdGhQcm9maWxlUmVhZHk7Ci0gICAgICAgICAgICB1LmFyaXRoUHJv
ZmlsZSA9IHByb2ZpbGU7CisgICAgICAgICAgICBtX2tpbmQgPSBCaW5hcnlBcml0aFByb2ZpbGVS
ZWFkeTsKKyAgICAgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwogICAgIH0KQEAgLTc5LDcgKzg5
LDggQEAgcHJpdmF0ZToKICAgICBlbnVtIEtpbmQgewogICAgICAgICBOb25lLAogICAgICAgICBS
ZWFkeSwKLSAgICAgICAgQXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIFVuYXJ5QXJpdGhQcm9m
aWxlUmVhZHksCisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAogICAgICAgICBMYXp5
T3BlcmFuZAogICAgIH07CiAgICAgCkBAIC05MCw3ICsxMDEsOCBAQCBwcml2YXRlOgogICAgICAg
ICB7IH0KIAogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7Ci0gICAgICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0
aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxl
OwogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAg
ICAgICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCAxNTRiZDNjZmJjYy4uOGU1ODU3MzhmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNjY1
LDE0ICsxNjY1LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZShS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKICAgICByZXR1cm4gZHN0OwogfQogCi1S
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMgdHlwZXMp
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQgb3Bj
b2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBSZXN1bHRUeXBlIHR5cGUp
CiB7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfbm90OgogICAgICAgICBl
bWl0VW5hcnlPcDxPcE5vdD4oZHN0LCBzcmMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIG9w
X25lZ2F0ZToKLSAgICAgICAgT3BOZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGVzKTsK
KyAgICAgICAgT3BOZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGUpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIG9wX2JpdG5vdDoKICAgICAgICAgZW1pdFVuYXJ5T3A8T3BCaXRub3Q+
KGRzdCwgc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0MTk3YWJjMTJlNS4uMzhlNzdjZGIxNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTY4Miw3ICs2ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBkc3Q7CiAgICAgICAgIH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5h
cnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIE9wZXJhbmRU
eXBlcyk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRVbmFyeU9wKE9wY29kZUlELCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSk7CiAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQmluYXJ5T3A+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggMmUwM2JlMGI3YzcuLjA1OGZlNTlkNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yMTM5LDcgKzIxMzksNyBA
QCBSZWdpc3RlcklEKiBVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYyA9
IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8ocG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSk7Ci0gICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0VW5hcnlPcChvcGNvZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCBzcmMuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERlc2NyaXB0b3Io
KSkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpLCBtX2V4cHItPnJlc3VsdERlc2Ny
aXB0b3IoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVbmFyeVBs
dXNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDIyMzQ0NWMyZDk0
Li44Y2I3MTAwNDFlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTk0Miw1NiArOTQyLDYwIEBAIHByaXZhdGU6CiAgICAgICAgIGlm
ICghaXNYODYoKSAmJiAobm9kZS0+b3AoKSA9PSBBcml0aE1vZCB8fCBub2RlLT5vcCgpID09IFZh
bHVlTW9kKSkKICAgICAgICAgICAgIHJldHVybiBub2RlOwogCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsK
LSAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEFyaXRoQWRkOgotICAgICAgICAg
ICAgICAgIGNhc2UgQXJpdGhTdWI6Ci0gICAgICAgICAgICAgICAgY2FzZSBWYWx1ZUFkZDoKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJs
ZVJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVOb25OdW1lcmljKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdz
KE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChh
cml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVNdWw6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBBcml0aE11bDogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
T3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2Rl
TWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJp
dGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJv
SW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9i
c2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
Tm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQ
cm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aE5l
Z2F0ZTogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5saHNPYnNlcnZl
ZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3Vi
bGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VG
bGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBBcml0aEFk
ZDoKKyAgICAgICAgY2FzZSBBcml0aFN1YjoKKyAgICAgICAgY2FzZSBWYWx1ZUFkZDogeworICAg
ICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgo
bV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
RG91YmxlKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURv
dWJsZVJlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9u
TnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVO
b25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgVmFsdWVNdWw6CisgICAgICAgIGNhc2UgQXJpdGhNdWw6IHsKKyAgICAgICAgICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4
KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3co
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDUy
KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93
KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9k
ZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2Zp
bGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Cisg
ICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAgICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7CisgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAg
ICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsK
KyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Cisg
ICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKKyAgICAgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVuYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAg
ICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGlmIChhcml0aFByb2ZpbGUtPmFyZ09ic2VydmVkVHlwZSgpLnNhd051bWJlcigpIHx8IGFyaXRo
UHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsK
KyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkg
fHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVOb25OdW1lcmljKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJl
bnRJbmRleCkpIHsKQEAgLTEwMzMsOCArMTAzNyw4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gbWFrZSB0aGlzIG1vcmUgZ3Jh
bnVsYXIuCiAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJh
c2VsaW5lIHwgTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsKLSAgICAgICAgCi0gICAgICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsKKworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1
cnJlbnRJbmRleCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQo
KSkKICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IGFkYmY1MDI1Y2Yz
Li45OWVlZjZhZjk5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAg
LTE2NTIsNyArMTY1Miw5IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9kZSogY3VycmVuCiAgICAgICAgICAgICAg
ICAgcmV0dXJuICZwcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpOwogCiAgICAgICAgICAgICBpZiAo
cHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAg
ICAgIGlmIChBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSkp
CisgICAgICAgICAgICAgICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmls
ZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmlnaW4u
c2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgICAgICAgICBpZiAoVW5hcnlBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHBy
b2ZpbGVkQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmln
aW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0NzQxNjE0YzU3Yi4uYWE1MjZj
ODMwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0zOTk0LDcgKzM5OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVBZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sg
PSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5k
ZXgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVEFkZElDKGFy
aXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZUFkZE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9u
VmFsdWVBZGQ7CkBAIC00MDE4LDcgKzQwMTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29k
ZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5v
cmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2Rl
QmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgYXV0byByZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwpAQCAtNDYxMiw3ICs0NjEy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUqIG5vZGUp
CiB7CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFz
ZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgp
OwotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgVW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTmVnSUMqIG5lZ0lD
ID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0
byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplOwogICAg
IGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7CkBAIC00
ODM1LDcgKzQ4MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwoTm9k
ZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFw
aCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJs
b2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTXVs
SUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7
CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXpl
OwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYWYw
YThlYjA3MGIuLmRmMmRlYTIwZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC0yMTEyLDcgKzIxMTIsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJ
bmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2Nr
LT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemU7
CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7
CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPihhcml0aFByb2Zp
bGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTIxMzMs
NyArMjEzMyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVC
bG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9u
ID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5n
RnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJ
QzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25S
ZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE1NCw3ICsyMTU0LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNl
bGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9j
ay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAg
ICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXpl
OwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVs
OwogICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQcm9m
aWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTYy
LDcgKzIxNjIsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRv
ciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVuYW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9IHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2lu
dGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21waWxl
VW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdG
dW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGlsZVVu
YXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hp
bmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKIApAQCAtMjI0OCw3ICsyMjQ4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBlbmFt
ZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZnVu
Y3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1ZSAm
JiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+Ojp0
eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNo
aW5nRnVuY3Rpb24pCisgICAgdm9pZCBjb21waWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJl
cGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAg
ICAgICAgIApAQCAtMjQxNyw3ICsyNDE3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2Rl
QmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRl
eCgpOwotICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3Vi
T3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlU3ViOwogICAgICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5l
cmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVu
Y3Rpb24pOwpAQCAtMzA5NSw3ICszMDk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBi
YXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5l
Q29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRl
eCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdh
dGVPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRp
b25Bcml0aE5lZ2F0ZTsKICAgICAgICAgY29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRv
cj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBiNWVmZTI2ODA0Ni4uMmI0YTVkNjRiZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtOTE5LDcgKzkxOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAvLyBJdCB3aWxsIGdpdmUgdGhlIHNsb3cgcGF0aCB0aGUgc2FtZSB2YWx1
ZSByZWFkIGJ5IHRoZSBmYXN0IHBhdGguCiAgICAgICAgIEdldFB1dEluZm8gY29waWVkR2V0UHV0
SW5mbyhPcFB1dFRvU2NvcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4K
LSAgICAgICAgQXJpdGhQcm9maWxlIGNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCk7CisgICAg
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOwogCiAg
ICAgICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwogCkBAIC05MzksNyArOTM5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7
CiAKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgdW5zaWduZWQ+IG1fY29waWVkR2V0UHV0SW5m
b3M7Ci0gICAgICAgIEhhc2hNYXA8dWludDY0X3QsIEFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0
aFByb2ZpbGVzOworICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBCaW5hcnlBcml0aFByb2ZpbGU+
IG1fY29waWVkQXJpdGhQcm9maWxlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNo
ZWNrczsKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9s
bGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAK
aW5kZXggNjI3YWYyNzg3ZTAuLjc0MGIyZWQ4YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBP
YnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03Myw3ICs3
Myw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0
LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmls
aW5nKQorYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3Nj
cmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBt
X2xlZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQWRkR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdl
bmVyYXRvci5oCmluZGV4IDRkYzM0YTJmNWI2Li42NzVjZjkzYzkwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCkBAIC01NSw4ICs1NSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3Jp
Z2h0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5l
UmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJh
dGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmlu
YXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZh
bGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVy
YW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3Bl
cmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiBy
aWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNWZjZjg4OWQzMTguLjc2MzQ0NWNjYWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1
Miw3ICs0NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29w
X25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdh
dGU+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIFVuYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0
ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMq
IG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAg
bV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsK
ICAgICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwpA
QCAtNjMzLDE0ICs2MzMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChj
dXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRp
YyBPcGVyYW5kVHlwZXMgZ2V0T3BlcmFuZFR5cGVzKGNvbnN0IEFyaXRoUHJvZmlsZSYgYXJpdGhQ
cm9maWxlKQotewotICAgIHJldHVybiBPcGVyYW5kVHlwZXMoYXJpdGhQcm9maWxlLmxoc1Jlc3Vs
dFR5cGUoKSwgYXJpdGhQcm9maWxlLnJoc1Jlc3VsdFR5cGUoKSk7Ci19Ci0KIHZvaWQgSklUOjpl
bWl0X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BB
ZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVEFkZElDKiBh
ZGRJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBhZGRJQyk7CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BBZGQ+KGFkZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZh
bHVlQWRkUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlQWRkKTsKQEAgLTY4NSw3ICs2ODAsNyBAQCB2
b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElD
LCBjb25zdCBJbnN0cnVjdGlvbiogYwogCiAgICAgYm9vbCBnZW5lcmF0ZWRJbmxpbmVDb2RlID0g
bWF0aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywgbWF0aElDR2VuZXJhdGlvblN0YXRlKTsKICAg
ICBpZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgICAgICBVbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHNyY1JlZ3MsIGFyaXRoUHJvZmls
ZSk7CiAgICAgICAgIGVsc2UKQEAgLTcwOCw3ICs3MDMsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5h
bWUgTgogdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVk
RnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxl
ZEZ1bmN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wPigpOwotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRB
cml0aFByb2ZpbGUoYnl0ZWNvZGUpKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qu
b2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGlu
dCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKQEAgLTcyNyw4ICs3MjEsOCBAQCB2b2lk
IEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywg
Y29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogI2Vu
ZGlmCiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAg
ICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBw
ZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOwor
ICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5z
ZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAg
bGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBA
IC03NTgsNyArNzUyLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJ
QzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIGxlZnRSZWdzKTsKICAgICAgICAgZWxzZSBpZiAocmln
aHRPcGVyYW5kLmlzQ29uc3QoKSkKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
b3AyLCByaWdodFJlZ3MpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1h
dGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmls
ZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0
aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIGFyaXRoUHJvZmls
ZSk7CiAgICAgICAgIGVsc2UKQEAgLTc5OCw3ICs3OTIsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJ
Q1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlv
biogYwogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBV
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsK
ICAgICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAg
ICBpZiAobWF0aElDR2VuZXJhdGlvblN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCkKICAgICAg
ICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFJlc3VsdChyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dKTWljPihwcm9maWxl
ZFJlcGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgc3JjUmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKQEAgLTgz
MCw3ICs4MjQsNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgbWF0aElDR2VuZXJhdGlv
blN0YXRlLnNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0
T3BlcmFuZFR5cGVzKGNvcGllZEFyaXRoUHJvZmlsZShieXRlY29kZSkpOwogICAgIGludCByZXN1
bHQgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9s
aHMub2Zmc2V0KCk7CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwpAQCAt
ODQ1LDggKzgzOCw4IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gbGVmdFJlZ3M7CiAjZW5kaWYKICAgICAKLSAgICBTbmlwcGV0T3BlcmFuZCBs
ZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJh
bmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVj
b2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3Bl
cmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihn
ZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC04NjQsNyArODU3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0
IEluc3RydWN0aW9uKgogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYK
IAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUo
KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQ
cm9maWxlKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkp
IHsKICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0
Y2gpCiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbldpdGhSZXN1bHQoYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0dKSk1pYz4o
cHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIFRydXN0ZWRJbW1Q
dHIobWF0aElDKSk7CkBAIC04OTIsMTkgKzg4NSwxNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Ns
b3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24q
CiB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERp
dj4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9w
MSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jo
cy5vZmZzZXQoKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgT3BlcmFuZFR5cGVzIHR5cGVz
ID0gZ2V0T3BlcmFuZFR5cGVzKG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlKTsKICAgICBKU1ZhbHVl
UmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyByaWdo
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IGxlZnRSZWdzOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDI7CiAjZWxzZQotICAgIE9w
ZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmls
ZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
OwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7
CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxlZnRSZWdzOwpAQCAtOTEyLDEyICs5MDIs
MTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAjZW5kaWYKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IGZwUmVnVDI7CiAKLSAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHI7CisgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyOwogICAgIGlmIChzaG91bGRFbWl0UHJvZmls
aW5nKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RGl2PigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKIAotICAgIFNuaXBw
ZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVzLmZpcnN0KCkpOwotICAgIFNuaXBwZXRPcGVyYW5k
IHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQoKSk7CisgICAgU25pcHBldE9wZXJhbmQgbGVmdE9w
ZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuZmlyc3QoKSk7CisgICAgU25pcHBldE9wZXJh
bmQgcmlnaHRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLnNlY29uZCgpKTsKIAogICAg
IGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDEpKQogICAgICAgICBsZWZ0T3BlcmFuZC5zZXRD
b25zdEludDMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDEpKTsKQEAgLTk1OSw3ICs5NDksNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFBy
b2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudElu
c3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2Zp
bGU7CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9jb2RlQmxvY2stPmFkZEpJVE11bElDKGFyaXRo
UHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rp
b24sIG11bElDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcE11bD4obXVsSUMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVNdWwpOwpA
QCAtOTc1LDcgKzk2NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAKIHZvaWQgSklUOjpl
bWl0X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BT
dWI+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdWI+
KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVFN1YklDKiBz
dWJJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5z
dHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBzdWJJQyk7CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BTdWI+KHN1YklDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZh
bHVlU3ViUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcAppbmRleCA2NmUxYmUxNGE4ZC4uYjhjNDc5ODZm
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmIGppdCkKICAgICBub3REb3VibGVaZXJvLmxpbmsoJmppdCk7CiAjZW5k
aWYKICAgICBpZiAobV9hcml0aFByb2ZpbGUpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6c3BlY2lhbEZhc3RQYXRoQml0KSwgQ0NhbGxI
ZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9hcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkp
OworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0
aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRy
ZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICBqaXQuYm94RG91Ymxl
KG1fbGVmdEZQUiwgbV9yZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVREaXZHZW5lcmF0b3IuaAppbmRleCA4Mzk2Njc3OTQzZi4uNzA4ZGIxMGQ2Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaApAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAgICAgSklURGl2R2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
LCBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCiAgICAgICAgIEZQUlJlZyBs
ZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRj
aEZQUiwKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQorICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIpCiAgICAgICAg
IDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKICAgICAgICAgLCBtX3JpZ2h0T3BlcmFuZChy
aWdodE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQpAQCAtNzEsNyArNzEsNyBA
QCBwcml2YXRlOgogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7CiAgICAgRlBSUmVnIG1fc2NyYXRj
aEZQUjsKICAgICBib29sIG1fZGlkRW1pdEZhc3RQYXRoIHsgZmFsc2UgfTsKLSAgICBBcml0aFBy
b2ZpbGUqIG1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogbV9hcml0aFBy
b2ZpbGU7CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1fZW5kSnVtcExpc3Q7CiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX3Nsb3dQYXRoSnVtcExpc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDYyZWFiOWI5N2ZhLi4yNWJjYzJiOWM1NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTcxNiwxMyArNzE2LDEzIEBA
IEFMV0FZU19JTkxJTkUgR2V0UHV0SW5mbyBKSVQ6OmNvcGllZEdldFB1dEluZm8oT3BQdXRUb1Nj
b3BlIGJ5dGVjb2RlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLUFMV0FZU19J
TkxJTkUgQXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVj
b2RlKQorQUxXQVlTX0lOTElORSBCaW5hcnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFBy
b2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCiB7CiAgICAgdWludDY0X3Qga2V5ID0gKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihCaW5hcnlPcDo6b3Bjb2RlSUQpICsgMSkgPDwgMzIgfCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYnl0ZWNvZGUubV9tZXRhZGF0YUlEKTsKICAgICBhdXRvIGl0ZXJhdG9yID0g
bV9jb3BpZWRBcml0aFByb2ZpbGVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXRlcmF0b3IgIT0gbV9j
b3BpZWRBcml0aFByb2ZpbGVzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVl
OwotICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJv
ZmlsZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAg
ICBtX2NvcGllZEFyaXRoUHJvZmlsZXMuYWRkKGtleSwgYXJpdGhQcm9maWxlKTsKICAgICByZXR1
cm4gYXJpdGhQcm9maWxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRNYXRoSUMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKaW5k
ZXggNTY0NWU0MmRlZmYuLmZkYWVjOTI3NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE1hdGhJQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TWF0aElDLmgKQEAgLTUyLDExICs1MiwxMSBAQCBzdHJ1Y3QgTWF0aElDR2VuZXJhdGlvblN0YXRl
IHsKIAogI2RlZmluZSBFTkFCTEVfTUFUSF9JQ19TVEFUUyAwCiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBHZW5lcmF0b3JUeXBlLCBib29sKCppc1Byb2ZpbGVFbXB0eSkoQXJpdGhQcm9maWxlJik+Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgdHlwZW5hbWUgQXJpdGhQcm9maWxlVHlw
ZT4KIGNsYXNzIEpJVE1hdGhJQyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgSklUTWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgIEpJVE1h
dGhJQyhBcml0aFByb2ZpbGVUeXBlKiBhcml0aFByb2ZpbGUpCiAgICAgICAgIDogbV9hcml0aFBy
b2ZpbGUoYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CkBAIC03MSw3ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5j
b2RlU2l6ZSgpOwogCiAgICAgICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewotICAgICAgICAgICAg
aWYgKGlzUHJvZmlsZUVtcHR5KCptX2FyaXRoUHJvZmlsZSkpIHsKKyAgICAgICAgICAgIGlmICht
X2FyaXRoUHJvZmlsZS0+aXNPYnNlcnZlZFR5cGVFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gSXQgbG9va3MgbGlrZSB0aGUgTWF0aElDIGhhcyB5ZXQgdG8gZXhlY3V0ZS4gV2UgZG9uJ3Qg
d2FudCB0byBlbWl0IGNvZGUgaW4gdGhpcwogICAgICAgICAgICAgICAgIC8vIGNhc2UgZm9yIGEg
Y291cGxlIHJlYXNvbnMuIEZpcnN0LCB0aGUgb3BlcmF0aW9uIG1heSBuZXZlciBleGVjdXRlLCBz
byBpZiB3ZSBkb24ndCBlbWl0CiAgICAgICAgICAgICAgICAgLy8gY29kZSwgaXQncyBhIHdpbi4g
U2Vjb25kLCBpZiB0aGUgb3BlcmF0aW9uIGRvZXMgZXhlY3V0ZSwgd2UgY2FuIGVtaXQgYmV0dGVy
IGNvZGUKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2xvd1BhdGhTdGFy
dExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHN0YXRl
LnNsb3dQYXRoU3RhcnQpOwogICAgIH0KIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KKyAgICBBcml0aFByb2ZpbGVUeXBl
KiBhcml0aFByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2FyaXRoUHJvZmlsZTsgfQogCiAjaWYg
RU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgc2l6ZV90IG1fZ2VuZXJhdGVkQ29kZVNpemUgeyAw
IH07CkBAIC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0gICAgQXJp
dGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAgICBBcml0aFByb2ZpbGVUeXBlKiBtX2FyaXRo
UHJvZmlsZTsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
IG1fY29kZTsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2lubGlu
ZVN0YXJ0OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1faW5saW5l
RW5kOwpAQCAtMjQ2LDE1ICsyNDYsMTEgQEAgcHVibGljOgogICAgIEdlbmVyYXRvclR5cGUgbV9n
ZW5lcmF0b3I7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0JpbmFyeVByb2ZpbGVFbXB0eShBcml0aFBy
b2ZpbGUmIGFyaXRoUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2Vy
dmVkVHlwZSgpLmlzRW1wdHkoKSB8fCBhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNF
bXB0eSgpOwotfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+Ci1jbGFzcyBKSVRC
aW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzQmluYXJ5UHJv
ZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdl
bmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4gewogcHVibGljOgotICAgIEpJVEJpbmFy
eU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8
R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQcm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkKKyAgICBK
SVRCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAgICAg
IDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4oYXJpdGhQcm9m
aWxlKQogICAgIHsKICAgICB9CiB9OwpAQCAtMjYzLDE2ICsyNTksMTEgQEAgdHlwZWRlZiBKSVRC
aW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPiBKSVRBZGRJQzsKIHR5cGVkZWYgSklUQmluYXJ5
TWF0aElDPEpJVE11bEdlbmVyYXRvcj4gSklUTXVsSUM7CiB0eXBlZGVmIEpJVEJpbmFyeU1hdGhJ
QzxKSVRTdWJHZW5lcmF0b3I+IEpJVFN1YklDOwogCi0KLWlubGluZSBib29sIGlzVW5hcnlQcm9m
aWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCi17Ci0gICAgcmV0dXJuIGFyaXRo
UHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7Ci19CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgR2VuZXJhdG9yVHlwZT4KLWNsYXNzIEpJVFVuYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJ
QzxHZW5lcmF0b3JUeXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRVbmFyeU1h
dGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgVW5hcnlBcml0aFByb2ZpbGU+
IHsKIHB1YmxpYzoKLSAgICBKSVRVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0
eT4oYXJpdGhQcm9maWxlKQorICAgIEpJVFVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVuYXJ5QXJp
dGhQcm9maWxlPihhcml0aFByb2ZpbGUpCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKaW5kZXggODNkMjkzYjYyNTIuLmNm
NmJhYTUyZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0
b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMm
IGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5l
cmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2Ug
ZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2Jz
ZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC04OSw3ICs4OSw3IEBAIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0
LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxs
U25pcHBldDsKIH0KIAotYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRNdWxHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1
bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQ
UlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsK
QEAgLTIwNSwxOCArMjA1LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAKICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIG5vdE5lZ2F0aXZlWmVybyA9IGppdC5icmFuY2g2NChDQ2FsbEhl
bHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTY0KG5lZ2F0aXZlWmVyb0JpdHMpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhl
bHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwor
ICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFBy
b2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0
aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
ZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7
Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmls
ZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRo
UHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIEND
YWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygp
KSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hH
UFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUyKSwgbV9z
Y3JhdGNoR1BSKTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6SW1tMzIoMHg3ZmYp
LCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9JbnQ1Mk92ZXJm
bG93ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW5PckVxdWFsLCBtX3NjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMxKSk7CiAKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgbm9JbnQ1
Mk92ZXJmbG93LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwpAQCAtMjI3
LDE4ICsyMjcsMTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0Nh
bGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICAgICAgICAgbm90TmVnYXRp
dmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1
bHQucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOwogICAgICAg
ICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBtX3Jlc3VsdC50YWdHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobmVnYXRp
dmVaZXJvQml0cyA+PiAzMikpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBq
aXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5l
Z1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUt
PmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGpp
dC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAg
IGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVn
WmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+
YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAg
ICAgICAgaml0Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAg
IGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIgLSAzMiksIG1fc2NyYXRjaEdQ
Uik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3Jh
dGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogICAgICAgICAKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAgICBlbmRK
dW1wTGlzdC5hcHBlbmQobm9JbnQ1Mk92ZXJmbG93KTsKICAgICAgICAgaWYgKG1fc2NyYXRjaEdQ
UiA9PSBtX3Jlc3VsdC50YWdHUFIoKSB8fCBtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQucGF5bG9h
ZEdQUigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKaW5k
ZXggMzZkMjZlYTEyNGUuLjYwODc3OTY2ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTXVsR2VuZXJhdG9yLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgICAgICBB
U1NFUlQoIW1fbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9w
ZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5s
aW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25T
dGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5h
cnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIHNsb3dKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENv
bnN0YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5p
c1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRW
YWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRP
cGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcAppbmRleCA5MmMyOWRkNjMwYS4uY2VlYmUzOTA5NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3Vs
dCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRo
SUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBV
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hH
UFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5w
YXlsb2FkR1BSKCkpOwpAQCAtNDUsNyArNDUsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklU
TmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwog
ICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBl
IG9ic2VydmVkVHlwZXMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKICAgICBpZiAoYXJp
dGhQcm9maWxlKQotICAgICAgICBvYnNlcnZlZFR5cGVzID0gYXJpdGhQcm9maWxlLT5saHNPYnNl
cnZlZFR5cGUoKTsKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+YXJnT2Jz
ZXJ2ZWRUeXBlKCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghb2JzZXJ2ZWRUeXBlcy5pc0Vt
cHR5KCksICJXZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2VuZXJhdGUgYW55dGhpbmcgaWYgd2Ug
ZG8gbm90IGhhdmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYgKG9ic2VydmVkVHlwZXMuaXNPbmx5
Tm9uTnVtYmVyKCkpCkBAIC04Miw3ICs4Miw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRO
ZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAg
ICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0K
IAotYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVu
ZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25z
dCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxp
bmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogI2VuZGlmCiAgICAgLy8gVGhl
IGZsYWdzIG9mIEFyaXRoTmVnYXRlIGFyZSBiYXNpYyBpbiBERkcuCiAgICAgLy8gV2Ugb25seSBu
ZWVkIHRvIGtub3cgaWYgd2UgZXZlciBwcm9kdWNlZCBhIG51bWJlci4KLSAgICBpZiAoc2hvdWxk
RW1pdFByb2ZpbGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2
ZWRUeXBlKCkuc2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgp
KQorICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nICYmIGFyaXRoUHJvZmlsZSAmJiAhYXJpdGhQ
cm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSAmJiAhYXJpdGhQcm9maWxlLT5k
aWRPYnNlcnZlRG91YmxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFNldERvdWJsZShq
aXQpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TmVnR2VuZXJhdG9yLmgKaW5kZXggOGEwYzJkNTE3ZDYuLjc4N2I3MDc2ODI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKQEAgLTQzLDggKzQzLDggQEAg
cHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgIHsgfQogCi0g
ICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3Qg
QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlv
blN0YXRlJiwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3Qs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IFVuYXJ5QXJp
dGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogcHJpdmF0ZToKICAgICBK
U1ZhbHVlUmVncyBtX3Jlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDljNjc2ZjE1MDQ2Li4yMjBmY2Q0ZWQ5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNjQzLDcgKzI2NDMsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQogfQogCi1B
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVkQWRkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9wMiwgQXJpdGhQcm9maWxlJiBhcml0
aFByb2ZpbGUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVkQWRkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9wMiwgQmluYXJ5
QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAgYXJpdGhQcm9maWxlLm9ic2VydmVM
SFNBbmRSSFMob3AxLCBvcDIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGQoZ2xvYmFsT2Jq
ZWN0LCBvcDEsIG9wMik7CkBAIC0yNjU5LDcgKzI2NTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGQoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmls
ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUp
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwpAQCAtMjY3Nyw3ICsyNjc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGcK
ICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBKU1Zh
bHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAotICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VS
VChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEs
IG9wMik7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZUFkZFBy
b2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTI2OTksNyArMjY5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRo
UHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMt
PmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocHJvZmlsZWRBZGQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSwgKmFyaXRoUHJvZmlsZSkp
OwogfQpAQCAtMjcxNCw3ICsyNzE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBK
U1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAogICAgIGF1dG8gbm9u
T3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGROb09wdGltaXplOwotICAgIGlmIChB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBp
ZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxl
KCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAg
ICAgYWRkSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9w
dGltaXplVmFyaWFudCk7CiAKQEAgLTI3NDcsNyArMjc0Nyw3IEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIHVucHJvZmlsZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTXVsKGdsb2JhbE9iamVjdCwgb3Ax
LCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmls
ZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2Zp
bGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FMV0FZU19JTkxJ
TkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2Vy
dmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTI3ODgs
NyArMjc4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBu
b25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemU7Ci0gICAgaWYg
KEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpKQorICAg
IGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2Zp
bGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBtdWxJ
Qy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVW
YXJpYW50KTsKIApAQCAtMjc5OSw3ICsyNzk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoK
ICAgICByZXR1cm4gdW5wcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29k
ZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
TXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVs
UHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI4MTUsNyAr
MjgxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQ
cm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChh
cml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAg
YXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRp
bWl6ZTsKQEAgLTI4MzQsNyArMjgzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAot
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwor
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmls
ZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBwcm9maWxlZE11bChn
bG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQpA
QCAtMjg2MCw3ICsyODYwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpAQCAtMjg2OSw3ICsyODY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWwKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wZXJhbmQpOwotICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAg
ICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7CiAKICAgICBKU1ZhbHVlIHByaW1W
YWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4OTcsOSArMjg5Nyw5IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJv
ZmlsZSk7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxp
bmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCk7
CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTI5MzEsOCArMjkzMSw4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpKQotICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVM
SFMob3BlcmFuZCk7CisgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBu
ZWdJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUFyZyhv
cGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMp
CkBAIC0yOTU4LDcgKzI5NTgsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSB1bnByb2ZpbGVkU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N1YihnbG9iYWxPYmplY3QsIG9wMSwgb3AyKSk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wg
c2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2
ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKQEAgLTI5ODIsNyArMjk4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jCiAgICAgcmV0dXJuIHVucHJvZmlsZWRTdWIoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBl
bmNvZGVkT3AyKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogCkBAIC0zMDAw
LDcgKzMwMDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
U3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8g
bm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplOwotICAgIGlm
IChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKSkKKyAg
ICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9m
aWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgc3Vi
SUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXpl
VmFyaWFudCk7CiAKQEAgLTMwMjYsNyArMzAyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBn
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRo
UHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTMwNDUsNyArMzA0NSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
c3ViSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwog
ICAgIHJldHVybiBwcm9maWxlZFN1Yih2bSwgZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNv
ZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKaW5kZXggMzdlODM2MTVkNDcuLjU5NWFlYzQ3Y2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzgsNiArMzgsOCBAQCB0eXBlZGVm
IGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAgICAgCiBjbGFzcyBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOworY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7CitjbGFz
cyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCdXR0ZXJmbHk7CiBjbGFzcyBDYWxsRnJhbWU7
CiBjbGFzcyBDYWxsTGlua0luZm87CkBAIC02NCw3ICs2Niw2IEBAIGNsYXNzIFdhdGNocG9pbnRT
ZXQ7CiBzdHJ1Y3QgQnlWYWxJbmZvOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIHN0cnVjdCBJ
bnN0cnVjdGlvbjsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiAKIGV4dGVybiAiQyIgewogCkBAIC03
Nyw3ICs3OCw3IEBAIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogICAgIEE6IEpTQXJyYXkqCiAg
ICAgQWFwOiBBcnJheUFsbG9jYXRpb25Qcm9maWxlKgogICAgIEFwOiBBcnJheVByb2ZpbGUqCi0g
ICAgQXJwOiBBcml0aFByb2ZpbGUqCisgICAgQXJwOiBCaW5hcnlBcml0aFByb2ZpbGUqCiAgICAg
QjogQnV0dGVyZmx5KgogICAgIEJ5OiBCeVZhbEluZm8qCiAgICAgQzogSlNDZWxsKgpAQCAtMjgy
LDcgKzI4Myw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0lmRXhjZXB0
aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKFZNCiBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkSGFzSW5zdGFuY2UpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFy
eUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRk
SUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRk
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdURl9JTlRFUk5BTDsKQEAgLTI5Miwx
MyArMjkzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11
bElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQ
cm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJp
bmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBvcGVyYW5kKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIEFy
aXRoUHJvZmlsZSopOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwg
VW5hcnlBcml0aFByb2ZpbGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgSklUTmVnSUMqKTsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBC
aW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVTdWJOb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCmluZGV4IDc5NWMyNzU4NGMwLi43
YjFhOGI4MTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJh
dG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElD
SW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJz
JiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2Vu
ZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3Rh
dGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdl
IGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9i
c2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtNzgsNyArNzgsNyBAQCBKSVRNYXRoSUNJbmxp
bmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGpp
dCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVs
bFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEND
YWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUU3ViR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhK
dW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hv
dWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRH
UFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRHUFIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAppbmRleCA1NjFm
NjMzNGFlMy4uMzQ5MWE4M2ZlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3ViR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dWJHZW5lcmF0b3IuaApAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zY3Jh
dGNoRlBSKHNjcmF0Y2hGUFIpCiAgICAgeyB9CiAKLSAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29u
c3QgQXJpdGhQcm9maWxlKik7Ci0gICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29sIHNob3Vs
ZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5hcnlBcml0
aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxk
RW1pdFByb2ZpbGluZyk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0xlZnRPcGVyYW5kVmFsaWRDb25z
dGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgYm9vbCBp
c1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQpIHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGJkYTMw
OGM4NGQyLi5jMDM0MWM5NTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKQEAgLTEzNSwzNiArMTM1LDQ5IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMoVk0mIHZtKQogI2VuZGlmCiAKICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAg
YXJpdGhQcm9maWxlLmFyZ1Nhd0ludDMyKCk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUu
Yml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEJpdHMoKSk7CisgICAgICAg
IEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAg
ICAgICBhcml0aFByb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckJpdHMoKSk7
CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVt
YmVyKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRo
UHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CiAgICAgICAgIGFy
aXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkuYml0cygpKTsKLSAg
ICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCku
bGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQo
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLnJoc09ic2VydmVkVHlwZSgpLmlz
T25seUludDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5h
cnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKICAgICB9
CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBCaW5h
cnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3
TnVtYmVyKCk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5
TnVtYmVySW50KCkuYml0cygpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6
Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVy
KCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlO
dW1iZXJJbnQoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51
bWJlckludEJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRU
eXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09i
c2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdOdW1iZXIoKTsKICAgICAgICAgYXJp
dGhQcm9maWxlLnJoc1Nhd051bWJlcigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkuYml0cygp
KTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVt
YmVyTnVtYmVyKCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwotICAgICAgICBT
VEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5y
aHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdW1iZXJC
aXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlz
T25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5
cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxl
IGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsK
ICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CiAgICAgICAgIGFyaXRoUHJvZmls
ZS5yaHNTYXdOdW1iZXIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0g
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmJpdHMoKSk7Ci0gICAgICAg
IFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmxo
c09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5yaHNPYnNlcnZlZFR5cGUoKS5p
c09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEJp
bmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkpOworICAgICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgICAg
ICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsK
ICAgICB9CiB9CiBJR05PUkVfV0FSTklOR1NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IGEyNWY5ODRhYmRh
Li5mNWQ5MTc3NDYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogCiBj
b25zdCBpbnQ2NF90KiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKIHsKLS8vIFRoaXMg
aXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldHNfZXh0cmFj
dG9yLnJiLCBhbmQgY29udGFpbnMgY29kZQorLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5
IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNv
ZGUKIC8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIg
aWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgogLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2Ug
aGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0
c0V4dHJhY3RvcgogLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdob3NlIG9mZnNldHMgd2UncmUgZXh0
cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAw
MTM1ODc3MjFiOS4uYjJhNzQyZTdiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI0MCwxMyArMjQwLDE1IEBAIGNv
bnN0IElzSW52YWxpZGF0ZWQgPSBjb25zdGV4cHIgSXNJbnZhbGlkYXRlZAogIyBTaGFkb3dDaGlj
a2VuIGRhdGEKIGNvbnN0IFNoYWRvd0NoaWNrZW5UYWlsTWFya2VyID0gY29uc3RleHByIFNoYWRv
d0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlclZhbHVlCiAKLSMgQXJpdGhQcm9maWxlIGRhdGEK
LWNvbnN0IEFyaXRoUHJvZmlsZUludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZl
ZFVuYXJ5SW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHBy
IChBcml0aFByb2ZpbGU6Om9ic2VydmVkVW5hcnlOdW1iZXIoKS5iaXRzKCkpCi1jb25zdCBBcml0
aFByb2ZpbGVJbnRJbnQgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJ
bnRJbnQoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJJbnQgPSBjb25zdGV4cHIg
KEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5iaXRzKCkpCi1jb25zdCBB
cml0aFByb2ZpbGVJbnROdW1iZXIgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRC
aW5hcnlJbnROdW1iZXIoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIg
PSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5i
aXRzKCkpCisjIFVuYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0IEFyaXRoUHJvZmlsZUludCA9
IGNvbnN0ZXhwciAoVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cygpKQorY29uc3Qg
QXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHByIChVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2
ZWROdW1iZXJCaXRzKCkpCisKKyMgQmluYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0IEFyaXRo
UHJvZmlsZUludEludCA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dEludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IGNvbnN0ZXhwciAoQmlu
YXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJv
ZmlsZUludE51bWJlciA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dE51bWJlckJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IGNvbnN0ZXhw
ciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKSkKIAogIyBQ
b2ludGVyIFRhZ3MKIGNvbnN0IEJ5dGVjb2RlUHRyVGFnID0gY29uc3RleHByIEJ5dGVjb2RlUHRy
VGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGJjMjMwZTU3Mzg2Li4yZTcyZWMyZDcxNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KQEAgLTk5Miw4ICs5OTIsOCBAQCBlbmQpCiAKIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCiAKLSAgICBtYWNybyBhcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgb3Jp
IHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6
Om1fYml0c1t0NV0KKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAg
b3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRo
UHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgIGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAt
MTAwMiwxMiArMTAwMiwxMiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdh
dGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcgogICAgIGJpbmVxIHQx
LCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CiAgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwg
Lm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDIKLSAgICBhcml0aFByb2ZpbGUoQXJpdGhQcm9maWxl
SW50KQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJu
IChJbnQzMlRhZywgdDIpCiAub3BOZWdhdGVTcmNOb3RJbnQ6CiAgICAgYmlhIHQxLCBMb3dlc3RU
YWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgYXJpdGhQcm9m
aWxlKEFyaXRoUHJvZmlsZU51bWJlcikKKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9m
aWxlTnVtYmVyKQogICAgIHJldHVybih0MSwgdDIpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDE5
LDcgKzEwMTksNyBAQCBlbmQpCiBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24p
CiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1h
Y3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0K
KyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQ
cm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAg
ICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZjJkZGJiMjc5ZWEuLjcyZjg0
ZWE4NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtOTY0LDIyICs5NjQsMjQgQEAgZW5kKQogCiAKIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUo
dHlwZSkKKyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIGVuZAorCiAgICAgZ2V0KG1f
b3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAg
ICAgbWV0YWRhdGEodDEsIHQyKQotICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0
aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCiAgICAgYnFiIHQzLCBudW1i
ZXJUYWcsIC5vcE5lZ2F0ZU5vdEludAogICAgIGJ0aXogdDMsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0
ZVNsb3cKICAgICBuZWdpIHQzCiAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICBvcmkgQXJpdGhQ
cm9maWxlSW50LCB0MgotICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRo
UHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIHVwZGF0ZUFyaXRoUHJvZmls
ZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuKHQzKQogLm9wTmVnYXRlTm90SW50OgogICAg
IGJ0cXogdDMsIG51bWJlclRhZywgLm9wTmVnYXRlU2xvdwogICAgIHhvcnEgMHg4MDAwMDAwMDAw
MDAwMDAwLCB0MwotICAgIG9yaSBBcml0aFByb2ZpbGVOdW1iZXIsIHQyCi0gICAgc3RvcmVpIHQy
LCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2Jp
dHNbdDFdCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKICAgICBy
ZXR1cm4odDMpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC05OTMsNyArOTk1LDcgQEAgbWFjcm8gYmlu
YXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRp
b25BbmRTdG9yZSwgZG8KICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQogCiAgICAgICAgIG1hY3Jv
IHByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisgICAgICAg
ICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSAr
IFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAgICAgIGdl
dChtX3JocywgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm0ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKaW5kZXgg
OTg4MWU0ZGJkMDMuLmM3MmY1MGU1ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXJtLnJiCkBAIC0yOTksNyArMjk5LDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAg
IGVuZAogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1lZEFkZHJl
c3Nlc0RvdWJsZShyZXN1bHQpCi0gICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1pc3BsYWNlZElt
bWVkaWF0ZXMocmVzdWx0LCBbInN0b3JlYiIsICJzdG9yZWkiLCAic3RvcmVwIiwgInN0b3JlcSJd
KQorICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKHJlc3VsdCwg
WyJzdG9yZWIiLCAic3RvcmVoIiwgInN0b3JlaSIsICJzdG9yZXAiLCAic3RvcmVxIl0pCiAgICAg
ICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMocmVzdWx0LCAwLi4weGZm
KQogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMocmVzdWx0KQog
ICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJSZWdpc3RlclJldXNlKHJlc3VsdCkKQEAgLTQxOCw3
ICs0MTgsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAgICAgIHdo
ZW4gImFuZGkiLCAiYW5kcCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJhbmRzIiwgImFu
ZCIsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICB3aGVuICJv
cmkiLCAib3JwIiwgIm9yaCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJzIiwgIm9y
ciIsIG9wZXJhbmRzKQogICAgICAgICB3aGVuICJvcmlzIgogICAgICAgICAgICAgZW1pdEFybUNv
bXBhY3QoIm9ycnMiLCAib3JycyIsIG9wZXJhbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hcm02NC5yYgppbmRleCA0Y2Q4ZjY2ZTMwMy4uZTJlNTRjZmJhY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBAIC0zNzgsNyArMzc4LDcgQEAg
Y2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAgICAgICAg
IHdoZW4gImxvYWRiIiwgImxvYWRic2kiLCAibG9hZGJzcSIsICJzdG9yZWIiLCAvXmJiLywgL15i
dGIvLCAvXmNiLywgL150Yi8KICAgICAgICAgICAgICAgICBzaXplID0gMQotICAgICAgICAgICAg
d2hlbiAibG9hZGgiLCAibG9hZGhzaSIsICJsb2FkaHNxIgorICAgICAgICAgICAgd2hlbiAibG9h
ZGgiLCAibG9hZGhzaSIsICJsb2FkaHNxIiwgIm9yaCIsICJzdG9yZWgiCiAgICAgICAgICAgICAg
ICAgc2l6ZSA9IDIKICAgICAgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIsICJzdG9yZWki
LCAiYWRkaSIsICJhbmRpIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwKICAgICAgICAgICAg
ICAgICAibm90aSIsICJvcmkiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwgInhvcmki
LCAvXmJpLywgL15idGkvLApAQCAtNDAyLDcgKzQwMiw3IEBAIGNsYXNzIFNlcXVlbmNlCiAgICAg
ICAgICAgICAgICAgZmFsc2UKICAgICAgICAgICAgIGVuZAogICAgICAgICB9Ci0gICAgICAgIHJl
c3VsdCA9IHJpc2NMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMocmVzdWx0LCBbInN0b3JlYiIsICJz
dG9yZWkiLCAic3RvcmVwIiwgInN0b3JlcSJdKQorICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJN
aXNwbGFjZWRJbW1lZGlhdGVzKHJlc3VsdCwgWyJzdG9yZWIiLCAic3RvcmVoIiwgInN0b3JlaSIs
ICJzdG9yZXAiLCAic3RvcmVxIl0pCiAgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1l
ZEltbWVkaWF0ZXMocmVzdWx0LCAwLi40MDk1KQogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJN
aXNwbGFjZWRBZGRyZXNzZXMocmVzdWx0KQogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNYWxm
b3JtZWRBZGRyZXNzZXMocmVzdWx0KSB7CkBAIC02MzEsNiArNjMxLDggQEAgY2xhc3MgSW5zdHJ1
Y3Rpb24KICAgICAgICAgICAgIGVtaXRBUk02NFRBQygib3JyIiwgb3BlcmFuZHMsIDpwdHIpCiAg
ICAgICAgIHdoZW4gIm9ycSIKICAgICAgICAgICAgIGVtaXRBUk02NFRBQygib3JyIiwgb3BlcmFu
ZHMsIDpxdWFkKQorICAgICAgICB3aGVuICJvcmgiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMo
Im9yciIsIG9wZXJhbmRzLCA6d29yZCkgIyBub3QgOmhhbGYgYmVjYXVzZSAxNi1iaXQgcmVnaXN0
ZXJzIGRvbid0IGV4aXN0IG9uIEFSTS4KICAgICAgICAgd2hlbiAieG9yaSIKICAgICAgICAgICAg
IGVtaXRBUk02NFRBQygiZW9yIiwgb3BlcmFuZHMsIDp3b3JkKQogICAgICAgICB3aGVuICJ4b3Jw
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgppbmRleCBiNzE0OWU4
MmFjYi4uYTY4MTZjYmNhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2Nsb29wLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Ns
b29wLnJiCkBAIC01ODUsNiArNTg1LDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAg
IGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDY0LCAifCIpCiAgICAgICAgIHdoZW4g
Im9ycCIKICAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludHB0ciwg
InwiKQorICAgICAgICB3aGVuICJvcmgiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24o
b3BlcmFuZHMsIDppbnQxNiwgInwiKQogCiAgICAgICAgIHdoZW4gInhvcmkiCiAgICAgICAgICAg
ICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIl4iKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCmluZGV4IDcxNzg4YjEw
ODM3Li4xNjc2NzU0YTA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vaW5zdHJ1Y3Rpb25zLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2luc3RydWN0aW9ucy5yYgpAQCAtNDIsNiArNDIsNyBAQCBNQUNST19JTlNUUlVDVElPTlMg
PQogICAgICAibmVncSIsCiAgICAgICJub3RpIiwKICAgICAgIm9yaSIsCisgICAgICJvcmgiLAog
ICAgICAicnNoaWZ0aSIsCiAgICAgICJ1cnNoaWZ0aSIsCiAgICAgICJyc2hpZnRwIiwKQEAgLTYw
LDYgKzYxLDcgQEAgTUFDUk9fSU5TVFJVQ1RJT05TID0KICAgICAgImxvYWRoc3EiLAogICAgICAi
c3RvcmVpIiwKICAgICAgInN0b3JlYiIsCisgICAgICJzdG9yZWgiLAogICAgICAibG9hZGQiLAog
ICAgICAibW92ZWQiLAogICAgICAic3RvcmVkIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9taXBzLnJiCmluZGV4IDllZWQyNTQ5OWVjLi4zNzZkNjk5ZDliNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCkBAIC01MjcsNyArNTI3LDcgQEAgZGVmIG1p
cHNMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMobGlzdCkKICAgICAgICAgICAgICAgICBlbmQKICAg
ICAgICAgICAgIHdoZW4gL14oYWRkaXxzdWJpKS8KICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IG5vZGUucmlzY0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCwgLTB4N2Zm
Zi4uMHg3ZmZmKQotICAgICAgICAgICAgd2hlbiAiYW5kaSIsICJhbmRwIiwgIm9yaSIsICJvcnAi
LCAieG9yaSIsICJ4b3JwIgorICAgICAgICAgICAgd2hlbiAiYW5kaSIsICJhbmRwIiwgIm9yaSIs
ICJvcnAiLCAib3JoIiwgInhvcmkiLCAieG9ycCIKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IG5vZGUucmlzY0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCwgMC4uMHhm
ZmZmKQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQpA
QCAtODYwLDcgKzg2MCw3IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBlbmQKICAg
ICAgICAgd2hlbiAiYW5kaSIsICJhbmRwIgogICAgICAgICAgICAgZW1pdE1JUFNDb21wYWN0KCJh
bmQiLCAiYW5kIiwgb3BlcmFuZHMpCi0gICAgICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICAg
IHdoZW4gIm9yaSIsICJvcnAiLCAib3JoIgogICAgICAgICAgICAgZW1pdE1JUFNDb21wYWN0KCJv
ciIsICJvcnIiLCBvcGVyYW5kcykKICAgICAgICAgd2hlbiAib3JpcyIKICAgICAgICAgICAgIGVt
aXRNSVBTQ29tcGFjdCgib3IiLCAib3JycyIsIG9wZXJhbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3Jpc2MucmIKaW5kZXggOGI4ZGU4ZDEyOGEuLmUwYWEyMzZiMmRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIKQEAgLTQ2MCw3ICs0NjAsNyBA
QCBkZWYgcmlzY0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKGxpc3QpCiAgICAgICAgICAgICBwb3N0
SW5zdHJ1Y3Rpb25zID0gW10KICAgICAgICAgICAgIGFubm90YXRpb24gPSBub2RlLmFubm90YXRp
b24KICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKLSAgICAgICAgICAgIHdoZW4gImFkZGki
LCAiYWRkaXMiLCAiYW5kaSIsICJsc2hpZnRpIiwgIm11bGkiLCAibmVnaSIsICJub3RpIiwgIm9y
aSIsICJvcmlzIiwKKyAgICAgICAgICAgIHdoZW4gImFkZGkiLCAiYWRkaXMiLCAiYW5kaSIsICJs
c2hpZnRpIiwgIm11bGkiLCAibmVnaSIsICJub3RpIiwgIm9yaSIsICJvcmgiLCAib3JpcyIsCiAg
ICAgICAgICAgICAgICAgInJzaGlmdGkiLCAidXJzaGlmdGkiLCAic3ViaSIsICJzdWJpcyIsICJ4
b3JpIiwgL15iaS8sIC9eYnRpLywgL15jaS8sIC9edGkvCiAgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCmluZGV4IDE2NmY0YmRhMTI3Li5kZmI0ZjljOGYzOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgpAQCAtODg1LDYgKzg4NSw4IEBAIGNs
YXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBoYW5kbGVYODZPcCgib3Ije3g4NlN1ZmZpeCg6
cHRyKX0iLCA6cHRyKQogICAgICAgICB3aGVuICJvcnEiCiAgICAgICAgICAgICBoYW5kbGVYODZP
cCgib3Ije3g4NlN1ZmZpeCg6cXVhZCl9IiwgOnF1YWQpCisgICAgICAgIHdoZW4gIm9yaCIKKyAg
ICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvciN7eDg2U3VmZml4KDpoYWxmKX0iLCA6aGFsZikKICAg
ICAgICAgd2hlbiAicnNoaWZ0aSIKICAgICAgICAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYXIje3g4
NlN1ZmZpeCg6aW50KX0iLCA6aW50KQogICAgICAgICB3aGVuICJyc2hpZnRwIgpAQCAtOTcxLDYg
Kzk3Myw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBlbmQKICAgICAgICAgd2hl
biAic3RvcmViIgogICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Yje3g4NlN1ZmZpeCg6Ynl0ZSl9
ICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgICAgIHdoZW4gInN0b3JlaCIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAibW92I3t4ODZTdWZmaXgoOmhhbGYpfSAje3g4Nk9wZXJhbmRz
KDpoYWxmLCA6aGFsZil9IgogICAgICAgICB3aGVuICJsb2FkZCIKICAgICAgICAgICAgICRhc20u
cHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCiAgICAgICAgIHdo
ZW4gIm1vdmVkIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1
bHRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAppbmRl
eCA5YjNkMGQ3NGM4ZC4uNTYyMmYyODljYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUmVzdWx0VHlwZS5oCkBAIC00OCw2ICs0OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbnVtQml0c05lZWRlZCA9IDc7CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoKFR5cGVCaXRzICYgKCgxIDw8IG51bUJpdHNOZWVkZWQpIC0gMSkpID09IFR5cGVC
aXRzLCAiVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLiIpOwogCisgICAgICAgIGNv
bnN0ZXhwciBleHBsaWNpdCBSZXN1bHRUeXBlKCkKKyAgICAgICAgICAgIDogUmVzdWx0VHlwZSh1
bmtub3duVHlwZSgpKQorICAgICAgICB7CisgICAgICAgIH0KICAgICAgICAgY29uc3RleHByIGV4
cGxpY2l0IFJlc3VsdFR5cGUoVHlwZSB0eXBlKQogICAgICAgICAgICAgOiBtX2JpdHModHlwZSkK
ICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKaW5kZXggODY2ZDJhOWMyZTMuLjcyZTA0MDkxNTRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQ3Niw4
ICs0NzYsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fc3RyaW5nKQogI2lmIEVOQUJM
RShKSVQpCiBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AoT3BO
ZWdhdGU6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNWYWx1ZSByZXN1bHQsIEpTVmFsdWUgb3BlcmFu
ZCkKIHsKLSAgICBBcml0aFByb2ZpbGUmIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FyaXRoUHJvZmls
ZTsKLSAgICBwcm9maWxlLm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgVW5hcnlBcml0aFByb2Zp
bGUmIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZTsKKyAgICBwcm9maWxlLm9ic2Vy
dmVBcmcob3BlcmFuZCk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpIHx8IHJlc3VsdC5p
c0JpZ0ludCgpKTsKICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgaWYgKCFy
ZXN1bHQuaXNJbnQzMigpKSB7CkBAIC01MzQsNyArNTM0LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX25lZ2F0ZSkKICNpZiBFTkFCTEUoREZHX0pJVCkKIHN0YXRpYyB2b2lkIHVwZGF0ZUFy
aXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIHJlc3VsdCwgSlNWYWx1ZSBs
ZWZ0LCBKU1ZhbHVlIHJpZ2h0KQogewotICAgIEFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9ICpjb2Rl
QmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKHBjKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUmIHBy
b2ZpbGUgPSAqY29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhwYyk7CiAKICAgICBp
ZiAocmVzdWx0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7
CkBAIC01OTUsNyArNTk1LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FkZCkKICAgICBK
U1ZhbHVlIHYxID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVl
IHYyID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIEFyaXRoUHJvZmls
ZSYgYXJpdGhQcm9maWxlID0gKmNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yUEMocGMpOworICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJp
dGhQcm9maWxlRm9yUEMocGMpOwogICAgIGFyaXRoUHJvZmlsZS5vYnNlcnZlTEhTQW5kUkhTKHYx
LCB2Mik7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQWRkKGdsb2JhbE9iamVjdCwgdjEsIHYy
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382693</attachid>
            <date>2019-11-02 22:28:57 -0700</date>
            <delta_ts>2019-11-07 15:07:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>123598</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDIzMDYxMzA2NzE2Li5mZjcwM2U5OTU1YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY4IEBACisyMDE5LTEwLTE0ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGltZSBvbmx5IHVzZWQgZm9y
IGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQgYmVpbmcgdXNlZCBmb3Ig
bmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1c2VkIGZvciBpbmMgYW5k
IGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBhdGNoIEkgbWFrZSBhIHNl
cGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3IgYSBzaW5nbGUgYXJndW1l
bnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisKKyAgICAgICAgQWZ0ZXIg
ZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXplZCB0aGF0IHRoZSBSZXN1
bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQcm9maWxlIGFyZSBub3Qg
bmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFscmVhZHkgaW4gdGhlIGJ5
dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3ZpbmcgdGhlbSBhbGxvd2Vk
IHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBmaXQgaW4gMTYgYml0cyAo
OSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRoZSB0d28ga2luZHMgc2Vw
YXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRlcGVuZGVudGx5IGluIHRo
ZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlcXVpcmVkIGFkZGluZyB0aGUgIm9yaCIg
aW5zdHJ1Y3Rpb24gdG8gdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCB0byBzZXQgYml0cyBpbiB0aGUg
QXJpdGhQcm9maWxlLgorICAgICAgICBUaGlzIGluIHR1cm4gbW90aXZhdGVkIHRoZSBhZGRpdGlv
biBvZiAic3RvcmVoIiwgYXMgb24gUklTQyBwbGF0Zm9ybXMgIm9yaCIgb24gYSBtZW1vcnkgbG9j
YXRpb24gaXMgYWN0dWFsbHkgbG9hZGggLT4gb3JoIC0+IHN0b3JlaC4KKworICAgICAgICAqIGJ5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51
bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6
c2hvdWxkRW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50IGNvbnN0KToKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbkludDMyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlRG91YmxlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOb25OdW1lcmlj
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlQmlnSW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlSW50MzJPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDUyT3Zl
cmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkTm9u
TmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRO
ZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5v
bk51bWVyaWMpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3cp
OgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkSW50NTJPdmVyZmxvdyk6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChK
U0M6OkFyaXRoUHJvZmlsZTo6YWRkcmVzc09mQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFy
aXRoUHJvZmlsZTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6QXJp
dGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpoYXNCaXRzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRCaXQpOgorICAgICAgICAoSlNDOjpVbmFy
eUFyaXRoUHJvZmlsZTo6VW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpVbmFyeUFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFBy
b2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlOjphcmdPYnNlcnZlZFR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJv
ZmlsZTo6c2V0QXJnT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2Zp
bGU6OmFyZ1Nhd0ludDMyKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nh
d051bWJlcik6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdOb25OdW1i
ZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZUFyZyk6CisgICAg
ICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpCaW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cyk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMpOgorICAg
ICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cyk6
CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6c2V0TGhzT2JzZXJ2ZWRUeXBlKToK
KyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpzZXRSaHNPYnNlcnZlZFR5cGUpOgor
ICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFMpOgorICAgICAgICAo
SlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVMSFNBbmRSSFMpOgorICAgICAgICAoSlND
OjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2ZWRUeXBlRW1wdHkpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVEFkZElDKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklU
U3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElD
KToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6Ok1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bWFrZURpdlNhZmUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJ
Qyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlN
YXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJp
dGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRB
ZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKiBqaXQvSklUQWRkR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJ
Q0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAgKiBqaXQvSklURGl2R2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJ
VERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZSk6CisgICAgICAgICog
aml0L0pJVE1hdGhJQy5oOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OkpJVE1hdGhJQyk6Cisg
ICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpK
SVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25zdCk6CisgICAgICAgIChKU0M6OmlzQmluYXJ5UHJv
ZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6SklUQmluYXJ5TWF0aElDOjpKSVRCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjppc1VuYXJ5UHJvZmlsZUVtcHR5KToKKyAgICAgICAgKEpTQzo6
SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAgICAgICAgKiBqaXQvSklUTXVsR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVROZWdHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJ
VFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBsbGludC9M
TEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBl
OjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6CisgICAgICAg
IChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTEtMDIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvcjI1
MTg3NQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJv
ZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNw
cAppbmRleCA5OTk5MzNiOGMwZS4uN2Y0NmY3M2ZjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCkBAIC0zMiw3ICszMiw4IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9i
c2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lz
dGVyc01vZGUgbW9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJp
dGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYg
aml0LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCiB7CiAgICAgaWYg
KCFzaG91bGRFbWl0U2V0RG91YmxlKCkgJiYgIXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYg
IXNob3VsZEVtaXRTZXRCaWdJbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNDEgKzU5LDUx
IEBAIHZvaWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGpp
dCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnCiAgICAgZG9uZS5saW5rKCZqaXQpOwogfQogCi1i
b29sIEFyaXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpz
aG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3QKIHsKLSAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQ
cm9maWxlOjpJbnQzMk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJp
dGhQcm9maWxlOjpOZWdaZXJvRG91YmxlIHwgQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91Ymxl
OworICAgIHVpbnQzMl90IG1hc2sgPSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5l
Z1plcm9Eb3VibGUgfCBOb25OZWdaZXJvRG91YmxlOwogICAgIHJldHVybiAobV9iaXRzICYgbWFz
aykgIT0gbWFzazsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXREb3VibGUoQ0NhbGxI
ZWxwZXJzJiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lk
IEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYg
aml0KSBjb25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0RG91YmxlKCkpCi0gICAgICAgIGpp
dC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50MzJPdmVy
ZmxvdyB8IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVy
b0RvdWJsZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6
QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5l
Z1plcm9Eb3VibGUgfCBOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFk
ZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRF
bWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+
Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJp
YygpIGNvbnN0CiB7CiAgICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJp
YzsKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLWJvb2wgQXJpdGhQ
cm9maWxlOjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJp
dGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRT
ZXRCaWdJbnQoKSBjb25zdAogewogICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6OkJp
Z0ludDsKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLXZvaWQgQXJp
dGhQcm9maWxlOjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3Rl
bXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxk
VHlwZT46OmVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAg
IGlmIChzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWMpLCBDQ2FsbEhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoTm9uTnVtZXJpYyksIENDYWxsSGVscGVyczo6QWJz
b2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6
ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1l
IEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRC
aWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXRC
aWdJbnQoKSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJp
dGhQcm9maWxlOjpCaWdJbnQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNz
T2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
QmlnSW50KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7
CiB9CisKKy8vIEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBh
Ym92ZSBmb3IgVW5hcnlBcml0aFByb2ZpbGUvQmluYXJ5QXJpdGhQcm9maWxlCisvLyBJZiBjaGFu
Z2luZyB0aGUgc2l6ZSBvZiBlaXRoZXIsIGFkZCB0aGUgY29ycmVzcG9uZGluZyBsaW5lcyBoZXJl
LgordGVtcGxhdGUgY2xhc3MgQXJpdGhQcm9maWxlPHVpbnQxNl90PjsKICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKQEAgLTEwMSw3ICsxMTIsOCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBBcml0aFByb2ZpbGU8VD4mIHByb2ZpbGUpCiB7CiAgICAgY29uc3QgY2hhciogc2VwYXJhdG9y
ID0gIiI7CiAKQEAgLTEzNSwxOSArMTQ3LDMwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCiAgICAgICAgICAgICBzZXBh
cmF0b3IgPSAifCI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHByb2ZpbGUudG9va1NwZWNp
YWxGYXN0UGF0aCgpKQotICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiVG9vayBzcGVjaWFs
IGZhc3QgcGF0aC4iKTsKICAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQor
eworICAgIHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlB
cml0aFByb2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisgICAgb3V0LnByaW50KCIgQXJnIE9ic2Vy
dmVkVHlwZTo8Iik7CisgICAgb3V0LnByaW50KHByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkpOwor
ICAgIG91dC5wcmludCgiPiIpOworfQorCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAgIHByaW50SW50
ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNl
Pj4ocHJvZmlsZSkpOworCisgICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0UGF0aCgpKQor
ICAgICAgICBvdXQucHJpbnQoIiBUb29rIHNwZWNpYWwgZmFzdCBwYXRoLiIpOwogCiAgICAgb3V0
LnByaW50KCIgTEhTIE9ic2VydmVkVHlwZTo8Iik7CiAgICAgb3V0LnByaW50KHByb2ZpbGUubGhz
T2JzZXJ2ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgiPiBSSFMgT2JzZXJ2ZWRUeXBlOjwiKTsK
ICAgICBvdXQucHJpbnQocHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKSk7CiAgICAgb3V0LnByaW50
KCI+Iik7Ci0KLSAgICBvdXQucHJpbnQoIiBMSFMgUmVzdWx0VHlwZTo8IiwgUmF3UG9pbnRlcihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocHJvZmlsZS5saHNSZXN1
bHRUeXBlKCkuYml0cygpKSkpKTsKLSAgICBvdXQucHJpbnQoIj4gUkhTIFJlc3VsdFR5cGU6PCIs
IFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHBy
b2ZpbGUucmhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7Ci0gICAgb3V0LnByaW50KCI+Iik7CiB9
CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBKU0M6Ok9ic2Vy
dmVkVHlwZSYgb2JzZXJ2ZWRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FyaXRoUHJvZmlsZS5oCmluZGV4IGZjYzRlMjgxOGJlLi5jYWQ5OWY0OGJhNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNjYsMTE5ICs2
NiwyMTcgQEAgcHJpdmF0ZToKICAgICB1aW50OF90IG1fYml0cyB7IDAgfTsKIH07CiAKLXN0cnVj
dCBBcml0aFByb2ZpbGUgewotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IG51bWJlck9mRmxhZ0JpdHMgPSA2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgcmhz
UmVzdWx0VHlwZVNoaWZ0ID0gbnVtYmVyT2ZGbGFnQml0czsKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQzMl90IGxoc1Jlc3VsdFR5cGVTaGlmdCA9IHJoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3Vs
dFR5cGU6Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNP
YnNlcnZlZFR5cGVTaGlmdCA9IGxoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6Om51bUJp
dHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNPYnNlcnZlZFR5cGVT
aGlmdCA9IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVk
OwotCi0gICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPT0gMywg
IldlIG1ha2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQgdGhhdCBoZXJlLiIpOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KH4oKDEgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKHJo
c09ic2VydmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKHJoc09ic2VydmVkVHlwZVNoaWZ0ICsg
MikpKSk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjbGVhckxoc09ic2VydmVkVHlw
ZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ofigoMSA8PCBsaHNPYnNlcnZlZFR5cGVT
aGlmdCkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyAxKSkgfCAoMSA8PCAobGhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQgKyAyKSkpKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
cmVzdWx0VHlwZU1hc2sgPSAoMSA8PCBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2Jz
ZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQml0Zmll
bGRUeXBlPgorY2xhc3MgQXJpdGhQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBlbnVtIE9ic2VydmVk
UmVzdWx0cyB7CisgICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8IDAsCisgICAgICAgIE5l
Z1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCisgICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8
IDIsCisgICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCisgICAgICAgIEludDUyT3Zl
cmZsb3cgICAgPSAxIDw8IDQsCisgICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCisg
ICAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2VydmVkUmVzdWx0c051bUJp
dHNOZWVkZWQgPSA2OwogCi0gICAgZW51bSBjbGFzcyBDb25zdGFudFRhZyB7IENvbnN0YW50IH07
CisgICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5v
bk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0K
KyAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5l
Z1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5l
Z1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9
CisgICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0Jp
dHMoTmVnWmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29u
c3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUJp
Z0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQorICAgIGJvb2wgZGlkT2Jz
ZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cp
OyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhh
c0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KIAotcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3Qgc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQg
KyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRpY19hc3NlcnQoKGxoc09i
c2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSA8PSAoc2l6ZW9m
KHVpbnQzMl90KSAqIDgpIC0gMSwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBl
Qml0TWFzayksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRp
Y19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNr
LCAiVGhlc2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIpOwotICAgIHN0YXRpY19hc3NlcnQoc3Bl
Y2lhbEZhc3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJp
dHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0aEJpdCBzaG91bGQgYmUg
YSBoaWdoZXIgYml0LiIpOworICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkg
eyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVy
b0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZl
ZE5vbk51bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2
ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJbnQpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEludDMy
T3ZlcmZsb3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2
ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KIAotICAgIEFyaXRo
UHJvZmlsZShSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUoQ29uc3RhbnRU
YWc6OkNvbnN0YW50LCBhcmcpCisgICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUp
CiAgICAgewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSBhcmcuYml0
cygpKTsKLSAgICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7Ci0gICAg
ICAgIEFTU0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOworICAgICAgICBpZiAodmFs
dWUuaXNJbnQzMigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodmFsdWUuaXNO
dW1iZXIoKSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92
ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGU7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzQmlnSW50KCkp
IHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgbV9iaXRzIHw9IE5vbk51bWVyaWM7CiAgICAgfQogCi0gICAgQXJp
dGhQcm9maWxlKFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBBcml0
aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBsaHMsIHJocykKKyAgICBjb25zdCB2b2lk
KiBhZGRyZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4gJm1fYml0czsgfQorCisjaWYgRU5BQkxF
KEpJVCkKKyAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5l
Z1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKKyAgICAvLyBkb3VibGUu
IFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCisgICAgdm9pZCBlbWl0
T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9k
ZSA9IEhhdmVUYWdSZWdpc3RlcnMpOworCisgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IElu
dDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCisgICAgYm9v
bCBzaG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CisgICAgdm9pZCBlbWl0U2V0RG91YmxlKEND
YWxsSGVscGVycyYpIGNvbnN0OworCisgICAgLy8gU2V0cyBOb25OdW1iZXIuCisgICAgdm9pZCBl
bWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVt
aXRTZXROb25OdW1lcmljKCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIEJpZ0ludAorICAgIHZvaWQg
ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVtaXRT
ZXRCaWdJbnQoKSBjb25zdDsKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisgICAgY29uc3RleHBy
IHVpbnQzMl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworcHJvdGVjdGVkOgor
ICAgIEFyaXRoUHJvZmlsZSgpCiAgICAgewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgp
LmJpdHMoKSA9PSBsaHMuYml0cygpICYmIHJoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gcmhzLmJp
dHMoKSk7Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAg
ICAgICBBU1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKICAgICB9CiAKLSAgICBB
cml0aFByb2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVzKQotICAgICAgICA6IEFyaXRoUHJvZmlsZSh0
eXBlcy5maXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkKLSAgICB7IH0KKyAgICBib29sIGhhc0JpdHMo
aW50IG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIG1hc2s7IH0KKyAgICB2b2lkIHNldEJp
dChpbnQgbWFzaykgeyBtX2JpdHMgfD0gbWFzazsgfQorCisgICAgQml0ZmllbGRUeXBlIG1fYml0
cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmds
ZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXBy
ZXNlbnRhdGlvbiB0byBpdC4KK307CisKKy8qIFRoaXMgY2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dp
bmcgY29tcG9uZW50cyBpbiAxNiBiaXRzOgorICogLSBPYnNlcnZlZFJlc3VsdHMKKyAqIC0gT2Jz
ZXJ2ZWRUeXBlIGZvciB0aGUgYXJndW1lbnQKKyAqLwordXNpbmcgVW5hcnlBcml0aFByb2ZpbGVC
YXNlID0gdWludDE2X3Q7CitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFBy
b2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBhcmdPYnNlcnZlZFR5cGVTaGlmdCA9IG9ic2VydmVkUmVzdWx0c051bUJpdHNOZWVkZWQ7
CiAKLSAgICBBcml0aFByb2ZpbGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljX2Fzc2VydChhcmdP
YnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA8PSBzaXplb2Yo
VW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGluIGEgdGhlIHR5cGUgb2Yg
dGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRo
UHJvZmlsZSBmcm9tSW50KHVpbnQzMl90IGJpdHMpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFy
eUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nh
c3Q8VW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0
KSk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZl
ZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7CisKK3B1
YmxpYzoKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPFVu
YXJ5QXJpdGhQcm9maWxlQmFzZT4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEFyaXRoUHJvZmls
ZSB7IENvbnN0YW50VGFnOjpDb25zdGFudCwgYml0cyB9OworICAgICAgICBBU1NFUlQoYXJnT2Jz
ZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgp
LmlzRW1wdHkoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUg
b2JzZXJ2ZWRVbmFyeUludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmls
ZUJhc2Ugb2JzZXJ2ZWRJbnRCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZl
ZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAg
ICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhz
T2JzZXJ2ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDgwMDAw
MCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHBy
IFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgYXJn
T2JzZXJ2ZWRUeXBlU2hpZnQ7CisgICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0
aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZFVuYXJ5TnVtYmVyKCkKKyAgICBzdGF0
aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJlckJpdHMoKQog
ICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9i
c2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3Qg
Yml0cyA9IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4MTAwMDAwMCwgIiIpOwotICAgICAgICByZXR1
cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZSBiaXRzID0gb2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0Owor
ICAgICAgICByZXR1cm4gYml0czsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBl
IGFyZ09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+
IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CisgICAgdm9pZCBz
ZXRBcmdPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCisgICAgeworICAgICAgICBVbmFy
eUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKKyAgICAgICAgYml0cyAmPSBjbGVhckFy
Z09ic2VydmVkVHlwZUJpdE1hc2s7CisgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgYXJn
T2JzZXJ2ZWRUeXBlU2hpZnQ7CisgICAgICAgIG1fYml0cyA9IGJpdHM7CisgICAgICAgIEFTU0VS
VChhcmdPYnNlcnZlZFR5cGUoKSA9PSB0eXBlKTsKKyAgICB9CisKKyAgICB2b2lkIGFyZ1Nhd0lu
dDMyKCkgeyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkp
OyB9CisgICAgdm9pZCBhcmdTYXdOdW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNl
cnZlZFR5cGUoKS53aXRoTnVtYmVyKCkpOyB9CisgICAgdm9pZCBhcmdTYXdOb25OdW1iZXIoKSB7
IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9
CisKKyAgICB2b2lkIG9ic2VydmVBcmcoSlNWYWx1ZSBhcmcpCisgICAgeworICAgICAgICBVbmFy
eUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIGlmIChhcmcuaXNOdW1i
ZXIoKSkgeworICAgICAgICAgICAgaWYgKGFyZy5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAg
bmV3UHJvZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIG5ld1Byb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgbmV3UHJvZmlsZS5hcmdTYXdOb25OdW1iZXIoKTsKKworICAgICAgICBtX2JpdHMgPSBuZXdQ
cm9maWxlLmJpdHMoKTsKKyAgICB9CisKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKKyAgICB9
CisKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7Cit9OworCisv
KiBUaGlzIGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMgaW4gMTYgYml0czoK
KyAqIC0gT2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgcmlnaHQtaGFuZC1z
aWRlCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgbGVmdC1oYW5kLXNpZGUKKyAqIC0gYSBiaXQgdXNl
ZCBieSBkaXZpc2lvbiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgc3BlY2lhbCBmYXN0IHBhdGggd2Fz
IHRha2VuCisgKi8KK3VzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50MTZfdDsKK2Ns
YXNzIEJpbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQ
cm9maWxlQmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRU
eXBlU2hpZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlm
dCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsKKworICAgIHN0YXRpY19hc3NlcnQoT2Jz
ZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJXZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9u
IGFib3V0IHRoYXQgaGVyZS4iKTsKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJv
ZmlsZUJhc2UgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8QmluYXJ5
QXJpdGhQcm9maWxlQmFzZT4ofigwYjExMSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCkpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckxoc09ic2VydmVk
VHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBiMTEx
IDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFy
eUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6
bnVtQml0c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5h
cnlBcml0aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVk
VHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCAr
IDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91bGQgZml0IGlu
IGEgdWludDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJpdCAm
IH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90IGlu
dGVyc2VjdC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNsZWFy
TGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4iKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCA+IH5jbGVhckxoc09ic2VydmVk
VHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVjaWFs
RmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKKworICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+
ICgpCisgICAgeworICAgICAgICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsK
KyAgICAgICAgQVNTRVJUKHJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQotICAg
IHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5SW50SW50KCkKKwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZEludElu
dEJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZElu
dDMyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVp
bnQzMl90IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hp
ZnQpIHwgKG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4OTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVy
biBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFz
ZSBiaXRzID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8
IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7CisgICAgICAg
IHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBv
YnNlcnZlZEJpbmFyeU51bWJlckludCgpCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0
aFByb2ZpbGVCYXNlIG9ic2VydmVkTnVtYmVySW50Qml0cygpCiAgICAgewogICAgICAgICBjb25z
dGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51
bWJlcigpIH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7
IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJf
dCBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkg
fCAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBm
cm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBi
aXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAo
b2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICBy
ZXR1cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2Jz
ZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQ
cm9maWxlQmFzZSBvYnNlcnZlZEludE51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3Rl
eHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1i
ZXIoKSB9OwogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBP
YnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3Qg
Yml0cyA9IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAo
b2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChiaXRzID09IDB4YTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9t
SW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRz
ID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNl
cnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1
cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2
ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQ
cm9maWxlQmFzZSBvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29u
c3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhO
dW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51
bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJp
dHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0
cyA9PSAweDEyMDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAg
ICAgIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1i
ZXIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRz
KCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9
CiAKLSAgICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7Ci0gICAgICAgIE5vbk5lZ1plcm9Eb3VibGUg
PSAxIDw8IDAsCi0gICAgICAgIE5lZ1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCi0gICAgICAgIE5v
bk51bWVyaWMgICAgICAgPSAxIDw8IDIsCi0gICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8
IDMsCi0gICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCi0gICAgICAgIEJpZ0ludCAg
ICAgICAgICAgPSAxIDw8IDUsCi0gICAgfTsKLQotICAgIFJlc3VsdFR5cGUgbGhzUmVzdWx0VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUoKG1fYml0cyA+PiBsaHNSZXN1bHRUeXBlU2hp
ZnQpICYgcmVzdWx0VHlwZU1hc2spOyB9Ci0gICAgUmVzdWx0VHlwZSByaHNSZXN1bHRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gUmVzdWx0VHlwZSgobV9iaXRzID4+IHJoc1Jlc3VsdFR5cGVTaGlmdCkg
JiByZXN1bHRUeXBlTWFzayk7IH0KLQogICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgbGhzT2Jz
ZXJ2ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gT2JzZXJ2ZWRUeXBlKChtX2JpdHMgPj4gbGhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBlTWFzayk7IH0KICAgICBjb25zdGV4cHIgT2Jz
ZXJ2ZWRUeXBlIHJoc09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgo
bV9iaXRzID4+IHJoc09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CiAg
ICAgdm9pZCBzZXRMaHNPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCiAgICAgewotICAg
ICAgICB1aW50MzJfdCBiaXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVC
YXNlIGJpdHMgPSBtX2JpdHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJMaHNPYnNlcnZlZFR5cGVC
aXRNYXNrOwogICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNo
aWZ0OwogICAgICAgICBtX2JpdHMgPSBiaXRzOwpAQCAtMTg3LDcgKzI4NSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0UmhzT2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsg
Ci0gICAgICAgIHVpbnQzMl90IGJpdHMgPSBtX2JpdHM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZUJhc2UgYml0cyA9IG1fYml0czsKICAgICAgICAgYml0cyAmPSBjbGVhclJoc09ic2VydmVk
VHlwZUJpdE1hc2s7CiAgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRU
eXBlU2hpZnQ7CiAgICAgICAgIG1fYml0cyA9IGJpdHM7CkBAIC0xOTYsMzkgKzI5NCw2IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgdG9va1NwZWNpYWxGYXN0UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIHNwZWNpYWxGYXN0UGF0aEJpdDsgfQogCi0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50
MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91
YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0KLSAgICBib29sIGRpZE9ic2VydmVEb3VibGUo
KSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91Ymxl
KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVy
b0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBi
b29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1l
cmljKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0Jp
dHMoQmlnSW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7
IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50
NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KLQot
ICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVy
b0RvdWJsZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0
KE5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNl
dEJpdChOb25OdW1lcmljKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJp
dChCaWdJbnQpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJp
dChJbnQzMk92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkg
eyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJp
dHMoKSBjb25zdCB7IHJldHVybiAmbV9iaXRzOyB9Ci0KLSAgICB2b2lkIG9ic2VydmVSZXN1bHQo
SlNWYWx1ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAg
ICAgICBtX2JpdHMgfD0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJv
RG91YmxlIHwgTmVnWmVyb0RvdWJsZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewotICAgICAgICAgICAgbV9i
aXRzIHw9IEJpZ0ludDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBt
X2JpdHMgfD0gTm9uTnVtZXJpYzsKLSAgICB9Ci0KICAgICB2b2lkIGxoc1Nhd0ludDMyKCkgeyBz
ZXRMaHNPYnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkpOyB9CiAgICAg
dm9pZCBsaHNTYXdOdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUo
KS53aXRoTnVtYmVyKCkpOyB9CiAgICAgdm9pZCBsaHNTYXdOb25OdW1iZXIoKSB7IHNldExoc09i
c2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVtYmVyKCkpOyB9CkBAIC0yMzgs
NyArMzAzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBvYnNlcnZlTEhTKEpTVmFsdWUgbGhzKQog
ICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKKyAgICAgICAg
QmluYXJ5QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKICAgICAgICAgaWYgKGxocy5p
c051bWJlcigpKSB7CiAgICAgICAgICAgICBpZiAobGhzLmlzSW50MzIoKSkKICAgICAgICAgICAg
ICAgICBuZXdQcm9maWxlLmxoc1Nhd0ludDMyKCk7CkBAIC0yNTQsNyArMzE5LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgb2JzZXJ2ZUxIUyhsaHMpOwogCi0gICAgICAgIEFyaXRoUHJvZmls
ZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9m
aWxlID0gKnRoaXM7CiAgICAgICAgIGlmIChyaHMuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAg
aWYgKHJocy5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5yaHNTYXdJbnQz
MigpOwpAQCAtMjY2LDQ3ICszMzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2JpdHMgPSBuZXdQ
cm9maWxlLmJpdHMoKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoSklUKSAgICAKLSAgICAvLyBTZXRz
IChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWda
ZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKLSAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBp
ZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCi0gICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2Fs
bEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3Rl
cnMpOwotICAgIAotICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwg
Tm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgotICAgIGJvb2wgc2hvdWxkRW1pdFNl
dERvdWJsZSgpIGNvbnN0OwotICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBj
b25zdDsKLSAgICAKLSAgICAvLyBTZXRzIE5vbk51bWJlci4KLSAgICB2b2lkIGVtaXRTZXROb25O
dW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51
bWVyaWMoKSBjb25zdDsKLQotICAgIC8vIFNldHMgQmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0Qmln
SW50KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgp
IGNvbnN0OwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLSAgICBjb25zdGV4cHIgdWludDMyX3Qg
Yml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0ZXhw
ciBleHBsaWNpdCBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWcsIHVpbnQzMl90IGJpdHMpCi0gICAg
ICAgIDogbV9iaXRzKGJpdHMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBBcml0aFBy
b2ZpbGUoQ29uc3RhbnRUYWcsIFJlc3VsdFR5cGUgYXJnKQotICAgICAgICA6IG1fYml0cyhhcmcu
Yml0cygpIDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1w
dHkoKQogICAgIHsKKyAgICAgICAgcmV0dXJuIGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSAm
JiByaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgY29uc3RleHByIEFy
aXRoUHJvZmlsZShDb25zdGFudFRhZywgUmVzdWx0VHlwZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQot
ICAgICAgICA6IG1fYml0cygobGhzLmJpdHMoKSA8PCBsaHNSZXN1bHRUeXBlU2hpZnQpIHwgKHJo
cy5iaXRzKCkgPDwgcmhzUmVzdWx0VHlwZVNoaWZ0KSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9v
bCBoYXNCaXRzKGludCBtYXNrKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBtYXNrOyB9Ci0gICAg
dm9pZCBzZXRCaXQoaW50IG1hc2spIHsgbV9iaXRzIHw9IG1hc2s7IH0KLQotICAgIHVpbnQzMl90
IG1fYml0cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBh
IHNpbmdsZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJp
dCByZXByZXNlbnRhdGlvbiB0byBpdC4KLQogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIH07CiAKQEAgLTMxNCw3ICszNDMsOCBAQCBwcml2YXRlOgogCiBuYW1l
c3BhY2UgV1RGIHsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlND
OjpBcml0aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0
IEpTQzo6VW5hcnlBcml0aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYsIGNvbnN0IEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlJik7CiB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6Ok9ic2VydmVkVHlwZSYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CmluZGV4IGQ2NTJiNjU4ODRjLi4yNjI4Y2NjZjkxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVzIFsK
ICAgICA6SlNUeXBlLAogICAgIDpKU1ZhbHVlLAogICAgIDpMTEludENhbGxMaW5rSW5mbywKKyAg
ICA6UmVzdWx0VHlwZSwKICAgICA6T3BlcmFuZFR5cGVzLAogICAgIDpQcm9maWxlVHlwZUJ5dGVj
b2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZzZXQsCkBAIC01OCw3ICs1OSw4IEBAIHR5cGVzIFsK
IAogICAgIDpWYWx1ZVByb2ZpbGUsCiAgICAgOlZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIs
Ci0gICAgOkFyaXRoUHJvZmlsZSwKKyAgICA6VW5hcnlBcml0aFByb2ZpbGUsCisgICAgOkJpbmFy
eUFyaXRoUHJvZmlsZSwKICAgICA6QXJyYXlQcm9maWxlLAogICAgIDpBcnJheUFsbG9jYXRpb25Q
cm9maWxlLAogICAgIDpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwKQEAgLTI4MywxMCArMjg1LDcg
QEAgb3BfZ3JvdXAgOlByb2ZpbGVkQmluYXJ5T3AsCiAgICAgICAgIG9wZXJhbmRUeXBlczogT3Bl
cmFuZFR5cGVzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxl
OiBBcml0aFByb2ZpbGUKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAg
ICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBC
aW5hcnlBcml0aFByb2ZpbGUKICAgICB9CiAKIG9wX2dyb3VwIDpWYWx1ZVByb2ZpbGVkQmluYXJ5
T3AsCkBAIC0zNjgsMTMgKzM2NywxMCBAQCBvcCA6bmVnYXRlLAogICAgIGFyZ3M6IHsKICAgICAg
ICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgb3BlcmFuZFR5cGVzOiBPcGVyYW5kVHlwZXMsCisgICAgICAgIHJlc3VsdFR5
cGU6IFJlc3VsdFR5cGUsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0aFBy
b2ZpbGU6IEFyaXRoUHJvZmlsZSwKLSAgICB9LAotICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczog
ewotICAgICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9m
aWxlOiBVbmFyeUFyaXRoUHJvZmlsZSwKICAgICB9CiAKIG9wIDpub3QsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDVlYzI0NmM5MWQ4Li5hMGFj
OTBjYWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKQEAgLTE0NzgsMjUgKzE0NzgsMjUgQEAgU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6
YWRkU3R1YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIHJldHVybiBlbnN1cmVKSVRE
YXRhKGxvY2tlcikubV9zdHViSW5mb3MuYWRkKGFjY2Vzc1R5cGUpOwogfQogCi1KSVRBZGRJQyog
Q29kZUJsb2NrOjphZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVEFk
ZElDKiBDb2RlQmxvY2s6OmFkZEpJVEFkZElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1
cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fYWRkSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQog
Ci1KSVRNdWxJQyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSkKK0pJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2Nr
KTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbXVsSUNzLmFkZChhcml0aFBy
b2ZpbGUpOwogfQogCi1KSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSkKK0pJVFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3ViSUNz
LmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJ
QyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJ
VE5lZ0lDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tl
cikubV9uZWdJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CkBAIC0zMDgzLDE2ICszMDgzLDE5IEBAIGNv
bnN0IEluc3RydWN0aW9uKiBDb2RlQmxvY2s6Om91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5z
dHJ1Y3Rpb24qIHBjKQogICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKS5hdChvZmZzZXQgKyB0YXJn
ZXQpLnB0cigpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCitCaW5hcnlBcml0aFBy
b2ZpbGUqIENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgcmV0dXJuIGFyaXRoUHJvZmlsZUZvclBD
KGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpKTsKKyAgICBy
ZXR1cm4gYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKSkucHRyKCkpOwogfQogCi1Bcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJp
dGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQorVW5hcnlBcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvZGVJbmRleCkKK3sKKyAgICByZXR1cm4gdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhp
bnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKSk7Cit9CisKK0Jp
bmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25z
dCBJbnN0cnVjdGlvbiogcGMpCiB7CiAgICAgc3dpdGNoIChwYy0+b3Bjb2RlSUQoKSkgewotICAg
IGNhc2Ugb3BfbmVnYXRlOgotICAgICAgICByZXR1cm4gJnBjLT5hczxPcE5lZ2F0ZT4oKS5tZXRh
ZGF0YSh0aGlzKS5tX2FyaXRoUHJvZmlsZTsKICAgICBjYXNlIG9wX2FkZDoKICAgICAgICAgcmV0
dXJuICZwYy0+YXM8T3BBZGQ+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CiAgICAg
Y2FzZSBvcF9tdWw6CkBAIC0zMTA4LDExICszMTExLDIzIEBAIEFyaXRoUHJvZmlsZSogQ29kZUJs
b2NrOjphcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKK1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQ
cm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIHN3aXRjaCAocGMtPm9w
Y29kZUlEKCkpIHsKKyAgICBjYXNlIG9wX25lZ2F0ZToKKyAgICAgICAgcmV0dXJuICZwYy0+YXM8
T3BOZWdhdGU+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFByb2ZpbGU7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJvb2wg
Q29kZUJsb2NrOjpjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2FzZShCeXRlY29kZUluZGV4IGJ5
dGVjb2RlSW5kZXgpCiB7CiAgICAgaWYgKCFoYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQXJpdGhQcm9maWxlKiBwcm9maWxlID0gYXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIHByb2ZpbGUgPSBiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
SW5kZXgpOwogICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
dHVybiBwcm9maWxlLT50b29rU3BlY2lhbEZhc3RQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZDJjMDY5ODAzYTguLjE4ZTQ4YzI2NmEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04Myw2ICs4
Myw4IEBAIHN0cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8vIG5hbWVzcGFjZSBERkcKICNlbmRpZgog
CitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNs
YXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNz
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U7CkBAIC05Niw3ICs5OCw2IEBAIGNsYXNzIFN0cnVj
dHVyZVN0dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CiAKLXN0cnVj
dCBBcml0aFByb2ZpbGU7CiBzdHJ1Y3QgT3BDYXRjaDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1v
ZGUgeyBEb250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwpAQCAt
Mjc5LDIyICsyODAsMjIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVREYXRhJiBlbnN1cmVKSVRE
YXRhU2xvdyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKTsKIAotICAgIEpJVEFkZElDKiBhZGRK
SVRBZGRJQyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRNdWxJQyogYWRkSklUTXVsSUMoQXJpdGhQ
cm9maWxlKik7Ci0gICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSopOwotICAg
IEpJVFN1YklDKiBhZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqKTsKKyAgICBKSVRBZGRJQyogYWRk
SklUQWRkSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUTXVsSUMqIGFkZEpJVE11bElD
KEJpbmFyeUFyaXRoUHJvZmlsZSopOworICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhVbmFyeUFy
aXRoUHJvZmlsZSopOworICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2Zp
bGUqKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUQWRkR2VuZXJh
dG9yPjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVEFkZElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxl
KiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhwcm9maWxlKTsgfQorICAgIEpJVEFkZElD
KiBhZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRB
ZGRJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlw
ZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBK
SVRNdWxHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTXVsSUMqIGFkZE1hdGhJQyhB
cml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9Cisg
ICAgSklUTXVsSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0
dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2Vu
ZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxH
ZW5lcmF0b3IsIEpJVE5lZ0dlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBKSVROZWdJQyog
YWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTmVnSUMocHJv
ZmlsZSk7IH0KKyAgICBKSVROZWdJQyogYWRkTWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9m
aWxlKSB7IHJldHVybiBhZGRKSVROZWdJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAg
SklUU3ViSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJ
VFN1YklDKHByb2ZpbGUpOyB9CisgICAgSklUU3ViSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFBy
b2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CiAKICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNjZXNzVHlwZSk7CiAKQEAgLTQ5Nyw4ICs0
OTgsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9y
RWFjaE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMTEludENhbGxMaW5rSW5mbyhjb25zdCBG
dW5jdG9yJik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5k
ZXgoQnl0ZWNvZGVJbmRleCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGVGb3JQQyhj
b25zdCBJbnN0cnVjdGlvbiopOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKKyAgICBVbmFyeUFyaXRoUHJv
ZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwor
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQ
Qyhjb25zdCBJbnN0cnVjdGlvbiopOwogCiAgICAgYm9vbCBjb3VsZFRha2VTcGVjaWFsQXJpdGhG
YXN0Q2FzZShCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggZTI0NGZkNjI3MDkuLmM2ZDExZmU4NmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTIzNiw2ICsyMzYsMTggQEAgc3RydWN0
IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6
OmlzX2VudW08RT46OnZhbHUKICAgICB9CiB9OwogCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+
CitzdHJ1Y3QgRml0czxSZXN1bHRUeXBlLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihS
ZXN1bHRUeXBlKSAhPSBzaXplLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8dWludDhf
dCwgc2l6ZT4geworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFJlc3VsdFR5cGUpID09IHNpemVv
Zih1aW50OF90KSk7CisgICAgdXNpbmcgQmFzZSA9IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAg
ICBzdGF0aWMgYm9vbCBjaGVjayhSZXN1bHRUeXBlIHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNr
KHR5cGUuYml0cygpKTsgfQorCisgICAgc3RhdGljIHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUg
Y29udmVydChSZXN1bHRUeXBlIHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNvbnZlcnQodHlwZS5iaXRz
KCkpOyB9CisKKyAgICBzdGF0aWMgUmVzdWx0VHlwZSBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6OlRh
cmdldFR5cGUgdHlwZSkgeyByZXR1cm4gUmVzdWx0VHlwZShCYXNlOjpjb252ZXJ0KHR5cGUpKTsg
fQorfTsKKwogdGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8T3BlcmFuZFR5
cGVzLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihPcGVyYW5kVHlwZXMpICE9IHNpemUs
IHN0ZDo6dHJ1ZV90eXBlPj4gewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9wZXJhbmRUeXBl
cykgPT0gc2l6ZW9mKHVpbnQxNl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKaW5k
ZXggNzEwNGQwMWFlMTEuLjJiNjlmMzZjN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
Y3BwCkBAIC02NiwxMCArNjYsMTYgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
OjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWcKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBBcml0aFByb2ZpbGVSZWFkeTogewot
ICAgICAgICB1LmFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05v
dEhhdmVUYWdSZWdpc3RlcnMpOworICAgIGNhc2UgVW5hcnlBcml0aFByb2ZpbGVSZWFkeTogewor
ICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3Ms
IERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9
CisKKyAgICBjYXNlIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5
QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1Jl
Z2lzdGVycyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQogICAgIAogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC05NCwxMCArMTAwLDE2IEBAIHZvaWQgTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAg
ICAgICAgdS5hcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgIGNhc2UgVW5h
cnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5vYnNl
cnZlUmVzdWx0KHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gfQorICAgIH0KKworICAg
IGNhc2UgQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS5iaW5hcnlBcml0aFBy
b2ZpbGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IH0KIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuaAppbmRleCBjZmI4MzQ3MDZhZi4uNWQ4MWM0YzkwMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUuaApAQCAtMzYsMTAgKzM2LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitj
bGFzcyBVbmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNz
IENDYWxsSGVscGVyczsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlS2V5Owotc3RydWN0IEFyaXRoUHJvZmlsZTsKIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAK
IGNsYXNzIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgewpAQCAtNTcsMTIgKzU4LDIxIEBA
IHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwogICAg
IH0KLSAgICAKLSAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKEFyaXRoUHJvZmlsZSog
cHJvZmlsZSkKKworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoVW5hcnlBcml0aFBy
b2ZpbGUqIHByb2ZpbGUpCisgICAgeworICAgICAgICBpZiAocHJvZmlsZSkgeworICAgICAgICAg
ICAgbV9raW5kID0gVW5hcnlBcml0aFByb2ZpbGVSZWFkeTsKKyAgICAgICAgICAgIHUudW5hcnlB
cml0aFByb2ZpbGUgPSBwcm9maWxlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fa2lu
ZCA9IE5vbmU7CisgICAgfQorCisgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShCaW5h
cnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpCiAgICAgewogICAgICAgICBpZiAocHJvZmlsZSkgewot
ICAgICAgICAgICAgbV9raW5kID0gQXJpdGhQcm9maWxlUmVhZHk7Ci0gICAgICAgICAgICB1LmFy
aXRoUHJvZmlsZSA9IHByb2ZpbGU7CisgICAgICAgICAgICBtX2tpbmQgPSBCaW5hcnlBcml0aFBy
b2ZpbGVSZWFkeTsKKyAgICAgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlID0gcHJvZmlsZTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2tpbmQgPSBOb25lOwogICAgIH0KQEAgLTc5
LDcgKzg5LDggQEAgcHJpdmF0ZToKICAgICBlbnVtIEtpbmQgewogICAgICAgICBOb25lLAogICAg
ICAgICBSZWFkeSwKLSAgICAgICAgQXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIFVuYXJ5QXJp
dGhQcm9maWxlUmVhZHksCisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAogICAgICAg
ICBMYXp5T3BlcmFuZAogICAgIH07CiAgICAgCkBAIC05MCw3ICsxMDEsOCBAQCBwcml2YXRlOgog
ICAgICAgICB7IH0KIAogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7Ci0gICAgICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5h
cnlBcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQ
cm9maWxlOwogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2s7CiAgICAgICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zmc2V0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCAyZGI4MThmMGI5Yi4uZmJlZTI4YjY4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC0xNTMzLDE0ICsxNTMzLDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TW92ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKICAgICByZXR1cm4gZHN0Owog
fQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQg
b3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMg
dHlwZXMpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2Rl
SUQgb3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBSZXN1bHRUeXBl
IHR5cGUpCiB7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfbm90OgogICAg
ICAgICBlbWl0VW5hcnlPcDxPcE5vdD4oZHN0LCBzcmMpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIG9wX25lZ2F0ZToKLSAgICAgICAgT3BOZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5
cGVzKTsKKyAgICAgICAgT3BOZWdhdGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGUpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIG9wX2JpdG5vdDoKICAgICAgICAgZW1pdFVuYXJ5T3A8T3BC
aXRub3Q+KGRzdCwgc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyZDcyMWViNzc5MC4uMGQ5NDI1M2Uz
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTY4MSw3ICs2ODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBkc3Q7CiAgICAgICAgIH0KIAotICAgICAgICBSZWdpc3RlcklEKiBl
bWl0VW5hcnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIE9w
ZXJhbmRUeXBlcyk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRVbmFyeU9wKE9wY29kZUlELCBS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSk7CiAKICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggMmUwM2JlMGI3YzcuLjA1OGZlNTlkNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yMTM5LDcgKzIx
MzksNyBAQCBSZWdpc3RlcklEKiBVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHNyYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8ocG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSk7Ci0gICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcGNvZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERlc2Ny
aXB0b3IoKSkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwg
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpLCBtX2V4cHItPnJlc3Vs
dERlc2NyaXB0b3IoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBV
bmFyeVBsdXNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGUwZWVm
NDkxN2FhLi4xMGUxMjM5YTMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTk0Miw1NiArOTQyLDYwIEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmICghaXNYODYoKSAmJiAobm9kZS0+b3AoKSA9PSBBcml0aE1vZCB8fCBub2RlLT5vcCgp
ID09IFZhbHVlTW9kKSkKICAgICAgICAgICAgIHJldHVybiBub2RlOwogCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+
bV9wcm9maWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudElu
ZGV4KTsKLSAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEFyaXRoQWRkOgotICAg
ICAgICAgICAgICAgIGNhc2UgQXJpdGhTdWI6Ci0gICAgICAgICAgICAgICAgY2FzZSBWYWx1ZUFk
ZDoKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJs
ZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2
ZURvdWJsZVJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRp
ZE9ic2VydmVOb25OdW1lcmljKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJn
ZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVNdWw6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBBcml0aE11bDogewotICAgICAgICAgICAgICAgICAgICBpZiAo
YXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkg
fHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZl
WmVybykpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlO
ZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
YXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50
UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBB
cml0aE5lZ2F0ZTogewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5saHNP
YnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3Vi
bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhh
dmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5k
aWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2Zp
bGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92
ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNS
ZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
QmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVN
YXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBB
cml0aEFkZDoKKyAgICAgICAgY2FzZSBBcml0aFN1YjoKKyAgICAgICAgY2FzZSBWYWx1ZUFkZDog
eworICAgICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2Rl
SW5kZXgobV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRP
YnNlcnZlRG91YmxlKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5
SGF2ZURvdWJsZVJlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlTm9uTnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eUhhdmVOb25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRp
ZE9ic2VydmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVN
YXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVmFsdWVNdWw6CisgICAgICAgIGNhc2UgQXJpdGhNdWw6IHsKKyAgICAgICAgICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVu
dEluZGV4KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3Zl
cmZsb3coKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxv
d0ludDUyKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92
ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0
aFByb2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkK
KyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGlu
ZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisg
ICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7
CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQor
ICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVz
dWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkK
KyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVmFsdWVOZWdh
dGU6CisgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKKyAgICAgICAgICAgIFVuYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
PnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisgICAg
ICAgICAgICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmFyZ09ic2VydmVkVHlwZSgpLnNhd051bWJlcigpIHx8
IGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgICAgICAgICAgICAgIG5vZGUt
Pm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFy
aXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8p
KQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU5lZ1plcm9JbkJhc2Vs
aW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJm
bG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
Tm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUtPmRpZE9ic2VydmVOb25OdW1lcmljKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVy
Z2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFy
aXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1l
cmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZSht
X2N1cnJlbnRJbmRleCkpIHsKQEAgLTEwMzMsOCArMTAzNyw4IEBAIHByaXZhdGU6CiAgICAgICAg
IAogICAgICAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gbWFrZSB0aGlzIG1v
cmUgZ3JhbnVsYXIuCiAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50
MzJJbkJhc2VsaW5lIHwgTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsKLSAgICAgICAgCi0gICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsK
KworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRl
eChtX2N1cnJlbnRJbmRleCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVC
aWdJbnQoKSkKICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRS
ZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IGNhOWZj
MzRlMWQzLi4xYjFiMTk4NGEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKQEAgLTE2NTQsNyArMTY1NCw5IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3Jh
cGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3IoTm9kZSogY3VycmVuCiAgICAgICAg
ICAgICAgICAgcmV0dXJuICZwcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpOwogCiAgICAgICAgICAg
ICBpZiAocHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAg
ICAgICAgICAgIGlmIChBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmFyaXRo
UHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5k
ZXgoKSkpCisgICAgICAgICAgICAgICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogcmVzdWx0ID0g
cHJvZmlsZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5v
cmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICBpZiAoVW5hcnlBcml0aFByb2ZpbGUqIHJlc3Vs
dCA9IHByb2ZpbGVkQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2Rl
LT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA4NDNjNDkxOTUyZS4u
NTA4MDgwMTRkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC0zOTk1LDcgKzM5OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVBZGQoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2Rl
QmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVj
b2RlSW5kZXgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxp
bmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJ
bmRleCk7CiAgICAgSklUQWRkSUMqIGFkZElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVEFk
ZElDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRp
b25WYWx1ZUFkZE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3Bl
cmF0aW9uVmFsdWVBZGQ7CkBAIC00MDE5LDcgKzQwMTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2Vs
aW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBu
b2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2pp
dC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgYXV0byBy
ZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICBh
dXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwpAQCAtNDYxMyw3
ICs0NjEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUq
IG5vZGUpCiB7CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBo
KCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJ
bmRleCgpOwotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxv
Y2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgVW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT51bmFyeUFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTmVnSUMq
IG5lZ0lDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAg
ICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXpl
OwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7
CkBAIC00ODM2LDcgKzQ4MzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVN
dWwoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2pp
dC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5
dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5l
Q29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwor
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2st
PmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAg
SklUTXVsSUMqIG11bElDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVE11bElDKGFyaXRoUHJv
ZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9w
dGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVN
dWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5k
ZXggNWQ0OGMwYjBjYjkuLjM3ZjBhOTYwMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0yMTE2LDcgKzIxMTYsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBo
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAg
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0
ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2Vs
aW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
OworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgp
OwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkT3B0
aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVBZGQ7CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPihhcml0
aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAg
LTIxMzcsNyArMjEzNyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGlu
ZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgg
PSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZv
ckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZv
ckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1
bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKICAgICAgICAgY29tcGlsZUJpbmFy
eU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9u
LCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFw
aC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5
dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNl
bGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4
KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4
KTsKICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9w
dGltaXplOwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZh
bHVlTXVsOwogICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJp
dGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBA
IC0yMTY2LDcgKzIxNjYsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdl
bmVyYXRvciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVuYW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFt
ZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9wb2ludGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5h
bWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBj
b21waWxlVW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0
Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29t
cGlsZVVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJl
cGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKIApAQCAtMjI1Miw3ICsyMjUyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0
eXBlbmFtZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2
YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVu
YzI+Ojp0eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25S
ZXBhdGNoaW5nRnVuY3Rpb24pCisgICAgdm9pZCBjb21waWxlQmluYXJ5TWF0aElDKEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMy
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25v
ZGU7CiAgICAgICAgIApAQCAtMjQyMSw3ICsyNDIxLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxp
bmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNv
ZGVJbmRleCgpOwotICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNl
bGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4
KTsKKyAgICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxp
bmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJ
bmRleCk7CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZh
bHVlU3ViT3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9
IG9wZXJhdGlvblZhbHVlU3ViOwogICAgICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRT
dWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNo
aW5nRnVuY3Rpb24pOwpAQCAtMzA5OSw3ICszMDk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxT
dGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRl
Y29kZUluZGV4KTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJh
c2VsaW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJp
dGhOZWdhdGVPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBv
cGVyYXRpb25Bcml0aE5lZ2F0ZTsKICAgICAgICAgY29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dl
bmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdG
dW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBiNWVmZTI2ODA0Ni4uMmI0YTVk
NjRiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtOTE5LDcgKzkxOSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAvLyBJdCB3aWxsIGdpdmUgdGhlIHNsb3cgcGF0aCB0aGUgc2Ft
ZSB2YWx1ZSByZWFkIGJ5IHRoZSBmYXN0IHBhdGguCiAgICAgICAgIEdldFB1dEluZm8gY29waWVk
R2V0UHV0SW5mbyhPcFB1dFRvU2NvcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5h
cnlPcD4KLSAgICAgICAgQXJpdGhQcm9maWxlIGNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCk7
CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3Ap
OwogCiAgICAgICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwogCkBAIC05MzksNyArOTM5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hSZWNvcmQ+IG1fc3dp
dGNoZXM7CiAKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgdW5zaWduZWQ+IG1fY29waWVkR2V0
UHV0SW5mb3M7Ci0gICAgICAgIEhhc2hNYXA8dWludDY0X3QsIEFyaXRoUHJvZmlsZT4gbV9jb3Bp
ZWRBcml0aFByb2ZpbGVzOworICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBCaW5hcnlBcml0aFBy
b2ZpbGU+IG1fY29waWVkQXJpdGhQcm9maWxlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2Vw
dGlvbkNoZWNrczsKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZy
YW1lUm9sbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFk
ZEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRv
ci5jcHAKaW5kZXggNjI3YWYyNzg3ZTAuLjc0MGIyZWQ4YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpn
ZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVS
ZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwg
TWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4K
ICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03
Myw3ICs3Myw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVy
YXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJ
Q0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRBZGRHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1
bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0
UHJvZmlsaW5nKQorYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxI
ZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VS
VChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQ
UiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFkZEdlbmVyYXRvci5oCmluZGV4IDRkYzM0YTJmNWI2Li42NzVjZjkzYzkwNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCkBAIC01NSw4ICs1NSw4IEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8
ICFtX3JpZ2h0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0aElD
SW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRp
b25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxl
KiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29u
c3QgQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxs
SGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUq
LCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3Bl
cmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxl
ZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1Jp
Z2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJl
dHVybiByaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggYWMzNzJjOWZiZTAuLmJiNjM1
ZjhlNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0
aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAK
QEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiAKIHZvaWQgSklUOjpl
bWl0X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewot
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BOZWdhdGU+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIFVu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxP
cE5lZ2F0ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklU
TmVnSUMqIG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2stPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7
CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0
ZUlDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcE5lZ2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdh
dGUpOwpAQCAtNjM0LDE0ICs2MzQsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0
UGF0aChjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3Vyc2hpZnQpOwogfQogCi1BTFdBWVNfSU5MSU5F
IHN0YXRpYyBPcGVyYW5kVHlwZXMgZ2V0T3BlcmFuZFR5cGVzKGNvbnN0IEFyaXRoUHJvZmlsZSYg
YXJpdGhQcm9maWxlKQotewotICAgIHJldHVybiBPcGVyYW5kVHlwZXMoYXJpdGhQcm9maWxlLmxo
c1Jlc3VsdFR5cGUoKSwgYXJpdGhQcm9maWxlLnJoc1Jlc3VsdFR5cGUoKSk7Ci19Ci0KIHZvaWQg
SklUOjplbWl0X29wX2FkZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BBZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BBZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVEFk
ZElDKiBhZGRJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAg
IG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBhZGRJQyk7CiAg
ICAgZW1pdE1hdGhJQ0Zhc3Q8T3BBZGQ+KGFkZElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJh
dGlvblZhbHVlQWRkUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlQWRkKTsKQEAgLTY4Niw3ICs2ODEs
NyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiog
bWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogYwogCiAgICAgYm9vbCBnZW5lcmF0ZWRJbmxpbmVD
b2RlID0gbWF0aElDLT5nZW5lcmF0ZUlubGluZSgqdGhpcywgbWF0aElDR2VuZXJhdGlvblN0YXRl
KTsKICAgICBpZiAoIWdlbmVyYXRlZElubGluZUNvZGUpIHsKLSAgICAgICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOworICAgICAgICBVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAg
ICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHNyY1JlZ3MsIGFyaXRo
UHJvZmlsZSk7CiAgICAgICAgIGVsc2UKQEAgLTcwOSw3ICs3MDQsNiBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwg
dHlwZW5hbWUgTgogdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5l
cmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFBy
b2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlvbiwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Q
cm9maWxlZEZ1bmN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wPigpOwotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhj
b3BpZWRBcml0aFByb2ZpbGUoYnl0ZWNvZGUpKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUu
bV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwog
ICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKQEAgLTcyOCw4ICs3MjIsOCBA
QCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1h
dGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1Qy
OwogI2VuZGlmCiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgp
KTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAg
IFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0
KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRU
eXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAg
ICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3Ax
KSk7CkBAIC03NTksNyArNzUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFy
eU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgICAgICAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIGxlZnRSZWdzKTsKICAgICAgICAgZWxzZSBp
ZiAocmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIob3AyLCByaWdodFJlZ3MpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFyaXRo
UHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIGFyaXRo
UHJvZmlsZSk7CiAgICAgICAgIGVsc2UKQEAgLTc5OSw3ICs3OTMsNyBAQCB2b2lkIEpJVDo6ZW1p
dE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0
cnVjdGlvbiogYwogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAot
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2Zp
bGUoKTsKICAgICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewog
ICAgICAgICBpZiAobWF0aElDR2VuZXJhdGlvblN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCkK
ICAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uV2l0aFJlc3VsdChyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dKTWljPihw
cm9maWxlZFJlcGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHIobV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpKSwgc3JjUmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsK
QEAgLTgzMSw3ICs4MjUsNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0
aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgbWF0aElDR2Vu
ZXJhdGlvblN0YXRlLnNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogCiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgT3BlcmFuZFR5cGVzIHR5cGVz
ID0gZ2V0T3BlcmFuZFR5cGVzKGNvcGllZEFyaXRoUHJvZmlsZShieXRlY29kZSkpOwogICAgIGlu
dCByZXN1bHQgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0ZWNv
ZGUubV9saHMub2Zmc2V0KCk7CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgp
OwpAQCAtODQ2LDggKzgzOSw4IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlN
YXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gbGVmdFJlZ3M7CiAjZW5kaWYKICAgICAKLSAgICBTbmlwcGV0T3Bl
cmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdo
dE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
KGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJp
Z2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAo
aXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJ
bnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC04NjUsNyArODU4LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMs
IGNvbnN0IEluc3RydWN0aW9uKgogICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAj
ZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFBy
b2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+
YXJpdGhQcm9maWxlKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKCkpIHsKICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0
aFJlcGF0Y2gpCiAgICAgICAgICAgICBtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQoYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0dK
Sk1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24pLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGxlZnRSZWdzLCByaWdodFJlZ3MsIFRydXN0
ZWRJbW1QdHIobWF0aElDKSk7CkBAIC04OTMsMTkgKzg4NiwxNiBAQCB2b2lkIEpJVDo6ZW1pdE1h
dGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1
Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcERpdj4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAg
aW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29k
ZS5tX3Jocy5vZmZzZXQoKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgT3BlcmFuZFR5cGVz
IHR5cGVzID0gZ2V0T3BlcmFuZFR5cGVzKG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlKTsKICAgICBK
U1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVn
cyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IGxlZnRSZWdzOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDI7CiAjZWxzZQot
ICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRo
UHJvZmlsZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApOwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QzLCBy
ZWdUMik7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxlZnRSZWdzOwpAQCAtOTEzLDEy
ICs5MDMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IGZwUmVnVDI7
CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHI7CisgICAgQmluYXJ5
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyOwogICAgIGlmIChzaG91bGRFbWl0
UHJvZmlsaW5nKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wRGl2PigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKIAotICAg
IFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVzLmZpcnN0KCkpOwotICAgIFNuaXBwZXRP
cGVyYW5kIHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQoKSk7CisgICAgU25pcHBldE9wZXJhbmQg
bGVmdE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuZmlyc3QoKSk7CisgICAgU25pcHBl
dE9wZXJhbmQgcmlnaHRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLnNlY29uZCgpKTsK
IAogICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDEpKQogICAgICAgICBsZWZ0T3BlcmFu
ZC5zZXRDb25zdEludDMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDEpKTsKQEAgLTk2MCw3ICs5
NTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAm
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9h
cml0aFByb2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcE11bD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0
aFByb2ZpbGU7CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9jb2RlQmxvY2stPmFkZEpJVE11bElD
KGFyaXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5z
dHJ1Y3Rpb24sIG11bElDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcE11bD4obXVsSUMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVN
dWwpOwpAQCAtOTc2LDcgKzk2Niw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAKIHZvaWQg
SklUOjplbWl0X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BTdWI+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BTdWI+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVFN1
YklDKiBzdWJJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAg
IG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBzdWJJQyk7CiAg
ICAgZW1pdE1hdGhJQ0Zhc3Q8T3BTdWI+KHN1YklDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJh
dGlvblZhbHVlU3ViUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlU3ViKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcAppbmRleCA2NmUxYmUxNGE4ZC4uYjhj
NDc5ODZmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRv
ci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCkKICAgICBub3REb3VibGVaZXJvLmxpbmsoJmppdCk7
CiAjZW5kaWYKICAgICBpZiAobV9hcml0aFByb2ZpbGUpCi0gICAgICAgIGppdC5vcjMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6c3BlY2lhbEZhc3RQYXRoQml0KSwg
Q0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MobV9hcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJp
dHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5h
cnlBcml0aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICBqaXQuYm94
RG91YmxlKG1fbGVmdEZQUiwgbV9yZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVREaXZHZW5lcmF0b3IuaAppbmRleCA4Mzk2Njc3OTQzZi4uNzA4ZGIxMGQ2Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaApAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiAgICAgSklURGl2R2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRP
cGVyYW5kLCBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCiAgICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCiAgICAgICAgIEZQ
UlJlZyBsZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcg
c2NyYXRjaEZQUiwKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRy
KQorICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIpCiAg
ICAgICAgIDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKICAgICAgICAgLCBtX3JpZ2h0T3Bl
cmFuZChyaWdodE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQpAQCAtNzEsNyAr
NzEsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7CiAgICAgRlBSUmVnIG1f
c2NyYXRjaEZQUjsKICAgICBib29sIG1fZGlkRW1pdEZhc3RQYXRoIHsgZmFsc2UgfTsKLSAgICBB
cml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogbV9h
cml0aFByb2ZpbGU7CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1fZW5kSnVtcExpc3Q7
CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX3Nsb3dQYXRoSnVtcExpc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDYyZWFiOWI5N2ZhLi4yNWJjYzJiOWM1
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTcxNiwxMyArNzE2
LDEzIEBAIEFMV0FZU19JTkxJTkUgR2V0UHV0SW5mbyBKSVQ6OmNvcGllZEdldFB1dEluZm8oT3BQ
dXRUb1Njb3BlIGJ5dGVjb2RlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLUFM
V0FZU19JTkxJTkUgQXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9w
IGJ5dGVjb2RlKQorQUxXQVlTX0lOTElORSBCaW5hcnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRB
cml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCiB7CiAgICAgdWludDY0X3Qga2V5ID0gKHN0
YXRpY19jYXN0PHVpbnQ2NF90PihCaW5hcnlPcDo6b3Bjb2RlSUQpICsgMSkgPDwgMzIgfCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oYnl0ZWNvZGUubV9tZXRhZGF0YUlEKTsKICAgICBhdXRvIGl0ZXJh
dG9yID0gbV9jb3BpZWRBcml0aFByb2ZpbGVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXRlcmF0b3Ig
IT0gbV9jb3BpZWRBcml0aFByb2ZpbGVzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlcmF0b3It
PnZhbHVlOwotICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFy
aXRoUHJvZmlsZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmls
ZTsKICAgICBtX2NvcGllZEFyaXRoUHJvZmlsZXMuYWRkKGtleSwgYXJpdGhQcm9maWxlKTsKICAg
ICByZXR1cm4gYXJpdGhQcm9maWxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRNYXRoSUMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElD
LmgKaW5kZXggNTY0NWU0MmRlZmYuLmZkYWVjOTI3NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTWF0aElDLmgKQEAgLTUyLDExICs1MiwxMSBAQCBzdHJ1Y3QgTWF0aElDR2VuZXJhdGlv
blN0YXRlIHsKIAogI2RlZmluZSBFTkFCTEVfTUFUSF9JQ19TVEFUUyAwCiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBHZW5lcmF0b3JUeXBlLCBib29sKCppc1Byb2ZpbGVFbXB0eSkoQXJpdGhQcm9maWxl
Jik+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgdHlwZW5hbWUgQXJpdGhQcm9m
aWxlVHlwZT4KIGNsYXNzIEpJVE1hdGhJQyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgSklUTWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAg
IEpJVE1hdGhJQyhBcml0aFByb2ZpbGVUeXBlKiBhcml0aFByb2ZpbGUpCiAgICAgICAgIDogbV9h
cml0aFByb2ZpbGUoYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CkBAIC03MSw3ICs3MSw3IEBA
IHB1YmxpYzoKICAgICAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZm
ZXIoKS5jb2RlU2l6ZSgpOwogCiAgICAgICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewotICAgICAg
ICAgICAgaWYgKGlzUHJvZmlsZUVtcHR5KCptX2FyaXRoUHJvZmlsZSkpIHsKKyAgICAgICAgICAg
IGlmIChtX2FyaXRoUHJvZmlsZS0+aXNPYnNlcnZlZFR5cGVFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gSXQgbG9va3MgbGlrZSB0aGUgTWF0aElDIGhhcyB5ZXQgdG8gZXhlY3V0ZS4gV2Ug
ZG9uJ3Qgd2FudCB0byBlbWl0IGNvZGUgaW4gdGhpcwogICAgICAgICAgICAgICAgIC8vIGNhc2Ug
Zm9yIGEgY291cGxlIHJlYXNvbnMuIEZpcnN0LCB0aGUgb3BlcmF0aW9uIG1heSBuZXZlciBleGVj
dXRlLCBzbyBpZiB3ZSBkb24ndCBlbWl0CiAgICAgICAgICAgICAgICAgLy8gY29kZSwgaXQncyBh
IHdpbi4gU2Vjb25kLCBpZiB0aGUgb3BlcmF0aW9uIGRvZXMgZXhlY3V0ZSwgd2UgY2FuIGVtaXQg
YmV0dGVyIGNvZGUKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2xvd1Bh
dGhTdGFydExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+
KHN0YXRlLnNsb3dQYXRoU3RhcnQpOwogICAgIH0KIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KKyAgICBBcml0aFByb2Zp
bGVUeXBlKiBhcml0aFByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2FyaXRoUHJvZmlsZTsgfQog
CiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgc2l6ZV90IG1fZ2VuZXJhdGVkQ29kZVNp
emUgeyAwIH07CkBAIC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0g
ICAgQXJpdGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAgICBBcml0aFByb2ZpbGVUeXBlKiBt
X2FyaXRoUHJvZmlsZTsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+IG1fY29kZTsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBt
X2lubGluZVN0YXJ0OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1f
aW5saW5lRW5kOwpAQCAtMjQ2LDE1ICsyNDYsMTEgQEAgcHVibGljOgogICAgIEdlbmVyYXRvclR5
cGUgbV9nZW5lcmF0b3I7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0JpbmFyeVByb2ZpbGVFbXB0eShB
cml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxo
c09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSB8fCBhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBl
KCkuaXNFbXB0eSgpOwotfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+Ci1jbGFz
cyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzQmlu
YXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0
aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4gewogcHVibGljOgotICAgIEpJ
VEJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRN
YXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQcm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkK
KyAgICBKSVRCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisg
ICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4oYXJp
dGhQcm9maWxlKQogICAgIHsKICAgICB9CiB9OwpAQCAtMjYzLDE2ICsyNTksMTEgQEAgdHlwZWRl
ZiBKSVRCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPiBKSVRBZGRJQzsKIHR5cGVkZWYgSklU
QmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4gSklUTXVsSUM7CiB0eXBlZGVmIEpJVEJpbmFy
eU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+IEpJVFN1YklDOwogCi0KLWlubGluZSBib29sIGlzVW5h
cnlQcm9maWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCi17Ci0gICAgcmV0dXJu
IGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7Ci19CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgR2VuZXJhdG9yVHlwZT4KLWNsYXNzIEpJVFVuYXJ5TWF0aElDIDogcHVibGljIEpJ
VE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRV
bmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgVW5hcnlBcml0aFBy
b2ZpbGU+IHsKIHB1YmxpYzoKLSAgICBKSVRVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVByb2Zp
bGVFbXB0eT4oYXJpdGhQcm9maWxlKQorICAgIEpJVFVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVu
YXJ5QXJpdGhQcm9maWxlPihhcml0aFByb2ZpbGUpCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKaW5kZXggODNkMjkzYjYy
NTIuLmNmNmJhYTUyZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE11bEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxH
ZW5lcmF0b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRN
YXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhl
bHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9y
OjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRl
JiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAg
Ly8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhz
ID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC04OSw3ICs4OSw3IEBAIEpJVE1hdGhJ
Q0lubGluZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVy
cyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJh
dGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0
LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRN
dWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVs
cGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93
UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52
YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQ
UigpKTsKQEAgLTIwNSwxOCArMjA1LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAKICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdE5lZ2F0aXZlWmVybyA9IGppdC5icmFuY2g2NChD
Q2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTY0KG5lZ2F0aXZlWmVyb0JpdHMpKTsKIAotICAgICAgICBqaXQub3IzMihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBD
Q2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMo
KSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlB
cml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVz
cyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmso
JmppdCk7Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRo
UHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNz
KGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJs
ZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09m
Qml0cygpKSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQucGF5bG9hZEdQUigpLCBtX3Nj
cmF0Y2hHUFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUy
KSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6SW1tMzIo
MHg3ZmYpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9JbnQ1
Mk92ZXJmbG93ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW5PckVxdWFsLCBt
X3NjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMxKSk7CiAKLSAgICAg
ICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1
Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5h
ZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpB
YnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAg
bm9JbnQ1Mk92ZXJmbG93LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwpA
QCAtMjI3LDE4ICsyMjcsMTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICAgICAgICAgbm90
TmVnYXRpdmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwg
bV9yZXN1bHQucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOwog
ICAgICAgICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6
Ok5vdEVxdWFsLCBtX3Jlc3VsdC50YWdHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bmVnYXRpdmVaZXJvQml0cyA+PiAzMikpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAg
ICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2Zp
bGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFBy
b2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9u
ZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0g
ICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6
Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJv
ZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxs
SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7
CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1fc2NyYXRjaEdQUik7CiAg
ICAgICAgIGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoNTIgLSAzMiksIG1fc2Ny
YXRjaEdQUik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwg
bV9zY3JhdGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxv
dyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNo
R1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogICAgICAgICAKLSAgICAg
ICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQ1
Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5h
ZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpB
YnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKIAogICAgICAg
ICBlbmRKdW1wTGlzdC5hcHBlbmQobm9JbnQ1Mk92ZXJmbG93KTsKICAgICAgICAgaWYgKG1fc2Ny
YXRjaEdQUiA9PSBtX3Jlc3VsdC50YWdHUFIoKSB8fCBtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQu
cGF5bG9hZEdQUigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRN
dWxHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9y
LmgKaW5kZXggMzZkMjZlYTEyNGUuLjYwODc3OTY2ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoIW1fbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSB8fCAhbV9y
aWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSk7CiAgICAgfQogCi0gICAgSklUTWF0
aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVy
YXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0
UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUq
LCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBn
ZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25z
dCBCaW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxI
ZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVy
czo6SnVtcExpc3QmIHNsb3dKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRW
YWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3Bl
cmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9w
ZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4g
cmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcAppbmRleCA5MmMyOWRkNjMwYS4uY2VlYmUz
OTA5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGlu
ZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0
LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBj
b25zdCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChtX3Nj
cmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBt
X3NyYy5wYXlsb2FkR1BSKCkpOwpAQCAtNDUsNyArNDUsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1
bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0
aElDRwogICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2
ZWRUeXBlIG9ic2VydmVkVHlwZXMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsKICAgICBp
ZiAoYXJpdGhQcm9maWxlKQotICAgICAgICBvYnNlcnZlZFR5cGVzID0gYXJpdGhQcm9maWxlLT5s
aHNPYnNlcnZlZFR5cGUoKTsKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+
YXJnT2JzZXJ2ZWRUeXBlKCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghb2JzZXJ2ZWRUeXBl
cy5pc0VtcHR5KCksICJXZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2VuZXJhdGUgYW55dGhpbmcg
aWYgd2UgZG8gbm90IGhhdmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYgKG9ic2VydmVkVHlwZXMu
aXNPbmx5Tm9uTnVtYmVyKCkpCkBAIC04Miw3ICs4Miw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3Vs
dCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRo
SUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBl
dDsKIH0KIAotYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxw
ZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVROZWdHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0
LCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQ
cm9maWxpbmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BS
KCkpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKTsK
QEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogI2VuZGlmCiAgICAg
Ly8gVGhlIGZsYWdzIG9mIEFyaXRoTmVnYXRlIGFyZSBiYXNpYyBpbiBERkcuCiAgICAgLy8gV2Ug
b25seSBuZWVkIHRvIGtub3cgaWYgd2UgZXZlciBwcm9kdWNlZCBhIG51bWJlci4KLSAgICBpZiAo
c2hvdWxkRW1pdFByb2ZpbGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+bGhz
T2JzZXJ2ZWRUeXBlKCkuc2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURv
dWJsZSgpKQorICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nICYmIGFyaXRoUHJvZmlsZSAmJiAh
YXJpdGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSAmJiAhYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFNldERv
dWJsZShqaXQpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTmVnR2VuZXJhdG9yLmgKaW5kZXggOGEwYzJkNTE3ZDYuLjc4N2I3MDc2ODI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKQEAgLTQzLDggKzQz
LDggQEAgcHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3JhdGNoR1BSKQogICAgIHsg
fQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVy
cyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJv
b2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwg
Y29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRN
YXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2Vu
ZXJhdGlvblN0YXRlJiwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVy
YXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVt
cExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IFVu
YXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogcHJpdmF0ZToK
ICAgICBKU1ZhbHVlUmVncyBtX3Jlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IGY5YTYzOTc4N2IzLi5iYWYwMjIyYjUzNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yNjQ0LDcgKzI2NDQs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogI2VuZGlmIC8vIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQog
fQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVkQWRkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9wMiwgQXJpdGhQcm9maWxl
JiBhcml0aFByb2ZpbGUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVkQWRk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9wMiwg
QmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAgYXJpdGhQcm9maWxlLm9i
c2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGQoZ2xv
YmFsT2JqZWN0LCBvcDEsIG9wMik7CkBAIC0yNjYwLDcgKzI2NjAsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGQoZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ay
KSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRk
UHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJv
ZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpAQCAtMjY3OCw3ICsyNjc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqIGcKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAg
ICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAotICAgIEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOwogICAg
IEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJI
UyhvcDEsIG9wMik7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1
ZUFkZFByb2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTI3MDAsNyArMjcwMCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMt
PmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
YWRkSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocHJvZmlsZWRBZGQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSwgKmFyaXRoUHJv
ZmlsZSkpOwogfQpAQCAtMjcxNSw3ICsyNzE1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoK
ICAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKIAogICAgIGF1
dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGROb09wdGltaXplOwotICAg
IGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKSkK
KyAgICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQ
cm9maWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9w
Mik7CiAgICAgYWRkSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCks
IG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI3NDgsNyArMjc0OCw3IEBAIEFMV0FZU19JTkxJ
TkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHVucHJvZmlsZWRNdWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTXVsKGdsb2JhbE9iamVj
dCwgb3AxLCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
cHJvZmlsZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBhcml0
aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FMV0FZ
U19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3Vs
ZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTI3ODksNyArMjc4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAg
YXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemU7Ci0g
ICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgp
KQorICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0
aFByb2ZpbGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAg
ICBtdWxJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgbm9uT3B0
aW1pemVWYXJpYW50KTsKIApAQCAtMjgwMCw3ICsyODAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmoKICAgICByZXR1cm4gdW5wcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEs
IGVuY29kZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI4
MTYsNyArMjgxNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVNdWxQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFT
U0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7
CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVk
Tm9PcHRpbWl6ZTsKQEAgLTI4MzUsNyArMjgzNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRo
UHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBwcm9maWxl
ZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUp
OwogfQpAQCAtMjg2MSw3ICsyODYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxl
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Bl
cmFuZCwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjg3MCw3ICsyODcwLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWwKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wZXJhbmQpOwotICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5k
KTsKKyAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7CiAKICAgICBKU1ZhbHVl
IHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTI4OTgsOSArMjg5
OCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQ
cm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgCiAgICAgSlNWYWx1ZSBvcGVyYW5k
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIAotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIFVuYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZSk7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAg
IGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVP
dXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9m
aWxlZCk7CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTI5MzIsOCArMjkzMiw4IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpKQotICAgICAgICBhcml0aFByb2ZpbGUtPm9i
c2VydmVMSFMob3BlcmFuZCk7CisgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2
ZUFyZyhvcGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5j
b2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwogCiAjaWYgRU5BQkxFKE1BVEhfSUNf
U1RBVFMpCkBAIC0yOTU5LDcgKzI5NTksNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSB1bnByb2ZpbGVkU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YihnbG9iYWxPYmplY3QsIG9wMSwgb3AyKSk7CiB9
CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUs
IGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKK0FMV0FZU19JTkxJTkUg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxk
T2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTI5ODMsNyArMjk4Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jCiAgICAgcmV0dXJuIHVucHJvZmlsZWRTdWIoZ2xvYmFsT2JqZWN0LCBlbmNvZGVk
T3AxLCBlbmNvZGVkT3AyKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogCkBA
IC0zMDAxLDcgKzMwMDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlU3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAg
IGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplOwot
ICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUo
KSkKKyAgICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJp
dGhQcm9maWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAg
ICAgc3ViSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9w
dGltaXplVmFyaWFudCk7CiAKQEAgLTMwMjcsNyArMzAyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRo
UHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMt
PmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJv
ZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBv
cGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTMwNDYsNyArMzA0Niw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5v
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2Zp
bGUpOwogICAgIHJldHVybiBwcm9maWxlZFN1Yih2bSwgZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3Ax
LCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKaW5kZXggMzdlODM2MTVkNDcuLjU5NWFlYzQ3Y2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzgsNiArMzgsOCBAQCB0
eXBlZGVmIGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAgICAgCiBjbGFzcyBBcnJheUFsbG9jYXRp
b25Qcm9maWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOworY2xhc3MgVW5hcnlBcml0aFByb2ZpbGU7
CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCdXR0ZXJmbHk7CiBjbGFzcyBDYWxs
RnJhbWU7CiBjbGFzcyBDYWxsTGlua0luZm87CkBAIC02NCw3ICs2Niw2IEBAIGNsYXNzIFdhdGNo
cG9pbnRTZXQ7CiBzdHJ1Y3QgQnlWYWxJbmZvOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIHN0
cnVjdCBJbnN0cnVjdGlvbjsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiAKIGV4dGVybiAiQyIgewog
CkBAIC03Nyw3ICs3OCw3IEBAIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogICAgIEE6IEpTQXJy
YXkqCiAgICAgQWFwOiBBcnJheUFsbG9jYXRpb25Qcm9maWxlKgogICAgIEFwOiBBcnJheVByb2Zp
bGUqCi0gICAgQXJwOiBBcml0aFByb2ZpbGUqCisgICAgQXJwOiBCaW5hcnlBcml0aFByb2ZpbGUq
CiAgICAgQjogQnV0dGVyZmx5KgogICAgIEJ5OiBCeVZhbEluZm8qCiAgICAgQzogSlNDZWxsKgpA
QCAtMjgyLDcgKzI4Myw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0lm
RXhjZXB0aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKFZNCiBpbnQzMl90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkSGFzSW5zdGFuY2UpIFdURl9JTlRFUk5BTDsKIAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5B
TDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxl
ZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZChKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIs
IEJpbmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwg
SklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMq
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlQWRkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdURl9JTlRFUk5BTDsKQEAg
LTI5MiwxMyArMjkzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIs
IEpJVE11bElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVNdWxQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRF
Uk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9m
aWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBvcGVyYW5kKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIG9wZXJh
bmQsIEFyaXRoUHJvZmlsZSopOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgb3Bl
cmFuZCwgVW5hcnlBcml0aFByb2ZpbGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKik7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgSklUTmVnSUMqKTsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5U
RVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJv
ZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRT
dWJJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVTdWJOb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmls
ZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCmluZGV4IDc5NWMyNzU4
NGMwLi43YjFhOGI4MTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdWJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3Vi
R2VuZXJhdG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklU
TWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxI
ZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRv
cjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAg
IC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxo
cyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtNzgsNyArNzgsNyBAQCBKSVRNYXRo
SUNJbmxpbmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBl
cnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVy
YXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlz
dCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklU
U3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xv
d1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJv
b2wgc2hvdWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IElu
dmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRH
UFIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAppbmRl
eCA1NjFmNjMzNGFlMy4uMzQ5MWE4M2ZlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdWJHZW5lcmF0b3IuaApAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgICwg
bV9zY3JhdGNoRlBSKHNjcmF0Y2hGUFIpCiAgICAgeyB9CiAKLSAgICBKSVRNYXRoSUNJbmxpbmVS
ZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRl
JiwgY29uc3QgQXJpdGhQcm9maWxlKik7Ci0gICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxs
SGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5h
cnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wg
c2hvdWxkRW1pdFByb2ZpbGluZyk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0xlZnRPcGVyYW5kVmFs
aWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMg
Ym9vbCBpc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQpIHsgcmV0dXJu
IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4
IDUxZWQ2NTNkOThhLi4yZmRlMTA3YTk4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKQEAgLTE0NywzNiArMTQ3LDQ5IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFz
c2VydGlvbnMoVk0mIHZtKQogI2VuZGlmCiAKICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBh
cml0aFByb2ZpbGU7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAg
ICAgICAgYXJpdGhQcm9maWxlLmFyZ1Nhd0ludDMyKCk7CisgICAgICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUuYml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEJpdHMoKSk7Cisg
ICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIo
KSk7CisgICAgfQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxl
OworICAgICAgICBhcml0aFByb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIEFTU0VSVChh
cml0aFByb2ZpbGUuYml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckJp
dHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkuaXNP
bmx5TnVtYmVyKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxl
IGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CiAgICAg
ICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9m
aWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkuYml0cygp
KTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50
SW50KCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Ci0gICAgICAgIFNUQVRJQ19B
U1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLnJoc09ic2VydmVkVHlw
ZSgpLmlzT25seUludDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9
PSBCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cygpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAg
ICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsK
ICAgICB9CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAg
ICBCaW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUu
bGhzU2F3TnVtYmVyKCk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAg
ICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVk
QmluYXJ5TnVtYmVySW50KCkuYml0cygpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFBy
b2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5
TnVtYmVyKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRC
aW5hcnlOdW1iZXJJbnQoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAg
ICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNl
cnZlZE51bWJlckludEJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2Jz
ZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxl
LnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAg
IEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBh
cml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdOdW1iZXIoKTsKICAgICAg
ICAgYXJpdGhQcm9maWxlLnJoc1Nhd051bWJlcigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9m
aWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCku
Yml0cygpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmlu
YXJ5TnVtYmVyTnVtYmVyKCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwotICAg
ICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1i
ZXIoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChh
cml0aFByb2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJO
dW1iZXJCaXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlw
ZSgpLmlzT25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNl
cnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQXJpdGhQ
cm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJv
ZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7CiAgICAgICAgIGFyaXRo
UHJvZmlsZS5yaHNTYXdOdW1iZXIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRz
KCkgPT0gQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLmJpdHMoKSk7Ci0g
ICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJl
cigpLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwotICAgICAgICBTVEFUSUNfQVNT
RVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5yaHNPYnNlcnZlZFR5
cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygp
ID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkpOworICAgICAg
ICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwor
ICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJl
cigpKTsKICAgICB9CiB9CiBJR05PUkVfV0FSTklOR1NfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDc4YWRk
MDIwNTc1Li43MTI1YmQ0ZjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogCiBjb25zdCBpbnQ2NF90KiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKIHsKLS8v
IFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldHNf
ZXh0cmFjdG9yLnJiLCBhbmQgY29udGFpbnMgY29kZQorLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJh
dGVkIGJ5IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRh
aW5zIGNvZGUKIC8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBo
ZWFkZXIgaWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgogLy8gUGxhdGZvcm0uaCBtYWNy
b3Mgd2UgaGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50
T2Zmc2V0c0V4dHJhY3RvcgogLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdob3NlIG9mZnNldHMgd2Un
cmUgZXh0cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpp
bmRleCA5Y2UzNGM4NTY3Ny4uOWQxMWJlMjEyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI0MSwxMyArMjQxLDE1
IEBAIGNvbnN0IElzSW52YWxpZGF0ZWQgPSBjb25zdGV4cHIgSXNJbnZhbGlkYXRlZAogIyBTaGFk
b3dDaGlja2VuIGRhdGEKIGNvbnN0IFNoYWRvd0NoaWNrZW5UYWlsTWFya2VyID0gY29uc3RleHBy
IFNoYWRvd0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlclZhbHVlCiAKLSMgQXJpdGhQcm9maWxl
IGRhdGEKLWNvbnN0IEFyaXRoUHJvZmlsZUludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpv
YnNlcnZlZFVuYXJ5SW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyID0gY29u
c3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkVW5hcnlOdW1iZXIoKS5iaXRzKCkpCi1jb25z
dCBBcml0aFByb2ZpbGVJbnRJbnQgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRC
aW5hcnlJbnRJbnQoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJJbnQgPSBjb25z
dGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5iaXRzKCkpCi1j
b25zdCBBcml0aFByb2ZpbGVJbnROdW1iZXIgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2Jz
ZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXJO
dW1iZXIgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1i
ZXIoKS5iaXRzKCkpCisjIFVuYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0IEFyaXRoUHJvZmls
ZUludCA9IGNvbnN0ZXhwciAoVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cygpKQor
Y29uc3QgQXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHByIChVbmFyeUFyaXRoUHJvZmlsZTo6
b2JzZXJ2ZWROdW1iZXJCaXRzKCkpCisKKyMgQmluYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2NvbnN0
IEFyaXRoUHJvZmlsZUludEludCA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNl
cnZlZEludEludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IGNvbnN0ZXhw
ciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckludEJpdHMoKSkKK2NvbnN0IEFy
aXRoUHJvZmlsZUludE51bWJlciA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNl
cnZlZEludE51bWJlckJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IGNv
bnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51bWJlckJpdHMoKSkK
IAogIyBQb2ludGVyIFRhZ3MKIGNvbnN0IEJ5dGVjb2RlUHRyVGFnID0gY29uc3RleHByIEJ5dGVj
b2RlUHRyVGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDMzN2VlMjJiNDkzLi45Nzk5ZTFjYmNlZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTk5Miw4ICs5OTIsOCBAQCBlbmQpCiAKIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCiAKLSAgICBtYWNybyBhcml0aFByb2ZpbGUodHlwZSkKLSAgICAg
ICAgb3JpIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFBy
b2ZpbGU6Om1fYml0c1t0NV0KKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAg
ICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFy
eUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgIGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQw
KQpAQCAtMTAwMiwxMiArMTAwMiwxMiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwg
T3BOZWdhdGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcgogICAgIGJp
bmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CiAgICAgYnRpeiB0MiwgMHg3ZmZm
ZmZmZiwgLm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDIKLSAgICBhcml0aFByb2ZpbGUoQXJpdGhQ
cm9maWxlSW50KQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAg
cmV0dXJuIChJbnQzMlRhZywgdDIpCiAub3BOZWdhdGVTcmNOb3RJbnQ6CiAgICAgYmlhIHQxLCBM
b3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgYXJp
dGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJp
dGhQcm9maWxlTnVtYmVyKQogICAgIHJldHVybih0MSwgdDIpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBA
IC0xMDE5LDcgKzEwMTksNyBAQCBlbmQpCiBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVy
YXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0
cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAg
ICAgIG1hY3JvIGFyaXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0
c1t0NV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
YXJpdGhQcm9maWxlICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVu
ZAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMDQ0M2YwY2ZlOGIu
Ljg0MThiMGQ4YmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtOTY0LDIyICs5NjQsMjQgQEAgZW5kKQogCiAK
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisKKyAgICBtYWNybyB1cGRhdGVBcml0aFBy
b2ZpbGUodHlwZSkKKyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0
aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIGVuZAorCiAgICAg
Z2V0KG1fb3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwg
dDMpCiAgICAgbWV0YWRhdGEodDEsIHQyKQotICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6
bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCiAgICAgYnFiIHQz
LCBudW1iZXJUYWcsIC5vcE5lZ2F0ZU5vdEludAogICAgIGJ0aXogdDMsIDB4N2ZmZmZmZmYsIC5v
cE5lZ2F0ZVNsb3cKICAgICBuZWdpIHQzCiAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICBvcmkg
QXJpdGhQcm9maWxlSW50LCB0MgotICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjpt
X2FyaXRoUHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIHVwZGF0ZUFyaXRo
UHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuKHQzKQogLm9wTmVnYXRlTm90SW50
OgogICAgIGJ0cXogdDMsIG51bWJlclRhZywgLm9wTmVnYXRlU2xvdwogICAgIHhvcnEgMHg4MDAw
MDAwMDAwMDAwMDAwLCB0MwotICAgIG9yaSBBcml0aFByb2ZpbGVOdW1iZXIsIHQyCi0gICAgc3Rv
cmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxl
OjptX2JpdHNbdDFdCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikK
ICAgICByZXR1cm4odDMpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC05OTMsNyArOTk1LDcgQEAgbWFj
cm8gYmluYXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJP
cGVyYXRpb25BbmRTdG9yZSwgZG8KICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQogCiAgICAgICAg
IG1hY3JvIHByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisg
ICAgICAgICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJv
ZmlsZSArIFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAg
ICAgIGdldChtX3JocywgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hcm0ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIK
aW5kZXggYjIzZjY1Yjg2ODMuLmIyMjI1Njc4MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXJtLnJiCkBAIC0yOTksNyArMjk5LDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAg
ICAgICAgIGVuZAogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1l
ZEFkZHJlc3Nlc0RvdWJsZShyZXN1bHQpCi0gICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1pc3Bs
YWNlZEltbWVkaWF0ZXMocmVzdWx0LCBbInN0b3JlYiIsICJzdG9yZWkiLCAic3RvcmVwIiwgInN0
b3JlcSJdKQorICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKHJl
c3VsdCwgWyJzdG9yZWIiLCAic3RvcmVoIiwgInN0b3JlaSIsICJzdG9yZXAiLCAic3RvcmVxIl0p
CiAgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMocmVzdWx0LCAw
Li4weGZmLCAwLi4weDBmZikKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2VkQWRk
cmVzc2VzKHJlc3VsdCkKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyUmVnaXN0ZXJSZXVzZShy
ZXN1bHQpCkBAIC00MTgsNyArNDE4LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAg
IGVuZAogICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCiAgICAgICAgICAgICBlbWl0QXJtQ29t
cGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIK
KyAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIsICJvcmgiCiAgICAgICAgICAgICBlbWl0QXJtQ29t
cGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKICAgICAgICAgd2hlbiAib3JpcyIKICAgICAg
ICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJzIiwgIm9ycnMiLCBvcGVyYW5kcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKaW5kZXggMDk2NmVjM2JmNmIuLmZjZDI3
NmYzNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02
NC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpAQCAt
MzkzLDcgKzM5Myw3IEBAIGNsYXNzIFNlcXVlbmNlCiAgICAgICAgICAgICBjYXNlIG5vZGUub3Bj
b2RlCiAgICAgICAgICAgICB3aGVuICJsb2FkYiIsICJsb2FkYnNpIiwgImxvYWRic3EiLCAic3Rv
cmViIiwgL15iYi8sIC9eYnRiLywgL15jYi8sIC9edGIvCiAgICAgICAgICAgICAgICAgc2l6ZSA9
IDEKLSAgICAgICAgICAgIHdoZW4gImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIsICJzdG9y
ZWgiCisgICAgICAgICAgICB3aGVuICJsb2FkaCIsICJsb2FkaHNpIiwgImxvYWRoc3EiLCAib3Jo
IiwgInN0b3JlaCIKICAgICAgICAgICAgICAgICBzaXplID0gMgogICAgICAgICAgICAgd2hlbiAi
bG9hZGkiLCAibG9hZGlzIiwgInN0b3JlaSIsICJhZGRpIiwgImFuZGkiLCAibHNoaWZ0aSIsICJt
dWxpIiwgIm5lZ2kiLAogICAgICAgICAgICAgICAgICJub3RpIiwgIm9yaSIsICJyc2hpZnRpIiwg
InVyc2hpZnRpIiwgInN1YmkiLCAieG9yaSIsIC9eYmkvLCAvXmJ0aS8sCkBAIC00MTgsNyArNDE4
LDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAgIGVuZAogICAgICAgICB9CiAKLSAgICAg
ICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhyZXN1bHQsIFsic3RvcmVi
IiwgInN0b3JlaSIsICJzdG9yZXAiLCAic3RvcmVxIl0pCisgICAgICAgIHJlc3VsdCA9IHJpc2NM
b3dlck1pc3BsYWNlZEltbWVkaWF0ZXMocmVzdWx0LCBbInN0b3JlYiIsICJzdG9yZWgiLCAic3Rv
cmVpIiwgInN0b3JlcCIsICJzdG9yZXEiXSkKIAogICAgICAgICAjIFRoZSBydWxlcyBmb3Igd2hp
Y2ggaW1tZWRpYXRlcyBhcmUgdmFsaWQgZm9yIGFuZC9vci94b3IgaW5zdHJ1Y3Rpb25zIGFyZSBm
YWlybHkgaW52b2x2ZWQsIHNlZSBodHRwczovL2RpbmZ1ZWhyLmdpdGh1Yi5pby9ibG9nL2VuY29k
aW5nLW9mLWltbWVkaWF0ZS12YWx1ZXMtb24tYWFyY2g2NC8KICAgICAgICAgdmFsaWRMb2dpY2Fs
SW1tZWRpYXRlcyA9IFtdCkBAIC03MTEsNiArNzExLDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAg
ICAgICAgICAgIGVtaXRBUk02NFRBQygib3JyIiwgb3BlcmFuZHMsIDpwdHIpCiAgICAgICAgIHdo
ZW4gIm9ycSIKICAgICAgICAgICAgIGVtaXRBUk02NFRBQygib3JyIiwgb3BlcmFuZHMsIDpxdWFk
KQorICAgICAgICB3aGVuICJvcmgiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMoIm9yciIsIG9w
ZXJhbmRzLCA6d29yZCkgIyBub3QgOmhhbGYgYmVjYXVzZSAxNi1iaXQgcmVnaXN0ZXJzIGRvbid0
IGV4aXN0IG9uIEFSTS4KICAgICAgICAgd2hlbiAieG9yaSIKICAgICAgICAgICAgIGVtaXRBUk02
NFRBQygiZW9yIiwgb3BlcmFuZHMsIDp3b3JkKQogICAgICAgICB3aGVuICJ4b3JwIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgppbmRleCBmMzNmNzA2ZGIxOC4uZjUw
OTI2N2ZiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Ns
b29wLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCkBA
IC01ODUsNiArNTg1LDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGNsb29wRW1p
dE9wZXJhdGlvbihvcGVyYW5kcywgOmludDY0LCAifCIpCiAgICAgICAgIHdoZW4gIm9ycCIKICAg
ICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludHB0ciwgInwiKQorICAg
ICAgICB3aGVuICJvcmgiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMs
IDppbnQxNiwgInwiKQogCiAgICAgICAgIHdoZW4gInhvcmkiCiAgICAgICAgICAgICBjbG9vcEVt
aXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIl4iKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCmluZGV4IDdhMjEyYjIwZTJkLi5hNDFl
MDZmN2Q2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5z
dHJ1Y3Rpb25zLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3Ry
dWN0aW9ucy5yYgpAQCAtNDYsNiArNDYsNyBAQCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAi
b3JpIiwKICAgICAgIm9yZiIsCiAgICAgICJvcmQiLAorICAgICAib3JoIiwKICAgICAgInJzaGlm
dGkiLAogICAgICAidXJzaGlmdGkiLAogICAgICAicnNoaWZ0cCIsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vbWlwcy5yYgppbmRleCBiNWYwN2IxNjhjMy4uNWE1MzJkODViNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgpAQCAtNTI3LDcgKzUyNyw3
IEBAIGRlZiBtaXBzTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKGxpc3QpCiAgICAgICAgICAgICAg
ICAgZW5kCiAgICAgICAgICAgICB3aGVuIC9eKGFkZGl8c3ViaSkvCiAgICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBub2RlLnJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xp
c3QsIC0weDdmZmYuLjB4N2ZmZikKLSAgICAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIsICJv
cmkiLCAib3JwIiwgInhvcmkiLCAieG9ycCIKKyAgICAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5k
cCIsICJvcmkiLCAib3JwIiwgIm9yaCIsICJ4b3JpIiwgInhvcnAiCiAgICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBub2RlLnJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xp
c3QsIDAuLjB4ZmZmZikKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IG5vZGUKQEAgLTg2MCw3ICs4NjAsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAg
ICAgZW5kCiAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKICAgICAgICAgICAgIGVtaXRNSVBT
Q29tcGFjdCgiYW5kIiwgImFuZCIsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJvcmkiLCAib3Jw
IgorICAgICAgICB3aGVuICJvcmkiLCAib3JwIiwgIm9yaCIKICAgICAgICAgICAgIGVtaXRNSVBT
Q29tcGFjdCgib3IiLCAib3JyIiwgb3BlcmFuZHMpCiAgICAgICAgIHdoZW4gIm9yaXMiCiAgICAg
ICAgICAgICBlbWl0TUlQU0NvbXBhY3QoIm9yIiwgIm9ycnMiLCBvcGVyYW5kcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiCmluZGV4IDc1ZDdhOThmMzNmLi4xZTY3MDRm
YWI3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5y
YgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiCkBAIC00NjIs
NyArNDYyLDcgQEAgZGVmIHJpc2NMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhsaXN0KQogICAgICAg
ICAgICAgcG9zdEluc3RydWN0aW9ucyA9IFtdCiAgICAgICAgICAgICBhbm5vdGF0aW9uID0gbm9k
ZS5hbm5vdGF0aW9uCiAgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCi0gICAgICAgICAgICB3
aGVuICJhZGRpIiwgImFkZGlzIiwgImFuZGkiLCAibHNoaWZ0aSIsICJtdWxpIiwgIm5lZ2kiLCAi
bm90aSIsICJvcmkiLCAib3JpcyIsCisgICAgICAgICAgICB3aGVuICJhZGRpIiwgImFkZGlzIiwg
ImFuZGkiLCAibHNoaWZ0aSIsICJtdWxpIiwgIm5lZ2kiLCAibm90aSIsICJvcmkiLCAib3JoIiwg
Im9yaXMiLAogICAgICAgICAgICAgICAgICJyc2hpZnRpIiwgInVyc2hpZnRpIiwgInN1YmkiLCAi
c3ViaXMiLCAieG9yaSIsIC9eYmkvLCAvXmJ0aS8sIC9eY2kvLCAvXnRpLwogICAgICAgICAgICAg
ICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgppbmRleCAxMTJlZWQ3YjVjMS4uNmRjYTA0NzFk
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKQEAgLTExMjMsNiAr
MTEyMyw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBoYW5kbGVYODZPcCgib3Jw
cyIsIDpmbG9hdCkKICAgICAgICAgd2hlbiAib3JkIgogICAgICAgICAgICAgaGFuZGxlWDg2T3Ao
Im9ycGQiLCA6ZG91YmxlKQorICAgICAgICB3aGVuICJvcmgiCisgICAgICAgICAgICBoYW5kbGVY
ODZPcCgib3Ije3g4NlN1ZmZpeCg6aGFsZil9IiwgOmhhbGYpCiAgICAgICAgIHdoZW4gInJzaGlm
dGkiCiAgICAgICAgICAgICBoYW5kbGVYODZTaGlmdCgic2FyI3t4ODZTdWZmaXgoOmludCl9Iiwg
OmludCkKICAgICAgICAgd2hlbiAicnNoaWZ0cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9SZXN1bHRUeXBlLmgKaW5kZXggOWIzZDBkNzRjOGQuLjU2MjJmMjg5Y2MxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaApAQCAtNDgsNiArNDgsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG51bUJpdHNOZWVkZWQg
PSA3OwogICAgICAgICBzdGF0aWNfYXNzZXJ0KChUeXBlQml0cyAmICgoMSA8PCBudW1CaXRzTmVl
ZGVkKSAtIDEpKSA9PSBUeXBlQml0cywgIlRoaXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVz
cy4iKTsKIAorICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlwZSgpCisgICAgICAg
ICAgICA6IFJlc3VsdFR5cGUodW5rbm93blR5cGUoKSkKKyAgICAgICAgeworICAgICAgICB9CiAg
ICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBSZXN1bHRUeXBlKFR5cGUgdHlwZSkKICAgICAgICAg
ICAgIDogbV9iaXRzKHR5cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDg2NmQyYTljMmUzLi43MmUwNDA5
MTU0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCkBAIC00NzYsOCArNDc2LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rv
X3N0cmluZykKICNpZiBFTkFCTEUoSklUKQogc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxl
Rm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmFsdWUgcmVz
dWx0LCBKU1ZhbHVlIG9wZXJhbmQpCiB7Ci0gICAgQXJpdGhQcm9maWxlJiBwcm9maWxlID0gbWV0
YWRhdGEubV9hcml0aFByb2ZpbGU7Ci0gICAgcHJvZmlsZS5vYnNlcnZlTEhTKG9wZXJhbmQpOwor
ICAgIFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEubV9hcml0aFByb2ZpbGU7
CisgICAgcHJvZmlsZS5vYnNlcnZlQXJnKG9wZXJhbmQpOwogICAgIEFTU0VSVChyZXN1bHQuaXNO
dW1iZXIoKSB8fCByZXN1bHQuaXNCaWdJbnQoKSk7CiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigp
KSB7CiAgICAgICAgIGlmICghcmVzdWx0LmlzSW50MzIoKSkgewpAQCAtNTM0LDcgKzUzNCw3IEBA
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpCiAjaWYgRU5BQkxFKERGR19KSVQpCiBz
dGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgSlNWYWx1
ZSByZXN1bHQsIEpTVmFsdWUgbGVmdCwgSlNWYWx1ZSByaWdodCkKIHsKLSAgICBBcml0aFByb2Zp
bGUmIHByb2ZpbGUgPSAqY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmlu
YXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxl
Rm9yUEMocGMpOwogCiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICgh
cmVzdWx0LmlzSW50MzIoKSkgewpAQCAtNTk1LDcgKzU5NSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9hZGQpCiAgICAgSlNWYWx1ZSB2MSA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1Zh
bHVlKCk7CiAgICAgSlNWYWx1ZSB2MiA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7
CiAKLSAgICBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpjb2RlQmxvY2stPmFyaXRoUHJv
ZmlsZUZvclBDKHBjKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpj
b2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKHBjKTsKICAgICBhcml0aFByb2ZpbGUu
b2JzZXJ2ZUxIU0FuZFJIUyh2MSwgdjIpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FkZChn
bG9iYWxPYmplY3QsIHYxLCB2Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383078</attachid>
            <date>2019-11-07 15:07:40 -0800</date>
            <delta_ts>2019-11-07 17:57:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>124451</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGExNzRiZGU2Nzc0Li5mMDMyMTg3NGVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY4IEBACisyMDE5LTExLTA3ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisK
KyAgICAgICAgQXJpdGhQcm9maWxlIHdhcyBmb3IgYSBsb25nIHRpbWUgb25seSB1c2VkIGZvciBh
ZGQvc3ViL211bC9kaXYsIGJ1dCByZWNlbnRseSBpdCBzdGFydGVkIGJlaW5nIHVzZWQgZm9yIG5l
Z2F0ZS4gQW5kIGl0IHdpbGwgc29vbiBhbHNvIGhhdmUgdG8gYmUgdXNlZCBmb3IgaW5jIGFuZCBk
ZWMgZHVlIHRvIEJpZ0ludC4KKyAgICAgICAgU28gaW4gdGhpcyBwYXRjaCBJIG1ha2UgYSBzZXBh
cmF0ZSB2ZXJzaW9uIHRoYXQgb25seSBoYXMgdGhlIGRhdGEgZm9yIGEgc2luZ2xlIGFyZ3VtZW50
LCBhbmQgdGh1cyB0YWtlcyBoYWxmIGFzIG11Y2ggbWVtb3J5LgorCisgICAgICAgIEFmdGVyIGRp
c2N1c3NpbmcgdGhpcyBjaGFuZ2Ugd2l0aCBQaGlsIEkgcmVhbGl6ZWQgdGhhdCB0aGUgUmVzdWx0
VHlwZShzKSB0aGF0IHdlcmUgdGFraW5nIHNwYWNlIGluIEFyaXRoUHJvZmlsZSBhcmUgbm90IG5l
ZWRlZDogdGhleSBuZXZlciBjaGFuZ2UgYW5kIGEgY29weSBpcyBhbHJlYWR5IGluIHRoZSBieXRl
Y29kZSBpbnN0cnVjdGlvbiBpdHNlbGYuCisgICAgICAgIFJlbW92aW5nIHRoZW0gYWxsb3dlZCBz
aHJpbmtpbmcgYm90aCBraW5kcyBvZiBBcml0aFByb2ZpbGUgdG8gZml0IGluIDE2IGJpdHMgKDkg
YW5kIDEzIHJlc3BlY3RpdmVseSkuCisgICAgICAgIEkga2VwdCB0aGUgdHdvIGtpbmRzIHNlcGFy
YXRlIGJlY2F1c2UgdGhleSBtYXkgc2hyaW5rIG9yIGdyb3cgaW5kZXBlbmRlbnRseSBpbiB0aGUg
ZnV0dXJlLgorCisgICAgICAgIFRoaXMgYWxzbyByZXF1aXJlZCBhZGRpbmcgdGhlICJvcmgiIGlu
c3RydWN0aW9uIHRvIHRoZSBvZmZsaW5lIGFzc2VtYmxlciwgdG8gc2V0IGJpdHMgaW4gdGhlIEFy
aXRoUHJvZmlsZS4KKyAgICAgICAgVGhpcyBpbiB0dXJuIG1vdGl2YXRlZCB0aGUgYWRkaXRpb24g
b2YgInN0b3JlaCIsIGFzIG9uIFJJU0MgcGxhdGZvcm1zICJvcmgiIG9uIGEgbWVtb3J5IGxvY2F0
aW9uIGlzIGFjdHVhbGx5IGxvYWRoIC0+IG9yaCAtPiBzdG9yZWguCisKKyAgICAgICAgKiBieXRl
Y29kZS9Bcml0aFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0Zmll
bGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8
Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldERvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXROb25OdW1l
cmljIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNo
b3VsZEVtaXRTZXRCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0
ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAgICAgIChX
VEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5oOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOb25JbnQzMiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZURvdWJsZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOZWdaZXJvRG91YmxlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlTm9uTnVtZXJpYyBj
b25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUJpZ0ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3cg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVJbnQ1Mk92ZXJm
bG93IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5vbk5l
Z1plcm9Eb3VibGUpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkTmVn
WmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWROb25O
dW1lcmljKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEJpZ0ludCk6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3cpOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6Om9ic2VydmVSZXN1bHQpOgorICAgICAgICAoSlND
OjpBcml0aFByb2ZpbGU6OmFkZHJlc3NPZkJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU6OmJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OkFyaXRo
UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6aGFzQml0cyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0Qml0KToKKyAgICAgICAgKEpTQzo6VW5hcnlB
cml0aFByb2ZpbGU6OlVuYXJ5QXJpdGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlOjpvYnNlcnZlZE51bWJlckJpdHMpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmls
ZTo6YXJnT2JzZXJ2ZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2Zp
bGU6OnNldEFyZ09ic2VydmVkVHlwZSk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxl
OjphcmdTYXdJbnQzMik6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdO
dW1iZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6YXJnU2F3Tm9uTnVtYmVy
KToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVBcmcpOgorICAgICAg
ICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6aXNPYnNlcnZlZFR5cGVFbXB0eSk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6QmluYXJ5QXJpdGhQcm9maWxlKToKKyAgICAgICAg
KEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEludEJpdHMpOgorICAgICAgICAo
SlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVySW50Qml0cyk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51bWJlckJpdHMpOgor
ICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6OnNldExoc09ic2VydmVkVHlwZSk6Cisg
ICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6c2V0UmhzT2JzZXJ2ZWRUeXBlKToKKyAg
ICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlTEhTKToKKyAgICAgICAgKEpT
Qzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlTEhTQW5kUkhTKToKKyAgICAgICAgKEpTQzo6
QmluYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRKSVRBZGRJQyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6YWRkSklUTXVsSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVFN1
YklDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRKSVROZWdJQyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZE1hdGhJQyk6
CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpyZXBvcnRWYWx1ZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3ApOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAoSlNDOjpVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjptYWtlU2FmZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
Om1ha2VEaXZTYWZlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjptZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVBZGQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVTdWIpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVNdWwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVW5hcnlNYXRoSUMp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQmluYXJ5TWF0
aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRo
QWRkT3JTdWIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
VmFsdWVOZWdhdGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQWRk
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlu
bGluZSk6CisgICAgICAgIChKU0M6OkpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgICogaml0L0pJVEFkZEdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVRBcml0
aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lZ2F0ZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNG
YXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0aElDU2xvdyk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbXVsKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1Yik6CisgICAgICAgICogaml0L0pJVERpdkdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0
aCk6CisgICAgICAgICogaml0L0pJVERpdkdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVRE
aXZHZW5lcmF0b3I6OkpJVERpdkdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6SklUOjpjb3BpZWRBcml0aFByb2ZpbGUpOgorICAgICAgICAqIGpp
dC9KSVRNYXRoSUMuaDoKKyAgICAgICAgKEpTQzo6SklUTWF0aElDOjpKSVRNYXRoSUMpOgorICAg
ICAgICAoSlNDOjpKSVRNYXRoSUM6OmdlbmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SklU
TWF0aElDOjphcml0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjppc0JpbmFyeVByb2Zp
bGVFbXB0eSk6CisgICAgICAgIChKU0M6OkpJVEJpbmFyeU1hdGhJQzo6SklUQmluYXJ5TWF0aElD
KToKKyAgICAgICAgKEpTQzo6aXNVbmFyeVByb2ZpbGVFbXB0eSk6CisgICAgICAgIChKU0M6OkpJ
VFVuYXJ5TWF0aElDOjpKSVRVbmFyeU1hdGhJQyk6CisgICAgICAgICogaml0L0pJVE11bEdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUp
OgorICAgICAgICAoSlNDOjpKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAg
ICAgICAqIGppdC9KSVRNdWxHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBqaXQvSklUTmVnR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZSk6
CisgICAgICAgIChKU0M6OkpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAg
ICAgICogaml0L0pJVE5lZ0dlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRT
dWJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKiBqaXQvSklUU3ViR2VuZXJhdG9yLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25z
KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206Cisg
ICAgICAgICogcGFyc2VyL1Jlc3VsdFR5cGUuaDoKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6
UmVzdWx0VHlwZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3ApOgorICAgICAgICAo
SlNDOjp1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKToKKyAgICAgICAgKEpTQzo6
U0xPV19QQVRIX0RFQ0wpOgorCiAyMDE5LTExLTA3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNTAwODcpOiBp
bnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC5odG1sIGlzIHRpbWluZyBvdXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKaW5kZXggOTk5OTMz
YjhjMGUuLjdmNDZmNzNmYzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJpdGhQcm9maWxlLmNwcApAQCAtMzIsNyArMzIsOCBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
ICNpZiBFTkFCTEUoSklUKQotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRPYnNlcnZlUmVzdWx0KEND
YWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJl
Z3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQogewogICAgIGlmICghc2hvdWxkRW1pdFNl
dERvdWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRFbWl0U2V0
QmlnSW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDQxICs1OSw1MSBAQCB2b2lkIEFyaXRo
UHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdz
IHJlZ3MsIFRhZ1JlZwogICAgIGRvbmUubGluaygmaml0KTsKIH0KIAotYm9vbCBBcml0aFByb2Zp
bGU6OnNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0Zmll
bGRUeXBlPgorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldERv
dWJsZSgpIGNvbnN0CiB7Ci0gICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6SW50MzJP
dmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6TmVn
WmVyb0RvdWJsZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZTsKKyAgICB1aW50MzJf
dCBtYXNrID0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTmVnWmVyb0RvdWJsZTsKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9
CiAKLXZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBj
b25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgordm9pZCBBcml0aFByb2ZpbGU8
Qml0ZmllbGRUeXBlPjo6ZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIHsK
ICAgICBpZiAoc2hvdWxkRW1pdFNldERvdWJsZSgpKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6OkludDMyT3ZlcmZsb3cgfCBBcml0aFBy
b2ZpbGU6OkludDUyT3ZlcmZsb3cgfCBBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUgfCBBcml0
aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVz
cyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NP
ZkJpdHMoKSkpOwogfQogCi1ib29sIEFyaXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldE5vbk51bWVy
aWMoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9vbCBBcml0aFBy
b2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdAogewog
ICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWM7CiAgICAgcmV0dXJu
IChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCi1ib29sIEFyaXRoUHJvZmlsZTo6c2hvdWxk
RW1pdFNldEJpZ0ludCgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citi
b29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29u
c3QKIHsKICAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxlOjpCaWdJbnQ7CiAgICAgcmV0
dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1p
dFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0
Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIHsKICAgICBpZiAoc2hvdWxkRW1p
dFNldE5vbk51bWVyaWMoKSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoQXJpdGhQcm9maWxlOjpOb25OdW1lcmljKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFk
ZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKE5vbk51bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhh
ZGRyZXNzT2ZCaXRzKCkpKTsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+
Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50KENDYWxsSGVs
cGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0QmlnSW50KCkpCi0gICAg
ICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Qmln
SW50KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7Cisg
ICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJpZ0ludCksIENDYWxs
SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwogfQorCisvLyBHZW5l
cmF0ZSB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBmdW5jdGlvbnMgYWJvdmUgZm9yIFVuYXJ5
QXJpdGhQcm9maWxlL0JpbmFyeUFyaXRoUHJvZmlsZQorLy8gSWYgY2hhbmdpbmcgdGhlIHNpemUg
b2YgZWl0aGVyLCBhZGQgdGhlIGNvcnJlc3BvbmRpbmcgbGluZXMgaGVyZS4KK3RlbXBsYXRlIGNs
YXNzIEFyaXRoUHJvZmlsZTx1aW50MTZfdD47CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkBAIC0xMDEsNyArMTEyLDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgQXJpdGhQcm9maWxlJiBwcm9maWxlKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQXJpdGhQcm9maWxl
PFQ+JiBwcm9maWxlKQogewogICAgIGNvbnN0IGNoYXIqIHNlcGFyYXRvciA9ICIiOwogCkBAIC0x
MzUsMTkgKzE0NywzMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgQXJpdGhQcm9maWxlJiBwcm9maWxlKQogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwog
ICAgICAgICB9CiAgICAgfQotICAgIGlmIChwcm9maWxlLnRvb2tTcGVjaWFsRmFzdFBhdGgoKSkK
LSAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIlRvb2sgc3BlY2lhbCBmYXN0IHBhdGguIik7
CiAgICAgb3V0LnByaW50KCI+Iik7Cit9CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSkKK3sKKyAgICBwcmludElu
dGVybmFsKG91dCwgc3RhdGljX2Nhc3Q8QXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZT4+KHByb2ZpbGUpKTsKKworICAgIG91dC5wcmludCgiIEFyZyBPYnNlcnZlZFR5cGU6PCIpOwor
ICAgIG91dC5wcmludChwcm9maWxlLmFyZ09ic2VydmVkVHlwZSgpKTsKKyAgICBvdXQucHJpbnQo
Ij4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEJp
bmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSkKK3sKKyAgICBwcmludEludGVybmFsKG91dCwgc3Rh
dGljX2Nhc3Q8QXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4+KHByb2ZpbGUpKTsK
KworICAgIGlmIChwcm9maWxlLnRvb2tTcGVjaWFsRmFzdFBhdGgoKSkKKyAgICAgICAgb3V0LnBy
aW50KCIgVG9vayBzcGVjaWFsIGZhc3QgcGF0aC4iKTsKIAogICAgIG91dC5wcmludCgiIExIUyBP
YnNlcnZlZFR5cGU6PCIpOwogICAgIG91dC5wcmludChwcm9maWxlLmxoc09ic2VydmVkVHlwZSgp
KTsKICAgICBvdXQucHJpbnQoIj4gUkhTIE9ic2VydmVkVHlwZTo8Iik7CiAgICAgb3V0LnByaW50
KHByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgiPiIpOwotCi0gICAg
b3V0LnByaW50KCIgTEhTIFJlc3VsdFR5cGU6PCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2ZpbGUubGhzUmVzdWx0VHlwZSgpLmJpdHMo
KSkpKSk7Ci0gICAgb3V0LnByaW50KCI+IFJIUyBSZXN1bHRUeXBlOjwiLCBSYXdQb2ludGVyKGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90Pihwcm9maWxlLnJoc1Jlc3Vs
dFR5cGUoKS5iaXRzKCkpKSkpOwotICAgIG91dC5wcmludCgiPiIpOwogfQogCiB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSlNDOjpPYnNlcnZlZFR5cGUmIG9ic2Vy
dmVkVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0
aFByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
aAppbmRleCBmY2M0ZTI4MThiZS4uY2FkOTlmNDhiYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKQEAgLTY2LDExOSArNjYsMjE3IEBAIHByaXZh
dGU6CiAgICAgdWludDhfdCBtX2JpdHMgeyAwIH07CiB9OwogCi1zdHJ1Y3QgQXJpdGhQcm9maWxl
IHsKLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1iZXJPZkZsYWdC
aXRzID0gNjsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHJoc1Jlc3VsdFR5cGVTaGlm
dCA9IG51bWJlck9mRmxhZ0JpdHM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNS
ZXN1bHRUeXBlU2hpZnQgPSByaHNSZXN1bHRUeXBlU2hpZnQgKyBSZXN1bHRUeXBlOjpudW1CaXRz
TmVlZGVkOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgPSBsaHNSZXN1bHRUeXBlU2hpZnQgKyBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNl
cnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsKLQotICAgIHN0YXRp
Y19hc3NlcnQoT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJXZSBtYWtlIGEgaGFy
ZCBhc3N1bXB0aW9uIGFib3V0IHRoYXQgaGVyZS4iKTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IGNsZWFyUmhzT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PHVpbnQzMl90
Pih+KCgxIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KSB8ICgxIDw8IChyaHNPYnNlcnZlZFR5cGVT
aGlmdCArIDEpKSB8ICgxIDw8IChyaHNPYnNlcnZlZFR5cGVTaGlmdCArIDIpKSkpOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KH4oKDEgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwg
KGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0
ICsgMikpKSk7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHJlc3VsdFR5cGVNYXNr
ID0gKDEgPDwgUmVzdWx0VHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3Qgb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVt
Qml0c05lZWRlZCkgLSAxOwordGVtcGxhdGUgPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2NsYXNz
IEFyaXRoUHJvZmlsZSB7CitwdWJsaWM6CisgICAgZW51bSBPYnNlcnZlZFJlc3VsdHMgeworICAg
ICAgICBOb25OZWdaZXJvRG91YmxlID0gMSA8PCAwLAorICAgICAgICBOZWdaZXJvRG91YmxlICAg
ID0gMSA8PCAxLAorICAgICAgICBOb25OdW1lcmljICAgICAgID0gMSA8PCAyLAorICAgICAgICBJ
bnQzMk92ZXJmbG93ICAgID0gMSA8PCAzLAorICAgICAgICBJbnQ1Mk92ZXJmbG93ICAgID0gMSA8
PCA0LAorICAgICAgICBCaWdJbnQgICAgICAgICAgID0gMSA8PCA1LAorICAgIH07CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkID0gNjsK
IAotICAgIGVudW0gY2xhc3MgQ29uc3RhbnRUYWcgeyBDb25zdGFudCB9OworICAgIGJvb2wgZGlk
T2JzZXJ2ZU5vbkludDMyKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBCaWdJbnQpOyB9CisgICAgYm9vbCBkaWRP
YnNlcnZlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwg
TmVnWmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOb25OZWdaZXJvRG91YmxlKCkg
Y29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlk
T2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5lZ1plcm9Eb3Vi
bGUpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlTm9uTnVtZXJpYygpIGNvbnN0IHsgcmV0dXJuIGhh
c0JpdHMoTm9uTnVtZXJpYyk7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSBjb25zdCB7
IHJldHVybiBoYXNCaXRzKEJpZ0ludCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJm
bG93KCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhJbnQzMk92ZXJmbG93KTsgfQorICAgIGJvb2wg
ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDUyT3Zl
cmZsb3cpOyB9CiAKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNwZWNp
YWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBl
OjpudW1CaXRzTmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlm
dCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgPD0gKHNpemVvZih1aW50MzJfdCkgKiA4
KSAtIDEsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7Ci0gICAgc3RhdGljX2Fzc2VydCgh
KHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhl
c2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNwZWNp
YWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMg
c2hvdWxkIGludGVyc2VjdC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJp
dCA+IH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3Qg
aW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4i
KTsKKyAgICB2b2lkIHNldE9ic2VydmVkTm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5vbk5l
Z1plcm9Eb3VibGUpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNl
dEJpdChOZWdaZXJvRG91YmxlKTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkg
eyBzZXRCaXQoTm9uTnVtZXJpYyk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50KCkgeyBz
ZXRCaXQoQmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBz
ZXRCaXQoSW50MzJPdmVyZmxvdyk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkSW50NTJPdmVyZmxv
dygpIHsgc2V0Qml0KEludDUyT3ZlcmZsb3cpOyB9CiAKLSAgICBBcml0aFByb2ZpbGUoUmVzdWx0
VHlwZSBhcmcpCi0gICAgICAgIDogQXJpdGhQcm9maWxlKENvbnN0YW50VGFnOjpDb25zdGFudCwg
YXJnKQorICAgIHZvaWQgb2JzZXJ2ZVJlc3VsdChKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKGxoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gYXJnLmJpdHMoKSk7Ci0gICAgICAg
IEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQocmhz
T2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAg
ICAgICAgICAgIG1fYml0cyB8PSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5l
Z1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc0JpZ0ludCgpKSB7CisgICAgICAgICAg
ICBtX2JpdHMgfD0gQmlnSW50OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIG1fYml0cyB8PSBOb25OdW1lcmljOwogICAgIH0KIAotICAgIEFyaXRoUHJvZmlsZShSZXN1
bHRUeXBlIGxocywgUmVzdWx0VHlwZSByaHMpCi0gICAgICAgIDogQXJpdGhQcm9maWxlKENvbnN0
YW50VGFnOjpDb25zdGFudCwgbGhzLCByaHMpCisgICAgY29uc3Qgdm9pZCogYWRkcmVzc09mQml0
cygpIGNvbnN0IHsgcmV0dXJuICZtX2JpdHM7IH0KKworI2lmIEVOQUJMRShKSVQpCisgICAgLy8g
U2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwg
TmVnWmVyb0RvdWJsZSkgaWYgaXQgc2VlcyBhCisgICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWVy
aWMgaWYgaXQgc2VlcyBhIG5vbi1udW1lcmljLgorICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQo
Q0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVn
aXN0ZXJzKTsKKworICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwg
Tm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgorICAgIGJvb2wgc2hvdWxkRW1pdFNl
dERvdWJsZSgpIGNvbnN0OworICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBj
b25zdDsKKworICAgIC8vIFNldHMgTm9uTnVtYmVyLgorICAgIHZvaWQgZW1pdFNldE5vbk51bWVy
aWMoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJp
YygpIGNvbnN0OworCisgICAgLy8gU2V0cyBCaWdJbnQKKyAgICB2b2lkIGVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29u
c3Q7CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRz
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzOyB9CisKK3Byb3RlY3RlZDoKKyAgICBBcml0aFByb2Zp
bGUoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGxoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gbGhz
LmJpdHMoKSAmJiByaHNSZXN1bHRUeXBlKCkuYml0cygpID09IHJocy5iaXRzKCkpOwotICAgICAg
ICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKHJo
c09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQogCi0gICAgQXJpdGhQcm9maWxlKE9w
ZXJhbmRUeXBlcyB0eXBlcykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUodHlwZXMuZmlyc3QoKSwg
dHlwZXMuc2Vjb25kKCkpCi0gICAgeyB9CisgICAgYm9vbCBoYXNCaXRzKGludCBtYXNrKSBjb25z
dCB7IHJldHVybiBtX2JpdHMgJiBtYXNrOyB9CisgICAgdm9pZCBzZXRCaXQoaW50IG1hc2spIHsg
bV9iaXRzIHw9IG1hc2s7IH0KKworICAgIEJpdGZpZWxkVHlwZSBtX2JpdHMgeyAwIH07IC8vIFdl
IHRha2UgY2FyZSB0byB1cGRhdGUgbV9iaXRzIG9ubHkgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLiBX
ZSBkb24ndCBldmVyIHN0b3JlIGFuIGluY29uc2lzdGVudCBiaXQgcmVwcmVzZW50YXRpb24gdG8g
aXQuCit9OworCisvKiBUaGlzIGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMg
aW4gMTYgYml0czoKKyAqIC0gT2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3Ig
dGhlIGFyZ3VtZW50CisgKi8KK3VzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90
OworY2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJp
dGhQcm9maWxlQmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOwogCi0gICAgQXJpdGhQ
cm9maWxlKCkgPSBkZWZhdWx0OworICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hp
ZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9m
aWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5n
IGJpdGZpZWxkLiIpOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgZnJvbUlu
dCh1aW50MzJfdCBiaXRzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVC
YXNlIGNsZWFyQXJnT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PFVuYXJ5QXJpdGhQ
cm9maWxlQmFzZT4ofigwYjExMSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdCkpOworCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgx
IDw8IE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgVW5h
cnlBcml0aFByb2ZpbGUoKQorICAgICAgICA6IEFyaXRoUHJvZmlsZTxVbmFyeUFyaXRoUHJvZmls
ZUJhc2U+KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBBcml0aFByb2ZpbGUgeyBDb25zdGFudFRh
Zzo6Q29uc3RhbnQsIGJpdHMgfTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlz
RW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChhcmdPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkVW5hcnlJ
bnQoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVk
SW50Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVk
SW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIg
dWludDMyX3QgYml0cyA9IG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNo
aWZ0OwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHg4MDAwMDAsICIiKTsKLSAgICAg
ICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJv
ZmlsZUJhc2UgYml0cyA9IG9ic2VydmVkSW50MzIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNo
aWZ0OworICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBB
cml0aFByb2ZpbGUgb2JzZXJ2ZWRVbmFyeU51bWJlcigpCisgICAgc3RhdGljIGNvbnN0ZXhwciBV
bmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWROdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAg
IGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53
aXRoTnVtYmVyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSBvYnNlcnZl
ZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoYml0cyA9PSAweDEwMDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0
cyk7CisgICAgICAgIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IG9ic2Vy
dmVkTnVtYmVyLmJpdHMoKSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdDsKKyAgICAgICAgcmV0dXJu
IGJpdHM7CisgICAgfQorCisgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBhcmdPYnNlcnZlZFR5
cGUoKSBjb25zdCB7IHJldHVybiBPYnNlcnZlZFR5cGUoKG1fYml0cyA+PiBhcmdPYnNlcnZlZFR5
cGVTaGlmdCkgJiBvYnNlcnZlZFR5cGVNYXNrKTsgfQorICAgIHZvaWQgc2V0QXJnT2JzZXJ2ZWRU
eXBlKE9ic2VydmVkVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGVC
YXNlIGJpdHMgPSBtX2JpdHM7CisgICAgICAgIGJpdHMgJj0gY2xlYXJBcmdPYnNlcnZlZFR5cGVC
aXRNYXNrOworICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNo
aWZ0OworICAgICAgICBtX2JpdHMgPSBiaXRzOworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRU
eXBlKCkgPT0gdHlwZSk7CisgICAgfQorCisgICAgdm9pZCBhcmdTYXdJbnQzMigpIHsgc2V0QXJn
T2JzZXJ2ZWRUeXBlKGFyZ09ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpKTsgfQorICAgIHZvaWQg
YXJnU2F3TnVtYmVyKCkgeyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0
aE51bWJlcigpKTsgfQorICAgIHZvaWQgYXJnU2F3Tm9uTnVtYmVyKCkgeyBzZXRBcmdPYnNlcnZl
ZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0aE5vbk51bWJlcigpKTsgfQorCisgICAgdm9pZCBv
YnNlcnZlQXJnKEpTVmFsdWUgYXJnKQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUg
bmV3UHJvZmlsZSA9ICp0aGlzOworICAgICAgICBpZiAoYXJnLmlzTnVtYmVyKCkpIHsKKyAgICAg
ICAgICAgIGlmIChhcmcuaXNJbnQzMigpKQorICAgICAgICAgICAgICAgIG5ld1Byb2ZpbGUuYXJn
U2F3SW50MzIoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdQcm9maWxl
LmFyZ1Nhd051bWJlcigpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5ld1Byb2ZpbGUu
YXJnU2F3Tm9uTnVtYmVyKCk7CisKKyAgICAgICAgbV9iaXRzID0gbmV3UHJvZmlsZS5iaXRzKCk7
CisgICAgfQorCisgICAgYm9vbCBpc09ic2VydmVkVHlwZUVtcHR5KCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhcmdPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CisgICAgfQorCisgICAgZnJpZW5k
IGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworfTsKKworLyogVGhpcyBjbGFzcyBz
dG9yZXMgdGhlIGZvbGxvd2luZyBjb21wb25lbnRzIGluIDE2IGJpdHM6CisgKiAtIE9ic2VydmVk
UmVzdWx0cworICogLSBPYnNlcnZlZFR5cGUgZm9yIHJpZ2h0LWhhbmQtc2lkZQorICogLSBPYnNl
cnZlZFR5cGUgZm9yIGxlZnQtaGFuZC1zaWRlCisgKiAtIGEgYml0IHVzZWQgYnkgZGl2aXNpb24g
dG8gaW5kaWNhdGUgd2hldGhlciBhIHNwZWNpYWwgZmFzdCBwYXRoIHdhcyB0YWtlbgorICovCit1
c2luZyBCaW5hcnlBcml0aFByb2ZpbGVCYXNlID0gdWludDE2X3Q7CitjbGFzcyBCaW5hcnlBcml0
aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+IHsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHJoc09ic2VydmVkVHlwZVNoaWZ0ID0gb2Jz
ZXJ2ZWRSZXN1bHRzTnVtQml0c05lZWRlZDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IGxoc09ic2VydmVkVHlwZVNoaWZ0ID0gcmhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5
cGU6Om51bUJpdHNOZWVkZWQ7CisKKyAgICBzdGF0aWNfYXNzZXJ0KE9ic2VydmVkVHlwZTo6bnVt
Qml0c05lZWRlZCA9PSAzLCAiV2UgbWFrZSBhIGhhcmQgYXNzdW1wdGlvbiBhYm91dCB0aGF0IGhl
cmUuIik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFy
UmhzT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2U+KH4oMGIxMTEgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpKTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0g
c3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigwYjExMSA8PCBsaHNPYnNlcnZl
ZFR5cGVTaGlmdCkpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVC
YXNlIG9ic2VydmVkVHlwZU1hc2sgPSAoMSA8PCBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQp
IC0gMTsKKworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBzcGVjaWFsRmFzdFBhdGhCaXQgPSAxIDw8IChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCk7CisgICAgc3RhdGljX2Fzc2VydCgobGhzT2JzZXJ2
ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgKyAxKSA8PSBzaXplb2Yo
QmluYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHVpbnQzMl90LiIp
OworICAgIHN0YXRpY19hc3NlcnQoIShzcGVjaWFsRmFzdFBhdGhCaXQgJiB+Y2xlYXJMaHNPYnNl
cnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QuIik7Cisg
ICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhCaXQgJiBjbGVhckxoc09ic2VydmVkVHlw
ZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBpbnRlcnNlY3QuIik7CisgICAgc3RhdGljX2Fz
c2VydChzcGVjaWFsRmFzdFBhdGhCaXQgPiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAi
VGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdCBhbmQgc3BlY2lhbEZhc3RQYXRoQml0IHNo
b3VsZCBiZSBhIGhpZ2hlciBiaXQuIik7CisKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUoKQorICAg
ICAgICA6IEFyaXRoUHJvZmlsZTxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPiAoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VS
VChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3Rl
eHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZEJpbmFyeUludEludCgpCisKKyAgICBzdGF0aWMgY29u
c3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRJbnRJbnRCaXRzKCkKICAgICB7
CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVk
VHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0g
KG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZl
ZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoYml0cyA9PSAweDkwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRz
KTsKKyAgICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNl
cnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQz
Mi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsK
ICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlO
dW1iZXJJbnQoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBv
YnNlcnZlZE51bWJlckludEJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVk
VHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwogICAg
ICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUo
KS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNl
cnZlZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkSW50
MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChiaXRzID09IDB4MTEwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsK
KyAgICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNlcnZl
ZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkSW50MzIu
Yml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAg
ICAgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5SW50
TnVtYmVyKCkKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2Jz
ZXJ2ZWRJbnROdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5
cGUgb2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkgfTsKICAgICAg
ICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsgT2JzZXJ2ZWRUeXBlKCku
d2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2
ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVy
LmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
Yml0cyA9PSAweGEwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAg
ICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNlcnZlZElu
dDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1iZXIuYml0
cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAg
fQotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5TnVtYmVy
TnVtYmVyKCkKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2Jz
ZXJ2ZWROdW1iZXJOdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZl
ZFR5cGUgb2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkgfTsKLSAg
ICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8
IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMjAwMDAw
LCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIg
QmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBs
aHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2Vy
dmVkVHlwZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQogCi0gICAgZW51bSBP
YnNlcnZlZFJlc3VsdHMgewotICAgICAgICBOb25OZWdaZXJvRG91YmxlID0gMSA8PCAwLAotICAg
ICAgICBOZWdaZXJvRG91YmxlICAgID0gMSA8PCAxLAotICAgICAgICBOb25OdW1lcmljICAgICAg
ID0gMSA8PCAyLAotICAgICAgICBJbnQzMk92ZXJmbG93ICAgID0gMSA8PCAzLAotICAgICAgICBJ
bnQ1Mk92ZXJmbG93ICAgID0gMSA8PCA0LAotICAgICAgICBCaWdJbnQgICAgICAgICAgID0gMSA8
PCA1LAotICAgIH07Ci0KLSAgICBSZXN1bHRUeXBlIGxoc1Jlc3VsdFR5cGUoKSBjb25zdCB7IHJl
dHVybiBSZXN1bHRUeXBlKChtX2JpdHMgPj4gbGhzUmVzdWx0VHlwZVNoaWZ0KSAmIHJlc3VsdFR5
cGVNYXNrKTsgfQotICAgIFJlc3VsdFR5cGUgcmhzUmVzdWx0VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IFJlc3VsdFR5cGUoKG1fYml0cyA+PiByaHNSZXN1bHRUeXBlU2hpZnQpICYgcmVzdWx0VHlwZU1h
c2spOyB9Ci0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGxoc09ic2VydmVkVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGxoc09ic2VydmVkVHlwZVNoaWZ0
KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSByaHNP
YnNlcnZlZFR5cGUoKSBjb25zdCB7IHJldHVybiBPYnNlcnZlZFR5cGUoKG1fYml0cyA+PiByaHNP
YnNlcnZlZFR5cGVTaGlmdCkgJiBvYnNlcnZlZFR5cGVNYXNrKTsgfQogICAgIHZvaWQgc2V0TGhz
T2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgdWludDMyX3Qg
Yml0cyA9IG1fYml0czsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gbV9i
aXRzOwogICAgICAgICBiaXRzICY9IGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzazsKICAgICAg
ICAgYml0cyB8PSB0eXBlLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKICAgICAgICAg
bV9iaXRzID0gYml0czsKQEAgLTE4Nyw3ICsyODUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dFJoc09ic2VydmVkVHlwZShPYnNlcnZlZFR5cGUgdHlwZSkKICAgICB7IAotICAgICAgICB1aW50
MzJfdCBiaXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMg
PSBtX2JpdHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrOwog
ICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0OwogICAg
ICAgICBtX2JpdHMgPSBiaXRzOwpAQCAtMTk2LDM5ICsyOTQsNiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHRvb2tTcGVjaWFsRmFzdFBhdGgoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBzcGVjaWFs
RmFzdFBhdGhCaXQ7IH0KIAotICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgY29uc3QgeyBy
ZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51bWVy
aWMgfCBCaWdJbnQpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlRG91YmxlKCkgY29uc3QgeyByZXR1
cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29s
IGRpZE9ic2VydmVOb25OZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25O
ZWdaZXJvRG91YmxlKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKE5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZl
Tm9uTnVtZXJpYygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTnVtZXJpYyk7IH0KLSAgICBi
b29sIGRpZE9ic2VydmVCaWdJbnQoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEJpZ0ludCk7IH0K
LSAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gaGFzQml0
cyhJbnQzMk92ZXJmbG93KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSBj
b25zdCB7IHJldHVybiBoYXNCaXRzKEludDUyT3ZlcmZsb3cpOyB9Ci0KLSAgICB2b2lkIHNldE9i
c2VydmVkTm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0g
ICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChOZWdaZXJvRG91Ymxl
KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoTm9uTnVtZXJp
Yyk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50KCkgeyBzZXRCaXQoQmlnSW50KTsgfQot
ICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQoSW50MzJPdmVyZmxv
dyk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkSW50NTJPdmVyZmxvdygpIHsgc2V0Qml0KEludDUy
T3ZlcmZsb3cpOyB9Ci0KLSAgICBjb25zdCB2b2lkKiBhZGRyZXNzT2ZCaXRzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fYml0czsgfQotCi0gICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUp
Ci0gICAgewotICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9
IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1pl
cm9Eb3VibGU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHZh
bHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9iaXRzIHw9IE5vbk51
bWVyaWM7Ci0gICAgfQotCiAgICAgdm9pZCBsaHNTYXdJbnQzMigpIHsgc2V0TGhzT2JzZXJ2ZWRU
eXBlKGxoc09ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpKTsgfQogICAgIHZvaWQgbGhzU2F3TnVt
YmVyKCkgeyBzZXRMaHNPYnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigp
KTsgfQogICAgIHZvaWQgbGhzU2F3Tm9uTnVtYmVyKCkgeyBzZXRMaHNPYnNlcnZlZFR5cGUobGhz
T2JzZXJ2ZWRUeXBlKCkud2l0aE5vbk51bWJlcigpKTsgfQpAQCAtMjM4LDcgKzMwMyw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgb2JzZXJ2ZUxIUyhKU1ZhbHVlIGxocykKICAgICB7Ci0gICAgICAg
IEFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CiAgICAgICAgIGlmIChsaHMuaXNOdW1iZXIoKSkgewog
ICAgICAgICAgICAgaWYgKGxocy5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmls
ZS5saHNTYXdJbnQzMigpOwpAQCAtMjU0LDcgKzMxOSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIG9ic2VydmVMSFMobGhzKTsKIAotICAgICAgICBBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9
ICp0aGlzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlzOwog
ICAgICAgICBpZiAocmhzLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIGlmIChyaHMuaXNJbnQz
MigpKQogICAgICAgICAgICAgICAgIG5ld1Byb2ZpbGUucmhzU2F3SW50MzIoKTsKQEAgLTI2Niw0
NyArMzMxLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRzID0gbmV3UHJvZmlsZS5iaXRzKCk7
CiAgICAgfQogCi0jaWYgRU5BQkxFKEpJVCkgICAgCi0gICAgLy8gU2V0cyAoSW50MzJPdmVyZmxv
dyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYg
aXQgc2VlcyBhCi0gICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWVyaWMgaWYgaXQgc2VlcyBhIG5v
bi1udW1lcmljLgotICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNW
YWx1ZVJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKLSAgICAKLSAg
ICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3Vi
bGUgfCBOZWdaZXJvRG91YmxlKS4KLSAgICBib29sIHNob3VsZEVtaXRTZXREb3VibGUoKSBjb25z
dDsKLSAgICB2b2lkIGVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJikgY29uc3Q7Ci0gICAgCi0g
ICAgLy8gU2V0cyBOb25OdW1iZXIuCi0gICAgdm9pZCBlbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhl
bHBlcnMmKSBjb25zdDsKLSAgICBib29sIHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3Q7
Ci0KLSAgICAvLyBTZXRzIEJpZ0ludAotICAgIHZvaWQgZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBl
cnMmKSBjb25zdDsKLSAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdDsKLSNlbmRp
ZiAvLyBFTkFCTEUoSklUKQotCi0gICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMoKSBjb25zdCB7
IHJldHVybiBtX2JpdHM7IH0KLQotcHJpdmF0ZToKLSAgICBjb25zdGV4cHIgZXhwbGljaXQgQXJp
dGhQcm9maWxlKENvbnN0YW50VGFnLCB1aW50MzJfdCBiaXRzKQotICAgICAgICA6IG1fYml0cyhi
aXRzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgQXJpdGhQcm9maWxlKENvbnN0YW50
VGFnLCBSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBtX2JpdHMoYXJnLmJpdHMoKSA8PCBsaHNS
ZXN1bHRUeXBlU2hpZnQpCisgICAgYm9vbCBpc09ic2VydmVkVHlwZUVtcHR5KCkKICAgICB7Cisg
ICAgICAgIHJldHVybiBsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkgJiYgcmhzT2JzZXJ2ZWRU
eXBlKCkuaXNFbXB0eSgpOwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUoQ29u
c3RhbnRUYWcsIFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBtX2Jp
dHMoKGxocy5iaXRzKCkgPDwgbGhzUmVzdWx0VHlwZVNoaWZ0KSB8IChyaHMuYml0cygpIDw8IHJo
c1Jlc3VsdFR5cGVTaGlmdCkpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaGFzQml0cyhpbnQg
bWFzaykgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgbWFzazsgfQotICAgIHZvaWQgc2V0Qml0KGlu
dCBtYXNrKSB7IG1fYml0cyB8PSBtYXNrOyB9Ci0KLSAgICB1aW50MzJfdCBtX2JpdHMgeyAwIH07
IC8vIFdlIHRha2UgY2FyZSB0byB1cGRhdGUgbV9iaXRzIG9ubHkgaW4gYSBzaW5nbGUgb3BlcmF0
aW9uLiBXZSBkb24ndCBldmVyIHN0b3JlIGFuIGluY29uc2lzdGVudCBiaXQgcmVwcmVzZW50YXRp
b24gdG8gaXQuCi0KICAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7
CiB9OwogCkBAIC0zMTQsNyArMzQzLDggQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIFdURiB7CiAK
LXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6QXJpdGhQcm9maWxl
Jik7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6OlVuYXJ5QXJp
dGhQcm9maWxlJik7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6
OkJpbmFyeUFyaXRoUHJvZmlsZSYpOwogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
Y29uc3QgSlNDOjpPYnNlcnZlZFR5cGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAzNGMxNTJh
MGQ2Ni4uZTEzZDQ2YmU3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgpAQCAtNDEsNiArNDEsNyBAQCB0eXBlcyBbCiAgICAgOkpTVHlwZSwK
ICAgICA6SlNWYWx1ZSwKICAgICA6TExJbnRDYWxsTGlua0luZm8sCisgICAgOlJlc3VsdFR5cGUs
CiAgICAgOk9wZXJhbmRUeXBlcywKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAg
OlByb3BlcnR5T2Zmc2V0LApAQCAtNTgsNyArNTksOCBAQCB0eXBlcyBbCiAKICAgICA6VmFsdWVQ
cm9maWxlLAogICAgIDpWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyLAotICAgIDpBcml0aFBy
b2ZpbGUsCisgICAgOlVuYXJ5QXJpdGhQcm9maWxlLAorICAgIDpCaW5hcnlBcml0aFByb2ZpbGUs
CiAgICAgOkFycmF5UHJvZmlsZSwKICAgICA6QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSwKICAgICA6
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUsCkBAIC0yNzksMTAgKzI4MSw3IEBAIG9wX2dyb3VwIDpQ
cm9maWxlZEJpbmFyeU9wLAogICAgICAgICBvcGVyYW5kVHlwZXM6IE9wZXJhbmRUeXBlcywKICAg
ICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFyaXRoUHJvZmlsZTogQXJpdGhQcm9maWxl
Ci0gICAgfSwKLSAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6IHsKLSAgICAgICAgYXJpdGhQcm9m
aWxlOiA6b3BlcmFuZFR5cGVzCisgICAgICAgIGFyaXRoUHJvZmlsZTogQmluYXJ5QXJpdGhQcm9m
aWxlCiAgICAgfQogCiBvcF9ncm91cCA6VmFsdWVQcm9maWxlZEJpbmFyeU9wLApAQCAtMzY0LDEz
ICszNjMsMTAgQEAgb3AgOm5lZ2F0ZSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVh
bFJlZ2lzdGVyLAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIG9w
ZXJhbmRUeXBlczogT3BlcmFuZFR5cGVzLAorICAgICAgICByZXN1bHRUeXBlOiBSZXN1bHRUeXBl
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0aFBy
b2ZpbGUsCi0gICAgfSwKLSAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6IHsKLSAgICAgICAgYXJp
dGhQcm9maWxlOiA6b3BlcmFuZFR5cGVzCisgICAgICAgIGFyaXRoUHJvZmlsZTogVW5hcnlBcml0
aFByb2ZpbGUsCiAgICAgfQogCiBvcCA6bm90LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwZjhlN2Y4YjRmOS4uNjgxZGZjOWVjOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNDc5LDI1
ICsxNDc5LDI1IEBAIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmFkZFN0dWJJbmZvKEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSkKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1f
c3R1YkluZm9zLmFkZChhY2Nlc3NUeXBlKTsKIH0KIAotSklUQWRkSUMqIENvZGVCbG9jazo6YWRk
SklUQWRkSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRBZGRJQyogQ29kZUJsb2Nr
OjphZGRKSVRBZGRJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJuIGVuc3VyZUpJVERh
dGEobG9ja2VyKS5tX2FkZElDcy5hZGQoYXJpdGhQcm9maWxlKTsKIH0KIAotSklUTXVsSUMqIENv
ZGVCbG9jazo6YWRkSklUTXVsSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNdWxJ
QyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJu
IGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX211bElDcy5hZGQoYXJpdGhQcm9maWxlKTsKIH0KIAot
SklUU3ViSUMqIENvZGVCbG9jazo6YWRkSklUU3ViSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCitKSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CiAgICAgcmV0dXJuIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX3N1YklDcy5hZGQoYXJpdGhQcm9m
aWxlKTsKIH0KIAotSklUTmVnSUMqIENvZGVCbG9jazo6YWRkSklUTmVnSUMoQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUpCitKSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbmVnSUNzLmFk
ZChhcml0aFByb2ZpbGUpOwpAQCAtMzA4NCwxNiArMzA4NCwxOSBAQCBjb25zdCBJbnN0cnVjdGlv
biogQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYykK
ICAgICByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQob2Zmc2V0ICsgdGFyZ2V0KS5wdHIoKTsKIH0K
IAotQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgo
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQorQmluYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxv
Y2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRl
Y29kZUluZGV4KQogewotICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMo
KS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKSk7CisgICAgcmV0dXJuIGJpbmFyeUFy
aXRoUHJvZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkp
LnB0cigpKTsKIH0KIAotQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvclBD
KGNvbnN0IEluc3RydWN0aW9uKiBwYykKK1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVu
YXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXgpCit7CisgICAgcmV0dXJuIHVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCku
YXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCkpOworfQorCitCaW5hcnlBcml0aFByb2Zp
bGUqIENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjKQogewogICAgIHN3aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKLSAgICBjYXNlIG9wX25lZ2F0
ZToKLSAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEodGhpcykubV9h
cml0aFByb2ZpbGU7CiAgICAgY2FzZSBvcF9hZGQ6CiAgICAgICAgIHJldHVybiAmcGMtPmFzPE9w
QWRkPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJpdGhQcm9maWxlOwogICAgIGNhc2Ugb3BfbXVsOgpA
QCAtMzEwOSwxMSArMzExMiwyMyBAQCBBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9m
aWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQogICAgIHJldHVybiBudWxscHRyOwogfQog
CitVbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNv
bnN0IEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBzd2l0Y2ggKHBjLT5vcGNvZGVJRCgpKSB7Cisg
ICAgY2FzZSBvcF9uZWdhdGU6CisgICAgICAgIHJldHVybiAmcGMtPmFzPE9wTmVnYXRlPigpLm1l
dGFkYXRhKHRoaXMpLm1fYXJpdGhQcm9maWxlOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCiBib29sIENvZGVCbG9jazo6Y291
bGRUYWtlU3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQog
ewogICAgIGlmICghaGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIEFyaXRoUHJvZmlsZSogcHJvZmlsZSA9IGFyaXRoUHJvZmlsZUZvckJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlID0g
YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICBp
ZiAoIXByb2ZpbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcHJvZmlsZS0+
dG9va1NwZWNpYWxGYXN0UGF0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCmluZGV4IGQyYzA2OTgwM2E4Li4xOGU0OGMyNjZhMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODMsNiArODMsOCBAQCBzdHJ1Y3Qg
T1NSRXhpdFN0YXRlOwogfSAvLyBuYW1lc3BhY2UgREZHCiAjZW5kaWYKIAorY2xhc3MgVW5hcnlB
cml0aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlOwpAQCAtOTYsNyArOTgsNiBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsK
IAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OwogCi1zdHJ1Y3QgQXJpdGhQcm9maWxl
Owogc3RydWN0IE9wQ2F0Y2g7CiAKIGVudW0gUmVvcHRpbWl6YXRpb25Nb2RlIHsgRG9udENvdW50
UmVvcHRpbWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRpb24gfTsKQEAgLTI3OSwyMiArMjgwLDIy
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgSklURGF0YSYgZW5zdXJlSklURGF0YVNsb3coY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJik7CiAKLSAgICBKSVRBZGRJQyogYWRkSklUQWRkSUMoQXJpdGhQ
cm9maWxlKik7Ci0gICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEFyaXRoUHJvZmlsZSopOwotICAg
IEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRTdWJJQyogYWRk
SklUU3ViSUMoQXJpdGhQcm9maWxlKik7CisgICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEJpbmFy
eUFyaXRoUHJvZmlsZSopOworICAgIEpJVE11bElDKiBhZGRKSVRNdWxJQyhCaW5hcnlBcml0aFBy
b2ZpbGUqKTsKKyAgICBKSVROZWdJQyogYWRkSklUTmVnSUMoVW5hcnlBcml0aFByb2ZpbGUqKTsK
KyAgICBKSVRTdWJJQyogYWRkSklUU3ViSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CiAKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVEFkZEdlbmVyYXRvcj46OnZhbHVlPjo6
dHlwZT4KLSAgICBKSVRBZGRJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyBy
ZXR1cm4gYWRkSklUQWRkSUMocHJvZmlsZSk7IH0KKyAgICBKSVRBZGRJQyogYWRkTWF0aElDKEJp
bmFyeUFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUQWRkSUMocHJvZmlsZSk7
IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUTXVsR2VuZXJhdG9y
Pjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVE11bElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBw
cm9maWxlKSB7IHJldHVybiBhZGRKSVRNdWxJQyhwcm9maWxlKTsgfQorICAgIEpJVE11bElDKiBh
ZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRNdWxJ
Qyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5h
bWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRO
ZWdHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTmVnSUMqIGFkZE1hdGhJQyhBcml0
aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE5lZ0lDKHByb2ZpbGUpOyB9CisgICAg
SklUTmVnSUMqIGFkZE1hdGhJQyhVbmFyeUFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4g
YWRkSklUTmVnSUMocHJvZmlsZSk7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0
b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVy
YXRvciwgSklUU3ViR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVFN1YklDKiBhZGRN
YXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRTdWJJQyhwcm9maWxl
KTsgfQorICAgIEpJVFN1YklDKiBhZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxl
KSB7IHJldHVybiBhZGRKSVRTdWJJQyhwcm9maWxlKTsgfQogCiAgICAgU3RydWN0dXJlU3R1Yklu
Zm8qIGFkZFN0dWJJbmZvKEFjY2Vzc1R5cGUpOwogCkBAIC00OTcsOCArNDk4LDEwIEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBmb3JFYWNoTExJbnRDYWxsTGlua0luZm8oY29uc3QgRnVuY3RvciYpOwogCi0g
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5k
ZXgpOwotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0
aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKik7Cisg
ICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKIAogICAgIGJvb2wgY291bGRUYWtlU3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNv
ZGVJbmRleCBieXRlY29kZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0
cy5oCmluZGV4IGVkYTI0YmU0Njk1Li41Nzc4OWJjMmM2NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRml0cy5oCkBAIC0yMzUsNiArMjM1LDE4IEBAIHN0cnVjdCBGaXRzPEUsIHNpemUs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2
YWx1CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8
UmVzdWx0VHlwZSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoUmVzdWx0VHlwZSkgIT0g
c2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZXN1bHRUeXBlKSA9PSBzaXplb2YodWludDhfdCkpOwor
ICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgc3RhdGljIGJvb2wg
Y2hlY2soUmVzdWx0VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjaGVjayh0eXBlLmJpdHMoKSk7
IH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUmVzdWx0
VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjb252ZXJ0KHR5cGUuYml0cygpKTsgfQorCisgICAg
c3RhdGljIFJlc3VsdFR5cGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIHR5cGUp
IHsgcmV0dXJuIFJlc3VsdFR5cGUoQmFzZTo6Y29udmVydCh0eXBlKSk7IH0KK307CisKIHRlbXBs
YXRlPE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPE9wZXJhbmRUeXBlcywgc2l6ZSwgc3Rk
OjplbmFibGVfaWZfdDxzaXplb2YoT3BlcmFuZFR5cGVzKSAhPSBzaXplLCBzdGQ6OnRydWVfdHlw
ZT4+IHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kVHlwZXMpID09IHNpemVvZih1
aW50MTZfdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDcxMDRkMDFhZTEx
Li4yYjY5ZjM2YzdmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcApAQCAtNjYsMTAg
KzY2LDE2IEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZh
bHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgICAgIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5hcml0
aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0
ZXJzKTsKKyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS51bmFy
eUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdS
ZWdpc3RlcnMpOwogICAgICAgICByZXR1cm47Ci0gICAgfSB9CisgICAgfQorCisgICAgY2FzZSBC
aW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+
ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQpAQCAtOTQsMTAgKzEwMCwxNiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBjYXNlIEFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUuYXJpdGhQ
cm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxl
UmVhZHk6IHsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdCh2YWx1
ZSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAgICBjYXNlIEJpbmFyeUFy
aXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5vYnNlcnZl
UmVzdWx0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB9CiAKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKaW5k
ZXggY2ZiODM0NzA2YWYuLjVkODFjNGM5MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgK
QEAgLTM2LDEwICszNiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5hcnlBcml0
aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBDQ2FsbEhlbHBlcnM7
CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTsKLXN0
cnVjdCBBcml0aFByb2ZpbGU7CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiBjbGFzcyBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlIHsKQEAgLTU3LDEyICs1OCwyMSBAQCBwdWJsaWM6CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9Ci0gICAgCi0gICAg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShBcml0aFByb2ZpbGUqIHByb2ZpbGUpCisKKyAg
ICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxl
KQorICAgIHsKKyAgICAgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAgICAgICAgIG1fa2luZCA9IFVu
YXJ5QXJpdGhQcm9maWxlUmVhZHk7CisgICAgICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlID0g
cHJvZmlsZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2tpbmQgPSBOb25lOworICAg
IH0KKworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoQmluYXJ5QXJpdGhQcm9maWxl
KiBwcm9maWxlKQogICAgIHsKICAgICAgICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgIG1f
a2luZCA9IEFyaXRoUHJvZmlsZVJlYWR5OwotICAgICAgICAgICAgdS5hcml0aFByb2ZpbGUgPSBw
cm9maWxlOworICAgICAgICAgICAgbV9raW5kID0gQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk7Cisg
ICAgICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZSA9IHByb2ZpbGU7CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9CkBAIC03OSw3ICs4OSw4IEBAIHBy
aXZhdGU6CiAgICAgZW51bSBLaW5kIHsKICAgICAgICAgTm9uZSwKICAgICAgICAgUmVhZHksCi0g
ICAgICAgIEFyaXRoUHJvZmlsZVJlYWR5LAorICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZVJlYWR5
LAorICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeSwKICAgICAgICAgTGF6eU9wZXJhbmQK
ICAgICB9OwogICAgIApAQCAtOTAsNyArMTAxLDggQEAgcHJpdmF0ZToKICAgICAgICAgeyB9CiAK
ICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxl
OworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZTsKICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrOwogICAgICAgICAg
ICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZTM4
MzFkMjA5NWYuLmYyYmNlNjJlZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTUxNiwxNCArMTUx
NiwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgT3BlcmFuZFR5cGVzIHR5cGVzKQorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSB0eXBlKQogewogICAg
IHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX25vdDoKICAgICAgICAgZW1pdFVuYXJ5
T3A8T3BOb3Q+KGRzdCwgc3JjKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9uZWdhdGU6
Ci0gICAgICAgIE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlcyk7CisgICAgICAg
IE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBvcF9iaXRub3Q6CiAgICAgICAgIGVtaXRVbmFyeU9wPE9wQml0bm90Pihkc3QsIHNy
Yyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggODYyY2UxMjQ1YTYuLjIyNTliN2I3Mzk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC02ODIsNyArNjgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gZHN0OwogICAgICAgICB9CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFVuYXJ5T3AoT3Bj
b2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5hcnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMsIFJlc3VsdFR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEJpbmFyeU9wPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDUyNDY4
ZTFmMmFhLi4wMTA2NGNhZjllZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgUmVnaXN0
ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKgogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBv
c2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
c3JjLmdldCgpLCBPcGVyYW5kVHlwZXMobV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbmFyeU9wKG9wY29kZUlEKCksIGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQoKSwgbV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVW5hcnlQbHVzTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzMzc4YWQwOTJmNi4uOThlNjhl
YzM5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC05NDIsNTYgKzk0Miw2MCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWlzWDg2
KCkgJiYgKG5vZGUtPm9wKCkgPT0gQXJpdGhNb2QgfHwgbm9kZS0+b3AoKSA9PSBWYWx1ZU1vZCkp
CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKIAotICAgICAgICB7Ci0gICAgICAgICAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7Ci0gICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5v
cCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aEFkZDoKLSAgICAgICAgICAgICAgICBj
YXNlIEFyaXRoU3ViOgotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVBZGQ6Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVt
ZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5
SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5t
ZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBjYXNlIFZhbHVlTXVsOgotICAgICAgICAgICAgICAg
IGNhc2UgQXJpdGhNdWw6IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+
ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
Pm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50NTIpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJm
bG93SW50MzJJbkJhc2VsaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmls
ZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQotICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxp
bmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91
YmxlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlI
YXZlRG91YmxlUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+
ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1l
cmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBjYXNlIFZhbHVlTmVnYXRlOgotICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCku
c2F3TnVtYmVyKCkgfHwgYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1pl
cm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQotICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IE92ZXJmbG93KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9k
ZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFy
aXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJl
c3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2UgQXJpdGhBZGQ6CisgICAg
ICAgIGNhc2UgQXJpdGhTdWI6CisgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKKyAgICAgICAgICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVu
dEluZGV4KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgp
KQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1
bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMo
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVtZXJp
Y1Jlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50
KCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJl
c3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZhbHVl
TXVsOgorICAgICAgICBjYXNlIEFyaXRoTXVsOiB7CisgICAgICAgICAgICBCaW5hcnlBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+
YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisgICAg
ICAgICAgICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkpCisgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7CisgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IE92ZXJmbG93KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVy
Zmxvd0ludDMySW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRP
YnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCisgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOworICAgICAgICAg
ICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAg
aWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKKyAgICAgICAgICAgICAg
ICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3VsdCk7CisgICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCisgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZhbHVlTmVnYXRlOgorICAgICAgICBj
YXNlIEFyaXRoTmVnYXRlOiB7CisgICAgICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT51bmFyeUFyaXRoUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFh
cml0aFByb2ZpbGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJp
dGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5v
ZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRp
ZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAgICAgICAg
ICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7CisgICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5s
aW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92
ZXJmbG93KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxv
d0ludDMySW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlTm9uTnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eUhhdmVOb25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRp
ZE9ic2VydmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVN
YXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgp
KSB7CkBAIC0xMDMzLDggKzEwMzcsOCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgLy8g
RklYTUU6IEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIG1ha2UgdGhpcyBtb3JlIGdyYW51bGFyLgog
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGluZSB8
IE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAgIAotICAgICAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisKKyAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5k
ZXgpOwogICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCiAgICAg
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCBjYTlmYzM0ZTFkMy4uMWIxYjE5
ODRhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xNjU0LDcg
KzE2NTQsOSBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlRm9yKE5vZGUqIGN1cnJlbgogICAgICAgICAgICAgICAgIHJldHVy
biAmcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmln
aW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKTsKIAogICAgICAgICAgICAgaWYgKHByb2ZpbGVk
QmxvY2stPmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
QXJpdGhQcm9maWxlKiByZXN1bHQgPSBwcm9maWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRl
Y29kZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAg
ICAgICAgICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2st
PmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICAgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiByZXN1bHQgPSBwcm9maWxlZEJs
b2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNGY3OGE2ZDE0NWQuLjJiOTY1NGQ0ODA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtMzk5NSw3ICszOTk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRk
KE5vZGUqIG5vZGUpCiAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQu
Z3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAg
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5i
aW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJ
VEFkZElDKiBhZGRJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRBZGRJQyhhcml0aFByb2Zp
bGUpOwogICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGRPcHRp
bWl6ZTsKICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRk
OwpAQCAtNDAxOSw3ICs0MDE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
U3ViKE5vZGUqIG5vZGUpCiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9
IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNl
bWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRl
Y29kZUluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBi
YXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRl
Y29kZUluZGV4KTsKICAgICAgICAgSklUU3ViSUMqIHN1YklDID0gbV9qaXQuY29kZUJsb2NrKCkt
PmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKQEAgLTQ2MTMsNyArNDYxMyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZShOb2RlKiBub2RlKQogewogICAg
IENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29k
ZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRl
Y29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2Zp
bGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIFVuYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JC
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJVE5lZ0lDKiBuZWdJQyA9IG1faml0
LmNvZGVCbG9jaygpLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIGF1dG8gcmVwYXRj
aGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZTsKICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlOwpAQCAtNDgzNiw3ICs0
ODM2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUp
CiAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNl
bGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7
Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFBy
b2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJVE11bElDKiBtdWxJ
QyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUpOwogICAgIGF1
dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICBh
dXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDVkNDhjMGIwY2I5
Li4zN2YwYTk2MDBmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcApAQCAtMjExNiw3ICsyMTE2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBDb2Rl
QmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVC
bG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsK
LSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+
YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICAgICAgYXV0
byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplOwogICAgICAg
ICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkOwogICAgICAg
ICBjb21waWxlQmluYXJ5TWF0aElDPEpJVEFkZEdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBh
dGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTM3LDcgKzIxMzcs
NyBAQCBwcml2YXRlOgogCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBt
X2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmln
aW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4
KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4
KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlU3ViT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9u
ID0gb3BlcmF0aW9uVmFsdWVTdWI7CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUU3Vi
R2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGlu
Z0Z1bmN0aW9uKTsKQEAgLTIxNTgsNyArMjE1OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2Rl
QmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7
Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2st
PmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1
dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICAg
ICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bDsKICAgICAg
ICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRNdWxHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVw
YXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE2Niw3ICsyMTY2
LDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVu
YW1lIEZ1bmMxLCB0eXBlbmFtZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJs
ZV9pZl90PHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5j
MT46OnR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X3BvaW50ZXI8RnVuYzI+Ojp0eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZVVuYXJ5TWF0
aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24s
IEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKKyAgICB2b2lkIGNvbXBpbGVVbmFyeU1hdGhJ
QyhVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rp
b24sIEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5v
ZGUgPSBtX25vZGU7CiAKQEAgLTIyNTIsNyArMjI1Miw3IEBAIHByaXZhdGU6CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBGdW5jMSwgdHlwZW5hbWUgRnVuYzIs
CiAgICAgICAgIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Z1bmN0aW9uPHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzE+Ojp0eXBlPjo6dmFsdWUgJiYgc3RkOjpp
c19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmMyPjo6dHlwZT46OnZh
bHVlPj4KLSAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uKQorICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNoaW5n
RnVuY3Rpb24pCiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICAK
QEAgLTI0MjEsNyArMjQyMSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAg
ICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2st
PmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5i
aW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAg
ICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXpl
OwogICAgICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZVN1YjsKICAgICAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPihh
cml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsK
QEAgLTMwOTksNyArMzA5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAg
ICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFz
ZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29k
ZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVD
b2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7Cisg
ICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9j
ay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1p
emU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhO
ZWdhdGU7CiAgICAgICAgIGNvbXBpbGVVbmFyeU1hdGhJQzxKSVROZWdHZW5lcmF0b3I+KGFyaXRo
UHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggYjVlZmUyNjgwNDYuLjJiNGE1ZDY0YmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKQEAgLTkxOSw3ICs5MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgLy8gSXQgd2lsbCBnaXZlIHRoZSBzbG93IHBhdGggdGhlIHNhbWUgdmFsdWUgcmVhZCBi
eSB0aGUgZmFzdCBwYXRoLgogICAgICAgICBHZXRQdXRJbmZvIGNvcGllZEdldFB1dEluZm8oT3BQ
dXRUb1Njb3BlKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+Ci0gICAgICAg
IEFyaXRoUHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOworICAgICAgICBCaW5h
cnlBcml0aFByb2ZpbGUgY29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wKTsKIAogICAgICAgICBJ
bnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsKIApAQCAtOTM5LDcgKzkzOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBWZWN0b3I8U3dpdGNoUmVjb3JkPiBtX3N3aXRjaGVzOwogCiAgICAg
ICAgIEhhc2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkPiBtX2NvcGllZEdldFB1dEluZm9zOwotICAg
ICAgICBIYXNoTWFwPHVpbnQ2NF90LCBBcml0aFByb2ZpbGU+IG1fY29waWVkQXJpdGhQcm9maWxl
czsKKyAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwgQmluYXJ5QXJpdGhQcm9maWxlPiBtX2NvcGll
ZEFyaXRoUHJvZmlsZXM7CiAKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3M7CiAg
ICAgICAgIEp1bXBMaXN0IG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCmluZGV4IDYy
N2FmMjc4N2UwLi43NDBiMmVkOGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQWRkR2VuZXJhdG9yLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUo
Q0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdl
bmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRU
eXBlIGxocyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtNzMsNyArNzMsNyBAQCBK
SVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2Fs
bEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6
OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3Qg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jv
b2wgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BS
ICE9IEludmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBh
eWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFk
ZEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3Iu
aAppbmRleCA0ZGMzNGEyZjViNi4uNjc1Y2Y5M2M5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVCghbV9sZWZ0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9wZXJh
bmQuaXNDb25zdEludDMyKCkpOwogICAgIH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBn
ZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25z
dCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxk
RW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEJpbmFyeUFyaXRo
UHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYg
c2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRF
bWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0
YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5pc1Bv
c2l0aXZlQ29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxp
ZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRPcGVy
YW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IGFjMzcyYzlmYmUwLi5iYjYzNWY4ZTc2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NTMsNyArNDUz
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVnYXRlPigpLm1l
dGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0
YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE5lZ0lDKiBuZWdhdGVJ
QyA9IG1fY29kZUJsb2NrLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1
Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBuZWdhdGVJQyk7CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BOZWdhdGU+KG5lZ2F0ZUlDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRlKTsKQEAgLTYzNCwx
NCArNjM0LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdXJzaGlmdChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY3VycmVudElu
c3RydWN0aW9uLCBvcF91cnNoaWZ0KTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgT3BlcmFu
ZFR5cGVzIGdldE9wZXJhbmRUeXBlcyhjb25zdCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkK
LXsKLSAgICByZXR1cm4gT3BlcmFuZFR5cGVzKGFyaXRoUHJvZmlsZS5saHNSZXN1bHRUeXBlKCks
IGFyaXRoUHJvZmlsZS5yaHNSZXN1bHRUeXBlKCkpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9h
ZGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQWRkPigpLm1l
dGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQWRkPigpLm1ldGFk
YXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVRBZGRJQyogYWRkSUMgPSBt
X2NvZGVCbG9jay0+YWRkSklUQWRkSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9u
VG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYWRkSUMpOwogICAgIGVtaXRNYXRoSUNG
YXN0PE9wQWRkPihhZGRJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZUFkZFBy
b2ZpbGVkLCBvcGVyYXRpb25WYWx1ZUFkZCk7CkBAIC02ODYsNyArNjgxLDcgQEAgdm9pZCBKSVQ6
OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGMKIAogICAgIGJvb2wgZ2VuZXJhdGVkSW5saW5lQ29kZSA9IG1hdGhJQy0+
Z2VuZXJhdGVJbmxpbmUoKnRoaXMsIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSk7CiAgICAgaWYgKCFn
ZW5lcmF0ZWRJbmxpbmVDb2RlKSB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bldpdGhSZXN1bHQocHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBzcmNSZWdzLCBhcml0aFByb2ZpbGUpOwogICAg
ICAgICBlbHNlCkBAIC03MDksNyArNzA0LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBl
bmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE4KIHZv
aWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElD
LCBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9u
IHByb2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsK
LSAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY29waWVkQXJpdGhQcm9m
aWxlKGJ5dGVjb2RlKSk7CiAgICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgp
OwogICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0g
Ynl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CkBAIC03MjgsOCArNzIyLDggQEAgdm9pZCBKSVQ6OmVt
aXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IElu
c3RydWN0aW9uKgogICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gZnBSZWdUMjsKICNlbmRpZgogCi0g
ICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMuZmlyc3QoKSk7Ci0gICAgU25pcHBl
dE9wZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgpKTsKKyAgICBTbmlwcGV0T3BlcmFu
ZCBsZWZ0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5maXJzdCgpKTsKKyAgICBTbmlw
cGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuc2Vjb25kKCkp
OwogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkpCiAgICAgICAgIGxlZnRPcGVy
YW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSkpOwpAQCAtNzU5LDcg
Kzc1Myw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJh
dG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIob3AxLCBsZWZ0UmVncyk7CiAgICAgICAgIGVsc2UgaWYgKHJpZ2h0T3BlcmFu
ZC5pc0NvbnN0KCkpCiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmln
aHRSZWdzKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFy
aXRoUHJvZmlsZSgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9
IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hv
dWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQo
cHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBhcml0aFByb2ZpbGUpOwogICAg
ICAgICBlbHNlCkBAIC03OTksNyArNzkzLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJ
VFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGMKICAg
ICBhdXRvIHNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogI2VuZGlmCiAKLSAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgVW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgaWYg
KGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgaWYgKG1h
dGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCiAgICAgICAgICAgICBt
YXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbldpdGhSZXN1
bHQocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HSk1pYz4ocHJvZmlsZWRSZXBhdGNo
RnVuY3Rpb24pLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIHNyY1JlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElDKSk7CkBAIC04MzEsNyArODI1
LDYgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5z
bG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRU
eXBlcyhjb3BpZWRBcml0aFByb2ZpbGUoYnl0ZWNvZGUpKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0
ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNl
dCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKQEAgLTg0Niw4ICs4
MzksOCBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRv
cj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IGxlZnRSZWdzOwogI2VuZGlmCiAgICAgCi0gICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJh
bmQodHlwZXMuZmlyc3QoKSk7Ci0gICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVz
LnNlY29uZCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChieXRlY29kZS5tX29w
ZXJhbmRUeXBlcy5maXJzdCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYnl0
ZWNvZGUubV9vcGVyYW5kVHlwZXMuc2Vjb25kKCkpOwogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0
YW50SW50KG9wMSkpCiAgICAgICAgIGxlZnRPcGVyYW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFu
ZENvbnN0YW50SW50KG9wMSkpOwpAQCAtODY1LDcgKzg1OCw3IEBAIHZvaWQgSklUOjplbWl0TWF0
aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVj
dGlvbioKICAgICBhdXRvIHNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogI2VuZGlmCiAKLSAgICBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAg
QmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgp
OwogICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAg
ICAgIGlmIChtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2hvdWxkU2xvd1BhdGhSZXBhdGNoKQogICAg
ICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b25XaXRoUmVzdWx0KGJpdHdpc2VfY2FzdDxKX0pJVE9wZXJhdGlvbl9HSkpNaWM+KHByb2ZpbGVk
UmVwYXRjaEZ1bmN0aW9uKSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJ
QykpOwpAQCAtODkzLDE5ICs4ODYsMTYgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJp
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogdm9pZCBK
SVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEaXY+KCk7Ci0g
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAg
aW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGludCBvcDEgPSBieXRl
Y29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0
KCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9w
ZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVm
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0g
SlNWYWx1ZVJlZ3MocmVnVDEpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVn
czsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1QyOwogI2Vsc2UKLSAgICBPcGVyYW5kVHlw
ZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMobWV0YWRhdGEubV9hcml0aFByb2ZpbGUpOwogICAg
IEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBK
U1ZhbHVlUmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpOwogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKQEAgLTkxMywxMiArOTAzLDEyIEBAIHZv
aWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogI2VuZGlmCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogCi0gICAgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbnVsbHB0cjsKICAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQog
ICAgICAgICBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcERpdj4oKS5t
ZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAKLSAgICBTbmlwcGV0T3BlcmFu
ZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9w
ZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5
dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0
T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQz
MihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC05NjAsNyArOTUwLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAK
IHZvaWQgSklUOjplbWl0X29wX211bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwor
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAg
IEpJVE11bElDKiBtdWxJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUp
OwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBtdWxJ
Qyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BNdWw+KG11bElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlTXVsKTsKQEAgLTk3Niw3
ICs5NjYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9z
dWIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1l
dGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1ldGFk
YXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVRTdWJJQyogc3ViSUMgPSBt
X2NvZGVCbG9jay0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9u
VG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgc3ViSUMpOwogICAgIGVtaXRNYXRoSUNG
YXN0PE9wU3ViPihzdWJJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZVN1YlBy
b2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1Yik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVERpdkdlbmVyYXRvci5jcHAKaW5kZXggNjZlMWJlMTRhOGQuLmI4YzQ3OTg2ZmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCkBAIC0xMzAs
NyArMTMwLDcgQEAgdm9pZCBKSVREaXZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxI
ZWxwZXJzJiBqaXQpCiAgICAgbm90RG91YmxlWmVyby5saW5rKCZqaXQpOwogI2VuZGlmCiAgICAg
aWYgKG1fYXJpdGhQcm9maWxlKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihBcml0aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6
QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAg
ICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxl
OjpzcGVjaWFsRmFzdFBhdGhCaXQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhtX2Fy
aXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAgICAgaml0LmJveERvdWJsZShtX2xlZnRG
UFIsIG1fcmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVREaXZHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2Vu
ZXJhdG9yLmgKaW5kZXggODM5NjY3Nzk0M2YuLjcwOGRiMTBkNmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogICAgIEpJVERpdkdlbmVyYXRvcihTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCwgU25pcHBl
dE9wZXJhbmQgcmlnaHRPcGVyYW5kLAogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQsIEpTVmFs
dWVSZWdzIGxlZnQsIEpTVmFsdWVSZWdzIHJpZ2h0LAogICAgICAgICBGUFJSZWcgbGVmdEZQUiwg
RlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2NyYXRjaEdQUiwgRlBSUmVnIHNjcmF0Y2hGUFIsCi0g
ICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbnVsbHB0cikKKyAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQogICAgICAgICA6IG1fbGVm
dE9wZXJhbmQobGVmdE9wZXJhbmQpCiAgICAgICAgICwgbV9yaWdodE9wZXJhbmQocmlnaHRPcGVy
YW5kKQogICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0
ZToKICAgICBHUFJSZWcgbV9zY3JhdGNoR1BSOwogICAgIEZQUlJlZyBtX3NjcmF0Y2hGUFI7CiAg
ICAgYm9vbCBtX2RpZEVtaXRGYXN0UGF0aCB7IGZhbHNlIH07Ci0gICAgQXJpdGhQcm9maWxlKiBt
X2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOwog
CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX2VuZEp1bXBMaXN0OwogICAgIENDYWxsSGVs
cGVyczo6SnVtcExpc3QgbV9zbG93UGF0aEp1bXBMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAppbmRleCA2MmVhYjliOTdmYS4uMjViY2MyYjljNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC03MTYsMTMgKzcxNiwxMyBAQCBBTFdBWVNf
SU5MSU5FIEdldFB1dEluZm8gSklUOjpjb3BpZWRHZXRQdXRJbmZvKE9wUHV0VG9TY29wZSBieXRl
Y29kZSkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+Ci1BTFdBWVNfSU5MSU5FIEFy
aXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCBieXRlY29kZSkKK0FM
V0FZU19JTkxJTkUgQmluYXJ5QXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJp
bmFyeU9wIGJ5dGVjb2RlKQogewogICAgIHVpbnQ2NF90IGtleSA9IChzdGF0aWNfY2FzdDx1aW50
NjRfdD4oQmluYXJ5T3A6Om9wY29kZUlEKSArIDEpIDw8IDMyIHwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGJ5dGVjb2RlLm1fbWV0YWRhdGFJRCk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fY29waWVk
QXJpdGhQcm9maWxlcy5maW5kKGtleSk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IG1fY29waWVkQXJp
dGhQcm9maWxlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLSAgICBB
cml0aFByb2ZpbGUgYXJpdGhQcm9maWxlID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
Lm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgbV9jb3Bp
ZWRBcml0aFByb2ZpbGVzLmFkZChrZXksIGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIGFyaXRo
UHJvZmlsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0
aElDLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCmluZGV4IDU2NDVl
NDJkZWZmLi5mZGFlYzkyNzVlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRNYXRoSUMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5o
CkBAIC01MiwxMSArNTIsMTEgQEAgc3RydWN0IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSB7CiAKICNk
ZWZpbmUgRU5BQkxFX01BVEhfSUNfU1RBVFMgMAogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJh
dG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1wdHkpKEFyaXRoUHJvZmlsZSYpPgordGVtcGxhdGUg
PHR5cGVuYW1lIEdlbmVyYXRvclR5cGUsIHR5cGVuYW1lIEFyaXRoUHJvZmlsZVR5cGU+CiBjbGFz
cyBKSVRNYXRoSUMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IEpJVE1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKKyAgICBKSVRNYXRoSUMoQXJp
dGhQcm9maWxlVHlwZSogYXJpdGhQcm9maWxlKQogICAgICAgICA6IG1fYXJpdGhQcm9maWxlKGFy
aXRoUHJvZmlsZSkKICAgICB7CiAgICAgfQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUo
KTsKIAogICAgICAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKLSAgICAgICAgICAgIGlmIChpc1By
b2ZpbGVFbXB0eSgqbV9hcml0aFByb2ZpbGUpKSB7CisgICAgICAgICAgICBpZiAobV9hcml0aFBy
b2ZpbGUtPmlzT2JzZXJ2ZWRUeXBlRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIC8vIEl0IGxv
b2tzIGxpa2UgdGhlIE1hdGhJQyBoYXMgeWV0IHRvIGV4ZWN1dGUuIFdlIGRvbid0IHdhbnQgdG8g
ZW1pdCBjb2RlIGluIHRoaXMKICAgICAgICAgICAgICAgICAvLyBjYXNlIGZvciBhIGNvdXBsZSBy
ZWFzb25zLiBGaXJzdCwgdGhlIG9wZXJhdGlvbiBtYXkgbmV2ZXIgZXhlY3V0ZSwgc28gaWYgd2Ug
ZG9uJ3QgZW1pdAogICAgICAgICAgICAgICAgIC8vIGNvZGUsIGl0J3MgYSB3aW4uIFNlY29uZCwg
aWYgdGhlIG9wZXJhdGlvbiBkb2VzIGV4ZWN1dGUsIHdlIGNhbiBlbWl0IGJldHRlciBjb2RlCkBA
IC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgICAgICBtX3Nsb3dQYXRoU3RhcnRMb2NhdGlv
biA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihzdGF0ZS5zbG93UGF0
aFN0YXJ0KTsKICAgICB9CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJpdGhQcm9maWxlOyB9CisgICAgQXJpdGhQcm9maWxlVHlwZSogYXJpdGhQ
cm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KIAogI2lmIEVOQUJMRShN
QVRIX0lDX1NUQVRTKQogICAgIHNpemVfdCBtX2dlbmVyYXRlZENvZGVTaXplIHsgMCB9OwpAQCAt
MjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmls
ZSogbV9hcml0aFByb2ZpbGU7CisgICAgQXJpdGhQcm9maWxlVHlwZSogbV9hcml0aFByb2ZpbGU7
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2NvZGU7
CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9pbmxpbmVTdGFydDsK
ICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2lubGluZUVuZDsKQEAg
LTI0NiwxNSArMjQ2LDExIEBAIHB1YmxpYzoKICAgICBHZW5lcmF0b3JUeXBlIG1fZ2VuZXJhdG9y
OwogfTsKIAotaW5saW5lIGJvb2wgaXNCaW5hcnlQcm9maWxlRW1wdHkoQXJpdGhQcm9maWxlJiBh
cml0aFByb2ZpbGUpCi17Ci0gICAgcmV0dXJuIGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUo
KS5pc0VtcHR5KCkgfHwgYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsK
LX0KIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3JUeXBlPgotY2xhc3MgSklUQmluYXJ5TWF0
aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc0JpbmFyeVByb2ZpbGVFbXB0
eT4geworY2xhc3MgSklUQmluYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JU
eXBlLCBCaW5hcnlBcml0aFByb2ZpbGU+IHsKIHB1YmxpYzoKLSAgICBKSVRCaW5hcnlNYXRoSUMo
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCi0gICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRv
clR5cGUsIGlzQmluYXJ5UHJvZmlsZUVtcHR5Pihhcml0aFByb2ZpbGUpCisgICAgSklUQmluYXJ5
TWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgICAgICA6IEpJVE1h
dGhJQzxHZW5lcmF0b3JUeXBlLCBCaW5hcnlBcml0aFByb2ZpbGU+KGFyaXRoUHJvZmlsZSkKICAg
ICB7CiAgICAgfQogfTsKQEAgLTI2MywxNiArMjU5LDExIEBAIHR5cGVkZWYgSklUQmluYXJ5TWF0
aElDPEpJVEFkZEdlbmVyYXRvcj4gSklUQWRkSUM7CiB0eXBlZGVmIEpJVEJpbmFyeU1hdGhJQzxK
SVRNdWxHZW5lcmF0b3I+IEpJVE11bElDOwogdHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUU3Vi
R2VuZXJhdG9yPiBKSVRTdWJJQzsKIAotCi1pbmxpbmUgYm9vbCBpc1VuYXJ5UHJvZmlsZUVtcHR5
KEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQotewotICAgIHJldHVybiBhcml0aFByb2ZpbGUu
bGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOwotfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVy
YXRvclR5cGU+Ci1jbGFzcyBKSVRVbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJh
dG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0eT4geworY2xhc3MgSklUVW5hcnlNYXRoSUMgOiBw
dWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVuYXJ5QXJpdGhQcm9maWxlPiB7CiBwdWJs
aWM6Ci0gICAgSklUVW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCi0gICAg
ICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzVW5hcnlQcm9maWxlRW1wdHk+KGFyaXRo
UHJvZmlsZSkKKyAgICBKSVRVbmFyeU1hdGhJQyhVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlKQorICAgICAgICA6IEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBVbmFyeUFyaXRoUHJvZmls
ZT4oYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCmluZGV4IDgzZDI5M2I2MjUyLi5jZjZiYWE1MmY2
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcApA
QCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElDSW5saW5lUmVz
dWx0IEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxp
bmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0
IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdlIGRlZmF1bHQg
dG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9ic2VydmVkVHlw
ZSgpLndpdGhJbnQzMigpOwpAQCAtODksNyArODksNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElD
RwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7
CiB9CiAKLWJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUTXVsR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwg
Y29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFBy
b2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRHUFIoKSk7CkBAIC0yMDUs
MTggKzIwNSwxOCBAQCBib29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogCiAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcCBub3ROZWdhdGl2ZVplcm8gPSBqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwgbV9yZXN1bHQucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02
NChuZWdhdGl2ZVplcm9CaXRzKSk7CiAKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpB
YnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAg
aml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpO
ZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxl
LT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBq
aXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5saW5rKCZqaXQpOwotICAgICAg
ICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk5l
Z1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUt
PmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogCiAg
ICAgICAgIGppdC5tb3ZlKG1fcmVzdWx0LnBheWxvYWRHUFIoKSwgbV9zY3JhdGNoR1BSKTsKICAg
ICAgICAgaml0LnVyc2hpZnRQdHIoQ0NhbGxIZWxwZXJzOjpJbW0zMig1MiksIG1fc2NyYXRjaEdQ
Uik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3Jh
dGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogCi0gICAgICAgIGppdC5vcjMyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIEND
YWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygp
KSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJpbmFyeUFy
aXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNz
KGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAgICAgICAgIG5vSW50NTJPdmVyZmxv
dy5saW5rKCZqaXQpOwogCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKQEAgLTIyNywxOCArMjI3
LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5h
cHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIG1fcmVzdWx0LnBheWxv
YWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpKTsKICAgICAgICAgbm90TmVn
YXRpdmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9y
ZXN1bHQudGFnR1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5lZ2F0aXZlWmVyb0Jp
dHMgPj4gMzIpKSk7CiAKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFk
ZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpOZWdaZXJvRG91
YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgp
OwogCiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5saW5rKCZqaXQpOwotICAgICAgICBqaXQub3Iz
MihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3Vi
bGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NP
ZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihC
aW5hcnlBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29s
dXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogCiAgICAgICAgIGpp
dC5tb3ZlKG1fcmVzdWx0LnRhZ0dQUigpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQudXJz
aGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUyIC0gMzIpLCBtX3NjcmF0Y2hHUFIpOwogICAg
ICAgICBqaXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpJbW0zMigweDdmZiksIG1fc2NyYXRjaEdQUik7
CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub0ludDUyT3ZlcmZsb3cgPSBqaXQuYnJhbmNo
MzIoQ0NhbGxIZWxwZXJzOjpMZXNzVGhhbk9yRXF1YWwsIG1fc2NyYXRjaEdQUiwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoMHg0MzEpKTsKICAgICAgICAgCi0gICAgICAgIGppdC5vcjMyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIEND
YWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygp
KSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJpbmFyeUFy
aXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNz
KGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAgICAgICAgZW5kSnVtcExpc3Qu
YXBwZW5kKG5vSW50NTJPdmVyZmxvdyk7CiAgICAgICAgIGlmIChtX3NjcmF0Y2hHUFIgPT0gbV9y
ZXN1bHQudGFnR1BSKCkgfHwgbV9zY3JhdGNoR1BSID09IG1fcmVzdWx0LnBheWxvYWRHUFIoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCmluZGV4IDM2ZDI2
ZWExMjRlLi42MDg3Nzk2Njg1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRNdWxHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11
bEdlbmVyYXRvci5oCkBAIC01Niw4ICs1Niw4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFt
X2xlZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCkgfHwgIW1fcmlnaHRPcGVyYW5kLmlz
UG9zaXRpdmVDb25zdEludDMyKCkpOwogICAgIH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3Vs
dCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBj
b25zdCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxw
ZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIHNsb3dKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRF
bWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUo
Q0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQ
cm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxs
SGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBz
bG93SnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFBy
b2ZpbGluZyk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudChT
bmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCkgeyByZXR1cm4gbGVmdE9wZXJhbmQuaXNQb3NpdGl2
ZUNvbnN0SW50MzIoKTsgfQogICAgIHN0YXRpYyBib29sIGlzUmlnaHRPcGVyYW5kVmFsaWRDb25z
dGFudChTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQpIHsgcmV0dXJuIHJpZ2h0T3BlcmFuZC5p
c1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE5lZ0dlbmVyYXRvci5jcHAKaW5kZXggOTJjMjlkZDYzMGEuLmNlZWJlMzkwOTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuY3BwCkBAIC0zMiw3ICsz
Miw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVn
R2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJh
dGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRN
YXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhl
bHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgVW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IElu
dmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9zcmMucGF5bG9hZEdQ
UigpKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE5lZ0dlbmVy
YXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICAvLyBX
ZSBkZWZhdWx0IHRvIHNwZWN1bGF0aW5nIGludDMyLgogICAgIE9ic2VydmVkVHlwZSBvYnNlcnZl
ZFR5cGVzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CiAgICAgaWYgKGFyaXRoUHJvZmls
ZSkKLSAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBl
KCk7CisgICAgICAgIG9ic2VydmVkVHlwZXMgPSBhcml0aFByb2ZpbGUtPmFyZ09ic2VydmVkVHlw
ZSgpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW9ic2VydmVkVHlwZXMuaXNFbXB0eSgpLCAi
V2Ugc2hvdWxkIG5vdCBhdHRlbXB0IHRvIGdlbmVyYXRlIGFueXRoaW5nIGlmIHdlIGRvIG5vdCBo
YXZlIGEgcHJvZmlsZS4iKTsKIAogICAgIGlmIChvYnNlcnZlZFR5cGVzLmlzT25seU5vbk51bWJl
cigpKQpAQCAtODIsNyArODIsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJh
dG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVy
biBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wg
SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYg
c2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wg
c2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlz
dCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgVW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9zcmMucGF5bG9hZEdQUigpKTsKICAgICBBU1NF
UlQobV9zY3JhdGNoR1BSICE9IG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CkBAIC0xMTcsNyArMTE3
LDcgQEAgYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICNlbmRpZgogICAgIC8vIFRoZSBmbGFncyBv
ZiBBcml0aE5lZ2F0ZSBhcmUgYmFzaWMgaW4gREZHLgogICAgIC8vIFdlIG9ubHkgbmVlZCB0byBr
bm93IGlmIHdlIGV2ZXIgcHJvZHVjZWQgYSBudW1iZXIuCi0gICAgaWYgKHNob3VsZEVtaXRQcm9m
aWxpbmcgJiYgYXJpdGhQcm9maWxlICYmICFhcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgp
LnNhd051bWJlcigpICYmICFhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICBp
ZiAoc2hvdWxkRW1pdFByb2ZpbGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+
YXJnT2JzZXJ2ZWRUeXBlKCkuc2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2
ZURvdWJsZSgpKQogICAgICAgICBhcml0aFByb2ZpbGUtPmVtaXRTZXREb3VibGUoaml0KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTmVnR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVy
YXRvci5oCmluZGV4IDhhMGMyZDUxN2Q2Li43ODdiNzA3NjgyOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCkBAIC00Myw4ICs0Myw4IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX3NjcmF0Y2hHUFIoc2NyYXRjaEdQUikKICAgICB7IH0KIAotICAgIEpJVE1h
dGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5l
cmF0aW9uU3RhdGUmLCBjb25zdCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3Qs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJv
ZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVz
dWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYs
IGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKEND
YWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmls
ZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CiAKIHByaXZhdGU6CiAgICAgSlNWYWx1ZVJl
Z3MgbV9yZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAppbmRleCA0N2RlYjhjZTZhYS4uM2E5ZTg1YTA4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjY0NSw3ICsyNjQ1LDcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enooSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICNlbmRpZiAvLyBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKIH0KIAotQUxXQVlTX0lO
TElORSBzdGF0aWMgSlNWYWx1ZSBwcm9maWxlZEFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIG9wMSwgSlNWYWx1ZSBvcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxl
KQorQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBwcm9maWxlZEFkZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wMSwgSlNWYWx1ZSBvcDIsIEJpbmFyeUFyaXRoUHJv
ZmlsZSYgYXJpdGhQcm9maWxlKQogewogICAgIGFyaXRoUHJvZmlsZS5vYnNlcnZlTEhTQW5kUkhT
KG9wMSwgb3AyKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQWRkKGdsb2JhbE9iamVjdCwgb3Ax
LCBvcDIpOwpAQCAtMjY2MSw3ICsyNjYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZUFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQWRkKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewog
ICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTI2NzksNyArMjY3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgSlNW
YWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQ
cm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwog
ICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5v
T3B0aW1pemU7CkBAIC0yNzAxLDcgKzI3MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0Kgog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUo
KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFBy
b2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHByb2ZpbGVkQWRkKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMiksICphcml0aFByb2ZpbGUpKTsKIH0KQEAg
LTI3MTYsNyArMjcxNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVBZGRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSlNWYWx1ZSBv
cDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAKICAgICBhdXRvIG5vbk9wdGltaXpl
VmFyaWFudCA9IG9wZXJhdGlvblZhbHVlQWRkTm9PcHRpbWl6ZTsKLSAgICBpZiAoQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgaWYgKEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpKQogICAg
ICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwogICAgIGFkZElD
LT5nZW5lcmF0ZU91dE9mTGluZShjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZh
cmlhbnQpOwogCkBAIC0yNzQ5LDcgKzI3NDksNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSB1bnByb2ZpbGVkTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc011bChnbG9iYWxPYmplY3QsIG9wMSwgb3AyKSk7
CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29s
IHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCitBTFdBWVNfSU5MSU5FIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZE11bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBC
aW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5k
UkhTVHlwZXMgPSB0cnVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNzkwLDcgKzI3OTAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gbm9uT3B0aW1p
emVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplOwotICAgIGlmIChBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCkpCiAg
ICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgbXVsSUMtPmdlbmVy
YXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7
CiAKQEAgLTI4MDEsNyArMjgwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0
dXJuIHVucHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2Zp
bGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yODE3LDcgKzI4MTcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRP
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9m
aWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIGF1dG8gbm9u
T3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemU7CkBA
IC0yODM2LDcgKzI4MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKICAg
ICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWRNdWwoZ2xvYmFsT2Jq
ZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KQEAgLTI4NjIs
NyArMjg2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKQEAgLTI4NzEsNyArMjg3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVy
YW5kKTsKLSAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgYXJpdGhQ
cm9maWxlLT5vYnNlcnZlQXJnKG9wZXJhbmQpOwogCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBv
cGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODk5LDkgKzI4OTksOSBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdAogICAgIAogICAgIEpTVmFsdWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3BlcmFuZCk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9
IG5lZ0lDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwot
ICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBhcml0aFByb2ZpbGUt
Pm9ic2VydmVBcmcob3BlcmFuZCk7CiAgICAgbmVnSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCksIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQpOwogCiAjaWYg
RU5BQkxFKE1BVEhfSUNfU1RBVFMpCkBAIC0yOTMzLDggKzI5MzMsOCBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbAogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcGVyYW5kKTsKIAotICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lD
LT5hcml0aFByb2ZpbGUoKSkKLSAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTKG9wZXJh
bmQpOworICAgIGlmIChVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFy
aXRoUHJvZmlsZSgpKQorICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7
CiAgICAgbmVnSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlKTsKIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpAQCAtMjk2
MCw3ICsyOTYwLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9m
aWxlZFN1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdWIoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMikpOwogfQogCi1BTFdBWVNfSU5M
SU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZFN1YihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9i
c2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBwcm9maWxlZFN1YihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJp
bmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRS
SFNUeXBlcyA9IHRydWUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCkBAIC0yOTg0LDcgKzI5ODQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAg
IHJldHVybiB1bnByb2ZpbGVkU3ViKGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9w
Mik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQ
cm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9m
aWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSkKIHsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKIApAQCAtMzAwMiw3ICszMDAy
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1Yk9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIG5vbk9wdGlt
aXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlU3ViTm9PcHRpbWl6ZTsKLSAgICBpZiAoQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgaWYgKEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpKQog
ICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIHN1YklDLT5nZW5l
cmF0ZU91dE9mTGluZShjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQp
OwogCkBAIC0zMDI4LDcgKzMwMjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKKyAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUo
KTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVM
SFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMikpOwogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVT
dWJQcm9maWxlZE5vT3B0aW1pemU7CkBAIC0zMDQ3LDcgKzMwNDcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGltaXplKEpTR2xv
YmFsT2JqZWN0KgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5h
cml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1
YklDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1
cm4gcHJvZmlsZWRTdWIodm0sIGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwg
KmFyaXRoUHJvZmlsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCmluZGV4IDM3ZTgzNjE1ZDQ3Li41OTVhZWM0N2NkNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTM4LDYgKzM4LDggQEAgdHlwZWRlZiBpbnQ2NF90
IEVuY29kZWRKU1ZhbHVlOwogICAgIAogY2xhc3MgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKIGNs
YXNzIEFycmF5UHJvZmlsZTsKK2NsYXNzIFVuYXJ5QXJpdGhQcm9maWxlOworY2xhc3MgQmluYXJ5
QXJpdGhQcm9maWxlOwogY2xhc3MgQnV0dGVyZmx5OwogY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3Mg
Q2FsbExpbmtJbmZvOwpAQCAtNjQsNyArNjYsNiBAQCBjbGFzcyBXYXRjaHBvaW50U2V0Owogc3Ry
dWN0IEJ5VmFsSW5mbzsKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rp
b247Ci1zdHJ1Y3QgQXJpdGhQcm9maWxlOwogCiBleHRlcm4gIkMiIHsKIApAQCAtNzcsNyArNzgs
NyBAQCB0eXBlZGVmIGNoYXIqIFVudXNlZFB0cjsKICAgICBBOiBKU0FycmF5KgogICAgIEFhcDog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSoKICAgICBBcDogQXJyYXlQcm9maWxlKgotICAgIEFycDog
QXJpdGhQcm9maWxlKgorICAgIEFycDogQmluYXJ5QXJpdGhQcm9maWxlKgogICAgIEI6IEJ1dHRl
cmZseSoKICAgICBCeTogQnlWYWxJbmZvKgogICAgIEM6IEpTQ2VsbCoKQEAgLTI4Miw3ICsyODMs
NyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2hlY2tJZkV4Y2VwdGlvbklzVW5j
YXRjaGFibGVBbmROb3RpZnlQcm9maWxlcihWTQogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkluc3RhbmNlT2ZDdXN0b20oSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhh
c0luc3RhbmNlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVBZGQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ay
LCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFBy
b2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFk
ZFByb2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CkBAIC0yOTIsMTMgKzI5Mywx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSgogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRO
b09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0
aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFu
ZCk7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJv
ZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBvcGVyYW5kLCBBcml0aFByb2Zp
bGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQ
cm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIFVuYXJ5QXJp
dGhQcm9maWxlKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcGVyYW5kLCBKSVROZWdJQyopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlU3ViKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwotRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJp
dGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViTm9P
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcAppbmRleCA3OTVjMjc1ODRjMC4uN2IxYThiODE5
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJl
c3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBN
YXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25z
dCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICAvLyBXZSBkZWZhdWx0
IHRvIHNwZWN1bGF0aW5nIGludDMyLgogICAgIE9ic2VydmVkVHlwZSBsaHMgPSBPYnNlcnZlZFR5
cGUoKS53aXRoSW50MzIoKTsKQEAgLTc4LDcgKzc4LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0
IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJ
Q0cKICAgICByZXR1cm4gSklUTWF0aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0
OwogfQogCi1ib29sIEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBl
cnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVy
czo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCitib29sIEpJVFN1YkdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3Qs
IGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQ
cm9maWxpbmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsK
ICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmgKaW5kZXggNTYxZjYzMzRhZTMu
LjM0OTFhODNmZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1
YkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJh
dG9yLmgKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEZQUihz
Y3JhdGNoRlBSKQogICAgIHsgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRl
SW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRo
UHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYg
c2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxI
ZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxl
Kik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVy
czo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0
aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9m
aWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25p
cHBldE9wZXJhbmQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9w
ZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCA1MWVkNjUzZDk4YS4u
MmZkZTEwN2E5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
CkBAIC0xNDcsMzYgKzE0Nyw0OSBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2
bSkKICNlbmRpZgogCiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwor
ICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIGFyaXRoUHJv
ZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9
PSBVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKCkpOworICAgICAgICBBU1NFUlQo
YXJpdGhQcm9maWxlLmFyZ09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgIH0KKyAg
ICB7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgYXJp
dGhQcm9maWxlLmFyZ1Nhd051bWJlcigpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJCaXRzKCkpOworICAgICAg
ICBBU1NFUlQoYXJpdGhQcm9maWxlLmFyZ09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7
CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdJbnQzMigpOwogICAgICAgICBhcml0aFByb2Zp
bGUucmhzU2F3SW50MzIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0g
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLmJpdHMoKSk7Ci0gICAgICAgIFNU
QVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLmxoc09ic2Vy
dmVkVHlwZSgpLmlzT25seUludDMyKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJv
ZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnRJbnQoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQz
MigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQ
cm9maWxlOjpvYnNlcnZlZEludEludEJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2Zp
bGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0
aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQogICAgIHsK
LSAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQ
cm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051bWJlcigp
OwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3SW50MzIoKTsKLSAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlcklu
dCgpLmJpdHMoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZl
ZEJpbmFyeU51bWJlckludCgpLmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKLSAg
ICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVySW50
KCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0
aFByb2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRC
aXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlz
T25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5
cGUoKS5pc09ubHlJbnQzMigpKTsKICAgICB9CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUg
YXJpdGhQcm9maWxlOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwog
ICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3TnVtYmVyKCk7CiAgICAgICAgIGFyaXRoUHJvZmls
ZS5yaHNTYXdOdW1iZXIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0g
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51bWJlcigpLmJpdHMoKSk7Ci0gICAg
ICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51bWJl
cigpLmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKLSAgICAgICAgU1RBVElDX0FT
U0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkucmhzT2JzZXJ2
ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cygpKTsK
KyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1i
ZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNP
bmx5TnVtYmVyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAg
IGFyaXRoUHJvZmlsZS5saHNTYXdJbnQzMigpOwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3
TnVtYmVyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJv
ZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNf
QVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5saHNPYnNlcnZl
ZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2Zp
bGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVt
YmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkSW50TnVtYmVyQml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRo
UHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNTRVJU
KGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQog
fQogSUdOT1JFX1dBUk5JTkdTX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA3OGFkZDAyMDU3NS4uNzEyNWJk
NGY1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKIAogY29uc3QgaW50
NjRfdCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCiB7Ci0vLyBUaGlzIGlzIGEgZmls
ZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwg
YW5kIGNvbnRhaW5zIGNvZGUKKy8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5l
YXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCiAvLyB0
byBjcmVhdGUgYSB0YWJsZSBvZiBvZmZzZXRzLCBzaXplcywgYW5kIGEgaGVhZGVyIGlkZW50aWZ5
aW5nIHdoYXQgY29tYmluYXRpb24gb2YKIC8vIFBsYXRmb3JtLmggbWFjcm9zIHdlIGhhdmUgc2V0
LiBXZSBpbmNsdWRlIGl0IGluc2lkZSBvZiBhIG1ldGhvZCBvbiBMTEludE9mZnNldHNFeHRyYWN0
b3IKIC8vIGJlY2F1c2UgdGhlIGZpZWxkcyB3aG9zZSBvZmZzZXRzIHdlJ3JlIGV4dHJhY3Rpbmcg
YXJlIG1vc3RseSBwcml2YXRlLiBTbyB3ZSBtYWtlIHRoZWlyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggOWNlMzRjODU2
NzcuLjlkMTFiZTIxMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNDEsMTMgKzI0MSwxNSBAQCBjb25zdCBJc0lu
dmFsaWRhdGVkID0gY29uc3RleHByIElzSW52YWxpZGF0ZWQKICMgU2hhZG93Q2hpY2tlbiBkYXRh
CiBjb25zdCBTaGFkb3dDaGlja2VuVGFpbE1hcmtlciA9IGNvbnN0ZXhwciBTaGFkb3dDaGlja2Vu
OjpQYWNrZXQ6OnRhaWxNYXJrZXJWYWx1ZQogCi0jIEFyaXRoUHJvZmlsZSBkYXRhCi1jb25zdCBB
cml0aFByb2ZpbGVJbnQgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRVbmFyeUlu
dCgpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJlciA9IGNvbnN0ZXhwciAoQXJpdGhQ
cm9maWxlOjpvYnNlcnZlZFVuYXJ5TnVtYmVyKCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxl
SW50SW50ID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCku
Yml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVySW50ID0gY29uc3RleHByIChBcml0aFBy
b2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9m
aWxlSW50TnVtYmVyID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50
TnVtYmVyKCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyTnVtYmVyID0gY29uc3Rl
eHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkuYml0cygpKQor
IyBVbmFyeUFyaXRoUHJvZmlsZSBkYXRhCitjb25zdCBBcml0aFByb2ZpbGVJbnQgPSBjb25zdGV4
cHIgKFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJv
ZmlsZU51bWJlciA9IGNvbnN0ZXhwciAoVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVy
Qml0cygpKQorCisjIEJpbmFyeUFyaXRoUHJvZmlsZSBkYXRhCitjb25zdCBBcml0aFByb2ZpbGVJ
bnRJbnQgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRJbnRCaXRz
KCkpCitjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJJbnQgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRo
UHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVJbnRO
dW1iZXIgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJC
aXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSBjb25zdGV4cHIgKEJpbmFy
eUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdW1iZXJCaXRzKCkpCiAKICMgUG9pbnRlciBU
YWdzCiBjb25zdCBCeXRlY29kZVB0clRhZyA9IGNvbnN0ZXhwciBCeXRlY29kZVB0clRhZwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQppbmRleCBkMTVkOTY3MjdjNS4uYzg4MGNmOTU5Y2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCkBAIC0xMDAwLDggKzEwMDAsOCBAQCBlbmQpCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
bmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBy
ZXR1cm4pCiAKLSAgICBtYWNybyBhcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgb3JpIHR5cGUs
IE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0
c1t0NV0KKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAgb3JoIHR5
cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmls
ZTo6bV9iaXRzW3Q1XQogICAgIGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTAxMCwx
MiArMTAxMCwxMiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdhdGUsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcgogICAgIGJpbmVxIHQxLCBJbnQz
MlRhZywgLm9wTmVnYXRlU3JjTm90SW50CiAgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVn
YXRlU2xvdwogICAgIG5lZ2kgdDIKLSAgICBhcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQor
ICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuIChJbnQz
MlRhZywgdDIpCiAub3BOZWdhdGVTcmNOb3RJbnQ6CiAgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5v
cE5lZ2F0ZVNsb3cKICAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgYXJpdGhQcm9maWxlKEFy
aXRoUHJvZmlsZU51bWJlcikKKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlTnVt
YmVyKQogICAgIHJldHVybih0MSwgdDIpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDI3LDcgKzEw
MjcsNyBAQCBlbmQpCiBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24pCiAgICAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIGFy
aXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICAg
ICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxl
ICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAgICAg
IG1ldGFkYXRhKHQ1LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggOTVjMGY2OGU1YmUuLmQ5NDkxMDE1ZTQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQpAQCAtOTgxLDIyICs5ODEsMjQgQEAgZW5kKQogCiAKIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCisKKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkK
KyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBV
bmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIGVuZAorCiAgICAgZ2V0KG1fb3BlcmFu
ZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAgICAgbWV0
YWRhdGEodDEsIHQyKQotICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCiAgICAgYnFiIHQzLCBudW1iZXJUYWcs
IC5vcE5lZ2F0ZU5vdEludAogICAgIGJ0aXogdDMsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cK
ICAgICBuZWdpIHQzCiAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICBvcmkgQXJpdGhQcm9maWxl
SW50LCB0MgotICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmls
ZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0
aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuKHQzKQogLm9wTmVnYXRlTm90SW50OgogICAgIGJ0cXog
dDMsIG51bWJlclRhZywgLm9wTmVnYXRlU2xvdwogICAgIHhvcnEgMHg4MDAwMDAwMDAwMDAwMDAw
LCB0MwotICAgIG9yaSBBcml0aFByb2ZpbGVOdW1iZXIsIHQyCi0gICAgc3RvcmVpIHQyLCBPcE5l
Z2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFd
CisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKICAgICByZXR1cm4o
dDMpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDEwLDcgKzEwMTIsNyBAQCBtYWNybyBiaW5hcnlP
cEN1c3RvbVN0b3JlKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFu
ZFN0b3JlLCBkbwogICAgICAgICBtZXRhZGF0YSh0NSwgdDApCiAKICAgICAgICAgbWFjcm8gcHJv
ZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICAgICAgICAg
IG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5h
cnlBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KICAgICAgICAgZW5kCiAKICAgICAgICAgZ2V0KG1f
cmhzLCB0MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fy
bS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgppbmRleCBiMjNm
NjViODY4My4uYjIyMjU2NzgwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2FybS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm0ucmIKQEAgLTI5OSw3ICsyOTksNyBAQCBjbGFzcyBTZXF1ZW5jZQogICAgICAgICAgICAgZW5k
CiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVzc2Vz
RG91YmxlKHJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2VkSW1tZWRp
YXRlcyhyZXN1bHQsIFsic3RvcmViIiwgInN0b3JlaSIsICJzdG9yZXAiLCAic3RvcmVxIl0pCisg
ICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMocmVzdWx0LCBbInN0
b3JlYiIsICJzdG9yZWgiLCAic3RvcmVpIiwgInN0b3JlcCIsICJzdG9yZXEiXSkKICAgICAgICAg
cmVzdWx0ID0gcmlzY0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhyZXN1bHQsIDAuLjB4ZmYsIDAu
LjB4MGZmKQogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMocmVz
dWx0KQogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJSZWdpc3RlclJldXNlKHJlc3VsdCkKQEAg
LTQxOCw3ICs0MTgsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAg
ICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJhbmRz
IiwgImFuZCIsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICB3
aGVuICJvcmkiLCAib3JwIiwgIm9yaCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJz
IiwgIm9yciIsIG9wZXJhbmRzKQogICAgICAgICB3aGVuICJvcmlzIgogICAgICAgICAgICAgZW1p
dEFybUNvbXBhY3QoIm9ycnMiLCAib3JycyIsIG9wZXJhbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hcm02NC5yYgppbmRleCAwOTY2ZWMzYmY2Yi4uZmNkMjc2ZjM2YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBAIC0zOTMsNyArMzkz
LDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAg
ICAgICAgIHdoZW4gImxvYWRiIiwgImxvYWRic2kiLCAibG9hZGJzcSIsICJzdG9yZWIiLCAvXmJi
LywgL15idGIvLCAvXmNiLywgL150Yi8KICAgICAgICAgICAgICAgICBzaXplID0gMQotICAgICAg
ICAgICAgd2hlbiAibG9hZGgiLCAibG9hZGhzaSIsICJsb2FkaHNxIiwgInN0b3JlaCIKKyAgICAg
ICAgICAgIHdoZW4gImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIsICJvcmgiLCAic3RvcmVo
IgogICAgICAgICAgICAgICAgIHNpemUgPSAyCiAgICAgICAgICAgICB3aGVuICJsb2FkaSIsICJs
b2FkaXMiLCAic3RvcmVpIiwgImFkZGkiLCAiYW5kaSIsICJsc2hpZnRpIiwgIm11bGkiLCAibmVn
aSIsCiAgICAgICAgICAgICAgICAgIm5vdGkiLCAib3JpIiwgInJzaGlmdGkiLCAidXJzaGlmdGki
LCAic3ViaSIsICJ4b3JpIiwgL15iaS8sIC9eYnRpLywKQEAgLTQxOCw3ICs0MTgsNyBAQCBjbGFz
cyBTZXF1ZW5jZQogICAgICAgICAgICAgZW5kCiAgICAgICAgIH0KIAotICAgICAgICByZXN1bHQg
PSByaXNjTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKHJlc3VsdCwgWyJzdG9yZWIiLCAic3RvcmVp
IiwgInN0b3JlcCIsICJzdG9yZXEiXSkKKyAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxh
Y2VkSW1tZWRpYXRlcyhyZXN1bHQsIFsic3RvcmViIiwgInN0b3JlaCIsICJzdG9yZWkiLCAic3Rv
cmVwIiwgInN0b3JlcSJdKQogCiAgICAgICAgICMgVGhlIHJ1bGVzIGZvciB3aGljaCBpbW1lZGlh
dGVzIGFyZSB2YWxpZCBmb3IgYW5kL29yL3hvciBpbnN0cnVjdGlvbnMgYXJlIGZhaXJseSBpbnZv
bHZlZCwgc2VlIGh0dHBzOi8vZGluZnVlaHIuZ2l0aHViLmlvL2Jsb2cvZW5jb2Rpbmctb2YtaW1t
ZWRpYXRlLXZhbHVlcy1vbi1hYXJjaDY0LwogICAgICAgICB2YWxpZExvZ2ljYWxJbW1lZGlhdGVz
ID0gW10KQEAgLTcxMSw2ICs3MTEsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAg
ZW1pdEFSTTY0VEFDKCJvcnIiLCBvcGVyYW5kcywgOnB0cikKICAgICAgICAgd2hlbiAib3JxIgog
ICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIiLCBvcGVyYW5kcywgOnF1YWQpCisgICAgICAg
IHdoZW4gIm9yaCIKKyAgICAgICAgICAgIGVtaXRBUk02NFRBQygib3JyIiwgb3BlcmFuZHMsIDp3
b3JkKSAjIG5vdCA6aGFsZiBiZWNhdXNlIDE2LWJpdCByZWdpc3RlcnMgZG9uJ3QgZXhpc3Qgb24g
QVJNLgogICAgICAgICB3aGVuICJ4b3JpIgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJlb3Ii
LCBvcGVyYW5kcywgOndvcmQpCiAgICAgICAgIHdoZW4gInhvcnAiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCmluZGV4IGYzM2Y3MDZkYjE4Li5jNmVhYzkxZTJmMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKQEAgLTM4Niw3ICsz
ODYsNyBAQCBlbmQKIAogZGVmIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgdHlwZSwgb3Bl
cmF0b3IpCiAgICAgcmFpc2UgdW5sZXNzIHR5cGUgPT0gOmludHB0ciB8fCB0eXBlID09IDp1aW50
cHRyIHx8IHR5cGUgPT0gOmludDMyIHx8IHR5cGUgPT0gOnVpbnQzMiB8fCBcCi0gICAgICAgIHR5
cGUgPT0gOmludDY0IHx8IHR5cGUgPT0gOnVpbnQ2NCB8fCB0eXBlID09IDpkb3VibGUKKyAgICAg
ICAgdHlwZSA9PSA6aW50NjQgfHwgdHlwZSA9PSA6dWludDY0IHx8IHR5cGUgPT0gOmRvdWJsZSB8
fCB0eXBlID09IDppbnQxNgogICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMwogICAgICAgICBvcDEg
PSBvcGVyYW5kc1swXQogICAgICAgICBvcDIgPSBvcGVyYW5kc1sxXQpAQCAtNDAxLDYgKzQwMSw5
IEBAIGRlZiBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIHR5cGUsIG9wZXJhdG9yKQogICAg
IGlmIGRzdC5pc19hPyBSZWdpc3RlcklEIGFuZCAodHlwZSA9PSA6aW50MzIgb3IgdHlwZSA9PSA6
dWludDMyKQogICAgICAgICB0cnVuY2F0aW9uSGVhZGVyID0gIih1aW50MzJfdCkoIgogICAgICAg
ICB0cnVuY2F0aW9uRm9vdGVyID0gIikiCisgICAgZWxzaWYgZHN0LmlzX2E/IFJlZ2lzdGVySUQg
YW5kICh0eXBlID09IDppbnQxNikKKyAgICAgICAgdHJ1bmNhdGlvbkhlYWRlciA9ICIodWludDE2
X3QpKCIKKyAgICAgICAgdHJ1bmNhdGlvbkZvb3RlciA9ICIpIgogICAgIGVsc2UKICAgICAgICAg
dHJ1bmNhdGlvbkhlYWRlciA9ICIiCiAgICAgICAgIHRydW5jYXRpb25Gb290ZXIgPSAiIgpAQCAt
NTg1LDYgKzU4OCw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBjbG9vcEVtaXRP
cGVyYXRpb24ob3BlcmFuZHMsIDppbnQ2NCwgInwiKQogICAgICAgICB3aGVuICJvcnAiCiAgICAg
ICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnRwdHIsICJ8IikKKyAgICAg
ICAgd2hlbiAib3JoIgorICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6
aW50MTYsICJ8IikKIAogICAgICAgICB3aGVuICJ4b3JpIgogICAgICAgICAgICAgY2xvb3BFbWl0
T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50MzIsICJeIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgppbmRleCA3YTIxMmIyMGUyZC4uYTQxZTA2
ZjdkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3Ry
dWN0aW9ucy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVj
dGlvbnMucmIKQEAgLTQ2LDYgKzQ2LDcgQEAgTUFDUk9fSU5TVFJVQ1RJT05TID0KICAgICAgIm9y
aSIsCiAgICAgICJvcmYiLAogICAgICAib3JkIiwKKyAgICAgIm9yaCIsCiAgICAgICJyc2hpZnRp
IiwKICAgICAgInVyc2hpZnRpIiwKICAgICAgInJzaGlmdHAiLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL21pcHMucmIKaW5kZXggYjVmMDdiMTY4YzMuLjVhNTMyZDg1YjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKQEAgLTUyNyw3ICs1MjcsNyBA
QCBkZWYgbWlwc0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhsaXN0KQogICAgICAgICAgICAgICAg
IGVuZAogICAgICAgICAgICAgd2hlbiAvXihhZGRpfHN1YmkpLwogICAgICAgICAgICAgICAgIG5l
d0xpc3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0
LCAtMHg3ZmZmLi4weDdmZmYpCi0gICAgICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiLCAib3Jp
IiwgIm9ycCIsICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAi
LCAib3JpIiwgIm9ycCIsICJvcmgiLCAieG9yaSIsICJ4b3JwIgogICAgICAgICAgICAgICAgIG5l
d0xpc3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0
LCAwLi4weGZmZmYpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBub2RlCkBAIC04NjAsNyArODYwLDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAg
IGVuZAogICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCiAgICAgICAgICAgICBlbWl0TUlQU0Nv
bXBhY3QoImFuZCIsICJhbmQiLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIK
KyAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIsICJvcmgiCiAgICAgICAgICAgICBlbWl0TUlQU0Nv
bXBhY3QoIm9yIiwgIm9yciIsIG9wZXJhbmRzKQogICAgICAgICB3aGVuICJvcmlzIgogICAgICAg
ICAgICAgZW1pdE1JUFNDb21wYWN0KCJvciIsICJvcnJzIiwgb3BlcmFuZHMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgppbmRleCA3NWQ3YTk4ZjMzZi4uMWU2NzA0ZmFi
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgpAQCAtNDYyLDcg
KzQ2Miw3IEBAIGRlZiByaXNjTG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMobGlzdCkKICAgICAgICAg
ICAgIHBvc3RJbnN0cnVjdGlvbnMgPSBbXQogICAgICAgICAgICAgYW5ub3RhdGlvbiA9IG5vZGUu
YW5ub3RhdGlvbgogICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQotICAgICAgICAgICAgd2hl
biAiYWRkaSIsICJhZGRpcyIsICJhbmRpIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwgIm5v
dGkiLCAib3JpIiwgIm9yaXMiLAorICAgICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRpcyIsICJh
bmRpIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwgIm5vdGkiLCAib3JpIiwgIm9yaCIsICJv
cmlzIiwKICAgICAgICAgICAgICAgICAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwgInN1
YmlzIiwgInhvcmkiLCAvXmJpLywgL15idGkvLCAvXmNpLywgL150aS8KICAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKaW5kZXggMTEyZWVkN2I1YzEuLjZkY2EwNDcxZDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCkBAIC0xMTIzLDYgKzEx
MjMsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgaGFuZGxlWDg2T3AoIm9ycHMi
LCA6ZmxvYXQpCiAgICAgICAgIHdoZW4gIm9yZCIKICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJv
cnBkIiwgOmRvdWJsZSkKKyAgICAgICAgd2hlbiAib3JoIgorICAgICAgICAgICAgaGFuZGxlWDg2
T3AoIm9yI3t4ODZTdWZmaXgoOmhhbGYpfSIsIDpoYWxmKQogICAgICAgICB3aGVuICJyc2hpZnRp
IgogICAgICAgICAgICAgaGFuZGxlWDg2U2hpZnQoInNhciN7eDg2U3VmZml4KDppbnQpfSIsIDpp
bnQpCiAgICAgICAgIHdoZW4gInJzaGlmdHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UmVzdWx0VHlwZS5oCmluZGV4IDliM2QwZDc0YzhkLi41NjIyZjI4OWNjMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKQEAgLTQ4LDYgKzQ4LDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3RleHByIGludCBudW1CaXRzTmVlZGVkID0g
NzsKICAgICAgICAgc3RhdGljX2Fzc2VydCgoVHlwZUJpdHMgJiAoKDEgPDwgbnVtQml0c05lZWRl
ZCkgLSAxKSkgPT0gVHlwZUJpdHMsICJUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3Mu
Iik7CiAKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFJlc3VsdFR5cGUoKQorICAgICAgICAg
ICAgOiBSZXN1bHRUeXBlKHVua25vd25UeXBlKCkpCisgICAgICAgIHsKKyAgICAgICAgfQogICAg
ICAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlwZShUeXBlIHR5cGUpCiAgICAgICAgICAg
ICA6IG1fYml0cyh0eXBlKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAxNWYxZmQ4NWU0NC4uZGE5ZmJjYTUy
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtNDc3LDggKzQ3Nyw4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19z
dHJpbmcpCiAjaWYgRU5BQkxFKEpJVCkKIHN0YXRpYyB2b2lkIHVwZGF0ZUFyaXRoUHJvZmlsZUZv
clVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmIG1ldGFkYXRhLCBKU1ZhbHVlIHJlc3Vs
dCwgSlNWYWx1ZSBvcGVyYW5kKQogewotICAgIEFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFk
YXRhLm1fYXJpdGhQcm9maWxlOwotICAgIHByb2ZpbGUub2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAg
ICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOwor
ICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTnVt
YmVyKCkgfHwgcmVzdWx0LmlzQmlnSW50KCkpOwogICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkg
ewogICAgICAgICBpZiAoIXJlc3VsdC5pc0ludDMyKCkpIHsKQEAgLTUzNSw3ICs1MzUsNyBAQCBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQogI2lmIEVOQUJMRShERkdfSklUKQogc3Rh
dGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUg
cmVzdWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmlnaHQpCiB7Ci0gICAgQXJpdGhQcm9maWxl
JiBwcm9maWxlID0gKmNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yUEMocGMpOworICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9ICpjb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZv
clBDKHBjKTsKIAogICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkgewogICAgICAgICBpZiAoIXJl
c3VsdC5pc0ludDMyKCkpIHsKQEAgLTU5Niw3ICs1OTYsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfYWRkKQogICAgIEpTVmFsdWUgdjEgPSBHRVRfQyhieXRlY29kZS5tX2xocykuanNWYWx1
ZSgpOwogICAgIEpTVmFsdWUgdjIgPSBHRVRfQyhieXRlY29kZS5tX3JocykuanNWYWx1ZSgpOwog
Ci0gICAgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUgPSAqY29kZUJsb2NrLT5hcml0aFByb2Zp
bGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUgPSAqY29k
ZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhwYyk7CiAgICAgYXJpdGhQcm9maWxlLm9i
c2VydmVMSFNBbmRSSFModjEsIHYyKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGQoZ2xv
YmFsT2JqZWN0LCB2MSwgdjIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383100</attachid>
            <date>2019-11-07 17:57:23 -0800</date>
            <delta_ts>2019-11-12 13:47:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>125032</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGExNzRiZGU2Nzc0Li5mMDMyMTg3NGVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY4IEBACisyMDE5LTExLTA3ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisK
KyAgICAgICAgQXJpdGhQcm9maWxlIHdhcyBmb3IgYSBsb25nIHRpbWUgb25seSB1c2VkIGZvciBh
ZGQvc3ViL211bC9kaXYsIGJ1dCByZWNlbnRseSBpdCBzdGFydGVkIGJlaW5nIHVzZWQgZm9yIG5l
Z2F0ZS4gQW5kIGl0IHdpbGwgc29vbiBhbHNvIGhhdmUgdG8gYmUgdXNlZCBmb3IgaW5jIGFuZCBk
ZWMgZHVlIHRvIEJpZ0ludC4KKyAgICAgICAgU28gaW4gdGhpcyBwYXRjaCBJIG1ha2UgYSBzZXBh
cmF0ZSB2ZXJzaW9uIHRoYXQgb25seSBoYXMgdGhlIGRhdGEgZm9yIGEgc2luZ2xlIGFyZ3VtZW50
LCBhbmQgdGh1cyB0YWtlcyBoYWxmIGFzIG11Y2ggbWVtb3J5LgorCisgICAgICAgIEFmdGVyIGRp
c2N1c3NpbmcgdGhpcyBjaGFuZ2Ugd2l0aCBQaGlsIEkgcmVhbGl6ZWQgdGhhdCB0aGUgUmVzdWx0
VHlwZShzKSB0aGF0IHdlcmUgdGFraW5nIHNwYWNlIGluIEFyaXRoUHJvZmlsZSBhcmUgbm90IG5l
ZWRlZDogdGhleSBuZXZlciBjaGFuZ2UgYW5kIGEgY29weSBpcyBhbHJlYWR5IGluIHRoZSBieXRl
Y29kZSBpbnN0cnVjdGlvbiBpdHNlbGYuCisgICAgICAgIFJlbW92aW5nIHRoZW0gYWxsb3dlZCBz
aHJpbmtpbmcgYm90aCBraW5kcyBvZiBBcml0aFByb2ZpbGUgdG8gZml0IGluIDE2IGJpdHMgKDkg
YW5kIDEzIHJlc3BlY3RpdmVseSkuCisgICAgICAgIEkga2VwdCB0aGUgdHdvIGtpbmRzIHNlcGFy
YXRlIGJlY2F1c2UgdGhleSBtYXkgc2hyaW5rIG9yIGdyb3cgaW5kZXBlbmRlbnRseSBpbiB0aGUg
ZnV0dXJlLgorCisgICAgICAgIFRoaXMgYWxzbyByZXF1aXJlZCBhZGRpbmcgdGhlICJvcmgiIGlu
c3RydWN0aW9uIHRvIHRoZSBvZmZsaW5lIGFzc2VtYmxlciwgdG8gc2V0IGJpdHMgaW4gdGhlIEFy
aXRoUHJvZmlsZS4KKyAgICAgICAgVGhpcyBpbiB0dXJuIG1vdGl2YXRlZCB0aGUgYWRkaXRpb24g
b2YgInN0b3JlaCIsIGFzIG9uIFJJU0MgcGxhdGZvcm1zICJvcmgiIG9uIGEgbWVtb3J5IGxvY2F0
aW9uIGlzIGFjdHVhbGx5IGxvYWRoIC0+IG9yaCAtPiBzdG9yZWguCisKKyAgICAgICAgKiBieXRl
Y29kZS9Bcml0aFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0Zmll
bGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8
Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldERvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXROb25OdW1l
cmljIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNo
b3VsZEVtaXRTZXRCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0
ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAgICAgIChX
VEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5oOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOb25JbnQzMiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZURvdWJsZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOZWdaZXJvRG91YmxlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlTm9uTnVtZXJpYyBj
b25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUJpZ0ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3cg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVJbnQ1Mk92ZXJm
bG93IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5vbk5l
Z1plcm9Eb3VibGUpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkTmVn
WmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWROb25O
dW1lcmljKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEJpZ0ludCk6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3cpOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6Om9ic2VydmVSZXN1bHQpOgorICAgICAgICAoSlND
OjpBcml0aFByb2ZpbGU6OmFkZHJlc3NPZkJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU6OmJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OkFyaXRo
UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6aGFzQml0cyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0Qml0KToKKyAgICAgICAgKEpTQzo6VW5hcnlB
cml0aFByb2ZpbGU6OlVuYXJ5QXJpdGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlOjpvYnNlcnZlZE51bWJlckJpdHMpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmls
ZTo6YXJnT2JzZXJ2ZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2Zp
bGU6OnNldEFyZ09ic2VydmVkVHlwZSk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxl
OjphcmdTYXdJbnQzMik6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdO
dW1iZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6YXJnU2F3Tm9uTnVtYmVy
KToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVBcmcpOgorICAgICAg
ICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6aXNPYnNlcnZlZFR5cGVFbXB0eSk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6QmluYXJ5QXJpdGhQcm9maWxlKToKKyAgICAgICAg
KEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEludEJpdHMpOgorICAgICAgICAo
SlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVySW50Qml0cyk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51bWJlckJpdHMpOgor
ICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6OnNldExoc09ic2VydmVkVHlwZSk6Cisg
ICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6c2V0UmhzT2JzZXJ2ZWRUeXBlKToKKyAg
ICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlTEhTKToKKyAgICAgICAgKEpT
Qzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlTEhTQW5kUkhTKToKKyAgICAgICAgKEpTQzo6
QmluYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRKSVRBZGRJQyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6YWRkSklUTXVsSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVFN1
YklDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRKSVROZWdJQyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZE1hdGhJQyk6
CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpyZXBvcnRWYWx1ZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3ApOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAoSlNDOjpVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjptYWtlU2FmZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
Om1ha2VEaXZTYWZlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjptZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVBZGQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVTdWIpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVNdWwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVW5hcnlNYXRoSUMp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQmluYXJ5TWF0
aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRo
QWRkT3JTdWIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
VmFsdWVOZWdhdGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQWRk
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlu
bGluZSk6CisgICAgICAgIChKU0M6OkpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgICogaml0L0pJVEFkZEdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVRBcml0
aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lZ2F0ZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNG
YXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0aElDU2xvdyk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbXVsKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1Yik6CisgICAgICAgICogaml0L0pJVERpdkdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0
aCk6CisgICAgICAgICogaml0L0pJVERpdkdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVRE
aXZHZW5lcmF0b3I6OkpJVERpdkdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6SklUOjpjb3BpZWRBcml0aFByb2ZpbGUpOgorICAgICAgICAqIGpp
dC9KSVRNYXRoSUMuaDoKKyAgICAgICAgKEpTQzo6SklUTWF0aElDOjpKSVRNYXRoSUMpOgorICAg
ICAgICAoSlNDOjpKSVRNYXRoSUM6OmdlbmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SklU
TWF0aElDOjphcml0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjppc0JpbmFyeVByb2Zp
bGVFbXB0eSk6CisgICAgICAgIChKU0M6OkpJVEJpbmFyeU1hdGhJQzo6SklUQmluYXJ5TWF0aElD
KToKKyAgICAgICAgKEpTQzo6aXNVbmFyeVByb2ZpbGVFbXB0eSk6CisgICAgICAgIChKU0M6OkpJ
VFVuYXJ5TWF0aElDOjpKSVRVbmFyeU1hdGhJQyk6CisgICAgICAgICogaml0L0pJVE11bEdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUp
OgorICAgICAgICAoSlNDOjpKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAg
ICAgICAqIGppdC9KSVRNdWxHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBqaXQvSklUTmVnR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZSk6
CisgICAgICAgIChKU0M6OkpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAg
ICAgICogaml0L0pJVE5lZ0dlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRT
dWJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRl
SW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKiBqaXQvSklUU3ViR2VuZXJhdG9yLmg6CisgICAgICAgICogbGxpbnQvTExJ
bnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25z
KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206Cisg
ICAgICAgICogcGFyc2VyL1Jlc3VsdFR5cGUuaDoKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6
UmVzdWx0VHlwZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjp1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3ApOgorICAgICAgICAo
SlNDOjp1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKToKKyAgICAgICAgKEpTQzo6
U0xPV19QQVRIX0RFQ0wpOgorCiAyMDE5LTExLTA3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNTAwODcpOiBp
bnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC5odG1sIGlzIHRpbWluZyBvdXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKaW5kZXggOTk5OTMz
YjhjMGUuLjdmNDZmNzNmYzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJpdGhQcm9maWxlLmNwcApAQCAtMzIsNyArMzIsOCBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
ICNpZiBFTkFCTEUoSklUKQotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRPYnNlcnZlUmVzdWx0KEND
YWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJl
Z3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQogewogICAgIGlmICghc2hvdWxkRW1pdFNl
dERvdWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91bGRFbWl0U2V0
QmlnSW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDQxICs1OSw1MSBAQCB2b2lkIEFyaXRo
UHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdz
IHJlZ3MsIFRhZ1JlZwogICAgIGRvbmUubGluaygmaml0KTsKIH0KIAotYm9vbCBBcml0aFByb2Zp
bGU6OnNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0Zmll
bGRUeXBlPgorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldERv
dWJsZSgpIGNvbnN0CiB7Ci0gICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6SW50MzJP
dmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6TmVn
WmVyb0RvdWJsZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZTsKKyAgICB1aW50MzJf
dCBtYXNrID0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTmVnWmVyb0RvdWJsZTsKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9
CiAKLXZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBj
b25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgordm9pZCBBcml0aFByb2ZpbGU8
Qml0ZmllbGRUeXBlPjo6ZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIHsK
ICAgICBpZiAoc2hvdWxkRW1pdFNldERvdWJsZSgpKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6OkludDMyT3ZlcmZsb3cgfCBBcml0aFBy
b2ZpbGU6OkludDUyT3ZlcmZsb3cgfCBBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUgfCBBcml0
aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVz
cyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOZWdaZXJvRG91YmxlIHwg
Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NP
ZkJpdHMoKSkpOwogfQogCi1ib29sIEFyaXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldE5vbk51bWVy
aWMoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9vbCBBcml0aFBy
b2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdAogewog
ICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWM7CiAgICAgcmV0dXJu
IChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCi1ib29sIEFyaXRoUHJvZmlsZTo6c2hvdWxk
RW1pdFNldEJpZ0ludCgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citi
b29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29u
c3QKIHsKICAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxlOjpCaWdJbnQ7CiAgICAgcmV0
dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1p
dFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0
Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIHsKICAgICBpZiAoc2hvdWxkRW1p
dFNldE5vbk51bWVyaWMoKSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoQXJpdGhQcm9maWxlOjpOb25OdW1lcmljKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFk
ZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKE5vbk51bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhh
ZGRyZXNzT2ZCaXRzKCkpKTsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+
Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50KENDYWxsSGVs
cGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0QmlnSW50KCkpCi0gICAg
ICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Qmln
SW50KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7Cisg
ICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJpZ0ludCksIENDYWxs
SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOwogfQorCisvLyBHZW5l
cmF0ZSB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBmdW5jdGlvbnMgYWJvdmUgZm9yIFVuYXJ5
QXJpdGhQcm9maWxlL0JpbmFyeUFyaXRoUHJvZmlsZQorLy8gSWYgY2hhbmdpbmcgdGhlIHNpemUg
b2YgZWl0aGVyLCBhZGQgdGhlIGNvcnJlc3BvbmRpbmcgbGluZXMgaGVyZS4KK3RlbXBsYXRlIGNs
YXNzIEFyaXRoUHJvZmlsZTx1aW50MTZfdD47CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkBAIC0xMDEsNyArMTEyLDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgQXJpdGhQcm9maWxlJiBwcm9maWxlKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQXJpdGhQcm9maWxl
PFQ+JiBwcm9maWxlKQogewogICAgIGNvbnN0IGNoYXIqIHNlcGFyYXRvciA9ICIiOwogCkBAIC0x
MzUsMTkgKzE0NywzMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgQXJpdGhQcm9maWxlJiBwcm9maWxlKQogICAgICAgICAgICAgc2VwYXJhdG9yID0gInwiOwog
ICAgICAgICB9CiAgICAgfQotICAgIGlmIChwcm9maWxlLnRvb2tTcGVjaWFsRmFzdFBhdGgoKSkK
LSAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIlRvb2sgc3BlY2lhbCBmYXN0IHBhdGguIik7
CiAgICAgb3V0LnByaW50KCI+Iik7Cit9CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSkKK3sKKyAgICBwcmludElu
dGVybmFsKG91dCwgc3RhdGljX2Nhc3Q8QXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZT4+KHByb2ZpbGUpKTsKKworICAgIG91dC5wcmludCgiIEFyZyBPYnNlcnZlZFR5cGU6PCIpOwor
ICAgIG91dC5wcmludChwcm9maWxlLmFyZ09ic2VydmVkVHlwZSgpKTsKKyAgICBvdXQucHJpbnQo
Ij4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEJp
bmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSkKK3sKKyAgICBwcmludEludGVybmFsKG91dCwgc3Rh
dGljX2Nhc3Q8QXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4+KHByb2ZpbGUpKTsK
KworICAgIGlmIChwcm9maWxlLnRvb2tTcGVjaWFsRmFzdFBhdGgoKSkKKyAgICAgICAgb3V0LnBy
aW50KCIgVG9vayBzcGVjaWFsIGZhc3QgcGF0aC4iKTsKIAogICAgIG91dC5wcmludCgiIExIUyBP
YnNlcnZlZFR5cGU6PCIpOwogICAgIG91dC5wcmludChwcm9maWxlLmxoc09ic2VydmVkVHlwZSgp
KTsKICAgICBvdXQucHJpbnQoIj4gUkhTIE9ic2VydmVkVHlwZTo8Iik7CiAgICAgb3V0LnByaW50
KHByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgiPiIpOwotCi0gICAg
b3V0LnByaW50KCIgTEhTIFJlc3VsdFR5cGU6PCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2ZpbGUubGhzUmVzdWx0VHlwZSgpLmJpdHMo
KSkpKSk7Ci0gICAgb3V0LnByaW50KCI+IFJIUyBSZXN1bHRUeXBlOjwiLCBSYXdQb2ludGVyKGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90Pihwcm9maWxlLnJoc1Jlc3Vs
dFR5cGUoKS5iaXRzKCkpKSkpOwotICAgIG91dC5wcmludCgiPiIpOwogfQogCiB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSlNDOjpPYnNlcnZlZFR5cGUmIG9ic2Vy
dmVkVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0
aFByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
aAppbmRleCBmY2M0ZTI4MThiZS4uY2FkOTlmNDhiYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKQEAgLTY2LDExOSArNjYsMjE3IEBAIHByaXZh
dGU6CiAgICAgdWludDhfdCBtX2JpdHMgeyAwIH07CiB9OwogCi1zdHJ1Y3QgQXJpdGhQcm9maWxl
IHsKLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1iZXJPZkZsYWdC
aXRzID0gNjsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHJoc1Jlc3VsdFR5cGVTaGlm
dCA9IG51bWJlck9mRmxhZ0JpdHM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNS
ZXN1bHRUeXBlU2hpZnQgPSByaHNSZXN1bHRUeXBlU2hpZnQgKyBSZXN1bHRUeXBlOjpudW1CaXRz
TmVlZGVkOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgPSBsaHNSZXN1bHRUeXBlU2hpZnQgKyBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNl
cnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsKLQotICAgIHN0YXRp
Y19hc3NlcnQoT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJXZSBtYWtlIGEgaGFy
ZCBhc3N1bXB0aW9uIGFib3V0IHRoYXQgaGVyZS4iKTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IGNsZWFyUmhzT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PHVpbnQzMl90
Pih+KCgxIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KSB8ICgxIDw8IChyaHNPYnNlcnZlZFR5cGVT
aGlmdCArIDEpKSB8ICgxIDw8IChyaHNPYnNlcnZlZFR5cGVTaGlmdCArIDIpKSkpOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KH4oKDEgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwg
KGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0
ICsgMikpKSk7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHJlc3VsdFR5cGVNYXNr
ID0gKDEgPDwgUmVzdWx0VHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3Qgb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVt
Qml0c05lZWRlZCkgLSAxOwordGVtcGxhdGUgPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2NsYXNz
IEFyaXRoUHJvZmlsZSB7CitwdWJsaWM6CisgICAgZW51bSBPYnNlcnZlZFJlc3VsdHMgeworICAg
ICAgICBOb25OZWdaZXJvRG91YmxlID0gMSA8PCAwLAorICAgICAgICBOZWdaZXJvRG91YmxlICAg
ID0gMSA8PCAxLAorICAgICAgICBOb25OdW1lcmljICAgICAgID0gMSA8PCAyLAorICAgICAgICBJ
bnQzMk92ZXJmbG93ICAgID0gMSA8PCAzLAorICAgICAgICBJbnQ1Mk92ZXJmbG93ICAgID0gMSA8
PCA0LAorICAgICAgICBCaWdJbnQgICAgICAgICAgID0gMSA8PCA1LAorICAgIH07CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkID0gNjsK
IAotICAgIGVudW0gY2xhc3MgQ29uc3RhbnRUYWcgeyBDb25zdGFudCB9OworICAgIGJvb2wgZGlk
T2JzZXJ2ZU5vbkludDMyKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBCaWdJbnQpOyB9CisgICAgYm9vbCBkaWRP
YnNlcnZlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwg
TmVnWmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2VydmVOb25OZWdaZXJvRG91YmxlKCkg
Y29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlk
T2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5lZ1plcm9Eb3Vi
bGUpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlTm9uTnVtZXJpYygpIGNvbnN0IHsgcmV0dXJuIGhh
c0JpdHMoTm9uTnVtZXJpYyk7IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSBjb25zdCB7
IHJldHVybiBoYXNCaXRzKEJpZ0ludCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJm
bG93KCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhJbnQzMk92ZXJmbG93KTsgfQorICAgIGJvb2wg
ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDUyT3Zl
cmZsb3cpOyB9CiAKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNwZWNp
YWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBl
OjpudW1CaXRzTmVlZGVkKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlm
dCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgPD0gKHNpemVvZih1aW50MzJfdCkgKiA4
KSAtIDEsICJTaG91bGQgZml0IGluIGEgdWludDMyX3QuIik7Ci0gICAgc3RhdGljX2Fzc2VydCgh
KHNwZWNpYWxGYXN0UGF0aEJpdCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhl
c2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNwZWNp
YWxGYXN0UGF0aEJpdCAmIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMg
c2hvdWxkIGludGVyc2VjdC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJp
dCA+IH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3Qg
aW50ZXJzZWN0IGFuZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4i
KTsKKyAgICB2b2lkIHNldE9ic2VydmVkTm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5vbk5l
Z1plcm9Eb3VibGUpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNl
dEJpdChOZWdaZXJvRG91YmxlKTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkg
eyBzZXRCaXQoTm9uTnVtZXJpYyk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50KCkgeyBz
ZXRCaXQoQmlnSW50KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBz
ZXRCaXQoSW50MzJPdmVyZmxvdyk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkSW50NTJPdmVyZmxv
dygpIHsgc2V0Qml0KEludDUyT3ZlcmZsb3cpOyB9CiAKLSAgICBBcml0aFByb2ZpbGUoUmVzdWx0
VHlwZSBhcmcpCi0gICAgICAgIDogQXJpdGhQcm9maWxlKENvbnN0YW50VGFnOjpDb25zdGFudCwg
YXJnKQorICAgIHZvaWQgb2JzZXJ2ZVJlc3VsdChKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKGxoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gYXJnLmJpdHMoKSk7Ci0gICAgICAg
IEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQocmhz
T2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAg
ICAgICAgICAgIG1fYml0cyB8PSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5l
Z1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc0JpZ0ludCgpKSB7CisgICAgICAgICAg
ICBtX2JpdHMgfD0gQmlnSW50OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIG1fYml0cyB8PSBOb25OdW1lcmljOwogICAgIH0KIAotICAgIEFyaXRoUHJvZmlsZShSZXN1
bHRUeXBlIGxocywgUmVzdWx0VHlwZSByaHMpCi0gICAgICAgIDogQXJpdGhQcm9maWxlKENvbnN0
YW50VGFnOjpDb25zdGFudCwgbGhzLCByaHMpCisgICAgY29uc3Qgdm9pZCogYWRkcmVzc09mQml0
cygpIGNvbnN0IHsgcmV0dXJuICZtX2JpdHM7IH0KKworI2lmIEVOQUJMRShKSVQpCisgICAgLy8g
U2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwg
TmVnWmVyb0RvdWJsZSkgaWYgaXQgc2VlcyBhCisgICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWVy
aWMgaWYgaXQgc2VlcyBhIG5vbi1udW1lcmljLgorICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQo
Q0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVn
aXN0ZXJzKTsKKworICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwg
Tm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpLgorICAgIGJvb2wgc2hvdWxkRW1pdFNl
dERvdWJsZSgpIGNvbnN0OworICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBj
b25zdDsKKworICAgIC8vIFNldHMgTm9uTnVtYmVyLgorICAgIHZvaWQgZW1pdFNldE5vbk51bWVy
aWMoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJp
YygpIGNvbnN0OworCisgICAgLy8gU2V0cyBCaWdJbnQKKyAgICB2b2lkIGVtaXRTZXRCaWdJbnQo
Q0NhbGxIZWxwZXJzJikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29u
c3Q7CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRz
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzOyB9CisKK3Byb3RlY3RlZDoKKyAgICBBcml0aFByb2Zp
bGUoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGxoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gbGhz
LmJpdHMoKSAmJiByaHNSZXN1bHRUeXBlKCkuYml0cygpID09IHJocy5iaXRzKCkpOwotICAgICAg
ICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKHJo
c09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQogCi0gICAgQXJpdGhQcm9maWxlKE9w
ZXJhbmRUeXBlcyB0eXBlcykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUodHlwZXMuZmlyc3QoKSwg
dHlwZXMuc2Vjb25kKCkpCi0gICAgeyB9CisgICAgYm9vbCBoYXNCaXRzKGludCBtYXNrKSBjb25z
dCB7IHJldHVybiBtX2JpdHMgJiBtYXNrOyB9CisgICAgdm9pZCBzZXRCaXQoaW50IG1hc2spIHsg
bV9iaXRzIHw9IG1hc2s7IH0KKworICAgIEJpdGZpZWxkVHlwZSBtX2JpdHMgeyAwIH07IC8vIFdl
IHRha2UgY2FyZSB0byB1cGRhdGUgbV9iaXRzIG9ubHkgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLiBX
ZSBkb24ndCBldmVyIHN0b3JlIGFuIGluY29uc2lzdGVudCBiaXQgcmVwcmVzZW50YXRpb24gdG8g
aXQuCit9OworCisvKiBUaGlzIGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMg
aW4gMTYgYml0czoKKyAqIC0gT2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3Ig
dGhlIGFyZ3VtZW50CisgKi8KK3VzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90
OworY2xhc3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJp
dGhQcm9maWxlQmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2
ZWRUeXBlU2hpZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOwogCi0gICAgQXJpdGhQ
cm9maWxlKCkgPSBkZWZhdWx0OworICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hp
ZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9m
aWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5n
IGJpdGZpZWxkLiIpOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgZnJvbUlu
dCh1aW50MzJfdCBiaXRzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVC
YXNlIGNsZWFyQXJnT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PFVuYXJ5QXJpdGhQ
cm9maWxlQmFzZT4ofigwYjExMSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdCkpOworCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgx
IDw8IE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgVW5h
cnlBcml0aFByb2ZpbGUoKQorICAgICAgICA6IEFyaXRoUHJvZmlsZTxVbmFyeUFyaXRoUHJvZmls
ZUJhc2U+KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBBcml0aFByb2ZpbGUgeyBDb25zdGFudFRh
Zzo6Q29uc3RhbnQsIGJpdHMgfTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlz
RW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChhcmdPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkVW5hcnlJ
bnQoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVk
SW50Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVk
SW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIg
dWludDMyX3QgYml0cyA9IG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNo
aWZ0OwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHg4MDAwMDAsICIiKTsKLSAgICAg
ICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJv
ZmlsZUJhc2UgYml0cyA9IG9ic2VydmVkSW50MzIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNo
aWZ0OworICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBB
cml0aFByb2ZpbGUgb2JzZXJ2ZWRVbmFyeU51bWJlcigpCisgICAgc3RhdGljIGNvbnN0ZXhwciBV
bmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWROdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAg
IGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53
aXRoTnVtYmVyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSBvYnNlcnZl
ZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoYml0cyA9PSAweDEwMDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0
cyk7CisgICAgICAgIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IG9ic2Vy
dmVkTnVtYmVyLmJpdHMoKSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdDsKKyAgICAgICAgcmV0dXJu
IGJpdHM7CisgICAgfQorCisgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBhcmdPYnNlcnZlZFR5
cGUoKSBjb25zdCB7IHJldHVybiBPYnNlcnZlZFR5cGUoKG1fYml0cyA+PiBhcmdPYnNlcnZlZFR5
cGVTaGlmdCkgJiBvYnNlcnZlZFR5cGVNYXNrKTsgfQorICAgIHZvaWQgc2V0QXJnT2JzZXJ2ZWRU
eXBlKE9ic2VydmVkVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGVC
YXNlIGJpdHMgPSBtX2JpdHM7CisgICAgICAgIGJpdHMgJj0gY2xlYXJBcmdPYnNlcnZlZFR5cGVC
aXRNYXNrOworICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNo
aWZ0OworICAgICAgICBtX2JpdHMgPSBiaXRzOworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRU
eXBlKCkgPT0gdHlwZSk7CisgICAgfQorCisgICAgdm9pZCBhcmdTYXdJbnQzMigpIHsgc2V0QXJn
T2JzZXJ2ZWRUeXBlKGFyZ09ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpKTsgfQorICAgIHZvaWQg
YXJnU2F3TnVtYmVyKCkgeyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0
aE51bWJlcigpKTsgfQorICAgIHZvaWQgYXJnU2F3Tm9uTnVtYmVyKCkgeyBzZXRBcmdPYnNlcnZl
ZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0aE5vbk51bWJlcigpKTsgfQorCisgICAgdm9pZCBv
YnNlcnZlQXJnKEpTVmFsdWUgYXJnKQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUg
bmV3UHJvZmlsZSA9ICp0aGlzOworICAgICAgICBpZiAoYXJnLmlzTnVtYmVyKCkpIHsKKyAgICAg
ICAgICAgIGlmIChhcmcuaXNJbnQzMigpKQorICAgICAgICAgICAgICAgIG5ld1Byb2ZpbGUuYXJn
U2F3SW50MzIoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdQcm9maWxl
LmFyZ1Nhd051bWJlcigpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5ld1Byb2ZpbGUu
YXJnU2F3Tm9uTnVtYmVyKCk7CisKKyAgICAgICAgbV9iaXRzID0gbmV3UHJvZmlsZS5iaXRzKCk7
CisgICAgfQorCisgICAgYm9vbCBpc09ic2VydmVkVHlwZUVtcHR5KCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhcmdPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7CisgICAgfQorCisgICAgZnJpZW5k
IGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworfTsKKworLyogVGhpcyBjbGFzcyBz
dG9yZXMgdGhlIGZvbGxvd2luZyBjb21wb25lbnRzIGluIDE2IGJpdHM6CisgKiAtIE9ic2VydmVk
UmVzdWx0cworICogLSBPYnNlcnZlZFR5cGUgZm9yIHJpZ2h0LWhhbmQtc2lkZQorICogLSBPYnNl
cnZlZFR5cGUgZm9yIGxlZnQtaGFuZC1zaWRlCisgKiAtIGEgYml0IHVzZWQgYnkgZGl2aXNpb24g
dG8gaW5kaWNhdGUgd2hldGhlciBhIHNwZWNpYWwgZmFzdCBwYXRoIHdhcyB0YWtlbgorICovCit1
c2luZyBCaW5hcnlBcml0aFByb2ZpbGVCYXNlID0gdWludDE2X3Q7CitjbGFzcyBCaW5hcnlBcml0
aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+IHsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHJoc09ic2VydmVkVHlwZVNoaWZ0ID0gb2Jz
ZXJ2ZWRSZXN1bHRzTnVtQml0c05lZWRlZDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IGxoc09ic2VydmVkVHlwZVNoaWZ0ID0gcmhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5
cGU6Om51bUJpdHNOZWVkZWQ7CisKKyAgICBzdGF0aWNfYXNzZXJ0KE9ic2VydmVkVHlwZTo6bnVt
Qml0c05lZWRlZCA9PSAzLCAiV2UgbWFrZSBhIGhhcmQgYXNzdW1wdGlvbiBhYm91dCB0aGF0IGhl
cmUuIik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFy
UmhzT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PEJpbmFyeUFyaXRoUHJvZmlsZUJh
c2U+KH4oMGIxMTEgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpKTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0g
c3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigwYjExMSA8PCBsaHNPYnNlcnZl
ZFR5cGVTaGlmdCkpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVC
YXNlIG9ic2VydmVkVHlwZU1hc2sgPSAoMSA8PCBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQp
IC0gMTsKKworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBzcGVjaWFsRmFzdFBhdGhCaXQgPSAxIDw8IChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCk7CisgICAgc3RhdGljX2Fzc2VydCgobGhzT2JzZXJ2
ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgKyAxKSA8PSBzaXplb2Yo
QmluYXJ5QXJpdGhQcm9maWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHVpbnQzMl90LiIp
OworICAgIHN0YXRpY19hc3NlcnQoIShzcGVjaWFsRmFzdFBhdGhCaXQgJiB+Y2xlYXJMaHNPYnNl
cnZlZFR5cGVCaXRNYXNrKSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QuIik7Cisg
ICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFzdFBhdGhCaXQgJiBjbGVhckxoc09ic2VydmVkVHlw
ZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBpbnRlcnNlY3QuIik7CisgICAgc3RhdGljX2Fz
c2VydChzcGVjaWFsRmFzdFBhdGhCaXQgPiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAi
VGhlc2UgYml0cyBzaG91bGQgbm90IGludGVyc2VjdCBhbmQgc3BlY2lhbEZhc3RQYXRoQml0IHNo
b3VsZCBiZSBhIGhpZ2hlciBiaXQuIik7CisKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUoKQorICAg
ICAgICA6IEFyaXRoUHJvZmlsZTxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPiAoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VS
VChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3Rl
eHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZEJpbmFyeUludEludCgpCisKKyAgICBzdGF0aWMgY29u
c3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRJbnRJbnRCaXRzKCkKICAgICB7
CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVk
VHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0g
KG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZl
ZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoYml0cyA9PSAweDkwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRz
KTsKKyAgICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNl
cnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQz
Mi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsK
ICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlO
dW1iZXJJbnQoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBv
YnNlcnZlZE51bWJlckludEJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVk
VHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwogICAg
ICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUo
KS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNl
cnZlZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkSW50
MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChiaXRzID09IDB4MTEwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsK
KyAgICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNlcnZl
ZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkSW50MzIu
Yml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAg
ICAgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5SW50
TnVtYmVyKCkKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2Jz
ZXJ2ZWRJbnROdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5
cGUgb2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkgfTsKICAgICAg
ICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsgT2JzZXJ2ZWRUeXBlKCku
d2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2
ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVy
LmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
Yml0cyA9PSAweGEwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAg
ICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNlcnZlZElu
dDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1iZXIuYml0
cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAg
fQotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5TnVtYmVy
TnVtYmVyKCkKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2Jz
ZXJ2ZWROdW1iZXJOdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZl
ZFR5cGUgb2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkgfTsKLSAg
ICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8
IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMjAwMDAw
LCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIg
QmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBs
aHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2Vy
dmVkVHlwZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQogCi0gICAgZW51bSBP
YnNlcnZlZFJlc3VsdHMgewotICAgICAgICBOb25OZWdaZXJvRG91YmxlID0gMSA8PCAwLAotICAg
ICAgICBOZWdaZXJvRG91YmxlICAgID0gMSA8PCAxLAotICAgICAgICBOb25OdW1lcmljICAgICAg
ID0gMSA8PCAyLAotICAgICAgICBJbnQzMk92ZXJmbG93ICAgID0gMSA8PCAzLAotICAgICAgICBJ
bnQ1Mk92ZXJmbG93ICAgID0gMSA8PCA0LAotICAgICAgICBCaWdJbnQgICAgICAgICAgID0gMSA8
PCA1LAotICAgIH07Ci0KLSAgICBSZXN1bHRUeXBlIGxoc1Jlc3VsdFR5cGUoKSBjb25zdCB7IHJl
dHVybiBSZXN1bHRUeXBlKChtX2JpdHMgPj4gbGhzUmVzdWx0VHlwZVNoaWZ0KSAmIHJlc3VsdFR5
cGVNYXNrKTsgfQotICAgIFJlc3VsdFR5cGUgcmhzUmVzdWx0VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IFJlc3VsdFR5cGUoKG1fYml0cyA+PiByaHNSZXN1bHRUeXBlU2hpZnQpICYgcmVzdWx0VHlwZU1h
c2spOyB9Ci0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGxoc09ic2VydmVkVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGxoc09ic2VydmVkVHlwZVNoaWZ0
KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSByaHNP
YnNlcnZlZFR5cGUoKSBjb25zdCB7IHJldHVybiBPYnNlcnZlZFR5cGUoKG1fYml0cyA+PiByaHNP
YnNlcnZlZFR5cGVTaGlmdCkgJiBvYnNlcnZlZFR5cGVNYXNrKTsgfQogICAgIHZvaWQgc2V0TGhz
T2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgdWludDMyX3Qg
Yml0cyA9IG1fYml0czsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gbV9i
aXRzOwogICAgICAgICBiaXRzICY9IGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzazsKICAgICAg
ICAgYml0cyB8PSB0eXBlLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKICAgICAgICAg
bV9iaXRzID0gYml0czsKQEAgLTE4Nyw3ICsyODUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dFJoc09ic2VydmVkVHlwZShPYnNlcnZlZFR5cGUgdHlwZSkKICAgICB7IAotICAgICAgICB1aW50
MzJfdCBiaXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMg
PSBtX2JpdHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrOwog
ICAgICAgICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0OwogICAg
ICAgICBtX2JpdHMgPSBiaXRzOwpAQCAtMTk2LDM5ICsyOTQsNiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHRvb2tTcGVjaWFsRmFzdFBhdGgoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBzcGVjaWFs
RmFzdFBhdGhCaXQ7IH0KIAotICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgY29uc3QgeyBy
ZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51bWVy
aWMgfCBCaWdJbnQpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlRG91YmxlKCkgY29uc3QgeyByZXR1
cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29s
IGRpZE9ic2VydmVOb25OZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25O
ZWdaZXJvRG91YmxlKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSBjb25z
dCB7IHJldHVybiBoYXNCaXRzKE5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZl
Tm9uTnVtZXJpYygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTnVtZXJpYyk7IH0KLSAgICBi
b29sIGRpZE9ic2VydmVCaWdJbnQoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEJpZ0ludCk7IH0K
LSAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gaGFzQml0
cyhJbnQzMk92ZXJmbG93KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSBj
b25zdCB7IHJldHVybiBoYXNCaXRzKEludDUyT3ZlcmZsb3cpOyB9Ci0KLSAgICB2b2lkIHNldE9i
c2VydmVkTm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0g
ICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChOZWdaZXJvRG91Ymxl
KTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoTm9uTnVtZXJp
Yyk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50KCkgeyBzZXRCaXQoQmlnSW50KTsgfQot
ICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQoSW50MzJPdmVyZmxv
dyk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkSW50NTJPdmVyZmxvdygpIHsgc2V0Qml0KEludDUy
T3ZlcmZsb3cpOyB9Ci0KLSAgICBjb25zdCB2b2lkKiBhZGRyZXNzT2ZCaXRzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fYml0czsgfQotCi0gICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUp
Ci0gICAgewotICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9
IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1pl
cm9Eb3VibGU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHZh
bHVlICYmIHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9iaXRzIHw9IE5vbk51
bWVyaWM7Ci0gICAgfQotCiAgICAgdm9pZCBsaHNTYXdJbnQzMigpIHsgc2V0TGhzT2JzZXJ2ZWRU
eXBlKGxoc09ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpKTsgfQogICAgIHZvaWQgbGhzU2F3TnVt
YmVyKCkgeyBzZXRMaHNPYnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigp
KTsgfQogICAgIHZvaWQgbGhzU2F3Tm9uTnVtYmVyKCkgeyBzZXRMaHNPYnNlcnZlZFR5cGUobGhz
T2JzZXJ2ZWRUeXBlKCkud2l0aE5vbk51bWJlcigpKTsgfQpAQCAtMjM4LDcgKzMwMyw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgb2JzZXJ2ZUxIUyhKU1ZhbHVlIGxocykKICAgICB7Ci0gICAgICAg
IEFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CiAgICAgICAgIGlmIChsaHMuaXNOdW1iZXIoKSkgewog
ICAgICAgICAgICAgaWYgKGxocy5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmls
ZS5saHNTYXdJbnQzMigpOwpAQCAtMjU0LDcgKzMxOSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIG9ic2VydmVMSFMobGhzKTsKIAotICAgICAgICBBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9
ICp0aGlzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlzOwog
ICAgICAgICBpZiAocmhzLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIGlmIChyaHMuaXNJbnQz
MigpKQogICAgICAgICAgICAgICAgIG5ld1Byb2ZpbGUucmhzU2F3SW50MzIoKTsKQEAgLTI2Niw0
NyArMzMxLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRzID0gbmV3UHJvZmlsZS5iaXRzKCk7
CiAgICAgfQogCi0jaWYgRU5BQkxFKEpJVCkgICAgCi0gICAgLy8gU2V0cyAoSW50MzJPdmVyZmxv
dyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYg
aXQgc2VlcyBhCi0gICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWVyaWMgaWYgaXQgc2VlcyBhIG5v
bi1udW1lcmljLgotICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNW
YWx1ZVJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKLSAgICAKLSAg
ICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3Vi
bGUgfCBOZWdaZXJvRG91YmxlKS4KLSAgICBib29sIHNob3VsZEVtaXRTZXREb3VibGUoKSBjb25z
dDsKLSAgICB2b2lkIGVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJikgY29uc3Q7Ci0gICAgCi0g
ICAgLy8gU2V0cyBOb25OdW1iZXIuCi0gICAgdm9pZCBlbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhl
bHBlcnMmKSBjb25zdDsKLSAgICBib29sIHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3Q7
Ci0KLSAgICAvLyBTZXRzIEJpZ0ludAotICAgIHZvaWQgZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBl
cnMmKSBjb25zdDsKLSAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdDsKLSNlbmRp
ZiAvLyBFTkFCTEUoSklUKQotCi0gICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMoKSBjb25zdCB7
IHJldHVybiBtX2JpdHM7IH0KLQotcHJpdmF0ZToKLSAgICBjb25zdGV4cHIgZXhwbGljaXQgQXJp
dGhQcm9maWxlKENvbnN0YW50VGFnLCB1aW50MzJfdCBiaXRzKQotICAgICAgICA6IG1fYml0cyhi
aXRzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgQXJpdGhQcm9maWxlKENvbnN0YW50
VGFnLCBSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBtX2JpdHMoYXJnLmJpdHMoKSA8PCBsaHNS
ZXN1bHRUeXBlU2hpZnQpCisgICAgYm9vbCBpc09ic2VydmVkVHlwZUVtcHR5KCkKICAgICB7Cisg
ICAgICAgIHJldHVybiBsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkgJiYgcmhzT2JzZXJ2ZWRU
eXBlKCkuaXNFbXB0eSgpOwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUoQ29u
c3RhbnRUYWcsIFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBtX2Jp
dHMoKGxocy5iaXRzKCkgPDwgbGhzUmVzdWx0VHlwZVNoaWZ0KSB8IChyaHMuYml0cygpIDw8IHJo
c1Jlc3VsdFR5cGVTaGlmdCkpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaGFzQml0cyhpbnQg
bWFzaykgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgbWFzazsgfQotICAgIHZvaWQgc2V0Qml0KGlu
dCBtYXNrKSB7IG1fYml0cyB8PSBtYXNrOyB9Ci0KLSAgICB1aW50MzJfdCBtX2JpdHMgeyAwIH07
IC8vIFdlIHRha2UgY2FyZSB0byB1cGRhdGUgbV9iaXRzIG9ubHkgaW4gYSBzaW5nbGUgb3BlcmF0
aW9uLiBXZSBkb24ndCBldmVyIHN0b3JlIGFuIGluY29uc2lzdGVudCBiaXQgcmVwcmVzZW50YXRp
b24gdG8gaXQuCi0KICAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7
CiB9OwogCkBAIC0zMTQsNyArMzQzLDggQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIFdURiB7CiAK
LXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6QXJpdGhQcm9maWxl
Jik7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6OlVuYXJ5QXJp
dGhQcm9maWxlJik7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6
OkJpbmFyeUFyaXRoUHJvZmlsZSYpOwogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
Y29uc3QgSlNDOjpPYnNlcnZlZFR5cGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAzNGMxNTJh
MGQ2Ni4uZTEzZDQ2YmU3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgpAQCAtNDEsNiArNDEsNyBAQCB0eXBlcyBbCiAgICAgOkpTVHlwZSwK
ICAgICA6SlNWYWx1ZSwKICAgICA6TExJbnRDYWxsTGlua0luZm8sCisgICAgOlJlc3VsdFR5cGUs
CiAgICAgOk9wZXJhbmRUeXBlcywKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAg
OlByb3BlcnR5T2Zmc2V0LApAQCAtNTgsNyArNTksOCBAQCB0eXBlcyBbCiAKICAgICA6VmFsdWVQ
cm9maWxlLAogICAgIDpWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyLAotICAgIDpBcml0aFBy
b2ZpbGUsCisgICAgOlVuYXJ5QXJpdGhQcm9maWxlLAorICAgIDpCaW5hcnlBcml0aFByb2ZpbGUs
CiAgICAgOkFycmF5UHJvZmlsZSwKICAgICA6QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSwKICAgICA6
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUsCkBAIC0yNzksMTAgKzI4MSw3IEBAIG9wX2dyb3VwIDpQ
cm9maWxlZEJpbmFyeU9wLAogICAgICAgICBvcGVyYW5kVHlwZXM6IE9wZXJhbmRUeXBlcywKICAg
ICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFyaXRoUHJvZmlsZTogQXJpdGhQcm9maWxl
Ci0gICAgfSwKLSAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6IHsKLSAgICAgICAgYXJpdGhQcm9m
aWxlOiA6b3BlcmFuZFR5cGVzCisgICAgICAgIGFyaXRoUHJvZmlsZTogQmluYXJ5QXJpdGhQcm9m
aWxlCiAgICAgfQogCiBvcF9ncm91cCA6VmFsdWVQcm9maWxlZEJpbmFyeU9wLApAQCAtMzY0LDEz
ICszNjMsMTAgQEAgb3AgOm5lZ2F0ZSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVh
bFJlZ2lzdGVyLAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIG9w
ZXJhbmRUeXBlczogT3BlcmFuZFR5cGVzLAorICAgICAgICByZXN1bHRUeXBlOiBSZXN1bHRUeXBl
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0aFBy
b2ZpbGUsCi0gICAgfSwKLSAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6IHsKLSAgICAgICAgYXJp
dGhQcm9maWxlOiA6b3BlcmFuZFR5cGVzCisgICAgICAgIGFyaXRoUHJvZmlsZTogVW5hcnlBcml0
aFByb2ZpbGUsCiAgICAgfQogCiBvcCA6bm90LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwZjhlN2Y4YjRmOS4uNjgxZGZjOWVjOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNDc5LDI1
ICsxNDc5LDI1IEBAIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmFkZFN0dWJJbmZvKEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSkKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1f
c3R1YkluZm9zLmFkZChhY2Nlc3NUeXBlKTsKIH0KIAotSklUQWRkSUMqIENvZGVCbG9jazo6YWRk
SklUQWRkSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRBZGRJQyogQ29kZUJsb2Nr
OjphZGRKSVRBZGRJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJuIGVuc3VyZUpJVERh
dGEobG9ja2VyKS5tX2FkZElDcy5hZGQoYXJpdGhQcm9maWxlKTsKIH0KIAotSklUTXVsSUMqIENv
ZGVCbG9jazo6YWRkSklUTXVsSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNdWxJ
QyogQ29kZUJsb2NrOjphZGRKSVRNdWxJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJu
IGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX211bElDcy5hZGQoYXJpdGhQcm9maWxlKTsKIH0KIAot
SklUU3ViSUMqIENvZGVCbG9jazo6YWRkSklUU3ViSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCitKSVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CiAgICAgcmV0dXJuIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX3N1YklDcy5hZGQoYXJpdGhQcm9m
aWxlKTsKIH0KIAotSklUTmVnSUMqIENvZGVCbG9jazo6YWRkSklUTmVnSUMoQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUpCitKSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhVbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbmVnSUNzLmFk
ZChhcml0aFByb2ZpbGUpOwpAQCAtMzA4NCwxNiArMzA4NCwxOSBAQCBjb25zdCBJbnN0cnVjdGlv
biogQ29kZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYykK
ICAgICByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQob2Zmc2V0ICsgdGFyZ2V0KS5wdHIoKTsKIH0K
IAotQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgo
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQorQmluYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxv
Y2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRl
Y29kZUluZGV4KQogewotICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMo
KS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKSk7CisgICAgcmV0dXJuIGJpbmFyeUFy
aXRoUHJvZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkp
LnB0cigpKTsKIH0KIAotQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvclBD
KGNvbnN0IEluc3RydWN0aW9uKiBwYykKK1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVu
YXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXgpCit7CisgICAgcmV0dXJuIHVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCku
YXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCkpOworfQorCitCaW5hcnlBcml0aFByb2Zp
bGUqIENvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjKQogewogICAgIHN3aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKLSAgICBjYXNlIG9wX25lZ2F0
ZToKLSAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEodGhpcykubV9h
cml0aFByb2ZpbGU7CiAgICAgY2FzZSBvcF9hZGQ6CiAgICAgICAgIHJldHVybiAmcGMtPmFzPE9w
QWRkPigpLm1ldGFkYXRhKHRoaXMpLm1fYXJpdGhQcm9maWxlOwogICAgIGNhc2Ugb3BfbXVsOgpA
QCAtMzEwOSwxMSArMzExMiwyMyBAQCBBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9m
aWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQogICAgIHJldHVybiBudWxscHRyOwogfQog
CitVbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNv
bnN0IEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBzd2l0Y2ggKHBjLT5vcGNvZGVJRCgpKSB7Cisg
ICAgY2FzZSBvcF9uZWdhdGU6CisgICAgICAgIHJldHVybiAmcGMtPmFzPE9wTmVnYXRlPigpLm1l
dGFkYXRhKHRoaXMpLm1fYXJpdGhQcm9maWxlOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCiBib29sIENvZGVCbG9jazo6Y291
bGRUYWtlU3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQog
ewogICAgIGlmICghaGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIEFyaXRoUHJvZmlsZSogcHJvZmlsZSA9IGFyaXRoUHJvZmlsZUZvckJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlID0g
YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICBp
ZiAoIXByb2ZpbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcHJvZmlsZS0+
dG9va1NwZWNpYWxGYXN0UGF0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCmluZGV4IGQyYzA2OTgwM2E4Li4xOGU0OGMyNjZhMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODMsNiArODMsOCBAQCBzdHJ1Y3Qg
T1NSRXhpdFN0YXRlOwogfSAvLyBuYW1lc3BhY2UgREZHCiAjZW5kaWYKIAorY2xhc3MgVW5hcnlB
cml0aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlOwpAQCAtOTYsNyArOTgsNiBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsK
IAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OwogCi1zdHJ1Y3QgQXJpdGhQcm9maWxl
Owogc3RydWN0IE9wQ2F0Y2g7CiAKIGVudW0gUmVvcHRpbWl6YXRpb25Nb2RlIHsgRG9udENvdW50
UmVvcHRpbWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRpb24gfTsKQEAgLTI3OSwyMiArMjgwLDIy
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgSklURGF0YSYgZW5zdXJlSklURGF0YVNsb3coY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJik7CiAKLSAgICBKSVRBZGRJQyogYWRkSklUQWRkSUMoQXJpdGhQ
cm9maWxlKik7Ci0gICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEFyaXRoUHJvZmlsZSopOwotICAg
IEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRTdWJJQyogYWRk
SklUU3ViSUMoQXJpdGhQcm9maWxlKik7CisgICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEJpbmFy
eUFyaXRoUHJvZmlsZSopOworICAgIEpJVE11bElDKiBhZGRKSVRNdWxJQyhCaW5hcnlBcml0aFBy
b2ZpbGUqKTsKKyAgICBKSVROZWdJQyogYWRkSklUTmVnSUMoVW5hcnlBcml0aFByb2ZpbGUqKTsK
KyAgICBKSVRTdWJJQyogYWRkSklUU3ViSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CiAKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVEFkZEdlbmVyYXRvcj46OnZhbHVlPjo6
dHlwZT4KLSAgICBKSVRBZGRJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyBy
ZXR1cm4gYWRkSklUQWRkSUMocHJvZmlsZSk7IH0KKyAgICBKSVRBZGRJQyogYWRkTWF0aElDKEJp
bmFyeUFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUQWRkSUMocHJvZmlsZSk7
IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUTXVsR2VuZXJhdG9y
Pjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVE11bElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBw
cm9maWxlKSB7IHJldHVybiBhZGRKSVRNdWxJQyhwcm9maWxlKTsgfQorICAgIEpJVE11bElDKiBh
ZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRNdWxJ
Qyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5h
bWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRO
ZWdHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTmVnSUMqIGFkZE1hdGhJQyhBcml0
aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE5lZ0lDKHByb2ZpbGUpOyB9CisgICAg
SklUTmVnSUMqIGFkZE1hdGhJQyhVbmFyeUFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4g
YWRkSklUTmVnSUMocHJvZmlsZSk7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0
b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVy
YXRvciwgSklUU3ViR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVFN1YklDKiBhZGRN
YXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRTdWJJQyhwcm9maWxl
KTsgfQorICAgIEpJVFN1YklDKiBhZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxl
KSB7IHJldHVybiBhZGRKSVRTdWJJQyhwcm9maWxlKTsgfQogCiAgICAgU3RydWN0dXJlU3R1Yklu
Zm8qIGFkZFN0dWJJbmZvKEFjY2Vzc1R5cGUpOwogCkBAIC00OTcsOCArNDk4LDEwIEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBmb3JFYWNoTExJbnRDYWxsTGlua0luZm8oY29uc3QgRnVuY3RvciYpOwogCi0g
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5k
ZXgpOwotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0
aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKik7Cisg
ICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKIAogICAgIGJvb2wgY291bGRUYWtlU3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNv
ZGVJbmRleCBieXRlY29kZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0
cy5oCmluZGV4IGVkYTI0YmU0Njk1Li41Nzc4OWJjMmM2NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRml0cy5oCkBAIC0yMzUsNiArMjM1LDE4IEBAIHN0cnVjdCBGaXRzPEUsIHNpemUs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2
YWx1CiAgICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8
UmVzdWx0VHlwZSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoUmVzdWx0VHlwZSkgIT0g
c2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZXN1bHRUeXBlKSA9PSBzaXplb2YodWludDhfdCkpOwor
ICAgIHVzaW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgc3RhdGljIGJvb2wg
Y2hlY2soUmVzdWx0VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjaGVjayh0eXBlLmJpdHMoKSk7
IH0KKworICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUmVzdWx0
VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjb252ZXJ0KHR5cGUuYml0cygpKTsgfQorCisgICAg
c3RhdGljIFJlc3VsdFR5cGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIHR5cGUp
IHsgcmV0dXJuIFJlc3VsdFR5cGUoQmFzZTo6Y29udmVydCh0eXBlKSk7IH0KK307CisKIHRlbXBs
YXRlPE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPE9wZXJhbmRUeXBlcywgc2l6ZSwgc3Rk
OjplbmFibGVfaWZfdDxzaXplb2YoT3BlcmFuZFR5cGVzKSAhPSBzaXplLCBzdGQ6OnRydWVfdHlw
ZT4+IHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kVHlwZXMpID09IHNpemVvZih1
aW50MTZfdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDcxMDRkMDFhZTEx
Li4yYjY5ZjM2YzdmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcApAQCAtNjYsMTAg
KzY2LDE2IEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZh
bHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgICAgIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5hcml0
aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0
ZXJzKTsKKyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS51bmFy
eUFyaXRoUHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdS
ZWdpc3RlcnMpOwogICAgICAgICByZXR1cm47Ci0gICAgfSB9CisgICAgfQorCisgICAgY2FzZSBC
aW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+
ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQpAQCAtOTQsMTAgKzEwMCwxNiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBjYXNlIEFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUuYXJpdGhQ
cm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxl
UmVhZHk6IHsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdCh2YWx1
ZSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAgICBjYXNlIEJpbmFyeUFy
aXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5vYnNlcnZl
UmVzdWx0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB9CiAKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKaW5k
ZXggY2ZiODM0NzA2YWYuLjVkODFjNGM5MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgK
QEAgLTM2LDEwICszNiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5hcnlBcml0
aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBDQ2FsbEhlbHBlcnM7
CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTsKLXN0
cnVjdCBBcml0aFByb2ZpbGU7CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiBjbGFzcyBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlIHsKQEAgLTU3LDEyICs1OCwyMSBAQCBwdWJsaWM6CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9Ci0gICAgCi0gICAg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShBcml0aFByb2ZpbGUqIHByb2ZpbGUpCisKKyAg
ICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxl
KQorICAgIHsKKyAgICAgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAgICAgICAgIG1fa2luZCA9IFVu
YXJ5QXJpdGhQcm9maWxlUmVhZHk7CisgICAgICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlID0g
cHJvZmlsZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2tpbmQgPSBOb25lOworICAg
IH0KKworICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoQmluYXJ5QXJpdGhQcm9maWxl
KiBwcm9maWxlKQogICAgIHsKICAgICAgICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgIG1f
a2luZCA9IEFyaXRoUHJvZmlsZVJlYWR5OwotICAgICAgICAgICAgdS5hcml0aFByb2ZpbGUgPSBw
cm9maWxlOworICAgICAgICAgICAgbV9raW5kID0gQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk7Cisg
ICAgICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZSA9IHByb2ZpbGU7CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9CkBAIC03OSw3ICs4OSw4IEBAIHBy
aXZhdGU6CiAgICAgZW51bSBLaW5kIHsKICAgICAgICAgTm9uZSwKICAgICAgICAgUmVhZHksCi0g
ICAgICAgIEFyaXRoUHJvZmlsZVJlYWR5LAorICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZVJlYWR5
LAorICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeSwKICAgICAgICAgTGF6eU9wZXJhbmQK
ICAgICB9OwogICAgIApAQCAtOTAsNyArMTAxLDggQEAgcHJpdmF0ZToKICAgICAgICAgeyB9CiAK
ICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxl
OworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZTsKICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrOwogICAgICAgICAg
ICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZTM4
MzFkMjA5NWYuLmYyYmNlNjJlZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTUxNiwxNCArMTUx
NiwxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgT3BlcmFuZFR5cGVzIHR5cGVzKQorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSB0eXBlKQogewogICAg
IHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX25vdDoKICAgICAgICAgZW1pdFVuYXJ5
T3A8T3BOb3Q+KGRzdCwgc3JjKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9uZWdhdGU6
Ci0gICAgICAgIE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlcyk7CisgICAgICAg
IE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBvcF9iaXRub3Q6CiAgICAgICAgIGVtaXRVbmFyeU9wPE9wQml0bm90Pihkc3QsIHNy
Yyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggODYyY2UxMjQ1YTYuLjIyNTliN2I3Mzk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC02ODIsNyArNjgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gZHN0OwogICAgICAgICB9CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFVuYXJ5T3AoT3Bj
b2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMpOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5hcnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMsIFJlc3VsdFR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEJpbmFyeU9wPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDUyNDY4
ZTFmMmFhLi4wMTA2NGNhZjllZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgUmVnaXN0
ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKgogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBv
c2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
c3JjLmdldCgpLCBPcGVyYW5kVHlwZXMobV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbmFyeU9wKG9wY29kZUlEKCksIGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQoKSwgbV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVW5hcnlQbHVzTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzMzc4YWQwOTJmNi4uOThlNjhl
YzM5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC05NDIsNTYgKzk0Miw2MCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWlzWDg2
KCkgJiYgKG5vZGUtPm9wKCkgPT0gQXJpdGhNb2QgfHwgbm9kZS0+b3AoKSA9PSBWYWx1ZU1vZCkp
CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKIAotICAgICAgICB7Ci0gICAgICAgICAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7Ci0gICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5v
cCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aEFkZDoKLSAgICAgICAgICAgICAgICBj
YXNlIEFyaXRoU3ViOgotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVBZGQ6Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVt
ZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5
SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5t
ZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBjYXNlIFZhbHVlTXVsOgotICAgICAgICAgICAgICAg
IGNhc2UgQXJpdGhNdWw6IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+
ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
Pm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50NTIpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJm
bG93SW50MzJJbkJhc2VsaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmls
ZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQotICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxp
bmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91
YmxlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlI
YXZlRG91YmxlUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+
ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1l
cmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBjYXNlIFZhbHVlTmVnYXRlOgotICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCku
c2F3TnVtYmVyKCkgfHwgYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1pl
cm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQotICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IE92ZXJmbG93KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9k
ZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFy
aXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJl
c3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2UgQXJpdGhBZGQ6CisgICAg
ICAgIGNhc2UgQXJpdGhTdWI6CisgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKKyAgICAgICAgICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVu
dEluZGV4KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgp
KQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1
bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMo
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVtZXJp
Y1Jlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50
KCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJl
c3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZhbHVl
TXVsOgorICAgICAgICBjYXNlIEFyaXRoTXVsOiB7CisgICAgICAgICAgICBCaW5hcnlBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+
YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisgICAg
ICAgICAgICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkpCisgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7CisgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IE92ZXJmbG93KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVy
Zmxvd0ludDMySW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRP
YnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCisgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOworICAgICAgICAg
ICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAg
aWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKKyAgICAgICAgICAgICAg
ICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3VsdCk7CisgICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCisgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZhbHVlTmVnYXRlOgorICAgICAgICBj
YXNlIEFyaXRoTmVnYXRlOiB7CisgICAgICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT51bmFyeUFyaXRoUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFh
cml0aFByb2ZpbGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJp
dGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5v
ZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRp
ZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAgICAgICAg
ICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7CisgICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5s
aW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92
ZXJmbG93KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxv
d0ludDMySW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlTm9uTnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eUhhdmVOb25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRp
ZE9ic2VydmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVN
YXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgp
KSB7CkBAIC0xMDMzLDggKzEwMzcsOCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgLy8g
RklYTUU6IEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIG1ha2UgdGhpcyBtb3JlIGdyYW51bGFyLgog
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGluZSB8
IE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAgIAotICAgICAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisKKyAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5k
ZXgpOwogICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCiAgICAg
ICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCBjYTlmYzM0ZTFkMy4uMWIxYjE5
ODRhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xNjU0LDcg
KzE2NTQsOSBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlRm9yKE5vZGUqIGN1cnJlbgogICAgICAgICAgICAgICAgIHJldHVy
biAmcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmln
aW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpKTsKIAogICAgICAgICAgICAgaWYgKHByb2ZpbGVk
QmxvY2stPmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
QXJpdGhQcm9maWxlKiByZXN1bHQgPSBwcm9maWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRl
Y29kZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAg
ICAgICAgICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2st
PmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICAgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiByZXN1bHQgPSBwcm9maWxlZEJs
b2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFu
dGljLmJ5dGVjb2RlSW5kZXgoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNGY3OGE2ZDE0NWQuLjJiOTY1NGQ0ODA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtMzk5NSw3ICszOTk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRk
KE5vZGUqIG5vZGUpCiAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQu
Z3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAg
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5i
aW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJ
VEFkZElDKiBhZGRJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRBZGRJQyhhcml0aFByb2Zp
bGUpOwogICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGRPcHRp
bWl6ZTsKICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRk
OwpAQCAtNDAxOSw3ICs0MDE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
U3ViKE5vZGUqIG5vZGUpCiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9
IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNl
bWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRl
Y29kZUluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBi
YXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRl
Y29kZUluZGV4KTsKICAgICAgICAgSklUU3ViSUMqIHN1YklDID0gbV9qaXQuY29kZUJsb2NrKCkt
PmFkZEpJVFN1YklDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNo
aW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKQEAgLTQ2MTMsNyArNDYxMyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZShOb2RlKiBub2RlKQogewogICAg
IENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29k
ZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRl
Y29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2Zp
bGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIFVuYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JC
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJVE5lZ0lDKiBuZWdJQyA9IG1faml0
LmNvZGVCbG9jaygpLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIGF1dG8gcmVwYXRj
aGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZTsKICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlOwpAQCAtNDgzNiw3ICs0
ODM2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUp
CiAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNl
bGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7
Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFBy
b2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJVE11bElDKiBtdWxJ
QyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUpOwogICAgIGF1
dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICBh
dXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDVkNDhjMGIwY2I5
Li4zN2YwYTk2MDBmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcApAQCAtMjExNiw3ICsyMTE2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBDb2Rl
QmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVC
bG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsK
LSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+
YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICAgICAgYXV0
byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplOwogICAgICAg
ICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkOwogICAgICAg
ICBjb21waWxlQmluYXJ5TWF0aElDPEpJVEFkZEdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBh
dGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTM3LDcgKzIxMzcs
NyBAQCBwcml2YXRlOgogCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBt
X2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmln
aW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4
KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4
KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlU3ViT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9u
ID0gb3BlcmF0aW9uVmFsdWVTdWI7CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUU3Vi
R2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGlu
Z0Z1bmN0aW9uKTsKQEAgLTIxNTgsNyArMjE1OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2Rl
QmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7
Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2st
PmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1
dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICAg
ICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bDsKICAgICAg
ICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRNdWxHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVw
YXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE2Niw3ICsyMTY2
LDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVu
YW1lIEZ1bmMxLCB0eXBlbmFtZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJs
ZV9pZl90PHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5j
MT46OnR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X3BvaW50ZXI8RnVuYzI+Ojp0eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZVVuYXJ5TWF0
aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24s
IEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKKyAgICB2b2lkIGNvbXBpbGVVbmFyeU1hdGhJ
QyhVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rp
b24sIEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5v
ZGUgPSBtX25vZGU7CiAKQEAgLTIyNTIsNyArMjI1Miw3IEBAIHByaXZhdGU6CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBGdW5jMSwgdHlwZW5hbWUgRnVuYzIs
CiAgICAgICAgIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Z1bmN0aW9uPHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzE+Ojp0eXBlPjo6dmFsdWUgJiYgc3RkOjpp
c19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmMyPjo6dHlwZT46OnZh
bHVlPj4KLSAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uKQorICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNoaW5n
RnVuY3Rpb24pCiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICAK
QEAgLTI0MjEsNyArMjQyMSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAg
ICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2st
PmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5i
aW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAg
ICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXpl
OwogICAgICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZVN1YjsKICAgICAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPihh
cml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsK
QEAgLTMwOTksNyArMzA5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAg
ICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFz
ZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29k
ZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVD
b2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7Cisg
ICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9j
ay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1p
emU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhO
ZWdhdGU7CiAgICAgICAgIGNvbXBpbGVVbmFyeU1hdGhJQzxKSVROZWdHZW5lcmF0b3I+KGFyaXRo
UHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggYjVlZmUyNjgwNDYuLjJiNGE1ZDY0YmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKQEAgLTkxOSw3ICs5MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgLy8gSXQgd2lsbCBnaXZlIHRoZSBzbG93IHBhdGggdGhlIHNhbWUgdmFsdWUgcmVhZCBi
eSB0aGUgZmFzdCBwYXRoLgogICAgICAgICBHZXRQdXRJbmZvIGNvcGllZEdldFB1dEluZm8oT3BQ
dXRUb1Njb3BlKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+Ci0gICAgICAg
IEFyaXRoUHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOworICAgICAgICBCaW5h
cnlBcml0aFByb2ZpbGUgY29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wKTsKIAogICAgICAgICBJ
bnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsKIApAQCAtOTM5LDcgKzkzOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBWZWN0b3I8U3dpdGNoUmVjb3JkPiBtX3N3aXRjaGVzOwogCiAgICAg
ICAgIEhhc2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkPiBtX2NvcGllZEdldFB1dEluZm9zOwotICAg
ICAgICBIYXNoTWFwPHVpbnQ2NF90LCBBcml0aFByb2ZpbGU+IG1fY29waWVkQXJpdGhQcm9maWxl
czsKKyAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwgQmluYXJ5QXJpdGhQcm9maWxlPiBtX2NvcGll
ZEFyaXRoUHJvZmlsZXM7CiAKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3M7CiAg
ICAgICAgIEp1bXBMaXN0IG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCmluZGV4IDYy
N2FmMjc4N2UwLi43NDBiMmVkOGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQWRkR2VuZXJhdG9yLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUo
Q0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdl
bmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRU
eXBlIGxocyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtNzMsNyArNzMsNyBAQCBK
SVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2Fs
bEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6
OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3Qg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jv
b2wgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BS
ICE9IEludmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBh
eWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFk
ZEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3Iu
aAppbmRleCA0ZGMzNGEyZjViNi4uNjc1Y2Y5M2M5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVCghbV9sZWZ0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9wZXJh
bmQuaXNDb25zdEludDMyKCkpOwogICAgIH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBn
ZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25z
dCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxk
RW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEJpbmFyeUFyaXRo
UHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYg
c2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRF
bWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0
YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5pc1Bv
c2l0aXZlQ29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxp
ZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRPcGVy
YW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IGFjMzcyYzlmYmUwLi5iYjYzNWY4ZTc2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NTMsNyArNDUz
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVnYXRlPigpLm1l
dGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBVbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0
YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE5lZ0lDKiBuZWdhdGVJ
QyA9IG1fY29kZUJsb2NrLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1
Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBuZWdhdGVJQyk7CiAgICAgZW1p
dE1hdGhJQ0Zhc3Q8T3BOZWdhdGU+KG5lZ2F0ZUlDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRlKTsKQEAgLTYzNCwx
NCArNjM0LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdXJzaGlmdChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY3VycmVudElu
c3RydWN0aW9uLCBvcF91cnNoaWZ0KTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgT3BlcmFu
ZFR5cGVzIGdldE9wZXJhbmRUeXBlcyhjb25zdCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkK
LXsKLSAgICByZXR1cm4gT3BlcmFuZFR5cGVzKGFyaXRoUHJvZmlsZS5saHNSZXN1bHRUeXBlKCks
IGFyaXRoUHJvZmlsZS5yaHNSZXN1bHRUeXBlKCkpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9h
ZGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQWRkPigpLm1l
dGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQWRkPigpLm1ldGFk
YXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVRBZGRJQyogYWRkSUMgPSBt
X2NvZGVCbG9jay0+YWRkSklUQWRkSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9u
VG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYWRkSUMpOwogICAgIGVtaXRNYXRoSUNG
YXN0PE9wQWRkPihhZGRJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZUFkZFBy
b2ZpbGVkLCBvcGVyYXRpb25WYWx1ZUFkZCk7CkBAIC02ODYsNyArNjgxLDcgQEAgdm9pZCBKSVQ6
OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGMKIAogICAgIGJvb2wgZ2VuZXJhdGVkSW5saW5lQ29kZSA9IG1hdGhJQy0+
Z2VuZXJhdGVJbmxpbmUoKnRoaXMsIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSk7CiAgICAgaWYgKCFn
ZW5lcmF0ZWRJbmxpbmVDb2RlKSB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bldpdGhSZXN1bHQocHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBzcmNSZWdzLCBhcml0aFByb2ZpbGUpOwogICAg
ICAgICBlbHNlCkBAIC03MDksNyArNzA0LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBl
bmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE4KIHZv
aWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElD
LCBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9u
IHByb2ZpbGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlv
bikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsK
LSAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY29waWVkQXJpdGhQcm9m
aWxlKGJ5dGVjb2RlKSk7CiAgICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgp
OwogICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0g
Ynl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CkBAIC03MjgsOCArNzIyLDggQEAgdm9pZCBKSVQ6OmVt
aXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IElu
c3RydWN0aW9uKgogICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gZnBSZWdUMjsKICNlbmRpZgogCi0g
ICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMuZmlyc3QoKSk7Ci0gICAgU25pcHBl
dE9wZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgpKTsKKyAgICBTbmlwcGV0T3BlcmFu
ZCBsZWZ0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5maXJzdCgpKTsKKyAgICBTbmlw
cGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuc2Vjb25kKCkp
OwogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkpCiAgICAgICAgIGxlZnRPcGVy
YW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSkpOwpAQCAtNzU5LDcg
Kzc1Myw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJh
dG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIob3AxLCBsZWZ0UmVncyk7CiAgICAgICAgIGVsc2UgaWYgKHJpZ2h0T3BlcmFu
ZC5pc0NvbnN0KCkpCiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmln
aHRSZWdzKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFy
aXRoUHJvZmlsZSgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9
IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hv
dWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQo
cHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBhcml0aFByb2ZpbGUpOwogICAg
ICAgICBlbHNlCkBAIC03OTksNyArNzkzLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJ
VFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGMKICAg
ICBhdXRvIHNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogI2VuZGlmCiAKLSAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgVW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgaWYg
KGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgaWYgKG1h
dGhJQ0dlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCiAgICAgICAgICAgICBt
YXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbldpdGhSZXN1
bHQocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HSk1pYz4ocHJvZmlsZWRSZXBhdGNo
RnVuY3Rpb24pLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIHNyY1JlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElDKSk7CkBAIC04MzEsNyArODI1
LDYgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5z
bG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRU
eXBlcyhjb3BpZWRBcml0aFByb2ZpbGUoYnl0ZWNvZGUpKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0
ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNl
dCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKQEAgLTg0Niw4ICs4
MzksOCBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRv
cj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IGxlZnRSZWdzOwogI2VuZGlmCiAgICAgCi0gICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJh
bmQodHlwZXMuZmlyc3QoKSk7Ci0gICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVz
LnNlY29uZCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChieXRlY29kZS5tX29w
ZXJhbmRUeXBlcy5maXJzdCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYnl0
ZWNvZGUubV9vcGVyYW5kVHlwZXMuc2Vjb25kKCkpOwogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0
YW50SW50KG9wMSkpCiAgICAgICAgIGxlZnRPcGVyYW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFu
ZENvbnN0YW50SW50KG9wMSkpOwpAQCAtODY1LDcgKzg1OCw3IEBAIHZvaWQgSklUOjplbWl0TWF0
aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVj
dGlvbioKICAgICBhdXRvIHNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogI2VuZGlmCiAKLSAgICBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAg
QmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgp
OwogICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAg
ICAgIGlmIChtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2hvdWxkU2xvd1BhdGhSZXBhdGNoKQogICAg
ICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b25XaXRoUmVzdWx0KGJpdHdpc2VfY2FzdDxKX0pJVE9wZXJhdGlvbl9HSkpNaWM+KHByb2ZpbGVk
UmVwYXRjaEZ1bmN0aW9uKSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJ
QykpOwpAQCAtODkzLDE5ICs4ODYsMTYgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJp
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogdm9pZCBK
SVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEaXY+KCk7Ci0g
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAg
aW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGludCBvcDEgPSBieXRl
Y29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0
KCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9w
ZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVm
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0g
SlNWYWx1ZVJlZ3MocmVnVDEpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVn
czsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1QyOwogI2Vsc2UKLSAgICBPcGVyYW5kVHlw
ZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMobWV0YWRhdGEubV9hcml0aFByb2ZpbGUpOwogICAg
IEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBK
U1ZhbHVlUmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpOwogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKQEAgLTkxMywxMiArOTAzLDEyIEBAIHZv
aWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogI2VuZGlmCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogCi0gICAgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gbnVsbHB0cjsKICAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQog
ICAgICAgICBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcERpdj4oKS5t
ZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAKLSAgICBTbmlwcGV0T3BlcmFu
ZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9w
ZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5
dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0
T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQz
MihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC05NjAsNyArOTUwLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAK
IHZvaWQgSklUOjplbWl0X29wX211bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwor
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAg
IEpJVE11bElDKiBtdWxJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUp
OwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBtdWxJ
Qyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BNdWw+KG11bElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlTXVsKTsKQEAgLTk3Niw3
ICs5NjYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9z
dWIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1l
dGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1ldGFk
YXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVRTdWJJQyogc3ViSUMgPSBt
X2NvZGVCbG9jay0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9u
VG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgc3ViSUMpOwogICAgIGVtaXRNYXRoSUNG
YXN0PE9wU3ViPihzdWJJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZVN1YlBy
b2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1Yik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVERpdkdlbmVyYXRvci5jcHAKaW5kZXggNjZlMWJlMTRhOGQuLmI4YzQ3OTg2ZmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCkBAIC0xMzAs
NyArMTMwLDcgQEAgdm9pZCBKSVREaXZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxI
ZWxwZXJzJiBqaXQpCiAgICAgbm90RG91YmxlWmVyby5saW5rKCZqaXQpOwogI2VuZGlmCiAgICAg
aWYgKG1fYXJpdGhQcm9maWxlKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihBcml0aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6
QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAg
ICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxl
OjpzcGVjaWFsRmFzdFBhdGhCaXQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhtX2Fy
aXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAgICAgaml0LmJveERvdWJsZShtX2xlZnRG
UFIsIG1fcmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVREaXZHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2Vu
ZXJhdG9yLmgKaW5kZXggODM5NjY3Nzk0M2YuLjcwOGRiMTBkNmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogICAgIEpJVERpdkdlbmVyYXRvcihTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCwgU25pcHBl
dE9wZXJhbmQgcmlnaHRPcGVyYW5kLAogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQsIEpTVmFs
dWVSZWdzIGxlZnQsIEpTVmFsdWVSZWdzIHJpZ2h0LAogICAgICAgICBGUFJSZWcgbGVmdEZQUiwg
RlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2NyYXRjaEdQUiwgRlBSUmVnIHNjcmF0Y2hGUFIsCi0g
ICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbnVsbHB0cikKKyAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBudWxscHRyKQogICAgICAgICA6IG1fbGVm
dE9wZXJhbmQobGVmdE9wZXJhbmQpCiAgICAgICAgICwgbV9yaWdodE9wZXJhbmQocmlnaHRPcGVy
YW5kKQogICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0
ZToKICAgICBHUFJSZWcgbV9zY3JhdGNoR1BSOwogICAgIEZQUlJlZyBtX3NjcmF0Y2hGUFI7CiAg
ICAgYm9vbCBtX2RpZEVtaXRGYXN0UGF0aCB7IGZhbHNlIH07Ci0gICAgQXJpdGhQcm9maWxlKiBt
X2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOwog
CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX2VuZEp1bXBMaXN0OwogICAgIENDYWxsSGVs
cGVyczo6SnVtcExpc3QgbV9zbG93UGF0aEp1bXBMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAppbmRleCA2MmVhYjliOTdmYS4uMjViY2MyYjljNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC03MTYsMTMgKzcxNiwxMyBAQCBBTFdBWVNf
SU5MSU5FIEdldFB1dEluZm8gSklUOjpjb3BpZWRHZXRQdXRJbmZvKE9wUHV0VG9TY29wZSBieXRl
Y29kZSkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+Ci1BTFdBWVNfSU5MSU5FIEFy
aXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCBieXRlY29kZSkKK0FM
V0FZU19JTkxJTkUgQmluYXJ5QXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJp
bmFyeU9wIGJ5dGVjb2RlKQogewogICAgIHVpbnQ2NF90IGtleSA9IChzdGF0aWNfY2FzdDx1aW50
NjRfdD4oQmluYXJ5T3A6Om9wY29kZUlEKSArIDEpIDw8IDMyIHwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGJ5dGVjb2RlLm1fbWV0YWRhdGFJRCk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fY29waWVk
QXJpdGhQcm9maWxlcy5maW5kKGtleSk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IG1fY29waWVkQXJp
dGhQcm9maWxlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLSAgICBB
cml0aFByb2ZpbGUgYXJpdGhQcm9maWxlID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
Lm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgbV9jb3Bp
ZWRBcml0aFByb2ZpbGVzLmFkZChrZXksIGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIGFyaXRo
UHJvZmlsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0
aElDLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCmluZGV4IDU2NDVl
NDJkZWZmLi5mZGFlYzkyNzVlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRNYXRoSUMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5o
CkBAIC01MiwxMSArNTIsMTEgQEAgc3RydWN0IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSB7CiAKICNk
ZWZpbmUgRU5BQkxFX01BVEhfSUNfU1RBVFMgMAogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJh
dG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1wdHkpKEFyaXRoUHJvZmlsZSYpPgordGVtcGxhdGUg
PHR5cGVuYW1lIEdlbmVyYXRvclR5cGUsIHR5cGVuYW1lIEFyaXRoUHJvZmlsZVR5cGU+CiBjbGFz
cyBKSVRNYXRoSUMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IEpJVE1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKKyAgICBKSVRNYXRoSUMoQXJp
dGhQcm9maWxlVHlwZSogYXJpdGhQcm9maWxlKQogICAgICAgICA6IG1fYXJpdGhQcm9maWxlKGFy
aXRoUHJvZmlsZSkKICAgICB7CiAgICAgfQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUo
KTsKIAogICAgICAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKLSAgICAgICAgICAgIGlmIChpc1By
b2ZpbGVFbXB0eSgqbV9hcml0aFByb2ZpbGUpKSB7CisgICAgICAgICAgICBpZiAobV9hcml0aFBy
b2ZpbGUtPmlzT2JzZXJ2ZWRUeXBlRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIC8vIEl0IGxv
b2tzIGxpa2UgdGhlIE1hdGhJQyBoYXMgeWV0IHRvIGV4ZWN1dGUuIFdlIGRvbid0IHdhbnQgdG8g
ZW1pdCBjb2RlIGluIHRoaXMKICAgICAgICAgICAgICAgICAvLyBjYXNlIGZvciBhIGNvdXBsZSBy
ZWFzb25zLiBGaXJzdCwgdGhlIG9wZXJhdGlvbiBtYXkgbmV2ZXIgZXhlY3V0ZSwgc28gaWYgd2Ug
ZG9uJ3QgZW1pdAogICAgICAgICAgICAgICAgIC8vIGNvZGUsIGl0J3MgYSB3aW4uIFNlY29uZCwg
aWYgdGhlIG9wZXJhdGlvbiBkb2VzIGV4ZWN1dGUsIHdlIGNhbiBlbWl0IGJldHRlciBjb2RlCkBA
IC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgICAgICBtX3Nsb3dQYXRoU3RhcnRMb2NhdGlv
biA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihzdGF0ZS5zbG93UGF0
aFN0YXJ0KTsKICAgICB9CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJpdGhQcm9maWxlOyB9CisgICAgQXJpdGhQcm9maWxlVHlwZSogYXJpdGhQ
cm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KIAogI2lmIEVOQUJMRShN
QVRIX0lDX1NUQVRTKQogICAgIHNpemVfdCBtX2dlbmVyYXRlZENvZGVTaXplIHsgMCB9OwpAQCAt
MjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmls
ZSogbV9hcml0aFByb2ZpbGU7CisgICAgQXJpdGhQcm9maWxlVHlwZSogbV9hcml0aFByb2ZpbGU7
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2NvZGU7
CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9pbmxpbmVTdGFydDsK
ICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2lubGluZUVuZDsKQEAg
LTI0NiwxNSArMjQ2LDExIEBAIHB1YmxpYzoKICAgICBHZW5lcmF0b3JUeXBlIG1fZ2VuZXJhdG9y
OwogfTsKIAotaW5saW5lIGJvb2wgaXNCaW5hcnlQcm9maWxlRW1wdHkoQXJpdGhQcm9maWxlJiBh
cml0aFByb2ZpbGUpCi17Ci0gICAgcmV0dXJuIGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUo
KS5pc0VtcHR5KCkgfHwgYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsK
LX0KIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3JUeXBlPgotY2xhc3MgSklUQmluYXJ5TWF0
aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc0JpbmFyeVByb2ZpbGVFbXB0
eT4geworY2xhc3MgSklUQmluYXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JU
eXBlLCBCaW5hcnlBcml0aFByb2ZpbGU+IHsKIHB1YmxpYzoKLSAgICBKSVRCaW5hcnlNYXRoSUMo
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCi0gICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRv
clR5cGUsIGlzQmluYXJ5UHJvZmlsZUVtcHR5Pihhcml0aFByb2ZpbGUpCisgICAgSklUQmluYXJ5
TWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgICAgICA6IEpJVE1h
dGhJQzxHZW5lcmF0b3JUeXBlLCBCaW5hcnlBcml0aFByb2ZpbGU+KGFyaXRoUHJvZmlsZSkKICAg
ICB7CiAgICAgfQogfTsKQEAgLTI2MywxNiArMjU5LDExIEBAIHR5cGVkZWYgSklUQmluYXJ5TWF0
aElDPEpJVEFkZEdlbmVyYXRvcj4gSklUQWRkSUM7CiB0eXBlZGVmIEpJVEJpbmFyeU1hdGhJQzxK
SVRNdWxHZW5lcmF0b3I+IEpJVE11bElDOwogdHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUU3Vi
R2VuZXJhdG9yPiBKSVRTdWJJQzsKIAotCi1pbmxpbmUgYm9vbCBpc1VuYXJ5UHJvZmlsZUVtcHR5
KEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQotewotICAgIHJldHVybiBhcml0aFByb2ZpbGUu
bGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOwotfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVy
YXRvclR5cGU+Ci1jbGFzcyBKSVRVbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJh
dG9yVHlwZSwgaXNVbmFyeVByb2ZpbGVFbXB0eT4geworY2xhc3MgSklUVW5hcnlNYXRoSUMgOiBw
dWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVuYXJ5QXJpdGhQcm9maWxlPiB7CiBwdWJs
aWM6Ci0gICAgSklUVW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCi0gICAg
ICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzVW5hcnlQcm9maWxlRW1wdHk+KGFyaXRo
UHJvZmlsZSkKKyAgICBKSVRVbmFyeU1hdGhJQyhVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlKQorICAgICAgICA6IEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBVbmFyeUFyaXRoUHJvZmls
ZT4oYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCmluZGV4IDgzZDI5M2I2MjUyLi5jZjZiYWE1MmY2
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcApA
QCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElDSW5saW5lUmVz
dWx0IEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxp
bmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0
IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdlIGRlZmF1bHQg
dG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9ic2VydmVkVHlw
ZSgpLndpdGhJbnQzMigpOwpAQCAtODksNyArODksNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
SklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElD
RwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7
CiB9CiAKLWJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUTXVsR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwg
Y29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFBy
b2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRHUFIoKSk7CkBAIC0yMDUs
MTggKzIwNSwxOCBAQCBib29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdAogCiAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcCBub3ROZWdhdGl2ZVplcm8gPSBqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwgbV9yZXN1bHQucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02
NChuZWdhdGl2ZVplcm9CaXRzKSk7CiAKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpB
YnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAg
aml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpO
ZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxl
LT5hZGRyZXNzT2ZCaXRzKCkpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBq
aXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5saW5rKCZqaXQpOwotICAgICAg
ICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk5l
Z1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUt
PmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogCiAg
ICAgICAgIGppdC5tb3ZlKG1fcmVzdWx0LnBheWxvYWRHUFIoKSwgbV9zY3JhdGNoR1BSKTsKICAg
ICAgICAgaml0LnVyc2hpZnRQdHIoQ0NhbGxIZWxwZXJzOjpJbW0zMig1MiksIG1fc2NyYXRjaEdQ
Uik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3Jh
dGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwogCi0gICAgICAgIGppdC5vcjMyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIEND
YWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygp
KSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJpbmFyeUFy
aXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNz
KGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAgICAgICAgIG5vSW50NTJPdmVyZmxv
dy5saW5rKCZqaXQpOwogCiAgICAgICAgIGRvbmUubGluaygmaml0KTsKQEAgLTIyNywxOCArMjI3
LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5h
cHBlbmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIG1fcmVzdWx0LnBheWxv
YWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpKTsKICAgICAgICAgbm90TmVn
YXRpdmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9y
ZXN1bHQudGFnR1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5lZ2F0aXZlWmVyb0Jp
dHMgPj4gMzIpKSk7CiAKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoQXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFk
ZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgaml0Lm9yMzIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQmluYXJ5QXJpdGhQcm9maWxlOjpOZWdaZXJvRG91
YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNz
T2ZCaXRzKCkpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgp
OwogCiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5saW5rKCZqaXQpOwotICAgICAgICBqaXQub3Iz
MihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3Vi
bGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NP
ZkJpdHMoKSkpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihC
aW5hcnlBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29s
dXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwogCiAgICAgICAgIGpp
dC5tb3ZlKG1fcmVzdWx0LnRhZ0dQUigpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQudXJz
aGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDUyIC0gMzIpLCBtX3NjcmF0Y2hHUFIpOwogICAg
ICAgICBqaXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpJbW0zMigweDdmZiksIG1fc2NyYXRjaEdQUik7
CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub0ludDUyT3ZlcmZsb3cgPSBqaXQuYnJhbmNo
MzIoQ0NhbGxIZWxwZXJzOjpMZXNzVGhhbk9yRXF1YWwsIG1fc2NyYXRjaEdQUiwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoMHg0MzEpKTsKICAgICAgICAgCi0gICAgICAgIGppdC5vcjMyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIEND
YWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygp
KSk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEJpbmFyeUFy
aXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNz
KGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CiAKICAgICAgICAgZW5kSnVtcExpc3Qu
YXBwZW5kKG5vSW50NTJPdmVyZmxvdyk7CiAgICAgICAgIGlmIChtX3NjcmF0Y2hHUFIgPT0gbV9y
ZXN1bHQudGFnR1BSKCkgfHwgbV9zY3JhdGNoR1BSID09IG1fcmVzdWx0LnBheWxvYWRHUFIoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCmluZGV4IDM2ZDI2
ZWExMjRlLi42MDg3Nzk2Njg1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRNdWxHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11
bEdlbmVyYXRvci5oCkBAIC01Niw4ICs1Niw4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFt
X2xlZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCkgfHwgIW1fcmlnaHRPcGVyYW5kLmlz
UG9zaXRpdmVDb25zdEludDMyKCkpOwogICAgIH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3Vs
dCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBj
b25zdCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxw
ZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIHNsb3dKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRF
bWl0UHJvZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUo
Q0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQ
cm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxs
SGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBz
bG93SnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFBy
b2ZpbGluZyk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudChT
bmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCkgeyByZXR1cm4gbGVmdE9wZXJhbmQuaXNQb3NpdGl2
ZUNvbnN0SW50MzIoKTsgfQogICAgIHN0YXRpYyBib29sIGlzUmlnaHRPcGVyYW5kVmFsaWRDb25z
dGFudChTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQpIHsgcmV0dXJuIHJpZ2h0T3BlcmFuZC5p
c1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE5lZ0dlbmVyYXRvci5jcHAKaW5kZXggOTJjMjlkZDYzMGEuLmNlZWJlMzkwOTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuY3BwCkBAIC0zMiw3ICsz
Miw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVn
R2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJh
dGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRN
YXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhl
bHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgVW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IElu
dmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9zcmMucGF5bG9hZEdQ
UigpKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE5lZ0dlbmVy
YXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICAvLyBX
ZSBkZWZhdWx0IHRvIHNwZWN1bGF0aW5nIGludDMyLgogICAgIE9ic2VydmVkVHlwZSBvYnNlcnZl
ZFR5cGVzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CiAgICAgaWYgKGFyaXRoUHJvZmls
ZSkKLSAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBl
KCk7CisgICAgICAgIG9ic2VydmVkVHlwZXMgPSBhcml0aFByb2ZpbGUtPmFyZ09ic2VydmVkVHlw
ZSgpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW9ic2VydmVkVHlwZXMuaXNFbXB0eSgpLCAi
V2Ugc2hvdWxkIG5vdCBhdHRlbXB0IHRvIGdlbmVyYXRlIGFueXRoaW5nIGlmIHdlIGRvIG5vdCBo
YXZlIGEgcHJvZmlsZS4iKTsKIAogICAgIGlmIChvYnNlcnZlZFR5cGVzLmlzT25seU5vbk51bWJl
cigpKQpAQCAtODIsNyArODIsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJh
dG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVy
biBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wg
SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYg
c2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wg
c2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlz
dCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgVW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9zcmMucGF5bG9hZEdQUigpKTsKICAgICBBU1NF
UlQobV9zY3JhdGNoR1BSICE9IG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CkBAIC0xMTcsNyArMTE3
LDcgQEAgYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICNlbmRpZgogICAgIC8vIFRoZSBmbGFncyBv
ZiBBcml0aE5lZ2F0ZSBhcmUgYmFzaWMgaW4gREZHLgogICAgIC8vIFdlIG9ubHkgbmVlZCB0byBr
bm93IGlmIHdlIGV2ZXIgcHJvZHVjZWQgYSBudW1iZXIuCi0gICAgaWYgKHNob3VsZEVtaXRQcm9m
aWxpbmcgJiYgYXJpdGhQcm9maWxlICYmICFhcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgp
LnNhd051bWJlcigpICYmICFhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICBp
ZiAoc2hvdWxkRW1pdFByb2ZpbGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+
YXJnT2JzZXJ2ZWRUeXBlKCkuc2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2
ZURvdWJsZSgpKQogICAgICAgICBhcml0aFByb2ZpbGUtPmVtaXRTZXREb3VibGUoaml0KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTmVnR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVy
YXRvci5oCmluZGV4IDhhMGMyZDUxN2Q2Li43ODdiNzA3NjgyOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCkBAIC00Myw4ICs0Myw4IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX3NjcmF0Y2hHUFIoc2NyYXRjaEdQUikKICAgICB7IH0KIAotICAgIEpJVE1h
dGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5l
cmF0aW9uU3RhdGUmLCBjb25zdCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3Qs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJv
ZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVz
dWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYs
IGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKEND
YWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmls
ZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CiAKIHByaXZhdGU6CiAgICAgSlNWYWx1ZVJl
Z3MgbV9yZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAppbmRleCA0N2RlYjhjZTZhYS4uM2E5ZTg1YTA4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjY0NSw3ICsyNjQ1LDcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enooSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICNlbmRpZiAvLyBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKIH0KIAotQUxXQVlTX0lO
TElORSBzdGF0aWMgSlNWYWx1ZSBwcm9maWxlZEFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIG9wMSwgSlNWYWx1ZSBvcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxl
KQorQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBwcm9maWxlZEFkZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wMSwgSlNWYWx1ZSBvcDIsIEJpbmFyeUFyaXRoUHJv
ZmlsZSYgYXJpdGhQcm9maWxlKQogewogICAgIGFyaXRoUHJvZmlsZS5vYnNlcnZlTEhTQW5kUkhT
KG9wMSwgb3AyKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQWRkKGdsb2JhbE9iamVjdCwgb3Ax
LCBvcDIpOwpAQCAtMjY2MSw3ICsyNjYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZUFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQWRkKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewog
ICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTI2NzksNyArMjY3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgSlNW
YWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQ
cm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwog
ICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5v
T3B0aW1pemU7CkBAIC0yNzAxLDcgKzI3MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0Kgog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUo
KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFBy
b2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHByb2ZpbGVkQWRkKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMiksICphcml0aFByb2ZpbGUpKTsKIH0KQEAg
LTI3MTYsNyArMjcxNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVBZGRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSlNWYWx1ZSBv
cDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAKICAgICBhdXRvIG5vbk9wdGltaXpl
VmFyaWFudCA9IG9wZXJhdGlvblZhbHVlQWRkTm9PcHRpbWl6ZTsKLSAgICBpZiAoQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgaWYgKEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpKQogICAg
ICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwogICAgIGFkZElD
LT5nZW5lcmF0ZU91dE9mTGluZShjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZh
cmlhbnQpOwogCkBAIC0yNzQ5LDcgKzI3NDksNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSB1bnByb2ZpbGVkTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc011bChnbG9iYWxPYmplY3QsIG9wMSwgb3AyKSk7
CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29s
IHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCitBTFdBWVNfSU5MSU5FIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZE11bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBC
aW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5k
UkhTVHlwZXMgPSB0cnVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNzkwLDcgKzI3OTAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gbm9uT3B0aW1p
emVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplOwotICAgIGlmIChBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQmlu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCkpCiAg
ICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgbXVsSUMtPmdlbmVy
YXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7
CiAKQEAgLTI4MDEsNyArMjgwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0
dXJuIHVucHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2Zp
bGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yODE3LDcgKzI4MTcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRP
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9m
aWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIGF1dG8gbm9u
T3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemU7CkBA
IC0yODM2LDcgKzI4MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKICAg
ICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWRNdWwoZ2xvYmFsT2Jq
ZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KQEAgLTI4NjIs
NyArMjg2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KQogewogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKQEAgLTI4NzEsNyArMjg3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVy
YW5kKTsKLSAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgYXJpdGhQ
cm9maWxlLT5vYnNlcnZlQXJnKG9wZXJhbmQpOwogCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBv
cGVyYW5kLnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yODk5LDkgKzI4OTksOSBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdAogICAgIAogICAgIEpTVmFsdWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3BlcmFuZCk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9
IG5lZ0lDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwot
ICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBhcml0aFByb2ZpbGUt
Pm9ic2VydmVBcmcob3BlcmFuZCk7CiAgICAgbmVnSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCksIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQpOwogCiAjaWYg
RU5BQkxFKE1BVEhfSUNfU1RBVFMpCkBAIC0yOTMzLDggKzI5MzMsOCBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbAogCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcGVyYW5kKTsKIAotICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lD
LT5hcml0aFByb2ZpbGUoKSkKLSAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTKG9wZXJh
bmQpOworICAgIGlmIChVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFy
aXRoUHJvZmlsZSgpKQorICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7
CiAgICAgbmVnSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlKTsKIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpAQCAtMjk2
MCw3ICsyOTYwLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9m
aWxlZFN1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdWIoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMikpOwogfQogCi1BTFdBWVNfSU5M
SU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZFN1YihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9i
c2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBwcm9maWxlZFN1YihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJp
bmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRS
SFNUeXBlcyA9IHRydWUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCkBAIC0yOTg0LDcgKzI5ODQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAg
IHJldHVybiB1bnByb2ZpbGVkU3ViKGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9w
Mik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQ
cm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9m
aWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSkKIHsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKIApAQCAtMzAwMiw3ICszMDAy
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1Yk9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIG5vbk9wdGlt
aXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlU3ViTm9PcHRpbWl6ZTsKLSAgICBpZiAoQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgaWYgKEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpKQog
ICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIHN1YklDLT5nZW5l
cmF0ZU91dE9mTGluZShjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQp
OwogCkBAIC0zMDI4LDcgKzMwMjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKKyAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUo
KTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVM
SFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMikpOwogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVT
dWJQcm9maWxlZE5vT3B0aW1pemU7CkBAIC0zMDQ3LDcgKzMwNDcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGltaXplKEpTR2xv
YmFsT2JqZWN0KgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5h
cml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1
YklDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1
cm4gcHJvZmlsZWRTdWIodm0sIGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwg
KmFyaXRoUHJvZmlsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCmluZGV4IDM3ZTgzNjE1ZDQ3Li41OTVhZWM0N2NkNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTM4LDYgKzM4LDggQEAgdHlwZWRlZiBpbnQ2NF90
IEVuY29kZWRKU1ZhbHVlOwogICAgIAogY2xhc3MgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKIGNs
YXNzIEFycmF5UHJvZmlsZTsKK2NsYXNzIFVuYXJ5QXJpdGhQcm9maWxlOworY2xhc3MgQmluYXJ5
QXJpdGhQcm9maWxlOwogY2xhc3MgQnV0dGVyZmx5OwogY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3Mg
Q2FsbExpbmtJbmZvOwpAQCAtNjQsNyArNjYsNiBAQCBjbGFzcyBXYXRjaHBvaW50U2V0Owogc3Ry
dWN0IEJ5VmFsSW5mbzsKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rp
b247Ci1zdHJ1Y3QgQXJpdGhQcm9maWxlOwogCiBleHRlcm4gIkMiIHsKIApAQCAtNzcsNyArNzgs
NyBAQCB0eXBlZGVmIGNoYXIqIFVudXNlZFB0cjsKICAgICBBOiBKU0FycmF5KgogICAgIEFhcDog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSoKICAgICBBcDogQXJyYXlQcm9maWxlKgotICAgIEFycDog
QXJpdGhQcm9maWxlKgorICAgIEFycDogQmluYXJ5QXJpdGhQcm9maWxlKgogICAgIEI6IEJ1dHRl
cmZseSoKICAgICBCeTogQnlWYWxJbmZvKgogICAgIEM6IEpTQ2VsbCoKQEAgLTI4Miw3ICsyODMs
NyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2hlY2tJZkV4Y2VwdGlvbklzVW5j
YXRjaGFibGVBbmROb3RpZnlQcm9maWxlcihWTQogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkluc3RhbmNlT2ZDdXN0b20oSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhh
c0luc3RhbmNlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVBZGQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ay
LCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFBy
b2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFk
ZFByb2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CkBAIC0yOTIsMTMgKzI5Mywx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSgogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRO
b09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0
aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFu
ZCk7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJv
ZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBvcGVyYW5kLCBBcml0aFByb2Zp
bGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQ
cm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIFVuYXJ5QXJp
dGhQcm9maWxlKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcGVyYW5kLCBKSVROZWdJQyopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlU3ViKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwotRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJp
dGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViTm9P
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcAppbmRleCA3OTVjMjc1ODRjMC4uN2IxYThiODE5
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJl
c3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBN
YXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25z
dCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICAvLyBXZSBkZWZhdWx0
IHRvIHNwZWN1bGF0aW5nIGludDMyLgogICAgIE9ic2VydmVkVHlwZSBsaHMgPSBPYnNlcnZlZFR5
cGUoKS53aXRoSW50MzIoKTsKQEAgLTc4LDcgKzc4LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0
IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJ
Q0cKICAgICByZXR1cm4gSklUTWF0aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0
OwogfQogCi1ib29sIEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBl
cnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVy
czo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCitib29sIEpJVFN1YkdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3Qs
IGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQ
cm9maWxpbmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsK
ICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmgKaW5kZXggNTYxZjYzMzRhZTMu
LjM0OTFhODNmZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1
YkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJh
dG9yLmgKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEZQUihz
Y3JhdGNoRlBSKQogICAgIHsgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRl
SW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRo
UHJvZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYg
c2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxI
ZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxl
Kik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVy
czo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0
aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9m
aWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25p
cHBldE9wZXJhbmQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9w
ZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCA1MWVkNjUzZDk4YS4u
MmZkZTEwN2E5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
CkBAIC0xNDcsMzYgKzE0Nyw0OSBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2
bSkKICNlbmRpZgogCiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwor
ICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIGFyaXRoUHJv
ZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9
PSBVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKCkpOworICAgICAgICBBU1NFUlQo
YXJpdGhQcm9maWxlLmFyZ09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgIH0KKyAg
ICB7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgYXJp
dGhQcm9maWxlLmFyZ1Nhd051bWJlcigpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJCaXRzKCkpOworICAgICAg
ICBBU1NFUlQoYXJpdGhQcm9maWxlLmFyZ09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7
CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdJbnQzMigpOwogICAgICAgICBhcml0aFByb2Zp
bGUucmhzU2F3SW50MzIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0g
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLmJpdHMoKSk7Ci0gICAgICAgIFNU
QVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLmxoc09ic2Vy
dmVkVHlwZSgpLmlzT25seUludDMyKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJv
ZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnRJbnQoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQz
MigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQ
cm9maWxlOjpvYnNlcnZlZEludEludEJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2Zp
bGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0
aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQogICAgIHsK
LSAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQ
cm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051bWJlcigp
OwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3SW50MzIoKTsKLSAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlcklu
dCgpLmJpdHMoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZl
ZEJpbmFyeU51bWJlckludCgpLmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKLSAg
ICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVySW50
KCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0
aFByb2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRC
aXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlz
T25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5
cGUoKS5pc09ubHlJbnQzMigpKTsKICAgICB9CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUg
YXJpdGhQcm9maWxlOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwog
ICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3TnVtYmVyKCk7CiAgICAgICAgIGFyaXRoUHJvZmls
ZS5yaHNTYXdOdW1iZXIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0g
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51bWJlcigpLmJpdHMoKSk7Ci0gICAg
ICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51bWJl
cigpLmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKLSAgICAgICAgU1RBVElDX0FT
U0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkucmhzT2JzZXJ2
ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJp
dHMoKSA9PSBCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cygpKTsK
KyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1i
ZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNP
bmx5TnVtYmVyKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFBy
b2ZpbGU7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAg
IGFyaXRoUHJvZmlsZS5saHNTYXdJbnQzMigpOwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3
TnVtYmVyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJv
ZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNf
QVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5saHNPYnNlcnZl
ZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2Zp
bGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVt
YmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkSW50TnVtYmVyQml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRo
UHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNTRVJU
KGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQog
fQogSUdOT1JFX1dBUk5JTkdTX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA3OGFkZDAyMDU3NS4uNzEyNWJk
NGY1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKIAogY29uc3QgaW50
NjRfdCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCiB7Ci0vLyBUaGlzIGlzIGEgZmls
ZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwg
YW5kIGNvbnRhaW5zIGNvZGUKKy8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5l
YXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCiAvLyB0
byBjcmVhdGUgYSB0YWJsZSBvZiBvZmZzZXRzLCBzaXplcywgYW5kIGEgaGVhZGVyIGlkZW50aWZ5
aW5nIHdoYXQgY29tYmluYXRpb24gb2YKIC8vIFBsYXRmb3JtLmggbWFjcm9zIHdlIGhhdmUgc2V0
LiBXZSBpbmNsdWRlIGl0IGluc2lkZSBvZiBhIG1ldGhvZCBvbiBMTEludE9mZnNldHNFeHRyYWN0
b3IKIC8vIGJlY2F1c2UgdGhlIGZpZWxkcyB3aG9zZSBvZmZzZXRzIHdlJ3JlIGV4dHJhY3Rpbmcg
YXJlIG1vc3RseSBwcml2YXRlLiBTbyB3ZSBtYWtlIHRoZWlyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggOWNlMzRjODU2
NzcuLjlkMTFiZTIxMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNDEsMTMgKzI0MSwxNSBAQCBjb25zdCBJc0lu
dmFsaWRhdGVkID0gY29uc3RleHByIElzSW52YWxpZGF0ZWQKICMgU2hhZG93Q2hpY2tlbiBkYXRh
CiBjb25zdCBTaGFkb3dDaGlja2VuVGFpbE1hcmtlciA9IGNvbnN0ZXhwciBTaGFkb3dDaGlja2Vu
OjpQYWNrZXQ6OnRhaWxNYXJrZXJWYWx1ZQogCi0jIEFyaXRoUHJvZmlsZSBkYXRhCi1jb25zdCBB
cml0aFByb2ZpbGVJbnQgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRVbmFyeUlu
dCgpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJlciA9IGNvbnN0ZXhwciAoQXJpdGhQ
cm9maWxlOjpvYnNlcnZlZFVuYXJ5TnVtYmVyKCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxl
SW50SW50ID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCku
Yml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVySW50ID0gY29uc3RleHByIChBcml0aFBy
b2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9m
aWxlSW50TnVtYmVyID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50
TnVtYmVyKCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyTnVtYmVyID0gY29uc3Rl
eHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkuYml0cygpKQor
IyBVbmFyeUFyaXRoUHJvZmlsZSBkYXRhCitjb25zdCBBcml0aFByb2ZpbGVJbnQgPSBjb25zdGV4
cHIgKFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJv
ZmlsZU51bWJlciA9IGNvbnN0ZXhwciAoVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVy
Qml0cygpKQorCisjIEJpbmFyeUFyaXRoUHJvZmlsZSBkYXRhCitjb25zdCBBcml0aFByb2ZpbGVJ
bnRJbnQgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRJbnRCaXRz
KCkpCitjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJJbnQgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRo
UHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVJbnRO
dW1iZXIgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJC
aXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSBjb25zdGV4cHIgKEJpbmFy
eUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdW1iZXJCaXRzKCkpCiAKICMgUG9pbnRlciBU
YWdzCiBjb25zdCBCeXRlY29kZVB0clRhZyA9IGNvbnN0ZXhwciBCeXRlY29kZVB0clRhZwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQppbmRleCBkMTVkOTY3MjdjNS4uYzg4MGNmOTU5Y2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCkBAIC0xMDAwLDggKzEwMDAsOCBAQCBlbmQpCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
bmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBy
ZXR1cm4pCiAKLSAgICBtYWNybyBhcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgb3JpIHR5cGUs
IE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0
c1t0NV0KKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAgb3JoIHR5
cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmls
ZTo6bV9iaXRzW3Q1XQogICAgIGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTAxMCwx
MiArMTAxMCwxMiBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdhdGUsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcgogICAgIGJpbmVxIHQxLCBJbnQz
MlRhZywgLm9wTmVnYXRlU3JjTm90SW50CiAgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVn
YXRlU2xvdwogICAgIG5lZ2kgdDIKLSAgICBhcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQor
ICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuIChJbnQz
MlRhZywgdDIpCiAub3BOZWdhdGVTcmNOb3RJbnQ6CiAgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5v
cE5lZ2F0ZVNsb3cKICAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgYXJpdGhQcm9maWxlKEFy
aXRoUHJvZmlsZU51bWJlcikKKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlTnVt
YmVyKQogICAgIHJldHVybih0MSwgdDIpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDI3LDcgKzEw
MjcsNyBAQCBlbmQpCiBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24pCiAgICAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIGFy
aXRoUHJvZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICAg
ICAgICAgIG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxl
ICsgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAgICAg
IG1ldGFkYXRhKHQ1LCB0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggOTVjMGY2OGU1YmUuLmQ5NDkxMDE1ZTQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQpAQCAtOTgxLDIyICs5ODEsMjQgQEAgZW5kKQogCiAKIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCisKKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkK
KyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBV
bmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIGVuZAorCiAgICAgZ2V0KG1fb3BlcmFu
ZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAgICAgbWV0
YWRhdGEodDEsIHQyKQotICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCiAgICAgYnFiIHQzLCBudW1iZXJUYWcs
IC5vcE5lZ2F0ZU5vdEludAogICAgIGJ0aXogdDMsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cK
ICAgICBuZWdpIHQzCiAgICAgb3JxIG51bWJlclRhZywgdDMKLSAgICBvcmkgQXJpdGhQcm9maWxl
SW50LCB0MgotICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmls
ZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0
aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuKHQzKQogLm9wTmVnYXRlTm90SW50OgogICAgIGJ0cXog
dDMsIG51bWJlclRhZywgLm9wTmVnYXRlU2xvdwogICAgIHhvcnEgMHg4MDAwMDAwMDAwMDAwMDAw
LCB0MwotICAgIG9yaSBBcml0aFByb2ZpbGVOdW1iZXIsIHQyCi0gICAgc3RvcmVpIHQyLCBPcE5l
Z2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFd
CisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKICAgICByZXR1cm4o
dDMpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDEwLDcgKzEwMTIsNyBAQCBtYWNybyBiaW5hcnlP
cEN1c3RvbVN0b3JlKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFu
ZFN0b3JlLCBkbwogICAgICAgICBtZXRhZGF0YSh0NSwgdDApCiAKICAgICAgICAgbWFjcm8gcHJv
ZmlsZSh0eXBlKQotICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICAgICAgICAg
IG9yaCB0eXBlLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5h
cnlBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KICAgICAgICAgZW5kCiAKICAgICAgICAgZ2V0KG1f
cmhzLCB0MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fy
bS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgppbmRleCBiMjNm
NjViODY4My4uYjIyMjU2NzgwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2FybS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm0ucmIKQEAgLTI5OSw3ICsyOTksNyBAQCBjbGFzcyBTZXF1ZW5jZQogICAgICAgICAgICAgZW5k
CiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVzc2Vz
RG91YmxlKHJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2VkSW1tZWRp
YXRlcyhyZXN1bHQsIFsic3RvcmViIiwgInN0b3JlaSIsICJzdG9yZXAiLCAic3RvcmVxIl0pCisg
ICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMocmVzdWx0LCBbInN0
b3JlYiIsICJzdG9yZWgiLCAic3RvcmVpIiwgInN0b3JlcCIsICJzdG9yZXEiXSkKICAgICAgICAg
cmVzdWx0ID0gcmlzY0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhyZXN1bHQsIDAuLjB4ZmYsIDAu
LjB4MGZmKQogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMocmVz
dWx0KQogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJSZWdpc3RlclJldXNlKHJlc3VsdCkKQEAg
LTQxOCw3ICs0MTgsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAg
ICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJhbmRz
IiwgImFuZCIsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICB3
aGVuICJvcmkiLCAib3JwIiwgIm9yaCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJz
IiwgIm9yciIsIG9wZXJhbmRzKQogICAgICAgICB3aGVuICJvcmlzIgogICAgICAgICAgICAgZW1p
dEFybUNvbXBhY3QoIm9ycnMiLCAib3JycyIsIG9wZXJhbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hcm02NC5yYgppbmRleCAwOTY2ZWMzYmY2Yi4uZmNkMjc2ZjM2YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBAIC0zOTMsNyArMzkz
LDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAg
ICAgICAgIHdoZW4gImxvYWRiIiwgImxvYWRic2kiLCAibG9hZGJzcSIsICJzdG9yZWIiLCAvXmJi
LywgL15idGIvLCAvXmNiLywgL150Yi8KICAgICAgICAgICAgICAgICBzaXplID0gMQotICAgICAg
ICAgICAgd2hlbiAibG9hZGgiLCAibG9hZGhzaSIsICJsb2FkaHNxIiwgInN0b3JlaCIKKyAgICAg
ICAgICAgIHdoZW4gImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIsICJvcmgiLCAic3RvcmVo
IgogICAgICAgICAgICAgICAgIHNpemUgPSAyCiAgICAgICAgICAgICB3aGVuICJsb2FkaSIsICJs
b2FkaXMiLCAic3RvcmVpIiwgImFkZGkiLCAiYW5kaSIsICJsc2hpZnRpIiwgIm11bGkiLCAibmVn
aSIsCiAgICAgICAgICAgICAgICAgIm5vdGkiLCAib3JpIiwgInJzaGlmdGkiLCAidXJzaGlmdGki
LCAic3ViaSIsICJ4b3JpIiwgL15iaS8sIC9eYnRpLywKQEAgLTQxOCw3ICs0MTgsNyBAQCBjbGFz
cyBTZXF1ZW5jZQogICAgICAgICAgICAgZW5kCiAgICAgICAgIH0KIAotICAgICAgICByZXN1bHQg
PSByaXNjTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKHJlc3VsdCwgWyJzdG9yZWIiLCAic3RvcmVp
IiwgInN0b3JlcCIsICJzdG9yZXEiXSkKKyAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxh
Y2VkSW1tZWRpYXRlcyhyZXN1bHQsIFsic3RvcmViIiwgInN0b3JlaCIsICJzdG9yZWkiLCAic3Rv
cmVwIiwgInN0b3JlcSJdKQogCiAgICAgICAgICMgVGhlIHJ1bGVzIGZvciB3aGljaCBpbW1lZGlh
dGVzIGFyZSB2YWxpZCBmb3IgYW5kL29yL3hvciBpbnN0cnVjdGlvbnMgYXJlIGZhaXJseSBpbnZv
bHZlZCwgc2VlIGh0dHBzOi8vZGluZnVlaHIuZ2l0aHViLmlvL2Jsb2cvZW5jb2Rpbmctb2YtaW1t
ZWRpYXRlLXZhbHVlcy1vbi1hYXJjaDY0LwogICAgICAgICB2YWxpZExvZ2ljYWxJbW1lZGlhdGVz
ID0gW10KQEAgLTcxMSw2ICs3MTEsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAg
ZW1pdEFSTTY0VEFDKCJvcnIiLCBvcGVyYW5kcywgOnB0cikKICAgICAgICAgd2hlbiAib3JxIgog
ICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIiLCBvcGVyYW5kcywgOnF1YWQpCisgICAgICAg
IHdoZW4gIm9yaCIKKyAgICAgICAgICAgIGVtaXRBUk02NFRBQygib3JyIiwgb3BlcmFuZHMsIDp3
b3JkKSAjIG5vdCA6aGFsZiBiZWNhdXNlIDE2LWJpdCByZWdpc3RlcnMgZG9uJ3QgZXhpc3Qgb24g
QVJNLgogICAgICAgICB3aGVuICJ4b3JpIgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJlb3Ii
LCBvcGVyYW5kcywgOndvcmQpCiAgICAgICAgIHdoZW4gInhvcnAiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCmluZGV4IGYzM2Y3MDZkYjE4Li4zNzJlNmYxMzg4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKQEAgLTE2MCw2ICsx
NjAsNyBAQCBjbGFzcyBJbW1lZGlhdGUKIAogICAgICAgICBjYXNlIHR5cGUKICAgICAgICAgd2hl
biA6aW50ODsgICAgImludDhfdCgje3ZhbHVlU3RyfSkiCisgICAgICAgIHdoZW4gOmludDE2OyAg
ICJpbnQxNl90KCN7dmFsdWVTdHJ9KSIKICAgICAgICAgd2hlbiA6aW50MzI7ICAgImludDMyX3Qo
I3t2YWx1ZVN0cn0pIgogICAgICAgICB3aGVuIDppbnQ2NDsgICAiaW50NjRfdCgje3ZhbHVlU3Ry
fSkiCiAgICAgICAgIHdoZW4gOmludHB0cjsgICJpbnRwdHJfdCgje3ZhbHVlU3RyfSkiCkBAIC0x
ODMsNiArMTg0LDcgQEAgY2xhc3MgQWRkcmVzcwogICAgIGRlZiBjbFZhbHVlKHR5cGU9OmludHB0
cikKICAgICAgICAgY2FzZSB0eXBlCiAgICAgICAgIHdoZW4gOmludDg7ICAgICAgICAgaW50OE1l
bVJlZgorICAgICAgICB3aGVuIDppbnQxNjsgICAgICAgIGludDE2TWVtUmVmCiAgICAgICAgIHdo
ZW4gOmludDMyOyAgICAgICAgaW50MzJNZW1SZWYKICAgICAgICAgd2hlbiA6aW50NjQ7ICAgICAg
ICBpbnQ2NE1lbVJlZgogICAgICAgICB3aGVuIDppbnRwdHI7ICAgICAgIGludHB0ck1lbVJlZgpA
QCAtMzg2LDcgKzM4OCw3IEBAIGVuZAogCiBkZWYgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRz
LCB0eXBlLCBvcGVyYXRvcikKICAgICByYWlzZSB1bmxlc3MgdHlwZSA9PSA6aW50cHRyIHx8IHR5
cGUgPT0gOnVpbnRwdHIgfHwgdHlwZSA9PSA6aW50MzIgfHwgdHlwZSA9PSA6dWludDMyIHx8IFwK
LSAgICAgICAgdHlwZSA9PSA6aW50NjQgfHwgdHlwZSA9PSA6dWludDY0IHx8IHR5cGUgPT0gOmRv
dWJsZQorICAgICAgICB0eXBlID09IDppbnQ2NCB8fCB0eXBlID09IDp1aW50NjQgfHwgdHlwZSA9
PSA6ZG91YmxlIHx8IHR5cGUgPT0gOmludDE2CiAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCiAg
ICAgICAgIG9wMSA9IG9wZXJhbmRzWzBdCiAgICAgICAgIG9wMiA9IG9wZXJhbmRzWzFdCkBAIC00
MDEsNiArNDAzLDkgQEAgZGVmIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgdHlwZSwgb3Bl
cmF0b3IpCiAgICAgaWYgZHN0LmlzX2E/IFJlZ2lzdGVySUQgYW5kICh0eXBlID09IDppbnQzMiBv
ciB0eXBlID09IDp1aW50MzIpCiAgICAgICAgIHRydW5jYXRpb25IZWFkZXIgPSAiKHVpbnQzMl90
KSgiCiAgICAgICAgIHRydW5jYXRpb25Gb290ZXIgPSAiKSIKKyAgICBlbHNpZiBkc3QuaXNfYT8g
UmVnaXN0ZXJJRCBhbmQgKHR5cGUgPT0gOmludDE2KQorICAgICAgICB0cnVuY2F0aW9uSGVhZGVy
ID0gIih1aW50MTZfdCkoIgorICAgICAgICB0cnVuY2F0aW9uRm9vdGVyID0gIikiCiAgICAgZWxz
ZQogICAgICAgICB0cnVuY2F0aW9uSGVhZGVyID0gIiIKICAgICAgICAgdHJ1bmNhdGlvbkZvb3Rl
ciA9ICIiCkBAIC01ODUsNiArNTkwLDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAg
IGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDY0LCAifCIpCiAgICAgICAgIHdoZW4g
Im9ycCIKICAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludHB0ciwg
InwiKQorICAgICAgICB3aGVuICJvcmgiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24o
b3BlcmFuZHMsIDppbnQxNiwgInwiKQogCiAgICAgICAgIHdoZW4gInhvcmkiCiAgICAgICAgICAg
ICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQzMiwgIl4iKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCmluZGV4IDdhMjEyYjIw
ZTJkLi5hNDFlMDZmN2Q2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vaW5zdHJ1Y3Rpb25zLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2luc3RydWN0aW9ucy5yYgpAQCAtNDYsNiArNDYsNyBAQCBNQUNST19JTlNUUlVDVElPTlMg
PQogICAgICAib3JpIiwKICAgICAgIm9yZiIsCiAgICAgICJvcmQiLAorICAgICAib3JoIiwKICAg
ICAgInJzaGlmdGkiLAogICAgICAidXJzaGlmdGkiLAogICAgICAicnNoaWZ0cCIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgppbmRleCBiNWYwN2IxNjhjMy4uNWE1MzJk
ODViNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMu
cmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgpAQCAtNTI3
LDcgKzUyNyw3IEBAIGRlZiBtaXBzTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKGxpc3QpCiAgICAg
ICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICB3aGVuIC9eKGFkZGl8c3ViaSkvCiAgICAgICAg
ICAgICAgICAgbmV3TGlzdCA8PCBub2RlLnJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1
cnNlKG5ld0xpc3QsIC0weDdmZmYuLjB4N2ZmZikKLSAgICAgICAgICAgIHdoZW4gImFuZGkiLCAi
YW5kcCIsICJvcmkiLCAib3JwIiwgInhvcmkiLCAieG9ycCIKKyAgICAgICAgICAgIHdoZW4gImFu
ZGkiLCAiYW5kcCIsICJvcmkiLCAib3JwIiwgIm9yaCIsICJ4b3JpIiwgInhvcnAiCiAgICAgICAg
ICAgICAgICAgbmV3TGlzdCA8PCBub2RlLnJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1
cnNlKG5ld0xpc3QsIDAuLjB4ZmZmZikKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IG5vZGUKQEAgLTg2MCw3ICs4NjAsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgog
ICAgICAgICAgICAgZW5kCiAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKICAgICAgICAgICAg
IGVtaXRNSVBTQ29tcGFjdCgiYW5kIiwgImFuZCIsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJv
cmkiLCAib3JwIgorICAgICAgICB3aGVuICJvcmkiLCAib3JwIiwgIm9yaCIKICAgICAgICAgICAg
IGVtaXRNSVBTQ29tcGFjdCgib3IiLCAib3JyIiwgb3BlcmFuZHMpCiAgICAgICAgIHdoZW4gIm9y
aXMiCiAgICAgICAgICAgICBlbWl0TUlQU0NvbXBhY3QoIm9yIiwgIm9ycnMiLCBvcGVyYW5kcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiCmluZGV4IDc1ZDdhOThmMzNm
Li4xZTY3MDRmYWI3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vcmlzYy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJi
CkBAIC00NjIsNyArNDYyLDcgQEAgZGVmIHJpc2NMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhsaXN0
KQogICAgICAgICAgICAgcG9zdEluc3RydWN0aW9ucyA9IFtdCiAgICAgICAgICAgICBhbm5vdGF0
aW9uID0gbm9kZS5hbm5vdGF0aW9uCiAgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCi0gICAg
ICAgICAgICB3aGVuICJhZGRpIiwgImFkZGlzIiwgImFuZGkiLCAibHNoaWZ0aSIsICJtdWxpIiwg
Im5lZ2kiLCAibm90aSIsICJvcmkiLCAib3JpcyIsCisgICAgICAgICAgICB3aGVuICJhZGRpIiwg
ImFkZGlzIiwgImFuZGkiLCAibHNoaWZ0aSIsICJtdWxpIiwgIm5lZ2kiLCAibm90aSIsICJvcmki
LCAib3JoIiwgIm9yaXMiLAogICAgICAgICAgICAgICAgICJyc2hpZnRpIiwgInVyc2hpZnRpIiwg
InN1YmkiLCAic3ViaXMiLCAieG9yaSIsIC9eYmkvLCAvXmJ0aS8sIC9eY2kvLCAvXnRpLwogICAg
ICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgppbmRleCAxMTJlZWQ3YjVjMS4u
NmRjYTA0NzFkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3g4Ni5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKQEAg
LTExMjMsNiArMTEyMyw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBoYW5kbGVY
ODZPcCgib3JwcyIsIDpmbG9hdCkKICAgICAgICAgd2hlbiAib3JkIgogICAgICAgICAgICAgaGFu
ZGxlWDg2T3AoIm9ycGQiLCA6ZG91YmxlKQorICAgICAgICB3aGVuICJvcmgiCisgICAgICAgICAg
ICBoYW5kbGVYODZPcCgib3Ije3g4NlN1ZmZpeCg6aGFsZil9IiwgOmhhbGYpCiAgICAgICAgIHdo
ZW4gInJzaGlmdGkiCiAgICAgICAgICAgICBoYW5kbGVYODZTaGlmdCgic2FyI3t4ODZTdWZmaXgo
OmludCl9IiwgOmludCkKICAgICAgICAgd2hlbiAicnNoaWZ0cCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKaW5kZXggOWIzZDBkNzRjOGQuLjU2MjJmMjg5Y2MxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaApAQCAtNDgsNiArNDgs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG51bUJp
dHNOZWVkZWQgPSA3OwogICAgICAgICBzdGF0aWNfYXNzZXJ0KChUeXBlQml0cyAmICgoMSA8PCBu
dW1CaXRzTmVlZGVkKSAtIDEpKSA9PSBUeXBlQml0cywgIlRoaXMgaXMgbmVjZXNzYXJ5IGZvciBj
b3JyZWN0bmVzcy4iKTsKIAorICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlwZSgp
CisgICAgICAgICAgICA6IFJlc3VsdFR5cGUodW5rbm93blR5cGUoKSkKKyAgICAgICAgeworICAg
ICAgICB9CiAgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBSZXN1bHRUeXBlKFR5cGUgdHlwZSkK
ICAgICAgICAgICAgIDogbV9iaXRzKHR5cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDE1ZjFmZDg1ZTQ0
Li5kYTlmYmNhNTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCkBAIC00NzcsOCArNDc3LDggQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3RvX3N0cmluZykKICNpZiBFTkFCTEUoSklUKQogc3RhdGljIHZvaWQgdXBkYXRlQXJp
dGhQcm9maWxlRm9yVW5hcnlBcml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpT
VmFsdWUgcmVzdWx0LCBKU1ZhbHVlIG9wZXJhbmQpCiB7Ci0gICAgQXJpdGhQcm9maWxlJiBwcm9m
aWxlID0gbWV0YWRhdGEubV9hcml0aFByb2ZpbGU7Ci0gICAgcHJvZmlsZS5vYnNlcnZlTEhTKG9w
ZXJhbmQpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEubV9hcml0
aFByb2ZpbGU7CisgICAgcHJvZmlsZS5vYnNlcnZlQXJnKG9wZXJhbmQpOwogICAgIEFTU0VSVChy
ZXN1bHQuaXNOdW1iZXIoKSB8fCByZXN1bHQuaXNCaWdJbnQoKSk7CiAgICAgaWYgKHJlc3VsdC5p
c051bWJlcigpKSB7CiAgICAgICAgIGlmICghcmVzdWx0LmlzSW50MzIoKSkgewpAQCAtNTM1LDcg
KzUzNSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpCiAjaWYgRU5BQkxFKERG
R19KSVQpCiBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpT
R2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBw
YywgSlNWYWx1ZSByZXN1bHQsIEpTVmFsdWUgbGVmdCwgSlNWYWx1ZSByaWdodCkKIHsKLSAgICBB
cml0aFByb2ZpbGUmIHByb2ZpbGUgPSAqY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7
CisgICAgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJp
dGhQcm9maWxlRm9yUEMocGMpOwogCiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAg
ICAgIGlmICghcmVzdWx0LmlzSW50MzIoKSkgewpAQCAtNTk2LDcgKzU5Niw3IEBAIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9hZGQpCiAgICAgSlNWYWx1ZSB2MSA9IEdFVF9DKGJ5dGVjb2RlLm1f
bGhzKS5qc1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSB2MiA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5q
c1ZhbHVlKCk7CiAKLSAgICBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpjb2RlQmxvY2st
PmFyaXRoUHJvZmlsZUZvclBDKHBjKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJv
ZmlsZSA9ICpjb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKHBjKTsKICAgICBhcml0
aFByb2ZpbGUub2JzZXJ2ZUxIU0FuZFJIUyh2MSwgdjIpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc0FkZChnbG9iYWxPYmplY3QsIHYxLCB2Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383377</attachid>
            <date>2019-11-12 13:47:23 -0800</date>
            <delta_ts>2019-11-12 13:51:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>134067</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OWFkMjMxNDRmOWYuLmQxOTAzNmQ5YWIyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTExLTEyICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgbmV3IHRlc3QgY2F0Y2hlcyB0aGUgbWV0YWRhdGEgY29ycnVwdGlvbiB0
aGF0IHVzZWQgdG8gaGFwcGVuIGluIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2gu
CisKKyAgICAgICAgKiBzdHJlc3MvcmVncmVzcy01NzAyMDMzOC5qczogQWRkZWQuCisKIDIwMTkt
MTEtMDggIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFRlbXBvcmFyaWx5IHNraXAgYW5vdGhlciBicm9rZW4gdGVzdCBvbiBNSVBTIGR1ZSB0byBPU1Ig
ZXhpdCB0byBMTEludApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVncmVzcy01NzAyMDMz
OC5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ3Jlc3MtNTcwMjAzMzguanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBiMDc0Y2Q1NDE3Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcmVncmVzcy01NzAyMDMzOC5qcwpAQCAtMCwwICsxLDE4IEBACisvL0Ag
cnVuRGVmYXVsdCgiLS1tYXhpbXVtT3B0aW1pemF0aW9uRGVsYXk9MCIpCitsZXQgY29kZSA9IGAK
K2xldCB6ID0ge307CitmdW5jdGlvbiBmb28oKSB7CisgIGNvbnN0IHggPSB1bmRlZmluZWQgKiBb
XTsKKyAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDAwMDsgaisrKSB7CisgICAgY29uc3QgeSA9IHgg
KiAwOworICAgIHpbe31dID0geTsKKyAgfQorfQorZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKysp
IHsKKyAgZm9vKCk7Cit9CitgOworCitmb3IgKGxldCBpPTA7IGk8MTAwOyBpKyspIHsKKyAgcnVu
U3RyaW5nKGNvZGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYmViNzNjZGFmNjYu
LmRkYzVkNzliMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOTAgQEAK
KzIwMTktMTEtMTIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAg
ICAgICBTcGxpdCBBcml0aFByb2ZpbGUgaW50byBhIFVuYXJ5IGFuZCBhIEJpbmFyeSB2ZXJzaW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4MzIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MjY2ODQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlaXRoIE1pbGxlci4KKworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGlt
ZSBvbmx5IHVzZWQgZm9yIGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQg
YmVpbmcgdXNlZCBmb3IgbmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1
c2VkIGZvciBpbmMgYW5kIGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBh
dGNoIEkgbWFrZSBhIHNlcGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3Ig
YSBzaW5nbGUgYXJndW1lbnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisK
KyAgICAgICAgQWZ0ZXIgZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXpl
ZCB0aGF0IHRoZSBSZXN1bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQ
cm9maWxlIGFyZSBub3QgbmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFs
cmVhZHkgaW4gdGhlIGJ5dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3Zp
bmcgdGhlbSBhbGxvd2VkIHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBm
aXQgaW4gMTYgYml0cyAoOSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRo
ZSB0d28ga2luZHMgc2VwYXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRl
cGVuZGVudGx5IGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlcXVpcmVkIGFk
ZGluZyB0aGUgIm9yaCIgaW5zdHJ1Y3Rpb24gdG8gdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCB0byBz
ZXQgYml0cyBpbiB0aGUgQXJpdGhQcm9maWxlLgorICAgICAgICBUaGlzIGluIHR1cm4gbW90aXZh
dGVkIHRoZSBhZGRpdGlvbiBvZiAic3RvcmVoIiwgYXMgb24gUklTQyBwbGF0Zm9ybXMgIm9yaCIg
b24gYSBtZW1vcnkgbG9jYXRpb24gaXMgYWN0dWFsbHkgbG9hZGggLT4gb3JoIC0+IHN0b3JlaC4K
KworICAgICAgICBGaW5hbGx5IGl0IHJlcXVpcmVkIGFkZGluZyBzdXBwb3J0IGZvciBvcjE2KFRy
dXN0ZWRJbW0zMiwgQWJzb2x1dGVBZGRyZXNzKSBpbiB0aGUgTWFjcm9Bc3NlbWJsZXIgZm9yIHRo
ZSBJQ3MuCisgICAgICAgIEluc3RlYWQgb2YgZGlyZWN0bHkgY2FsbGluZyBpdCAobGlrZSB3ZSB1
c2VkIHRvIGRvIHdpdGggb3IzMiksIEkgaW50cm9kdWNlZCBBcml0aFByb2ZpbGU6OmVtaXRVbmNv
bmRpdGlvbmFsU2V0LCBzbyB0aGF0IGlmIGVpdGhlciBBcml0aFByb2ZpbGUgZXZlciBjaGFuZ2Vz
IGluIHNpemUgYWdhaW4gd2UnbGwgaGF2ZSBmZXdlciBwbGFjZXMgdG8gY2hhbmdlLgorCisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6b3IxNik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6b3IxNik6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om9yMTYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6b3IxNik6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjpvcjE2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20u
Y3BwOgorICAgICAgICAoSlNDOjp0ZXN0T3JJbW1NZW0pOgorICAgICAgICAoSlNDOjpydW4pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6
OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxk
RW1pdFNldE5vbk51bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0
ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNvbmRp
dGlvbmFsU2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6
ZGlkT2JzZXJ2ZU5vbkludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpk
aWRPYnNlcnZlRG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRP
YnNlcnZlTm9uTmVnWmVyb0RvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTo6ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFBy
b2ZpbGU6OmRpZE9ic2VydmVOb25OdW1lcmljIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQ
cm9maWxlOjpkaWRPYnNlcnZlQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9m
aWxlOjpkaWRPYnNlcnZlSW50MzJPdmVyZmxvdyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRo
UHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpB
cml0aFByb2ZpbGU6OnNldE9ic2VydmVkTm9uTmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6
OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWROZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6
QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5vbk51bWVyaWMpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxl
OjpzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3cpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6
OnNldE9ic2VydmVkSW50NTJPdmVyZmxvdyk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6
b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6YWRkcmVzc09mQml0
cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6Yml0cyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6QXJpdGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJp
dGhQcm9maWxlOjpoYXNCaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpz
ZXRCaXQpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6VW5hcnlBcml0aFByb2Zp
bGUpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKToK
KyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cyk6Cisg
ICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdPYnNlcnZlZFR5cGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6c2V0QXJnT2JzZXJ2ZWRUeXBlKToKKyAg
ICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nhd0ludDMyKToKKyAgICAgICAgKEpT
Qzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nhd051bWJlcik6CisgICAgICAgIChKU0M6OlVuYXJ5
QXJpdGhQcm9maWxlOjphcmdTYXdOb25OdW1iZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRo
UHJvZmlsZTo6b2JzZXJ2ZUFyZyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjpp
c09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpC
aW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9i
c2VydmVkSW50SW50Qml0cyk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2Jz
ZXJ2ZWROdW1iZXJJbnRCaXRzKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpv
YnNlcnZlZEludE51bWJlckJpdHMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6
Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cyk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJv
ZmlsZTo6c2V0TGhzT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9m
aWxlOjpzZXRSaHNPYnNlcnZlZFR5cGUpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2Zp
bGU6Om9ic2VydmVMSFMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2Vy
dmVMSFNBbmRSSFMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2
ZWRUeXBlRW1wdHkpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFk
ZEpJVEFkZElDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklUU3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmFkZEpJVE5lZ0lDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFBy
b2ZpbGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmFyeUFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJp
bmFyeUFyaXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmFyeUFy
aXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTcGVj
aWFsQXJpdGhGYXN0Q2FzZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElDKToKKyAgICAgICAgKiBieXRlY29kZS9GaXRz
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6
CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRW
YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6
OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmg6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
VW5hcnlPcCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVu
YXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bWFrZURpdlNhZmUpOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlNYXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SklU
QWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUQWRkR2Vu
ZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJQ0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rpdik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
c3ViKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
cGllZEFyaXRoUHJvZmlsZSk6CisgICAgICAgICogaml0L0pJVE1hdGhJQy5oOgorICAgICAgICAo
SlNDOjpKSVRNYXRoSUM6OkpJVE1hdGhJQyk6CisgICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2Vu
ZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkpJVEJpbmFyeU1hdGhJQzo6SklUQmluYXJ5TWF0aElDKToKKyAg
ICAgICAgKEpTQzo6SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAgICAgICAgKiBq
aXQvSklUTXVsR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpn
ZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAgICAgICAqIGpp
dC9KSVROZWdHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5lcmF0b3I6Omdl
bmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAg
ICAgICogaml0L0pJVFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVy
YXRvcjo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVy
Zm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybS5yYjoKKyAgICAgICAgKiBvZmZs
aW5lYXNtL2FybTY0LnJiOgorICAgICAgICAqIG9mZmxpbmVhc20vY2xvb3AucmI6CisgICAgICAg
ICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6CisgICAgICAgICogb2ZmbGluZWFzbS9taXBz
LnJiOgorICAgICAgICAqIG9mZmxpbmVhc20vcmlzYy5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNt
L3g4Ni5yYjoKKyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpS
ZXN1bHRUeXBlOjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6
CisgICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAg
ICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTEtMTEgIFR1b21hcyBLYXJra2Fp
bmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CiAKICAgICAgICAgVHlwbyBpbiBhc3NlcnRp
b24gaW4gdmFsaWRhdGVDUFMgaW4gREZHVmFsaWRhdGUuY3BwICgiVW5leGVjcHRlZCIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCmluZGV4IGFjZjZjNGNiNWFmLi4yMTBjNjY3Mjc0YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTYxNSw2
ICs2MTUsMjAgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5uZWc8NjQ+KGRlc3QsIHNy
Yyk7CiAgICAgfQogCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgTG9naWNhbEltbWVkaWF0ZSBsb2dpY2FsSW1t
ID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlMzIoaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAo
bG9naWNhbEltbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIGxvYWQxNihhZGRyZXNzLm1fcHRy
LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIub3JyPDMyPihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVy
LCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAgIHN0b3JlMTYoZGF0YVRlbXBSZWdpc3RlciwgYWRk
cmVzcy5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMTYoYWRkcmVz
cy5tX3B0ciwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwor
ICAgICAgICAgICAgb3IzMihpbW0sIG1lbW9yeVRlbXBSZWdpc3RlciwgZ2V0Q2FjaGVkRGF0YVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIHN0b3JlMTYoZGF0YVRl
bXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lk
IG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG9y
MzIoZGVzdCwgc3JjLCBkZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggOTVjZDczZjIzOWQuLjM1NmE5Mzdi
NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaApAQCAtMzY1LDYgKzM2NSwyNCBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5vcnIoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CisKKyAgICB2b2lk
IG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCisgICAgeworICAg
ICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVu
Y29kZWRJbW0oaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkgewor
ICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGxvYWQxNihhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkYXRhVGVtcFJlZ2lz
dGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBhcm1JbW0pOworICAgICAgICAgICAgc3RvcmUxNihkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICBsb2FkMTYoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBS
ZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAg
c3RvcmUxNihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
fQorICAgIH0KICAgICAKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29sdXRlQWRk
cmVzcyBkZXN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IGQwY2RmMDJlNDI1Li4wZTE5MWExYmI3NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oCkBAIC00NzUsNiArNDc1LDI1IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIuc3VidShkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzcmMpOwogICAgIH0KIAorICAgIHZv
aWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAobV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICAvLyBUT0RP
OiBTd2FwIGRhdGFUZW1wUmVnaXN0ZXIgYW5kIGltbVRlbXBSZWdpc3RlciB1c2FnZQorICAgICAg
ICAgICAgbG9hZDE2KGRlc3QubV9wdHIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBv
cjMyKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHN0b3JlMTYoaW1tVGVtcFJl
Z2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVpbnRw
dHJfdCBhZHIgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZGVzdC5tX3B0cik7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5sdWkoYWRkclRlbXBSZWdpc3RlciwgKGFkciArIDB4ODAwMCkg
Pj4gMTYpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubHcoaW1tVGVtcFJlZ2lzdGVyLCBhZGRy
VGVtcFJlZ2lzdGVyLCBhZHIgJiAweGZmZmYpOworICAgICAgICAgICAgb3IxNihpbW0sIGltbVRl
bXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhpbW1UZW1wUmVnaXN0ZXIs
IGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmZmZik7CisgICAgICAgIH0KKyAgICB9CisKICAg
ICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLm9ySW5zbihkZXN0LCBkZXN0LCBzcmMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCmluZGV4IDRhZmU4
MTdjMzZiLi5iODFjMjJiZjgzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaApAQCAtOTksNiArOTksMTEgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHJlZywgYWRkcmVzcy5tX3B0cik7CiAg
ICAgfQorCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3J3X2ltKGltbS5tX3ZhbHVlLCBh
ZGRyZXNzLm1fcHRyKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIg
aW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggYjk5
NmNhNDlkMzkuLmRkMTRhNmQ0OTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC00Nyw2ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoMzI7CiAgICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEFkZDMyOwogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyOworICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpvcjE2OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdWIzMjsK
ICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZDg7CiAgICAgdXNpbmcgTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQzMjsKQEAgLTg5LDYgKzkwLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgb3IzMihyZWcsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsKICAgICB9CiAK
KyAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0
Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgb3IxNihpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVy
KCkpKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IDQxOTdjYTZhOTk1Li41OWJiYzI3N2ZhZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTExMDQs
NiArMTEwNCwzMSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tWYWx1ZXMoKQogfQogI2Vu
ZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQogCit2b2lkIHRlc3RPckltbU1lbSgpCit7CisgICAg
Ly8gRklYTUU6IHRoaXMgZG9lcyBub3QgdGVzdCB0aGF0IHRoZSBvciBkb2VzIG5vdCB0b3VjaCBi
ZXlvbmQgaXRzIHdpZHRoLgorICAgIC8vIEkgYW0gbm90IHN1cmUgaG93IHRvIGRvIHN1Y2ggYSB0
ZXN0IHdpdGhvdXQgYSBsb3Qgb2YgY29tcGxleGl0eSAocnVubmluZyBtdWx0aXBsZSB0aHJlYWRz
LCB3aXRoIGEgcmFjZSBvbiB0aGUgaGlnaCBiaXRzIG9mIHRoZSBtZW1vcnkgbG9jYXRpb24pLgor
ICAgIHVpbnQ2NF90IG1lbW9yeUxvY2F0aW9uID0gMHgxMjM0MTIzNDsKKyAgICBhdXRvIG9yMzIg
PSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKKyAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoNDIpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcygmbWVtb3J5TG9jYXRpb24pKTsK
KyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOwor
ICAgIH0pOworICAgIGludm9rZTx2b2lkPihvcjMyKTsKKyAgICBDSEVDS19FUShtZW1vcnlMb2Nh
dGlvbiwgMHgxMjM0MTIzNCB8IDQyKTsKKworICAgIG1lbW9yeUxvY2F0aW9uID0gMHgxMjM0MTIz
NDsKKyAgICBhdXRvIG9yMTYgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAg
ICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKyAgICAgICAgaml0Lm9yMTYoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcygm
bWVtb3J5TG9jYXRpb24pKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAg
ICAgICAgaml0LnJldCgpOworICAgIH0pOworICAgIGludm9rZTx2b2lkPihvcjE2KTsKKyAgICBD
SEVDS19FUShtZW1vcnlMb2NhdGlvbiwgMHgxMjM0MTIzNCB8IDQyKTsKK30KKwogdm9pZCB0ZXN0
Qnl0ZVN3YXAoKQogewogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKQEAgLTEzNjAsNiAr
MTM4NSw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKIAogICAgIFJVTih0ZXN0Q2Fn
ZVByZXNlcnZlc1BBQ0ZhaWx1cmVCaXQoKSk7CiAKKyAgICBSVU4odGVzdE9ySW1tTWVtKCkpOwor
CiAgICAgaWYgKHRhc2tzLmlzRW1wdHkoKSkKICAgICAgICAgdXNhZ2UoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAppbmRleCA5OTk5MzNi
OGMwZS4uYWFlZDNmNzdiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Bcml0aFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Bcml0aFByb2ZpbGUuY3BwCkBAIC0zMiw3ICszMiw4IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
I2lmIEVOQUJMRShKSVQpCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0Nh
bGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkK
K3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZp
ZWxkVHlwZT46OmVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVn
cyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCFzaG91bGRFbWl0U2V0
RG91YmxlKCkgJiYgIXNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgJiYgIXNob3VsZEVtaXRTZXRC
aWdJbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNDEgKzU5LDU4IEBAIHZvaWQgQXJpdGhQ
cm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3Mg
cmVncywgVGFnUmVnCiAgICAgZG9uZS5saW5rKCZqaXQpOwogfQogCi1ib29sIEFyaXRoUHJvZmls
ZTo6c2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVs
ZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91
YmxlKCkgY29uc3QKIHsKLSAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxlOjpJbnQzMk92
ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpOZWda
ZXJvRG91YmxlIHwgQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlOworICAgIEJpdGZpZWxk
VHlwZSBtYXNrID0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOZWdaZXJvRG91Ymxl
IHwgTm9uTmVnWmVyb0RvdWJsZTsKICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7
CiB9CiAKLXZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0
KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgordm9pZCBBcml0aFByb2Zp
bGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QK
IHsKICAgICBpZiAoc2hvdWxkRW1pdFNldERvdWJsZSgpKQotICAgICAgICBqaXQub3IzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6OkludDMyT3ZlcmZsb3cgfCBBcml0
aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cgfCBBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUgfCBB
cml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRk
cmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0
LCBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9Eb3VibGUgfCBOb25OZWda
ZXJvRG91YmxlKTsKIH0KIAotYm9vbCBBcml0aFByb2ZpbGU6OnNob3VsZEVtaXRTZXROb25OdW1l
cmljKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQ
cm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3QKIHsK
LSAgICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxlOjpOb25OdW1lcmljOworICAgIEJpdGZp
ZWxkVHlwZSBtYXNrID0gQXJpdGhQcm9maWxlOjpOb25OdW1lcmljOwogICAgIHJldHVybiAobV9i
aXRzICYgbWFzaykgIT0gbWFzazsKIH0KIAotYm9vbCBBcml0aFByb2ZpbGU6OnNob3VsZEVtaXRT
ZXRCaWdJbnQoKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgordm9pZCBB
cml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJz
JiBqaXQpIGNvbnN0CiB7Ci0gICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6QmlnSW50
OwotICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0gbWFzazsKKyAgICBpZiAoc2hvdWxkRW1p
dFNldE5vbk51bWVyaWMoKSkKKyAgICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBOb25O
dW1lcmljKTsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRTZXROb25OdW1lcmljKENDYWxs
SGVscGVycyYgaml0KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9v
bCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0
CiB7Ci0gICAgaWYgKHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkpCi0gICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYyksIEND
YWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOworICAgIEJpdGZp
ZWxkVHlwZSBtYXNrID0gQXJpdGhQcm9maWxlOjpCaWdJbnQ7CisgICAgcmV0dXJuIChtX2JpdHMg
JiBtYXNrKSAhPSBtYXNrOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNldEJpZ0ludChD
Q2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4K
K3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxw
ZXJzJiBqaXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXRCaWdJbnQoKSkKLSAgICAg
ICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpCaWdJ
bnQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAg
ICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBCaWdJbnQpOwogfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0VW5jb25kaXRpb25hbFNldChDQ2FsbEhlbHBlcnMmIGppdCwgQml0ZmllbGRUeXBlIG1hc2sp
IGNvbnN0Cit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Qml0ZmllbGRUeXBlLCB1
aW50MTZfdD46OnZhbHVlKTsKKyAgICBqaXQub3IxNihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihtYXNrKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7
Cit9CisKKy8vIEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBh
Ym92ZSBmb3IgVW5hcnlBcml0aFByb2ZpbGUvQmluYXJ5QXJpdGhQcm9maWxlCisvLyBJZiBjaGFu
Z2luZyB0aGUgc2l6ZSBvZiBlaXRoZXIsIGFkZCB0aGUgY29ycmVzcG9uZGluZyBsaW5lcyBoZXJl
LgordGVtcGxhdGUgY2xhc3MgQXJpdGhQcm9maWxlPHVpbnQxNl90PjsKICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKQEAgLTEwMSw3ICsxMTksOCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBBcml0aFByb2ZpbGU8VD4mIHByb2ZpbGUpCiB7CiAgICAgY29uc3QgY2hhciogc2VwYXJhdG9y
ID0gIiI7CiAKQEAgLTEzNSwxOSArMTU0LDMwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBjb25zdCBBcml0aFByb2ZpbGUmIHByb2ZpbGUpCiAgICAgICAgICAgICBzZXBh
cmF0b3IgPSAifCI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHByb2ZpbGUudG9va1NwZWNp
YWxGYXN0UGF0aCgpKQotICAgICAgICBvdXQucHJpbnQoc2VwYXJhdG9yLCAiVG9vayBzcGVjaWFs
IGZhc3QgcGF0aC4iKTsKICAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQor
eworICAgIHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlB
cml0aFByb2ZpbGVCYXNlPj4ocHJvZmlsZSkpOworCisgICAgb3V0LnByaW50KCIgQXJnIE9ic2Vy
dmVkVHlwZTo8Iik7CisgICAgb3V0LnByaW50KHByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBlKCkpOwor
ICAgIG91dC5wcmludCgiPiIpOworfQorCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlJiBwcm9maWxlKQoreworICAgIHByaW50SW50
ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNl
Pj4ocHJvZmlsZSkpOworCisgICAgaWYgKHByb2ZpbGUudG9va1NwZWNpYWxGYXN0UGF0aCgpKQor
ICAgICAgICBvdXQucHJpbnQoIiBUb29rIHNwZWNpYWwgZmFzdCBwYXRoLiIpOwogCiAgICAgb3V0
LnByaW50KCIgTEhTIE9ic2VydmVkVHlwZTo8Iik7CiAgICAgb3V0LnByaW50KHByb2ZpbGUubGhz
T2JzZXJ2ZWRUeXBlKCkpOwogICAgIG91dC5wcmludCgiPiBSSFMgT2JzZXJ2ZWRUeXBlOjwiKTsK
ICAgICBvdXQucHJpbnQocHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKSk7CiAgICAgb3V0LnByaW50
KCI+Iik7Ci0KLSAgICBvdXQucHJpbnQoIiBMSFMgUmVzdWx0VHlwZTo8IiwgUmF3UG9pbnRlcihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocHJvZmlsZS5saHNSZXN1
bHRUeXBlKCkuYml0cygpKSkpKTsKLSAgICBvdXQucHJpbnQoIj4gUkhTIFJlc3VsdFR5cGU6PCIs
IFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHBy
b2ZpbGUucmhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7Ci0gICAgb3V0LnByaW50KCI+Iik7CiB9
CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBKU0M6Ok9ic2Vy
dmVkVHlwZSYgb2JzZXJ2ZWRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FyaXRoUHJvZmlsZS5oCmluZGV4IGZjYzRlMjgxOGJlLi4wNjg5ZmFhNTIyOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaApAQCAtNjYsMTE5ICs2
NiwyMTkgQEAgcHJpdmF0ZToKICAgICB1aW50OF90IG1fYml0cyB7IDAgfTsKIH07CiAKLXN0cnVj
dCBBcml0aFByb2ZpbGUgewotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IG51bWJlck9mRmxhZ0JpdHMgPSA2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgcmhz
UmVzdWx0VHlwZVNoaWZ0ID0gbnVtYmVyT2ZGbGFnQml0czsKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQzMl90IGxoc1Jlc3VsdFR5cGVTaGlmdCA9IHJoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3Vs
dFR5cGU6Om51bUJpdHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNP
YnNlcnZlZFR5cGVTaGlmdCA9IGxoc1Jlc3VsdFR5cGVTaGlmdCArIFJlc3VsdFR5cGU6Om51bUJp
dHNOZWVkZWQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNPYnNlcnZlZFR5cGVT
aGlmdCA9IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVk
OwotCi0gICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPT0gMywg
IldlIG1ha2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQgdGhhdCBoZXJlLiIpOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KH4oKDEgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKHJo
c09ic2VydmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEgPDwgKHJoc09ic2VydmVkVHlwZVNoaWZ0ICsg
MikpKSk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjbGVhckxoc09ic2VydmVkVHlw
ZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ofigoMSA8PCBsaHNPYnNlcnZlZFR5cGVT
aGlmdCkgfCAoMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyAxKSkgfCAoMSA8PCAobGhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQgKyAyKSkpKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
cmVzdWx0VHlwZU1hc2sgPSAoMSA8PCBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2Jz
ZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQml0Zmll
bGRUeXBlPgorY2xhc3MgQXJpdGhQcm9maWxlIHsKK3B1YmxpYzoKKyAgICBlbnVtIE9ic2VydmVk
UmVzdWx0cyA6IEJpdGZpZWxkVHlwZSB7CisgICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8
IDAsCisgICAgICAgIE5lZ1plcm9Eb3VibGUgICAgPSAxIDw8IDEsCisgICAgICAgIE5vbk51bWVy
aWMgICAgICAgPSAxIDw8IDIsCisgICAgICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCisg
ICAgICAgIEludDUyT3ZlcmZsb3cgICAgPSAxIDw8IDQsCisgICAgICAgIEJpZ0ludCAgICAgICAg
ICAgPSAxIDw8IDUsCisgICAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG9ic2Vy
dmVkUmVzdWx0c051bUJpdHNOZWVkZWQgPSA2OwogCi0gICAgZW51bSBjbGFzcyBDb25zdGFudFRh
ZyB7IENvbnN0YW50IH07CisgICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJl
dHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJp
YyB8IEJpZ0ludCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVy
biBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wg
ZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5l
Z1plcm9Eb3VibGUpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0
IHsgcmV0dXJuIGhhc0JpdHMoTmVnWmVyb0RvdWJsZSk7IH0KKyAgICBib29sIGRpZE9ic2VydmVO
b25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQorICAgIGJv
b2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQor
ICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRz
KEludDMyT3ZlcmZsb3cpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNv
bnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KIAotcHVibGljOgotICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOwotICAgIHN0YXRp
Y19hc3NlcnQoKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVl
ZGVkKSA8PSAoc2l6ZW9mKHVpbnQzMl90KSAqIDgpIC0gMSwgIlNob3VsZCBmaXQgaW4gYSB1aW50
MzJfdC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0ICYgfmNsZWFy
TGhzT2JzZXJ2ZWRUeXBlQml0TWFzayksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0
LiIpOwotICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xlYXJMaHNPYnNl
cnZlZFR5cGVCaXRNYXNrLCAiVGhlc2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIpOwotICAgIHN0
YXRpY19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0
TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0
aEJpdCBzaG91bGQgYmUgYSBoaWdoZXIgYml0LiIpOworICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25O
ZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAgICB2b2lkIHNl
dE9ic2VydmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9CisgICAg
dm9pZCBzZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQorICAg
IHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJbnQpOyB9CisgICAgdm9pZCBz
ZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQorICAg
IHZvaWQgc2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7
IH0KIAotICAgIEFyaXRoUHJvZmlsZShSZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBBcml0aFBy
b2ZpbGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBhcmcpCisgICAgdm9pZCBvYnNlcnZlUmVzdWx0
KEpTVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJp
dHMoKSA9PSBhcmcuYml0cygpKTsKLSAgICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlz
RW1wdHkoKSk7Ci0gICAgICAgIEFTU0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwor
ICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgbV9iaXRzIHw9IEludDMyT3Zl
cmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGU7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICYmIHZh
bHVlLmlzQmlnSW50KCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9iaXRzIHw9IE5vbk51bWVyaWM7CiAg
ICAgfQogCi0gICAgQXJpdGhQcm9maWxlKFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykK
LSAgICAgICAgOiBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBsaHMsIHJocykK
KyAgICBjb25zdCB2b2lkKiBhZGRyZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4gJm1fYml0czsg
fQorCisjaWYgRU5BQkxFKEpJVCkKKyAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJP
dmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEK
KyAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMu
CisgICAgdm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywg
VGFnUmVnaXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOworCisgICAgLy8gU2V0cyAoSW50
MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0Rv
dWJsZSkuCisgICAgYm9vbCBzaG91bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7CisgICAgdm9pZCBl
bWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYpIGNvbnN0OworCisgICAgLy8gU2V0cyBOb25OdW1l
cmljCisgICAgdm9pZCBlbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAg
ICBib29sIHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIEJp
Z0ludAorICAgIHZvaWQgZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKyAgICBi
b29sIHNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdDsKKworICAgIHZvaWQgZW1pdFVuY29uZGl0
aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiwgQml0ZmllbGRUeXBlKSBjb25zdDsKKyNlbmRpZiAvLyBF
TkFCTEUoSklUKQorCisgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMoKSBjb25zdCB7IHJldHVy
biBtX2JpdHM7IH0KKworcHJvdGVjdGVkOgorICAgIEFyaXRoUHJvZmlsZSgpCiAgICAgewotICAg
ICAgICBBU1NFUlQobGhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9PSBsaHMuYml0cygpICYmIHJoc1Jl
c3VsdFR5cGUoKS5iaXRzKCkgPT0gcmhzLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVChsaHNPYnNl
cnZlZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCku
aXNFbXB0eSgpKTsKICAgICB9CiAKLSAgICBBcml0aFByb2ZpbGUoT3BlcmFuZFR5cGVzIHR5cGVz
KQotICAgICAgICA6IEFyaXRoUHJvZmlsZSh0eXBlcy5maXJzdCgpLCB0eXBlcy5zZWNvbmQoKSkK
LSAgICB7IH0KKyAgICBib29sIGhhc0JpdHMoaW50IG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fYml0
cyAmIG1hc2s7IH0KKyAgICB2b2lkIHNldEJpdChpbnQgbWFzaykgeyBtX2JpdHMgfD0gbWFzazsg
fQorCisgICAgQml0ZmllbGRUeXBlIG1fYml0cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJlIHRvIHVw
ZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2ZXIgc3Rv
cmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRhdGlvbiB0byBpdC4KK307CisKKy8qIFRo
aXMgY2xhc3Mgc3RvcmVzIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBpbiAxNiBiaXRzOgorICog
LSBPYnNlcnZlZFJlc3VsdHMKKyAqIC0gT2JzZXJ2ZWRUeXBlIGZvciB0aGUgYXJndW1lbnQKKyAq
LwordXNpbmcgVW5hcnlBcml0aFByb2ZpbGVCYXNlID0gdWludDE2X3Q7CitjbGFzcyBVbmFyeUFy
aXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBhcmdPYnNlcnZlZFR5cGVTaGlmdCA9IG9i
c2VydmVkUmVzdWx0c051bUJpdHNOZWVkZWQ7CiAKLSAgICBBcml0aFByb2ZpbGUoKSA9IGRlZmF1
bHQ7CisgICAgc3RhdGljX2Fzc2VydChhcmdPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlw
ZTo6bnVtQml0c05lZWRlZCA8PSBzaXplb2YoVW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJT
aG91bGQgZml0IGluIGEgdGhlIHR5cGUgb2YgdGhlIHVuZGVybHlpbmcgYml0ZmllbGQuIik7CiAK
LSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBmcm9tSW50KHVpbnQzMl90IGJpdHMp
CisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJBcmdPYnNl
cnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8VW5hcnlBcml0aFByb2ZpbGVCYXNlPih+KDBi
MTExIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIFVu
YXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBl
OjpudW1CaXRzTmVlZGVkKSAtIDE7CisKK3B1YmxpYzoKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSgp
CisgICAgICAgIDogQXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4oKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIEFyaXRoUHJvZmlsZSB7IENvbnN0YW50VGFnOjpDb25zdGFudCwgYml0
cyB9OworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRVbmFyeUludCgpCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRJbnRCaXRzKCkKICAgICB7
CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVk
VHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0g
b2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoYml0cyA9PSAweDgwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUlu
dChiaXRzKTsKKyAgICAgICAgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0g
b2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQ7CisgICAgICAgIHJl
dHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNl
cnZlZFVuYXJ5TnVtYmVyKCkKKyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxl
QmFzZSBvYnNlcnZlZE51bWJlckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2Vy
dmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9Owot
ICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8
PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4
MTAwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAgY29u
c3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2JzZXJ2ZWROdW1iZXIuYml0cygp
IDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlJbnRJbnQoKQor
CisgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBhcmdPYnNlcnZlZFR5cGUoKSBjb25zdCB7IHJl
dHVybiBPYnNlcnZlZFR5cGUoKG1fYml0cyA+PiBhcmdPYnNlcnZlZFR5cGVTaGlmdCkgJiBvYnNl
cnZlZFR5cGVNYXNrKTsgfQorICAgIHZvaWQgc2V0QXJnT2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlw
ZSB0eXBlKQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSBtX2Jp
dHM7CisgICAgICAgIGJpdHMgJj0gY2xlYXJBcmdPYnNlcnZlZFR5cGVCaXRNYXNrOworICAgICAg
ICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0OworICAgICAgICBt
X2JpdHMgPSBiaXRzOworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2ZWRUeXBlKCkgPT0gdHlwZSk7
CisgICAgfQorCisgICAgdm9pZCBhcmdTYXdJbnQzMigpIHsgc2V0QXJnT2JzZXJ2ZWRUeXBlKGFy
Z09ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpKTsgfQorICAgIHZvaWQgYXJnU2F3TnVtYmVyKCkg
eyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigpKTsgfQor
ICAgIHZvaWQgYXJnU2F3Tm9uTnVtYmVyKCkgeyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2
ZWRUeXBlKCkud2l0aE5vbk51bWJlcigpKTsgfQorCisgICAgdm9pZCBvYnNlcnZlQXJnKEpTVmFs
dWUgYXJnKQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0
aGlzOworICAgICAgICBpZiAoYXJnLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGlmIChhcmcu
aXNJbnQzMigpKQorICAgICAgICAgICAgICAgIG5ld1Byb2ZpbGUuYXJnU2F3SW50MzIoKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdQcm9maWxlLmFyZ1Nhd051bWJlcigp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5ld1Byb2ZpbGUuYXJnU2F3Tm9uTnVtYmVy
KCk7CisKKyAgICAgICAgbV9iaXRzID0gbmV3UHJvZmlsZS5iaXRzKCk7CisgICAgfQorCisgICAg
Ym9vbCBpc09ic2VydmVkVHlwZUVtcHR5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhcmdPYnNl
cnZlZFR5cGUoKS5pc0VtcHR5KCk7CisgICAgfQorCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworfTsKKworLyogVGhpcyBjbGFzcyBzdG9yZXMgdGhlIGZvbGxv
d2luZyBjb21wb25lbnRzIGluIDE2IGJpdHM6CisgKiAtIE9ic2VydmVkUmVzdWx0cworICogLSBP
YnNlcnZlZFR5cGUgZm9yIHJpZ2h0LWhhbmQtc2lkZQorICogLSBPYnNlcnZlZFR5cGUgZm9yIGxl
ZnQtaGFuZC1zaWRlCisgKiAtIGEgYml0IHVzZWQgYnkgZGl2aXNpb24gdG8gaW5kaWNhdGUgd2hl
dGhlciBhIHNwZWNpYWwgZmFzdCBwYXRoIHdhcyB0YWtlbgorICovCit1c2luZyBCaW5hcnlBcml0
aFByb2ZpbGVCYXNlID0gdWludDE2X3Q7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGUgOiBwdWJs
aWMgQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+IHsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQzMl90IHJoc09ic2VydmVkVHlwZVNoaWZ0ID0gb2JzZXJ2ZWRSZXN1bHRzTnVt
Qml0c05lZWRlZDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGxoc09ic2VydmVkVHlw
ZVNoaWZ0ID0gcmhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVk
ZWQ7CisKKyAgICBzdGF0aWNfYXNzZXJ0KE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA9PSAz
LCAiV2UgbWFrZSBhIGhhcmQgYXNzdW1wdGlvbiBhYm91dCB0aGF0IGhlcmUuIik7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFyUmhzT2JzZXJ2ZWRUeXBl
Qml0TWFzayA9IHN0YXRpY19jYXN0PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwg
cmhzT2JzZXJ2ZWRUeXBlU2hpZnQpKTsKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2UgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8Qmlu
YXJ5QXJpdGhQcm9maWxlQmFzZT4ofigwYjExMSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkpOwor
CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkVHlw
ZU1hc2sgPSAoMSA8PCBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpIC0gMTsKKworcHVibGlj
OgorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBzcGVjaWFsRmFz
dFBhdGhCaXQgPSAxIDw8IChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVt
Qml0c05lZWRlZCk7CisgICAgc3RhdGljX2Fzc2VydCgobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBP
YnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgKyAxKSA8PSBzaXplb2YoQmluYXJ5QXJpdGhQcm9m
aWxlQmFzZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHVpbnQzMl90LiIpOworICAgIHN0YXRpY19h
c3NlcnQoIShzcGVjaWFsRmFzdFBhdGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNr
KSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QuIik7CisgICAgc3RhdGljX2Fzc2Vy
dChzcGVjaWFsRmFzdFBhdGhCaXQgJiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVz
ZSBiaXRzIHNob3VsZCBpbnRlcnNlY3QuIik7CisgICAgc3RhdGljX2Fzc2VydChzcGVjaWFsRmFz
dFBhdGhCaXQgPiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhlc2UgYml0cyBzaG91
bGQgbm90IGludGVyc2VjdCBhbmQgc3BlY2lhbEZhc3RQYXRoQml0IHNob3VsZCBiZSBhIGhpZ2hl
ciBiaXQuIik7CisKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUoKQorICAgICAgICA6IEFyaXRoUHJv
ZmlsZTxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPiAoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxo
c09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChyaHNPYnNlcnZlZFR5
cGUoKS5pc0VtcHR5KCkpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJp
dGhQcm9maWxlQmFzZSBvYnNlcnZlZEludEludEJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3Rl
eHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMy
KCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5i
aXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkSW50MzIuYml0cygpIDw8
IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4
OTAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25z
dGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkSW50MzIuYml0cygp
IDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCByaHNP
YnNlcnZlZFR5cGVTaGlmdCk7CisgICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0
aWMgY29uc3RleHByIEFyaXRoUHJvZmlsZSBvYnNlcnZlZEJpbmFyeU51bWJlckludCgpCisgICAg
c3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkTnVtYmVySW50
Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVt
YmVyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigpIH07CiAgICAgICAgIGNvbnN0ZXhwciBP
YnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07
Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMo
KSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhz
T2JzZXJ2ZWRUeXBlU2hpZnQpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMTAw
MDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4
cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8
PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKQorICAgIHN0
YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZEludE51bWJlckJp
dHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJl
ciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwogICAgICAgICBjb25zdGV4cHIgT2Jz
ZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9Owot
ICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZEludDMyLmJpdHMoKSA8
PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IHJoc09i
c2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09IDB4YTAwMDAw
LCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIg
QmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxo
c09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2
ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKQorICAgIHN0
YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJlck51bWJl
ckJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51
bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwotICAgICAgICBjb25zdGV4cHIg
dWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBl
U2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDEyMDAwMDAsICIiKTsKLSAgICAgICAg
cmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2Zp
bGVCYXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNo
aWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOwor
ICAgICAgICByZXR1cm4gYml0czsKICAgICB9CiAKLSAgICBlbnVtIE9ic2VydmVkUmVzdWx0cyB7
Ci0gICAgICAgIE5vbk5lZ1plcm9Eb3VibGUgPSAxIDw8IDAsCi0gICAgICAgIE5lZ1plcm9Eb3Vi
bGUgICAgPSAxIDw8IDEsCi0gICAgICAgIE5vbk51bWVyaWMgICAgICAgPSAxIDw8IDIsCi0gICAg
ICAgIEludDMyT3ZlcmZsb3cgICAgPSAxIDw8IDMsCi0gICAgICAgIEludDUyT3ZlcmZsb3cgICAg
PSAxIDw8IDQsCi0gICAgICAgIEJpZ0ludCAgICAgICAgICAgPSAxIDw8IDUsCi0gICAgfTsKLQot
ICAgIFJlc3VsdFR5cGUgbGhzUmVzdWx0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFJlc3VsdFR5cGUo
KG1fYml0cyA+PiBsaHNSZXN1bHRUeXBlU2hpZnQpICYgcmVzdWx0VHlwZU1hc2spOyB9Ci0gICAg
UmVzdWx0VHlwZSByaHNSZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1cm4gUmVzdWx0VHlwZSgobV9i
aXRzID4+IHJoc1Jlc3VsdFR5cGVTaGlmdCkgJiByZXN1bHRUeXBlTWFzayk7IH0KLQogICAgIGNv
bnN0ZXhwciBPYnNlcnZlZFR5cGUgbGhzT2JzZXJ2ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gT2Jz
ZXJ2ZWRUeXBlKChtX2JpdHMgPj4gbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBl
TWFzayk7IH0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIHJoc09ic2VydmVkVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IHJoc09ic2VydmVkVHlwZVNoaWZ0
KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9CiAgICAgdm9pZCBzZXRMaHNPYnNlcnZlZFR5cGUoT2Jz
ZXJ2ZWRUeXBlIHR5cGUpCiAgICAgewotICAgICAgICB1aW50MzJfdCBiaXRzID0gbV9iaXRzOwor
ICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSBtX2JpdHM7CiAgICAgICAgIGJp
dHMgJj0gY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrOwogICAgICAgICBiaXRzIHw9IHR5cGUu
Yml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0OwogICAgICAgICBtX2JpdHMgPSBiaXRzOwpA
QCAtMTg3LDcgKzI4Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UmhzT2JzZXJ2ZWRUeXBl
KE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsgCi0gICAgICAgIHVpbnQzMl90IGJpdHMgPSBtX2Jp
dHM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKICAgICAg
ICAgYml0cyAmPSBjbGVhclJoc09ic2VydmVkVHlwZUJpdE1hc2s7CiAgICAgICAgIGJpdHMgfD0g
dHlwZS5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQ7CiAgICAgICAgIG1fYml0cyA9IGJp
dHM7CkBAIC0xOTYsMzkgKzI5Niw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdG9va1NwZWNpYWxG
YXN0UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIHNwZWNpYWxGYXN0UGF0aEJpdDsgfQog
Ci0gICAgYm9vbCBkaWRPYnNlcnZlTm9uSW50MzIoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5v
bk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8IEJpZ0ludCk7IH0K
LSAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5l
Z1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5l
Z1plcm9Eb3VibGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5vbk5lZ1plcm9Eb3VibGUpOyB9
Ci0gICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0Jp
dHMoTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRpZE9ic2VydmVOb25OdW1lcmljKCkgY29u
c3QgeyByZXR1cm4gaGFzQml0cyhOb25OdW1lcmljKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUJp
Z0ludCgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoQmlnSW50KTsgfQotICAgIGJvb2wgZGlkT2Jz
ZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDMyT3ZlcmZsb3cp
OyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhh
c0JpdHMoSW50NTJPdmVyZmxvdyk7IH0KLQotICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJv
RG91YmxlKCkgeyBzZXRCaXQoTm9uTmVnWmVyb0RvdWJsZSk7IH0KLSAgICB2b2lkIHNldE9ic2Vy
dmVkTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgdm9pZCBz
ZXRPYnNlcnZlZE5vbk51bWVyaWMoKSB7IHNldEJpdChOb25OdW1lcmljKTsgfQotICAgIHZvaWQg
c2V0T2JzZXJ2ZWRCaWdJbnQoKSB7IHNldEJpdChCaWdJbnQpOyB9Ci0gICAgdm9pZCBzZXRPYnNl
cnZlZEludDMyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQzMk92ZXJmbG93KTsgfQotICAgIHZvaWQg
c2V0T2JzZXJ2ZWRJbnQ1Mk92ZXJmbG93KCkgeyBzZXRCaXQoSW50NTJPdmVyZmxvdyk7IH0KLQot
ICAgIGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBjb25zdCB7IHJldHVybiAmbV9iaXRzOyB9
Ci0KLSAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAg
IGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh2
YWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICBtX2JpdHMgfD0gSW50MzJPdmVyZmxvdyB8
IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNC
aWdJbnQoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9IEJpZ0ludDsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2JpdHMgfD0gTm9uTnVtZXJpYzsKLSAgICB9Ci0K
ICAgICB2b2lkIGxoc1Nhd0ludDMyKCkgeyBzZXRMaHNPYnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRU
eXBlKCkud2l0aEludDMyKCkpOyB9CiAgICAgdm9pZCBsaHNTYXdOdW1iZXIoKSB7IHNldExoc09i
c2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkpOyB9CiAgICAgdm9pZCBs
aHNTYXdOb25OdW1iZXIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53
aXRoTm9uTnVtYmVyKCkpOyB9CkBAIC0yMzgsNyArMzA1LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBvYnNlcnZlTEhTKEpTVmFsdWUgbGhzKQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxlIG5l
d1Byb2ZpbGUgPSAqdGhpczsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIG5ld1Byb2ZpbGUg
PSAqdGhpczsKICAgICAgICAgaWYgKGxocy5pc051bWJlcigpKSB7CiAgICAgICAgICAgICBpZiAo
bGhzLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBuZXdQcm9maWxlLmxoc1Nhd0ludDMyKCk7
CkBAIC0yNTQsNyArMzIxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgb2JzZXJ2ZUxIUyhs
aHMpOwogCi0gICAgICAgIEFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CiAgICAgICAgIGlmIChyaHMu
aXNOdW1iZXIoKSkgewogICAgICAgICAgICAgaWYgKHJocy5pc0ludDMyKCkpCiAgICAgICAgICAg
ICAgICAgbmV3UHJvZmlsZS5yaHNTYXdJbnQzMigpOwpAQCAtMjY2LDQ3ICszMzMsMTEgQEAgcHVi
bGljOgogICAgICAgICBtX2JpdHMgPSBuZXdQcm9maWxlLmJpdHMoKTsKICAgICB9CiAKLSNpZiBF
TkFCTEUoSklUKSAgICAKLSAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxv
dyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKLSAgICAv
LyBkb3VibGUuIFNldHMgTm9uTnVtZXJpYyBpZiBpdCBzZWVzIGEgbm9uLW51bWVyaWMuCi0gICAg
dm9pZCBlbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncywgVGFnUmVn
aXN0ZXJzTW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpOwotICAgIAotICAgIC8vIFNldHMgKEludDMy
T3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3Vi
bGUpLgotICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0OwotICAgIHZvaWQgZW1p
dFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKLSAgICAKLSAgICAvLyBTZXRzIE5vbk51
bWJlci4KLSAgICB2b2lkIGVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0Owot
ICAgIGJvb2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdDsKLQotICAgIC8vIFNldHMg
QmlnSW50Ci0gICAgdm9pZCBlbWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0OwotICAg
IGJvb2wgc2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0OwotI2VuZGlmIC8vIEVOQUJMRShKSVQp
Ci0KLSAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0czsg
fQotCi1wcml2YXRlOgotICAgIGNvbnN0ZXhwciBleHBsaWNpdCBBcml0aFByb2ZpbGUoQ29uc3Rh
bnRUYWcsIHVpbnQzMl90IGJpdHMpCi0gICAgICAgIDogbV9iaXRzKGJpdHMpCi0gICAgewotICAg
IH0KLQotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUoQ29uc3RhbnRUYWcsIFJlc3VsdFR5cGUg
YXJnKQotICAgICAgICA6IG1fYml0cyhhcmcuYml0cygpIDw8IGxoc1Jlc3VsdFR5cGVTaGlmdCkK
KyAgICBib29sIGlzT2JzZXJ2ZWRUeXBlRW1wdHkoKQogICAgIHsKKyAgICAgICAgcmV0dXJuIGxo
c09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSAmJiByaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7
CiAgICAgfQogCi0gICAgY29uc3RleHByIEFyaXRoUHJvZmlsZShDb25zdGFudFRhZywgUmVzdWx0
VHlwZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQotICAgICAgICA6IG1fYml0cygobGhzLmJpdHMoKSA8
PCBsaHNSZXN1bHRUeXBlU2hpZnQpIHwgKHJocy5iaXRzKCkgPDwgcmhzUmVzdWx0VHlwZVNoaWZ0
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBoYXNCaXRzKGludCBtYXNrKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBtYXNrOyB9Ci0gICAgdm9pZCBzZXRCaXQoaW50IG1hc2spIHsgbV9iaXRz
IHw9IG1hc2s7IH0KLQotICAgIHVpbnQzMl90IG1fYml0cyB7IDAgfTsgLy8gV2UgdGFrZSBjYXJl
IHRvIHVwZGF0ZSBtX2JpdHMgb25seSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFdlIGRvbid0IGV2
ZXIgc3RvcmUgYW4gaW5jb25zaXN0ZW50IGJpdCByZXByZXNlbnRhdGlvbiB0byBpdC4KLQogICAg
IGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIH07CiAKQEAgLTMxNCw3
ICszNDUsOCBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2UgV1RGIHsKIAotdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpBcml0aFByb2ZpbGUmKTsKK3ZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6VW5hcnlBcml0aFByb2ZpbGUmKTsKK3Zv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6QmluYXJ5QXJpdGhQcm9m
aWxlJik7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6Ok9ic2Vy
dmVkVHlwZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGMyZWM5Y2Y1NzJhLi43MmRlNjA5YWEy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CkBAIC00MSw2ICs0MSw3IEBAIHR5cGVzIFsKICAgICA6SlNUeXBlLAogICAgIDpKU1ZhbHVlLAog
ICAgIDpMTEludENhbGxMaW5rSW5mbywKKyAgICA6UmVzdWx0VHlwZSwKICAgICA6T3BlcmFuZFR5
cGVzLAogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZzZXQs
CkBAIC01OCw3ICs1OSw4IEBAIHR5cGVzIFsKIAogICAgIDpWYWx1ZVByb2ZpbGUsCiAgICAgOlZh
bHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIsCi0gICAgOkFyaXRoUHJvZmlsZSwKKyAgICA6VW5h
cnlBcml0aFByb2ZpbGUsCisgICAgOkJpbmFyeUFyaXRoUHJvZmlsZSwKICAgICA6QXJyYXlQcm9m
aWxlLAogICAgIDpBcnJheUFsbG9jYXRpb25Qcm9maWxlLAogICAgIDpPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSwKQEAgLTI3OSwxMCArMjgxLDcgQEAgb3BfZ3JvdXAgOlByb2ZpbGVkQmluYXJ5T3As
CiAgICAgICAgIG9wZXJhbmRUeXBlczogT3BlcmFuZFR5cGVzLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0aFByb2ZpbGUKLSAgICB9LAotICAgIG1l
dGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBhcml0aFByb2ZpbGU6IDpvcGVyYW5kVHlw
ZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBCaW5hcnlBcml0aFByb2ZpbGUKICAgICB9CiAKIG9w
X2dyb3VwIDpWYWx1ZVByb2ZpbGVkQmluYXJ5T3AsCkBAIC0zNjQsMTMgKzM2MywxMCBAQCBvcCA6
bmVnYXRlLAogICAgIGFyZ3M6IHsKICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAg
ICAgIG9wZXJhbmQ6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgb3BlcmFuZFR5cGVzOiBPcGVy
YW5kVHlwZXMsCisgICAgICAgIHJlc3VsdFR5cGU6IFJlc3VsdFR5cGUsCiAgICAgfSwKICAgICBt
ZXRhZGF0YTogewotICAgICAgICBhcml0aFByb2ZpbGU6IEFyaXRoUHJvZmlsZSwKLSAgICB9LAot
ICAgIG1ldGFkYXRhX2luaXRpYWxpemVyczogewotICAgICAgICBhcml0aFByb2ZpbGU6IDpvcGVy
YW5kVHlwZXMKKyAgICAgICAgYXJpdGhQcm9maWxlOiBVbmFyeUFyaXRoUHJvZmlsZSwKICAgICB9
CiAKIG9wIDpub3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDBmOGU3ZjhiNGY5Li42ODFkZmM5ZWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE0NzksMjUgKzE0NzksMjUgQEAgU3Ry
dWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6YWRkU3R1YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlKQogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9zdHViSW5mb3MuYWRkKGFj
Y2Vzc1R5cGUpOwogfQogCi1KSVRBZGRJQyogQ29kZUJsb2NrOjphZGRKSVRBZGRJQyhBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVEFkZElDKiBDb2RlQmxvY2s6OmFkZEpJVEFkZElDKEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fYWRk
SUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRNdWxJQyogQ29kZUJsb2NrOjphZGRKSVRN
dWxJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE11bElDKiBDb2RlQmxvY2s6OmFk
ZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShs
b2NrZXIpLm1fbXVsSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRTdWJJQyogQ29kZUJs
b2NrOjphZGRKSVRTdWJJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVFN1YklDKiBD
b2RlQmxvY2s6OmFkZEpJVFN1YklDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQog
ewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICByZXR1cm4gZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fc3ViSUNzLmFkZChhcml0aFByb2ZpbGUpOwogfQogCi1KSVRO
ZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkK
K0pJVE5lZ0lDKiBDb2RlQmxvY2s6OmFkZEpJVE5lZ0lDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAg
IHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9uZWdJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7
CkBAIC0zMDg0LDE2ICszMDg0LDE5IEBAIGNvbnN0IEluc3RydWN0aW9uKiBDb2RlQmxvY2s6Om91
dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQogICAgIHJldHVybiBpbnN0
cnVjdGlvbnMoKS5hdChvZmZzZXQgKyB0YXJnZXQpLnB0cigpOwogfQogCi1Bcml0aFByb2ZpbGUq
IENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5
dGVjb2RlSW5kZXgpCitCaW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YmluYXJ5QXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7Ci0g
ICAgcmV0dXJuIGFyaXRoUHJvZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5k
ZXgub2Zmc2V0KCkpLnB0cigpKTsKKyAgICByZXR1cm4gYmluYXJ5QXJpdGhQcm9maWxlRm9yUEMo
aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCkpOwogfQogCi1B
cml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjKQorVW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVG
b3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKK3sKKyAgICByZXR1
cm4gdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4
Lm9mZnNldCgpKS5wdHIoKSk7Cit9CisKK0JpbmFyeUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpi
aW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCiB7CiAgICAgc3dp
dGNoIChwYy0+b3Bjb2RlSUQoKSkgewotICAgIGNhc2Ugb3BfbmVnYXRlOgotICAgICAgICByZXR1
cm4gJnBjLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YSh0aGlzKS5tX2FyaXRoUHJvZmlsZTsKICAg
ICBjYXNlIG9wX2FkZDoKICAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BBZGQ+KCkubWV0YWRhdGEo
dGhpcykubV9hcml0aFByb2ZpbGU7CiAgICAgY2FzZSBvcF9tdWw6CkBAIC0zMTA5LDExICszMTEy
LDIzIEBAIEFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjphcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJ
bnN0cnVjdGlvbiogcGMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1VuYXJ5QXJpdGhQcm9m
aWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjKQoreworICAgIHN3aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKKyAgICBjYXNlIG9wX25lZ2F0
ZToKKyAgICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEodGhpcykubV9h
cml0aFByb2ZpbGU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKIGJvb2wgQ29kZUJsb2NrOjpjb3VsZFRha2VTcGVjaWFsQXJp
dGhGYXN0Q2FzZShCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgaWYgKCFoYXNC
YXNlbGluZUpJVFByb2ZpbGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQXJpdGhQ
cm9maWxlKiBwcm9maWxlID0gYXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUgPSBiaW5hcnlBcml0aFByb2Zp
bGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghcHJvZmlsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBwcm9maWxlLT50b29rU3BlY2lhbEZhc3RQ
YXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXgg
ZDJjMDY5ODAzYTguLjE4ZTQ4YzI2NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCkBAIC04Myw2ICs4Myw4IEBAIHN0cnVjdCBPU1JFeGl0U3RhdGU7CiB9
IC8vIG5hbWVzcGFjZSBERkcKICNlbmRpZgogCitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZTsKK2Ns
YXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsK
IGNsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U7CkBA
IC05Niw3ICs5OCw2IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFj
Y2Vzc1R5cGUgOiBpbnQ4X3Q7CiAKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiBzdHJ1Y3QgT3BDYXRj
aDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRSZW9wdGltaXphdGlvbiwg
Q291bnRSZW9wdGltaXphdGlvbiB9OwpAQCAtMjc5LDIyICsyODAsMjIgQEAgcHVibGljOgogICAg
IH0KICAgICBKSVREYXRhJiBlbnN1cmVKSVREYXRhU2xvdyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImKTsKIAotICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqKTsKLSAgICBK
SVRNdWxJQyogYWRkSklUTXVsSUMoQXJpdGhQcm9maWxlKik7Ci0gICAgSklUTmVnSUMqIGFkZEpJ
VE5lZ0lDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJQyhBcml0aFBy
b2ZpbGUqKTsKKyAgICBKSVRBZGRJQyogYWRkSklUQWRkSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7
CisgICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSopOworICAgIEpJ
VE5lZ0lDKiBhZGRKSVROZWdJQyhVbmFyeUFyaXRoUHJvZmlsZSopOworICAgIEpJVFN1YklDKiBh
ZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUqKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19z
YW1lPEdlbmVyYXRvciwgSklUQWRkR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVEFk
ZElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJ
Qyhwcm9maWxlKTsgfQorICAgIEpJVEFkZElDKiBhZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxl
KiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhwcm9maWxlKTsgfQogCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRNdWxHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+
Ci0gICAgSklUTXVsSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJu
IGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CisgICAgSklUTXVsSUMqIGFkZE1hdGhJQyhCaW5hcnlB
cml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVE5lZ0dlbmVyYXRvcj46OnZh
bHVlPjo6dHlwZT4KLSAgICBKSVROZWdJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmls
ZSkgeyByZXR1cm4gYWRkSklUTmVnSUMocHJvZmlsZSk7IH0KKyAgICBKSVROZWdJQyogYWRkTWF0
aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVROZWdJQyhwcm9m
aWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5l
cmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUU3ViSUMqIGFkZE1hdGhJQyhBcml0aFByb2Zp
bGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CisgICAgSklUU3Vi
SUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJ
VFN1YklDKHByb2ZpbGUpOyB9CiAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8o
QWNjZXNzVHlwZSk7CiAKQEAgLTQ5Nyw4ICs0OTgsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKGNv
bnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVh
Y2hMTEludENhbGxMaW5rSW5mbyhjb25zdCBGdW5jdG9yJik7CiAKLSAgICBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7Ci0gICAgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiopOworICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29k
ZUluZGV4KTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JCeXRl
Y29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYmluYXJ5
QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICBVbmFyeUFyaXRoUHJv
ZmlsZSogdW5hcnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiopOwogCiAgICAg
Ym9vbCBjb3VsZFRha2VTcGVjaWFsQXJpdGhGYXN0Q2FzZShCeXRlY29kZUluZGV4IGJ5dGVjb2Rl
T2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Zp
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggZWRhMjRi
ZTQ2OTUuLjU3Nzg5YmMyYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgK
QEAgLTIzNSw2ICsyMzUsMTggQEAgc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZf
dDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHUKICAgICB9CiB9Owog
Cit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0czxSZXN1bHRUeXBlLCBzaXpl
LCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihSZXN1bHRUeXBlKSAhPSBzaXplLCBzdGQ6OnRydWVf
dHlwZT4+IDogcHVibGljIEZpdHM8dWludDhfdCwgc2l6ZT4geworICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKFJlc3VsdFR5cGUpID09IHNpemVvZih1aW50OF90KSk7CisgICAgdXNpbmcgQmFzZSA9
IEZpdHM8dWludDhfdCwgc2l6ZT47CisKKyAgICBzdGF0aWMgYm9vbCBjaGVjayhSZXN1bHRUeXBl
IHR5cGUpIHsgcmV0dXJuIEJhc2U6OmNoZWNrKHR5cGUuYml0cygpKTsgfQorCisgICAgc3RhdGlj
IHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgY29udmVydChSZXN1bHRUeXBlIHR5cGUpIHsgcmV0
dXJuIEJhc2U6OmNvbnZlcnQodHlwZS5iaXRzKCkpOyB9CisKKyAgICBzdGF0aWMgUmVzdWx0VHlw
ZSBjb252ZXJ0KHR5cGVuYW1lIEJhc2U6OlRhcmdldFR5cGUgdHlwZSkgeyByZXR1cm4gUmVzdWx0
VHlwZShCYXNlOjpjb252ZXJ0KHR5cGUpKTsgfQorfTsKKwogdGVtcGxhdGU8T3Bjb2RlU2l6ZSBz
aXplPgogc3RydWN0IEZpdHM8T3BlcmFuZFR5cGVzLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNp
emVvZihPcGVyYW5kVHlwZXMpICE9IHNpemUsIHN0ZDo6dHJ1ZV90eXBlPj4gewogICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKE9wZXJhbmRUeXBlcykgPT0gc2l6ZW9mKHVpbnQxNl90KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKaW5kZXggNzEwNGQwMWFlMTEuLjJiNjlmMzZjN2ZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCkBAIC02NiwxMCArNjYsMTYgQEAgdm9pZCBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJz
JiBqaXQsIEpTVmFsdWVSZWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCi0gICAg
Y2FzZSBBcml0aFByb2ZpbGVSZWFkeTogewotICAgICAgICB1LmFyaXRoUHJvZmlsZS0+ZW1pdE9i
c2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAgIGNhc2Ug
VW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5l
bWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAg
ICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAgICBjYXNlIEJpbmFyeUFyaXRoUHJvZmls
ZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3Vs
dChqaXQsIHJlZ3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBA
IC05NCwxMCArMTAwLDE2IEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVw
b3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNh
c2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5hcml0aFByb2ZpbGUtPm9ic2VydmVS
ZXN1bHQodmFsdWUpOworICAgIGNhc2UgVW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAg
ICB1LnVuYXJ5QXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKICAgICAgICAgcmV0
dXJuOwotICAgIH0gfQorICAgIH0KKworICAgIGNhc2UgQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6
IHsKKyAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAppbmRleCBjZmI4MzQ3MDZhZi4u
NWQ4MWM0YzkwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaApAQCAtMzYsMTAgKzM2LDEx
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZTsKK2NsYXNz
IEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIENDYWxsSGVscGVyczsKIGNsYXNzIENvZGVCbG9j
azsKIGNsYXNzIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5Owotc3RydWN0IEFyaXRoUHJvZmls
ZTsKIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKIGNsYXNzIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUgewpAQCAtNTcsMTIgKzU4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBtX2tpbmQgPSBOb25lOwogICAgIH0KLSAgICAKLSAgICBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkKKworICAgIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUoVW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpCisgICAgeworICAgICAg
ICBpZiAocHJvZmlsZSkgeworICAgICAgICAgICAgbV9raW5kID0gVW5hcnlBcml0aFByb2ZpbGVS
ZWFkeTsKKyAgICAgICAgICAgIHUudW5hcnlBcml0aFByb2ZpbGUgPSBwcm9maWxlOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIG1fa2luZCA9IE5vbmU7CisgICAgfQorCisgICAgTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpCiAgICAg
ewogICAgICAgICBpZiAocHJvZmlsZSkgewotICAgICAgICAgICAgbV9raW5kID0gQXJpdGhQcm9m
aWxlUmVhZHk7Ci0gICAgICAgICAgICB1LmFyaXRoUHJvZmlsZSA9IHByb2ZpbGU7CisgICAgICAg
ICAgICBtX2tpbmQgPSBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeTsKKyAgICAgICAgICAgIHUuYmlu
YXJ5QXJpdGhQcm9maWxlID0gcHJvZmlsZTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBt
X2tpbmQgPSBOb25lOwogICAgIH0KQEAgLTc5LDcgKzg5LDggQEAgcHJpdmF0ZToKICAgICBlbnVt
IEtpbmQgewogICAgICAgICBOb25lLAogICAgICAgICBSZWFkeSwKLSAgICAgICAgQXJpdGhQcm9m
aWxlUmVhZHksCisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHksCisgICAgICAgIEJpbmFy
eUFyaXRoUHJvZmlsZVJlYWR5LAogICAgICAgICBMYXp5T3BlcmFuZAogICAgIH07CiAgICAgCkBA
IC05MCw3ICsxMDEsOCBAQCBwcml2YXRlOgogICAgICAgICB7IH0KIAogICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGU7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlOworICAg
ICAgICBVbmFyeUFyaXRoUHJvZmlsZSogdW5hcnlBcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSogYmluYXJ5QXJpdGhQcm9maWxlOwogICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgICAgICAgICBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBlMzgzMWQyMDk1Zi4uZjJiY2U2
MmVlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNTE2LDE0ICsxNTE2LDE0IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNyYykKICAgICByZXR1cm4gZHN0OwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMgdHlwZXMpCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFVuYXJ5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogc3JjLCBSZXN1bHRUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoIChvcGNvZGVJ
RCkgewogICAgIGNhc2Ugb3Bfbm90OgogICAgICAgICBlbWl0VW5hcnlPcDxPcE5vdD4oZHN0LCBz
cmMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIG9wX25lZ2F0ZToKLSAgICAgICAgT3BOZWdh
dGU6OmVtaXQodGhpcywgZHN0LCBzcmMsIHR5cGVzKTsKKyAgICAgICAgT3BOZWdhdGU6OmVtaXQo
dGhpcywgZHN0LCBzcmMsIHR5cGUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIG9wX2JpdG5v
dDoKICAgICAgICAgZW1pdFVuYXJ5T3A8T3BCaXRub3Q+KGRzdCwgc3JjKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApp
bmRleCBhNzk5M2JlYjNmYS4uNzVhMGJhMDNjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTY4Miw3ICs2
ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBkc3Q7CiAgICAgICAg
IH0KIAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0VW5hcnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIE9wZXJhbmRUeXBlcyk7CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRVbmFyeU9wKE9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNy
YywgUmVzdWx0VHlwZSk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+CiAg
ICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNTI0NjhlMWYyYWEuLjAxMDY0Y2Fm
OWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCkBAIC0yMTQ2LDcgKzIxNDYsNyBAQCBSZWdpc3RlcklEKiBVbmFyeU9wTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
CiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4
cHIpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwgcG9zaXRp
b24oKSwgcG9zaXRpb24oKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcGNv
ZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCksIE9wZXJh
bmRUeXBlcyhtX2V4cHItPnJlc3VsdERlc2NyaXB0b3IoKSkpOworICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
KSwgc3JjLmdldCgpLCBtX2V4cHItPnJlc3VsdERlc2NyaXB0b3IoKSk7CiB9CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVbmFyeVBsdXNOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDMzNzhhZDA5MmY2Li45OGU2OGVjMzkxMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTk0Miw1
NiArOTQyLDYwIEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghaXNYODYoKSAmJiAobm9kZS0+b3Ao
KSA9PSBBcml0aE1vZCB8fCBub2RlLT5vcCgpID09IFZhbHVlTW9kKSkKICAgICAgICAgICAgIHJl
dHVybiBub2RlOwogCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5hcml0aFByb2ZpbGVG
b3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsKLSAgICAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAg
ICAgICAgICBjYXNlIEFyaXRoQWRkOgotICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhTdWI6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBWYWx1ZUFkZDoKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFy
aXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOb25OdW1lcmljKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jl
c3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVC
aWdJbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eUhhdmVCaWdJbnRSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICAgICAgICAgIGNhc2UgVmFsdWVNdWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aE11bDog
ewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50NTJP
dmVyZmxvdygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2Rl
TWF5T3ZlcmZsb3dJbnQ1Mik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxp
bmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTmVn
WmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVt
ZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5
SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5t
ZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVOZWdh
dGU6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aE5lZ2F0ZTogewotICAgICAgICAgICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBh
cml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IE5lZ2F0aXZlWmVybykpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdz
KE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0
aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQz
MkluQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRP
YnNlcnZlTm9uTnVtZXJpYygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VG
bGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKG5v
ZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBBcml0aEFkZDoKKyAgICAgICAgY2FzZSBBcml0aFN1
YjoKKyAgICAgICAgY2FzZSBWYWx1ZUFkZDogeworICAgICAgICAgICAgQmluYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJp
bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgpOworICAgICAg
ICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7CisgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAgICAgICAg
ICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKKyAgICAg
ICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAgICAgICAg
ICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVmFsdWVNdWw6CisgICAgICAgIGNh
c2UgQXJpdGhNdWw6IHsKKyAgICAgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5iaW5hcnlBcml0aFByb2Zp
bGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgIGlmICghYXJp
dGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGFyaXRo
UHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSkKKyAgICAgICAgICAgICAgICBub2Rl
LT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDUyKTsKKyAgICAgICAgICAgIGlmIChhcml0
aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2Vs
aW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91
YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxl
LT5kaWRPYnNlcnZlTm9uTnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgVmFsdWVOZWdhdGU6CisgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6
IHsKKyAgICAgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJ
bmRleChtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAgICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmFyZ09i
c2VydmVkVHlwZSgpLnNhd051bWJlcigpIHx8IGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJs
ZSgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVS
ZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9E
b3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MoTm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUtPmRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpKQorICAgICAg
ICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5l
KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOb25OdW1lcmljKCkp
CisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNS
ZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgp
KQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1
bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkpIHsKQEAgLTEwMzMsOCAr
MTAzNyw4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogSXQgbWlnaHQg
YmUgcG9zc2libGUgdG8gbWFrZSB0aGlzIG1vcmUgZ3JhbnVsYXIuCiAgICAgICAgIG5vZGUtPm1l
cmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50MzJJbkJhc2VsaW5lIHwgTm9kZU1heU5lZ1plcm9J
bkJhc2VsaW5lKTsKLSAgICAgICAgCi0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRl
Y29kZUluZGV4KG1fY3VycmVudEluZGV4KTsKKworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YmluYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CiAgICAgICAgIGlm
IChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJbnQoKSkKICAgICAgICAgICAgIG5vZGUtPm1l
cmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCmluZGV4IGNhOWZjMzRlMWQzLi4xYjFiMTk4NGEyNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTE2NTQsNyArMTY1NCw5IEBAIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGVGb3IoTm9kZSogY3VycmVuCiAgICAgICAgICAgICAgICAgcmV0dXJuICZwcm9maWxlZEJsb2Nr
LT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCkpOwogCiAgICAgICAgICAgICBpZiAocHJvZmlsZWRCbG9jay0+aGFzQmFzZWxp
bmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAgICAgIGlmIChBcml0aFByb2ZpbGUqIHJl
c3VsdCA9IHByb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+
b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSkpCisgICAgICAgICAgICAgICAgaWYgKEJp
bmFyeUFyaXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmlsZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgp
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICBp
ZiAoVW5hcnlBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPnVuYXJ5QXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRl
eCgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAppbmRleCA2Y2RiNzE1MGEwMS4uYjg0OTY2NmM1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zOTk1LDcgKzM5OTUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQoTm9kZSogbm9kZSkKIAog
ICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5l
Q29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0ZWNvZGVJbmRleCBi
eXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFBy
b2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUQWRkSUMqIGFkZElDID0g
bV9qaXQuY29kZUJsb2NrKCktPmFkZEpJVEFkZElDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byBy
ZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplOwogICAgIGF1dG8g
bm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7CkBAIC00MDE5LDcgKzQw
MTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIoTm9kZSogbm9kZSkK
IAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5i
YXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJ
bmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2Nr
LT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoYXJp
dGhQcm9maWxlKTsKICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25W
YWx1ZVN1Yk9wdGltaXplOwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9w
ZXJhdGlvblZhbHVlU3ViOwpAQCAtNDYxMyw3ICs0NjEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlTmVnYXRlKE5vZGUqIG5vZGUpCiB7CiAgICAgQ29kZUJsb2NrKiBiYXNl
bGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2Rl
LT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgIEFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9
IGJhc2VsaW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVJbmRleCk7CiAgICAgSklUTmVnSUMqIG5lZ0lDID0gbV9qaXQuY29kZUJsb2NrKCktPmFk
ZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBv
cGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7CkBAIC00ODM2LDcgKzQ4MzYsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNdWwoTm9kZSogbm9kZSkKIAogICAgIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgSklUTXVsSUMqIG11bElDID0gbV9qaXQuY29kZUJs
b2NrKCktPmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7CiAgICAgYXV0byByZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplOwogICAgIGF1dG8gbm9uUmVwYXRjaGlu
Z0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNWQ0OGMwYjBjYjkuLjM3ZjBhOTYwMGY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0y
MTE2LDcgKzIxMTYsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVD
b2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0g
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JC
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JC
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5j
dGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRj
aGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGQ7CiAgICAgICAgIGNvbXBpbGVCaW5hcnlN
YXRoSUM8SklUQWRkR2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwg
bm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTIxMzcsNyArMjEzNyw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGgu
YmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBC
eXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRl
Y29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxp
bmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRp
bWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZVN1YjsKICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRo
UHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAt
MjE1OCw3ICsyMTU4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9
IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplOwogICAgICAgICBhdXRvIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVsOwogICAgICAgICBjb21waWxlQmluYXJ5
TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24s
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTY2LDcgKzIxNjYsNyBAQCBwcml2YXRlOgog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgRnVuYzEsIHR5cGVu
YW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19m
dW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmMxPjo6dHlwZT46OnZhbHVl
ICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMj46
OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21waWxlVW5hcnlNYXRoSUMoQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRj
aGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGlsZVVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKIApA
QCAtMjI1Miw3ICsyMjUyLDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBH
ZW5lcmF0b3IsIHR5cGVuYW1lIEZ1bmMxLCB0eXBlbmFtZSBGdW5jMiwKICAgICAgICAgdHlwZW5h
bWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1v
dmVfcG9pbnRlcjxGdW5jMT46OnR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzI+Ojp0eXBlPjo6dmFsdWU+PgotICAgIHZvaWQg
Y29tcGlsZUJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuYzEgcmVw
YXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCisgICAgdm9pZCBj
b21waWxlQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5j
MSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7
CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIApAQCAtMjQyMSw3ICsyNDIx
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
ayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICAgICAgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgICAgICBhdXRvIHJlcGF0
Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CiAgICAgICAgICAgICBh
dXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwogICAgICAgICAg
ICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVw
YXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMzA5OSw3ICszMDk5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICBDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNv
ZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAg
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICAgICAgVW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT51bmFyeUFyaXRoUHJv
ZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRj
aGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZTsKICAgICAgICAgYXV0
byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0aE5lZ2F0ZTsKICAgICAgICAg
Y29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNo
aW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAppbmRleCBiNWVmZTI2ODA0Ni4uMmI0YTVkNjRiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aApAQCAtOTE5LDcgKzkxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBJdCB3aWxs
IGdpdmUgdGhlIHNsb3cgcGF0aCB0aGUgc2FtZSB2YWx1ZSByZWFkIGJ5IHRoZSBmYXN0IHBhdGgu
CiAgICAgICAgIEdldFB1dEluZm8gY29waWVkR2V0UHV0SW5mbyhPcFB1dFRvU2NvcGUpOwogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KLSAgICAgICAgQXJpdGhQcm9maWxlIGNv
cGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBj
b3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOwogCiAgICAgICAgIEludGVycHJldGVyKiBtX2lu
dGVycHJldGVyOwogCkBAIC05MzksNyArOTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFZlY3RvcjxTd2l0Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7CiAKICAgICAgICAgSGFzaE1hcDx1bnNp
Z25lZCwgdW5zaWduZWQ+IG1fY29waWVkR2V0UHV0SW5mb3M7Ci0gICAgICAgIEhhc2hNYXA8dWlu
dDY0X3QsIEFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0aFByb2ZpbGVzOworICAgICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBCaW5hcnlBcml0aFByb2ZpbGU+IG1fY29waWVkQXJpdGhQcm9maWxlczsK
IAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNoZWNrczsKICAgICAgICAgSnVtcExpc3Qg
bV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKaW5kZXggNjI3YWYyNzg3ZTAuLjc0MGIy
ZWQ4YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3Iu
Y3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRoSUNJbmxp
bmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGpp
dCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8gV2UgZGVm
YXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0gT2JzZXJ2
ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03Myw3ICs3Myw3IEBAIEpJVE1hdGhJQ0lubGluZVJl
c3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBN
YXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25p
cHBldDsKIH0KIAotYm9vbCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxI
ZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRBZGRHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBM
aXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRF
bWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJl
Zyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCmluZGV4IDRkYzM0YTJm
NWI2Li42NzVjZjkzYzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBZGRHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdl
bmVyYXRvci5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFtX2xl
ZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3JpZ2h0T3BlcmFuZC5pc0NvbnN0SW50MzIo
KSk7CiAgICAgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKEND
YWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSop
OwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhK
dW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsK
KyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwg
TWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAg
Ym9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0
LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwog
CiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJh
bmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMy
KCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBl
dE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiByaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNv
bnN0SW50MzIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRB
cml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5j
cHAKaW5kZXggYWMzNzJjOWZiZTAuLmJiNjM1ZjhlNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpCiAKIHZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEobV9jb2RlQmxv
Y2spLm1fYXJpdGhQcm9maWxlOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9j
aykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTmVnSUMqIG5lZ2F0ZUlDID0gbV9jb2RlQmxvY2st
PmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFk
ZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG5lZ2F0ZUlDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcE5l
Z2F0ZT4obmVnYXRlSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uQXJpdGhOZWdhdGVQ
cm9maWxlZCwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwpAQCAtNjM0LDE0ICs2MzQsOSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdFJpZ2h0U2hpZnRGYXN0UGF0aChjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wX3Vy
c2hpZnQpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBPcGVyYW5kVHlwZXMgZ2V0T3BlcmFu
ZFR5cGVzKGNvbnN0IEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQotewotICAgIHJldHVybiBP
cGVyYW5kVHlwZXMoYXJpdGhQcm9maWxlLmxoc1Jlc3VsdFR5cGUoKSwgYXJpdGhQcm9maWxlLnJo
c1Jlc3VsdFR5cGUoKSk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2FkZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxv
Y2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BBZGQ+KCkubWV0YWRhdGEobV9jb2RlQmxvY2sp
Lm1fYXJpdGhQcm9maWxlOwogICAgIEpJVEFkZElDKiBhZGRJQyA9IG1fY29kZUJsb2NrLT5hZGRK
SVRBZGRJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3Vy
cmVudEluc3RydWN0aW9uLCBhZGRJQyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BBZGQ+KGFkZElD
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQsIG9wZXJhdGlv
blZhbHVlQWRkKTsKQEAgLTY4Niw3ICs2ODEsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3Qo
SklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogYwog
CiAgICAgYm9vbCBnZW5lcmF0ZWRJbmxpbmVDb2RlID0gbWF0aElDLT5nZW5lcmF0ZUlubGluZSgq
dGhpcywgbWF0aElDR2VuZXJhdGlvblN0YXRlKTsKICAgICBpZiAoIWdlbmVyYXRlZElubGluZUNv
ZGUpIHsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRo
UHJvZmlsZSgpOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0
aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRF
bWl0UHJvZmlsaW5nKCkpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChwcm9m
aWxlZEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIHNyY1JlZ3MsIGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGVsc2UKQEAgLTcw
OSw3ICs3MDQsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1lIEdlbmVyYXRvciwg
dHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgTgogdm9pZCBKSVQ6OmVtaXRNYXRo
SUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFByb2ZpbGVkRnVuY3Rpb24gcHJvZmlsZWRGdW5jdGlv
biwgTm9uUHJvZmlsZWRGdW5jdGlvbiBub25Qcm9maWxlZEZ1bmN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIE9wZXJhbmRUeXBl
cyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRBcml0aFByb2ZpbGUoYnl0ZWNvZGUpKTsK
ICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9
IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5v
ZmZzZXQoKTsKQEAgLTcyOCw4ICs3MjIsOCBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklU
QmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAg
RlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogI2VuZGlmCiAKLSAgICBTbmlwcGV0T3BlcmFu
ZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9w
ZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5
dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0
T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQz
MihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC03NTksNyArNzUzLDcgQEAgdm9pZCBK
SVQ6OmVtaXRNYXRoSUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNv
bnN0IEluc3RydWN0aW9uKgogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEs
IGxlZnRSZWdzKTsKICAgICAgICAgZWxzZSBpZiAocmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkKICAg
ICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByaWdodFJlZ3MpOwotICAgICAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7Cisg
ICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0aElDLT5hcml0aFBy
b2ZpbGUoKTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5n
KCkpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChwcm9maWxlZEZ1bmN0aW9u
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGxlZnRSZWdzLCByaWdodFJlZ3MsIGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGVsc2UKQEAgLTc5
OSw3ICs3OTMsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8R2Vu
ZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbiogYwogICAgIGF1dG8gc2xvd1BhdGhT
dGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBpZiAoYXJpdGhQcm9maWxlICYm
IHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICBpZiAobWF0aElDR2VuZXJhdGlvblN0
YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCkKICAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25T
dGF0ZS5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChyZWludGVycHJldF9j
YXN0PEpfSklUT3BlcmF0aW9uX0dKTWljPihwcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiksIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgc3JjUmVn
cywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKQEAgLTgzMSw3ICs4MjUsNiBAQCB2b2lkIEpJVDo6
ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3Qg
SW5zdHJ1Y3Rpb24qCiAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoU3RhcnQgPSBs
YWJlbCgpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3A+
KCk7Ci0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0T3BlcmFuZFR5cGVzKGNvcGllZEFyaXRo
UHJvZmlsZShieXRlY29kZSkpOwogICAgIGludCByZXN1bHQgPSBieXRlY29kZS5tX2RzdC5vZmZz
ZXQoKTsKICAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9saHMub2Zmc2V0KCk7CiAgICAgaW50IG9w
MiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwpAQCAtODQ2LDggKzgzOSw4IEBAIHZvaWQgSklU
OjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25z
dCBJbnN0cnVjdGlvbioKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gbGVmdFJlZ3M7CiAj
ZW5kaWYKICAgICAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCh0eXBlcy5maXJzdCgp
KTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMuc2Vjb25kKCkpOworICAg
IFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLmZpcnN0
KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRU
eXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAg
ICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3Ax
KSk7CkBAIC04NjUsNyArODU4LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFy
eU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIGF1dG8g
c2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgaWYgKGFyaXRo
UHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgaWYgKG1hdGhJQ0dl
bmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCiAgICAgICAgICAgICBtYXRoSUNH
ZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQoYml0
d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0dKSk1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24p
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGxlZnRSZWdzLCByaWdodFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElDKSk7CkBAIC04OTMsMTkg
Kzg4NiwxNiBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVy
YXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERpdj4oKTsKLSAgICBhdXRvJiBtZXRhZGF0
YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0
ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNl
dCgpOwogICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKIAogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0T3BlcmFuZFR5cGVzKG1ldGFk
YXRhLm1fYXJpdGhQcm9maWxlKTsKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFsdWVS
ZWdzKHJlZ1QwKTsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdU
MSk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxlZnRSZWdzOwogICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gcmVnVDI7CiAjZWxzZQotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9w
ZXJhbmRUeXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVm
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0
UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IGxlZnRSZWdzOwpAQCAtOTEzLDEyICs5MDMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKICAgICBG
UFJSZWcgc2NyYXRjaEZQUiA9IGZwUmVnVDI7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IG51bGxwdHI7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBu
dWxscHRyOwogICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgIGFyaXRoUHJv
ZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGl2PigpLm1ldGFkYXRhKG1fY29kZUJs
b2NrKS5tX2FyaXRoUHJvZmlsZTsKIAotICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5
cGVzLmZpcnN0KCkpOwotICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNv
bmQoKSk7CisgICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5k
VHlwZXMuZmlyc3QoKSk7CisgICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKGJ5dGVjb2Rl
Lm1fb3BlcmFuZFR5cGVzLnNlY29uZCgpKTsKIAogICAgIGlmIChpc09wZXJhbmRDb25zdGFudElu
dChvcDEpKQogICAgICAgICBsZWZ0T3BlcmFuZC5zZXRDb25zdEludDMyKGdldE9wZXJhbmRDb25z
dGFudEludChvcDEpKTsKQEAgLTk2MCw3ICs5NTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRf
b3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE11bD4o
KS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcE11bD4oKS5t
ZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgSklUTXVsSUMqIG11bElD
ID0gbV9jb2RlQmxvY2stPmFkZEpJVE11bElDKGFyaXRoUHJvZmlsZSk7CiAgICAgbV9pbnN0cnVj
dGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIG11bElDKTsKICAgICBlbWl0TWF0
aElDRmFzdDxPcE11bD4obXVsSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVN
dWxQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVNdWwpOwpAQCAtOTc2LDcgKzk2Niw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlCiAKIHZvaWQgSklUOjplbWl0X29wX3N1Yihjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdWI+KCkubWV0YWRhdGEobV9jb2RlQmxv
Y2spLm1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTdWI+KCkubWV0YWRhdGEobV9jb2RlQmxvY2sp
Lm1fYXJpdGhQcm9maWxlOwogICAgIEpJVFN1YklDKiBzdWJJQyA9IG1fY29kZUJsb2NrLT5hZGRK
SVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3Vy
cmVudEluc3RydWN0aW9uLCBzdWJJQyk7CiAgICAgZW1pdE1hdGhJQ0Zhc3Q8T3BTdWI+KHN1YklD
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQsIG9wZXJhdGlv
blZhbHVlU3ViKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9y
LmNwcAppbmRleCA2NmUxYmUxNGE4ZC4uYmU2ZDRkNDBjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lk
IEpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCkKICAg
ICBub3REb3VibGVaZXJvLmxpbmsoJmppdCk7CiAjZW5kaWYKICAgICBpZiAobV9hcml0aFByb2Zp
bGUpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJv
ZmlsZTo6c3BlY2lhbEZhc3RQYXRoQml0KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
bV9hcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBtX2FyaXRoUHJvZmls
ZS0+ZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBCaW5hcnlBcml0aFByb2ZpbGU6OnNwZWNpYWxG
YXN0UGF0aEJpdCk7CiAgICAgaml0LmJveERvdWJsZShtX2xlZnRGUFIsIG1fcmVzdWx0KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmgKaW5kZXggODM5
NjY3Nzk0M2YuLjcwOGRiMTBkNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVERpdkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
RGl2R2VuZXJhdG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIEpJVERpdkdlbmVy
YXRvcihTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCwgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVy
YW5kLAogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQsIEpTVmFsdWVSZWdzIGxlZnQsIEpTVmFs
dWVSZWdzIHJpZ2h0LAogICAgICAgICBGUFJSZWcgbGVmdEZQUiwgRlBSUmVnIHJpZ2h0RlBSLCBH
UFJSZWcgc2NyYXRjaEdQUiwgRlBSUmVnIHNjcmF0Y2hGUFIsCi0gICAgICAgIEFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlID0gbnVsbHB0cikKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBudWxscHRyKQogICAgICAgICA6IG1fbGVmdE9wZXJhbmQobGVmdE9wZXJh
bmQpCiAgICAgICAgICwgbV9yaWdodE9wZXJhbmQocmlnaHRPcGVyYW5kKQogICAgICAgICAsIG1f
cmVzdWx0KHJlc3VsdCkKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9z
Y3JhdGNoR1BSOwogICAgIEZQUlJlZyBtX3NjcmF0Y2hGUFI7CiAgICAgYm9vbCBtX2RpZEVtaXRG
YXN0UGF0aCB7IGZhbHNlIH07Ci0gICAgQXJpdGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOwogCiAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCBtX2VuZEp1bXBMaXN0OwogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbV9z
bG93UGF0aEp1bXBMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRl
eCA2MmVhYjliOTdmYS4uMjViY2MyYjljNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCkBAIC03MTYsMTMgKzcxNiwxMyBAQCBBTFdBWVNfSU5MSU5FIEdldFB1dEluZm8g
SklUOjpjb3BpZWRHZXRQdXRJbmZvKE9wUHV0VG9TY29wZSBieXRlY29kZSkKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQmluYXJ5T3A+Ci1BTFdBWVNfSU5MSU5FIEFyaXRoUHJvZmlsZSBKSVQ6OmNv
cGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCBieXRlY29kZSkKK0FMV0FZU19JTkxJTkUgQmluYXJ5
QXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVjb2RlKQog
ewogICAgIHVpbnQ2NF90IGtleSA9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4oQmluYXJ5T3A6Om9w
Y29kZUlEKSArIDEpIDw8IDMyIHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ5dGVjb2RlLm1fbWV0
YWRhdGFJRCk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fY29waWVkQXJpdGhQcm9maWxlcy5maW5k
KGtleSk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IG1fY29waWVkQXJpdGhQcm9maWxlcy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLSAgICBBcml0aFByb2ZpbGUgYXJpdGhQ
cm9maWxlID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwor
ICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAgICAgbV9jb3BpZWRBcml0aFByb2ZpbGVzLmFk
ZChrZXksIGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCmluZGV4IDU2NDVlNDJkZWZmLi5mZGFlYzkyNzVl
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCkBAIC01MiwxMSArNTIsMTEg
QEAgc3RydWN0IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSB7CiAKICNkZWZpbmUgRU5BQkxFX01BVEhf
SUNfU1RBVFMgMAogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgYm9vbCgqaXNQ
cm9maWxlRW1wdHkpKEFyaXRoUHJvZmlsZSYpPgordGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRv
clR5cGUsIHR5cGVuYW1lIEFyaXRoUHJvZmlsZVR5cGU+CiBjbGFzcyBKSVRNYXRoSUMgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEpJVE1hdGhJQyhBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSkKKyAgICBKSVRNYXRoSUMoQXJpdGhQcm9maWxlVHlwZSogYXJp
dGhQcm9maWxlKQogICAgICAgICA6IG1fYXJpdGhQcm9maWxlKGFyaXRoUHJvZmlsZSkKICAgICB7
CiAgICAgfQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBzdGFydFNp
emUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKTsKIAogICAgICAgICBpZiAo
bV9hcml0aFByb2ZpbGUpIHsKLSAgICAgICAgICAgIGlmIChpc1Byb2ZpbGVFbXB0eSgqbV9hcml0
aFByb2ZpbGUpKSB7CisgICAgICAgICAgICBpZiAobV9hcml0aFByb2ZpbGUtPmlzT2JzZXJ2ZWRU
eXBlRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIC8vIEl0IGxvb2tzIGxpa2UgdGhlIE1hdGhJ
QyBoYXMgeWV0IHRvIGV4ZWN1dGUuIFdlIGRvbid0IHdhbnQgdG8gZW1pdCBjb2RlIGluIHRoaXMK
ICAgICAgICAgICAgICAgICAvLyBjYXNlIGZvciBhIGNvdXBsZSByZWFzb25zLiBGaXJzdCwgdGhl
IG9wZXJhdGlvbiBtYXkgbmV2ZXIgZXhlY3V0ZSwgc28gaWYgd2UgZG9uJ3QgZW1pdAogICAgICAg
ICAgICAgICAgIC8vIGNvZGUsIGl0J3MgYSB3aW4uIFNlY29uZCwgaWYgdGhlIG9wZXJhdGlvbiBk
b2VzIGV4ZWN1dGUsIHdlIGNhbiBlbWl0IGJldHRlciBjb2RlCkBAIC0yMjMsNyArMjIzLDcgQEAg
cHVibGljOgogICAgICAgICBtX3Nsb3dQYXRoU3RhcnRMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9j
YXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihzdGF0ZS5zbG93UGF0aFN0YXJ0KTsKICAgICB9CiAK
LSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJpdGhQ
cm9maWxlOyB9CisgICAgQXJpdGhQcm9maWxlVHlwZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAg
IHNpemVfdCBtX2dlbmVyYXRlZENvZGVTaXplIHsgMCB9OwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1
YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIEFyaXRoUHJvZmlsZSogbV9hcml0aFByb2ZpbGU7
CisgICAgQXJpdGhQcm9maWxlVHlwZSogbV9hcml0aFByb2ZpbGU7CiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2NvZGU7CiAgICAgQ29kZUxvY2F0aW9u
TGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9pbmxpbmVTdGFydDsKICAgICBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2lubGluZUVuZDsKQEAgLTI0NiwxNSArMjQ2LDExIEBA
IHB1YmxpYzoKICAgICBHZW5lcmF0b3JUeXBlIG1fZ2VuZXJhdG9yOwogfTsKIAotaW5saW5lIGJv
b2wgaXNCaW5hcnlQcm9maWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCi17Ci0g
ICAgcmV0dXJuIGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkgfHwgYXJp
dGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKLX0KIHRlbXBsYXRlIDx0eXBl
bmFtZSBHZW5lcmF0b3JUeXBlPgotY2xhc3MgSklUQmluYXJ5TWF0aElDIDogcHVibGljIEpJVE1h
dGhJQzxHZW5lcmF0b3JUeXBlLCBpc0JpbmFyeVByb2ZpbGVFbXB0eT4geworY2xhc3MgSklUQmlu
YXJ5TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBCaW5hcnlBcml0aFBy
b2ZpbGU+IHsKIHB1YmxpYzoKLSAgICBKSVRCaW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCi0gICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIGlzQmluYXJ5UHJv
ZmlsZUVtcHR5Pihhcml0aFByb2ZpbGUpCisgICAgSklUQmluYXJ5TWF0aElDKEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgICAgICA6IEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBl
LCBCaW5hcnlBcml0aFByb2ZpbGU+KGFyaXRoUHJvZmlsZSkKICAgICB7CiAgICAgfQogfTsKQEAg
LTI2MywxNiArMjU5LDExIEBAIHR5cGVkZWYgSklUQmluYXJ5TWF0aElDPEpJVEFkZEdlbmVyYXRv
cj4gSklUQWRkSUM7CiB0eXBlZGVmIEpJVEJpbmFyeU1hdGhJQzxKSVRNdWxHZW5lcmF0b3I+IEpJ
VE11bElDOwogdHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPiBKSVRTdWJJ
QzsKIAotCi1pbmxpbmUgYm9vbCBpc1VuYXJ5UHJvZmlsZUVtcHR5KEFyaXRoUHJvZmlsZSYgYXJp
dGhQcm9maWxlKQotewotICAgIHJldHVybiBhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCku
aXNFbXB0eSgpOwotfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+Ci1jbGFzcyBK
SVRVbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFyeVBy
b2ZpbGVFbXB0eT4geworY2xhc3MgSklUVW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdl
bmVyYXRvclR5cGUsIFVuYXJ5QXJpdGhQcm9maWxlPiB7CiBwdWJsaWM6Ci0gICAgSklUVW5hcnlN
YXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCi0gICAgICAgIDogSklUTWF0aElDPEdl
bmVyYXRvclR5cGUsIGlzVW5hcnlQcm9maWxlRW1wdHk+KGFyaXRoUHJvZmlsZSkKKyAgICBKSVRV
bmFyeU1hdGhJQyhVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorICAgICAgICA6IEpJ
VE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBVbmFyeUFyaXRoUHJvZmlsZT4oYXJpdGhQcm9maWxlKQog
ICAgIHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRNdWxHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5l
cmF0b3IuY3BwCmluZGV4IDgzZDI5M2I2MjUyLi45NDQ4N2MwNTI1OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE11bEdlbmVyYXRv
cjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5s
aW5lUmVzdWx0IEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBq
aXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmls
ZSogYXJpdGhQcm9maWxlKQogewogICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50
MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpA
QCAtODksNyArODksNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpn
ZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBKSVRN
YXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUTXVs
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1Bh
dGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxk
RW1pdFByb2ZpbGluZykKK2Jvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEND
YWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBB
U1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0
Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRHUFIoKSk7CkBAIC0yMDUsMTggKzIwNSwxOCBAQCBib29s
IEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdAogCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3ROZWdh
dGl2ZVplcm8gPSBqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1bHQu
cGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChuZWdhdGl2ZVplcm9CaXRz
KSk7CiAKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQ
cm9maWxlOjpOZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJp
dGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgYXJpdGhQcm9maWxlLT5lbWl0
VW5jb25kaXRpb25hbFNldChqaXQsIEJpbmFyeUFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSk7
CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKIAogICAgICAg
ICBub3ROZWdhdGl2ZVplcm8ubGluaygmaml0KTsKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxI
ZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsK
KyAgICAgICAgYXJpdGhQcm9maWxlLT5lbWl0VW5jb25kaXRpb25hbFNldChqaXQsIEJpbmFyeUFy
aXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1
bHQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihD
Q2FsbEhlbHBlcnM6OkltbTMyKDUyKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LmFuZDMy
KENDYWxsSGVscGVyczo6SW1tMzIoMHg3ZmYpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgbm9JbnQ1Mk92ZXJmbG93ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVy
czo6TGVzc1RoYW5PckVxdWFsLCBtX3NjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDB4NDMxKSk7CiAKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFk
ZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgYXJpdGhQcm9m
aWxlLT5lbWl0VW5jb25kaXRpb25hbFNldChqaXQsIEJpbmFyeUFyaXRoUHJvZmlsZTo6SW50NTJP
dmVyZmxvdyk7CiAgICAgICAgIG5vSW50NTJPdmVyZmxvdy5saW5rKCZqaXQpOwogCiAgICAgICAg
IGRvbmUubGluaygmaml0KTsKQEAgLTIyNywxOCArMjI3LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0CiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5hcHBlbmQoaml0LmJyYW5jaDMyKENDYWxs
SGVscGVyczo6Tm90RXF1YWwsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoMCkpKTsKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmFwcGVuZChqaXQuYnJh
bmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1bHQudGFnR1BSKCksIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKG5lZ2F0aXZlWmVyb0JpdHMgPj4gMzIpKSk7CiAKLSAgICAgICAg
aml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOZWdaZXJv
RG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRy
ZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgYXJpdGhQcm9maWxlLT5lbWl0VW5jb25kaXRpb25hbFNl
dChqaXQsIEJpbmFyeUFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSk7CiAgICAgICAgIENDYWxs
SGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKIAogICAgICAgICBub3ROZWdhdGl2ZVpl
cm8ubGluaygmaml0KTsKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgYXJpdGhQ
cm9maWxlLT5lbWl0VW5jb25kaXRpb25hbFNldChqaXQsIEJpbmFyeUFyaXRoUHJvZmlsZTo6Tm9u
TmVnWmVyb0RvdWJsZSk7CiAKICAgICAgICAgaml0Lm1vdmUobV9yZXN1bHQudGFnR1BSKCksIG1f
c2NyYXRjaEdQUik7CiAgICAgICAgIGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIo
NTIgLSAzMiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6
OkltbTMyKDB4N2ZmKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
IG5vSW50NTJPdmVyZmxvdyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JF
cXVhbCwgbV9zY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDQzMSkpOwot
ICAgICAgICAKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJp
dGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
YXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKworICAgICAgICBhcml0aFByb2ZpbGUt
PmVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgQmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJm
bG93KTsKIAogICAgICAgICBlbmRKdW1wTGlzdC5hcHBlbmQobm9JbnQ1Mk92ZXJmbG93KTsKICAg
ICAgICAgaWYgKG1fc2NyYXRjaEdQUiA9PSBtX3Jlc3VsdC50YWdHUFIoKSB8fCBtX3NjcmF0Y2hH
UFIgPT0gbV9yZXN1bHQucGF5bG9hZEdQUigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTXVsR2VuZXJhdG9yLmgKaW5kZXggMzZkMjZlYTEyNGUuLjYwODc3OTY2ODVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKQEAgLTU2LDggKzU2LDgg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIW1fbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0
SW50MzIoKSB8fCAhbV9yaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSk7CiAgICAg
fQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVy
cyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJv
b2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25z
dCBBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJ
Q0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0
aW9uU3RhdGUmLCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRl
RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExp
c3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJp
dGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29s
IGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7
IHJldHVybiBsZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGlj
IGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3Bl
cmFuZCkgeyByZXR1cm4gcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcAppbmRleCA5MmMy
OWRkNjMwYS4uY2VlYmUzOTA5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTmVnR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE5lZ0dlbmVyYXRvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKEND
YWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5l
cmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlLCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewog
ICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1f
c2NyYXRjaEdQUiAhPSBtX3NyYy5wYXlsb2FkR1BSKCkpOwpAQCAtNDUsNyArNDUsNyBAQCBKSVRN
YXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhl
bHBlcnMmIGppdCwgTWF0aElDRwogICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50
MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkVHlwZXMgPSBPYnNlcnZlZFR5cGUoKS53aXRo
SW50MzIoKTsKICAgICBpZiAoYXJpdGhQcm9maWxlKQotICAgICAgICBvYnNlcnZlZFR5cGVzID0g
YXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKTsKKyAgICAgICAgb2JzZXJ2ZWRUeXBlcyA9
IGFyaXRoUHJvZmlsZS0+YXJnT2JzZXJ2ZWRUeXBlKCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghb2JzZXJ2ZWRUeXBlcy5pc0VtcHR5KCksICJXZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZ2Vu
ZXJhdGUgYW55dGhpbmcgaWYgd2UgZG8gbm90IGhhdmUgYSBwcm9maWxlLiIpOwogCiAgICAgaWYg
KG9ic2VydmVkVHlwZXMuaXNPbmx5Tm9uTnVtYmVyKCkpCkBAIC04Miw3ICs4Miw3IEBAIEpJVE1h
dGhJQ0lubGluZVJlc3VsdCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVs
cGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2Vu
ZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBM
aXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBK
SVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxs
SGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBz
bG93UGF0aEp1bXBMaXN0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBi
b29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBt
X3NyYy5wYXlsb2FkR1BSKCkpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9yZXN1bHQu
cGF5bG9hZEdQUigpKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEpJVE5lZ0dlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dAogI2VuZGlmCiAgICAgLy8gVGhlIGZsYWdzIG9mIEFyaXRoTmVnYXRlIGFyZSBiYXNpYyBpbiBE
RkcuCiAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGtub3cgaWYgd2UgZXZlciBwcm9kdWNlZCBhIG51
bWJlci4KLSAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFy
aXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCkuc2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmls
ZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nICYmIGFy
aXRoUHJvZmlsZSAmJiAhYXJpdGhQcm9maWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIo
KSAmJiAhYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCiAgICAgICAgIGFyaXRoUHJv
ZmlsZS0+ZW1pdFNldERvdWJsZShqaXQpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKaW5kZXggOGEwYzJkNTE3ZDYuLjc4
N2I3MDc2ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9y
LmgKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEdQUihzY3Jh
dGNoR1BSKQogICAgIHsgfQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJv
ZmlsZSopOwotICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xv
d1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmls
aW5nKTsKKyAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxw
ZXJzJiwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqKTsK
KyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVt
cExpc3QsIGNvbnN0IFVuYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5n
KTsKIAogcHJpdmF0ZToKICAgICBKU1ZhbHVlUmVncyBtX3Jlc3VsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDQ3ZGViOGNlNmFhLi4zYTllODVh
MDhkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBA
IC0yNjQ1LDcgKzI2NDUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0aW9u
RnV6eihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogI2VuZGlmIC8vIENPTVBJTEVSKEdD
Q19DT01QQVRJQkxFKQogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIHByb2ZpbGVk
QWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3AxLCBKU1ZhbHVlIG9w
MiwgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1Zh
bHVlIHByb2ZpbGVkQWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3Ax
LCBKU1ZhbHVlIG9wMiwgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCiB7CiAgICAg
YXJpdGhQcm9maWxlLm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNBZGQoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMik7CkBAIC0yNjYxLDcgKzI2NjEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNB
ZGQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlQWRkUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjY3OSw3ICsyNjc5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGcKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AxKTsKICAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ay
KTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmls
ZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRo
UHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQg
PSBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTI3MDEsNyArMjcwMSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxl
ZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvZmlsZWRBZGQoZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AyKSwgKmFyaXRoUHJvZmlsZSkpOwogfQpAQCAtMjcxNiw3ICsyNzE2LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmoKICAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AyKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGRO
b09wdGltaXplOwotICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5h
cml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBhZGRJQy0+YXJpdGhQcm9maWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxI
U0FuZFJIUyhvcDEsIG9wMik7CiAgICAgYWRkSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI3NDksNyArMjc0OSw3
IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHVucHJvZmlsZWRNdWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TXVsKGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRNdWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJp
dGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVz
ID0gdHJ1ZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9m
aWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTI3OTAsNyArMjc5MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11
bE5vT3B0aW1pemU7Ci0gICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMt
PmFyaXRoUHJvZmlsZSgpKQorICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZl
TEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpKTsKICAgICBtdWxJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKSwgbm9uT3B0aW1pemVWYXJpYW50KTsKIApAQCAtMjgwMSw3ICsyODAxLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICByZXR1cm4gdW5wcm9maWxlZE11bChnbG9iYWxPYmpl
Y3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwg
QmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTI4MTcsNyArMjgxNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgp
OworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJv
ZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIGFyaXRoUHJvZmlsZS0+b2Jz
ZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25W
YWx1ZU11bFByb2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTI4MzYsNyArMjgzNiw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVs
SUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAg
IHJldHVybiBwcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIs
ICphcml0aFByb2ZpbGUpOwogfQpAQCAtMjg2Miw3ICsyODYyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LAogCiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJp
dGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3BlcmFuZCwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIFVu
YXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmls
ZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjg3MSw3ICsyODcxLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIG9wZXJhbmQg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwotICAgIGFyaXRoUHJvZmlsZS0+b2Jz
ZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7
CiAKICAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
QEAgLTI4OTksOSArMjg5OSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgCiAgICAg
SlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIAotICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpOworICAg
IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCk7
CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhT
KG9wZXJhbmQpOworICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBu
ZWdJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgb3BlcmF0aW9u
QXJpdGhOZWdhdGVQcm9maWxlZCk7CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTI5
MzMsOCArMjkzMyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJp
dGhOZWdhdGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIG9w
ZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgaWYgKEFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpKQotICAgICAgICBh
cml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgaWYgKFVuYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgICAgIGFyaXRo
UHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAgICBuZWdJQy0+Z2VuZXJhdGVPdXRPZkxp
bmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgb3BlcmF0aW9uQXJpdGhOZWdhdGUpOwogCiAjaWYg
RU5BQkxFKE1BVEhfSUNfU1RBVFMpCkBAIC0yOTYwLDcgKzI5NjAsNyBAQCBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YihnbG9iYWxPYmplY3Qs
IG9wMSwgb3AyKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHBy
b2ZpbGVkU3ViKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxl
JiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkK
K0FMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2Zp
bGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKIHsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTI5ODQsNyArMjk4NCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiAgICAgcmV0dXJuIHVucHJvZmlsZWRTdWIoZ2xvYmFs
T2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0
aFByb2ZpbGUpOwogCkBAIC0zMDAyLDcgKzMwMDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVT
dWJOb09wdGltaXplOwotICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklD
LT5hcml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2
ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKSk7CiAgICAgc3ViSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTMwMjgsNyArMzAyOCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUp
OwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgYXV0byBub25PcHRp
bWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZTsKQEAgLTMw
NDcsNyArMzA0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVTdWJQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFT
U0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBwcm9maWxlZFN1Yih2bSwgZ2xvYmFsT2Jq
ZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggMzdlODM2MTVkNDcuLjU5NWFl
YzQ3Y2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAt
MzgsNiArMzgsOCBAQCB0eXBlZGVmIGludDY0X3QgRW5jb2RlZEpTVmFsdWU7CiAgICAgCiBjbGFz
cyBBcnJheUFsbG9jYXRpb25Qcm9maWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOworY2xhc3MgVW5h
cnlBcml0aFByb2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCdXR0ZXJm
bHk7CiBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBDYWxsTGlua0luZm87CkBAIC02NCw3ICs2Niw2
IEBAIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiBzdHJ1Y3QgQnlWYWxJbmZvOwogc3RydWN0IElubGlu
ZUNhbGxGcmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKLXN0cnVjdCBBcml0aFByb2ZpbGU7CiAK
IGV4dGVybiAiQyIgewogCkBAIC03Nyw3ICs3OCw3IEBAIHR5cGVkZWYgY2hhciogVW51c2VkUHRy
OwogICAgIEE6IEpTQXJyYXkqCiAgICAgQWFwOiBBcnJheUFsbG9jYXRpb25Qcm9maWxlKgogICAg
IEFwOiBBcnJheVByb2ZpbGUqCi0gICAgQXJwOiBBcml0aFByb2ZpbGUqCisgICAgQXJwOiBCaW5h
cnlBcml0aFByb2ZpbGUqCiAgICAgQjogQnV0dGVyZmx5KgogICAgIEJ5OiBCeVZhbEluZm8qCiAg
ICAgQzogSlNDZWxsKgpAQCAtMjgyLDcgKzI4Myw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25DaGVja0lmRXhjZXB0aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKFZN
CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNPYmplY3QqIGNvbnN0cnVj
dG9yLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSGFzSW5zdGFuY2UpIFdURl9JTlRFUk5BTDsKIAog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIpIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVBZGRQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5B
TDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxl
ZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgSklUQWRkSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdU
Rl9JTlRFUk5BTDsKQEAgLTI5MiwxMyArMjkzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsTm9PcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEpJVE11bElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRN
dWxJQyopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVNdWxQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRF
Uk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9m
aWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBvcGVyYW5kKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIG9wZXJhbmQsIEFyaXRoUHJvZmlsZSopOworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgb3BlcmFuZCwgVW5hcnlBcml0aFByb2ZpbGUqKTsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEpJVE5lZ0lDKik7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgSklUTmVnSUMq
KTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlU3ViUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJv
ZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3Vi
SUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlU3ViUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgV1RGX0lO
VEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3Bw
CmluZGV4IDc5NWMyNzU4NGMwLi43YjFhOGI4MTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJh
dGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUs
IGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0
IEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJ
Q0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlKQogewogICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAg
T2JzZXJ2ZWRUeXBlIGxocyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtNzgsNyAr
NzgsNyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlu
bGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxp
bmVSZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUU3ViR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlz
dCwgY29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2Zp
bGluZykKK2Jvb2wgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVy
cyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9z
Y3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0g
bV9sZWZ0LnBheWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN1YkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJH
ZW5lcmF0b3IuaAppbmRleCA1NjFmNjMzNGFlMy4uMzQ5MWE4M2ZlZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaApAQCAtNTMsOCArNTMsOCBAQCBwdWJs
aWM6CiAgICAgICAgICwgbV9zY3JhdGNoRlBSKHNjcmF0Y2hGUFIpCiAgICAgeyB9CiAKLSAgICBK
SVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQXJpdGhQcm9maWxlKik7Ci0gICAgYm9vbCBnZW5lcmF0
ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBM
aXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0
aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3Rh
dGUmLCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIEND
YWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRo
UHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CiAKICAgICBzdGF0aWMgYm9vbCBp
c0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1cm4gZmFsc2U7
IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9w
ZXJhbmQpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCmluZGV4IDUxZWQ2NTNkOThhLi4yZmRlMTA3YTk4NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTE0NywzNiArMTQ3LDQ5IEBAIHZvaWQg
RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogI2VuZGlmCiAKICAgICB7Ci0gICAgICAg
IEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIGFy
aXRoUHJvZmlsZTsKKyAgICAgICAgYXJpdGhQcm9maWxlLmFyZ1Nhd0ludDMyKCk7CisgICAgICAg
IEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZl
ZEludEJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2JzZXJ2ZWRUeXBl
KCkuaXNPbmx5SW50MzIoKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgVW5hcnlBcml0aFByb2Zp
bGUgYXJpdGhQcm9maWxlOworICAgICAgICBhcml0aFByb2ZpbGUuYXJnU2F3TnVtYmVyKCk7Cisg
ICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IFVuYXJ5QXJpdGhQcm9maWxlOjpv
YnNlcnZlZE51bWJlckJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYXJnT2Jz
ZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQmlu
YXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nh
d0ludDMyKCk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdJbnQzMigpOwotICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5
SW50SW50KCkuYml0cygpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9i
c2VydmVkQmluYXJ5SW50SW50KCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Ci0g
ICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgp
LnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQ
cm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50SW50Qml0cygp
KTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJ
bnQzMigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5p
c09ubHlJbnQzMigpKTsKICAgICB9CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQ
cm9maWxlOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAg
ICBhcml0aFByb2ZpbGUubGhzU2F3TnVtYmVyKCk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNT
YXdJbnQzMigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFBy
b2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkuYml0cygpKTsKLSAgICAgICAgU1RBVElD
X0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkubGhzT2JzZXJ2
ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJv
ZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJ
bnQzMigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJp
dGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckludEJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0
aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAgIH0K
ICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNTYXdO
dW1iZXIoKTsKICAgICAgICAgYXJpdGhQcm9maWxlLnJoc1Nhd051bWJlcigpOwotICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5
TnVtYmVyTnVtYmVyKCkuYml0cygpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2Zp
bGU6Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5
TnVtYmVyKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRC
aW5hcnlOdW1iZXJOdW1iZXIoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7Cisg
ICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6
b2JzZXJ2ZWROdW1iZXJOdW1iZXJCaXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxl
Lmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRo
UHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQogICAgIHsK
LSAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQ
cm9maWxlIGFyaXRoUHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd0ludDMyKCk7
CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdOdW1iZXIoKTsKLSAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJl
cigpLmJpdHMoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZl
ZEJpbmFyeUludE51bWJlcigpLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwotICAg
ICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIo
KS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0
aFByb2ZpbGUuYml0cygpID09IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJC
aXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlz
T25seUludDMyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlw
ZSgpLmlzT25seU51bWJlcigpKTsKICAgICB9CiB9CiBJR05PUkVfV0FSTklOR1NfRU5ECmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCmluZGV4IDc4YWRkMDIwNTc1Li43MTI1YmQ0ZjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTkxLDcg
KzkxLDcgQEAgcHVibGljOgogCiBjb25zdCBpbnQ2NF90KiBMTEludE9mZnNldHNFeHRyYWN0b3I6
OmR1bW15KCkKIHsKLS8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldHNfZXh0cmFjdG9yLnJiLCBhbmQgY29udGFpbnMgY29kZQorLy8gVGhpcyBp
cyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rv
ci5yYiwgYW5kIGNvbnRhaW5zIGNvZGUKIC8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMs
IHNpemVzLCBhbmQgYSBoZWFkZXIgaWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgogLy8g
UGxhdGZvcm0uaCBtYWNyb3Mgd2UgaGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEg
bWV0aG9kIG9uIExMSW50T2Zmc2V0c0V4dHJhY3RvcgogLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdo
b3NlIG9mZnNldHMgd2UncmUgZXh0cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1h
a2UgdGhlaXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQppbmRleCBhODgwMGIwYmNhOS4uNTYwMzg3YTNhMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAg
LTI0MSwxMyArMjQxLDE1IEBAIGNvbnN0IElzSW52YWxpZGF0ZWQgPSBjb25zdGV4cHIgSXNJbnZh
bGlkYXRlZAogIyBTaGFkb3dDaGlja2VuIGRhdGEKIGNvbnN0IFNoYWRvd0NoaWNrZW5UYWlsTWFy
a2VyID0gY29uc3RleHByIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlclZhbHVlCiAK
LSMgQXJpdGhQcm9maWxlIGRhdGEKLWNvbnN0IEFyaXRoUHJvZmlsZUludCA9IGNvbnN0ZXhwciAo
QXJpdGhQcm9maWxlOjpvYnNlcnZlZFVuYXJ5SW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9m
aWxlTnVtYmVyID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkVW5hcnlOdW1iZXIo
KS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVJbnRJbnQgPSBjb25zdGV4cHIgKEFyaXRoUHJv
ZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnRJbnQoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVO
dW1iZXJJbnQgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJ
bnQoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVJbnROdW1iZXIgPSBjb25zdGV4cHIgKEFy
aXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5iaXRzKCkpCi1jb25zdCBBcml0
aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSBjb25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRC
aW5hcnlOdW1iZXJOdW1iZXIoKS5iaXRzKCkpCisjIFVuYXJ5QXJpdGhQcm9maWxlIGRhdGEKK2Nv
bnN0IEFyaXRoUHJvZmlsZUludCA9IGNvbnN0ZXhwciAoVW5hcnlBcml0aFByb2ZpbGU6Om9ic2Vy
dmVkSW50Qml0cygpKQorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyID0gY29uc3RleHByIChVbmFy
eUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJCaXRzKCkpCisKKyMgQmluYXJ5QXJpdGhQcm9m
aWxlIGRhdGEKK2NvbnN0IEFyaXRoUHJvZmlsZUludEludCA9IGNvbnN0ZXhwciAoQmluYXJ5QXJp
dGhQcm9maWxlOjpvYnNlcnZlZEludEludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJl
ckludCA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlckludEJp
dHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZUludE51bWJlciA9IGNvbnN0ZXhwciAoQmluYXJ5QXJp
dGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51
bWJlck51bWJlciA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJl
ck51bWJlckJpdHMoKSkKIAogIyBQb2ludGVyIFRhZ3MKIGNvbnN0IEJ5dGVjb2RlUHRyVGFnID0g
Y29uc3RleHByIEJ5dGVjb2RlUHRyVGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGQxNWQ5NjcyN2M1
Li5jODgwY2Y5NTljZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTEwMDAsOCArMTAwMCw4IEBAIGVu
ZCkKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9uZWdhdGUsIE9wTmVnYXRlLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKIAotICAgIG1hY3JvIGFyaXRoUHJv
ZmlsZSh0eXBlKQotICAgICAgICBvcmkgdHlwZSwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRo
UHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQorICAgIG1hY3JvIHVwZGF0ZUFyaXRo
UHJvZmlsZSh0eXBlKQorICAgICAgICBvcmggdHlwZSwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2Fy
aXRoUHJvZmlsZSArIFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgZW5kCiAKICAg
ICBtZXRhZGF0YSh0NSwgdDApCkBAIC0xMDEwLDEyICsxMDEwLDEyIEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkYXRhLCByCiAgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKICAg
ICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CiAgICAgbmVnaSB0MgotICAgIGFy
aXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRo
UHJvZmlsZUludCkKICAgICByZXR1cm4gKEludDMyVGFnLCB0MikKIC5vcE5lZ2F0ZVNyY05vdElu
dDoKICAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdwogICAgIHhvcmkgMHg4MDAw
MDAwMCwgdDEKLSAgICBhcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlTnVtYmVyKQorICAgIHVwZGF0
ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVOdW1iZXIpCiAgICAgcmV0dXJuKHQxLCB0MikKIAog
Lm9wTmVnYXRlU2xvdzoKQEAgLTEwMjcsNyArMTAyNyw3IEBAIGVuZCkKIG1hY3JvIGJpbmFyeU9w
Q3VzdG9tU3RvcmUob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uQW5k
U3RvcmUsIGRvdWJsZU9wZXJhdGlvbikKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNv
ZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKICAgICAgICAgbWFjcm8gYXJpdGhQcm9maWxlKHR5cGUpCi0gICAgICAgICAg
ICBvcmkgdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFy
aXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQorICAgICAgICAgICAgb3JoIHR5cGUsICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBCaW5hcnlBcml0aFByb2ZpbGU6Om1fYml0
c1t0NV0KICAgICAgICAgZW5kCiAKICAgICAgICAgbWV0YWRhdGEodDUsIHQyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpp
bmRleCA5NWMwZjY4ZTViZS4uZDk0OTEwMTVlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC05ODEsMjIgKzk4
MSwyNCBAQCBlbmQpCiAKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9uZWdhdGUsIE9wTmVnYXRl
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKworICAgIG1h
Y3JvIHVwZGF0ZUFyaXRoUHJvZmlsZSh0eXBlKQorICAgICAgICBvcmggdHlwZSwgT3BOZWdhdGU6
Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDFd
CisgICAgZW5kCisKICAgICBnZXQobV9vcGVyYW5kLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHNpemUsIHQwLCB0MykKICAgICBtZXRhZGF0YSh0MSwgdDIpCi0gICAgbG9hZGkgT3BO
ZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3Qx
XSwgdDIKICAgICBicWIgdDMsIG51bWJlclRhZywgLm9wTmVnYXRlTm90SW50CiAgICAgYnRpeiB0
MywgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDMKICAgICBvcnEgbnVtYmVy
VGFnLCB0MwotICAgIG9yaSBBcml0aFByb2ZpbGVJbnQsIHQyCi0gICAgc3RvcmVpIHQyLCBPcE5l
Z2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFd
CisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZUludCkKICAgICByZXR1cm4odDMp
CiAub3BOZWdhdGVOb3RJbnQ6CiAgICAgYnRxeiB0MywgbnVtYmVyVGFnLCAub3BOZWdhdGVTbG93
CiAgICAgeG9ycSAweDgwMDAwMDAwMDAwMDAwMDAsIHQzCi0gICAgb3JpIEFyaXRoUHJvZmlsZU51
bWJlciwgdDIKLSAgICBzdG9yZWkgdDIsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2Zp
bGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0KKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJp
dGhQcm9maWxlTnVtYmVyKQogICAgIHJldHVybih0MykKIAogLm9wTmVnYXRlU2xvdzoKQEAgLTEw
MTAsNyArMTAxMiw3IEBAIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUob3Bjb2RlTmFtZSwgb3Bj
b2RlU3RydWN0LCBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvCiAgICAgICAgIG1ldGFkYXRh
KHQ1LCB0MCkKIAogICAgICAgICBtYWNybyBwcm9maWxlKHR5cGUpCi0gICAgICAgICAgICBvcmkg
dHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRoUHJv
ZmlsZTo6bV9iaXRzW3Q1XQorICAgICAgICAgICAgb3JoIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQog
ICAgICAgICBlbmQKIAogICAgICAgICBnZXQobV9yaHMsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXJtLnJiCmluZGV4IGIyM2Y2NWI4NjgzLi5iMjIyNTY3ODBkZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtLnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgpAQCAtMjk5LDcgKzI5OSw3IEBAIGNs
YXNzIFNlcXVlbmNlCiAgICAgICAgICAgICBlbmQKICAgICAgICAgfQogICAgICAgICByZXN1bHQg
PSByaXNjTG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNEb3VibGUocmVzdWx0KQotICAgICAgICByZXN1
bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKHJlc3VsdCwgWyJzdG9yZWIiLCAic3Rv
cmVpIiwgInN0b3JlcCIsICJzdG9yZXEiXSkKKyAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlz
cGxhY2VkSW1tZWRpYXRlcyhyZXN1bHQsIFsic3RvcmViIiwgInN0b3JlaCIsICJzdG9yZWkiLCAi
c3RvcmVwIiwgInN0b3JlcSJdKQogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNYWxmb3JtZWRJ
bW1lZGlhdGVzKHJlc3VsdCwgMC4uMHhmZiwgMC4uMHgwZmYpCiAgICAgICAgIHJlc3VsdCA9IHJp
c2NMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhyZXN1bHQpCiAgICAgICAgIHJlc3VsdCA9IHJpc2NM
b3dlclJlZ2lzdGVyUmV1c2UocmVzdWx0KQpAQCAtNDE4LDcgKzQxOCw3IEBAIGNsYXNzIEluc3Ry
dWN0aW9uCiAgICAgICAgICAgICBlbmQKICAgICAgICAgd2hlbiAiYW5kaSIsICJhbmRwIgogICAg
ICAgICAgICAgZW1pdEFybUNvbXBhY3QoImFuZHMiLCAiYW5kIiwgb3BlcmFuZHMpCi0gICAgICAg
IHdoZW4gIm9yaSIsICJvcnAiCisgICAgICAgIHdoZW4gIm9yaSIsICJvcnAiLCAib3JoIgogICAg
ICAgICAgICAgZW1pdEFybUNvbXBhY3QoIm9ycnMiLCAib3JyIiwgb3BlcmFuZHMpCiAgICAgICAg
IHdoZW4gIm9yaXMiCiAgICAgICAgICAgICBlbWl0QXJtQ29tcGFjdCgib3JycyIsICJvcnJzIiwg
b3BlcmFuZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm02NC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCmluZGV4
IDA5NjZlYzNiZjZiLi5mY2QyNzZmMzZiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXJtNjQucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYXJtNjQucmIKQEAgLTM5Myw3ICszOTMsNyBAQCBjbGFzcyBTZXF1ZW5jZQogICAgICAg
ICAgICAgY2FzZSBub2RlLm9wY29kZQogICAgICAgICAgICAgd2hlbiAibG9hZGIiLCAibG9hZGJz
aSIsICJsb2FkYnNxIiwgInN0b3JlYiIsIC9eYmIvLCAvXmJ0Yi8sIC9eY2IvLCAvXnRiLwogICAg
ICAgICAgICAgICAgIHNpemUgPSAxCi0gICAgICAgICAgICB3aGVuICJsb2FkaCIsICJsb2FkaHNp
IiwgImxvYWRoc3EiLCAic3RvcmVoIgorICAgICAgICAgICAgd2hlbiAibG9hZGgiLCAibG9hZGhz
aSIsICJsb2FkaHNxIiwgIm9yaCIsICJzdG9yZWgiCiAgICAgICAgICAgICAgICAgc2l6ZSA9IDIK
ICAgICAgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIsICJzdG9yZWkiLCAiYWRkaSIsICJh
bmRpIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwKICAgICAgICAgICAgICAgICAibm90aSIs
ICJvcmkiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwgInhvcmkiLCAvXmJpLywgL15i
dGkvLApAQCAtNDE4LDcgKzQxOCw3IEBAIGNsYXNzIFNlcXVlbmNlCiAgICAgICAgICAgICBlbmQK
ICAgICAgICAgfQogCi0gICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1pc3BsYWNlZEltbWVkaWF0
ZXMocmVzdWx0LCBbInN0b3JlYiIsICJzdG9yZWkiLCAic3RvcmVwIiwgInN0b3JlcSJdKQorICAg
ICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKHJlc3VsdCwgWyJzdG9y
ZWIiLCAic3RvcmVoIiwgInN0b3JlaSIsICJzdG9yZXAiLCAic3RvcmVxIl0pCiAKICAgICAgICAg
IyBUaGUgcnVsZXMgZm9yIHdoaWNoIGltbWVkaWF0ZXMgYXJlIHZhbGlkIGZvciBhbmQvb3IveG9y
IGluc3RydWN0aW9ucyBhcmUgZmFpcmx5IGludm9sdmVkLCBzZWUgaHR0cHM6Ly9kaW5mdWVoci5n
aXRodWIuaW8vYmxvZy9lbmNvZGluZy1vZi1pbW1lZGlhdGUtdmFsdWVzLW9uLWFhcmNoNjQvCiAg
ICAgICAgIHZhbGlkTG9naWNhbEltbWVkaWF0ZXMgPSBbXQpAQCAtNzExLDYgKzcxMSw4IEBAIGNs
YXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBlbWl0QVJNNjRUQUMoIm9yciIsIG9wZXJhbmRz
LCA6cHRyKQogICAgICAgICB3aGVuICJvcnEiCiAgICAgICAgICAgICBlbWl0QVJNNjRUQUMoIm9y
ciIsIG9wZXJhbmRzLCA6cXVhZCkKKyAgICAgICAgd2hlbiAib3JoIgorICAgICAgICAgICAgZW1p
dEFSTTY0VEFDKCJvcnIiLCBvcGVyYW5kcywgOndvcmQpICMgbm90IDpoYWxmIGJlY2F1c2UgMTYt
Yml0IHJlZ2lzdGVycyBkb24ndCBleGlzdCBvbiBBUk0uCiAgICAgICAgIHdoZW4gInhvcmkiCiAg
ICAgICAgICAgICBlbWl0QVJNNjRUQUMoImVvciIsIG9wZXJhbmRzLCA6d29yZCkKICAgICAgICAg
d2hlbiAieG9ycCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2Nsb29wLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKaW5k
ZXggZjMzZjcwNmRiMTguLjM3MmU2ZjEzODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9jbG9vcC5yYgpAQCAtMTYwLDYgKzE2MCw3IEBAIGNsYXNzIEltbWVkaWF0ZQogCiAg
ICAgICAgIGNhc2UgdHlwZQogICAgICAgICB3aGVuIDppbnQ4OyAgICAiaW50OF90KCN7dmFsdWVT
dHJ9KSIKKyAgICAgICAgd2hlbiA6aW50MTY7ICAgImludDE2X3QoI3t2YWx1ZVN0cn0pIgogICAg
ICAgICB3aGVuIDppbnQzMjsgICAiaW50MzJfdCgje3ZhbHVlU3RyfSkiCiAgICAgICAgIHdoZW4g
OmludDY0OyAgICJpbnQ2NF90KCN7dmFsdWVTdHJ9KSIKICAgICAgICAgd2hlbiA6aW50cHRyOyAg
ImludHB0cl90KCN7dmFsdWVTdHJ9KSIKQEAgLTE4Myw2ICsxODQsNyBAQCBjbGFzcyBBZGRyZXNz
CiAgICAgZGVmIGNsVmFsdWUodHlwZT06aW50cHRyKQogICAgICAgICBjYXNlIHR5cGUKICAgICAg
ICAgd2hlbiA6aW50ODsgICAgICAgICBpbnQ4TWVtUmVmCisgICAgICAgIHdoZW4gOmludDE2OyAg
ICAgICAgaW50MTZNZW1SZWYKICAgICAgICAgd2hlbiA6aW50MzI7ICAgICAgICBpbnQzMk1lbVJl
ZgogICAgICAgICB3aGVuIDppbnQ2NDsgICAgICAgIGludDY0TWVtUmVmCiAgICAgICAgIHdoZW4g
OmludHB0cjsgICAgICAgaW50cHRyTWVtUmVmCkBAIC0zODYsNyArMzg4LDcgQEAgZW5kCiAKIGRl
ZiBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIHR5cGUsIG9wZXJhdG9yKQogICAgIHJhaXNl
IHVubGVzcyB0eXBlID09IDppbnRwdHIgfHwgdHlwZSA9PSA6dWludHB0ciB8fCB0eXBlID09IDpp
bnQzMiB8fCB0eXBlID09IDp1aW50MzIgfHwgXAotICAgICAgICB0eXBlID09IDppbnQ2NCB8fCB0
eXBlID09IDp1aW50NjQgfHwgdHlwZSA9PSA6ZG91YmxlCisgICAgICAgIHR5cGUgPT0gOmludDY0
IHx8IHR5cGUgPT0gOnVpbnQ2NCB8fCB0eXBlID09IDpkb3VibGUgfHwgdHlwZSA9PSA6aW50MTYK
ICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMKICAgICAgICAgb3AxID0gb3BlcmFuZHNbMF0KICAg
ICAgICAgb3AyID0gb3BlcmFuZHNbMV0KQEAgLTQwMSw2ICs0MDMsOSBAQCBkZWYgY2xvb3BFbWl0
T3BlcmF0aW9uKG9wZXJhbmRzLCB0eXBlLCBvcGVyYXRvcikKICAgICBpZiBkc3QuaXNfYT8gUmVn
aXN0ZXJJRCBhbmQgKHR5cGUgPT0gOmludDMyIG9yIHR5cGUgPT0gOnVpbnQzMikKICAgICAgICAg
dHJ1bmNhdGlvbkhlYWRlciA9ICIodWludDMyX3QpKCIKICAgICAgICAgdHJ1bmNhdGlvbkZvb3Rl
ciA9ICIpIgorICAgIGVsc2lmIGRzdC5pc19hPyBSZWdpc3RlcklEIGFuZCAodHlwZSA9PSA6aW50
MTYpCisgICAgICAgIHRydW5jYXRpb25IZWFkZXIgPSAiKHVpbnQxNl90KSgiCisgICAgICAgIHRy
dW5jYXRpb25Gb290ZXIgPSAiKSIKICAgICBlbHNlCiAgICAgICAgIHRydW5jYXRpb25IZWFkZXIg
PSAiIgogICAgICAgICB0cnVuY2F0aW9uRm9vdGVyID0gIiIKQEAgLTU4NSw2ICs1OTAsOCBAQCBj
bGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRz
LCA6aW50NjQsICJ8IikKICAgICAgICAgd2hlbiAib3JwIgogICAgICAgICAgICAgY2xvb3BFbWl0
T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50cHRyLCAifCIpCisgICAgICAgIHdoZW4gIm9yaCIKKyAg
ICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludDE2LCAifCIpCiAKICAg
ICAgICAgd2hlbiAieG9yaSIKICAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5k
cywgOmludDMyLCAiXiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9pbnN0cnVjdGlvbnMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9p
bnN0cnVjdGlvbnMucmIKaW5kZXggN2EyMTJiMjBlMmQuLmE0MWUwNmY3ZDZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCkBAIC00Niw2
ICs0Niw3IEBAIE1BQ1JPX0lOU1RSVUNUSU9OUyA9CiAgICAgICJvcmkiLAogICAgICAib3JmIiwK
ICAgICAgIm9yZCIsCisgICAgICJvcmgiLAogICAgICAicnNoaWZ0aSIsCiAgICAgICJ1cnNoaWZ0
aSIsCiAgICAgICJyc2hpZnRwIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL21pcHMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBz
LnJiCmluZGV4IGI1ZjA3YjE2OGMzLi41YTUzMmQ4NWI1OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9taXBzLnJiCkBAIC01MjcsNyArNTI3LDcgQEAgZGVmIG1pcHNMb3dlck1p
c3BsYWNlZEltbWVkaWF0ZXMobGlzdCkKICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAg
IHdoZW4gL14oYWRkaXxzdWJpKS8KICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUucmlz
Y0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCwgLTB4N2ZmZi4uMHg3ZmZm
KQotICAgICAgICAgICAgd2hlbiAiYW5kaSIsICJhbmRwIiwgIm9yaSIsICJvcnAiLCAieG9yaSIs
ICJ4b3JwIgorICAgICAgICAgICAgd2hlbiAiYW5kaSIsICJhbmRwIiwgIm9yaSIsICJvcnAiLCAi
b3JoIiwgInhvcmkiLCAieG9ycCIKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUucmlz
Y0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCwgMC4uMHhmZmZmKQogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQpAQCAtODYwLDcg
Kzg2MCw3IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBlbmQKICAgICAgICAgd2hl
biAiYW5kaSIsICJhbmRwIgogICAgICAgICAgICAgZW1pdE1JUFNDb21wYWN0KCJhbmQiLCAiYW5k
Iiwgb3BlcmFuZHMpCi0gICAgICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICAgIHdoZW4gIm9y
aSIsICJvcnAiLCAib3JoIgogICAgICAgICAgICAgZW1pdE1JUFNDb21wYWN0KCJvciIsICJvcnIi
LCBvcGVyYW5kcykKICAgICAgICAgd2hlbiAib3JpcyIKICAgICAgICAgICAgIGVtaXRNSVBTQ29t
cGFjdCgib3IiLCAib3JycyIsIG9wZXJhbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3Jpc2MucmIKaW5kZXggNzVkN2E5OGYzM2YuLjFlNjcwNGZhYjcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIKQEAgLTQ2Miw3ICs0NjIsNyBAQCBkZWYgcmlz
Y0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKGxpc3QpCiAgICAgICAgICAgICBwb3N0SW5zdHJ1Y3Rp
b25zID0gW10KICAgICAgICAgICAgIGFubm90YXRpb24gPSBub2RlLmFubm90YXRpb24KICAgICAg
ICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKLSAgICAgICAgICAgIHdoZW4gImFkZGkiLCAiYWRkaXMi
LCAiYW5kaSIsICJsc2hpZnRpIiwgIm11bGkiLCAibmVnaSIsICJub3RpIiwgIm9yaSIsICJvcmlz
IiwKKyAgICAgICAgICAgIHdoZW4gImFkZGkiLCAiYWRkaXMiLCAiYW5kaSIsICJsc2hpZnRpIiwg
Im11bGkiLCAibmVnaSIsICJub3RpIiwgIm9yaSIsICJvcmgiLCAib3JpcyIsCiAgICAgICAgICAg
ICAgICAgInJzaGlmdGkiLCAidXJzaGlmdGkiLCAic3ViaSIsICJzdWJpcyIsICJ4b3JpIiwgL15i
aS8sIC9eYnRpLywgL15jaS8sIC9edGkvCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20veDg2LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20veDg2LnJiCmluZGV4IDExMmVlZDdiNWMxLi42ZGNhMDQ3MWQ5MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgpAQCAtMTEyMyw2ICsxMTIzLDggQEAgY2xhc3MgSW5z
dHJ1Y3Rpb24KICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvcnBzIiwgOmZsb2F0KQogICAgICAg
ICB3aGVuICJvcmQiCiAgICAgICAgICAgICBoYW5kbGVYODZPcCgib3JwZCIsIDpkb3VibGUpCisg
ICAgICAgIHdoZW4gIm9yaCIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvciN7eDg2U3VmZml4
KDpoYWxmKX0iLCA6aGFsZikKICAgICAgICAgd2hlbiAicnNoaWZ0aSIKICAgICAgICAgICAgIGhh
bmRsZVg4NlNoaWZ0KCJzYXIje3g4NlN1ZmZpeCg6aW50KX0iLCA6aW50KQogICAgICAgICB3aGVu
ICJyc2hpZnRwIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1
bHRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAppbmRl
eCA5YjNkMGQ3NGM4ZC4uNTYyMmYyODljYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUmVzdWx0VHlwZS5oCkBAIC00OCw2ICs0OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbnVtQml0c05lZWRlZCA9IDc7CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoKFR5cGVCaXRzICYgKCgxIDw8IG51bUJpdHNOZWVkZWQpIC0gMSkpID09IFR5cGVC
aXRzLCAiVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLiIpOwogCisgICAgICAgIGNv
bnN0ZXhwciBleHBsaWNpdCBSZXN1bHRUeXBlKCkKKyAgICAgICAgICAgIDogUmVzdWx0VHlwZSh1
bmtub3duVHlwZSgpKQorICAgICAgICB7CisgICAgICAgIH0KICAgICAgICAgY29uc3RleHByIGV4
cGxpY2l0IFJlc3VsdFR5cGUoVHlwZSB0eXBlKQogICAgICAgICAgICAgOiBtX2JpdHModHlwZSkK
ICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKaW5kZXggMTVmMWZkODVlNDQuLmRhOWZiY2E1MmI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQ3Nyw4
ICs0NzcsOCBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fc3RyaW5nKQogI2lmIEVOQUJM
RShKSVQpCiBzdGF0aWMgdm9pZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3AoT3BO
ZWdhdGU6Ok1ldGFkYXRhJiBtZXRhZGF0YSwgSlNWYWx1ZSByZXN1bHQsIEpTVmFsdWUgb3BlcmFu
ZCkKIHsKLSAgICBBcml0aFByb2ZpbGUmIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FyaXRoUHJvZmls
ZTsKLSAgICBwcm9maWxlLm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgVW5hcnlBcml0aFByb2Zp
bGUmIHByb2ZpbGUgPSBtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZTsKKyAgICBwcm9maWxlLm9ic2Vy
dmVBcmcob3BlcmFuZCk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc051bWJlcigpIHx8IHJlc3VsdC5p
c0JpZ0ludCgpKTsKICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgaWYgKCFy
ZXN1bHQuaXNJbnQzMigpKSB7CkBAIC01MzUsNyArNTM1LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX25lZ2F0ZSkKICNpZiBFTkFCTEUoREZHX0pJVCkKIHN0YXRpYyB2b2lkIHVwZGF0ZUFy
aXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIHJlc3VsdCwgSlNWYWx1ZSBs
ZWZ0LCBKU1ZhbHVlIHJpZ2h0KQogewotICAgIEFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9ICpjb2Rl
QmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKHBjKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUmIHBy
b2ZpbGUgPSAqY29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhwYyk7CiAKICAgICBp
ZiAocmVzdWx0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNJbnQzMigpKSB7
CkBAIC01OTYsNyArNTk2LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FkZCkKICAgICBK
U1ZhbHVlIHYxID0gR0VUX0MoYnl0ZWNvZGUubV9saHMpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVl
IHYyID0gR0VUX0MoYnl0ZWNvZGUubV9yaHMpLmpzVmFsdWUoKTsKIAotICAgIEFyaXRoUHJvZmls
ZSYgYXJpdGhQcm9maWxlID0gKmNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yUEMocGMpOworICAg
IEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJp
dGhQcm9maWxlRm9yUEMocGMpOwogICAgIGFyaXRoUHJvZmlsZS5vYnNlcnZlTEhTQW5kUkhTKHYx
LCB2Mik7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQWRkKGdsb2JhbE9iamVjdCwgdjEsIHYy
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383379</attachid>
            <date>2019-11-12 13:48:06 -0800</date>
            <delta_ts>2019-11-12 13:51:12 -0800</delta_ts>
            <desc>diff</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>14584</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmgKaW5kZXggYWNmNmM0Y2I1YWYuLjIxMGM2NjcyNzRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAt
NjE1LDYgKzYxNSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZzw2ND4oZGVz
dCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1
dGVBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBMb2dpY2FsSW1tZWRpYXRlIGxvZ2lj
YWxJbW0gPSBMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGUzMihpbW0ubV92YWx1ZSk7CisgICAgICAg
IGlmIChsb2dpY2FsSW1tLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgbG9hZDE2KGFkZHJlc3Mu
bV9wdHIsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5vcnI8MzI+KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVn
aXN0ZXIsIGxvZ2ljYWxJbW0pOworICAgICAgICAgICAgc3RvcmUxNihkYXRhVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQxNihh
ZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KSk7CisgICAgICAgICAgICBvcjMyKGltbSwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBnZXRDYWNoZWRE
YXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgc3RvcmUxNihk
YXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgb3IzMihkZXN0LCBzcmMsIGRlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRleCA5NWNkNzNmMjM5ZC4uMzU2
YTkzN2I2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0zNjUsNiArMzY1LDI0IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KKworICAg
IHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKKyAgICB7
CisgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjpt
YWtlRW5jb2RlZEltbShpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgp
KSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJl
c3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbG9hZDE2KGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyKGRhdGFUZW1w
UmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFybUltbSk7CisgICAgICAgICAgICBzdG9yZTE2
KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGxvYWQxNihhZGRyZXNzVGVtcFJlZ2lzdGVyLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1vdmUoaW1tLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAg
ICAgICBzdG9yZTE2KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAg
ICAgICB9CisgICAgfQogICAgIAogICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgQWJzb2x1
dGVBZGRyZXNzIGRlc3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggZDBjZGYwMmU0MjUuLjBlMTkxYTFi
Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJNSVBTLmgKQEAgLTQ3NSw2ICs0NzUsMjUgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5zdWJ1KGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8sIHNyYyk7CiAgICAgfQogCisg
ICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmIChtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIC8v
IFRPRE86IFN3YXAgZGF0YVRlbXBSZWdpc3RlciBhbmQgaW1tVGVtcFJlZ2lzdGVyIHVzYWdlCisg
ICAgICAgICAgICBsb2FkMTYoZGVzdC5tX3B0ciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgIG9yMzIoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgc3RvcmUxNihpbW1U
ZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dWludHB0cl90IGFkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihkZXN0Lm1fcHRyKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx1aShhZGRyVGVtcFJlZ2lzdGVyLCAoYWRyICsgMHg4
MDAwKSA+PiAxNik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sdyhpbW1UZW1wUmVnaXN0ZXIs
IGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmZmZik7CisgICAgICAgICAgICBvcjE2KGltbSwg
aW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KGltbVRlbXBSZWdp
c3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRyICYgMHhmZmZmKTsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIub3JJbnNuKGRlc3QsIGRlc3QsIHNyYyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKaW5kZXgg
NGFmZTgxN2MzNmIuLmI4MWMyMmJmODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCkBAIC05OSw2ICs5OSwxMSBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vcmxfcm0ocmVnLCBhZGRyZXNzLm1fcHRy
KTsKICAgICB9CisKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5vcndfaW0oaW1tLm1fdmFs
dWUsIGFkZHJlc3MubV9wdHIpOworICAgIH0KICAgICAKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRl
eCBiOTk2Y2E0OWQzOS4uZGQxNGE2ZDQ5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTQ3LDYgKzQ3LDcg
QEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2gzMjsK
ICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoQWRkMzI7CiAgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMzI7CisgICAgdXNpbmcgTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246Om9yMTY7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1
YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkODsKICAgICB1c2lu
ZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZDMyOwpAQCAtODksNiArOTAsMTIgQEAgcHVi
bGljOgogICAgICAgICBvcjMyKHJlZywgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOwogICAg
IH0KIAorICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwg
c2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBvcjE2KGltbSwgQWRkcmVzcyhzY3JhdGNoUmVn
aXN0ZXIoKSkpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJz
b2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
YWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggNDE5N2NhNmE5OTUuLjU5YmJjMjc3ZmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAt
MTEwNCw2ICsxMTA0LDMxIEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiB9
CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiAKK3ZvaWQgdGVzdE9ySW1tTWVtKCkKK3sK
KyAgICAvLyBGSVhNRTogdGhpcyBkb2VzIG5vdCB0ZXN0IHRoYXQgdGhlIG9yIGRvZXMgbm90IHRv
dWNoIGJleW9uZCBpdHMgd2lkdGguCisgICAgLy8gSSBhbSBub3Qgc3VyZSBob3cgdG8gZG8gc3Vj
aCBhIHRlc3Qgd2l0aG91dCBhIGxvdCBvZiBjb21wbGV4aXR5IChydW5uaW5nIG11bHRpcGxlIHRo
cmVhZHMsIHdpdGggYSByYWNlIG9uIHRoZSBoaWdoIGJpdHMgb2YgdGhlIG1lbW9yeSBsb2NhdGlv
bikuCisgICAgdWludDY0X3QgbWVtb3J5TG9jYXRpb24gPSAweDEyMzQxMjM0OworICAgIGF1dG8g
b3IzMiA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZShqaXQpOworICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMig0MiksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZtZW1vcnlMb2NhdGlv
bikpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0
KCk7CisgICAgfSk7CisgICAgaW52b2tlPHZvaWQ+KG9yMzIpOworICAgIENIRUNLX0VRKG1lbW9y
eUxvY2F0aW9uLCAweDEyMzQxMjM0IHwgNDIpOworCisgICAgbWVtb3J5TG9jYXRpb24gPSAweDEy
MzQxMjM0OworICAgIGF1dG8gb3IxNiA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkg
eworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworICAgICAgICBqaXQub3IxNihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRy
ZXNzKCZtZW1vcnlMb2NhdGlvbikpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQp
OworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisgICAgaW52b2tlPHZvaWQ+KG9yMTYpOwor
ICAgIENIRUNLX0VRKG1lbW9yeUxvY2F0aW9uLCAweDEyMzQxMjM0IHwgNDIpOworfQorCiB2b2lk
IHRlc3RCeXRlU3dhcCgpCiB7CiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpAQCAtMTM2
MCw2ICsxMzg1LDggQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogCiAgICAgUlVOKHRl
c3RDYWdlUHJlc2VydmVzUEFDRmFpbHVyZUJpdCgpKTsKIAorICAgIFJVTih0ZXN0T3JJbW1NZW0o
KSk7CisKICAgICBpZiAodGFza3MuaXNFbXB0eSgpKQogICAgICAgICB1c2FnZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCmluZGV4IDdm
NDZmNzNmYzllLi5hYWVkM2Y3N2JkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBBcml0aFByb2Zp
bGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
VmFsdWVSZWcKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KIGJvb2wgQXJpdGhQcm9m
aWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdAogewotICAgIHVp
bnQzMl90IG1hc2sgPSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9Eb3Vi
bGUgfCBOb25OZWdaZXJvRG91YmxlOworICAgIEJpdGZpZWxkVHlwZSBtYXNrID0gSW50MzJPdmVy
ZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOZWdaZXJvRG91YmxlIHwgTm9uTmVnWmVyb0RvdWJsZTsK
ICAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKQEAgLTcwLDM1ICs3MCw0
MiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+CiB2b2lkIEFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewog
ICAgIGlmIChzaG91bGRFbWl0U2V0RG91YmxlKCkpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTmVnWmVy
b0RvdWJsZSB8IE5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVz
cyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBJ
bnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9Eb3VibGUgfCBOb25OZWdaZXJv
RG91YmxlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgogYm9vbCBBcml0
aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdAog
ewotICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWM7CisgICAgQml0
ZmllbGRUeXBlIG1hc2sgPSBBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWM7CiAgICAgcmV0dXJuICht
X2JpdHMgJiBtYXNrKSAhPSBtYXNrOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5
cGU+Ci1ib29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50
KCkgY29uc3QKK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25OdW1l
cmljKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewotICAgIHVpbnQzMl90IG1hc2sgPSBBcml0
aFByb2ZpbGU6OkJpZ0ludDsKLSAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7Cisg
ICAgaWYgKHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlv
bmFsU2V0KGppdCwgTm9uTnVtZXJpYyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxk
VHlwZT4KLXZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25OdW1lcmlj
KENDYWxsSGVscGVycyYgaml0KSBjb25zdAorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBl
Pjo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0CiB7Ci0gICAgaWYgKHNob3VsZEVtaXRTZXRO
b25OdW1lcmljKCkpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KE5vbk51bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRz
KCkpKTsKKyAgICBCaXRmaWVsZFR5cGUgbWFzayA9IEFyaXRoUHJvZmlsZTo6QmlnSW50OworICAg
IHJldHVybiAobV9iaXRzICYgbWFzaykgIT0gbWFzazsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
Qml0ZmllbGRUeXBlPgogdm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJp
Z0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIHsKICAgICBpZiAoc2hvdWxkRW1pdFNldEJp
Z0ludCgpKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaWdJ
bnQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKKyAg
ICAgICAgZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBCaWdJbnQpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0VW5jb25kaXRpb25hbFNldChDQ2FsbEhlbHBlcnMmIGppdCwgQml0ZmllbGRUeXBlIG1hc2sp
IGNvbnN0Cit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Qml0ZmllbGRUeXBlLCB1
aW50MTZfdD46OnZhbHVlKTsKKyAgICBqaXQub3IxNihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihtYXNrKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7
CiB9CiAKIC8vIEdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBh
Ym92ZSBmb3IgVW5hcnlBcml0aFByb2ZpbGUvQmluYXJ5QXJpdGhQcm9maWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKaW5kZXggY2FkOTlmNDhiYTYu
LjA2ODlmYWE1MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJpdGhQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Qml0ZmllbGRUeXBlPgogY2xhc3MgQXJpdGhQcm9maWxlIHsKIHB1YmxpYzoKLSAgICBlbnVtIE9i
c2VydmVkUmVzdWx0cyB7CisgICAgZW51bSBPYnNlcnZlZFJlc3VsdHMgOiBCaXRmaWVsZFR5cGUg
ewogICAgICAgICBOb25OZWdaZXJvRG91YmxlID0gMSA8PCAwLAogICAgICAgICBOZWdaZXJvRG91
YmxlICAgID0gMSA8PCAxLAogICAgICAgICBOb25OdW1lcmljICAgICAgID0gMSA8PCAyLApAQCAt
MTIxLDEzICsxMjEsMTUgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgp
IGNvbnN0OwogICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKIAot
ICAgIC8vIFNldHMgTm9uTnVtYmVyLgorICAgIC8vIFNldHMgTm9uTnVtZXJpYwogICAgIHZvaWQg
ZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRF
bWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0OwogCiAgICAgLy8gU2V0cyBCaWdJbnQKICAgICB2b2lk
IGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRFbWl0
U2V0QmlnSW50KCkgY29uc3Q7CisKKyAgICB2b2lkIGVtaXRVbmNvbmRpdGlvbmFsU2V0KENDYWxs
SGVscGVycyYsIEJpdGZpZWxkVHlwZSkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAog
ICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKaW5kZXggYjhj
NDc5ODZmYTEuLmJlNmQ0ZDQwYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVERpdkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVREaXZHZW5lcmF0b3IuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBKSVREaXZHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQpCiAgICAgbm90RG91YmxlWmVy
by5saW5rKCZqaXQpOwogI2VuZGlmCiAgICAgaWYgKG1fYXJpdGhQcm9maWxlKQotICAgICAgICBq
aXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6OnNw
ZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKG1fYXJpdGhQ
cm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgbV9hcml0aFByb2ZpbGUtPmVtaXRV
bmNvbmRpdGlvbmFsU2V0KGppdCwgQmluYXJ5QXJpdGhQcm9maWxlOjpzcGVjaWFsRmFzdFBhdGhC
aXQpOwogICAgIGppdC5ib3hEb3VibGUobV9sZWZ0RlBSLCBtX3Jlc3VsdCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcAppbmRleCBjZjZiYWE1
MmY2MS4uOTQ0ODdjMDUyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTXVsR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11
bEdlbmVyYXRvci5jcHAKQEAgLTIwNSwxOCArMjA1LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdE5lZ2F0aXZlWmVybyA9IGppdC5i
cmFuY2g2NChDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KG5lZ2F0aXZlWmVyb0JpdHMpKTsKIAotICAgICAgICBq
aXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5l
Z1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUt
PmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBhcml0aFByb2ZpbGUtPmVtaXRVbmNvbmRpdGlv
bmFsU2V0KGppdCwgQmluYXJ5QXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKTsKICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0
aXZlWmVyby5saW5rKCZqaXQpOwotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAg
ICAgICBhcml0aFByb2ZpbGUtPmVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgQmluYXJ5QXJpdGhQ
cm9maWxlOjpOb25OZWdaZXJvRG91YmxlKTsKIAogICAgICAgICBqaXQubW92ZShtX3Jlc3VsdC5w
YXlsb2FkR1BSKCksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC51cnNoaWZ0UHRyKENDYWxs
SGVscGVyczo6SW1tMzIoNTIpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQuYW5kMzIoQ0Nh
bGxIZWxwZXJzOjpJbW0zMigweDdmZiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcCBub0ludDUyT3ZlcmZsb3cgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpM
ZXNzVGhhbk9yRXF1YWwsIG1fc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MHg0MzEpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihC
aW5hcnlBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRl
QWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBhcml0aFBy
b2ZpbGUtPmVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgQmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1
Mk92ZXJmbG93KTsKICAgICAgICAgbm9JbnQ1Mk92ZXJmbG93LmxpbmsoJmppdCk7CiAKICAgICAg
ICAgZG9uZS5saW5rKCZqaXQpOwpAQCAtMjI3LDE4ICsyMjcsMTggQEAgYm9vbCBKSVRNdWxHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6
SnVtcExpc3QKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgbV9yZXN1bHQucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigwKSkpOwogICAgICAgICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5i
cmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC50YWdHUFIoKSwgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIobmVnYXRpdmVaZXJvQml0cyA+PiAzMikpKTsKIAotICAgICAg
ICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6
Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2Zp
bGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBhcml0aFByb2ZpbGUtPmVtaXRVbmNvbmRp
dGlvbmFsU2V0KGppdCwgQmluYXJ5QXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKTsKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5l
Z2F0aXZlWmVyby5saW5rKCZqaXQpOwotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhl
bHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOwor
ICAgICAgICBhcml0aFByb2ZpbGUtPmVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgQmluYXJ5QXJp
dGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlKTsKIAogICAgICAgICBqaXQubW92ZShtX3Jlc3Vs
dC50YWdHUFIoKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LnVyc2hpZnRQdHIoQ0NhbGxI
ZWxwZXJzOjpJbW0zMig1MiAtIDMyKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LmFuZDMy
KENDYWxsSGVscGVyczo6SW1tMzIoMHg3ZmYpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgbm9JbnQ1Mk92ZXJmbG93ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVy
czo6TGVzc1RoYW5PckVxdWFsLCBtX3NjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDB4NDMxKSk7Ci0gICAgICAgIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihCaW5hcnlBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cpLCBDQ2FsbEhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworCisg
ICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBCaW5hcnlBcml0
aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cpOwogCiAgICAgICAgIGVuZEp1bXBMaXN0LmFwcGVuZChu
b0ludDUyT3ZlcmZsb3cpOwogICAgICAgICBpZiAobV9zY3JhdGNoR1BSID09IG1fcmVzdWx0LnRh
Z0dQUigpIHx8IG1fc2NyYXRjaEdQUiA9PSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383382</attachid>
            <date>2019-11-12 14:23:36 -0800</date>
            <delta_ts>2019-11-12 14:29:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>136015</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OWFkMjMxNDRmOWYuLmQxOTAzNmQ5YWIyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTExLTEyICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgbmV3IHRlc3QgY2F0Y2hlcyB0aGUgbWV0YWRhdGEgY29ycnVwdGlvbiB0
aGF0IHVzZWQgdG8gaGFwcGVuIGluIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2gu
CisKKyAgICAgICAgKiBzdHJlc3MvcmVncmVzcy01NzAyMDMzOC5qczogQWRkZWQuCisKIDIwMTkt
MTEtMDggIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFRlbXBvcmFyaWx5IHNraXAgYW5vdGhlciBicm9rZW4gdGVzdCBvbiBNSVBTIGR1ZSB0byBPU1Ig
ZXhpdCB0byBMTEludApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVncmVzcy01NzAyMDMz
OC5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ3Jlc3MtNTcwMjAzMzguanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBiMDc0Y2Q1NDE3Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcmVncmVzcy01NzAyMDMzOC5qcwpAQCAtMCwwICsxLDE4IEBACisvL0Ag
cnVuRGVmYXVsdCgiLS1tYXhpbXVtT3B0aW1pemF0aW9uRGVsYXk9MCIpCitsZXQgY29kZSA9IGAK
K2xldCB6ID0ge307CitmdW5jdGlvbiBmb28oKSB7CisgIGNvbnN0IHggPSB1bmRlZmluZWQgKiBb
XTsKKyAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDAwMDsgaisrKSB7CisgICAgY29uc3QgeSA9IHgg
KiAwOworICAgIHpbe31dID0geTsKKyAgfQorfQorZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKysp
IHsKKyAgZm9vKCk7Cit9CitgOworCitmb3IgKGxldCBpPTA7IGk8MTAwOyBpKyspIHsKKyAgcnVu
U3RyaW5nKGNvZGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYmViNzNjZGFmNjYu
LmRkYzVkNzliMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOTAgQEAK
KzIwMTktMTEtMTIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAg
ICAgICBTcGxpdCBBcml0aFByb2ZpbGUgaW50byBhIFVuYXJ5IGFuZCBhIEJpbmFyeSB2ZXJzaW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4MzIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MjY2ODQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlaXRoIE1pbGxlci4KKworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGlt
ZSBvbmx5IHVzZWQgZm9yIGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQg
YmVpbmcgdXNlZCBmb3IgbmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1
c2VkIGZvciBpbmMgYW5kIGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBh
dGNoIEkgbWFrZSBhIHNlcGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3Ig
YSBzaW5nbGUgYXJndW1lbnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisK
KyAgICAgICAgQWZ0ZXIgZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXpl
ZCB0aGF0IHRoZSBSZXN1bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQ
cm9maWxlIGFyZSBub3QgbmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFs
cmVhZHkgaW4gdGhlIGJ5dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3Zp
bmcgdGhlbSBhbGxvd2VkIHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBm
aXQgaW4gMTYgYml0cyAoOSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRo
ZSB0d28ga2luZHMgc2VwYXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRl
cGVuZGVudGx5IGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlcXVpcmVkIGFk
ZGluZyB0aGUgIm9yaCIgaW5zdHJ1Y3Rpb24gdG8gdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCB0byBz
ZXQgYml0cyBpbiB0aGUgQXJpdGhQcm9maWxlLgorICAgICAgICBUaGlzIGluIHR1cm4gbW90aXZh
dGVkIHRoZSBhZGRpdGlvbiBvZiAic3RvcmVoIiwgYXMgb24gUklTQyBwbGF0Zm9ybXMgIm9yaCIg
b24gYSBtZW1vcnkgbG9jYXRpb24gaXMgYWN0dWFsbHkgbG9hZGggLT4gb3JoIC0+IHN0b3JlaC4K
KworICAgICAgICBGaW5hbGx5IGl0IHJlcXVpcmVkIGFkZGluZyBzdXBwb3J0IGZvciBvcjE2KFRy
dXN0ZWRJbW0zMiwgQWJzb2x1dGVBZGRyZXNzKSBpbiB0aGUgTWFjcm9Bc3NlbWJsZXIgZm9yIHRo
ZSBJQ3MuCisgICAgICAgIEluc3RlYWQgb2YgZGlyZWN0bHkgY2FsbGluZyBpdCAobGlrZSB3ZSB1
c2VkIHRvIGRvIHdpdGggb3IzMiksIEkgaW50cm9kdWNlZCBBcml0aFByb2ZpbGU6OmVtaXRVbmNv
bmRpdGlvbmFsU2V0LCBzbyB0aGF0IGlmIGVpdGhlciBBcml0aFByb2ZpbGUgZXZlciBjaGFuZ2Vz
IGluIHNpemUgYWdhaW4gd2UnbGwgaGF2ZSBmZXdlciBwbGFjZXMgdG8gY2hhbmdlLgorCisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6b3IxNik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6b3IxNik6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om9yMTYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6b3IxNik6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjpvcjE2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20u
Y3BwOgorICAgICAgICAoSlNDOjp0ZXN0T3JJbW1NZW0pOgorICAgICAgICAoSlNDOjpydW4pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6
OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxk
RW1pdFNldE5vbk51bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0
ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNvbmRp
dGlvbmFsU2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6
ZGlkT2JzZXJ2ZU5vbkludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpk
aWRPYnNlcnZlRG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRP
YnNlcnZlTm9uTmVnWmVyb0RvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTo6ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFBy
b2ZpbGU6OmRpZE9ic2VydmVOb25OdW1lcmljIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQ
cm9maWxlOjpkaWRPYnNlcnZlQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9m
aWxlOjpkaWRPYnNlcnZlSW50MzJPdmVyZmxvdyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRo
UHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpB
cml0aFByb2ZpbGU6OnNldE9ic2VydmVkTm9uTmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6
OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWROZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6
QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5vbk51bWVyaWMpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxl
OjpzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3cpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6
OnNldE9ic2VydmVkSW50NTJPdmVyZmxvdyk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6
b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6YWRkcmVzc09mQml0
cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6Yml0cyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6QXJpdGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJp
dGhQcm9maWxlOjpoYXNCaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpz
ZXRCaXQpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6VW5hcnlBcml0aFByb2Zp
bGUpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKToK
KyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cyk6Cisg
ICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdPYnNlcnZlZFR5cGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6c2V0QXJnT2JzZXJ2ZWRUeXBlKToKKyAg
ICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nhd0ludDMyKToKKyAgICAgICAgKEpT
Qzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nhd051bWJlcik6CisgICAgICAgIChKU0M6OlVuYXJ5
QXJpdGhQcm9maWxlOjphcmdTYXdOb25OdW1iZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRo
UHJvZmlsZTo6b2JzZXJ2ZUFyZyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjpp
c09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpC
aW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9i
c2VydmVkSW50SW50Qml0cyk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2Jz
ZXJ2ZWROdW1iZXJJbnRCaXRzKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpv
YnNlcnZlZEludE51bWJlckJpdHMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6
Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cyk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJv
ZmlsZTo6c2V0TGhzT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9m
aWxlOjpzZXRSaHNPYnNlcnZlZFR5cGUpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2Zp
bGU6Om9ic2VydmVMSFMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2Vy
dmVMSFNBbmRSSFMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2
ZWRUeXBlRW1wdHkpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFk
ZEpJVEFkZElDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklUU3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmFkZEpJVE5lZ0lDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFBy
b2ZpbGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmFyeUFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJp
bmFyeUFyaXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmFyeUFy
aXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTcGVj
aWFsQXJpdGhGYXN0Q2FzZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElDKToKKyAgICAgICAgKiBieXRlY29kZS9GaXRz
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6
CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRW
YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6
OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmg6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
VW5hcnlPcCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVu
YXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bWFrZURpdlNhZmUpOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlNYXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SklU
QWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUQWRkR2Vu
ZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJQ0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rpdik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
c3ViKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
cGllZEFyaXRoUHJvZmlsZSk6CisgICAgICAgICogaml0L0pJVE1hdGhJQy5oOgorICAgICAgICAo
SlNDOjpKSVRNYXRoSUM6OkpJVE1hdGhJQyk6CisgICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2Vu
ZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkpJVEJpbmFyeU1hdGhJQzo6SklUQmluYXJ5TWF0aElDKToKKyAg
ICAgICAgKEpTQzo6SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAgICAgICAgKiBq
aXQvSklUTXVsR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpn
ZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAgICAgICAqIGpp
dC9KSVROZWdHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5lcmF0b3I6Omdl
bmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAg
ICAgICogaml0L0pJVFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVy
YXRvcjo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVy
Zm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybS5yYjoKKyAgICAgICAgKiBvZmZs
aW5lYXNtL2FybTY0LnJiOgorICAgICAgICAqIG9mZmxpbmVhc20vY2xvb3AucmI6CisgICAgICAg
ICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6CisgICAgICAgICogb2ZmbGluZWFzbS9taXBz
LnJiOgorICAgICAgICAqIG9mZmxpbmVhc20vcmlzYy5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNt
L3g4Ni5yYjoKKyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpS
ZXN1bHRUeXBlOjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6
CisgICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAg
ICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTEtMTEgIFR1b21hcyBLYXJra2Fp
bmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CiAKICAgICAgICAgVHlwbyBpbiBhc3NlcnRp
b24gaW4gdmFsaWRhdGVDUFMgaW4gREZHVmFsaWRhdGUuY3BwICgiVW5leGVjcHRlZCIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCmluZGV4IGFjZjZjNGNiNWFmLi43Y2NmNDVhMWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTYxNSw2
ICs2MTUsMjAgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5uZWc8NjQ+KGRlc3QsIHNy
Yyk7CiAgICAgfQogCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgTG9naWNhbEltbWVkaWF0ZSBsb2dpY2FsSW1t
ID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlMzIoaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAo
bG9naWNhbEltbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIGxvYWQxNihhZGRyZXNzLm1fcHRy
LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIub3JyPDMyPihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVy
LCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAgIHN0b3JlMTYoZGF0YVRlbXBSZWdpc3RlciwgYWRk
cmVzcy5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMTYoYWRkcmVz
cy5tX3B0ciwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwor
ICAgICAgICAgICAgb3IzMihpbW0sIG1lbW9yeVRlbXBSZWdpc3RlciwgZ2V0Q2FjaGVkRGF0YVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIHN0b3JlMTYoZGF0YVRl
bXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lk
IG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG9y
MzIoZGVzdCwgc3JjLCBkZXN0KTsKQEAgLTEyMzgsNiArMTI1MiwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBjYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXIoKS5pbnZhbGlkYXRlKCk7CiAgICAgfQog
CisgICAgdm9pZCBsb2FkMTYoY29uc3Qgdm9pZCogYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbG9hZDwxNj4oYWRkcmVzcywgZGVzdCk7CisgICAgfQorCiAgICAgdm9p
ZCBsb2FkMTZVbmFsaWduZWQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIGxvYWQxNihhZGRyZXNzLCBkZXN0KTsKQEAgLTE1NDYsNiArMTU2
NSwyMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmgoc3JjLCBhZGRyZXNzLmJh
c2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTMyKFJlZ2lz
dGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgc3RvcmU8MTY+
KHNyYywgYWRkcmVzcyk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZTE2KFRydXN0ZWRJbW0zMiBp
bW0sIGNvbnN0IHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoIWltbS5tX3ZhbHVl
KSB7CisgICAgICAgICAgICBzdG9yZTE2KEFSTTY0UmVnaXN0ZXJzOjp6ciwgYWRkcmVzcyk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtb3ZlVG9DYWNoZWRSZWco
aW1tLCBkYXRhTWVtb3J5VGVtcFJlZ2lzdGVyKCkpOworICAgICAgICBzdG9yZTE2KGRhdGFUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmVaZXJvMTYoSW1wbGlj
aXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTE2KEFSTTY0UmVnaXN0ZXJz
Ojp6ciwgYWRkcmVzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDk1Y2Q3M2YyMzlkLi40ZWVjNzZhNjNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTXY3LmgKQEAgLTM2NSw2ICszNjUsMjQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIub3JyKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQorCisgICAgdm9pZCBvcjE2
KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAg
QVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVk
SW1tKGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpIHsKKyAgICAg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CisgICAgICAgICAgICBsb2FkMTYoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGF0YVRlbXBSZWdpc3Rlciwg
ZGF0YVRlbXBSZWdpc3RlciwgYXJtSW1tKTsKKyAgICAgICAgICAgIHN0b3JlMTYoZGF0YVRlbXBS
ZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOworICAgICAgICAgICAgbG9hZDE2KGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVn
aXN0ZXIpOworICAgICAgICAgICAgbW92ZShpbW0sIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIub3JyKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHN0b3Jl
MTYoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KKyAg
ICB9CiAgICAgCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBBYnNvbHV0ZUFkZHJlc3Mg
ZGVzdCkKICAgICB7CkBAIC03ODIsNiArODAwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGxhYmVsOwogICAgIH0KIAorICAgIHZvaWQgbG9hZDE2KGNvbnN0IHZvaWQqIGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
KSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkcmgoZGVzdCwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOwor
ICAgIH0KKwogICAgIHZvaWQgbG9hZDE2KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5sZHJoKGRlc3QsIG1ha2VCYXNlSW5kZXhC
YXNlKGFkZHJlc3MpLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKQEAgLTg4OSw2ICs5
MTMsMTggQEAgcHVibGljOgogICAgICAgICBzdG9yZTE2KHNyYywgc2V0dXBBcm1BZGRyZXNzKGFk
ZHJlc3MpKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0
IHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVz
cyksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5zdHJoKHNyYywg
YWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTIoMCkpOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcmUxNihUcnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAg
ICAgICBzdG9yZTE2KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOworICAgIH0KKwogICAgIC8v
IFBvc3NpYmx5IGNsb2JiZXJzIHNyYywgYnV0IG5vdCBvbiB0aGlzIGFyY2hpdGVjdHVyZS4KICAg
ICB2b2lkIG1vdmVEb3VibGVUb0ludHMoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBkMGNkZjAyZTQyNS4uMGUx
OTFhMWJiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtNDc1LDYgKzQ3NSwyNSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLnN1YnUoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywgc3JjKTsKICAgICB9
CiAKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fZml4ZWRXaWR0aCkgeworICAgICAgICAg
ICAgLy8gVE9ETzogU3dhcCBkYXRhVGVtcFJlZ2lzdGVyIGFuZCBpbW1UZW1wUmVnaXN0ZXIgdXNh
Z2UKKyAgICAgICAgICAgIGxvYWQxNihkZXN0Lm1fcHRyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAg
ICAgICAgICAgb3IzMihpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBzdG9yZTE2
KGltbVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICB1aW50cHRyX3QgYWRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGRlc3QubV9w
dHIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubHVpKGFkZHJUZW1wUmVnaXN0ZXIsIChhZHIg
KyAweDgwMDApID4+IDE2KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx3KGltbVRlbXBSZWdp
c3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRyICYgMHhmZmZmKTsKKyAgICAgICAgICAgIG9yMTYo
aW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coaW1tVGVt
cFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZHIgJiAweGZmZmYpOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vckluc24oZGVzdCwgZGVzdCwgc3JjKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaApp
bmRleCA0YWZlODE3YzM2Yi4uYjgxYzIyYmY4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKQEAgLTk5LDYgKzk5LDExIEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ybShyZWcsIGFkZHJlc3Mu
bV9wdHIpOwogICAgIH0KKworICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0
ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19pbShpbW0u
bV92YWx1ZSwgYWRkcmVzcy5tX3B0cik7CisgICAgfQogICAgIAogICAgIHZvaWQgc3ViMzIoVHJ1
c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CmluZGV4IGI5OTZjYTQ5ZDM5Li5kZDE0YTZkNDk1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtNDcsNiAr
NDcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5j
aDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBZGQzMjsKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IzMjsKKyAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6b3IxNjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6c3ViMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQ4OwogICAg
IHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkMzI7CkBAIC04OSw2ICs5MCwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIG9yMzIocmVnLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSk7
CiAgICAgfQogCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9w
dHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG9yMTYoaW1tLCBBZGRyZXNzKHNjcmF0
Y2hSZWdpc3RlcigpKSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1t
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCA0MTk3Y2E2YTk5NS4uNTliYmMy
NzdmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1h
c20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3Bw
CkBAIC0xMTA0LDYgKzExMDQsMzEgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVz
KCkKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKIAordm9pZCB0ZXN0T3JJbW1NZW0o
KQoreworICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgbm90IHRlc3QgdGhhdCB0aGUgb3IgZG9lcyBu
b3QgdG91Y2ggYmV5b25kIGl0cyB3aWR0aC4KKyAgICAvLyBJIGFtIG5vdCBzdXJlIGhvdyB0byBk
byBzdWNoIGEgdGVzdCB3aXRob3V0IGEgbG90IG9mIGNvbXBsZXhpdHkgKHJ1bm5pbmcgbXVsdGlw
bGUgdGhyZWFkcywgd2l0aCBhIHJhY2Ugb24gdGhlIGhpZ2ggYml0cyBvZiB0aGUgbWVtb3J5IGxv
Y2F0aW9uKS4KKyAgICB1aW50NjRfdCBtZW1vcnlMb2NhdGlvbiA9IDB4MTIzNDEyMzQ7CisgICAg
YXV0byBvcjMyID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDQyKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJm1lbW9yeUxv
Y2F0aW9uKSk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGpp
dC5yZXQoKTsKKyAgICB9KTsKKyAgICBpbnZva2U8dm9pZD4ob3IzMik7CisgICAgQ0hFQ0tfRVEo
bWVtb3J5TG9jYXRpb24sIDB4MTIzNDEyMzQgfCA0Mik7CisKKyAgICBtZW1vcnlMb2NhdGlvbiA9
IDB4MTIzNDEyMzQ7CisgICAgYXV0byBvcjE2ID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYg
aml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisgICAgICAgIGppdC5v
cjE2KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoJm1lbW9yeUxvY2F0aW9uKSk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3Vl
KGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9KTsKKyAgICBpbnZva2U8dm9pZD4ob3Ix
Nik7CisgICAgQ0hFQ0tfRVEobWVtb3J5TG9jYXRpb24sIDB4MTIzNDEyMzQgfCA0Mik7Cit9CisK
IHZvaWQgdGVzdEJ5dGVTd2FwKCkKIHsKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCkBA
IC0xMzYwLDYgKzEzODUsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAKICAgICBS
VU4odGVzdENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KCkpOwogCisgICAgUlVOKHRlc3RPcklt
bU1lbSgpKTsKKwogICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHVzYWdlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKaW5k
ZXggOTk5OTMzYjhjMGUuLmFhZWQzZjc3YmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcApAQCAtMzIsNyArMzIsOCBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRPYnNlcnZl
UmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNN
b2RlIG1vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJv
ZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwg
SlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQogewogICAgIGlmICghc2hv
dWxkRW1pdFNldERvdWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91
bGRFbWl0U2V0QmlnSW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDQxICs1OSw1OCBAQCB2
b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
VmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZwogICAgIGRvbmUubGluaygmaml0KTsKIH0KIAotYm9vbCBB
cml0aFByb2ZpbGU6OnNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdAordGVtcGxhdGU8dHlwZW5h
bWUgQml0ZmllbGRUeXBlPgorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxk
RW1pdFNldERvdWJsZSgpIGNvbnN0CiB7Ci0gICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmls
ZTo6SW50MzJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJv
ZmlsZTo6TmVnWmVyb0RvdWJsZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZTsKKyAg
ICBCaXRmaWVsZFR5cGUgbWFzayA9IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTmVn
WmVyb0RvdWJsZSB8IE5vbk5lZ1plcm9Eb3VibGU7CiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNr
KSAhPSBtYXNrOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNldERvdWJsZShDQ2FsbEhl
bHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQg
QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJiBq
aXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXREb3VibGUoKSkKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQzMk92ZXJm
bG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpOZWdaZXJv
RG91YmxlIHwgQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpB
YnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGVtaXRVbmNvbmRpdGlv
bmFsU2V0KGppdCwgSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOZWdaZXJvRG91Ymxl
IHwgTm9uTmVnWmVyb0RvdWJsZSk7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0
U2V0Tm9uTnVtZXJpYygpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citi
b29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygp
IGNvbnN0CiB7Ci0gICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsK
KyAgICBCaXRmaWVsZFR5cGUgbWFzayA9IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsKICAgICBy
ZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpz
aG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlw
ZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25OdW1lcmljKEND
YWxsSGVscGVycyYgaml0KSBjb25zdAogewotICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2Zp
bGU6OkJpZ0ludDsKLSAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CisgICAgaWYg
KHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0
KGppdCwgTm9uTnVtZXJpYyk7CiB9CiAKLXZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0Tm9uTnVt
ZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxk
VHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdAogewotICAgIGlmIChzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQotICAgICAg
ICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk51
bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsK
KyAgICBCaXRmaWVsZFR5cGUgbWFzayA9IEFyaXRoUHJvZmlsZTo6QmlnSW50OworICAgIHJldHVy
biAobV9iaXRzICYgbWFzaykgIT0gbWFzazsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRT
ZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRm
aWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50
KENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0QmlnSW50
KCkpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJv
ZmlsZTo6QmlnSW50KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0
cygpKSk7CisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgQmlnSW50KTsKIH0KKwor
dGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgordm9pZCBBcml0aFByb2ZpbGU8Qml0Zmll
bGRUeXBlPjo6ZW1pdFVuY29uZGl0aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiBqaXQsIEJpdGZpZWxk
VHlwZSBtYXNrKSBjb25zdAoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEJpdGZp
ZWxkVHlwZSwgdWludDE2X3Q+Ojp2YWx1ZSk7CisgICAgaml0Lm9yMTYoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIobWFzayksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NP
ZkJpdHMoKSkpOworfQorCisvLyBHZW5lcmF0ZSB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBm
dW5jdGlvbnMgYWJvdmUgZm9yIFVuYXJ5QXJpdGhQcm9maWxlL0JpbmFyeUFyaXRoUHJvZmlsZQor
Ly8gSWYgY2hhbmdpbmcgdGhlIHNpemUgb2YgZWl0aGVyLCBhZGQgdGhlIGNvcnJlc3BvbmRpbmcg
bGluZXMgaGVyZS4KK3RlbXBsYXRlIGNsYXNzIEFyaXRoUHJvZmlsZTx1aW50MTZfdD47CiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkBAIC0xMDEsNyArMTE5LDgg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi12b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQXJpdGhQcm9maWxlJiBwcm9maWxl
KQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgQXJpdGhQcm9maWxlPFQ+JiBwcm9maWxlKQogewogICAgIGNvbnN0IGNoYXIq
IHNlcGFyYXRvciA9ICIiOwogCkBAIC0xMzUsMTkgKzE1NCwzMCBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQXJpdGhQcm9maWxlJiBwcm9maWxlKQogICAgICAg
ICAgICAgc2VwYXJhdG9yID0gInwiOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChwcm9maWxl
LnRvb2tTcGVjaWFsRmFzdFBhdGgoKSkKLSAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIlRv
b2sgc3BlY2lhbCBmYXN0IHBhdGguIik7CiAgICAgb3V0LnByaW50KCI+Iik7Cit9CisKK3ZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSYg
cHJvZmlsZSkKK3sKKyAgICBwcmludEludGVybmFsKG91dCwgc3RhdGljX2Nhc3Q8QXJpdGhQcm9m
aWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4+KHByb2ZpbGUpKTsKKworICAgIG91dC5wcmludCgi
IEFyZyBPYnNlcnZlZFR5cGU6PCIpOworICAgIG91dC5wcmludChwcm9maWxlLmFyZ09ic2VydmVk
VHlwZSgpKTsKKyAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSkKK3sKKyAg
ICBwcmludEludGVybmFsKG91dCwgc3RhdGljX2Nhc3Q8QXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQ
cm9maWxlQmFzZT4+KHByb2ZpbGUpKTsKKworICAgIGlmIChwcm9maWxlLnRvb2tTcGVjaWFsRmFz
dFBhdGgoKSkKKyAgICAgICAgb3V0LnByaW50KCIgVG9vayBzcGVjaWFsIGZhc3QgcGF0aC4iKTsK
IAogICAgIG91dC5wcmludCgiIExIUyBPYnNlcnZlZFR5cGU6PCIpOwogICAgIG91dC5wcmludChw
cm9maWxlLmxoc09ic2VydmVkVHlwZSgpKTsKICAgICBvdXQucHJpbnQoIj4gUkhTIE9ic2VydmVk
VHlwZTo8Iik7CiAgICAgb3V0LnByaW50KHByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkpOwogICAg
IG91dC5wcmludCgiPiIpOwotCi0gICAgb3V0LnByaW50KCIgTEhTIFJlc3VsdFR5cGU6PCIsIFJh
d1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2Zp
bGUubGhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7Ci0gICAgb3V0LnByaW50KCI+IFJIUyBSZXN1
bHRUeXBlOjwiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWlu
dHB0cl90Pihwcm9maWxlLnJoc1Jlc3VsdFR5cGUoKS5iaXRzKCkpKSkpOwotICAgIG91dC5wcmlu
dCgiPiIpOwogfQogCiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
SlNDOjpPYnNlcnZlZFR5cGUmIG9ic2VydmVkVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAppbmRleCBmY2M0ZTI4MThiZS4uMDY4OWZhYTUyMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKQEAg
LTY2LDExOSArNjYsMjE5IEBAIHByaXZhdGU6CiAgICAgdWludDhfdCBtX2JpdHMgeyAwIH07CiB9
OwogCi1zdHJ1Y3QgQXJpdGhQcm9maWxlIHsKLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBudW1iZXJPZkZsYWdCaXRzID0gNjsKLSAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IHJoc1Jlc3VsdFR5cGVTaGlmdCA9IG51bWJlck9mRmxhZ0JpdHM7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCBsaHNSZXN1bHRUeXBlU2hpZnQgPSByaHNSZXN1bHRUeXBlU2hp
ZnQgKyBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSBsaHNSZXN1bHRUeXBlU2hpZnQgKyBSZXN1bHRU
eXBlOjpudW1CaXRzTmVlZGVkOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbGhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVt
Qml0c05lZWRlZDsKLQotICAgIHN0YXRpY19hc3NlcnQoT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVl
ZGVkID09IDMsICJXZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9uIGFib3V0IHRoYXQgaGVyZS4iKTsK
LSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGNsZWFyUmhzT2JzZXJ2ZWRUeXBlQml0TWFz
ayA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih+KCgxIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KSB8
ICgxIDw8IChyaHNPYnNlcnZlZFR5cGVTaGlmdCArIDEpKSB8ICgxIDw8IChyaHNPYnNlcnZlZFR5
cGVTaGlmdCArIDIpKSkpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY2xlYXJMaHNP
YnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KH4oKDEgPDwgbGhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEg
PDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7Ci0KLSAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQzMl90IHJlc3VsdFR5cGVNYXNrID0gKDEgPDwgUmVzdWx0VHlwZTo6bnVtQml0c05lZWRl
ZCkgLSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgb2JzZXJ2ZWRUeXBlTWFzayA9
ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOwordGVtcGxhdGUgPHR5cGVu
YW1lIEJpdGZpZWxkVHlwZT4KK2NsYXNzIEFyaXRoUHJvZmlsZSB7CitwdWJsaWM6CisgICAgZW51
bSBPYnNlcnZlZFJlc3VsdHMgOiBCaXRmaWVsZFR5cGUgeworICAgICAgICBOb25OZWdaZXJvRG91
YmxlID0gMSA8PCAwLAorICAgICAgICBOZWdaZXJvRG91YmxlICAgID0gMSA8PCAxLAorICAgICAg
ICBOb25OdW1lcmljICAgICAgID0gMSA8PCAyLAorICAgICAgICBJbnQzMk92ZXJmbG93ICAgID0g
MSA8PCAzLAorICAgICAgICBJbnQ1Mk92ZXJmbG93ICAgID0gMSA8PCA0LAorICAgICAgICBCaWdJ
bnQgICAgICAgICAgID0gMSA8PCA1LAorICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MzJfdCBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkID0gNjsKIAotICAgIGVudW0gY2xhc3Mg
Q29uc3RhbnRUYWcgeyBDb25zdGFudCB9OworICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkg
Y29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSB8
IE5vbk51bWVyaWMgfCBCaWdJbnQpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlRG91YmxlKCkgY29u
c3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSk7IH0K
KyAgICBib29sIGRpZE9ic2VydmVOb25OZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFz
Qml0cyhOb25OZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5lZ1plcm9Eb3Vi
bGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5lZ1plcm9Eb3VibGUpOyB9CisgICAgYm9vbCBk
aWRPYnNlcnZlTm9uTnVtZXJpYygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTnVtZXJpYyk7
IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEJp
Z0ludCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgY29uc3QgeyByZXR1
cm4gaGFzQml0cyhJbnQzMk92ZXJmbG93KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3Zl
cmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDUyT3ZlcmZsb3cpOyB9CiAKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEg
PDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6
bnVtQml0c05lZWRlZCkgPD0gKHNpemVvZih1aW50MzJfdCkgKiA4KSAtIDEsICJTaG91bGQgZml0
IGluIGEgdWludDMyX3QuIik7Ci0gICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJp
dCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90
IGludGVyc2VjdC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNs
ZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4i
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCA+IH5jbGVhckxoc09ic2Vy
dmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVj
aWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKKyAgICB2b2lkIHNldE9i
c2VydmVkTm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5vbk5lZ1plcm9Eb3VibGUpOyB9Cisg
ICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChOZWdaZXJvRG91Ymxl
KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoTm9uTnVtZXJp
Yyk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50KCkgeyBzZXRCaXQoQmlnSW50KTsgfQor
ICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQoSW50MzJPdmVyZmxv
dyk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkSW50NTJPdmVyZmxvdygpIHsgc2V0Qml0KEludDUy
T3ZlcmZsb3cpOyB9CiAKLSAgICBBcml0aFByb2ZpbGUoUmVzdWx0VHlwZSBhcmcpCi0gICAgICAg
IDogQXJpdGhQcm9maWxlKENvbnN0YW50VGFnOjpDb25zdGFudCwgYXJnKQorICAgIHZvaWQgb2Jz
ZXJ2ZVJlc3VsdChKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGxoc1Jlc3Vs
dFR5cGUoKS5iaXRzKCkgPT0gYXJnLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZl
ZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNF
bXB0eSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8
PSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWda
ZXJvRG91YmxlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh2
YWx1ZSAmJiB2YWx1ZS5pc0JpZ0ludCgpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gQmlnSW50
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1fYml0cyB8PSBOb25O
dW1lcmljOwogICAgIH0KIAotICAgIEFyaXRoUHJvZmlsZShSZXN1bHRUeXBlIGxocywgUmVzdWx0
VHlwZSByaHMpCi0gICAgICAgIDogQXJpdGhQcm9maWxlKENvbnN0YW50VGFnOjpDb25zdGFudCwg
bGhzLCByaHMpCisgICAgY29uc3Qgdm9pZCogYWRkcmVzc09mQml0cygpIGNvbnN0IHsgcmV0dXJu
ICZtX2JpdHM7IH0KKworI2lmIEVOQUJMRShKSVQpCisgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxv
dyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYg
aXQgc2VlcyBhCisgICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWVyaWMgaWYgaXQgc2VlcyBhIG5v
bi1udW1lcmljLgorICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNW
YWx1ZVJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKKworICAgIC8v
IFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8
IE5lZ1plcm9Eb3VibGUpLgorICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Owor
ICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKworICAgIC8vIFNl
dHMgTm9uTnVtZXJpYworICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJikg
Y29uc3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0OworCisgICAg
Ly8gU2V0cyBCaWdJbnQKKyAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29u
c3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7CisKKyAgICB2b2lkIGVt
aXRVbmNvbmRpdGlvbmFsU2V0KENDYWxsSGVscGVycyYsIEJpdGZpZWxkVHlwZSkgY29uc3Q7Cisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzOyB9CisKK3Byb3RlY3RlZDoKKyAgICBBcml0aFByb2ZpbGUoKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGxoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gbGhzLmJpdHMo
KSAmJiByaHNSZXN1bHRUeXBlKCkuYml0cygpID09IHJocy5iaXRzKCkpOwotICAgICAgICBBU1NF
UlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKHJoc09ic2Vy
dmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQogCi0gICAgQXJpdGhQcm9maWxlKE9wZXJhbmRU
eXBlcyB0eXBlcykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUodHlwZXMuZmlyc3QoKSwgdHlwZXMu
c2Vjb25kKCkpCi0gICAgeyB9CisgICAgYm9vbCBoYXNCaXRzKGludCBtYXNrKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBtYXNrOyB9CisgICAgdm9pZCBzZXRCaXQoaW50IG1hc2spIHsgbV9iaXRz
IHw9IG1hc2s7IH0KKworICAgIEJpdGZpZWxkVHlwZSBtX2JpdHMgeyAwIH07IC8vIFdlIHRha2Ug
Y2FyZSB0byB1cGRhdGUgbV9iaXRzIG9ubHkgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLiBXZSBkb24n
dCBldmVyIHN0b3JlIGFuIGluY29uc2lzdGVudCBiaXQgcmVwcmVzZW50YXRpb24gdG8gaXQuCit9
OworCisvKiBUaGlzIGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMgaW4gMTYg
Yml0czoKKyAqIC0gT2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgdGhlIGFy
Z3VtZW50CisgKi8KK3VzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90OworY2xh
c3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9m
aWxlQmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2ZWRUeXBl
U2hpZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOwogCi0gICAgQXJpdGhQcm9maWxl
KCkgPSBkZWZhdWx0OworICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBP
YnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIGJpdGZp
ZWxkLiIpOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgZnJvbUludCh1aW50
MzJfdCBiaXRzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIGNs
ZWFyQXJnT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PFVuYXJ5QXJpdGhQcm9maWxl
QmFzZT4ofigwYjExMSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdCkpOworCisgICAgc3RhdGljIGNv
bnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgVW5hcnlBcml0
aFByb2ZpbGUoKQorICAgICAgICA6IEFyaXRoUHJvZmlsZTxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBBcml0aFByb2ZpbGUgeyBDb25zdGFudFRhZzo6Q29u
c3RhbnQsIGJpdHMgfTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHko
KSk7CisgICAgICAgIEFTU0VSVChhcmdPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwogICAgIH0K
IAotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkVW5hcnlJbnQoKQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkSW50Qml0
cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIg
eyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMy
X3QgYml0cyA9IG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0Owot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHg4MDAwMDAsICIiKTsKLSAgICAgICAgcmV0
dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJh
c2UgYml0cyA9IG9ic2VydmVkSW50MzIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0Owor
ICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFBy
b2ZpbGUgb2JzZXJ2ZWRVbmFyeU51bWJlcigpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFy
aXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWROdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0
ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53aXRoTnVt
YmVyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSBvYnNlcnZlZE51bWJl
ci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
Yml0cyA9PSAweDEwMDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7Cisg
ICAgICAgIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IG9ic2VydmVkTnVt
YmVyLmJpdHMoKSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdDsKKyAgICAgICAgcmV0dXJuIGJpdHM7
CiAgICAgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5
SW50SW50KCkKKworICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgYXJnT2JzZXJ2ZWRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gT2JzZXJ2ZWRUeXBlKChtX2JpdHMgPj4gYXJnT2JzZXJ2ZWRUeXBlU2hp
ZnQpICYgb2JzZXJ2ZWRUeXBlTWFzayk7IH0KKyAgICB2b2lkIHNldEFyZ09ic2VydmVkVHlwZShP
YnNlcnZlZFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBi
aXRzID0gbV9iaXRzOworICAgICAgICBiaXRzICY9IGNsZWFyQXJnT2JzZXJ2ZWRUeXBlQml0TWFz
azsKKyAgICAgICAgYml0cyB8PSB0eXBlLmJpdHMoKSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdDsK
KyAgICAgICAgbV9iaXRzID0gYml0czsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgp
ID09IHR5cGUpOworICAgIH0KKworICAgIHZvaWQgYXJnU2F3SW50MzIoKSB7IHNldEFyZ09ic2Vy
dmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSk7IH0KKyAgICB2b2lkIGFyZ1Nh
d051bWJlcigpIHsgc2V0QXJnT2JzZXJ2ZWRUeXBlKGFyZ09ic2VydmVkVHlwZSgpLndpdGhOdW1i
ZXIoKSk7IH0KKyAgICB2b2lkIGFyZ1Nhd05vbk51bWJlcigpIHsgc2V0QXJnT2JzZXJ2ZWRUeXBl
KGFyZ09ic2VydmVkVHlwZSgpLndpdGhOb25OdW1iZXIoKSk7IH0KKworICAgIHZvaWQgb2JzZXJ2
ZUFyZyhKU1ZhbHVlIGFyZykKKyAgICB7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIG5ld1By
b2ZpbGUgPSAqdGhpczsKKyAgICAgICAgaWYgKGFyZy5pc051bWJlcigpKSB7CisgICAgICAgICAg
ICBpZiAoYXJnLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICBuZXdQcm9maWxlLmFyZ1Nhd0lu
dDMyKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5hcmdT
YXdOdW1iZXIoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuZXdQcm9maWxlLmFyZ1Nh
d05vbk51bWJlcigpOworCisgICAgICAgIG1fYml0cyA9IG5ld1Byb2ZpbGUuYml0cygpOworICAg
IH0KKworICAgIGJvb2wgaXNPYnNlcnZlZFR5cGVFbXB0eSgpCisgICAgeworICAgICAgICByZXR1
cm4gYXJnT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOworICAgIH0KKworICAgIGZyaWVuZCBjbGFz
cyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKKy8qIFRoaXMgY2xhc3Mgc3RvcmVz
IHRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBpbiAxNiBiaXRzOgorICogLSBPYnNlcnZlZFJlc3Vs
dHMKKyAqIC0gT2JzZXJ2ZWRUeXBlIGZvciByaWdodC1oYW5kLXNpZGUKKyAqIC0gT2JzZXJ2ZWRU
eXBlIGZvciBsZWZ0LWhhbmQtc2lkZQorICogLSBhIGJpdCB1c2VkIGJ5IGRpdmlzaW9uIHRvIGlu
ZGljYXRlIHdoZXRoZXIgYSBzcGVjaWFsIGZhc3QgcGF0aCB3YXMgdGFrZW4KKyAqLwordXNpbmcg
QmluYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90OworY2xhc3MgQmluYXJ5QXJpdGhQcm9m
aWxlIDogcHVibGljIEFyaXRoUHJvZmlsZTxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNPYnNlcnZlZFR5cGVTaGlmdCA9IG9ic2VydmVk
UmVzdWx0c051bUJpdHNOZWVkZWQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNP
YnNlcnZlZFR5cGVTaGlmdCA9IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpu
dW1CaXRzTmVlZGVkOworCisgICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5cGU6Om51bUJpdHNO
ZWVkZWQgPT0gMywgIldlIG1ha2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQgdGhhdCBoZXJlLiIp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhclJoc09i
c2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+
KDBiMTExIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBC
aW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRp
Y19jYXN0PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgbGhzT2JzZXJ2ZWRUeXBl
U2hpZnQpKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBv
YnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7
CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ug
c3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZl
ZFR5cGU6Om51bUJpdHNOZWVkZWQpOworICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVkVHlw
ZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsgMSkgPD0gc2l6ZW9mKEJpbmFy
eUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRU
eXBlQml0TWFzayksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0LiIpOworICAgIHN0
YXRpY19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRN
YXNrLCAiVGhlc2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIpOworICAgIHN0YXRpY19hc3NlcnQo
c3BlY2lhbEZhc3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNl
IGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0aEJpdCBzaG91bGQg
YmUgYSBoaWdoZXIgYml0LiIpOworCisgICAgQmluYXJ5QXJpdGhQcm9maWxlKCkKKyAgICAgICAg
OiBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4gKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOworICAgICAgICBBU1NFUlQocmhz
T2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3RleHBy
IEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRJbnRJbnRCaXRzKCkKICAgICB7CiAgICAg
ICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgp
LndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0gKG9ic2Vy
dmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZEludDMy
LmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
Yml0cyA9PSAweDkwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAg
ICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNlcnZlZElu
dDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQzMi5iaXRz
KCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlOdW1iZXJJ
bnQoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZl
ZE51bWJlckludEJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBv
YnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwogICAgICAgICBj
b25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRo
SW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51
bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkSW50MzIuYml0
cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRz
ID09IDB4MTEwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAg
ICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNlcnZlZE51bWJl
ci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkSW50MzIuYml0cygp
IDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQot
ICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5SW50TnVtYmVy
KCkKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRJ
bnROdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2Jz
ZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkgfTsKICAgICAgICAgY29u
c3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aElu
dDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2ZWRJbnQz
Mi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMo
KSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9
PSAweGEwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAg
Y29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNlcnZlZEludDMyLmJp
dHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8
IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQotICAg
IHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVy
KCkKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRO
dW1iZXJOdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUg
b2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkgfTsKLSAgICAgICAg
Y29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGxoc09i
c2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRU
eXBlU2hpZnQpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMjAwMDAwLCAiIik7
Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5
QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNl
cnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlw
ZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQogCi0gICAgZW51bSBPYnNlcnZl
ZFJlc3VsdHMgewotICAgICAgICBOb25OZWdaZXJvRG91YmxlID0gMSA8PCAwLAotICAgICAgICBO
ZWdaZXJvRG91YmxlICAgID0gMSA8PCAxLAotICAgICAgICBOb25OdW1lcmljICAgICAgID0gMSA8
PCAyLAotICAgICAgICBJbnQzMk92ZXJmbG93ICAgID0gMSA8PCAzLAotICAgICAgICBJbnQ1Mk92
ZXJmbG93ICAgID0gMSA8PCA0LAotICAgICAgICBCaWdJbnQgICAgICAgICAgID0gMSA8PCA1LAot
ICAgIH07Ci0KLSAgICBSZXN1bHRUeXBlIGxoc1Jlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBS
ZXN1bHRUeXBlKChtX2JpdHMgPj4gbGhzUmVzdWx0VHlwZVNoaWZ0KSAmIHJlc3VsdFR5cGVNYXNr
KTsgfQotICAgIFJlc3VsdFR5cGUgcmhzUmVzdWx0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFJlc3Vs
dFR5cGUoKG1fYml0cyA+PiByaHNSZXN1bHRUeXBlU2hpZnQpICYgcmVzdWx0VHlwZU1hc2spOyB9
Ci0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGxoc09ic2VydmVkVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGxoc09ic2VydmVkVHlwZVNoaWZ0KSAmIG9i
c2VydmVkVHlwZU1hc2spOyB9CiAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSByaHNPYnNlcnZl
ZFR5cGUoKSBjb25zdCB7IHJldHVybiBPYnNlcnZlZFR5cGUoKG1fYml0cyA+PiByaHNPYnNlcnZl
ZFR5cGVTaGlmdCkgJiBvYnNlcnZlZFR5cGVNYXNrKTsgfQogICAgIHZvaWQgc2V0TGhzT2JzZXJ2
ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9
IG1fYml0czsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gbV9iaXRzOwog
ICAgICAgICBiaXRzICY9IGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzazsKICAgICAgICAgYml0
cyB8PSB0eXBlLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKICAgICAgICAgbV9iaXRz
ID0gYml0czsKQEAgLTE4Nyw3ICsyODcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJoc09i
c2VydmVkVHlwZShPYnNlcnZlZFR5cGUgdHlwZSkKICAgICB7IAotICAgICAgICB1aW50MzJfdCBi
aXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSBtX2Jp
dHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrOwogICAgICAg
ICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0OwogICAgICAgICBt
X2JpdHMgPSBiaXRzOwpAQCAtMTk2LDM5ICsyOTYsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIHRv
b2tTcGVjaWFsRmFzdFBhdGgoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBzcGVjaWFsRmFzdFBh
dGhCaXQ7IH0KIAotICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgY29uc3QgeyByZXR1cm4g
aGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBC
aWdJbnQpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFz
Qml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRpZE9i
c2VydmVOb25OZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJv
RG91YmxlKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJl
dHVybiBoYXNCaXRzKE5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlTm9uTnVt
ZXJpYygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTnVtZXJpYyk7IH0KLSAgICBib29sIGRp
ZE9ic2VydmVCaWdJbnQoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEJpZ0ludCk7IH0KLSAgICBi
b29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhJbnQz
Mk92ZXJmbG93KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSBjb25zdCB7
IHJldHVybiBoYXNCaXRzKEludDUyT3ZlcmZsb3cpOyB9Ci0KLSAgICB2b2lkIHNldE9ic2VydmVk
Tm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgdm9p
ZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChOZWdaZXJvRG91YmxlKTsgfQot
ICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoTm9uTnVtZXJpYyk7IH0K
LSAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50KCkgeyBzZXRCaXQoQmlnSW50KTsgfQotICAgIHZv
aWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQoSW50MzJPdmVyZmxvdyk7IH0K
LSAgICB2b2lkIHNldE9ic2VydmVkSW50NTJPdmVyZmxvdygpIHsgc2V0Qml0KEludDUyT3ZlcmZs
b3cpOyB9Ci0KLSAgICBjb25zdCB2b2lkKiBhZGRyZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4g
Jm1fYml0czsgfQotCi0gICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUpCi0gICAg
ewotICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9IEludDMy
T3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3Vi
bGU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHZhbHVlICYm
IHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9iaXRzIHw9IE5vbk51bWVyaWM7
Ci0gICAgfQotCiAgICAgdm9pZCBsaHNTYXdJbnQzMigpIHsgc2V0TGhzT2JzZXJ2ZWRUeXBlKGxo
c09ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpKTsgfQogICAgIHZvaWQgbGhzU2F3TnVtYmVyKCkg
eyBzZXRMaHNPYnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigpKTsgfQog
ICAgIHZvaWQgbGhzU2F3Tm9uTnVtYmVyKCkgeyBzZXRMaHNPYnNlcnZlZFR5cGUobGhzT2JzZXJ2
ZWRUeXBlKCkud2l0aE5vbk51bWJlcigpKTsgfQpAQCAtMjM4LDcgKzMwNSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgb2JzZXJ2ZUxIUyhKU1ZhbHVlIGxocykKICAgICB7Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBu
ZXdQcm9maWxlID0gKnRoaXM7CiAgICAgICAgIGlmIChsaHMuaXNOdW1iZXIoKSkgewogICAgICAg
ICAgICAgaWYgKGxocy5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5saHNT
YXdJbnQzMigpOwpAQCAtMjU0LDcgKzMyMSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG9i
c2VydmVMSFMobGhzKTsKIAotICAgICAgICBBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlz
OworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlzOwogICAgICAg
ICBpZiAocmhzLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIGlmIChyaHMuaXNJbnQzMigpKQog
ICAgICAgICAgICAgICAgIG5ld1Byb2ZpbGUucmhzU2F3SW50MzIoKTsKQEAgLTI2Niw0NyArMzMz
LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRzID0gbmV3UHJvZmlsZS5iaXRzKCk7CiAgICAg
fQogCi0jaWYgRU5BQkxFKEpJVCkgICAgCi0gICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IElu
dDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQgc2Vl
cyBhCi0gICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWVyaWMgaWYgaXQgc2VlcyBhIG5vbi1udW1l
cmljLgotICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJl
Z3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKLSAgICAKLSAgICAvLyBT
ZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBO
ZWdaZXJvRG91YmxlKS4KLSAgICBib29sIHNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdDsKLSAg
ICB2b2lkIGVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJikgY29uc3Q7Ci0gICAgCi0gICAgLy8g
U2V0cyBOb25OdW1iZXIuCi0gICAgdm9pZCBlbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMm
KSBjb25zdDsKLSAgICBib29sIHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3Q7Ci0KLSAg
ICAvLyBTZXRzIEJpZ0ludAotICAgIHZvaWQgZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBj
b25zdDsKLSAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdDsKLSNlbmRpZiAvLyBF
TkFCTEUoSklUKQotCi0gICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMoKSBjb25zdCB7IHJldHVy
biBtX2JpdHM7IH0KLQotcHJpdmF0ZToKLSAgICBjb25zdGV4cHIgZXhwbGljaXQgQXJpdGhQcm9m
aWxlKENvbnN0YW50VGFnLCB1aW50MzJfdCBiaXRzKQotICAgICAgICA6IG1fYml0cyhiaXRzKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgQXJpdGhQcm9maWxlKENvbnN0YW50VGFnLCBS
ZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBtX2JpdHMoYXJnLmJpdHMoKSA8PCBsaHNSZXN1bHRU
eXBlU2hpZnQpCisgICAgYm9vbCBpc09ic2VydmVkVHlwZUVtcHR5KCkKICAgICB7CisgICAgICAg
IHJldHVybiBsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkgJiYgcmhzT2JzZXJ2ZWRUeXBlKCku
aXNFbXB0eSgpOwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUoQ29uc3RhbnRU
YWcsIFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBtX2JpdHMoKGxo
cy5iaXRzKCkgPDwgbGhzUmVzdWx0VHlwZVNoaWZ0KSB8IChyaHMuYml0cygpIDw8IHJoc1Jlc3Vs
dFR5cGVTaGlmdCkpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaGFzQml0cyhpbnQgbWFzaykg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgbWFzazsgfQotICAgIHZvaWQgc2V0Qml0KGludCBtYXNr
KSB7IG1fYml0cyB8PSBtYXNrOyB9Ci0KLSAgICB1aW50MzJfdCBtX2JpdHMgeyAwIH07IC8vIFdl
IHRha2UgY2FyZSB0byB1cGRhdGUgbV9iaXRzIG9ubHkgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLiBX
ZSBkb24ndCBldmVyIHN0b3JlIGFuIGluY29uc2lzdGVudCBiaXQgcmVwcmVzZW50YXRpb24gdG8g
aXQuCi0KICAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CiB9Owog
CkBAIC0zMTQsNyArMzQ1LDggQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6QXJpdGhQcm9maWxlJik7Cit2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlJik7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6OkJpbmFy
eUFyaXRoUHJvZmlsZSYpOwogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3Qg
SlNDOjpPYnNlcnZlZFR5cGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBjMmVjOWNmNTcyYS4u
NzJkZTYwOWFhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgpAQCAtNDEsNiArNDEsNyBAQCB0eXBlcyBbCiAgICAgOkpTVHlwZSwKICAgICA6
SlNWYWx1ZSwKICAgICA6TExJbnRDYWxsTGlua0luZm8sCisgICAgOlJlc3VsdFR5cGUsCiAgICAg
Ok9wZXJhbmRUeXBlcywKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3Bl
cnR5T2Zmc2V0LApAQCAtNTgsNyArNTksOCBAQCB0eXBlcyBbCiAKICAgICA6VmFsdWVQcm9maWxl
LAogICAgIDpWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyLAotICAgIDpBcml0aFByb2ZpbGUs
CisgICAgOlVuYXJ5QXJpdGhQcm9maWxlLAorICAgIDpCaW5hcnlBcml0aFByb2ZpbGUsCiAgICAg
OkFycmF5UHJvZmlsZSwKICAgICA6QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSwKICAgICA6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUsCkBAIC0yNzksMTAgKzI4MSw3IEBAIG9wX2dyb3VwIDpQcm9maWxl
ZEJpbmFyeU9wLAogICAgICAgICBvcGVyYW5kVHlwZXM6IE9wZXJhbmRUeXBlcywKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFyaXRoUHJvZmlsZTogQXJpdGhQcm9maWxlCi0gICAg
fSwKLSAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiA6
b3BlcmFuZFR5cGVzCisgICAgICAgIGFyaXRoUHJvZmlsZTogQmluYXJ5QXJpdGhQcm9maWxlCiAg
ICAgfQogCiBvcF9ncm91cCA6VmFsdWVQcm9maWxlZEJpbmFyeU9wLApAQCAtMzY0LDEzICszNjMs
MTAgQEAgb3AgOm5lZ2F0ZSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lz
dGVyLAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIG9wZXJhbmRU
eXBlczogT3BlcmFuZFR5cGVzLAorICAgICAgICByZXN1bHRUeXBlOiBSZXN1bHRUeXBlLAogICAg
IH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0aFByb2ZpbGUs
Ci0gICAgfSwKLSAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6IHsKLSAgICAgICAgYXJpdGhQcm9m
aWxlOiA6b3BlcmFuZFR5cGVzCisgICAgICAgIGFyaXRoUHJvZmlsZTogVW5hcnlBcml0aFByb2Zp
bGUsCiAgICAgfQogCiBvcCA6bm90LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCAwZjhlN2Y4YjRmOS4uNjgxZGZjOWVjOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNDc5LDI1ICsxNDc5
LDI1IEBAIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmFkZFN0dWJJbmZvKEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSkKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3R1Yklu
Zm9zLmFkZChhY2Nlc3NUeXBlKTsKIH0KIAotSklUQWRkSUMqIENvZGVCbG9jazo6YWRkSklUQWRk
SUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRBZGRJQyogQ29kZUJsb2NrOjphZGRK
SVRBZGRJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJuIGVuc3VyZUpJVERhdGEobG9j
a2VyKS5tX2FkZElDcy5hZGQoYXJpdGhQcm9maWxlKTsKIH0KIAotSklUTXVsSUMqIENvZGVCbG9j
azo6YWRkSklUTXVsSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNdWxJQyogQ29k
ZUJsb2NrOjphZGRKSVRNdWxJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsK
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJuIGVuc3Vy
ZUpJVERhdGEobG9ja2VyKS5tX211bElDcy5hZGQoYXJpdGhQcm9maWxlKTsKIH0KIAotSklUU3Vi
SUMqIENvZGVCbG9jazo6YWRkSklUU3ViSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitK
SVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAg
cmV0dXJuIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX3N1YklDcy5hZGQoYXJpdGhQcm9maWxlKTsK
IH0KIAotSklUTmVnSUMqIENvZGVCbG9jazo6YWRkSklUTmVnSUMoQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCitKSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhVbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9s
b2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbmVnSUNzLmFkZChhcml0
aFByb2ZpbGUpOwpAQCAtMzA4NCwxNiArMzA4NCwxOSBAQCBjb25zdCBJbnN0cnVjdGlvbiogQ29k
ZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYykKICAgICBy
ZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQob2Zmc2V0ICsgdGFyZ2V0KS5wdHIoKTsKIH0KIAotQXJp
dGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4KQorQmluYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmJp
bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4KQogewotICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5hdChi
eXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKSk7CisgICAgcmV0dXJuIGJpbmFyeUFyaXRoUHJv
ZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigp
KTsKIH0KIAotQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvclBDKGNvbnN0
IEluc3RydWN0aW9uKiBwYykKK1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCit7
CisgICAgcmV0dXJuIHVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCkpOworfQorCitCaW5hcnlBcml0aFByb2ZpbGUqIENv
ZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQog
ewogICAgIHN3aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKLSAgICBjYXNlIG9wX25lZ2F0ZToKLSAg
ICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFBy
b2ZpbGU7CiAgICAgY2FzZSBvcF9hZGQ6CiAgICAgICAgIHJldHVybiAmcGMtPmFzPE9wQWRkPigp
Lm1ldGFkYXRhKHRoaXMpLm1fYXJpdGhQcm9maWxlOwogICAgIGNhc2Ugb3BfbXVsOgpAQCAtMzEw
OSwxMSArMzExMiwyMyBAQCBBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9y
UEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitVbmFy
eUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IElu
c3RydWN0aW9uKiBwYykKK3sKKyAgICBzd2l0Y2ggKHBjLT5vcGNvZGVJRCgpKSB7CisgICAgY2Fz
ZSBvcF9uZWdhdGU6CisgICAgICAgIHJldHVybiAmcGMtPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRh
KHRoaXMpLm1fYXJpdGhQcm9maWxlOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCiBib29sIENvZGVCbG9jazo6Y291bGRUYWtl
U3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAg
IGlmICghaGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIEFyaXRoUHJvZmlsZSogcHJvZmlsZSA9IGFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgo
Ynl0ZWNvZGVJbmRleCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlID0gYmluYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXBy
b2ZpbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcHJvZmlsZS0+dG9va1Nw
ZWNpYWxGYXN0UGF0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCmluZGV4IGQyYzA2OTgwM2E4Li4xOGU0OGMyNjZhMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODMsNiArODMsOCBAQCBzdHJ1Y3QgT1NSRXhp
dFN0YXRlOwogfSAvLyBuYW1lc3BhY2UgREZHCiAjZW5kaWYKIAorY2xhc3MgVW5hcnlBcml0aFBy
b2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlOwpAQCAtOTYsNyArOTgsNiBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51
bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OwogCi1zdHJ1Y3QgQXJpdGhQcm9maWxlOwogc3Ry
dWN0IE9wQ2F0Y2g7CiAKIGVudW0gUmVvcHRpbWl6YXRpb25Nb2RlIHsgRG9udENvdW50UmVvcHRp
bWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRpb24gfTsKQEAgLTI3OSwyMiArMjgwLDIyIEBAIHB1
YmxpYzoKICAgICB9CiAgICAgSklURGF0YSYgZW5zdXJlSklURGF0YVNsb3coY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJik7CiAKLSAgICBKSVRBZGRJQyogYWRkSklUQWRkSUMoQXJpdGhQcm9maWxl
Kik7Ci0gICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVE5l
Z0lDKiBhZGRKSVROZWdJQyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRTdWJJQyogYWRkSklUU3Vi
SUMoQXJpdGhQcm9maWxlKik7CisgICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEJpbmFyeUFyaXRo
UHJvZmlsZSopOworICAgIEpJVE11bElDKiBhZGRKSVRNdWxJQyhCaW5hcnlBcml0aFByb2ZpbGUq
KTsKKyAgICBKSVROZWdJQyogYWRkSklUTmVnSUMoVW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBK
SVRTdWJJQyogYWRkSklUU3ViSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVEFkZEdlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4K
LSAgICBKSVRBZGRJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4g
YWRkSklUQWRkSUMocHJvZmlsZSk7IH0KKyAgICBKSVRBZGRJQyogYWRkTWF0aElDKEJpbmFyeUFy
aXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUQWRkSUMocHJvZmlsZSk7IH0KIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUTXVsR2VuZXJhdG9yPjo6dmFs
dWU+Ojp0eXBlPgotICAgIEpJVE11bElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxl
KSB7IHJldHVybiBhZGRKSVRNdWxJQyhwcm9maWxlKTsgfQorICAgIEpJVE11bElDKiBhZGRNYXRo
SUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRNdWxJQyhwcm9m
aWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVROZWdHZW5l
cmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTmVnSUMqIGFkZE1hdGhJQyhBcml0aFByb2Zp
bGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE5lZ0lDKHByb2ZpbGUpOyB9CisgICAgSklUTmVn
SUMqIGFkZE1hdGhJQyhVbmFyeUFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklU
TmVnSUMocHJvZmlsZSk7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5
cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwg
SklUU3ViR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVFN1YklDKiBhZGRNYXRoSUMo
QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRTdWJJQyhwcm9maWxlKTsgfQor
ICAgIEpJVFN1YklDKiBhZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJl
dHVybiBhZGRKSVRTdWJJQyhwcm9maWxlKTsgfQogCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGFk
ZFN0dWJJbmZvKEFjY2Vzc1R5cGUpOwogCkBAIC00OTcsOCArNDk4LDEwIEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dm9pZCBmb3JFYWNoTExJbnRDYWxsTGlua0luZm8oY29uc3QgRnVuY3RvciYpOwogCi0gICAgQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwot
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
KyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5k
ZXgoQnl0ZWNvZGVJbmRleCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgVW5h
cnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKIAogICAgIGJvb2wgY291bGRUYWtlU3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNvZGVJbmRl
eCBieXRlY29kZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmlu
ZGV4IGVkYTI0YmU0Njk1Li41Nzc4OWJjMmM2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRml0cy5oCkBAIC0yMzUsNiArMjM1LDE4IEBAIHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6
ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1CiAg
ICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UmVzdWx0
VHlwZSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoUmVzdWx0VHlwZSkgIT0gc2l6ZSwg
c3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihSZXN1bHRUeXBlKSA9PSBzaXplb2YodWludDhfdCkpOworICAgIHVz
aW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgc3RhdGljIGJvb2wgY2hlY2so
UmVzdWx0VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjaGVjayh0eXBlLmJpdHMoKSk7IH0KKwor
ICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUmVzdWx0VHlwZSB0
eXBlKSB7IHJldHVybiBCYXNlOjpjb252ZXJ0KHR5cGUuYml0cygpKTsgfQorCisgICAgc3RhdGlj
IFJlc3VsdFR5cGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIHR5cGUpIHsgcmV0
dXJuIFJlc3VsdFR5cGUoQmFzZTo6Y29udmVydCh0eXBlKSk7IH0KK307CisKIHRlbXBsYXRlPE9w
Y29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPE9wZXJhbmRUeXBlcywgc2l6ZSwgc3RkOjplbmFi
bGVfaWZfdDxzaXplb2YoT3BlcmFuZFR5cGVzKSAhPSBzaXplLCBzdGQ6OnRydWVfdHlwZT4+IHsK
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kVHlwZXMpID09IHNpemVvZih1aW50MTZf
dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDcxMDRkMDFhZTExLi4yYjY5
ZjM2YzdmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcApAQCAtNjYsMTAgKzY2LDE2
IEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKEND
YWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
ICAgIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5hcml0aFByb2Zp
bGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsK
KyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS51bmFyeUFyaXRo
UHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3Rl
cnMpOwogICAgICAgICByZXR1cm47Ci0gICAgfSB9CisgICAgfQorCisgICAgY2FzZSBCaW5hcnlB
cml0aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9i
c2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpAQCAtOTQsMTAgKzEwMCwxNiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGU6OnJlcG9ydFZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBjYXNlIEFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUuYXJpdGhQcm9maWxl
LT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6
IHsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdCh2YWx1ZSk7CiAg
ICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAgICBjYXNlIEJpbmFyeUFyaXRoUHJv
ZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0
KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB9CiAKICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKaW5kZXggY2Zi
ODM0NzA2YWYuLjVkODFjNGM5MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKQEAgLTM2
LDEwICszNiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5hcnlBcml0aFByb2Zp
bGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBDQ2FsbEhlbHBlcnM7CiBjbGFz
cyBDb2RlQmxvY2s7CiBjbGFzcyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTsKLXN0cnVjdCBB
cml0aFByb2ZpbGU7CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiBjbGFzcyBNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlIHsKQEAgLTU3LDEyICs1OCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9Ci0gICAgCi0gICAgTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShBcml0aFByb2ZpbGUqIHByb2ZpbGUpCisKKyAgICBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKQorICAg
IHsKKyAgICAgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAgICAgICAgIG1fa2luZCA9IFVuYXJ5QXJp
dGhQcm9maWxlUmVhZHk7CisgICAgICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlID0gcHJvZmls
ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2tpbmQgPSBOb25lOworICAgIH0KKwor
ICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9m
aWxlKQogICAgIHsKICAgICAgICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgIG1fa2luZCA9
IEFyaXRoUHJvZmlsZVJlYWR5OwotICAgICAgICAgICAgdS5hcml0aFByb2ZpbGUgPSBwcm9maWxl
OworICAgICAgICAgICAgbV9raW5kID0gQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk7CisgICAgICAg
ICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZSA9IHByb2ZpbGU7CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9CkBAIC03OSw3ICs4OSw4IEBAIHByaXZhdGU6
CiAgICAgZW51bSBLaW5kIHsKICAgICAgICAgTm9uZSwKICAgICAgICAgUmVhZHksCi0gICAgICAg
IEFyaXRoUHJvZmlsZVJlYWR5LAorICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAorICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeSwKICAgICAgICAgTGF6eU9wZXJhbmQKICAgICB9
OwogICAgIApAQCAtOTAsNyArMTAxLDggQEAgcHJpdmF0ZToKICAgICAgICAgeyB9CiAKICAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxlOworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZTsKICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrOwogICAgICAgICAgICAgQnl0
ZWNvZGVJbmRleCBieXRlY29kZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZTM4MzFkMjA5
NWYuLmYyYmNlNjJlZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTUxNiwxNCArMTUxNiwxNCBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgT3BlcmFuZFR5cGVzIHR5cGVzKQorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX25vdDoKICAgICAgICAgZW1pdFVuYXJ5T3A8T3BO
b3Q+KGRzdCwgc3JjKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9uZWdhdGU6Ci0gICAg
ICAgIE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlcyk7CisgICAgICAgIE9wTmVn
YXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBvcF9iaXRub3Q6CiAgICAgICAgIGVtaXRVbmFyeU9wPE9wQml0bm90Pihkc3QsIHNyYyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKaW5kZXggYTc5OTNiZWIzZmEuLjc1YTBiYTAzYzg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC02ODIsNyArNjgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZHN0
OwogICAgICAgICB9CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFVuYXJ5T3AoT3Bjb2RlSUQs
IFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMpOworICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0VW5hcnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBzcmMsIFJlc3VsdFR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJp
bmFyeU9wPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDUyNDY4ZTFmMmFh
Li4wMTA2NGNhZjllZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgUmVnaXN0ZXJJRCog
VW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKgogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9leHByKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9u
KCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVu
YXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdl
dCgpLCBPcGVyYW5kVHlwZXMobV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRVbmFyeU9wKG9wY29kZUlEKCksIGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCksIHNyYy5nZXQoKSwgbV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkpOwogfQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVW5hcnlQbHVzTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzMzc4YWQwOTJmNi4uOThlNjhlYzM5MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CkBAIC05NDIsNTYgKzk0Miw2MCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWlzWDg2KCkgJiYg
KG5vZGUtPm9wKCkgPT0gQXJpdGhNb2QgfHwgbm9kZS0+b3AoKSA9PSBWYWx1ZU1vZCkpCiAgICAg
ICAgICAgICByZXR1cm4gbm9kZTsKIAotICAgICAgICB7Ci0gICAgICAgICAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7Ci0gICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7
Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aEFkZDoKLSAgICAgICAgICAgICAgICBjYXNlIEFy
aXRoU3ViOgotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVBZGQ6Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygp
KQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5v
bk51bWVyaWNSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5k
aWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgICAgICAgICBjYXNlIFZhbHVlTXVsOgotICAgICAgICAgICAgICAgIGNhc2Ug
QXJpdGhNdWw6IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2Jz
ZXJ2ZUludDUyT3ZlcmZsb3coKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MoTm9kZU1heU92ZXJmbG93SW50NTIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJp
dGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50
MzJJbkJhc2VsaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlk
T2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91
YmxlUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2Jz
ZXJ2ZU5vbk51bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNl
IFZhbHVlTmVnYXRlOgotICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCkuc2F3TnVt
YmVyKCkgfHwgYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3Vi
bGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJm
bG93KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92
ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2UgQXJpdGhBZGQ6CisgICAgICAgIGNh
c2UgQXJpdGhTdWI6CisgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKKyAgICAgICAgICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4
KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwor
ICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKKyAg
ICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3Vs
dCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCisg
ICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZhbHVlTXVsOgor
ICAgICAgICBjYXNlIEFyaXRoTXVsOiB7CisgICAgICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YmluYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAg
ICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkpCisgICAgICAgICAg
ICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7CisgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJm
bG93KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0lu
dDMySW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
TmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCisgICAgICAgICAgICAgICAgbm9k
ZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOworICAgICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgICAgICAgICAgICAgIG5vZGUt
Pm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFy
aXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKKyAgICAgICAgICAgICAgICBub2Rl
LT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3VsdCk7CisgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCisgICAgICAgICAgICAgICAgbm9k
ZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZhbHVlTmVnYXRlOgorICAgICAgICBjYXNlIEFy
aXRoTmVnYXRlOiB7CisgICAgICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZv
ckJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFhcml0aFBy
b2ZpbGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9i
c2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlI
YXZlRG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAgICAgICAgICAgICBu
b2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7CisgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDMy
SW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9u
TnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVO
b25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgpKSB7CkBA
IC0xMDMzLDggKzEwMzcsOCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6
IEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIG1ha2UgdGhpcyBtb3JlIGdyYW51bGFyLgogICAgICAg
ICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGluZSB8IE5vZGVN
YXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAgIAotICAgICAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisKKyAgICAgICAgQmluYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgpOwog
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCiAgICAgICAgICAg
ICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCBjYTlmYzM0ZTFkMy4uMWIxYjE5ODRhMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xNjU0LDcgKzE2NTQs
OSBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlRm9yKE5vZGUqIGN1cnJlbgogICAgICAgICAgICAgICAgIHJldHVybiAmcHJv
ZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCgpKTsKIAogICAgICAgICAgICAgaWYgKHByb2ZpbGVkQmxvY2st
Pmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoQXJpdGhQ
cm9maWxlKiByZXN1bHQgPSBwcm9maWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAgICAgICAg
ICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVj
b2RlSW5kZXgoKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
ICAgICAgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiByZXN1bHQgPSBwcm9maWxlZEJsb2NrLT51
bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5
dGVjb2RlSW5kZXgoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNmNkYjcxNTBhMDEuLmI4NDk2NjZjNWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzk5
NSw3ICszOTk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUq
IG5vZGUpCiAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgo
KS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUlu
ZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9j
ay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBCaW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlB
cml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJVEFkZElD
KiBhZGRJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwog
ICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZTsK
ICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkOwpAQCAt
NDAxOSw3ICs0MDE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKE5v
ZGUqIG5vZGUpCiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0
LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBi
YXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGlu
ZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KTsKICAgICAgICAgSklUU3ViSUMqIHN1YklDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJ
VFN1YklDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0g
b3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKQEAgLTQ2MTMsNyArNDYxMyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZShOb2RlKiBub2RlKQogewogICAgIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JC
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJVE5lZ0lDKiBuZWdJQyA9IG1faml0LmNvZGVC
bG9jaygpLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIGF1dG8gcmVwYXRjaGluZ0Z1
bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZTsKICAgICBhdXRvIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlOwpAQCAtNDgzNiw3ICs0ODM2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAKICAg
ICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNv
ZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVG
b3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJVE11bElDKiBtdWxJQyA9IG1f
aml0LmNvZGVCbG9jaygpLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUpOwogICAgIGF1dG8gcmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDVkNDhjMGIwY2I5Li4zN2Yw
YTk2MDBmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcApAQCAtMjExNiw3ICsyMTE2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNv
ZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAg
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICAgICAgYXV0byByZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplOwogICAgICAgICBhdXRv
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkOwogICAgICAgICBjb21w
aWxlQmluYXJ5TWF0aElDPEpJVEFkZEdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5n
RnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTM3LDcgKzIxMzcsNyBAQCBw
cml2YXRlOgogCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0
YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
ICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVj
b2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVj
b2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZh
bHVlU3ViT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3Bl
cmF0aW9uVmFsdWVTdWI7CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJh
dG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uKTsKQEAgLTIxNTgsNyArMjE1OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2Nr
KiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRo
UHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRo
UHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICAgICAgYXV0
byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bDsKICAgICAgICAgY29t
cGlsZUJpbmFyeU1hdGhJQzxKSVRNdWxHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGlu
Z0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE2Niw3ICsyMTY2LDcgQEAg
cHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1
bmMxLCB0eXBlbmFtZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5
cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50
ZXI8RnVuYzI+Ojp0eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZVVuYXJ5TWF0aElDKEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMy
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKKyAgICB2b2lkIGNvbXBpbGVVbmFyeU1hdGhJQyhVbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1
bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBt
X25vZGU7CiAKQEAgLTIyNTIsNyArMjI1Miw3IEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBGdW5jMSwgdHlwZW5hbWUgRnVuYzIsCiAgICAg
ICAgIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzE+Ojp0eXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5j
dGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmMyPjo6dHlwZT46OnZhbHVlPj4K
LSAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUs
IEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQor
ICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rp
b24pCiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICAKQEAgLTI0
MjEsNyArMjQyMSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxp
bmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRo
UHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAgICBCaW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlB
cml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAg
YXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAg
ICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsK
ICAgICAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPihhcml0aFBy
b2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTMw
OTksNyArMzA5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9u
b2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVD
b2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4
KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxv
Y2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAg
IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+dW5h
cnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBh
dXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemU7CiAg
ICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7
CiAgICAgICAgIGNvbXBpbGVVbmFyeU1hdGhJQzxKSVROZWdHZW5lcmF0b3I+KGFyaXRoUHJvZmls
ZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggYjVlZmUyNjgwNDYuLjJiNGE1ZDY0YmYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKQEAgLTkxOSw3ICs5MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ly8gSXQgd2lsbCBnaXZlIHRoZSBzbG93IHBhdGggdGhlIHNhbWUgdmFsdWUgcmVhZCBieSB0aGUg
ZmFzdCBwYXRoLgogICAgICAgICBHZXRQdXRJbmZvIGNvcGllZEdldFB1dEluZm8oT3BQdXRUb1Nj
b3BlKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOworICAgICAgICBCaW5hcnlBcml0
aFByb2ZpbGUgY29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wKTsKIAogICAgICAgICBJbnRlcnBy
ZXRlciogbV9pbnRlcnByZXRlcjsKIApAQCAtOTM5LDcgKzkzOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBWZWN0b3I8U3dpdGNoUmVjb3JkPiBtX3N3aXRjaGVzOwogCiAgICAgICAgIEhh
c2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkPiBtX2NvcGllZEdldFB1dEluZm9zOwotICAgICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBBcml0aFByb2ZpbGU+IG1fY29waWVkQXJpdGhQcm9maWxlczsKKyAg
ICAgICAgSGFzaE1hcDx1aW50NjRfdCwgQmluYXJ5QXJpdGhQcm9maWxlPiBtX2NvcGllZEFyaXRo
UHJvZmlsZXM7CiAKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3M7CiAgICAgICAg
IEp1bXBMaXN0IG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCmluZGV4IDYyN2FmMjc4
N2UwLi43NDBiMmVkOGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBZGRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRk
R2VuZXJhdG9yLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklU
TWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxI
ZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdlbmVyYXRv
cjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAg
IC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxo
cyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtNzMsNyArNzMsNyBAQCBKSVRNYXRo
SUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBl
cnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVy
YXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlz
dCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklU
QWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xv
d1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJv
b2wgc2hvdWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IElu
dmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRH
UFIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAppbmRl
eCA0ZGMzNGEyZjViNi4uNjc1Y2Y5M2M5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRBZGRHZW5lcmF0b3IuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFT
U0VSVCghbV9sZWZ0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9wZXJhbmQuaXND
b25zdEludDMyKCkpOwogICAgIH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBBcml0
aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFBy
b2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxs
SGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmls
ZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1Bh
dGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNu
aXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5pc1Bvc2l0aXZl
Q29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0
YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRPcGVyYW5kLmlz
UG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwCmluZGV4IGFjMzcyYzlmYmUwLi5iYjYzNWY4ZTc2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NTMsNyArNDUzLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRh
KG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEo
bV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE5lZ0lDKiBuZWdhdGVJQyA9IG1f
Y29kZUJsb2NrLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25U
b01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBuZWdhdGVJQyk7CiAgICAgZW1pdE1hdGhJ
Q0Zhc3Q8T3BOZWdhdGU+KG5lZ2F0ZUlDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvbkFy
aXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRlKTsKQEAgLTYzNCwxNCArNjM0
LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdXJzaGlmdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY3VycmVudEluc3RydWN0
aW9uLCBvcF91cnNoaWZ0KTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgT3BlcmFuZFR5cGVz
IGdldE9wZXJhbmRUeXBlcyhjb25zdCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKLXsKLSAg
ICByZXR1cm4gT3BlcmFuZFR5cGVzKGFyaXRoUHJvZmlsZS5saHNSZXN1bHRUeXBlKCksIGFyaXRo
UHJvZmlsZS5yaHNSZXN1bHRUeXBlKCkpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9hZGQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQWRkPigpLm1ldGFkYXRh
KG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQWRkPigpLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVRBZGRJQyogYWRkSUMgPSBtX2NvZGVC
bG9jay0+YWRkSklUQWRkSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRo
SUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYWRkSUMpOwogICAgIGVtaXRNYXRoSUNGYXN0PE9w
QWRkPihhZGRJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVk
LCBvcGVyYXRpb25WYWx1ZUFkZCk7CkBAIC02ODYsNyArNjgxLDcgQEAgdm9pZCBKSVQ6OmVtaXRN
YXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1
Y3Rpb24qIGMKIAogICAgIGJvb2wgZ2VuZXJhdGVkSW5saW5lQ29kZSA9IG1hdGhJQy0+Z2VuZXJh
dGVJbmxpbmUoKnRoaXMsIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSk7CiAgICAgaWYgKCFnZW5lcmF0
ZWRJbmxpbmVDb2RlKSB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0
aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUg
JiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhS
ZXN1bHQocHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBzcmNSZWdzLCBhcml0aFByb2ZpbGUpOwogICAgICAgICBl
bHNlCkBAIC03MDksNyArNzA0LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBH
ZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE4KIHZvaWQgSklU
OjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2Zp
bGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBP
cGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY29waWVkQXJpdGhQcm9maWxlKGJ5
dGVjb2RlKSk7CiAgICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAg
IGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNv
ZGUubV9yaHMub2Zmc2V0KCk7CkBAIC03MjgsOCArNzIyLDggQEAgdm9pZCBKSVQ6OmVtaXRNYXRo
SUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0
aW9uKgogICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gZnBSZWdUMjsKICNlbmRpZgogCi0gICAgU25p
cHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMuZmlyc3QoKSk7Ci0gICAgU25pcHBldE9wZXJh
bmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0
T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5maXJzdCgpKTsKKyAgICBTbmlwcGV0T3Bl
cmFuZCByaWdodE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuc2Vjb25kKCkpOwogCiAg
ICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkpCiAgICAgICAgIGxlZnRPcGVyYW5kLnNl
dENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSkpOwpAQCAtNzU5LDcgKzc1Myw3
IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiog
bWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIob3AxLCBsZWZ0UmVncyk7CiAgICAgICAgIGVsc2UgaWYgKHJpZ2h0T3BlcmFuZC5pc0Nv
bnN0KCkpCiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmlnaHRSZWdz
KTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJv
ZmlsZSgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJ
Qy0+YXJpdGhQcm9maWxlKCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1p
dFByb2ZpbGluZygpKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQocHJvZmls
ZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBhcml0aFByb2ZpbGUpOwogICAgICAgICBl
bHNlCkBAIC03OTksNyArNzkzLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5
TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGMKICAgICBhdXRv
IHNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogI2VuZGlmCiAKLSAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgVW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgaWYgKGFyaXRo
UHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgaWYgKG1hdGhJQ0dl
bmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCiAgICAgICAgICAgICBtYXRoSUNH
ZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQocmVp
bnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HSk1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rp
b24pLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIHNyY1JlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElDKSk7CkBAIC04MzEsNyArODI1LDYgQEAg
dm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRo
SUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0
aFN0YXJ0ID0gbGFiZWwoKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wPigpOwotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhj
b3BpZWRBcml0aFByb2ZpbGUoYnl0ZWNvZGUpKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUu
bV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwog
ICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKQEAgLTg0Niw4ICs4MzksOCBA
QCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1h
dGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxl
ZnRSZWdzOwogI2VuZGlmCiAgICAgCi0gICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlw
ZXMuZmlyc3QoKSk7Ci0gICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29u
ZCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRU
eXBlcy5maXJzdCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYnl0ZWNvZGUu
bV9vcGVyYW5kVHlwZXMuc2Vjb25kKCkpOwogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50
KG9wMSkpCiAgICAgICAgIGxlZnRPcGVyYW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0
YW50SW50KG9wMSkpOwpAQCAtODY1LDcgKzg1OCw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xv
dyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioK
ICAgICBhdXRvIHNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogI2VuZGlmCiAKLSAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOwogICAg
IGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGlm
IChtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2hvdWxkU2xvd1BhdGhSZXBhdGNoKQogICAgICAgICAg
ICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb25XaXRo
UmVzdWx0KGJpdHdpc2VfY2FzdDxKX0pJVE9wZXJhdGlvbl9HSkpNaWM+KHByb2ZpbGVkUmVwYXRj
aEZ1bmN0aW9uKSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwpA
QCAtODkzLDE5ICs4ODYsMTYgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1h
dGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVt
aXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEaXY+KCk7Ci0gICAgYXV0
byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgaW50IHJl
c3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5t
X2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRU
eXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3Mg
PSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNWYWx1
ZVJlZ3MocmVnVDEpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKICAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1QyOwogI2Vsc2UKLSAgICBPcGVyYW5kVHlwZXMgdHlw
ZXMgPSBnZXRPcGVyYW5kVHlwZXMobWV0YWRhdGEubV9hcml0aFByb2ZpbGUpOwogICAgIEpTVmFs
dWVSZWdzIGxlZnRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKU1ZhbHVl
UmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpOwogICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKQEAgLTkxMywxMiArOTAzLDEyIEBAIHZvaWQgSklU
OjplbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2Vu
ZGlmCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogCi0gICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBudWxscHRyOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbnVsbHB0cjsKICAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAg
ICBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcERpdj4oKS5tZXRhZGF0
YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0
T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQo
dHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2Rl
Lm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFu
ZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5k
Q29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRP
cGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC05NjAsNyArOTUwLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQg
SklUOjplbWl0X29wX211bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE11
bElDKiBtdWxJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUpOwogICAg
IG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBtdWxJQyk7CiAg
ICAgZW1pdE1hdGhJQ0Zhc3Q8T3BNdWw+KG11bElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJh
dGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlTXVsKTsKQEAgLTk3Niw3ICs5NjYs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdWIoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1ldGFkYXRh
KG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2NvZGVC
bG9jay0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRo
SUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgc3ViSUMpOwogICAgIGVtaXRNYXRoSUNGYXN0PE9w
U3ViPihzdWJJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVk
LCBvcGVyYXRpb25WYWx1ZVN1Yik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVERpdkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERp
dkdlbmVyYXRvci5jcHAKaW5kZXggNjZlMWJlMTRhOGQuLmJlNmQ0ZDQwYzQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCkBAIC0xMzAsNyArMTMw
LDcgQEAgdm9pZCBKSVREaXZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQpCiAgICAgbm90RG91YmxlWmVyby5saW5rKCZqaXQpOwogI2VuZGlmCiAgICAgaWYgKG1f
YXJpdGhQcm9maWxlKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihBcml0aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgbV9h
cml0aFByb2ZpbGUtPmVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgQmluYXJ5QXJpdGhQcm9maWxl
OjpzcGVjaWFsRmFzdFBhdGhCaXQpOwogICAgIGppdC5ib3hEb3VibGUobV9sZWZ0RlBSLCBtX3Jl
c3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5o
CmluZGV4IDgzOTY2Nzc5NDNmLi43MDhkYjEwZDZjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVERpdkdlbmVyYXRvci5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBK
SVREaXZHZW5lcmF0b3IoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQsIFNuaXBwZXRPcGVyYW5k
IHJpZ2h0T3BlcmFuZCwKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBs
ZWZ0LCBKU1ZhbHVlUmVncyByaWdodCwKICAgICAgICAgRlBSUmVnIGxlZnRGUFIsIEZQUlJlZyBy
aWdodEZQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEZQUlJlZyBzY3JhdGNoRlBSLAotICAgICAgICBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIpCisgICAgICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gbnVsbHB0cikKICAgICAgICAgOiBtX2xlZnRPcGVyYW5k
KGxlZnRPcGVyYW5kKQogICAgICAgICAsIG1fcmlnaHRPcGVyYW5kKHJpZ2h0T3BlcmFuZCkKICAg
ICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAg
R1BSUmVnIG1fc2NyYXRjaEdQUjsKICAgICBGUFJSZWcgbV9zY3JhdGNoRlBSOwogICAgIGJvb2wg
bV9kaWRFbWl0RmFzdFBhdGggeyBmYWxzZSB9OwotICAgIEFyaXRoUHJvZmlsZSogbV9hcml0aFBy
b2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKIAogICAgIEND
YWxsSGVscGVyczo6SnVtcExpc3QgbV9lbmRKdW1wTGlzdDsKICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IG1fc2xvd1BhdGhKdW1wTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKaW5kZXggNjJlYWI5Yjk3ZmEuLjI1YmNjMmI5YzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaApAQCAtNzE2LDEzICs3MTYsMTMgQEAgQUxXQVlTX0lOTElORSBH
ZXRQdXRJbmZvIEpJVDo6Y29waWVkR2V0UHV0SW5mbyhPcFB1dFRvU2NvcGUgYnl0ZWNvZGUpCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJpbmFyeU9wPgotQUxXQVlTX0lOTElORSBBcml0aFByb2Zp
bGUgSklUOjpjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCitBTFdBWVNfSU5M
SU5FIEJpbmFyeUFyaXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCBi
eXRlY29kZSkKIHsKICAgICB1aW50NjRfdCBrZXkgPSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEJp
bmFyeU9wOjpvcGNvZGVJRCkgKyAxKSA8PCAzMiB8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihieXRl
Y29kZS5tX21ldGFkYXRhSUQpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NvcGllZEFyaXRoUHJv
ZmlsZXMuZmluZChrZXkpOwogICAgIGlmIChpdGVyYXRvciAhPSBtX2NvcGllZEFyaXRoUHJvZmls
ZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci0gICAgQXJpdGhQcm9m
aWxlIGFyaXRoUHJvZmlsZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRo
UHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIG1fY29waWVkQXJpdGhQ
cm9maWxlcy5hZGQoa2V5LCBhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBhcml0aFByb2ZpbGU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAppbmRleCA1NjQ1ZTQyZGVmZi4u
ZmRhZWM5Mjc1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0
aElDLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaApAQCAtNTIs
MTEgKzUyLDExIEBAIHN0cnVjdCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUgewogCiAjZGVmaW5lIEVO
QUJMRV9NQVRIX0lDX1NUQVRTIDAKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGUs
IGJvb2woKmlzUHJvZmlsZUVtcHR5KShBcml0aFByb2ZpbGUmKT4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBHZW5lcmF0b3JUeXBlLCB0eXBlbmFtZSBBcml0aFByb2ZpbGVUeXBlPgogY2xhc3MgSklUTWF0
aElDIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBKSVRNYXRo
SUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAgSklUTWF0aElDKEFyaXRoUHJvZmls
ZVR5cGUqIGFyaXRoUHJvZmlsZSkKICAgICAgICAgOiBtX2FyaXRoUHJvZmlsZShhcml0aFByb2Zp
bGUpCiAgICAgewogICAgIH0KQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICBzaXpl
X3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7CiAKICAg
ICAgICAgaWYgKG1fYXJpdGhQcm9maWxlKSB7Ci0gICAgICAgICAgICBpZiAoaXNQcm9maWxlRW1w
dHkoKm1fYXJpdGhQcm9maWxlKSkgeworICAgICAgICAgICAgaWYgKG1fYXJpdGhQcm9maWxlLT5p
c09ic2VydmVkVHlwZUVtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCBsb29rcyBsaWtl
IHRoZSBNYXRoSUMgaGFzIHlldCB0byBleGVjdXRlLiBXZSBkb24ndCB3YW50IHRvIGVtaXQgY29k
ZSBpbiB0aGlzCiAgICAgICAgICAgICAgICAgLy8gY2FzZSBmb3IgYSBjb3VwbGUgcmVhc29ucy4g
Rmlyc3QsIHRoZSBvcGVyYXRpb24gbWF5IG5ldmVyIGV4ZWN1dGUsIHNvIGlmIHdlIGRvbid0IGVt
aXQKICAgICAgICAgICAgICAgICAvLyBjb2RlLCBpdCdzIGEgd2luLiBTZWNvbmQsIGlmIHRoZSBv
cGVyYXRpb24gZG9lcyBleGVjdXRlLCB3ZSBjYW4gZW1pdCBiZXR0ZXIgY29kZQpAQCAtMjIzLDcg
KzIyMyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9zbG93UGF0aFN0YXJ0TG9jYXRpb24gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oc3RhdGUuc2xvd1BhdGhTdGFydCk7
CiAgICAgfQogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUoKSBjb25zdCB7IHJldHVy
biBtX2FyaXRoUHJvZmlsZTsgfQorICAgIEFyaXRoUHJvZmlsZVR5cGUqIGFyaXRoUHJvZmlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYXJpdGhQcm9maWxlOyB9CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19T
VEFUUykKICAgICBzaXplX3QgbV9nZW5lcmF0ZWRDb2RlU2l6ZSB7IDAgfTsKQEAgLTIzNiw3ICsy
MzYsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBBcml0aFByb2ZpbGUqIG1fYXJp
dGhQcm9maWxlOworICAgIEFyaXRoUHJvZmlsZVR5cGUqIG1fYXJpdGhQcm9maWxlOwogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gbV9jb2RlOwogICAgIENv
ZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1faW5saW5lU3RhcnQ7CiAgICAgQ29k
ZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9pbmxpbmVFbmQ7CkBAIC0yNDYsMTUg
KzI0NiwxMSBAQCBwdWJsaWM6CiAgICAgR2VuZXJhdG9yVHlwZSBtX2dlbmVyYXRvcjsKIH07CiAK
LWlubGluZSBib29sIGlzQmluYXJ5UHJvZmlsZUVtcHR5KEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9m
aWxlKQotewotICAgIHJldHVybiBhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0
eSgpIHx8IGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7Ci19CiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZT4KLWNsYXNzIEpJVEJpbmFyeU1hdGhJQyA6IHB1
YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQcm9maWxlRW1wdHk+IHsKK2Ns
YXNzIEpJVEJpbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgQmlu
YXJ5QXJpdGhQcm9maWxlPiB7CiBwdWJsaWM6Ci0gICAgSklUQmluYXJ5TWF0aElDKEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlKQotICAgICAgICA6IEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBp
c0JpbmFyeVByb2ZpbGVFbXB0eT4oYXJpdGhQcm9maWxlKQorICAgIEpJVEJpbmFyeU1hdGhJQyhC
aW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKKyAgICAgICAgOiBKSVRNYXRoSUM8R2Vu
ZXJhdG9yVHlwZSwgQmluYXJ5QXJpdGhQcm9maWxlPihhcml0aFByb2ZpbGUpCiAgICAgewogICAg
IH0KIH07CkBAIC0yNjMsMTYgKzI1OSwxMSBAQCB0eXBlZGVmIEpJVEJpbmFyeU1hdGhJQzxKSVRB
ZGRHZW5lcmF0b3I+IEpJVEFkZElDOwogdHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUTXVsR2Vu
ZXJhdG9yPiBKSVRNdWxJQzsKIHR5cGVkZWYgSklUQmluYXJ5TWF0aElDPEpJVFN1YkdlbmVyYXRv
cj4gSklUU3ViSUM7CiAKLQotaW5saW5lIGJvb2wgaXNVbmFyeVByb2ZpbGVFbXB0eShBcml0aFBy
b2ZpbGUmIGFyaXRoUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2Vy
dmVkVHlwZSgpLmlzRW1wdHkoKTsKLX0KIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3JUeXBl
PgotY2xhc3MgSklUVW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUs
IGlzVW5hcnlQcm9maWxlRW1wdHk+IHsKK2NsYXNzIEpJVFVuYXJ5TWF0aElDIDogcHVibGljIEpJ
VE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBVbmFyeUFyaXRoUHJvZmlsZT4gewogcHVibGljOgotICAg
IEpJVFVuYXJ5TWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQotICAgICAgICA6IEpJ
VE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5Pihhcml0aFByb2ZpbGUp
CisgICAgSklUVW5hcnlNYXRoSUMoVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKKyAg
ICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgVW5hcnlBcml0aFByb2ZpbGU+KGFyaXRo
UHJvZmlsZSkKICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTXVsR2VuZXJhdG9yLmNwcAppbmRleCA4M2QyOTNiNjI1Mi4uOTQ0ODdjMDUyNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRN
dWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJ
VE1hdGhJQ0lubGluZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxs
SGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBCaW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1
bGF0aW5nIGludDMyLgogICAgIE9ic2VydmVkVHlwZSBsaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRo
SW50MzIoKTsKQEAgLTg5LDcgKzg5LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE11bEdl
bmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICBy
ZXR1cm4gSklUTWF0aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0OwogfQogCi1i
b29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBi
b29sIHNob3VsZEVtaXRQcm9maWxpbmcpCitib29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVt
cExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcp
CiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NF
UlQobV9zY3JhdGNoR1BSICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpAQCAtMjA1LDE4ICsyMDUs
MTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKIAogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgbm90TmVnYXRpdmVaZXJvID0gaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6Tm90RXF1YWws
IG1fcmVzdWx0LnBheWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQobmVnYXRp
dmVaZXJvQml0cykpOwogCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGFyaXRoUHJv
ZmlsZS0+ZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBCaW5hcnlBcml0aFByb2ZpbGU6Ok5lZ1pl
cm9Eb3VibGUpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7
CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJs
ZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09m
Qml0cygpKSk7CisgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0
LCBCaW5hcnlBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpOwogCiAgICAgICAgIGppdC5t
b3ZlKG1fcmVzdWx0LnBheWxvYWRHUFIoKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LnVy
c2hpZnRQdHIoQ0NhbGxIZWxwZXJzOjpJbW0zMig1MiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAg
IGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3JhdGNoR1BSKTsKICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGppdC5icmFuY2gzMihD
Q2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigweDQzMSkpOwogCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6
QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAg
IGFyaXRoUHJvZmlsZS0+ZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBCaW5hcnlBcml0aFByb2Zp
bGU6OkludDUyT3ZlcmZsb3cpOwogICAgICAgICBub0ludDUyT3ZlcmZsb3cubGluaygmaml0KTsK
IAogICAgICAgICBkb25lLmxpbmsoJmppdCk7CkBAIC0yMjcsMTggKzIyNywxOCBAQCBib29sIEpJ
VE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdAogICAgICAgICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFu
Y2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDApKSk7CiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5hcHBl
bmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIG1fcmVzdWx0LnRhZ0dQUigp
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihuZWdhdGl2ZVplcm9CaXRzID4+IDMyKSkpOwog
Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmls
ZTo6TmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJv
ZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFVuY29u
ZGl0aW9uYWxTZXQoaml0LCBCaW5hcnlBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpOwogICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90
TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAg
ICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBCaW5hcnlBcml0aFBy
b2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpOwogCiAgICAgICAgIGppdC5tb3ZlKG1fcmVzdWx0LnRh
Z0dQUigpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBl
cnM6OkltbTMyKDUyIC0gMzIpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQuYW5kMzIoQ0Nh
bGxIZWxwZXJzOjpJbW0zMigweDdmZiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcCBub0ludDUyT3ZlcmZsb3cgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpM
ZXNzVGhhbk9yRXF1YWwsIG1fc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MHg0MzEpKTsKLSAgICAgICAgCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisKKyAgICAgICAgYXJp
dGhQcm9maWxlLT5lbWl0VW5jb25kaXRpb25hbFNldChqaXQsIEJpbmFyeUFyaXRoUHJvZmlsZTo6
SW50NTJPdmVyZmxvdyk7CiAKICAgICAgICAgZW5kSnVtcExpc3QuYXBwZW5kKG5vSW50NTJPdmVy
Zmxvdyk7CiAgICAgICAgIGlmIChtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQudGFnR1BSKCkgfHwg
bV9zY3JhdGNoR1BSID09IG1fcmVzdWx0LnBheWxvYWRHUFIoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCmluZGV4IDM2ZDI2ZWExMjRlLi42MDg3Nzk2Njg1
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCkBAIC01
Niw4ICs1Niw4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzUG9z
aXRpdmVDb25zdEludDMyKCkgfHwgIW1fcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMy
KCkpOwogICAgIH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShD
Q2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBBcml0aFByb2ZpbGUq
KTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dKdW1w
TGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAg
ICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0
aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9v
bCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93SnVtcExpc3QsIGNvbnN0
IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CiAKICAgICBz
dGF0aWMgYm9vbCBpc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCBsZWZ0
T3BlcmFuZCkgeyByZXR1cm4gbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQog
ICAgIHN0YXRpYyBib29sIGlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFu
ZCByaWdodE9wZXJhbmQpIHsgcmV0dXJuIHJpZ2h0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQz
MigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAK
aW5kZXggOTJjMjlkZDYzMGEuLmNlZWJlMzkwOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSkKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAg
IEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9zcmMucGF5bG9hZEdQUigpKTsKQEAgLTQ1LDcgKzQ1
LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVJbmxp
bmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1
bGF0aW5nIGludDMyLgogICAgIE9ic2VydmVkVHlwZSBvYnNlcnZlZFR5cGVzID0gT2JzZXJ2ZWRU
eXBlKCkud2l0aEludDMyKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSkKLSAgICAgICAgb2JzZXJ2
ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCk7CisgICAgICAgIG9ic2Vy
dmVkVHlwZXMgPSBhcml0aFByb2ZpbGUtPmFyZ09ic2VydmVkVHlwZSgpOwogICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIW9ic2VydmVkVHlwZXMuaXNFbXB0eSgpLCAiV2Ugc2hvdWxkIG5vdCBhdHRl
bXB0IHRvIGdlbmVyYXRlIGFueXRoaW5nIGlmIHdlIGRvIG5vdCBoYXZlIGEgcHJvZmlsZS4iKTsK
IAogICAgIGlmIChvYnNlcnZlZFR5cGVzLmlzT25seU5vbk51bWJlcigpKQpAQCAtODIsNyArODIs
NyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVS
ZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUTmVnR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwg
Y29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGlu
ZykKK2Jvb2wgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYg
aml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0
Y2hHUFIgIT0gbV9zcmMucGF5bG9hZEdQUigpKTsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9
IG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBKSVROZWdH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVy
czo6SnVtcExpc3QKICNlbmRpZgogICAgIC8vIFRoZSBmbGFncyBvZiBBcml0aE5lZ2F0ZSBhcmUg
YmFzaWMgaW4gREZHLgogICAgIC8vIFdlIG9ubHkgbmVlZCB0byBrbm93IGlmIHdlIGV2ZXIgcHJv
ZHVjZWQgYSBudW1iZXIuCi0gICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcgJiYgYXJpdGhQcm9m
aWxlICYmICFhcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpLnNhd051bWJlcigpICYmICFh
cml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICBpZiAoc2hvdWxkRW1pdFByb2Zp
bGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+YXJnT2JzZXJ2ZWRUeXBlKCku
c2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQogICAgICAg
ICBhcml0aFByb2ZpbGUtPmVtaXRTZXREb3VibGUoaml0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCmluZGV4IDhhMGMy
ZDUxN2Q2Li43ODdiNzA3NjgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVROZWdHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5l
Z0dlbmVyYXRvci5oCkBAIC00Myw4ICs0Myw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3NjcmF0
Y2hHUFIoc2NyYXRjaEdQUikKICAgICB7IH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBn
ZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25z
dCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxk
RW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IFVuYXJ5QXJpdGhQ
cm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxs
SGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBz
bG93UGF0aEp1bXBMaXN0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1p
dFByb2ZpbGluZyk7CiAKIHByaXZhdGU6CiAgICAgSlNWYWx1ZVJlZ3MgbV9yZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0N2RlYjhjZTZh
YS4uM2E5ZTg1YTA4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtMjY0NSw3ICsyNjQ1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkV4Y2VwdGlvbkZ1enooSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICNlbmRpZiAvLyBD
T01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1
ZSBwcm9maWxlZEFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wMSwg
SlNWYWx1ZSBvcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQorQUxXQVlTX0lOTElORSBz
dGF0aWMgSlNWYWx1ZSBwcm9maWxlZEFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIG9wMSwgSlNWYWx1ZSBvcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxl
KQogewogICAgIGFyaXRoUHJvZmlsZS5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzQWRkKGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpOwpAQCAtMjY2MSw3
ICsyNjYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFk
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQWRkKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIs
IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI2NzksNyArMjY3
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9m
aWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5h
cml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFk
ZElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBhcml0
aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwogICAgIGF1dG8gbm9uT3B0aW1p
emVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemU7CkBAIC0yNzAx
LDcgKzI3MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
QWRkUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb2ZpbGVkQWRk
KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMiksICphcml0aFByb2ZpbGUpKTsKIH0KQEAgLTI3MTYsNyArMjcxNiw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMik7CiAKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlv
blZhbHVlQWRkTm9PcHRpbWl6ZTsKLSAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBhZGRJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpKQogICAgICAgICBhcml0aFByb2ZpbGUt
Pm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwogICAgIGFkZElDLT5nZW5lcmF0ZU91dE9mTGlu
ZShjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0yNzQ5
LDcgKzI3NDksNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2Zp
bGVkTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc011bChnbG9iYWxPYmplY3QsIG9wMSwgb3AyKSk7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNB
bmRSSFNUeXBlcyA9IHRydWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBw
cm9maWxlZE11bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUm
IGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNzkwLDcgKzI3OTAsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iagogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0
aW9uVmFsdWVNdWxOb09wdGltaXplOwotICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmls
ZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgbXVsSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI4MDEsNyArMjgw
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIHVucHJvZmlsZWRNdWwo
Z2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yODE3LDcgKzI4MTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCogZwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0
aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElD
LT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBhcml0aFBy
b2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0g
b3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemU7CkBAIC0yODM2LDcgKzI4MzYsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRO
b09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9m
aWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBl
bmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KQEAgLTI4NjIsNyArMjg2Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKIAogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cGVyYW5kLCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChh
cml0aFByb2ZpbGUpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4NzEs
NyArMjg3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNWYWx1
ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKLSAgICBhcml0aFBy
b2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlQXJn
KG9wZXJhbmQpOwogCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZl
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CkBAIC0yODk5LDkgKzI4OTksOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdAog
ICAgIAogICAgIEpTVmFsdWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFu
ZCk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2Zp
bGUoKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRo
UHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwotICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFu
ZCk7CiAgICAgbmVnSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCks
IG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQpOwogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RB
VFMpCkBAIC0yOTMzLDggKzI5MzMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogCiAgICAg
SlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIAotICAg
IGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKSkK
LSAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIGlmIChVbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpKQorICAg
ICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7CiAgICAgbmVnSUMtPmdlbmVy
YXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG9wZXJhdGlvbkFyaXRoTmVnYXRl
KTsKIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpAQCAtMjk2MCw3ICsyOTYwLDcgQEAgQUxX
QVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9maWxlZFN1YihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdWIoZ2xv
YmFsT2JqZWN0LCBvcDEsIG9wMikpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBwcm9maWxlZFN1YihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFy
aXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBl
cyA9IHRydWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZFN1
YihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYg
YXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yOTg0LDcg
KzI5ODQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3Vi
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIHJldHVybiB1bnByb2ZpbGVk
U3ViKGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlKTsKIApAQCAtMzAwMiw3ICszMDAyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmoKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJh
dGlvblZhbHVlU3ViTm9PcHRpbWl6ZTsKLSAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpKQogICAgICAgICBhcml0aFByb2Zp
bGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIHN1YklDLT5nZW5lcmF0ZU91dE9mTGluZShjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0zMDI4LDcgKzMw
MjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJv
ZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJp
dGhQcm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIGF1
dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1p
emU7CkBAIC0zMDQ3LDcgKzMwNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKKyAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUo
KTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWRTdWIodm0s
IGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDM3ZTgzNjE1
ZDQ3Li41OTVhZWM0N2NkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTM4LDYgKzM4LDggQEAgdHlwZWRlZiBpbnQ2NF90IEVuY29kZWRKU1ZhbHVlOwog
ICAgIAogY2xhc3MgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKIGNsYXNzIEFycmF5UHJvZmlsZTsK
K2NsYXNzIFVuYXJ5QXJpdGhQcm9maWxlOworY2xhc3MgQmluYXJ5QXJpdGhQcm9maWxlOwogY2xh
c3MgQnV0dGVyZmx5OwogY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQ2FsbExpbmtJbmZvOwpAQCAt
NjQsNyArNjYsNiBAQCBjbGFzcyBXYXRjaHBvaW50U2V0Owogc3RydWN0IEJ5VmFsSW5mbzsKIHN0
cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci1zdHJ1Y3QgQXJpdGhQ
cm9maWxlOwogCiBleHRlcm4gIkMiIHsKIApAQCAtNzcsNyArNzgsNyBAQCB0eXBlZGVmIGNoYXIq
IFVudXNlZFB0cjsKICAgICBBOiBKU0FycmF5KgogICAgIEFhcDogQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZSoKICAgICBBcDogQXJyYXlQcm9maWxlKgotICAgIEFycDogQXJpdGhQcm9maWxlKgorICAg
IEFycDogQmluYXJ5QXJpdGhQcm9maWxlKgogICAgIEI6IEJ1dHRlcmZseSoKICAgICBCeTogQnlW
YWxJbmZvKgogICAgIEM6IEpTQ2VsbCoKQEAgLTI4Miw3ICsyODMsNyBAQCBpbnQzMl90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ2hlY2tJZkV4Y2VwdGlvbklzVW5jYXRjaGFibGVBbmROb3RpZnlQ
cm9maWxlcihWTQogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0
b20oSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTT2JqZWN0
KiBjb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSBXVEZfSU5U
RVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBX
VEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
QWRkUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmls
ZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkTm9PcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklU
QWRkSUMqKSBXVEZfSU5URVJOQUw7CkBAIC0yOTIsMTMgKzI5MywxMyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSgogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11
bE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUq
KSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRl
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCk7Ci1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSBvcGVyYW5kLCBBcml0aFByb2ZpbGUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKik7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVRO
ZWdJQyopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0
ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQs
IEpJVE5lZ0lDKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
U3ViKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxl
KikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKikgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1Yk9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViTm9PcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJ
QyopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3ViR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2Vu
ZXJhdG9yLmNwcAppbmRleCA3OTVjMjc1ODRjMC4uN2IxYThiODE5ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0
b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE1hdGhJQ0lu
bGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYg
aml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1bGF0aW5nIGlu
dDMyLgogICAgIE9ic2VydmVkVHlwZSBsaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsK
QEAgLTc4LDcgKzc4LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6
Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICByZXR1cm4gSklU
TWF0aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0OwogfQogCi1ib29sIEpJVFN1
YkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQ
YXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3Vs
ZEVtaXRQcm9maWxpbmcpCitib29sIEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIEND
YWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAgICAg
QVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQobV9zY3Jh
dGNoR1BSICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3ViR2VuZXJhdG9yLmgKaW5kZXggNTYxZjYzMzRhZTMuLjM0OTFhODNmZWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmgKQEAgLTUzLDggKzUz
LDggQEAgcHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEZQUihzY3JhdGNoRlBSKQogICAgIHsg
fQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVy
cyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJv
b2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwg
Y29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRN
YXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2Vu
ZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5l
cmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1
bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBC
aW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3Rh
dGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQpIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50
KFNuaXBwZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAppbmRleCA1MWVkNjUzZDk4YS4uMmZkZTEwN2E5ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xNDcsMzYgKzE0Nyw0
OSBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICNlbmRpZgogCiAgICAg
ewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIGFyaXRoUHJvZmlsZS5hcmdTYXdJbnQzMigp
OworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBVbmFyeUFyaXRoUHJvZmls
ZTo6b2JzZXJ2ZWRJbnRCaXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmFyZ09i
c2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFVuYXJ5
QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgYXJpdGhQcm9maWxlLmFyZ1Nhd051
bWJlcigpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBVbmFyeUFyaXRo
UHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJCaXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9m
aWxlLmFyZ09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJv
ZmlsZS5saHNTYXdJbnQzMigpOwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3SW50MzIoKTsK
LSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJpdGhQcm9maWxlOjpvYnNl
cnZlZEJpbmFyeUludEludCgpLmJpdHMoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQ
cm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUlu
dDMyKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5h
cnlJbnRJbnQoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dEludEJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBl
KCkuaXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2
ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9m
aWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmls
ZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051bWJlcigpOwogICAgICAgICBhcml0aFBy
b2ZpbGUucmhzU2F3SW50MzIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkg
PT0gQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgpLmJpdHMoKSk7Ci0gICAg
ICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgp
Lmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VS
VChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkucmhzT2JzZXJ2ZWRUeXBl
KCkuaXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09
IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKCkpOworICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAg
ICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigp
KTsKICAgICB9CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2Zp
bGUubGhzU2F3TnVtYmVyKCk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdOdW1iZXIoKTsK
LSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJpdGhQcm9maWxlOjpvYnNl
cnZlZEJpbmFyeU51bWJlck51bWJlcigpLmJpdHMoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQo
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51bWJlcigpLmxoc09ic2VydmVkVHlw
ZSgpLmlzT25seU51bWJlcigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6
Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVt
YmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFT
U0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwogICAg
IH0KICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNT
YXdJbnQzMigpOwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3TnVtYmVyKCk7Ci0gICAgICAg
IEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5h
cnlJbnROdW1iZXIoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmls
ZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQz
MigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5
SW50TnVtYmVyKCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVk
SW50TnVtYmVyQml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5saHNPYnNlcnZl
ZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNP
YnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQogfQogSUdOT1JFX1dBUk5JTkdT
X0VORApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcAppbmRleCA3OGFkZDAyMDU3NS4uNzEyNWJkNGY1MWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKIAogY29uc3QgaW50NjRfdCogTExJbnRPZmZzZXRz
RXh0cmFjdG9yOjpkdW1teSgpCiB7Ci0vLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2Zm
bGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNvZGUK
Ky8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNl
dF9leHRyYWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCiAvLyB0byBjcmVhdGUgYSB0YWJsZSBv
ZiBvZmZzZXRzLCBzaXplcywgYW5kIGEgaGVhZGVyIGlkZW50aWZ5aW5nIHdoYXQgY29tYmluYXRp
b24gb2YKIC8vIFBsYXRmb3JtLmggbWFjcm9zIHdlIGhhdmUgc2V0LiBXZSBpbmNsdWRlIGl0IGlu
c2lkZSBvZiBhIG1ldGhvZCBvbiBMTEludE9mZnNldHNFeHRyYWN0b3IKIC8vIGJlY2F1c2UgdGhl
IGZpZWxkcyB3aG9zZSBvZmZzZXRzIHdlJ3JlIGV4dHJhY3RpbmcgYXJlIG1vc3RseSBwcml2YXRl
LiBTbyB3ZSBtYWtlIHRoZWlyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYTg4MDBiMGJjYTkuLjU2MDM4N2EzYTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC0yNDEsMTMgKzI0MSwxNSBAQCBjb25zdCBJc0ludmFsaWRhdGVkID0gY29uc3Rl
eHByIElzSW52YWxpZGF0ZWQKICMgU2hhZG93Q2hpY2tlbiBkYXRhCiBjb25zdCBTaGFkb3dDaGlj
a2VuVGFpbE1hcmtlciA9IGNvbnN0ZXhwciBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OnRhaWxNYXJr
ZXJWYWx1ZQogCi0jIEFyaXRoUHJvZmlsZSBkYXRhCi1jb25zdCBBcml0aFByb2ZpbGVJbnQgPSBj
b25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRVbmFyeUludCgpLmJpdHMoKSkKLWNvbnN0
IEFyaXRoUHJvZmlsZU51bWJlciA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZFVu
YXJ5TnVtYmVyKCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlSW50SW50ID0gY29uc3RleHBy
IChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkuYml0cygpKQotY29uc3QgQXJp
dGhQcm9maWxlTnVtYmVySW50ID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmlu
YXJ5TnVtYmVySW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlSW50TnVtYmVyID0gY29u
c3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCkuYml0cygpKQot
Y29uc3QgQXJpdGhQcm9maWxlTnVtYmVyTnVtYmVyID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6
Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkuYml0cygpKQorIyBVbmFyeUFyaXRoUHJvZmls
ZSBkYXRhCitjb25zdCBBcml0aFByb2ZpbGVJbnQgPSBjb25zdGV4cHIgKFVuYXJ5QXJpdGhQcm9m
aWxlOjpvYnNlcnZlZEludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlciA9IGNvbnN0
ZXhwciAoVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cygpKQorCisjIEJpbmFy
eUFyaXRoUHJvZmlsZSBkYXRhCitjb25zdCBBcml0aFByb2ZpbGVJbnRJbnQgPSBjb25zdGV4cHIg
KEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRJbnRCaXRzKCkpCitjb25zdCBBcml0aFBy
b2ZpbGVOdW1iZXJJbnQgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRO
dW1iZXJJbnRCaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVJbnROdW1iZXIgPSBjb25zdGV4cHIg
KEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkpCitjb25zdCBBcml0
aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2Jz
ZXJ2ZWROdW1iZXJOdW1iZXJCaXRzKCkpCiAKICMgUG9pbnRlciBUYWdzCiBjb25zdCBCeXRlY29k
ZVB0clRhZyA9IGNvbnN0ZXhwciBCeXRlY29kZVB0clRhZwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBk
MTVkOTY3MjdjNS4uYzg4MGNmOTU5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xMDAwLDggKzEw
MDAsOCBAQCBlbmQpCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAKLSAgICBtYWNy
byBhcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgb3JpIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0
YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICBtYWNybyB1
cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRh
ZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAg
IGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTAxMCwxMiArMTAxMCwxMiBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdhdGUsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcgogICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3Jj
Tm90SW50CiAgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwogICAgIG5lZ2kg
dDIKLSAgICBhcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQorICAgIHVwZGF0ZUFyaXRoUHJv
ZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuIChJbnQzMlRhZywgdDIpCiAub3BOZWdh
dGVTcmNOb3RJbnQ6CiAgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4
b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgYXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikK
KyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlTnVtYmVyKQogICAgIHJldHVybih0
MSwgdDIpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBlbmQpCiBtYWNy
byBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9w
ZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIGFyaXRoUHJvZmlsZSh0eXBlKQot
ICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFBy
b2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQmluYXJ5QXJpdGhQcm9m
aWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KaW5kZXggOTVjMGY2OGU1YmUuLmQ5NDkxMDE1ZTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAt
OTgxLDIyICs5ODEsMjQgQEAgZW5kKQogCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRl
LCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CisKKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAgb3JoIHR5cGUs
IE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6
bV9iaXRzW3QxXQorICAgIGVuZAorCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDApCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAgICAgbWV0YWRhdGEodDEsIHQyKQotICAg
IGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6
Om1fYml0c1t0MV0sIHQyCiAgICAgYnFiIHQzLCBudW1iZXJUYWcsIC5vcE5lZ2F0ZU5vdEludAog
ICAgIGJ0aXogdDMsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKICAgICBuZWdpIHQzCiAgICAg
b3JxIG51bWJlclRhZywgdDMKLSAgICBvcmkgQXJpdGhQcm9maWxlSW50LCB0MgotICAgIHN0b3Jl
aSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6
bV9iaXRzW3QxXQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAg
cmV0dXJuKHQzKQogLm9wTmVnYXRlTm90SW50OgogICAgIGJ0cXogdDMsIG51bWJlclRhZywgLm9w
TmVnYXRlU2xvdwogICAgIHhvcnEgMHg4MDAwMDAwMDAwMDAwMDAwLCB0MwotICAgIG9yaSBBcml0
aFByb2ZpbGVOdW1iZXIsIHQyCi0gICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1f
YXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCisgICAgdXBkYXRlQXJpdGhQ
cm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKICAgICByZXR1cm4odDMpCiAKIC5vcE5lZ2F0ZVNs
b3c6CkBAIC0xMDEwLDcgKzEwMTIsNyBAQCBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkbwogICAgICAg
ICBtZXRhZGF0YSh0NSwgdDApCiAKICAgICAgICAgbWFjcm8gcHJvZmlsZSh0eXBlKQotICAgICAg
ICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUg
KyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1f
Yml0c1t0NV0KICAgICAgICAgZW5kCiAKICAgICAgICAgZ2V0KG1fcmhzLCB0MCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgppbmRleCBiMjNmNjViODY4My4uYjIyMjU2Nzgw
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKQEAgLTI5OSw3ICsy
OTksNyBAQCBjbGFzcyBTZXF1ZW5jZQogICAgICAgICAgICAgZW5kCiAgICAgICAgIH0KICAgICAg
ICAgcmVzdWx0ID0gcmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzRG91YmxlKHJlc3VsdCkKLSAg
ICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhyZXN1bHQsIFsic3Rv
cmViIiwgInN0b3JlaSIsICJzdG9yZXAiLCAic3RvcmVxIl0pCisgICAgICAgIHJlc3VsdCA9IHJp
c2NMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMocmVzdWx0LCBbInN0b3JlYiIsICJzdG9yZWgiLCAi
c3RvcmVpIiwgInN0b3JlcCIsICJzdG9yZXEiXSkKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2Vy
TWFsZm9ybWVkSW1tZWRpYXRlcyhyZXN1bHQsIDAuLjB4ZmYsIDAuLjB4MGZmKQogICAgICAgICBy
ZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMocmVzdWx0KQogICAgICAgICByZXN1
bHQgPSByaXNjTG93ZXJSZWdpc3RlclJldXNlKHJlc3VsdCkKQEAgLTQxOCw3ICs0MTgsNyBAQCBj
bGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAgICAgIHdoZW4gImFuZGkiLCAi
YW5kcCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJhbmRzIiwgImFuZCIsIG9wZXJhbmRz
KQotICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICB3aGVuICJvcmkiLCAib3JwIiwg
Im9yaCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJzIiwgIm9yciIsIG9wZXJhbmRz
KQogICAgICAgICB3aGVuICJvcmlzIgogICAgICAgICAgICAgZW1pdEFybUNvbXBhY3QoIm9ycnMi
LCAib3JycyIsIG9wZXJhbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02
NC5yYgppbmRleCAwOTY2ZWMzYmY2Yi4uZmNkMjc2ZjM2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBAIC0zOTMsNyArMzkzLDcgQEAgY2xhc3MgU2VxdWVu
Y2UKICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAgICAgICAgIHdoZW4gImxvYWRi
IiwgImxvYWRic2kiLCAibG9hZGJzcSIsICJzdG9yZWIiLCAvXmJiLywgL15idGIvLCAvXmNiLywg
L150Yi8KICAgICAgICAgICAgICAgICBzaXplID0gMQotICAgICAgICAgICAgd2hlbiAibG9hZGgi
LCAibG9hZGhzaSIsICJsb2FkaHNxIiwgInN0b3JlaCIKKyAgICAgICAgICAgIHdoZW4gImxvYWRo
IiwgImxvYWRoc2kiLCAibG9hZGhzcSIsICJvcmgiLCAic3RvcmVoIgogICAgICAgICAgICAgICAg
IHNpemUgPSAyCiAgICAgICAgICAgICB3aGVuICJsb2FkaSIsICJsb2FkaXMiLCAic3RvcmVpIiwg
ImFkZGkiLCAiYW5kaSIsICJsc2hpZnRpIiwgIm11bGkiLCAibmVnaSIsCiAgICAgICAgICAgICAg
ICAgIm5vdGkiLCAib3JpIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiLCAic3ViaSIsICJ4b3JpIiwg
L15iaS8sIC9eYnRpLywKQEAgLTQxOCw3ICs0MTgsNyBAQCBjbGFzcyBTZXF1ZW5jZQogICAgICAg
ICAgICAgZW5kCiAgICAgICAgIH0KIAotICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFj
ZWRJbW1lZGlhdGVzKHJlc3VsdCwgWyJzdG9yZWIiLCAic3RvcmVpIiwgInN0b3JlcCIsICJzdG9y
ZXEiXSkKKyAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhyZXN1
bHQsIFsic3RvcmViIiwgInN0b3JlaCIsICJzdG9yZWkiLCAic3RvcmVwIiwgInN0b3JlcSJdKQog
CiAgICAgICAgICMgVGhlIHJ1bGVzIGZvciB3aGljaCBpbW1lZGlhdGVzIGFyZSB2YWxpZCBmb3Ig
YW5kL29yL3hvciBpbnN0cnVjdGlvbnMgYXJlIGZhaXJseSBpbnZvbHZlZCwgc2VlIGh0dHBzOi8v
ZGluZnVlaHIuZ2l0aHViLmlvL2Jsb2cvZW5jb2Rpbmctb2YtaW1tZWRpYXRlLXZhbHVlcy1vbi1h
YXJjaDY0LwogICAgICAgICB2YWxpZExvZ2ljYWxJbW1lZGlhdGVzID0gW10KQEAgLTcxMSw2ICs3
MTEsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIi
LCBvcGVyYW5kcywgOnB0cikKICAgICAgICAgd2hlbiAib3JxIgogICAgICAgICAgICAgZW1pdEFS
TTY0VEFDKCJvcnIiLCBvcGVyYW5kcywgOnF1YWQpCisgICAgICAgIHdoZW4gIm9yaCIKKyAgICAg
ICAgICAgIGVtaXRBUk02NFRBQygib3JyIiwgb3BlcmFuZHMsIDp3b3JkKSAjIG5vdCA6aGFsZiBi
ZWNhdXNlIDE2LWJpdCByZWdpc3RlcnMgZG9uJ3QgZXhpc3Qgb24gQVJNLgogICAgICAgICB3aGVu
ICJ4b3JpIgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJlb3IiLCBvcGVyYW5kcywgOndvcmQp
CiAgICAgICAgIHdoZW4gInhvcnAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9jbG9vcC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Ns
b29wLnJiCmluZGV4IGYzM2Y3MDZkYjE4Li4zNzJlNmYxMzg4OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKQEAgLTE2MCw2ICsxNjAsNyBAQCBjbGFzcyBJbW1l
ZGlhdGUKIAogICAgICAgICBjYXNlIHR5cGUKICAgICAgICAgd2hlbiA6aW50ODsgICAgImludDhf
dCgje3ZhbHVlU3RyfSkiCisgICAgICAgIHdoZW4gOmludDE2OyAgICJpbnQxNl90KCN7dmFsdWVT
dHJ9KSIKICAgICAgICAgd2hlbiA6aW50MzI7ICAgImludDMyX3QoI3t2YWx1ZVN0cn0pIgogICAg
ICAgICB3aGVuIDppbnQ2NDsgICAiaW50NjRfdCgje3ZhbHVlU3RyfSkiCiAgICAgICAgIHdoZW4g
OmludHB0cjsgICJpbnRwdHJfdCgje3ZhbHVlU3RyfSkiCkBAIC0xODMsNiArMTg0LDcgQEAgY2xh
c3MgQWRkcmVzcwogICAgIGRlZiBjbFZhbHVlKHR5cGU9OmludHB0cikKICAgICAgICAgY2FzZSB0
eXBlCiAgICAgICAgIHdoZW4gOmludDg7ICAgICAgICAgaW50OE1lbVJlZgorICAgICAgICB3aGVu
IDppbnQxNjsgICAgICAgIGludDE2TWVtUmVmCiAgICAgICAgIHdoZW4gOmludDMyOyAgICAgICAg
aW50MzJNZW1SZWYKICAgICAgICAgd2hlbiA6aW50NjQ7ICAgICAgICBpbnQ2NE1lbVJlZgogICAg
ICAgICB3aGVuIDppbnRwdHI7ICAgICAgIGludHB0ck1lbVJlZgpAQCAtMzg2LDcgKzM4OCw3IEBA
IGVuZAogCiBkZWYgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCB0eXBlLCBvcGVyYXRvcikK
ICAgICByYWlzZSB1bmxlc3MgdHlwZSA9PSA6aW50cHRyIHx8IHR5cGUgPT0gOnVpbnRwdHIgfHwg
dHlwZSA9PSA6aW50MzIgfHwgdHlwZSA9PSA6dWludDMyIHx8IFwKLSAgICAgICAgdHlwZSA9PSA6
aW50NjQgfHwgdHlwZSA9PSA6dWludDY0IHx8IHR5cGUgPT0gOmRvdWJsZQorICAgICAgICB0eXBl
ID09IDppbnQ2NCB8fCB0eXBlID09IDp1aW50NjQgfHwgdHlwZSA9PSA6ZG91YmxlIHx8IHR5cGUg
PT0gOmludDE2CiAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCiAgICAgICAgIG9wMSA9IG9wZXJh
bmRzWzBdCiAgICAgICAgIG9wMiA9IG9wZXJhbmRzWzFdCkBAIC00MDEsNiArNDAzLDkgQEAgZGVm
IGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgdHlwZSwgb3BlcmF0b3IpCiAgICAgaWYgZHN0
LmlzX2E/IFJlZ2lzdGVySUQgYW5kICh0eXBlID09IDppbnQzMiBvciB0eXBlID09IDp1aW50MzIp
CiAgICAgICAgIHRydW5jYXRpb25IZWFkZXIgPSAiKHVpbnQzMl90KSgiCiAgICAgICAgIHRydW5j
YXRpb25Gb290ZXIgPSAiKSIKKyAgICBlbHNpZiBkc3QuaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKHR5
cGUgPT0gOmludDE2KQorICAgICAgICB0cnVuY2F0aW9uSGVhZGVyID0gIih1aW50MTZfdCkoIgor
ICAgICAgICB0cnVuY2F0aW9uRm9vdGVyID0gIikiCiAgICAgZWxzZQogICAgICAgICB0cnVuY2F0
aW9uSGVhZGVyID0gIiIKICAgICAgICAgdHJ1bmNhdGlvbkZvb3RlciA9ICIiCkBAIC01ODUsNiAr
NTkwLDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlv
bihvcGVyYW5kcywgOmludDY0LCAifCIpCiAgICAgICAgIHdoZW4gIm9ycCIKICAgICAgICAgICAg
IGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludHB0ciwgInwiKQorICAgICAgICB3aGVu
ICJvcmgiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQxNiwg
InwiKQogCiAgICAgICAgIHdoZW4gInhvcmkiCiAgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRp
b24ob3BlcmFuZHMsIDppbnQzMiwgIl4iKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCmluZGV4IDdhMjEyYjIwZTJkLi5hNDFlMDZmN2Q2YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25z
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5y
YgpAQCAtNDYsNiArNDYsNyBAQCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAib3JpIiwKICAg
ICAgIm9yZiIsCiAgICAgICJvcmQiLAorICAgICAib3JoIiwKICAgICAgInJzaGlmdGkiLAogICAg
ICAidXJzaGlmdGkiLAogICAgICAicnNoaWZ0cCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vbWlwcy5yYgppbmRleCBiNWYwN2IxNjhjMy4uNWE1MzJkODViNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgpAQCAtNTI3LDcgKzUyNyw3IEBAIGRlZiBt
aXBzTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKGxpc3QpCiAgICAgICAgICAgICAgICAgZW5kCiAg
ICAgICAgICAgICB3aGVuIC9eKGFkZGl8c3ViaSkvCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBub2RlLnJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QsIC0weDdm
ZmYuLjB4N2ZmZikKLSAgICAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIsICJvcmkiLCAib3Jw
IiwgInhvcmkiLCAieG9ycCIKKyAgICAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIsICJvcmki
LCAib3JwIiwgIm9yaCIsICJ4b3JpIiwgInhvcnAiCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBub2RlLnJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QsIDAuLjB4
ZmZmZikKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUK
QEAgLTg2MCw3ICs4NjAsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAg
ICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKICAgICAgICAgICAgIGVtaXRNSVBTQ29tcGFjdCgi
YW5kIiwgImFuZCIsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAg
ICB3aGVuICJvcmkiLCAib3JwIiwgIm9yaCIKICAgICAgICAgICAgIGVtaXRNSVBTQ29tcGFjdCgi
b3IiLCAib3JyIiwgb3BlcmFuZHMpCiAgICAgICAgIHdoZW4gIm9yaXMiCiAgICAgICAgICAgICBl
bWl0TUlQU0NvbXBhY3QoIm9yIiwgIm9ycnMiLCBvcGVyYW5kcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9yaXNjLnJiCmluZGV4IDc1ZDdhOThmMzNmLi4xZTY3MDRmYWI3MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiCkBAIC00NjIsNyArNDYyLDcg
QEAgZGVmIHJpc2NMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhsaXN0KQogICAgICAgICAgICAgcG9z
dEluc3RydWN0aW9ucyA9IFtdCiAgICAgICAgICAgICBhbm5vdGF0aW9uID0gbm9kZS5hbm5vdGF0
aW9uCiAgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCi0gICAgICAgICAgICB3aGVuICJhZGRp
IiwgImFkZGlzIiwgImFuZGkiLCAibHNoaWZ0aSIsICJtdWxpIiwgIm5lZ2kiLCAibm90aSIsICJv
cmkiLCAib3JpcyIsCisgICAgICAgICAgICB3aGVuICJhZGRpIiwgImFkZGlzIiwgImFuZGkiLCAi
bHNoaWZ0aSIsICJtdWxpIiwgIm5lZ2kiLCAibm90aSIsICJvcmkiLCAib3JoIiwgIm9yaXMiLAog
ICAgICAgICAgICAgICAgICJyc2hpZnRpIiwgInVyc2hpZnRpIiwgInN1YmkiLCAic3ViaXMiLCAi
eG9yaSIsIC9eYmkvLCAvXmJ0aS8sIC9eY2kvLCAvXnRpLwogICAgICAgICAgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgppbmRleCAxMTJlZWQ3YjVjMS4uNmRjYTA0NzFkOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKQEAgLTExMjMsNiArMTEyMyw4IEBA
IGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBoYW5kbGVYODZPcCgib3JwcyIsIDpmbG9h
dCkKICAgICAgICAgd2hlbiAib3JkIgogICAgICAgICAgICAgaGFuZGxlWDg2T3AoIm9ycGQiLCA6
ZG91YmxlKQorICAgICAgICB3aGVuICJvcmgiCisgICAgICAgICAgICBoYW5kbGVYODZPcCgib3Ij
e3g4NlN1ZmZpeCg6aGFsZil9IiwgOmhhbGYpCiAgICAgICAgIHdoZW4gInJzaGlmdGkiCiAgICAg
ICAgICAgICBoYW5kbGVYODZTaGlmdCgic2FyI3t4ODZTdWZmaXgoOmludCl9IiwgOmludCkKICAg
ICAgICAgd2hlbiAicnNoaWZ0cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUmVzdWx0VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRU
eXBlLmgKaW5kZXggOWIzZDBkNzRjOGQuLjU2MjJmMjg5Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaApAQCAtNDgsNiArNDgsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG51bUJpdHNOZWVkZWQgPSA3OwogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KChUeXBlQml0cyAmICgoMSA8PCBudW1CaXRzTmVlZGVkKSAtIDEp
KSA9PSBUeXBlQml0cywgIlRoaXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcy4iKTsKIAor
ICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlwZSgpCisgICAgICAgICAgICA6IFJl
c3VsdFR5cGUodW5rbm93blR5cGUoKSkKKyAgICAgICAgeworICAgICAgICB9CiAgICAgICAgIGNv
bnN0ZXhwciBleHBsaWNpdCBSZXN1bHRUeXBlKFR5cGUgdHlwZSkKICAgICAgICAgICAgIDogbV9i
aXRzKHR5cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDE1ZjFmZDg1ZTQ0Li5kYTlmYmNhNTJiNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CkBAIC00NzcsOCArNDc3LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3N0cmluZykK
ICNpZiBFTkFCTEUoSklUKQogc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlB
cml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmFsdWUgcmVzdWx0LCBKU1Zh
bHVlIG9wZXJhbmQpCiB7Ci0gICAgQXJpdGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEubV9h
cml0aFByb2ZpbGU7Ci0gICAgcHJvZmlsZS5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIFVuYXJ5
QXJpdGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEubV9hcml0aFByb2ZpbGU7CisgICAgcHJv
ZmlsZS5vYnNlcnZlQXJnKG9wZXJhbmQpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOdW1iZXIoKSB8
fCByZXN1bHQuaXNCaWdJbnQoKSk7CiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAg
ICAgIGlmICghcmVzdWx0LmlzSW50MzIoKSkgewpAQCAtNTM1LDcgKzUzNSw3IEBAIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpCiAjaWYgRU5BQkxFKERGR19KSVQpCiBzdGF0aWMgdm9p
ZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSByZXN1bHQs
IEpTVmFsdWUgbGVmdCwgSlNWYWx1ZSByaWdodCkKIHsKLSAgICBBcml0aFByb2ZpbGUmIHByb2Zp
bGUgPSAqY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJpdGhQ
cm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMocGMp
OwogCiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmlz
SW50MzIoKSkgewpAQCAtNTk2LDcgKzU5Niw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9h
ZGQpCiAgICAgSlNWYWx1ZSB2MSA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAg
ICAgSlNWYWx1ZSB2MiA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICBB
cml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpjb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBD
KHBjKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpjb2RlQmxvY2st
PmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKHBjKTsKICAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZUxI
U0FuZFJIUyh2MSwgdjIpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FkZChnbG9iYWxPYmpl
Y3QsIHYxLCB2Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383383</attachid>
            <date>2019-11-12 14:31:31 -0800</date>
            <delta_ts>2019-11-13 11:19:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>136015</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OWFkMjMxNDRmOWYuLmQxOTAzNmQ5YWIyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTExLTEyICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgbmV3IHRlc3QgY2F0Y2hlcyB0aGUgbWV0YWRhdGEgY29ycnVwdGlvbiB0
aGF0IHVzZWQgdG8gaGFwcGVuIGluIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2gu
CisKKyAgICAgICAgKiBzdHJlc3MvcmVncmVzcy01NzAyMDMzOC5qczogQWRkZWQuCisKIDIwMTkt
MTEtMDggIEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFRlbXBvcmFyaWx5IHNraXAgYW5vdGhlciBicm9rZW4gdGVzdCBvbiBNSVBTIGR1ZSB0byBPU1Ig
ZXhpdCB0byBMTEludApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVncmVzcy01NzAyMDMz
OC5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ3Jlc3MtNTcwMjAzMzguanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBiMDc0Y2Q1NDE3Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcmVncmVzcy01NzAyMDMzOC5qcwpAQCAtMCwwICsxLDE4IEBACisvL0Ag
cnVuRGVmYXVsdCgiLS1tYXhpbXVtT3B0aW1pemF0aW9uRGVsYXk9MCIpCitsZXQgY29kZSA9IGAK
K2xldCB6ID0ge307CitmdW5jdGlvbiBmb28oKSB7CisgIGNvbnN0IHggPSB1bmRlZmluZWQgKiBb
XTsKKyAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDAwMDsgaisrKSB7CisgICAgY29uc3QgeSA9IHgg
KiAwOworICAgIHpbe31dID0geTsKKyAgfQorfQorZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKysp
IHsKKyAgZm9vKCk7Cit9CitgOworCitmb3IgKGxldCBpPTA7IGk8MTAwOyBpKyspIHsKKyAgcnVu
U3RyaW5nKGNvZGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYmViNzNjZGFmNjYu
LmRkYzVkNzliMzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOTAgQEAK
KzIwMTktMTEtMTIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAg
ICAgICBTcGxpdCBBcml0aFByb2ZpbGUgaW50byBhIFVuYXJ5IGFuZCBhIEJpbmFyeSB2ZXJzaW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI4MzIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MjY2ODQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlaXRoIE1pbGxlci4KKworICAgICAgICBBcml0aFByb2ZpbGUgd2FzIGZvciBhIGxvbmcgdGlt
ZSBvbmx5IHVzZWQgZm9yIGFkZC9zdWIvbXVsL2RpdiwgYnV0IHJlY2VudGx5IGl0IHN0YXJ0ZWQg
YmVpbmcgdXNlZCBmb3IgbmVnYXRlLiBBbmQgaXQgd2lsbCBzb29uIGFsc28gaGF2ZSB0byBiZSB1
c2VkIGZvciBpbmMgYW5kIGRlYyBkdWUgdG8gQmlnSW50LgorICAgICAgICBTbyBpbiB0aGlzIHBh
dGNoIEkgbWFrZSBhIHNlcGFyYXRlIHZlcnNpb24gdGhhdCBvbmx5IGhhcyB0aGUgZGF0YSBmb3Ig
YSBzaW5nbGUgYXJndW1lbnQsIGFuZCB0aHVzIHRha2VzIGhhbGYgYXMgbXVjaCBtZW1vcnkuCisK
KyAgICAgICAgQWZ0ZXIgZGlzY3Vzc2luZyB0aGlzIGNoYW5nZSB3aXRoIFBoaWwgSSByZWFsaXpl
ZCB0aGF0IHRoZSBSZXN1bHRUeXBlKHMpIHRoYXQgd2VyZSB0YWtpbmcgc3BhY2UgaW4gQXJpdGhQ
cm9maWxlIGFyZSBub3QgbmVlZGVkOiB0aGV5IG5ldmVyIGNoYW5nZSBhbmQgYSBjb3B5IGlzIGFs
cmVhZHkgaW4gdGhlIGJ5dGVjb2RlIGluc3RydWN0aW9uIGl0c2VsZi4KKyAgICAgICAgUmVtb3Zp
bmcgdGhlbSBhbGxvd2VkIHNocmlua2luZyBib3RoIGtpbmRzIG9mIEFyaXRoUHJvZmlsZSB0byBm
aXQgaW4gMTYgYml0cyAoOSBhbmQgMTMgcmVzcGVjdGl2ZWx5KS4KKyAgICAgICAgSSBrZXB0IHRo
ZSB0d28ga2luZHMgc2VwYXJhdGUgYmVjYXVzZSB0aGV5IG1heSBzaHJpbmsgb3IgZ3JvdyBpbmRl
cGVuZGVudGx5IGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlcXVpcmVkIGFk
ZGluZyB0aGUgIm9yaCIgaW5zdHJ1Y3Rpb24gdG8gdGhlIG9mZmxpbmUgYXNzZW1ibGVyLCB0byBz
ZXQgYml0cyBpbiB0aGUgQXJpdGhQcm9maWxlLgorICAgICAgICBUaGlzIGluIHR1cm4gbW90aXZh
dGVkIHRoZSBhZGRpdGlvbiBvZiAic3RvcmVoIiwgYXMgb24gUklTQyBwbGF0Zm9ybXMgIm9yaCIg
b24gYSBtZW1vcnkgbG9jYXRpb24gaXMgYWN0dWFsbHkgbG9hZGggLT4gb3JoIC0+IHN0b3JlaC4K
KworICAgICAgICBGaW5hbGx5IGl0IHJlcXVpcmVkIGFkZGluZyBzdXBwb3J0IGZvciBvcjE2KFRy
dXN0ZWRJbW0zMiwgQWJzb2x1dGVBZGRyZXNzKSBpbiB0aGUgTWFjcm9Bc3NlbWJsZXIgZm9yIHRo
ZSBJQ3MuCisgICAgICAgIEluc3RlYWQgb2YgZGlyZWN0bHkgY2FsbGluZyBpdCAobGlrZSB3ZSB1
c2VkIHRvIGRvIHdpdGggb3IzMiksIEkgaW50cm9kdWNlZCBBcml0aFByb2ZpbGU6OmVtaXRVbmNv
bmRpdGlvbmFsU2V0LCBzbyB0aGF0IGlmIGVpdGhlciBBcml0aFByb2ZpbGUgZXZlciBjaGFuZ2Vz
IGluIHNpemUgYWdhaW4gd2UnbGwgaGF2ZSBmZXdlciBwbGFjZXMgdG8gY2hhbmdlLgorCisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6b3IxNik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6b3IxNik6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om9yMTYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6b3IxNik6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjpvcjE2KToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20u
Y3BwOgorICAgICAgICAoSlNDOjp0ZXN0T3JJbW1NZW0pOgorICAgICAgICAoSlNDOjpydW4pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkFyaXRo
UHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6
OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0RG91YmxlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxk
RW1pdFNldE5vbk51bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0
ZmllbGRUeXBlPjo6ZW1pdFNldE5vbk51bWVyaWMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxkRW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNvbmRp
dGlvbmFsU2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6
ZGlkT2JzZXJ2ZU5vbkludDMyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpk
aWRPYnNlcnZlRG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRP
YnNlcnZlTm9uTmVnWmVyb0RvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTo6ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFBy
b2ZpbGU6OmRpZE9ic2VydmVOb25OdW1lcmljIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQ
cm9maWxlOjpkaWRPYnNlcnZlQmlnSW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9m
aWxlOjpkaWRPYnNlcnZlSW50MzJPdmVyZmxvdyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRo
UHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAoSlNDOjpB
cml0aFByb2ZpbGU6OnNldE9ic2VydmVkTm9uTmVnWmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6
OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWROZWdaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6
QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5vbk51bWVyaWMpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU6OnNldE9ic2VydmVkQmlnSW50KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxl
OjpzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3cpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6
OnNldE9ic2VydmVkSW50NTJPdmVyZmxvdyk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6
b2JzZXJ2ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6YWRkcmVzc09mQml0
cyBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6Yml0cyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6QXJpdGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJp
dGhQcm9maWxlOjpoYXNCaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpz
ZXRCaXQpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6VW5hcnlBcml0aFByb2Zp
bGUpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKToK
KyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cyk6Cisg
ICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdPYnNlcnZlZFR5cGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6c2V0QXJnT2JzZXJ2ZWRUeXBlKToKKyAg
ICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nhd0ludDMyKToKKyAgICAgICAgKEpT
Qzo6VW5hcnlBcml0aFByb2ZpbGU6OmFyZ1Nhd051bWJlcik6CisgICAgICAgIChKU0M6OlVuYXJ5
QXJpdGhQcm9maWxlOjphcmdTYXdOb25OdW1iZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRo
UHJvZmlsZTo6b2JzZXJ2ZUFyZyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjpp
c09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpC
aW5hcnlBcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9i
c2VydmVkSW50SW50Qml0cyk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2Jz
ZXJ2ZWROdW1iZXJJbnRCaXRzKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpv
YnNlcnZlZEludE51bWJlckJpdHMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6
Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cyk6CisgICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJv
ZmlsZTo6c2V0TGhzT2JzZXJ2ZWRUeXBlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9m
aWxlOjpzZXRSaHNPYnNlcnZlZFR5cGUpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2Zp
bGU6Om9ic2VydmVMSFMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2Vy
dmVMSFNBbmRSSFMpOgorICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6OmlzT2JzZXJ2
ZWRUeXBlRW1wdHkpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFk
ZEpJVEFkZElDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRKSVRNdWxJQyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklUU3ViSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmFkZEpJVE5lZ0lDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFBy
b2ZpbGVGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmFyeUFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJp
bmFyeUFyaXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmFyeUFy
aXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTcGVj
aWFsQXJpdGhGYXN0Q2FzZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElDKToKKyAgICAgICAgKiBieXRlY29kZS9GaXRz
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6
CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRW
YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6
OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmg6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6Ok1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
VW5hcnlPcCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlVu
YXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bWFrZURpdlNhZmUpOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1Yik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZUFkZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZVN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU11bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlNYXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVWYWx1ZU5lZ2F0ZSk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBZGRHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SklU
QWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUQWRkR2Vu
ZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2FkZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJQ0Zhc3QpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rpdik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
c3ViKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklURGl2
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVERpdkdlbmVyYXRvcjo6SklURGl2R2VuZXJh
dG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
cGllZEFyaXRoUHJvZmlsZSk6CisgICAgICAgICogaml0L0pJVE1hdGhJQy5oOgorICAgICAgICAo
SlNDOjpKSVRNYXRoSUM6OkpJVE1hdGhJQyk6CisgICAgICAgIChKU0M6OkpJVE1hdGhJQzo6Z2Vu
ZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OmFyaXRoUHJvZmlsZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkpJVEJpbmFyeU1hdGhJQzo6SklUQmluYXJ5TWF0aElDKToKKyAg
ICAgICAgKEpTQzo6SklUVW5hcnlNYXRoSUM6OkpJVFVuYXJ5TWF0aElDKToKKyAgICAgICAgKiBq
aXQvSklUTXVsR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUTXVsR2VuZXJhdG9yOjpn
ZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5oOgorICAgICAgICAqIGpp
dC9KSVROZWdHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVROZWdHZW5lcmF0b3I6Omdl
bmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAg
ICAgICogaml0L0pJVFN1YkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVy
YXRvcjo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVy
Zm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybS5yYjoKKyAgICAgICAgKiBvZmZs
aW5lYXNtL2FybTY0LnJiOgorICAgICAgICAqIG9mZmxpbmVhc20vY2xvb3AucmI6CisgICAgICAg
ICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6CisgICAgICAgICogb2ZmbGluZWFzbS9taXBz
LnJiOgorICAgICAgICAqIG9mZmxpbmVhc20vcmlzYy5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNt
L3g4Ni5yYjoKKyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAgICAgICAoSlNDOjpS
ZXN1bHRUeXBlOjpSZXN1bHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcCk6
CisgICAgICAgIChKU0M6OnVwZGF0ZUFyaXRoUHJvZmlsZUZvckJpbmFyeUFyaXRoT3ApOgorICAg
ICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTktMTEtMTEgIFR1b21hcyBLYXJra2Fp
bmVuICA8dHVvbWFzLndlYmtpdEBhcHBsZS5jb20+CiAKICAgICAgICAgVHlwbyBpbiBhc3NlcnRp
b24gaW4gdmFsaWRhdGVDUFMgaW4gREZHVmFsaWRhdGUuY3BwICgiVW5leGVjcHRlZCIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCmluZGV4IGFjZjZjNGNiNWFmLi4yMDY5MGU0MTQyNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTYxNSw2
ICs2MTUsMjAgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5uZWc8NjQ+KGRlc3QsIHNy
Yyk7CiAgICAgfQogCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgTG9naWNhbEltbWVkaWF0ZSBsb2dpY2FsSW1t
ID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlMzIoaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAo
bG9naWNhbEltbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIGxvYWQxNihhZGRyZXNzLm1fcHRy
LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIub3JyPDMyPihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVy
LCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAgIHN0b3JlMTYoZGF0YVRlbXBSZWdpc3RlciwgYWRk
cmVzcy5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMTYoYWRkcmVz
cy5tX3B0ciwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwor
ICAgICAgICAgICAgb3IzMihpbW0sIG1lbW9yeVRlbXBSZWdpc3RlciwgZ2V0Q2FjaGVkRGF0YVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIHN0b3JlMTYoZGF0YVRl
bXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lk
IG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG9y
MzIoZGVzdCwgc3JjLCBkZXN0KTsKQEAgLTEyMzgsNiArMTI1MiwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBjYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXIoKS5pbnZhbGlkYXRlKCk7CiAgICAgfQog
CisgICAgdm9pZCBsb2FkMTYoY29uc3Qgdm9pZCogYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbG9hZDwxNj4oYWRkcmVzcywgZGVzdCk7CisgICAgfQorCiAgICAgdm9p
ZCBsb2FkMTZVbmFsaWduZWQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIGxvYWQxNihhZGRyZXNzLCBkZXN0KTsKQEAgLTE1NDYsNiArMTU2
NSwyMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmgoc3JjLCBhZGRyZXNzLmJh
c2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTE2KFJlZ2lz
dGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgc3RvcmU8MTY+
KHNyYywgYWRkcmVzcyk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZTE2KFRydXN0ZWRJbW0zMiBp
bW0sIGNvbnN0IHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoIWltbS5tX3ZhbHVl
KSB7CisgICAgICAgICAgICBzdG9yZTE2KEFSTTY0UmVnaXN0ZXJzOjp6ciwgYWRkcmVzcyk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtb3ZlVG9DYWNoZWRSZWco
aW1tLCBkYXRhTWVtb3J5VGVtcFJlZ2lzdGVyKCkpOworICAgICAgICBzdG9yZTE2KGRhdGFUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmVaZXJvMTYoSW1wbGlj
aXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTE2KEFSTTY0UmVnaXN0ZXJz
Ojp6ciwgYWRkcmVzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDk1Y2Q3M2YyMzlkLi40ZWVjNzZhNjNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTXY3LmgKQEAgLTM2NSw2ICszNjUsMjQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIub3JyKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQorCisgICAgdm9pZCBvcjE2
KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAg
QVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVk
SW1tKGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpIHsKKyAgICAg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CisgICAgICAgICAgICBsb2FkMTYoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGF0YVRlbXBSZWdpc3Rlciwg
ZGF0YVRlbXBSZWdpc3RlciwgYXJtSW1tKTsKKyAgICAgICAgICAgIHN0b3JlMTYoZGF0YVRlbXBS
ZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOworICAgICAgICAgICAgbG9hZDE2KGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVn
aXN0ZXIpOworICAgICAgICAgICAgbW92ZShpbW0sIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIub3JyKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHN0b3Jl
MTYoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KKyAg
ICB9CiAgICAgCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBBYnNvbHV0ZUFkZHJlc3Mg
ZGVzdCkKICAgICB7CkBAIC03ODIsNiArODAwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGxhYmVsOwogICAgIH0KIAorICAgIHZvaWQgbG9hZDE2KGNvbnN0IHZvaWQqIGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
KSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkcmgoZGVzdCwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOwor
ICAgIH0KKwogICAgIHZvaWQgbG9hZDE2KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5sZHJoKGRlc3QsIG1ha2VCYXNlSW5kZXhC
YXNlKGFkZHJlc3MpLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKQEAgLTg4OSw2ICs5
MTMsMTggQEAgcHVibGljOgogICAgICAgICBzdG9yZTE2KHNyYywgc2V0dXBBcm1BZGRyZXNzKGFk
ZHJlc3MpKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0
IHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVz
cyksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5zdHJoKHNyYywg
YWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTIoMCkpOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcmUxNihUcnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAg
ICAgICBzdG9yZTE2KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOworICAgIH0KKwogICAgIC8v
IFBvc3NpYmx5IGNsb2JiZXJzIHNyYywgYnV0IG5vdCBvbiB0aGlzIGFyY2hpdGVjdHVyZS4KICAg
ICB2b2lkIG1vdmVEb3VibGVUb0ludHMoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBkMGNkZjAyZTQyNS4uMGUx
OTFhMWJiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtNDc1LDYgKzQ3NSwyNSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLnN1YnUoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywgc3JjKTsKICAgICB9
CiAKKyAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3Qp
CisgICAgeworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fZml4ZWRXaWR0aCkgeworICAgICAgICAg
ICAgLy8gVE9ETzogU3dhcCBkYXRhVGVtcFJlZ2lzdGVyIGFuZCBpbW1UZW1wUmVnaXN0ZXIgdXNh
Z2UKKyAgICAgICAgICAgIGxvYWQxNihkZXN0Lm1fcHRyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAg
ICAgICAgICAgb3IzMihpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBzdG9yZTE2
KGltbVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICB1aW50cHRyX3QgYWRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGRlc3QubV9w
dHIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubHVpKGFkZHJUZW1wUmVnaXN0ZXIsIChhZHIg
KyAweDgwMDApID4+IDE2KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx3KGltbVRlbXBSZWdp
c3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRyICYgMHhmZmZmKTsKKyAgICAgICAgICAgIG9yMTYo
aW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coaW1tVGVt
cFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZHIgJiAweGZmZmYpOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vckluc24oZGVzdCwgZGVzdCwgc3JjKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaApp
bmRleCA0YWZlODE3YzM2Yi4uYjgxYzIyYmY4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKQEAgLTk5LDYgKzk5LDExIEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ybShyZWcsIGFkZHJlc3Mu
bV9wdHIpOwogICAgIH0KKworICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0
ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9yd19pbShpbW0u
bV92YWx1ZSwgYWRkcmVzcy5tX3B0cik7CisgICAgfQogICAgIAogICAgIHZvaWQgc3ViMzIoVHJ1
c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CmluZGV4IGI5OTZjYTQ5ZDM5Li5kZDE0YTZkNDk1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtNDcsNiAr
NDcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5j
aDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBZGQzMjsKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IzMjsKKyAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6b3IxNjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6c3ViMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQ4OwogICAg
IHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkMzI7CkBAIC04OSw2ICs5MCwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIG9yMzIocmVnLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSk7
CiAgICAgfQogCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9w
dHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG9yMTYoaW1tLCBBZGRyZXNzKHNjcmF0
Y2hSZWdpc3RlcigpKSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1t
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCA0MTk3Y2E2YTk5NS4uNTliYmMy
NzdmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1h
c20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3Bw
CkBAIC0xMTA0LDYgKzExMDQsMzEgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVz
KCkKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKIAordm9pZCB0ZXN0T3JJbW1NZW0o
KQoreworICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgbm90IHRlc3QgdGhhdCB0aGUgb3IgZG9lcyBu
b3QgdG91Y2ggYmV5b25kIGl0cyB3aWR0aC4KKyAgICAvLyBJIGFtIG5vdCBzdXJlIGhvdyB0byBk
byBzdWNoIGEgdGVzdCB3aXRob3V0IGEgbG90IG9mIGNvbXBsZXhpdHkgKHJ1bm5pbmcgbXVsdGlw
bGUgdGhyZWFkcywgd2l0aCBhIHJhY2Ugb24gdGhlIGhpZ2ggYml0cyBvZiB0aGUgbWVtb3J5IGxv
Y2F0aW9uKS4KKyAgICB1aW50NjRfdCBtZW1vcnlMb2NhdGlvbiA9IDB4MTIzNDEyMzQ7CisgICAg
YXV0byBvcjMyID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDQyKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJm1lbW9yeUxv
Y2F0aW9uKSk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGpp
dC5yZXQoKTsKKyAgICB9KTsKKyAgICBpbnZva2U8dm9pZD4ob3IzMik7CisgICAgQ0hFQ0tfRVEo
bWVtb3J5TG9jYXRpb24sIDB4MTIzNDEyMzQgfCA0Mik7CisKKyAgICBtZW1vcnlMb2NhdGlvbiA9
IDB4MTIzNDEyMzQ7CisgICAgYXV0byBvcjE2ID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYg
aml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisgICAgICAgIGppdC5v
cjE2KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoJm1lbW9yeUxvY2F0aW9uKSk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3Vl
KGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9KTsKKyAgICBpbnZva2U8dm9pZD4ob3Ix
Nik7CisgICAgQ0hFQ0tfRVEobWVtb3J5TG9jYXRpb24sIDB4MTIzNDEyMzQgfCA0Mik7Cit9CisK
IHZvaWQgdGVzdEJ5dGVTd2FwKCkKIHsKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCkBA
IC0xMzYwLDYgKzEzODUsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAKICAgICBS
VU4odGVzdENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KCkpOwogCisgICAgUlVOKHRlc3RPcklt
bU1lbSgpKTsKKwogICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHVzYWdlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKaW5k
ZXggOTk5OTMzYjhjMGUuLmFhZWQzZjc3YmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcApAQCAtMzIsNyArMzIsOCBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRPYnNlcnZl
UmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNN
b2RlIG1vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJv
ZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwg
SlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQogewogICAgIGlmICghc2hv
dWxkRW1pdFNldERvdWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpICYmICFzaG91
bGRFbWl0U2V0QmlnSW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU4LDQxICs1OSw1OCBAQCB2
b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
VmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZwogICAgIGRvbmUubGluaygmaml0KTsKIH0KIAotYm9vbCBB
cml0aFByb2ZpbGU6OnNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdAordGVtcGxhdGU8dHlwZW5h
bWUgQml0ZmllbGRUeXBlPgorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6c2hvdWxk
RW1pdFNldERvdWJsZSgpIGNvbnN0CiB7Ci0gICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmls
ZTo6SW50MzJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyB8IEFyaXRoUHJv
ZmlsZTo6TmVnWmVyb0RvdWJsZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZTsKKyAg
ICBCaXRmaWVsZFR5cGUgbWFzayA9IEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTmVn
WmVyb0RvdWJsZSB8IE5vbk5lZ1plcm9Eb3VibGU7CiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNr
KSAhPSBtYXNrOwogfQogCi12b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdFNldERvdWJsZShDQ2FsbEhl
bHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK3ZvaWQg
QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJiBq
aXQpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEVtaXRTZXREb3VibGUoKSkKLSAgICAgICAgaml0
Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpJbnQzMk92ZXJm
bG93IHwgQXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93IHwgQXJpdGhQcm9maWxlOjpOZWdaZXJv
RG91YmxlIHwgQXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlKSwgQ0NhbGxIZWxwZXJzOjpB
YnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGVtaXRVbmNvbmRpdGlv
bmFsU2V0KGppdCwgSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOZWdaZXJvRG91Ymxl
IHwgTm9uTmVnWmVyb0RvdWJsZSk7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0
U2V0Tm9uTnVtZXJpYygpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citi
b29sIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygp
IGNvbnN0CiB7Ci0gICAgdWludDMyX3QgbWFzayA9IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsK
KyAgICBCaXRmaWVsZFR5cGUgbWFzayA9IEFyaXRoUHJvZmlsZTo6Tm9uTnVtZXJpYzsKICAgICBy
ZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpz
aG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlw
ZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25OdW1lcmljKEND
YWxsSGVscGVycyYgaml0KSBjb25zdAogewotICAgIHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2Zp
bGU6OkJpZ0ludDsKLSAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CisgICAgaWYg
KHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkpCisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0
KGppdCwgTm9uTnVtZXJpYyk7CiB9CiAKLXZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0Tm9uTnVt
ZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxk
VHlwZT4KK2Jvb2wgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXRCaWdJ
bnQoKSBjb25zdAogewotICAgIGlmIChzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQotICAgICAg
ICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5vbk51
bWVyaWMpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsK
KyAgICBCaXRmaWVsZFR5cGUgbWFzayA9IEFyaXRoUHJvZmlsZTo6QmlnSW50OworICAgIHJldHVy
biAobV9iaXRzICYgbWFzaykgIT0gbWFzazsKIH0KIAotdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRT
ZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRm
aWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+OjplbWl0U2V0QmlnSW50
KENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChzaG91bGRFbWl0U2V0QmlnSW50
KCkpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJv
ZmlsZTo6QmlnSW50KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzc09mQml0
cygpKSk7CisgICAgICAgIGVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgQmlnSW50KTsKIH0KKwor
dGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgordm9pZCBBcml0aFByb2ZpbGU8Qml0Zmll
bGRUeXBlPjo6ZW1pdFVuY29uZGl0aW9uYWxTZXQoQ0NhbGxIZWxwZXJzJiBqaXQsIEJpdGZpZWxk
VHlwZSBtYXNrKSBjb25zdAoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEJpdGZp
ZWxkVHlwZSwgdWludDE2X3Q+Ojp2YWx1ZSk7CisgICAgaml0Lm9yMTYoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIobWFzayksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NP
ZkJpdHMoKSkpOworfQorCisvLyBHZW5lcmF0ZSB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBm
dW5jdGlvbnMgYWJvdmUgZm9yIFVuYXJ5QXJpdGhQcm9maWxlL0JpbmFyeUFyaXRoUHJvZmlsZQor
Ly8gSWYgY2hhbmdpbmcgdGhlIHNpemUgb2YgZWl0aGVyLCBhZGQgdGhlIGNvcnJlc3BvbmRpbmcg
bGluZXMgaGVyZS4KK3RlbXBsYXRlIGNsYXNzIEFyaXRoUHJvZmlsZTx1aW50MTZfdD47CiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkBAIC0xMDEsNyArMTE5LDgg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi12b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQXJpdGhQcm9maWxlJiBwcm9maWxl
KQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgQXJpdGhQcm9maWxlPFQ+JiBwcm9maWxlKQogewogICAgIGNvbnN0IGNoYXIq
IHNlcGFyYXRvciA9ICIiOwogCkBAIC0xMzUsMTkgKzE1NCwzMCBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgQXJpdGhQcm9maWxlJiBwcm9maWxlKQogICAgICAg
ICAgICAgc2VwYXJhdG9yID0gInwiOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChwcm9maWxl
LnRvb2tTcGVjaWFsRmFzdFBhdGgoKSkKLSAgICAgICAgb3V0LnByaW50KHNlcGFyYXRvciwgIlRv
b2sgc3BlY2lhbCBmYXN0IHBhdGguIik7CiAgICAgb3V0LnByaW50KCI+Iik7Cit9CisKK3ZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSYg
cHJvZmlsZSkKK3sKKyAgICBwcmludEludGVybmFsKG91dCwgc3RhdGljX2Nhc3Q8QXJpdGhQcm9m
aWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4+KHByb2ZpbGUpKTsKKworICAgIG91dC5wcmludCgi
IEFyZyBPYnNlcnZlZFR5cGU6PCIpOworICAgIG91dC5wcmludChwcm9maWxlLmFyZ09ic2VydmVk
VHlwZSgpKTsKKyAgICBvdXQucHJpbnQoIj4iKTsKK30KKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSkKK3sKKyAg
ICBwcmludEludGVybmFsKG91dCwgc3RhdGljX2Nhc3Q8QXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQ
cm9maWxlQmFzZT4+KHByb2ZpbGUpKTsKKworICAgIGlmIChwcm9maWxlLnRvb2tTcGVjaWFsRmFz
dFBhdGgoKSkKKyAgICAgICAgb3V0LnByaW50KCIgVG9vayBzcGVjaWFsIGZhc3QgcGF0aC4iKTsK
IAogICAgIG91dC5wcmludCgiIExIUyBPYnNlcnZlZFR5cGU6PCIpOwogICAgIG91dC5wcmludChw
cm9maWxlLmxoc09ic2VydmVkVHlwZSgpKTsKICAgICBvdXQucHJpbnQoIj4gUkhTIE9ic2VydmVk
VHlwZTo8Iik7CiAgICAgb3V0LnByaW50KHByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkpOwogICAg
IG91dC5wcmludCgiPiIpOwotCi0gICAgb3V0LnByaW50KCIgTEhTIFJlc3VsdFR5cGU6PCIsIFJh
d1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHByb2Zp
bGUubGhzUmVzdWx0VHlwZSgpLmJpdHMoKSkpKSk7Ci0gICAgb3V0LnByaW50KCI+IFJIUyBSZXN1
bHRUeXBlOjwiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWlu
dHB0cl90Pihwcm9maWxlLnJoc1Jlc3VsdFR5cGUoKS5iaXRzKCkpKSkpOwotICAgIG91dC5wcmlu
dCgiPiIpOwogfQogCiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
SlNDOjpPYnNlcnZlZFR5cGUmIG9ic2VydmVkVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAppbmRleCBmY2M0ZTI4MThiZS4uMDY4OWZhYTUyMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKQEAg
LTY2LDExOSArNjYsMjE5IEBAIHByaXZhdGU6CiAgICAgdWludDhfdCBtX2JpdHMgeyAwIH07CiB9
OwogCi1zdHJ1Y3QgQXJpdGhQcm9maWxlIHsKLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBudW1iZXJPZkZsYWdCaXRzID0gNjsKLSAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IHJoc1Jlc3VsdFR5cGVTaGlmdCA9IG51bWJlck9mRmxhZ0JpdHM7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCBsaHNSZXN1bHRUeXBlU2hpZnQgPSByaHNSZXN1bHRUeXBlU2hp
ZnQgKyBSZXN1bHRUeXBlOjpudW1CaXRzTmVlZGVkOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSBsaHNSZXN1bHRUeXBlU2hpZnQgKyBSZXN1bHRU
eXBlOjpudW1CaXRzTmVlZGVkOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbGhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVt
Qml0c05lZWRlZDsKLQotICAgIHN0YXRpY19hc3NlcnQoT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVl
ZGVkID09IDMsICJXZSBtYWtlIGEgaGFyZCBhc3N1bXB0aW9uIGFib3V0IHRoYXQgaGVyZS4iKTsK
LSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGNsZWFyUmhzT2JzZXJ2ZWRUeXBlQml0TWFz
ayA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih+KCgxIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KSB8
ICgxIDw8IChyaHNPYnNlcnZlZFR5cGVTaGlmdCArIDEpKSB8ICgxIDw8IChyaHNPYnNlcnZlZFR5
cGVTaGlmdCArIDIpKSkpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY2xlYXJMaHNP
YnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KH4oKDEgPDwgbGhzT2Jz
ZXJ2ZWRUeXBlU2hpZnQpIHwgKDEgPDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgMSkpIHwgKDEg
PDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgMikpKSk7Ci0KLSAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQzMl90IHJlc3VsdFR5cGVNYXNrID0gKDEgPDwgUmVzdWx0VHlwZTo6bnVtQml0c05lZWRl
ZCkgLSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgb2JzZXJ2ZWRUeXBlTWFzayA9
ICgxIDw8IE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOwordGVtcGxhdGUgPHR5cGVu
YW1lIEJpdGZpZWxkVHlwZT4KK2NsYXNzIEFyaXRoUHJvZmlsZSB7CitwdWJsaWM6CisgICAgZW51
bSBPYnNlcnZlZFJlc3VsdHMgOiBCaXRmaWVsZFR5cGUgeworICAgICAgICBOb25OZWdaZXJvRG91
YmxlID0gMSA8PCAwLAorICAgICAgICBOZWdaZXJvRG91YmxlICAgID0gMSA8PCAxLAorICAgICAg
ICBOb25OdW1lcmljICAgICAgID0gMSA8PCAyLAorICAgICAgICBJbnQzMk92ZXJmbG93ICAgID0g
MSA8PCAzLAorICAgICAgICBJbnQ1Mk92ZXJmbG93ICAgID0gMSA8PCA0LAorICAgICAgICBCaWdJ
bnQgICAgICAgICAgID0gMSA8PCA1LAorICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MzJfdCBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkID0gNjsKIAotICAgIGVudW0gY2xhc3Mg
Q29uc3RhbnRUYWcgeyBDb25zdGFudCB9OworICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkg
Y29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSB8
IE5vbk51bWVyaWMgfCBCaWdJbnQpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlRG91YmxlKCkgY29u
c3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSk7IH0K
KyAgICBib29sIGRpZE9ic2VydmVOb25OZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFz
Qml0cyhOb25OZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5lZ1plcm9Eb3Vi
bGUoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKE5lZ1plcm9Eb3VibGUpOyB9CisgICAgYm9vbCBk
aWRPYnNlcnZlTm9uTnVtZXJpYygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTnVtZXJpYyk7
IH0KKyAgICBib29sIGRpZE9ic2VydmVCaWdJbnQoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEJp
Z0ludCk7IH0KKyAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgY29uc3QgeyByZXR1
cm4gaGFzQml0cyhJbnQzMk92ZXJmbG93KTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3Zl
cmZsb3coKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEludDUyT3ZlcmZsb3cpOyB9CiAKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEg
PDwgKGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6
bnVtQml0c05lZWRlZCkgPD0gKHNpemVvZih1aW50MzJfdCkgKiA4KSAtIDEsICJTaG91bGQgZml0
IGluIGEgdWludDMyX3QuIik7Ci0gICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0UGF0aEJp
dCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91bGQgbm90
IGludGVyc2VjdC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCAmIGNs
ZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVyc2VjdC4i
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCA+IH5jbGVhckxoc09ic2Vy
dmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFuZCBzcGVj
aWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKKyAgICB2b2lkIHNldE9i
c2VydmVkTm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5vbk5lZ1plcm9Eb3VibGUpOyB9Cisg
ICAgdm9pZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChOZWdaZXJvRG91Ymxl
KTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoTm9uTnVtZXJp
Yyk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50KCkgeyBzZXRCaXQoQmlnSW50KTsgfQor
ICAgIHZvaWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQoSW50MzJPdmVyZmxv
dyk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkSW50NTJPdmVyZmxvdygpIHsgc2V0Qml0KEludDUy
T3ZlcmZsb3cpOyB9CiAKLSAgICBBcml0aFByb2ZpbGUoUmVzdWx0VHlwZSBhcmcpCi0gICAgICAg
IDogQXJpdGhQcm9maWxlKENvbnN0YW50VGFnOjpDb25zdGFudCwgYXJnKQorICAgIHZvaWQgb2Jz
ZXJ2ZVJlc3VsdChKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGxoc1Jlc3Vs
dFR5cGUoKS5iaXRzKCkgPT0gYXJnLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVChsaHNPYnNlcnZl
ZFR5cGUoKS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQocmhzT2JzZXJ2ZWRUeXBlKCkuaXNF
bXB0eSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIG1fYml0cyB8
PSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWda
ZXJvRG91YmxlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh2
YWx1ZSAmJiB2YWx1ZS5pc0JpZ0ludCgpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gQmlnSW50
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1fYml0cyB8PSBOb25O
dW1lcmljOwogICAgIH0KIAotICAgIEFyaXRoUHJvZmlsZShSZXN1bHRUeXBlIGxocywgUmVzdWx0
VHlwZSByaHMpCi0gICAgICAgIDogQXJpdGhQcm9maWxlKENvbnN0YW50VGFnOjpDb25zdGFudCwg
bGhzLCByaHMpCisgICAgY29uc3Qgdm9pZCogYWRkcmVzc09mQml0cygpIGNvbnN0IHsgcmV0dXJu
ICZtX2JpdHM7IH0KKworI2lmIEVOQUJMRShKSVQpCisgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxv
dyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYg
aXQgc2VlcyBhCisgICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWVyaWMgaWYgaXQgc2VlcyBhIG5v
bi1udW1lcmljLgorICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNW
YWx1ZVJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKKworICAgIC8v
IFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8
IE5lZ1plcm9Eb3VibGUpLgorICAgIGJvb2wgc2hvdWxkRW1pdFNldERvdWJsZSgpIGNvbnN0Owor
ICAgIHZvaWQgZW1pdFNldERvdWJsZShDQ2FsbEhlbHBlcnMmKSBjb25zdDsKKworICAgIC8vIFNl
dHMgTm9uTnVtZXJpYworICAgIHZvaWQgZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJikg
Y29uc3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpIGNvbnN0OworCisgICAg
Ly8gU2V0cyBCaWdJbnQKKyAgICB2b2lkIGVtaXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29u
c3Q7CisgICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3Q7CisKKyAgICB2b2lkIGVt
aXRVbmNvbmRpdGlvbmFsU2V0KENDYWxsSGVscGVycyYsIEJpdGZpZWxkVHlwZSkgY29uc3Q7Cisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzOyB9CisKK3Byb3RlY3RlZDoKKyAgICBBcml0aFByb2ZpbGUoKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGxoc1Jlc3VsdFR5cGUoKS5iaXRzKCkgPT0gbGhzLmJpdHMo
KSAmJiByaHNSZXN1bHRUeXBlKCkuYml0cygpID09IHJocy5iaXRzKCkpOwotICAgICAgICBBU1NF
UlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKHJoc09ic2Vy
dmVkVHlwZSgpLmlzRW1wdHkoKSk7CiAgICAgfQogCi0gICAgQXJpdGhQcm9maWxlKE9wZXJhbmRU
eXBlcyB0eXBlcykKLSAgICAgICAgOiBBcml0aFByb2ZpbGUodHlwZXMuZmlyc3QoKSwgdHlwZXMu
c2Vjb25kKCkpCi0gICAgeyB9CisgICAgYm9vbCBoYXNCaXRzKGludCBtYXNrKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBtYXNrOyB9CisgICAgdm9pZCBzZXRCaXQoaW50IG1hc2spIHsgbV9iaXRz
IHw9IG1hc2s7IH0KKworICAgIEJpdGZpZWxkVHlwZSBtX2JpdHMgeyAwIH07IC8vIFdlIHRha2Ug
Y2FyZSB0byB1cGRhdGUgbV9iaXRzIG9ubHkgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLiBXZSBkb24n
dCBldmVyIHN0b3JlIGFuIGluY29uc2lzdGVudCBiaXQgcmVwcmVzZW50YXRpb24gdG8gaXQuCit9
OworCisvKiBUaGlzIGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMgaW4gMTYg
Yml0czoKKyAqIC0gT2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgdGhlIGFy
Z3VtZW50CisgKi8KK3VzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90OworY2xh
c3MgVW5hcnlBcml0aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9m
aWxlQmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2ZWRUeXBl
U2hpZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOwogCi0gICAgQXJpdGhQcm9maWxl
KCkgPSBkZWZhdWx0OworICAgIHN0YXRpY19hc3NlcnQoYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgKyBP
YnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQgPD0gc2l6ZW9mKFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZSkgKiA4LCAiU2hvdWxkIGZpdCBpbiBhIHRoZSB0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIGJpdGZp
ZWxkLiIpOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgZnJvbUludCh1aW50
MzJfdCBiaXRzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIGNs
ZWFyQXJnT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19jYXN0PFVuYXJ5QXJpdGhQcm9maWxl
QmFzZT4ofigwYjExMSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdCkpOworCisgICAgc3RhdGljIGNv
bnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgVW5hcnlBcml0
aFByb2ZpbGUoKQorICAgICAgICA6IEFyaXRoUHJvZmlsZTxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBBcml0aFByb2ZpbGUgeyBDb25zdGFudFRhZzo6Q29u
c3RhbnQsIGJpdHMgfTsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHko
KSk7CisgICAgICAgIEFTU0VSVChhcmdPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwogICAgIH0K
IAotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkVW5hcnlJbnQoKQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkSW50Qml0
cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIg
eyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMy
X3QgYml0cyA9IG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0Owot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHg4MDAwMDAsICIiKTsKLSAgICAgICAgcmV0
dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJh
c2UgYml0cyA9IG9ic2VydmVkSW50MzIuYml0cygpIDw8IGFyZ09ic2VydmVkVHlwZVNoaWZ0Owor
ICAgICAgICByZXR1cm4gYml0czsKICAgICB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFBy
b2ZpbGUgb2JzZXJ2ZWRVbmFyeU51bWJlcigpCisgICAgc3RhdGljIGNvbnN0ZXhwciBVbmFyeUFy
aXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWROdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0
ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53aXRoTnVt
YmVyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSBvYnNlcnZlZE51bWJl
ci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQ7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
Yml0cyA9PSAweDEwMDAwMDAsICIiKTsKLSAgICAgICAgcmV0dXJuIGZyb21JbnQoYml0cyk7Cisg
ICAgICAgIGNvbnN0ZXhwciBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IG9ic2VydmVkTnVt
YmVyLmJpdHMoKSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdDsKKyAgICAgICAgcmV0dXJuIGJpdHM7
CiAgICAgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5
SW50SW50KCkKKworICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgYXJnT2JzZXJ2ZWRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gT2JzZXJ2ZWRUeXBlKChtX2JpdHMgPj4gYXJnT2JzZXJ2ZWRUeXBlU2hp
ZnQpICYgb2JzZXJ2ZWRUeXBlTWFzayk7IH0KKyAgICB2b2lkIHNldEFyZ09ic2VydmVkVHlwZShP
YnNlcnZlZFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBi
aXRzID0gbV9iaXRzOworICAgICAgICBiaXRzICY9IGNsZWFyQXJnT2JzZXJ2ZWRUeXBlQml0TWFz
azsKKyAgICAgICAgYml0cyB8PSB0eXBlLmJpdHMoKSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdDsK
KyAgICAgICAgbV9iaXRzID0gYml0czsKKyAgICAgICAgQVNTRVJUKGFyZ09ic2VydmVkVHlwZSgp
ID09IHR5cGUpOworICAgIH0KKworICAgIHZvaWQgYXJnU2F3SW50MzIoKSB7IHNldEFyZ09ic2Vy
dmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSk7IH0KKyAgICB2b2lkIGFyZ1Nh
d051bWJlcigpIHsgc2V0QXJnT2JzZXJ2ZWRUeXBlKGFyZ09ic2VydmVkVHlwZSgpLndpdGhOdW1i
ZXIoKSk7IH0KKyAgICB2b2lkIGFyZ1Nhd05vbk51bWJlcigpIHsgc2V0QXJnT2JzZXJ2ZWRUeXBl
KGFyZ09ic2VydmVkVHlwZSgpLndpdGhOb25OdW1iZXIoKSk7IH0KKworICAgIHZvaWQgb2JzZXJ2
ZUFyZyhKU1ZhbHVlIGFyZykKKyAgICB7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlIG5ld1By
b2ZpbGUgPSAqdGhpczsKKyAgICAgICAgaWYgKGFyZy5pc051bWJlcigpKSB7CisgICAgICAgICAg
ICBpZiAoYXJnLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICBuZXdQcm9maWxlLmFyZ1Nhd0lu
dDMyKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5hcmdT
YXdOdW1iZXIoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuZXdQcm9maWxlLmFyZ1Nh
d05vbk51bWJlcigpOworCisgICAgICAgIG1fYml0cyA9IG5ld1Byb2ZpbGUuYml0cygpOworICAg
IH0KKworICAgIGJvb2wgaXNPYnNlcnZlZFR5cGVFbXB0eSgpCisgICAgeworICAgICAgICByZXR1
cm4gYXJnT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOworICAgIH0KKworICAgIGZyaWVuZCBjbGFz
cyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK307CisKKy8qIFRoaXMgY2xhc3Mgc3RvcmVz
IHRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBpbiAxNiBiaXRzOgorICogLSBPYnNlcnZlZFJlc3Vs
dHMKKyAqIC0gT2JzZXJ2ZWRUeXBlIGZvciByaWdodC1oYW5kLXNpZGUKKyAqIC0gT2JzZXJ2ZWRU
eXBlIGZvciBsZWZ0LWhhbmQtc2lkZQorICogLSBhIGJpdCB1c2VkIGJ5IGRpdmlzaW9uIHRvIGlu
ZGljYXRlIHdoZXRoZXIgYSBzcGVjaWFsIGZhc3QgcGF0aCB3YXMgdGFrZW4KKyAqLwordXNpbmcg
QmluYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90OworY2xhc3MgQmluYXJ5QXJpdGhQcm9m
aWxlIDogcHVibGljIEFyaXRoUHJvZmlsZTxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPiB7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNPYnNlcnZlZFR5cGVTaGlmdCA9IG9ic2VydmVk
UmVzdWx0c051bUJpdHNOZWVkZWQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBsaHNP
YnNlcnZlZFR5cGVTaGlmdCA9IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpu
dW1CaXRzTmVlZGVkOworCisgICAgc3RhdGljX2Fzc2VydChPYnNlcnZlZFR5cGU6Om51bUJpdHNO
ZWVkZWQgPT0gMywgIldlIG1ha2UgYSBoYXJkIGFzc3VtcHRpb24gYWJvdXQgdGhhdCBoZXJlLiIp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhclJoc09i
c2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPih+
KDBiMTExIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBC
aW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRp
Y19jYXN0PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgbGhzT2JzZXJ2ZWRUeXBl
U2hpZnQpKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBv
YnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKSAtIDE7
CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ug
c3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyBPYnNlcnZl
ZFR5cGU6Om51bUJpdHNOZWVkZWQpOworICAgIHN0YXRpY19hc3NlcnQoKGxoc09ic2VydmVkVHlw
ZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsgMSkgPD0gc2l6ZW9mKEJpbmFy
eUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB1aW50MzJfdC4iKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRoQml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRU
eXBlQml0TWFzayksICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0LiIpOworICAgIHN0
YXRpY19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ICYgY2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRN
YXNrLCAiVGhlc2UgYml0cyBzaG91bGQgaW50ZXJzZWN0LiIpOworICAgIHN0YXRpY19hc3NlcnQo
c3BlY2lhbEZhc3RQYXRoQml0ID4gfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNl
IGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QgYW5kIHNwZWNpYWxGYXN0UGF0aEJpdCBzaG91bGQg
YmUgYSBoaWdoZXIgYml0LiIpOworCisgICAgQmluYXJ5QXJpdGhQcm9maWxlKCkKKyAgICAgICAg
OiBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4gKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOworICAgICAgICBBU1NFUlQocmhz
T2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3RleHBy
IEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRJbnRJbnRCaXRzKCkKICAgICB7CiAgICAg
ICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJbnQzMiB7IE9ic2VydmVkVHlwZSgp
LndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0gKG9ic2Vy
dmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZEludDMy
LmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
Yml0cyA9PSAweDkwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAg
ICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNlcnZlZElu
dDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQzMi5iaXRz
KCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOworICAgICAgICByZXR1cm4gYml0czsKICAgICB9
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUgb2JzZXJ2ZWRCaW5hcnlOdW1iZXJJ
bnQoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZl
ZE51bWJlckludEJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBv
YnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9OwogICAgICAgICBj
b25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRo
SW50MzIoKSB9OwotICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZE51
bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkSW50MzIuYml0
cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRz
ID09IDB4MTEwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAg
ICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNlcnZlZE51bWJl
ci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkSW50MzIuYml0cygp
IDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQot
ICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5SW50TnVtYmVy
KCkKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRJ
bnROdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2Jz
ZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkgfTsKICAgICAgICAgY29u
c3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aElu
dDMyKCkgfTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2ZWRJbnQz
Mi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVtYmVyLmJpdHMo
KSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9
PSAweGEwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRzKTsKKyAgICAgICAg
Y29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNlcnZlZEludDMyLmJp
dHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8
IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQotICAg
IHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVy
KCkKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRO
dW1iZXJOdW1iZXJCaXRzKCkKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUg
b2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkgfTsKLSAgICAgICAg
Y29uc3RleHByIHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGxoc09i
c2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRU
eXBlU2hpZnQpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMjAwMDAwLCAiIik7
Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgQmluYXJ5
QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNl
cnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlw
ZVNoaWZ0KTsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQogCi0gICAgZW51bSBPYnNlcnZl
ZFJlc3VsdHMgewotICAgICAgICBOb25OZWdaZXJvRG91YmxlID0gMSA8PCAwLAotICAgICAgICBO
ZWdaZXJvRG91YmxlICAgID0gMSA8PCAxLAotICAgICAgICBOb25OdW1lcmljICAgICAgID0gMSA8
PCAyLAotICAgICAgICBJbnQzMk92ZXJmbG93ICAgID0gMSA8PCAzLAotICAgICAgICBJbnQ1Mk92
ZXJmbG93ICAgID0gMSA8PCA0LAotICAgICAgICBCaWdJbnQgICAgICAgICAgID0gMSA8PCA1LAot
ICAgIH07Ci0KLSAgICBSZXN1bHRUeXBlIGxoc1Jlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBS
ZXN1bHRUeXBlKChtX2JpdHMgPj4gbGhzUmVzdWx0VHlwZVNoaWZ0KSAmIHJlc3VsdFR5cGVNYXNr
KTsgfQotICAgIFJlc3VsdFR5cGUgcmhzUmVzdWx0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFJlc3Vs
dFR5cGUoKG1fYml0cyA+PiByaHNSZXN1bHRUeXBlU2hpZnQpICYgcmVzdWx0VHlwZU1hc2spOyB9
Ci0KICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIGxoc09ic2VydmVkVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIE9ic2VydmVkVHlwZSgobV9iaXRzID4+IGxoc09ic2VydmVkVHlwZVNoaWZ0KSAmIG9i
c2VydmVkVHlwZU1hc2spOyB9CiAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSByaHNPYnNlcnZl
ZFR5cGUoKSBjb25zdCB7IHJldHVybiBPYnNlcnZlZFR5cGUoKG1fYml0cyA+PiByaHNPYnNlcnZl
ZFR5cGVTaGlmdCkgJiBvYnNlcnZlZFR5cGVNYXNrKTsgfQogICAgIHZvaWQgc2V0TGhzT2JzZXJ2
ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgdWludDMyX3QgYml0cyA9
IG1fYml0czsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gbV9iaXRzOwog
ICAgICAgICBiaXRzICY9IGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzazsKICAgICAgICAgYml0
cyB8PSB0eXBlLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKICAgICAgICAgbV9iaXRz
ID0gYml0czsKQEAgLTE4Nyw3ICsyODcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJoc09i
c2VydmVkVHlwZShPYnNlcnZlZFR5cGUgdHlwZSkKICAgICB7IAotICAgICAgICB1aW50MzJfdCBi
aXRzID0gbV9iaXRzOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSBtX2Jp
dHM7CiAgICAgICAgIGJpdHMgJj0gY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrOwogICAgICAg
ICBiaXRzIHw9IHR5cGUuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0OwogICAgICAgICBt
X2JpdHMgPSBiaXRzOwpAQCAtMTk2LDM5ICsyOTYsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIHRv
b2tTcGVjaWFsRmFzdFBhdGgoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBzcGVjaWFsRmFzdFBh
dGhCaXQ7IH0KIAotICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgY29uc3QgeyByZXR1cm4g
aGFzQml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSB8IE5vbk51bWVyaWMgfCBC
aWdJbnQpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFz
Qml0cyhOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRpZE9i
c2VydmVOb25OZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOb25OZWdaZXJv
RG91YmxlKTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSBjb25zdCB7IHJl
dHVybiBoYXNCaXRzKE5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlTm9uTnVt
ZXJpYygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTnVtZXJpYyk7IH0KLSAgICBib29sIGRp
ZE9ic2VydmVCaWdJbnQoKSBjb25zdCB7IHJldHVybiBoYXNCaXRzKEJpZ0ludCk7IH0KLSAgICBi
b29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhJbnQz
Mk92ZXJmbG93KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZsb3coKSBjb25zdCB7
IHJldHVybiBoYXNCaXRzKEludDUyT3ZlcmZsb3cpOyB9Ci0KLSAgICB2b2lkIHNldE9ic2VydmVk
Tm9uTmVnWmVyb0RvdWJsZSgpIHsgc2V0Qml0KE5vbk5lZ1plcm9Eb3VibGUpOyB9Ci0gICAgdm9p
ZCBzZXRPYnNlcnZlZE5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChOZWdaZXJvRG91YmxlKTsgfQot
ICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkgeyBzZXRCaXQoTm9uTnVtZXJpYyk7IH0K
LSAgICB2b2lkIHNldE9ic2VydmVkQmlnSW50KCkgeyBzZXRCaXQoQmlnSW50KTsgfQotICAgIHZv
aWQgc2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KCkgeyBzZXRCaXQoSW50MzJPdmVyZmxvdyk7IH0K
LSAgICB2b2lkIHNldE9ic2VydmVkSW50NTJPdmVyZmxvdygpIHsgc2V0Qml0KEludDUyT3ZlcmZs
b3cpOyB9Ci0KLSAgICBjb25zdCB2b2lkKiBhZGRyZXNzT2ZCaXRzKCkgY29uc3QgeyByZXR1cm4g
Jm1fYml0czsgfQotCi0gICAgdm9pZCBvYnNlcnZlUmVzdWx0KEpTVmFsdWUgdmFsdWUpCi0gICAg
ewotICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgbV9iaXRzIHw9IEludDMy
T3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3Vi
bGU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHZhbHVlICYm
IHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIG1fYml0cyB8PSBCaWdJbnQ7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9iaXRzIHw9IE5vbk51bWVyaWM7
Ci0gICAgfQotCiAgICAgdm9pZCBsaHNTYXdJbnQzMigpIHsgc2V0TGhzT2JzZXJ2ZWRUeXBlKGxo
c09ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpKTsgfQogICAgIHZvaWQgbGhzU2F3TnVtYmVyKCkg
eyBzZXRMaHNPYnNlcnZlZFR5cGUobGhzT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigpKTsgfQog
ICAgIHZvaWQgbGhzU2F3Tm9uTnVtYmVyKCkgeyBzZXRMaHNPYnNlcnZlZFR5cGUobGhzT2JzZXJ2
ZWRUeXBlKCkud2l0aE5vbk51bWJlcigpKTsgfQpAQCAtMjM4LDcgKzMwNSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgb2JzZXJ2ZUxIUyhKU1ZhbHVlIGxocykKICAgICB7Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBu
ZXdQcm9maWxlID0gKnRoaXM7CiAgICAgICAgIGlmIChsaHMuaXNOdW1iZXIoKSkgewogICAgICAg
ICAgICAgaWYgKGxocy5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbmV3UHJvZmlsZS5saHNT
YXdJbnQzMigpOwpAQCAtMjU0LDcgKzMyMSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG9i
c2VydmVMSFMobGhzKTsKIAotICAgICAgICBBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlz
OworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlzOwogICAgICAg
ICBpZiAocmhzLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIGlmIChyaHMuaXNJbnQzMigpKQog
ICAgICAgICAgICAgICAgIG5ld1Byb2ZpbGUucmhzU2F3SW50MzIoKTsKQEAgLTI2Niw0NyArMzMz
LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRzID0gbmV3UHJvZmlsZS5iaXRzKCk7CiAgICAg
fQogCi0jaWYgRU5BQkxFKEpJVCkgICAgCi0gICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IElu
dDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQgc2Vl
cyBhCi0gICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWVyaWMgaWYgaXQgc2VlcyBhIG5vbi1udW1l
cmljLgotICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJl
Z3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKLSAgICAKLSAgICAvLyBT
ZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBO
ZWdaZXJvRG91YmxlKS4KLSAgICBib29sIHNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdDsKLSAg
ICB2b2lkIGVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJikgY29uc3Q7Ci0gICAgCi0gICAgLy8g
U2V0cyBOb25OdW1iZXIuCi0gICAgdm9pZCBlbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMm
KSBjb25zdDsKLSAgICBib29sIHNob3VsZEVtaXRTZXROb25OdW1lcmljKCkgY29uc3Q7Ci0KLSAg
ICAvLyBTZXRzIEJpZ0ludAotICAgIHZvaWQgZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmKSBj
b25zdDsKLSAgICBib29sIHNob3VsZEVtaXRTZXRCaWdJbnQoKSBjb25zdDsKLSNlbmRpZiAvLyBF
TkFCTEUoSklUKQotCi0gICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMoKSBjb25zdCB7IHJldHVy
biBtX2JpdHM7IH0KLQotcHJpdmF0ZToKLSAgICBjb25zdGV4cHIgZXhwbGljaXQgQXJpdGhQcm9m
aWxlKENvbnN0YW50VGFnLCB1aW50MzJfdCBiaXRzKQotICAgICAgICA6IG1fYml0cyhiaXRzKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgQXJpdGhQcm9maWxlKENvbnN0YW50VGFnLCBS
ZXN1bHRUeXBlIGFyZykKLSAgICAgICAgOiBtX2JpdHMoYXJnLmJpdHMoKSA8PCBsaHNSZXN1bHRU
eXBlU2hpZnQpCisgICAgYm9vbCBpc09ic2VydmVkVHlwZUVtcHR5KCkKICAgICB7CisgICAgICAg
IHJldHVybiBsaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkgJiYgcmhzT2JzZXJ2ZWRUeXBlKCku
aXNFbXB0eSgpOwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBBcml0aFByb2ZpbGUoQ29uc3RhbnRU
YWcsIFJlc3VsdFR5cGUgbGhzLCBSZXN1bHRUeXBlIHJocykKLSAgICAgICAgOiBtX2JpdHMoKGxo
cy5iaXRzKCkgPDwgbGhzUmVzdWx0VHlwZVNoaWZ0KSB8IChyaHMuYml0cygpIDw8IHJoc1Jlc3Vs
dFR5cGVTaGlmdCkpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaGFzQml0cyhpbnQgbWFzaykg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgbWFzazsgfQotICAgIHZvaWQgc2V0Qml0KGludCBtYXNr
KSB7IG1fYml0cyB8PSBtYXNrOyB9Ci0KLSAgICB1aW50MzJfdCBtX2JpdHMgeyAwIH07IC8vIFdl
IHRha2UgY2FyZSB0byB1cGRhdGUgbV9iaXRzIG9ubHkgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLiBX
ZSBkb24ndCBldmVyIHN0b3JlIGFuIGluY29uc2lzdGVudCBiaXQgcmVwcmVzZW50YXRpb24gdG8g
aXQuCi0KICAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CiB9Owog
CkBAIC0zMTQsNyArMzQ1LDggQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6QXJpdGhQcm9maWxlJik7Cit2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlJik7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBKU0M6OkJpbmFy
eUFyaXRoUHJvZmlsZSYpOwogdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3Qg
SlNDOjpPYnNlcnZlZFR5cGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBjMmVjOWNmNTcyYS4u
NzJkZTYwOWFhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgpAQCAtNDEsNiArNDEsNyBAQCB0eXBlcyBbCiAgICAgOkpTVHlwZSwKICAgICA6
SlNWYWx1ZSwKICAgICA6TExJbnRDYWxsTGlua0luZm8sCisgICAgOlJlc3VsdFR5cGUsCiAgICAg
Ok9wZXJhbmRUeXBlcywKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3Bl
cnR5T2Zmc2V0LApAQCAtNTgsNyArNTksOCBAQCB0eXBlcyBbCiAKICAgICA6VmFsdWVQcm9maWxl
LAogICAgIDpWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyLAotICAgIDpBcml0aFByb2ZpbGUs
CisgICAgOlVuYXJ5QXJpdGhQcm9maWxlLAorICAgIDpCaW5hcnlBcml0aFByb2ZpbGUsCiAgICAg
OkFycmF5UHJvZmlsZSwKICAgICA6QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSwKICAgICA6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUsCkBAIC0yNzksMTAgKzI4MSw3IEBAIG9wX2dyb3VwIDpQcm9maWxl
ZEJpbmFyeU9wLAogICAgICAgICBvcGVyYW5kVHlwZXM6IE9wZXJhbmRUeXBlcywKICAgICB9LAog
ICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGFyaXRoUHJvZmlsZTogQXJpdGhQcm9maWxlCi0gICAg
fSwKLSAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiA6
b3BlcmFuZFR5cGVzCisgICAgICAgIGFyaXRoUHJvZmlsZTogQmluYXJ5QXJpdGhQcm9maWxlCiAg
ICAgfQogCiBvcF9ncm91cCA6VmFsdWVQcm9maWxlZEJpbmFyeU9wLApAQCAtMzY0LDEzICszNjMs
MTAgQEAgb3AgOm5lZ2F0ZSwKICAgICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lz
dGVyLAogICAgICAgICBvcGVyYW5kOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIG9wZXJhbmRU
eXBlczogT3BlcmFuZFR5cGVzLAorICAgICAgICByZXN1bHRUeXBlOiBSZXN1bHRUeXBlLAogICAg
IH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgYXJpdGhQcm9maWxlOiBBcml0aFByb2ZpbGUs
Ci0gICAgfSwKLSAgICBtZXRhZGF0YV9pbml0aWFsaXplcnM6IHsKLSAgICAgICAgYXJpdGhQcm9m
aWxlOiA6b3BlcmFuZFR5cGVzCisgICAgICAgIGFyaXRoUHJvZmlsZTogVW5hcnlBcml0aFByb2Zp
bGUsCiAgICAgfQogCiBvcCA6bm90LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCAwZjhlN2Y4YjRmOS4uNjgxZGZjOWVjOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNDc5LDI1ICsxNDc5
LDI1IEBAIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmFkZFN0dWJJbmZvKEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSkKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fc3R1Yklu
Zm9zLmFkZChhY2Nlc3NUeXBlKTsKIH0KIAotSklUQWRkSUMqIENvZGVCbG9jazo6YWRkSklUQWRk
SUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRBZGRJQyogQ29kZUJsb2NrOjphZGRK
SVRBZGRJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJuIGVuc3VyZUpJVERhdGEobG9j
a2VyKS5tX2FkZElDcy5hZGQoYXJpdGhQcm9maWxlKTsKIH0KIAotSklUTXVsSUMqIENvZGVCbG9j
azo6YWRkSklUTXVsSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNdWxJQyogQ29k
ZUJsb2NrOjphZGRKSVRNdWxJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsK
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJuIGVuc3Vy
ZUpJVERhdGEobG9ja2VyKS5tX211bElDcy5hZGQoYXJpdGhQcm9maWxlKTsKIH0KIAotSklUU3Vi
SUMqIENvZGVCbG9jazo6YWRkSklUU3ViSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitK
SVRTdWJJQyogQ29kZUJsb2NrOjphZGRKSVRTdWJJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAg
cmV0dXJuIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX3N1YklDcy5hZGQoYXJpdGhQcm9maWxlKTsK
IH0KIAotSklUTmVnSUMqIENvZGVCbG9jazo6YWRkSklUTmVnSUMoQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpCitKSVROZWdJQyogQ29kZUJsb2NrOjphZGRKSVROZWdJQyhVbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9s
b2NrKTsKICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1fbmVnSUNzLmFkZChhcml0
aFByb2ZpbGUpOwpAQCAtMzA4NCwxNiArMzA4NCwxOSBAQCBjb25zdCBJbnN0cnVjdGlvbiogQ29k
ZUJsb2NrOjpvdXRPZkxpbmVKdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBwYykKICAgICBy
ZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuYXQob2Zmc2V0ICsgdGFyZ2V0KS5wdHIoKTsKIH0KIAotQXJp
dGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4KQorQmluYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmJp
bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4KQogewotICAgIHJldHVybiBhcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5hdChi
eXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKSk7CisgICAgcmV0dXJuIGJpbmFyeUFyaXRoUHJv
ZmlsZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigp
KTsKIH0KIAotQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvclBDKGNvbnN0
IEluc3RydWN0aW9uKiBwYykKK1VuYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OnVuYXJ5QXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCit7
CisgICAgcmV0dXJuIHVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCkpOworfQorCitCaW5hcnlBcml0aFByb2ZpbGUqIENv
ZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQog
ewogICAgIHN3aXRjaCAocGMtPm9wY29kZUlEKCkpIHsKLSAgICBjYXNlIG9wX25lZ2F0ZToKLSAg
ICAgICAgcmV0dXJuICZwYy0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEodGhpcykubV9hcml0aFBy
b2ZpbGU7CiAgICAgY2FzZSBvcF9hZGQ6CiAgICAgICAgIHJldHVybiAmcGMtPmFzPE9wQWRkPigp
Lm1ldGFkYXRhKHRoaXMpLm1fYXJpdGhQcm9maWxlOwogICAgIGNhc2Ugb3BfbXVsOgpAQCAtMzEw
OSwxMSArMzExMiwyMyBAQCBBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6YXJpdGhQcm9maWxlRm9y
UEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitVbmFy
eUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IElu
c3RydWN0aW9uKiBwYykKK3sKKyAgICBzd2l0Y2ggKHBjLT5vcGNvZGVJRCgpKSB7CisgICAgY2Fz
ZSBvcF9uZWdhdGU6CisgICAgICAgIHJldHVybiAmcGMtPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRh
KHRoaXMpLm1fYXJpdGhQcm9maWxlOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCiBib29sIENvZGVCbG9jazo6Y291bGRUYWtl
U3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAg
IGlmICghaGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIEFyaXRoUHJvZmlsZSogcHJvZmlsZSA9IGFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgo
Ynl0ZWNvZGVJbmRleCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlID0gYmluYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXBy
b2ZpbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcHJvZmlsZS0+dG9va1Nw
ZWNpYWxGYXN0UGF0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCmluZGV4IGQyYzA2OTgwM2E4Li4xOGU0OGMyNjZhMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODMsNiArODMsOCBAQCBzdHJ1Y3QgT1NSRXhp
dFN0YXRlOwogfSAvLyBuYW1lc3BhY2UgREZHCiAjZW5kaWYKIAorY2xhc3MgVW5hcnlBcml0aFBy
b2ZpbGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlOwpAQCAtOTYsNyArOTgsNiBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51
bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OwogCi1zdHJ1Y3QgQXJpdGhQcm9maWxlOwogc3Ry
dWN0IE9wQ2F0Y2g7CiAKIGVudW0gUmVvcHRpbWl6YXRpb25Nb2RlIHsgRG9udENvdW50UmVvcHRp
bWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRpb24gfTsKQEAgLTI3OSwyMiArMjgwLDIyIEBAIHB1
YmxpYzoKICAgICB9CiAgICAgSklURGF0YSYgZW5zdXJlSklURGF0YVNsb3coY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJik7CiAKLSAgICBKSVRBZGRJQyogYWRkSklUQWRkSUMoQXJpdGhQcm9maWxl
Kik7Ci0gICAgSklUTXVsSUMqIGFkZEpJVE11bElDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVE5l
Z0lDKiBhZGRKSVROZWdJQyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVRTdWJJQyogYWRkSklUU3Vi
SUMoQXJpdGhQcm9maWxlKik7CisgICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEJpbmFyeUFyaXRo
UHJvZmlsZSopOworICAgIEpJVE11bElDKiBhZGRKSVRNdWxJQyhCaW5hcnlBcml0aFByb2ZpbGUq
KTsKKyAgICBKSVROZWdJQyogYWRkSklUTmVnSUMoVW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBK
SVRTdWJJQyogYWRkSklUU3ViSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVEFkZEdlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4K
LSAgICBKSVRBZGRJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4g
YWRkSklUQWRkSUMocHJvZmlsZSk7IH0KKyAgICBKSVRBZGRJQyogYWRkTWF0aElDKEJpbmFyeUFy
aXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUQWRkSUMocHJvZmlsZSk7IH0KIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUTXVsR2VuZXJhdG9yPjo6dmFs
dWU+Ojp0eXBlPgotICAgIEpJVE11bElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxl
KSB7IHJldHVybiBhZGRKSVRNdWxJQyhwcm9maWxlKTsgfQorICAgIEpJVE11bElDKiBhZGRNYXRo
SUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRNdWxJQyhwcm9m
aWxlKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVROZWdHZW5l
cmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUTmVnSUMqIGFkZE1hdGhJQyhBcml0aFByb2Zp
bGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE5lZ0lDKHByb2ZpbGUpOyB9CisgICAgSklUTmVn
SUMqIGFkZE1hdGhJQyhVbmFyeUFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklU
TmVnSUMocHJvZmlsZSk7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5
cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwg
SklUU3ViR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJVFN1YklDKiBhZGRNYXRoSUMo
QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRTdWJJQyhwcm9maWxlKTsgfQor
ICAgIEpJVFN1YklDKiBhZGRNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJl
dHVybiBhZGRKSVRTdWJJQyhwcm9maWxlKTsgfQogCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGFk
ZFN0dWJJbmZvKEFjY2Vzc1R5cGUpOwogCkBAIC00OTcsOCArNDk4LDEwIEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dm9pZCBmb3JFYWNoTExJbnRDYWxsTGlua0luZm8oY29uc3QgRnVuY3RvciYpOwogCi0gICAgQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOwot
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
KyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5k
ZXgoQnl0ZWNvZGVJbmRleCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgVW5h
cnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKIAogICAgIGJvb2wgY291bGRUYWtlU3BlY2lhbEFyaXRoRmFzdENhc2UoQnl0ZWNvZGVJbmRl
eCBieXRlY29kZU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmlu
ZGV4IGVkYTI0YmU0Njk1Li41Nzc4OWJjMmM2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRml0cy5oCkBAIC0yMzUsNiArMjM1LDE4IEBAIHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6
ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1CiAg
ICAgfQogfTsKIAordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UmVzdWx0
VHlwZSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoUmVzdWx0VHlwZSkgIT0gc2l6ZSwg
c3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHVpbnQ4X3QsIHNpemU+IHsKKyAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihSZXN1bHRUeXBlKSA9PSBzaXplb2YodWludDhfdCkpOworICAgIHVz
aW5nIEJhc2UgPSBGaXRzPHVpbnQ4X3QsIHNpemU+OworCisgICAgc3RhdGljIGJvb2wgY2hlY2so
UmVzdWx0VHlwZSB0eXBlKSB7IHJldHVybiBCYXNlOjpjaGVjayh0eXBlLmJpdHMoKSk7IH0KKwor
ICAgIHN0YXRpYyB0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIGNvbnZlcnQoUmVzdWx0VHlwZSB0
eXBlKSB7IHJldHVybiBCYXNlOjpjb252ZXJ0KHR5cGUuYml0cygpKTsgfQorCisgICAgc3RhdGlj
IFJlc3VsdFR5cGUgY29udmVydCh0eXBlbmFtZSBCYXNlOjpUYXJnZXRUeXBlIHR5cGUpIHsgcmV0
dXJuIFJlc3VsdFR5cGUoQmFzZTo6Y29udmVydCh0eXBlKSk7IH0KK307CisKIHRlbXBsYXRlPE9w
Y29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPE9wZXJhbmRUeXBlcywgc2l6ZSwgc3RkOjplbmFi
bGVfaWZfdDxzaXplb2YoT3BlcmFuZFR5cGVzKSAhPSBzaXplLCBzdGQ6OnRydWVfdHlwZT4+IHsK
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcGVyYW5kVHlwZXMpID09IHNpemVvZih1aW50MTZf
dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDcxMDRkMDFhZTExLi4yYjY5
ZjM2YzdmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcApAQCAtNjYsMTAgKzY2LDE2
IEBAIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKEND
YWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
ICAgIAotICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKLSAgICAgICAgdS5hcml0aFByb2Zp
bGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsK
KyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS51bmFyeUFyaXRo
UHJvZmlsZS0+ZW1pdE9ic2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3Rl
cnMpOwogICAgICAgICByZXR1cm47Ci0gICAgfSB9CisgICAgfQorCisgICAgY2FzZSBCaW5hcnlB
cml0aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZS0+ZW1pdE9i
c2VydmVSZXN1bHQoaml0LCByZWdzLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpAQCAtOTQsMTAgKzEwMCwxNiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGU6OnJlcG9ydFZhbHVlKEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBjYXNlIEFyaXRoUHJvZmlsZVJlYWR5OiB7Ci0gICAgICAgIHUuYXJpdGhQcm9maWxl
LT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICBjYXNlIFVuYXJ5QXJpdGhQcm9maWxlUmVhZHk6
IHsKKyAgICAgICAgdS51bmFyeUFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdCh2YWx1ZSk7CiAg
ICAgICAgIHJldHVybjsKLSAgICB9IH0KKyAgICB9CisKKyAgICBjYXNlIEJpbmFyeUFyaXRoUHJv
ZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYmluYXJ5QXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0
KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB9CiAKICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKaW5kZXggY2Zi
ODM0NzA2YWYuLjVkODFjNGM5MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKQEAgLTM2
LDEwICszNiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5hcnlBcml0aFByb2Zp
bGU7CitjbGFzcyBCaW5hcnlBcml0aFByb2ZpbGU7CiBjbGFzcyBDQ2FsbEhlbHBlcnM7CiBjbGFz
cyBDb2RlQmxvY2s7CiBjbGFzcyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTsKLXN0cnVjdCBB
cml0aFByb2ZpbGU7CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiBjbGFzcyBNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlIHsKQEAgLTU3LDEyICs1OCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9Ci0gICAgCi0gICAgTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShBcml0aFByb2ZpbGUqIHByb2ZpbGUpCisKKyAgICBNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKFVuYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKQorICAg
IHsKKyAgICAgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAgICAgICAgIG1fa2luZCA9IFVuYXJ5QXJp
dGhQcm9maWxlUmVhZHk7CisgICAgICAgICAgICB1LnVuYXJ5QXJpdGhQcm9maWxlID0gcHJvZmls
ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2tpbmQgPSBOb25lOworICAgIH0KKwor
ICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9m
aWxlKQogICAgIHsKICAgICAgICAgaWYgKHByb2ZpbGUpIHsKLSAgICAgICAgICAgIG1fa2luZCA9
IEFyaXRoUHJvZmlsZVJlYWR5OwotICAgICAgICAgICAgdS5hcml0aFByb2ZpbGUgPSBwcm9maWxl
OworICAgICAgICAgICAgbV9raW5kID0gQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk7CisgICAgICAg
ICAgICB1LmJpbmFyeUFyaXRoUHJvZmlsZSA9IHByb2ZpbGU7CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgbV9raW5kID0gTm9uZTsKICAgICB9CkBAIC03OSw3ICs4OSw4IEBAIHByaXZhdGU6
CiAgICAgZW51bSBLaW5kIHsKICAgICAgICAgTm9uZSwKICAgICAgICAgUmVhZHksCi0gICAgICAg
IEFyaXRoUHJvZmlsZVJlYWR5LAorICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZVJlYWR5LAorICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeSwKICAgICAgICAgTGF6eU9wZXJhbmQKICAgICB9
OwogICAgIApAQCAtOTAsNyArMTAxLDggQEAgcHJpdmF0ZToKICAgICAgICAgeyB9CiAKICAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxlOworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZTsKICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrOwogICAgICAgICAgICAgQnl0
ZWNvZGVJbmRleCBieXRlY29kZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZTM4MzFkMjA5
NWYuLmYyYmNlNjJlZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTUxNiwxNCArMTUxNiwxNCBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgT3BlcmFuZFR5cGVzIHR5cGVzKQorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wKE9wY29kZUlEIG9wY29kZUlELCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgUmVzdWx0VHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX25vdDoKICAgICAgICAgZW1pdFVuYXJ5T3A8T3BO
b3Q+KGRzdCwgc3JjKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9uZWdhdGU6Ci0gICAg
ICAgIE9wTmVnYXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlcyk7CisgICAgICAgIE9wTmVn
YXRlOjplbWl0KHRoaXMsIGRzdCwgc3JjLCB0eXBlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBvcF9iaXRub3Q6CiAgICAgICAgIGVtaXRVbmFyeU9wPE9wQml0bm90Pihkc3QsIHNyYyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKaW5kZXggYTc5OTNiZWIzZmEuLjc1YTBiYTAzYzg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC02ODIsNyArNjgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZHN0
OwogICAgICAgICB9CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFVuYXJ5T3AoT3Bjb2RlSUQs
IFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBPcGVyYW5kVHlwZXMpOworICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0VW5hcnlPcChPcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBzcmMsIFJlc3VsdFR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJp
bmFyeU9wPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDUyNDY4ZTFmMmFh
Li4wMTA2NGNhZjllZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgUmVnaXN0ZXJJRCog
VW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKgogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9leHByKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9u
KCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVu
YXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjLmdl
dCgpLCBPcGVyYW5kVHlwZXMobV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKKyAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRVbmFyeU9wKG9wY29kZUlEKCksIGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCksIHNyYy5nZXQoKSwgbV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCkpOwogfQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVW5hcnlQbHVzTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzMzc4YWQwOTJmNi4uOThlNjhlYzM5MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CkBAIC05NDIsNTYgKzk0Miw2MCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWlzWDg2KCkgJiYg
KG5vZGUtPm9wKCkgPT0gQXJpdGhNb2QgfHwgbm9kZS0+b3AoKSA9PSBWYWx1ZU1vZCkpCiAgICAg
ICAgICAgICByZXR1cm4gbm9kZTsKIAotICAgICAgICB7Ci0gICAgICAgICAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7Ci0gICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7
Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aEFkZDoKLSAgICAgICAgICAgICAgICBjYXNlIEFy
aXRoU3ViOgotICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVBZGQ6Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9uTnVtZXJpYygp
KQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5v
bk51bWVyaWNSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5k
aWRPYnNlcnZlQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZs
YWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgICAgICAgICBjYXNlIFZhbHVlTXVsOgotICAgICAgICAgICAgICAgIGNhc2Ug
QXJpdGhNdWw6IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2Jz
ZXJ2ZUludDUyT3ZlcmZsb3coKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdl
RmxhZ3MoTm9kZU1heU92ZXJmbG93SW50NTIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJp
dGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93SW50
MzJJbkJhc2VsaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlk
T2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91
YmxlUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2Jz
ZXJ2ZU5vbk51bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNl
IFZhbHVlTmVnYXRlOgotICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCkuc2F3TnVt
YmVyKCkgfHwgYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3Vi
bGUoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJm
bG93KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92
ZXJmbG93SW50MzJJbkJhc2VsaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2UgQXJpdGhBZGQ6CisgICAgICAgIGNh
c2UgQXJpdGhTdWI6CisgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKKyAgICAgICAgICAgIEJpbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4
KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAg
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOwor
ICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKKyAg
ICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3Vs
dCk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCisg
ICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZhbHVlTXVsOgor
ICAgICAgICBjYXNlIEFyaXRoTXVsOiB7CisgICAgICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YmluYXJ5
QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAg
ICBpZiAoIWFyaXRoUHJvZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkpCisgICAgICAgICAg
ICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQ1Mik7CisgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJm
bG93KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0lu
dDMySW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
TmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZlWmVybykpCisgICAgICAgICAgICAgICAgbm9k
ZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOworICAgICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQorICAgICAgICAgICAgICAgIG5vZGUt
Pm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVEb3VibGVSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFy
aXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKKyAgICAgICAgICAgICAgICBub2Rl
LT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3VsdCk7CisgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCisgICAgICAgICAgICAgICAgbm9k
ZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZhbHVlTmVnYXRlOgorICAgICAgICBjYXNlIEFy
aXRoTmVnYXRlOiB7CisgICAgICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT51bmFyeUFyaXRoUHJvZmlsZUZv
ckJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFhcml0aFBy
b2ZpbGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9m
aWxlLT5hcmdPYnNlcnZlZFR5cGUoKS5zYXdOdW1iZXIoKSB8fCBhcml0aFByb2ZpbGUtPmRpZE9i
c2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlI
YXZlRG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKKyAgICAgICAgICAgICAgICBu
b2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlOZWdaZXJvSW5CYXNlbGluZSk7CisgICAgICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDMy
SW5CYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTm9u
TnVtZXJpYygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVO
b25OdW1lcmljUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2Vy
dmVCaWdJbnQoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZl
QmlnSW50UmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgpKSB7CkBA
IC0xMDMzLDggKzEwMzcsOCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6
IEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIG1ha2UgdGhpcyBtb3JlIGdyYW51bGFyLgogICAgICAg
ICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGluZSB8IE5vZGVN
YXlOZWdaZXJvSW5CYXNlbGluZSk7Ci0gICAgICAgIAotICAgICAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisKKyAgICAgICAgQmluYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobV9jdXJyZW50SW5kZXgpOwog
ICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCiAgICAgICAgICAg
ICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlQmlnSW50UmVzdWx0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCBjYTlmYzM0ZTFkMy4uMWIxYjE5ODRhMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xNjU0LDcgKzE2NTQs
OSBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlRm9yKE5vZGUqIGN1cnJlbgogICAgICAgICAgICAgICAgIHJldHVybiAmcHJv
ZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCgpKTsKIAogICAgICAgICAgICAgaWYgKHByb2ZpbGVkQmxvY2st
Pmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoQXJpdGhQ
cm9maWxlKiByZXN1bHQgPSBwcm9maWxlZEJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAgICAgICAg
ICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIHJlc3VsdCA9IHByb2ZpbGVkQmxvY2stPmJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVj
b2RlSW5kZXgoKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
ICAgICAgICAgaWYgKFVuYXJ5QXJpdGhQcm9maWxlKiByZXN1bHQgPSBwcm9maWxlZEJsb2NrLT51
bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5
dGVjb2RlSW5kZXgoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNmNkYjcxNTBhMDEuLmI4NDk2NjZjNWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzk5
NSw3ICszOTk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUq
IG5vZGUpCiAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgo
KS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUlu
ZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9j
ay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBCaW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlB
cml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJVEFkZElD
KiBhZGRJQyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRBZGRJQyhhcml0aFByb2ZpbGUpOwog
ICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZTsK
ICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkOwpAQCAt
NDAxOSw3ICs0MDE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKE5v
ZGUqIG5vZGUpCiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0
LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
LmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBi
YXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGlu
ZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KTsKICAgICAgICAgSklUU3ViSUMqIHN1YklDID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZEpJ
VFN1YklDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0g
b3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVu
Y3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKQEAgLTQ2MTMsNyArNDYxMyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU5lZ2F0ZShOb2RlKiBub2RlKQogewogICAgIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JC
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJVE5lZ0lDKiBuZWdJQyA9IG1faml0LmNvZGVC
bG9jaygpLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIGF1dG8gcmVwYXRjaGluZ0Z1
bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZTsKICAgICBhdXRvIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlOwpAQCAtNDgzNiw3ICs0ODM2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAKICAg
ICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNlbGluZUNv
ZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVG
b3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIEpJVE11bElDKiBtdWxJQyA9IG1f
aml0LmNvZGVCbG9jaygpLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUpOwogICAgIGF1dG8gcmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlTXVsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDVkNDhjMGIwY2I5Li4zN2Yw
YTk2MDBmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcApAQCAtMjExNiw3ICsyMTE2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNv
ZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAg
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICAgICAgYXV0byByZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplOwogICAgICAgICBhdXRv
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkOwogICAgICAgICBjb21w
aWxlQmluYXJ5TWF0aElDPEpJVEFkZEdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5n
RnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTM3LDcgKzIxMzcsNyBAQCBw
cml2YXRlOgogCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0
YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
ICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVj
b2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVj
b2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZh
bHVlU3ViT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3Bl
cmF0aW9uVmFsdWVTdWI7CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJh
dG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uKTsKQEAgLTIxNTgsNyArMjE1OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2Nr
KiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRo
UHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRo
UHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVw
YXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICAgICAgYXV0
byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bDsKICAgICAgICAgY29t
cGlsZUJpbmFyeU1hdGhJQzxKSVRNdWxHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGlu
Z0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpAQCAtMjE2Niw3ICsyMTY2LDcgQEAg
cHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIEZ1
bmMxLCB0eXBlbmFtZSBGdW5jMiwKICAgICAgICAgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jMT46OnR5
cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50
ZXI8RnVuYzI+Ojp0eXBlPjo6dmFsdWU+PgotICAgIHZvaWQgY29tcGlsZVVuYXJ5TWF0aElDKEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmMy
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKKyAgICB2b2lkIGNvbXBpbGVVbmFyeU1hdGhJQyhVbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1
bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBt
X25vZGU7CiAKQEAgLTIyNTIsNyArMjI1Miw3IEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBGdW5jMSwgdHlwZW5hbWUgRnVuYzIsCiAgICAg
ICAgIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzE+Ojp0eXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5j
dGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmMyPjo6dHlwZT46OnZhbHVlPj4K
LSAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUs
IEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQor
ICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSwgRnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rp
b24pCiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICAKQEAgLTI0
MjEsNyArMjQyMSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxp
bmVDb2RlQmxvY2sgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRo
UHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAgICBCaW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlB
cml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAg
YXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAg
ICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsK
ICAgICAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPihhcml0aFBy
b2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKQEAgLTMw
OTksNyArMzA5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9u
b2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVD
b2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4
KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxv
Y2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAg
IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+dW5h
cnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICBh
dXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemU7CiAg
ICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7
CiAgICAgICAgIGNvbXBpbGVVbmFyeU1hdGhJQzxKSVROZWdHZW5lcmF0b3I+KGFyaXRoUHJvZmls
ZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggYjVlZmUyNjgwNDYuLjJiNGE1ZDY0YmYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKQEAgLTkxOSw3ICs5MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ly8gSXQgd2lsbCBnaXZlIHRoZSBzbG93IHBhdGggdGhlIHNhbWUgdmFsdWUgcmVhZCBieSB0aGUg
ZmFzdCBwYXRoLgogICAgICAgICBHZXRQdXRJbmZvIGNvcGllZEdldFB1dEluZm8oT3BQdXRUb1Nj
b3BlKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmluYXJ5T3A+Ci0gICAgICAgIEFyaXRo
UHJvZmlsZSBjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3ApOworICAgICAgICBCaW5hcnlBcml0
aFByb2ZpbGUgY29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wKTsKIAogICAgICAgICBJbnRlcnBy
ZXRlciogbV9pbnRlcnByZXRlcjsKIApAQCAtOTM5LDcgKzkzOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBWZWN0b3I8U3dpdGNoUmVjb3JkPiBtX3N3aXRjaGVzOwogCiAgICAgICAgIEhh
c2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkPiBtX2NvcGllZEdldFB1dEluZm9zOwotICAgICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBBcml0aFByb2ZpbGU+IG1fY29waWVkQXJpdGhQcm9maWxlczsKKyAg
ICAgICAgSGFzaE1hcDx1aW50NjRfdCwgQmluYXJ5QXJpdGhQcm9maWxlPiBtX2NvcGllZEFyaXRo
UHJvZmlsZXM7CiAKICAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3M7CiAgICAgICAg
IEp1bXBMaXN0IG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCmluZGV4IDYyN2FmMjc4
N2UwLi43NDBiMmVkOGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBZGRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRk
R2VuZXJhdG9yLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklU
TWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxI
ZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdlbmVyYXRv
cjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAg
IC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRpbmcgaW50MzIuCiAgICAgT2JzZXJ2ZWRUeXBlIGxo
cyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwpAQCAtNzMsNyArNzMsNyBAQCBKSVRNYXRo
SUNJbmxpbmVSZXN1bHQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBl
cnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6OkdlbmVy
YXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlz
dCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZykKK2Jvb2wgSklU
QWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xv
d1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJv
b2wgc2hvdWxkRW1pdFByb2ZpbGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IElu
dmFsaWRHUFJSZWcpOwogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9sZWZ0LnBheWxvYWRH
UFIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAppbmRl
eCA0ZGMzNGEyZjViNi4uNjc1Y2Y5M2M5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRBZGRHZW5lcmF0b3IuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFT
U0VSVCghbV9sZWZ0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSB8fCAhbV9yaWdodE9wZXJhbmQuaXND
b25zdEludDMyKCkpOwogICAgIH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBBcml0
aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFBy
b2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxs
SGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmls
ZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1Bh
dGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJv
ZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNu
aXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5pc1Bvc2l0aXZl
Q29uc3RJbnQzMigpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0
YW50KFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRPcGVyYW5kLmlz
UG9zaXRpdmVDb25zdEludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwCmluZGV4IGFjMzcyYzlmYmUwLi5iYjYzNWY4ZTc2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NTMsNyArNDUzLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRh
KG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BOZWdhdGU+KCkubWV0YWRhdGEo
bV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE5lZ0lDKiBuZWdhdGVJQyA9IG1f
Y29kZUJsb2NrLT5hZGRKSVROZWdJQyhhcml0aFByb2ZpbGUpOwogICAgIG1faW5zdHJ1Y3Rpb25U
b01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBuZWdhdGVJQyk7CiAgICAgZW1pdE1hdGhJ
Q0Zhc3Q8T3BOZWdhdGU+KG5lZ2F0ZUlDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJhdGlvbkFy
aXRoTmVnYXRlUHJvZmlsZWQsIG9wZXJhdGlvbkFyaXRoTmVnYXRlKTsKQEAgLTYzNCwxNCArNjM0
LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdXJzaGlmdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY3VycmVudEluc3RydWN0
aW9uLCBvcF91cnNoaWZ0KTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgT3BlcmFuZFR5cGVz
IGdldE9wZXJhbmRUeXBlcyhjb25zdCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKLXsKLSAg
ICByZXR1cm4gT3BlcmFuZFR5cGVzKGFyaXRoUHJvZmlsZS5saHNSZXN1bHRUeXBlKCksIGFyaXRo
UHJvZmlsZS5yaHNSZXN1bHRUeXBlKCkpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9hZGQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQWRkPigpLm1ldGFkYXRh
KG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQWRkPigpLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVRBZGRJQyogYWRkSUMgPSBtX2NvZGVC
bG9jay0+YWRkSklUQWRkSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRo
SUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYWRkSUMpOwogICAgIGVtaXRNYXRoSUNGYXN0PE9w
QWRkPihhZGRJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVk
LCBvcGVyYXRpb25WYWx1ZUFkZCk7CkBAIC02ODYsNyArNjgxLDcgQEAgdm9pZCBKSVQ6OmVtaXRN
YXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1
Y3Rpb24qIGMKIAogICAgIGJvb2wgZ2VuZXJhdGVkSW5saW5lQ29kZSA9IG1hdGhJQy0+Z2VuZXJh
dGVJbmxpbmUoKnRoaXMsIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZSk7CiAgICAgaWYgKCFnZW5lcmF0
ZWRJbmxpbmVDb2RlKSB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbWF0
aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUg
JiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhS
ZXN1bHQocHJvZmlsZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBzcmNSZWdzLCBhcml0aFByb2ZpbGUpOwogICAgICAgICBl
bHNlCkBAIC03MDksNyArNzA0LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0eXBlbmFtZSBH
ZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIE4KIHZvaWQgSklU
OjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uIHByb2Zp
bGVkRnVuY3Rpb24sIE5vblByb2ZpbGVkRnVuY3Rpb24gbm9uUHJvZmlsZWRGdW5jdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBP
cGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY29waWVkQXJpdGhQcm9maWxlKGJ5
dGVjb2RlKSk7CiAgICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAg
IGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNv
ZGUubV9yaHMub2Zmc2V0KCk7CkBAIC03MjgsOCArNzIyLDggQEAgdm9pZCBKSVQ6OmVtaXRNYXRo
SUNGYXN0KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0
aW9uKgogICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gZnBSZWdUMjsKICNlbmRpZgogCi0gICAgU25p
cHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMuZmlyc3QoKSk7Ci0gICAgU25pcHBldE9wZXJh
bmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0
T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5maXJzdCgpKTsKKyAgICBTbmlwcGV0T3Bl
cmFuZCByaWdodE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuc2Vjb25kKCkpOwogCiAg
ICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkpCiAgICAgICAgIGxlZnRPcGVyYW5kLnNl
dENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSkpOwpAQCAtNzU5LDcgKzc1Myw3
IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiog
bWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIob3AxLCBsZWZ0UmVncyk7CiAgICAgICAgIGVsc2UgaWYgKHJpZ2h0T3BlcmFuZC5pc0Nv
bnN0KCkpCiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmlnaHRSZWdz
KTsKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJv
ZmlsZSgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJ
Qy0+YXJpdGhQcm9maWxlKCk7CiAgICAgICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1p
dFByb2ZpbGluZygpKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQocHJvZmls
ZWRGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBhcml0aFByb2ZpbGUpOwogICAgICAgICBl
bHNlCkBAIC03OTksNyArNzkzLDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5
TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGMKICAgICBhdXRv
IHNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogI2VuZGlmCiAKLSAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgVW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgaWYgKGFyaXRo
UHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgaWYgKG1hdGhJQ0dl
bmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCiAgICAgICAgICAgICBtYXRoSUNH
ZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQocmVp
bnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HSk1pYz4ocHJvZmlsZWRSZXBhdGNoRnVuY3Rp
b24pLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIHNyY1JlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElDKSk7CkBAIC04MzEsNyArODI1LDYgQEAg
dm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRo
SUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93UGF0
aFN0YXJ0ID0gbGFiZWwoKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wPigpOwotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRUeXBlcyhj
b3BpZWRBcml0aFByb2ZpbGUoYnl0ZWNvZGUpKTsKICAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUu
bV9kc3Qub2Zmc2V0KCk7CiAgICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwog
ICAgIGludCBvcDIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKQEAgLTg0Niw4ICs4MzksOCBA
QCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1h
dGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IGxl
ZnRSZWdzOwogI2VuZGlmCiAgICAgCi0gICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlw
ZXMuZmlyc3QoKSk7Ci0gICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29u
ZCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRU
eXBlcy5maXJzdCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYnl0ZWNvZGUu
bV9vcGVyYW5kVHlwZXMuc2Vjb25kKCkpOwogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50
KG9wMSkpCiAgICAgICAgIGxlZnRPcGVyYW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0
YW50SW50KG9wMSkpOwpAQCAtODY1LDcgKzg1OCw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xv
dyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioK
ICAgICBhdXRvIHNsb3dQYXRoU3RhcnQgPSBsYWJlbCgpOwogI2VuZGlmCiAKLSAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOwogICAg
IGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGlm
IChtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2hvdWxkU2xvd1BhdGhSZXBhdGNoKQogICAgICAgICAg
ICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb25XaXRo
UmVzdWx0KGJpdHdpc2VfY2FzdDxKX0pJVE9wZXJhdGlvbl9HSkpNaWM+KHByb2ZpbGVkUmVwYXRj
aEZ1bmN0aW9uKSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBsZWZ0UmVncywgcmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwpA
QCAtODkzLDE5ICs4ODYsMTYgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1h
dGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVt
aXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEaXY+KCk7Ci0gICAgYXV0
byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgaW50IHJl
c3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGludCBvcDEgPSBieXRlY29kZS5t
X2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IGdldE9wZXJhbmRU
eXBlcyhtZXRhZGF0YS5tX2FyaXRoUHJvZmlsZSk7CiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3Mg
PSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNWYWx1
ZVJlZ3MocmVnVDEpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKICAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1QyOwogI2Vsc2UKLSAgICBPcGVyYW5kVHlwZXMgdHlw
ZXMgPSBnZXRPcGVyYW5kVHlwZXMobWV0YWRhdGEubV9hcml0aFByb2ZpbGUpOwogICAgIEpTVmFs
dWVSZWdzIGxlZnRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKU1ZhbHVl
UmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpOwogICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKQEAgLTkxMywxMiArOTAzLDEyIEBAIHZvaWQgSklU
OjplbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2Vu
ZGlmCiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogCi0gICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBudWxscHRyOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQ
cm9maWxlID0gbnVsbHB0cjsKICAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAgICAg
ICBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0aW9uLT5hczxPcERpdj4oKS5tZXRhZGF0
YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAKLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0
T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQo
dHlwZXMuc2Vjb25kKCkpOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGJ5dGVjb2Rl
Lm1fb3BlcmFuZFR5cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFu
ZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5zZWNvbmQoKSk7CiAKICAgICBpZiAoaXNPcGVyYW5k
Q29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRP
cGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CkBAIC05NjAsNyArOTUwLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQg
SklUOjplbWl0X29wX211bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BNdWw+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIEpJVE11
bElDKiBtdWxJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUpOwogICAg
IG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBtdWxJQyk7CiAg
ICAgZW1pdE1hdGhJQ0Zhc3Q8T3BNdWw+KG11bElDLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wZXJh
dGlvblZhbHVlTXVsUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlTXVsKTsKQEAgLTk3Niw3ICs5NjYs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdWIoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1ldGFkYXRh
KG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3ViPigpLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2NvZGVC
bG9jay0+YWRkSklUU3ViSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRo
SUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlvbiwgc3ViSUMpOwogICAgIGVtaXRNYXRoSUNGYXN0PE9w
U3ViPihzdWJJQywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVk
LCBvcGVyYXRpb25WYWx1ZVN1Yik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVERpdkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERp
dkdlbmVyYXRvci5jcHAKaW5kZXggNjZlMWJlMTRhOGQuLmJlNmQ0ZDQwYzQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCkBAIC0xMzAsNyArMTMw
LDcgQEAgdm9pZCBKSVREaXZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQpCiAgICAgbm90RG91YmxlWmVyby5saW5rKCZqaXQpOwogI2VuZGlmCiAgICAgaWYgKG1f
YXJpdGhQcm9maWxlKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihBcml0aFByb2ZpbGU6OnNwZWNpYWxGYXN0UGF0aEJpdCksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKG1fYXJpdGhQcm9maWxlLT5hZGRyZXNzT2ZCaXRzKCkpKTsKKyAgICAgICAgbV9h
cml0aFByb2ZpbGUtPmVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgQmluYXJ5QXJpdGhQcm9maWxl
OjpzcGVjaWFsRmFzdFBhdGhCaXQpOwogICAgIGppdC5ib3hEb3VibGUobV9sZWZ0RlBSLCBtX3Jl
c3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5o
CmluZGV4IDgzOTY2Nzc5NDNmLi43MDhkYjEwZDZjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVERpdkdlbmVyYXRvci5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBK
SVREaXZHZW5lcmF0b3IoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQsIFNuaXBwZXRPcGVyYW5k
IHJpZ2h0T3BlcmFuZCwKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBs
ZWZ0LCBKU1ZhbHVlUmVncyByaWdodCwKICAgICAgICAgRlBSUmVnIGxlZnRGUFIsIEZQUlJlZyBy
aWdodEZQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEZQUlJlZyBzY3JhdGNoRlBSLAotICAgICAgICBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHIpCisgICAgICAgIEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlID0gbnVsbHB0cikKICAgICAgICAgOiBtX2xlZnRPcGVyYW5k
KGxlZnRPcGVyYW5kKQogICAgICAgICAsIG1fcmlnaHRPcGVyYW5kKHJpZ2h0T3BlcmFuZCkKICAg
ICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAg
R1BSUmVnIG1fc2NyYXRjaEdQUjsKICAgICBGUFJSZWcgbV9zY3JhdGNoRlBSOwogICAgIGJvb2wg
bV9kaWRFbWl0RmFzdFBhdGggeyBmYWxzZSB9OwotICAgIEFyaXRoUHJvZmlsZSogbV9hcml0aFBy
b2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKIAogICAgIEND
YWxsSGVscGVyczo6SnVtcExpc3QgbV9lbmRKdW1wTGlzdDsKICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IG1fc2xvd1BhdGhKdW1wTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKaW5kZXggNjJlYWI5Yjk3ZmEuLjI1YmNjMmI5YzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaApAQCAtNzE2LDEzICs3MTYsMTMgQEAgQUxXQVlTX0lOTElORSBH
ZXRQdXRJbmZvIEpJVDo6Y29waWVkR2V0UHV0SW5mbyhPcFB1dFRvU2NvcGUgYnl0ZWNvZGUpCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJpbmFyeU9wPgotQUxXQVlTX0lOTElORSBBcml0aFByb2Zp
bGUgSklUOjpjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCitBTFdBWVNfSU5M
SU5FIEJpbmFyeUFyaXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCBi
eXRlY29kZSkKIHsKICAgICB1aW50NjRfdCBrZXkgPSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEJp
bmFyeU9wOjpvcGNvZGVJRCkgKyAxKSA8PCAzMiB8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihieXRl
Y29kZS5tX21ldGFkYXRhSUQpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NvcGllZEFyaXRoUHJv
ZmlsZXMuZmluZChrZXkpOwogICAgIGlmIChpdGVyYXRvciAhPSBtX2NvcGllZEFyaXRoUHJvZmls
ZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci0gICAgQXJpdGhQcm9m
aWxlIGFyaXRoUHJvZmlsZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRo
UHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxlOwogICAgIG1fY29waWVkQXJpdGhQ
cm9maWxlcy5hZGQoa2V5LCBhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBhcml0aFByb2ZpbGU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAppbmRleCA1NjQ1ZTQyZGVmZi4u
ZmRhZWM5Mjc1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0
aElDLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaApAQCAtNTIs
MTEgKzUyLDExIEBAIHN0cnVjdCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUgewogCiAjZGVmaW5lIEVO
QUJMRV9NQVRIX0lDX1NUQVRTIDAKIAotdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGUs
IGJvb2woKmlzUHJvZmlsZUVtcHR5KShBcml0aFByb2ZpbGUmKT4KK3RlbXBsYXRlIDx0eXBlbmFt
ZSBHZW5lcmF0b3JUeXBlLCB0eXBlbmFtZSBBcml0aFByb2ZpbGVUeXBlPgogY2xhc3MgSklUTWF0
aElDIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBKSVRNYXRo
SUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAgSklUTWF0aElDKEFyaXRoUHJvZmls
ZVR5cGUqIGFyaXRoUHJvZmlsZSkKICAgICAgICAgOiBtX2FyaXRoUHJvZmlsZShhcml0aFByb2Zp
bGUpCiAgICAgewogICAgIH0KQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICBzaXpl
X3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7CiAKICAg
ICAgICAgaWYgKG1fYXJpdGhQcm9maWxlKSB7Ci0gICAgICAgICAgICBpZiAoaXNQcm9maWxlRW1w
dHkoKm1fYXJpdGhQcm9maWxlKSkgeworICAgICAgICAgICAgaWYgKG1fYXJpdGhQcm9maWxlLT5p
c09ic2VydmVkVHlwZUVtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCBsb29rcyBsaWtl
IHRoZSBNYXRoSUMgaGFzIHlldCB0byBleGVjdXRlLiBXZSBkb24ndCB3YW50IHRvIGVtaXQgY29k
ZSBpbiB0aGlzCiAgICAgICAgICAgICAgICAgLy8gY2FzZSBmb3IgYSBjb3VwbGUgcmVhc29ucy4g
Rmlyc3QsIHRoZSBvcGVyYXRpb24gbWF5IG5ldmVyIGV4ZWN1dGUsIHNvIGlmIHdlIGRvbid0IGVt
aXQKICAgICAgICAgICAgICAgICAvLyBjb2RlLCBpdCdzIGEgd2luLiBTZWNvbmQsIGlmIHRoZSBv
cGVyYXRpb24gZG9lcyBleGVjdXRlLCB3ZSBjYW4gZW1pdCBiZXR0ZXIgY29kZQpAQCAtMjIzLDcg
KzIyMyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9zbG93UGF0aFN0YXJ0TG9jYXRpb24gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oc3RhdGUuc2xvd1BhdGhTdGFydCk7
CiAgICAgfQogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUoKSBjb25zdCB7IHJldHVy
biBtX2FyaXRoUHJvZmlsZTsgfQorICAgIEFyaXRoUHJvZmlsZVR5cGUqIGFyaXRoUHJvZmlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYXJpdGhQcm9maWxlOyB9CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19T
VEFUUykKICAgICBzaXplX3QgbV9nZW5lcmF0ZWRDb2RlU2l6ZSB7IDAgfTsKQEAgLTIzNiw3ICsy
MzYsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBBcml0aFByb2ZpbGUqIG1fYXJp
dGhQcm9maWxlOworICAgIEFyaXRoUHJvZmlsZVR5cGUqIG1fYXJpdGhQcm9maWxlOwogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gbV9jb2RlOwogICAgIENv
ZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1faW5saW5lU3RhcnQ7CiAgICAgQ29k
ZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9pbmxpbmVFbmQ7CkBAIC0yNDYsMTUg
KzI0NiwxMSBAQCBwdWJsaWM6CiAgICAgR2VuZXJhdG9yVHlwZSBtX2dlbmVyYXRvcjsKIH07CiAK
LWlubGluZSBib29sIGlzQmluYXJ5UHJvZmlsZUVtcHR5KEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9m
aWxlKQotewotICAgIHJldHVybiBhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0
eSgpIHx8IGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7Ci19CiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZT4KLWNsYXNzIEpJVEJpbmFyeU1hdGhJQyA6IHB1
YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQcm9maWxlRW1wdHk+IHsKK2Ns
YXNzIEpJVEJpbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgQmlu
YXJ5QXJpdGhQcm9maWxlPiB7CiBwdWJsaWM6Ci0gICAgSklUQmluYXJ5TWF0aElDKEFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlKQotICAgICAgICA6IEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBp
c0JpbmFyeVByb2ZpbGVFbXB0eT4oYXJpdGhQcm9maWxlKQorICAgIEpJVEJpbmFyeU1hdGhJQyhC
aW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKKyAgICAgICAgOiBKSVRNYXRoSUM8R2Vu
ZXJhdG9yVHlwZSwgQmluYXJ5QXJpdGhQcm9maWxlPihhcml0aFByb2ZpbGUpCiAgICAgewogICAg
IH0KIH07CkBAIC0yNjMsMTYgKzI1OSwxMSBAQCB0eXBlZGVmIEpJVEJpbmFyeU1hdGhJQzxKSVRB
ZGRHZW5lcmF0b3I+IEpJVEFkZElDOwogdHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUTXVsR2Vu
ZXJhdG9yPiBKSVRNdWxJQzsKIHR5cGVkZWYgSklUQmluYXJ5TWF0aElDPEpJVFN1YkdlbmVyYXRv
cj4gSklUU3ViSUM7CiAKLQotaW5saW5lIGJvb2wgaXNVbmFyeVByb2ZpbGVFbXB0eShBcml0aFBy
b2ZpbGUmIGFyaXRoUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gYXJpdGhQcm9maWxlLmxoc09ic2Vy
dmVkVHlwZSgpLmlzRW1wdHkoKTsKLX0KIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3JUeXBl
PgotY2xhc3MgSklUVW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUs
IGlzVW5hcnlQcm9maWxlRW1wdHk+IHsKK2NsYXNzIEpJVFVuYXJ5TWF0aElDIDogcHVibGljIEpJ
VE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBVbmFyeUFyaXRoUHJvZmlsZT4gewogcHVibGljOgotICAg
IEpJVFVuYXJ5TWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQotICAgICAgICA6IEpJ
VE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5Pihhcml0aFByb2ZpbGUp
CisgICAgSklUVW5hcnlNYXRoSUMoVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKKyAg
ICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgVW5hcnlBcml0aFByb2ZpbGU+KGFyaXRo
UHJvZmlsZSkKICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTXVsR2VuZXJhdG9yLmNwcAppbmRleCA4M2QyOTNiNjI1Mi4uOTQ0ODdjMDUyNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRN
dWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJ
VE1hdGhJQ0lubGluZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxs
SGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBCaW5hcnlB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1
bGF0aW5nIGludDMyLgogICAgIE9ic2VydmVkVHlwZSBsaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRo
SW50MzIoKTsKQEAgLTg5LDcgKzg5LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE11bEdl
bmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICBy
ZXR1cm4gSklUTWF0aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0OwogfQogCi1i
b29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExp
c3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBi
b29sIHNob3VsZEVtaXRQcm9maWxpbmcpCitib29sIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVt
cExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJp
bmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcp
CiB7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NF
UlQobV9zY3JhdGNoR1BSICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpAQCAtMjA1LDE4ICsyMDUs
MTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKIAogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgbm90TmVnYXRpdmVaZXJvID0gaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6Tm90RXF1YWws
IG1fcmVzdWx0LnBheWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQobmVnYXRp
dmVaZXJvQml0cykpOwogCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGFyaXRoUHJv
ZmlsZS0+ZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBCaW5hcnlBcml0aFByb2ZpbGU6Ok5lZ1pl
cm9Eb3VibGUpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7
CiAKICAgICAgICAgbm90TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJs
ZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09m
Qml0cygpKSk7CisgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0
LCBCaW5hcnlBcml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpOwogCiAgICAgICAgIGppdC5t
b3ZlKG1fcmVzdWx0LnBheWxvYWRHUFIoKSwgbV9zY3JhdGNoR1BSKTsKICAgICAgICAgaml0LnVy
c2hpZnRQdHIoQ0NhbGxIZWxwZXJzOjpJbW0zMig1MiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAg
IGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKDB4N2ZmKSwgbV9zY3JhdGNoR1BSKTsKICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vSW50NTJPdmVyZmxvdyA9IGppdC5icmFuY2gzMihD
Q2FsbEhlbHBlcnM6Okxlc3NUaGFuT3JFcXVhbCwgbV9zY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigweDQzMSkpOwogCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6
QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAg
IGFyaXRoUHJvZmlsZS0+ZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBCaW5hcnlBcml0aFByb2Zp
bGU6OkludDUyT3ZlcmZsb3cpOwogICAgICAgICBub0ludDUyT3ZlcmZsb3cubGluaygmaml0KTsK
IAogICAgICAgICBkb25lLmxpbmsoJmppdCk7CkBAIC0yMjcsMTggKzIyNywxOCBAQCBib29sIEpJ
VE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdAogICAgICAgICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFu
Y2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDApKSk7CiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5hcHBl
bmQoaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIG1fcmVzdWx0LnRhZ0dQUigp
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihuZWdhdGl2ZVplcm9CaXRzID4+IDMyKSkpOwog
Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmls
ZTo6TmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJv
ZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFVuY29u
ZGl0aW9uYWxTZXQoaml0LCBCaW5hcnlBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpOwogICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5qdW1wKCk7CiAKICAgICAgICAgbm90
TmVnYXRpdmVaZXJvLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKEFyaXRoUHJvZmlsZTo6Tm9uTmVnWmVyb0RvdWJsZSksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisgICAg
ICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFVuY29uZGl0aW9uYWxTZXQoaml0LCBCaW5hcnlBcml0aFBy
b2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpOwogCiAgICAgICAgIGppdC5tb3ZlKG1fcmVzdWx0LnRh
Z0dQUigpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQudXJzaGlmdFB0cihDQ2FsbEhlbHBl
cnM6OkltbTMyKDUyIC0gMzIpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQuYW5kMzIoQ0Nh
bGxIZWxwZXJzOjpJbW0zMigweDdmZiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcCBub0ludDUyT3ZlcmZsb3cgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpM
ZXNzVGhhbk9yRXF1YWwsIG1fc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MHg0MzEpKTsKLSAgICAgICAgCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEFyaXRoUHJvZmlsZTo6SW50NTJPdmVyZmxvdyksIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKGFyaXRoUHJvZmlsZS0+YWRkcmVzc09mQml0cygpKSk7CisKKyAgICAgICAgYXJp
dGhQcm9maWxlLT5lbWl0VW5jb25kaXRpb25hbFNldChqaXQsIEJpbmFyeUFyaXRoUHJvZmlsZTo6
SW50NTJPdmVyZmxvdyk7CiAKICAgICAgICAgZW5kSnVtcExpc3QuYXBwZW5kKG5vSW50NTJPdmVy
Zmxvdyk7CiAgICAgICAgIGlmIChtX3NjcmF0Y2hHUFIgPT0gbV9yZXN1bHQudGFnR1BSKCkgfHwg
bV9zY3JhdGNoR1BSID09IG1fcmVzdWx0LnBheWxvYWRHUFIoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCmluZGV4IDM2ZDI2ZWExMjRlLi42MDg3Nzk2Njg1
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5oCkBAIC01
Niw4ICs1Niw4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzUG9z
aXRpdmVDb25zdEludDMyKCkgfHwgIW1fcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMy
KCkpOwogICAgIH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShD
Q2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBBcml0aFByb2ZpbGUq
KTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dKdW1w
TGlzdCwgY29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAg
ICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0
aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9v
bCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3Qm
IGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93SnVtcExpc3QsIGNvbnN0
IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CiAKICAgICBz
dGF0aWMgYm9vbCBpc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCBsZWZ0
T3BlcmFuZCkgeyByZXR1cm4gbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQog
ICAgIHN0YXRpYyBib29sIGlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFu
ZCByaWdodE9wZXJhbmQpIHsgcmV0dXJuIHJpZ2h0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQz
MigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAK
aW5kZXggOTJjMjlkZDYzMGEuLmNlZWJlMzkwOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQg
SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSkKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAg
IEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gbV9zcmMucGF5bG9hZEdQUigpKTsKQEAgLTQ1LDcgKzQ1
LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVJbmxp
bmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1
bGF0aW5nIGludDMyLgogICAgIE9ic2VydmVkVHlwZSBvYnNlcnZlZFR5cGVzID0gT2JzZXJ2ZWRU
eXBlKCkud2l0aEludDMyKCk7CiAgICAgaWYgKGFyaXRoUHJvZmlsZSkKLSAgICAgICAgb2JzZXJ2
ZWRUeXBlcyA9IGFyaXRoUHJvZmlsZS0+bGhzT2JzZXJ2ZWRUeXBlKCk7CisgICAgICAgIG9ic2Vy
dmVkVHlwZXMgPSBhcml0aFByb2ZpbGUtPmFyZ09ic2VydmVkVHlwZSgpOwogICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIW9ic2VydmVkVHlwZXMuaXNFbXB0eSgpLCAiV2Ugc2hvdWxkIG5vdCBhdHRl
bXB0IHRvIGdlbmVyYXRlIGFueXRoaW5nIGlmIHdlIGRvIG5vdCBoYXZlIGEgcHJvZmlsZS4iKTsK
IAogICAgIGlmIChvYnNlcnZlZFR5cGVzLmlzT25seU5vbk51bWJlcigpKQpAQCAtODIsNyArODIs
NyBAQCBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGlu
ZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDRwogICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVS
ZXN1bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7CiB9CiAKLWJvb2wgSklUTmVnR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwg
Y29uc3QgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGlu
ZykKK2Jvb2wgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYg
aml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0
Y2hHUFIgIT0gbV9zcmMucGF5bG9hZEdQUigpKTsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9
IG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBKSVROZWdH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVy
czo6SnVtcExpc3QKICNlbmRpZgogICAgIC8vIFRoZSBmbGFncyBvZiBBcml0aE5lZ2F0ZSBhcmUg
YmFzaWMgaW4gREZHLgogICAgIC8vIFdlIG9ubHkgbmVlZCB0byBrbm93IGlmIHdlIGV2ZXIgcHJv
ZHVjZWQgYSBudW1iZXIuCi0gICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcgJiYgYXJpdGhQcm9m
aWxlICYmICFhcml0aFByb2ZpbGUtPmxoc09ic2VydmVkVHlwZSgpLnNhd051bWJlcigpICYmICFh
cml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICBpZiAoc2hvdWxkRW1pdFByb2Zp
bGluZyAmJiBhcml0aFByb2ZpbGUgJiYgIWFyaXRoUHJvZmlsZS0+YXJnT2JzZXJ2ZWRUeXBlKCku
c2F3TnVtYmVyKCkgJiYgIWFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQogICAgICAg
ICBhcml0aFByb2ZpbGUtPmVtaXRTZXREb3VibGUoaml0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oCmluZGV4IDhhMGMy
ZDUxN2Q2Li43ODdiNzA3NjgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVROZWdHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE5l
Z0dlbmVyYXRvci5oCkBAIC00Myw4ICs0Myw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3NjcmF0
Y2hHUFIoc2NyYXRjaEdQUikKICAgICB7IH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBn
ZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25z
dCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxk
RW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IFVuYXJ5QXJpdGhQ
cm9maWxlKik7CisgICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxs
SGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBz
bG93UGF0aEp1bXBMaXN0LCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wgc2hvdWxkRW1p
dFByb2ZpbGluZyk7CiAKIHByaXZhdGU6CiAgICAgSlNWYWx1ZVJlZ3MgbV9yZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0N2RlYjhjZTZh
YS4uM2E5ZTg1YTA4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtMjY0NSw3ICsyNjQ1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkV4Y2VwdGlvbkZ1enooSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICNlbmRpZiAvLyBD
T01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1
ZSBwcm9maWxlZEFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wMSwg
SlNWYWx1ZSBvcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlKQorQUxXQVlTX0lOTElORSBz
dGF0aWMgSlNWYWx1ZSBwcm9maWxlZEFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIG9wMSwgSlNWYWx1ZSBvcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxl
KQogewogICAgIGFyaXRoUHJvZmlsZS5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzQWRkKGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpOwpAQCAtMjY2MSw3
ICsyNjYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFk
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQWRkKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIs
IEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI2NzksNyArMjY3
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9m
aWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMik7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5h
cml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFk
ZElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBhcml0
aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwogICAgIGF1dG8gbm9uT3B0aW1p
emVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemU7CkBAIC0yNzAx
LDcgKzI3MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
QWRkUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb2ZpbGVkQWRk
KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMiksICphcml0aFByb2ZpbGUpKTsKIH0KQEAgLTI3MTYsNyArMjcxNiw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMik7CiAKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlv
blZhbHVlQWRkTm9PcHRpbWl6ZTsKLSAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBhZGRJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpKQogICAgICAgICBhcml0aFByb2ZpbGUt
Pm9ic2VydmVMSFNBbmRSSFMob3AxLCBvcDIpOwogICAgIGFkZElDLT5nZW5lcmF0ZU91dE9mTGlu
ZShjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0yNzQ5
LDcgKzI3NDksNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2Zp
bGVkTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc011bChnbG9iYWxPYmplY3QsIG9wMSwgb3AyKSk7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNB
bmRSSFNUeXBlcyA9IHRydWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBw
cm9maWxlZE11bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUm
IGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNzkwLDcgKzI3OTAsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iagogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0
aW9uVmFsdWVNdWxOb09wdGltaXplOwotICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKKyAgICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCkpCiAgICAgICAgIGFyaXRoUHJvZmls
ZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AyKSk7CiAgICAgbXVsSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI4MDEsNyArMjgw
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIHVucHJvZmlsZWRNdWwo
Z2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yODE3LDcgKzI4MTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCogZwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0
aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElD
LT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBhcml0aFBy
b2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0g
b3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE5vT3B0aW1pemU7CkBAIC0yODM2LDcgKzI4MzYsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRO
b09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9m
aWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBl
bmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KQEAgLTI4NjIsNyArMjg2Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKIAogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cGVyYW5kLCBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQogewogICAgIEFTU0VSVChh
cml0aFByb2ZpbGUpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTI4NzEs
NyArMjg3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNWYWx1
ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKLSAgICBhcml0aFBy
b2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlQXJn
KG9wZXJhbmQpOwogCiAgICAgSlNWYWx1ZSBwcmltVmFsdWUgPSBvcGVyYW5kLnRvUHJpbWl0aXZl
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CkBAIC0yODk5LDkgKzI4OTksOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdAog
ICAgIAogICAgIEpTVmFsdWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFu
ZCk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2Zp
bGUoKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRo
UHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwotICAgIGFyaXRoUHJvZmlsZS0+
b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFu
ZCk7CiAgICAgbmVnSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCks
IG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQpOwogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RB
VFMpCkBAIC0yOTMzLDggKzI5MzMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogCiAgICAg
SlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIAotICAg
IGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKSkK
LSAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIGlmIChVbmFy
eUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRoUHJvZmlsZSgpKQorICAg
ICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVBcmcob3BlcmFuZCk7CiAgICAgbmVnSUMtPmdlbmVy
YXRlT3V0T2ZMaW5lKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksIG9wZXJhdGlvbkFyaXRoTmVnYXRl
KTsKIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpAQCAtMjk2MCw3ICsyOTYwLDcgQEAgQUxX
QVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9maWxlZFN1YihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdWIoZ2xv
YmFsT2JqZWN0LCBvcDEsIG9wMikpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBwcm9maWxlZFN1YihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEFy
aXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBl
cyA9IHRydWUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZFN1
YihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRoUHJvZmlsZSYg
YXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yOTg0LDcg
KzI5ODQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3Vi
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogICAgIHJldHVybiB1bnByb2ZpbGVk
U3ViKGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlKTsKIApAQCAtMzAwMiw3ICszMDAyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmoKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJh
dGlvblZhbHVlU3ViTm9PcHRpbWl6ZTsKLSAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCkpCisgICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpKQogICAgICAgICBhcml0aFByb2Zp
bGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIHN1YklDLT5nZW5lcmF0ZU91dE9mTGluZShjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCkBAIC0zMDI4LDcgKzMw
MjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJv
ZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKKyAgICBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJp
dGhQcm9maWxlKTsKICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIGF1
dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1p
emU7CkBAIC0zMDQ3LDcgKzMwNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAg
ICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKKyAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUo
KTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWRTdWIodm0s
IGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDM3ZTgzNjE1
ZDQ3Li41OTVhZWM0N2NkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTM4LDYgKzM4LDggQEAgdHlwZWRlZiBpbnQ2NF90IEVuY29kZWRKU1ZhbHVlOwog
ICAgIAogY2xhc3MgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKIGNsYXNzIEFycmF5UHJvZmlsZTsK
K2NsYXNzIFVuYXJ5QXJpdGhQcm9maWxlOworY2xhc3MgQmluYXJ5QXJpdGhQcm9maWxlOwogY2xh
c3MgQnV0dGVyZmx5OwogY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgQ2FsbExpbmtJbmZvOwpAQCAt
NjQsNyArNjYsNiBAQCBjbGFzcyBXYXRjaHBvaW50U2V0Owogc3RydWN0IEJ5VmFsSW5mbzsKIHN0
cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci1zdHJ1Y3QgQXJpdGhQ
cm9maWxlOwogCiBleHRlcm4gIkMiIHsKIApAQCAtNzcsNyArNzgsNyBAQCB0eXBlZGVmIGNoYXIq
IFVudXNlZFB0cjsKICAgICBBOiBKU0FycmF5KgogICAgIEFhcDogQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZSoKICAgICBBcDogQXJyYXlQcm9maWxlKgotICAgIEFycDogQXJpdGhQcm9maWxlKgorICAg
IEFycDogQmluYXJ5QXJpdGhQcm9maWxlKgogICAgIEI6IEJ1dHRlcmZseSoKICAgICBCeTogQnlW
YWxJbmZvKgogICAgIEM6IEpTQ2VsbCoKQEAgLTI4Miw3ICsyODMsNyBAQCBpbnQzMl90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ2hlY2tJZkV4Y2VwdGlvbklzVW5jYXRjaGFibGVBbmROb3RpZnlQ
cm9maWxlcihWTQogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0
b20oSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTT2JqZWN0
KiBjb25zdHJ1Y3RvciwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSBXVEZfSU5U
RVJOQUw7CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGQo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBX
VEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
QWRkUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmls
ZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkTm9PcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklU
QWRkSUMqKSBXVEZfSU5URVJOQUw7CkBAIC0yOTIsMTMgKzI5MywxMyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSgogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11
bE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRNdWxJQyopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMiwgSklUTXVsSUMqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUq
KSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlTXVsUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRl
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCk7Ci1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSBvcGVyYW5kLCBBcml0aFByb2ZpbGUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQsIFVuYXJ5QXJpdGhQcm9maWxlKik7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVRO
ZWdJQyopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0
ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wZXJhbmQs
IEpJVE5lZ0lDKik7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
U3ViKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxl
KikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZVN1YlByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKikgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1Yk9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViTm9PcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIsIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJ
QyopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3ViR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2Vu
ZXJhdG9yLmNwcAppbmRleCA3OTVjMjc1ODRjMC4uN2IxYThiODE5ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0
b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE1hdGhJQ0lu
bGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYg
aml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBCaW5hcnlBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1bGF0aW5nIGlu
dDMyLgogICAgIE9ic2VydmVkVHlwZSBsaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsK
QEAgLTc4LDcgKzc4LDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVFN1YkdlbmVyYXRvcjo6
Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICByZXR1cm4gSklU
TWF0aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0OwogfQogCi1ib29sIEpJVFN1
YkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQ
YXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3Vs
ZEVtaXRQcm9maWxpbmcpCitib29sIEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIEND
YWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRo
UHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAgICAg
QVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQobV9zY3Jh
dGNoR1BSICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3ViR2VuZXJhdG9yLmgKaW5kZXggNTYxZjYzMzRhZTMuLjM0OTFhODNmZWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmgKQEAgLTUzLDggKzUz
LDggQEAgcHVibGljOgogICAgICAgICAsIG1fc2NyYXRjaEZQUihzY3JhdGNoRlBSKQogICAgIHsg
fQogCi0gICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVy
cyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEFyaXRoUHJvZmlsZSopOwotICAgIGJv
b2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwg
Y29uc3QgQXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsKKyAgICBKSVRN
YXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2Vu
ZXJhdGlvblN0YXRlJiwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgYm9vbCBnZW5l
cmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1
bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBC
aW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3Rh
dGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQpIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50
KFNuaXBwZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAppbmRleCA1MWVkNjUzZDk4YS4uMmZkZTEwN2E5ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xNDcsMzYgKzE0Nyw0
OSBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICNlbmRpZgogCiAgICAg
ewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAgICBVbmFyeUFyaXRo
UHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIGFyaXRoUHJvZmlsZS5hcmdTYXdJbnQzMigp
OworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBVbmFyeUFyaXRoUHJvZmls
ZTo6b2JzZXJ2ZWRJbnRCaXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmFyZ09i
c2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFVuYXJ5
QXJpdGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgYXJpdGhQcm9maWxlLmFyZ1Nhd051
bWJlcigpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBVbmFyeUFyaXRo
UHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJCaXRzKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9m
aWxlLmFyZ09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJv
ZmlsZS5saHNTYXdJbnQzMigpOwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3SW50MzIoKTsK
LSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJpdGhQcm9maWxlOjpvYnNl
cnZlZEJpbmFyeUludEludCgpLmJpdHMoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQ
cm9maWxlOjpvYnNlcnZlZEJpbmFyeUludEludCgpLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUlu
dDMyKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5h
cnlJbnRJbnQoKS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZElu
dEludEJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBl
KCkuaXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2
ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQXJpdGhQcm9m
aWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRoUHJvZmls
ZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051bWJlcigpOwogICAgICAgICBhcml0aFBy
b2ZpbGUucmhzU2F3SW50MzIoKTsKLSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkg
PT0gQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgpLmJpdHMoKSk7Ci0gICAg
ICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgp
Lmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VS
VChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkucmhzT2JzZXJ2ZWRUeXBl
KCkuaXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09
IEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJJbnRCaXRzKCkpOworICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAg
ICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigp
KTsKICAgICB9CiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAg
ICAgICBCaW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2Zp
bGUubGhzU2F3TnVtYmVyKCk7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5yaHNTYXdOdW1iZXIoKTsK
LSAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0gQXJpdGhQcm9maWxlOjpvYnNl
cnZlZEJpbmFyeU51bWJlck51bWJlcigpLmJpdHMoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQo
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51bWJlcigpLmxoc09ic2VydmVkVHlw
ZSgpLmlzT25seU51bWJlcigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6
Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVt
YmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFy
aXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFT
U0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOwogICAg
IH0KICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNT
YXdJbnQzMigpOwogICAgICAgICBhcml0aFByb2ZpbGUucmhzU2F3TnVtYmVyKCk7Ci0gICAgICAg
IEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5h
cnlJbnROdW1iZXIoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmls
ZTo6b2JzZXJ2ZWRCaW5hcnlJbnROdW1iZXIoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQz
MigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5
SW50TnVtYmVyKCkucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkpOworICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVk
SW50TnVtYmVyQml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5saHNPYnNlcnZl
ZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5yaHNP
YnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CiAgICAgfQogfQogSUdOT1JFX1dBUk5JTkdT
X0VORApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcAppbmRleCA3OGFkZDAyMDU3NS4uNzEyNWJkNGY1MWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKIAogY29uc3QgaW50NjRfdCogTExJbnRPZmZzZXRz
RXh0cmFjdG9yOjpkdW1teSgpCiB7Ci0vLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2Zm
bGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNvZGUK
Ky8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNl
dF9leHRyYWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCiAvLyB0byBjcmVhdGUgYSB0YWJsZSBv
ZiBvZmZzZXRzLCBzaXplcywgYW5kIGEgaGVhZGVyIGlkZW50aWZ5aW5nIHdoYXQgY29tYmluYXRp
b24gb2YKIC8vIFBsYXRmb3JtLmggbWFjcm9zIHdlIGhhdmUgc2V0LiBXZSBpbmNsdWRlIGl0IGlu
c2lkZSBvZiBhIG1ldGhvZCBvbiBMTEludE9mZnNldHNFeHRyYWN0b3IKIC8vIGJlY2F1c2UgdGhl
IGZpZWxkcyB3aG9zZSBvZmZzZXRzIHdlJ3JlIGV4dHJhY3RpbmcgYXJlIG1vc3RseSBwcml2YXRl
LiBTbyB3ZSBtYWtlIHRoZWlyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYTg4MDBiMGJjYTkuLjU2MDM4N2EzYTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC0yNDEsMTMgKzI0MSwxNSBAQCBjb25zdCBJc0ludmFsaWRhdGVkID0gY29uc3Rl
eHByIElzSW52YWxpZGF0ZWQKICMgU2hhZG93Q2hpY2tlbiBkYXRhCiBjb25zdCBTaGFkb3dDaGlj
a2VuVGFpbE1hcmtlciA9IGNvbnN0ZXhwciBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OnRhaWxNYXJr
ZXJWYWx1ZQogCi0jIEFyaXRoUHJvZmlsZSBkYXRhCi1jb25zdCBBcml0aFByb2ZpbGVJbnQgPSBj
b25zdGV4cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRVbmFyeUludCgpLmJpdHMoKSkKLWNvbnN0
IEFyaXRoUHJvZmlsZU51bWJlciA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZFVu
YXJ5TnVtYmVyKCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlSW50SW50ID0gY29uc3RleHBy
IChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkuYml0cygpKQotY29uc3QgQXJp
dGhQcm9maWxlTnVtYmVySW50ID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmlu
YXJ5TnVtYmVySW50KCkuYml0cygpKQotY29uc3QgQXJpdGhQcm9maWxlSW50TnVtYmVyID0gY29u
c3RleHByIChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCkuYml0cygpKQot
Y29uc3QgQXJpdGhQcm9maWxlTnVtYmVyTnVtYmVyID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6
Om9ic2VydmVkQmluYXJ5TnVtYmVyTnVtYmVyKCkuYml0cygpKQorIyBVbmFyeUFyaXRoUHJvZmls
ZSBkYXRhCitjb25zdCBBcml0aFByb2ZpbGVJbnQgPSBjb25zdGV4cHIgKFVuYXJ5QXJpdGhQcm9m
aWxlOjpvYnNlcnZlZEludEJpdHMoKSkKK2NvbnN0IEFyaXRoUHJvZmlsZU51bWJlciA9IGNvbnN0
ZXhwciAoVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cygpKQorCisjIEJpbmFy
eUFyaXRoUHJvZmlsZSBkYXRhCitjb25zdCBBcml0aFByb2ZpbGVJbnRJbnQgPSBjb25zdGV4cHIg
KEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRJbnRCaXRzKCkpCitjb25zdCBBcml0aFBy
b2ZpbGVOdW1iZXJJbnQgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRO
dW1iZXJJbnRCaXRzKCkpCitjb25zdCBBcml0aFByb2ZpbGVJbnROdW1iZXIgPSBjb25zdGV4cHIg
KEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKCkpCitjb25zdCBBcml0
aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2Jz
ZXJ2ZWROdW1iZXJOdW1iZXJCaXRzKCkpCiAKICMgUG9pbnRlciBUYWdzCiBjb25zdCBCeXRlY29k
ZVB0clRhZyA9IGNvbnN0ZXhwciBCeXRlY29kZVB0clRhZwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBk
MTVkOTY3MjdjNS4uYzg4MGNmOTU5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0xMDAwLDggKzEw
MDAsOCBAQCBlbmQpCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRlLCBPcE5lZ2F0ZSwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAKLSAgICBtYWNy
byBhcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgb3JpIHR5cGUsIE9wTmVnYXRlOjpNZXRhZGF0
YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICBtYWNybyB1
cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAgb3JoIHR5cGUsIE9wTmVnYXRlOjpNZXRh
ZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAg
IGVuZAogCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTAxMCwxMiArMTAxMCwxMiBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdhdGUsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcgogICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3Jj
Tm90SW50CiAgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwogICAgIG5lZ2kg
dDIKLSAgICBhcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQorICAgIHVwZGF0ZUFyaXRoUHJv
ZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAgcmV0dXJuIChJbnQzMlRhZywgdDIpCiAub3BOZWdh
dGVTcmNOb3RJbnQ6CiAgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4
b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgYXJpdGhQcm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikK
KyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlTnVtYmVyKQogICAgIHJldHVybih0
MSwgdDIpCiAKIC5vcE5lZ2F0ZVNsb3c6CkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBlbmQpCiBtYWNy
byBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9w
ZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24pCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgICAgIG1hY3JvIGFyaXRoUHJvZmlsZSh0eXBlKQot
ICAgICAgICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFBy
b2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQmluYXJ5QXJpdGhQcm9m
aWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KaW5kZXggOTVjMGY2OGU1YmUuLmQ5NDkxMDE1ZTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAt
OTgxLDIyICs5ODEsMjQgQEAgZW5kKQogCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfbmVnYXRl
LCBPcE5lZ2F0ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CisKKyAgICBtYWNybyB1cGRhdGVBcml0aFByb2ZpbGUodHlwZSkKKyAgICAgICAgb3JoIHR5cGUs
IE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBVbmFyeUFyaXRoUHJvZmlsZTo6
bV9iaXRzW3QxXQorICAgIGVuZAorCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDApCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAgICAgbWV0YWRhdGEodDEsIHQyKQotICAg
IGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6
Om1fYml0c1t0MV0sIHQyCiAgICAgYnFiIHQzLCBudW1iZXJUYWcsIC5vcE5lZ2F0ZU5vdEludAog
ICAgIGJ0aXogdDMsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKICAgICBuZWdpIHQzCiAgICAg
b3JxIG51bWJlclRhZywgdDMKLSAgICBvcmkgQXJpdGhQcm9maWxlSW50LCB0MgotICAgIHN0b3Jl
aSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6
bV9iaXRzW3QxXQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVJbnQpCiAgICAg
cmV0dXJuKHQzKQogLm9wTmVnYXRlTm90SW50OgogICAgIGJ0cXogdDMsIG51bWJlclRhZywgLm9w
TmVnYXRlU2xvdwogICAgIHhvcnEgMHg4MDAwMDAwMDAwMDAwMDAwLCB0MwotICAgIG9yaSBBcml0
aFByb2ZpbGVOdW1iZXIsIHQyCi0gICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1f
YXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCisgICAgdXBkYXRlQXJpdGhQ
cm9maWxlKEFyaXRoUHJvZmlsZU51bWJlcikKICAgICByZXR1cm4odDMpCiAKIC5vcE5lZ2F0ZVNs
b3c6CkBAIC0xMDEwLDcgKzEwMTIsNyBAQCBtYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkbwogICAgICAg
ICBtZXRhZGF0YSh0NSwgdDApCiAKICAgICAgICAgbWFjcm8gcHJvZmlsZSh0eXBlKQotICAgICAg
ICAgICAgb3JpIHR5cGUsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUg
KyBBcml0aFByb2ZpbGU6Om1fYml0c1t0NV0KKyAgICAgICAgICAgIG9yaCB0eXBlLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1f
Yml0c1t0NV0KICAgICAgICAgZW5kCiAKICAgICAgICAgZ2V0KG1fcmhzLCB0MCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgppbmRleCBiMjNmNjViODY4My4uYjIyMjU2Nzgw
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKQEAgLTI5OSw3ICsy
OTksNyBAQCBjbGFzcyBTZXF1ZW5jZQogICAgICAgICAgICAgZW5kCiAgICAgICAgIH0KICAgICAg
ICAgcmVzdWx0ID0gcmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzRG91YmxlKHJlc3VsdCkKLSAg
ICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhyZXN1bHQsIFsic3Rv
cmViIiwgInN0b3JlaSIsICJzdG9yZXAiLCAic3RvcmVxIl0pCisgICAgICAgIHJlc3VsdCA9IHJp
c2NMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMocmVzdWx0LCBbInN0b3JlYiIsICJzdG9yZWgiLCAi
c3RvcmVpIiwgInN0b3JlcCIsICJzdG9yZXEiXSkKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2Vy
TWFsZm9ybWVkSW1tZWRpYXRlcyhyZXN1bHQsIDAuLjB4ZmYsIDAuLjB4MGZmKQogICAgICAgICBy
ZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMocmVzdWx0KQogICAgICAgICByZXN1
bHQgPSByaXNjTG93ZXJSZWdpc3RlclJldXNlKHJlc3VsdCkKQEAgLTQxOCw3ICs0MTgsNyBAQCBj
bGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAgICAgICAgIHdoZW4gImFuZGkiLCAi
YW5kcCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJhbmRzIiwgImFuZCIsIG9wZXJhbmRz
KQotICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICB3aGVuICJvcmkiLCAib3JwIiwg
Im9yaCIKICAgICAgICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJzIiwgIm9yciIsIG9wZXJhbmRz
KQogICAgICAgICB3aGVuICJvcmlzIgogICAgICAgICAgICAgZW1pdEFybUNvbXBhY3QoIm9ycnMi
LCAib3JycyIsIG9wZXJhbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02
NC5yYgppbmRleCAwOTY2ZWMzYmY2Yi4uZmNkMjc2ZjM2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBAIC0zOTMsNyArMzkzLDcgQEAgY2xhc3MgU2VxdWVu
Y2UKICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAgICAgICAgIHdoZW4gImxvYWRi
IiwgImxvYWRic2kiLCAibG9hZGJzcSIsICJzdG9yZWIiLCAvXmJiLywgL15idGIvLCAvXmNiLywg
L150Yi8KICAgICAgICAgICAgICAgICBzaXplID0gMQotICAgICAgICAgICAgd2hlbiAibG9hZGgi
LCAibG9hZGhzaSIsICJsb2FkaHNxIiwgInN0b3JlaCIKKyAgICAgICAgICAgIHdoZW4gImxvYWRo
IiwgImxvYWRoc2kiLCAibG9hZGhzcSIsICJvcmgiLCAic3RvcmVoIgogICAgICAgICAgICAgICAg
IHNpemUgPSAyCiAgICAgICAgICAgICB3aGVuICJsb2FkaSIsICJsb2FkaXMiLCAic3RvcmVpIiwg
ImFkZGkiLCAiYW5kaSIsICJsc2hpZnRpIiwgIm11bGkiLCAibmVnaSIsCiAgICAgICAgICAgICAg
ICAgIm5vdGkiLCAib3JpIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiLCAic3ViaSIsICJ4b3JpIiwg
L15iaS8sIC9eYnRpLywKQEAgLTQxOCw3ICs0MTgsNyBAQCBjbGFzcyBTZXF1ZW5jZQogICAgICAg
ICAgICAgZW5kCiAgICAgICAgIH0KIAotICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFj
ZWRJbW1lZGlhdGVzKHJlc3VsdCwgWyJzdG9yZWIiLCAic3RvcmVpIiwgInN0b3JlcCIsICJzdG9y
ZXEiXSkKKyAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhyZXN1
bHQsIFsic3RvcmViIiwgInN0b3JlaCIsICJzdG9yZWkiLCAic3RvcmVwIiwgInN0b3JlcSJdKQog
CiAgICAgICAgICMgVGhlIHJ1bGVzIGZvciB3aGljaCBpbW1lZGlhdGVzIGFyZSB2YWxpZCBmb3Ig
YW5kL29yL3hvciBpbnN0cnVjdGlvbnMgYXJlIGZhaXJseSBpbnZvbHZlZCwgc2VlIGh0dHBzOi8v
ZGluZnVlaHIuZ2l0aHViLmlvL2Jsb2cvZW5jb2Rpbmctb2YtaW1tZWRpYXRlLXZhbHVlcy1vbi1h
YXJjaDY0LwogICAgICAgICB2YWxpZExvZ2ljYWxJbW1lZGlhdGVzID0gW10KQEAgLTcxMSw2ICs3
MTEsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIi
LCBvcGVyYW5kcywgOnB0cikKICAgICAgICAgd2hlbiAib3JxIgogICAgICAgICAgICAgZW1pdEFS
TTY0VEFDKCJvcnIiLCBvcGVyYW5kcywgOnF1YWQpCisgICAgICAgIHdoZW4gIm9yaCIKKyAgICAg
ICAgICAgIGVtaXRBUk02NFRBQygib3JyIiwgb3BlcmFuZHMsIDp3b3JkKSAjIG5vdCA6aGFsZiBi
ZWNhdXNlIDE2LWJpdCByZWdpc3RlcnMgZG9uJ3QgZXhpc3Qgb24gQVJNLgogICAgICAgICB3aGVu
ICJ4b3JpIgogICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJlb3IiLCBvcGVyYW5kcywgOndvcmQp
CiAgICAgICAgIHdoZW4gInhvcnAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9jbG9vcC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Ns
b29wLnJiCmluZGV4IGYzM2Y3MDZkYjE4Li4zNzJlNmYxMzg4OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKQEAgLTE2MCw2ICsxNjAsNyBAQCBjbGFzcyBJbW1l
ZGlhdGUKIAogICAgICAgICBjYXNlIHR5cGUKICAgICAgICAgd2hlbiA6aW50ODsgICAgImludDhf
dCgje3ZhbHVlU3RyfSkiCisgICAgICAgIHdoZW4gOmludDE2OyAgICJpbnQxNl90KCN7dmFsdWVT
dHJ9KSIKICAgICAgICAgd2hlbiA6aW50MzI7ICAgImludDMyX3QoI3t2YWx1ZVN0cn0pIgogICAg
ICAgICB3aGVuIDppbnQ2NDsgICAiaW50NjRfdCgje3ZhbHVlU3RyfSkiCiAgICAgICAgIHdoZW4g
OmludHB0cjsgICJpbnRwdHJfdCgje3ZhbHVlU3RyfSkiCkBAIC0xODMsNiArMTg0LDcgQEAgY2xh
c3MgQWRkcmVzcwogICAgIGRlZiBjbFZhbHVlKHR5cGU9OmludHB0cikKICAgICAgICAgY2FzZSB0
eXBlCiAgICAgICAgIHdoZW4gOmludDg7ICAgICAgICAgaW50OE1lbVJlZgorICAgICAgICB3aGVu
IDppbnQxNjsgICAgICAgIGludDE2TWVtUmVmCiAgICAgICAgIHdoZW4gOmludDMyOyAgICAgICAg
aW50MzJNZW1SZWYKICAgICAgICAgd2hlbiA6aW50NjQ7ICAgICAgICBpbnQ2NE1lbVJlZgogICAg
ICAgICB3aGVuIDppbnRwdHI7ICAgICAgIGludHB0ck1lbVJlZgpAQCAtMzg2LDcgKzM4OCw3IEBA
IGVuZAogCiBkZWYgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCB0eXBlLCBvcGVyYXRvcikK
ICAgICByYWlzZSB1bmxlc3MgdHlwZSA9PSA6aW50cHRyIHx8IHR5cGUgPT0gOnVpbnRwdHIgfHwg
dHlwZSA9PSA6aW50MzIgfHwgdHlwZSA9PSA6dWludDMyIHx8IFwKLSAgICAgICAgdHlwZSA9PSA6
aW50NjQgfHwgdHlwZSA9PSA6dWludDY0IHx8IHR5cGUgPT0gOmRvdWJsZQorICAgICAgICB0eXBl
ID09IDppbnQ2NCB8fCB0eXBlID09IDp1aW50NjQgfHwgdHlwZSA9PSA6ZG91YmxlIHx8IHR5cGUg
PT0gOmludDE2CiAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCiAgICAgICAgIG9wMSA9IG9wZXJh
bmRzWzBdCiAgICAgICAgIG9wMiA9IG9wZXJhbmRzWzFdCkBAIC00MDEsNiArNDAzLDkgQEAgZGVm
IGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgdHlwZSwgb3BlcmF0b3IpCiAgICAgaWYgZHN0
LmlzX2E/IFJlZ2lzdGVySUQgYW5kICh0eXBlID09IDppbnQzMiBvciB0eXBlID09IDp1aW50MzIp
CiAgICAgICAgIHRydW5jYXRpb25IZWFkZXIgPSAiKHVpbnQzMl90KSgiCiAgICAgICAgIHRydW5j
YXRpb25Gb290ZXIgPSAiKSIKKyAgICBlbHNpZiBkc3QuaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKHR5
cGUgPT0gOmludDE2KQorICAgICAgICB0cnVuY2F0aW9uSGVhZGVyID0gIih1aW50MTZfdCkoIgor
ICAgICAgICB0cnVuY2F0aW9uRm9vdGVyID0gIikiCiAgICAgZWxzZQogICAgICAgICB0cnVuY2F0
aW9uSGVhZGVyID0gIiIKICAgICAgICAgdHJ1bmNhdGlvbkZvb3RlciA9ICIiCkBAIC01ODUsNiAr
NTkwLDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIGNsb29wRW1pdE9wZXJhdGlv
bihvcGVyYW5kcywgOmludDY0LCAifCIpCiAgICAgICAgIHdoZW4gIm9ycCIKICAgICAgICAgICAg
IGNsb29wRW1pdE9wZXJhdGlvbihvcGVyYW5kcywgOmludHB0ciwgInwiKQorICAgICAgICB3aGVu
ICJvcmgiCisgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQxNiwg
InwiKQogCiAgICAgICAgIHdoZW4gInhvcmkiCiAgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRp
b24ob3BlcmFuZHMsIDppbnQzMiwgIl4iKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCmluZGV4IDdhMjEyYjIwZTJkLi5hNDFlMDZmN2Q2YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25z
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5y
YgpAQCAtNDYsNiArNDYsNyBAQCBNQUNST19JTlNUUlVDVElPTlMgPQogICAgICAib3JpIiwKICAg
ICAgIm9yZiIsCiAgICAgICJvcmQiLAorICAgICAib3JoIiwKICAgICAgInJzaGlmdGkiLAogICAg
ICAidXJzaGlmdGkiLAogICAgICAicnNoaWZ0cCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vbWlwcy5yYgppbmRleCBiNWYwN2IxNjhjMy4uNWE1MzJkODViNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgpAQCAtNTI3LDcgKzUyNyw3IEBAIGRlZiBt
aXBzTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKGxpc3QpCiAgICAgICAgICAgICAgICAgZW5kCiAg
ICAgICAgICAgICB3aGVuIC9eKGFkZGl8c3ViaSkvCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBub2RlLnJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QsIC0weDdm
ZmYuLjB4N2ZmZikKLSAgICAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIsICJvcmkiLCAib3Jw
IiwgInhvcmkiLCAieG9ycCIKKyAgICAgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIsICJvcmki
LCAib3JwIiwgIm9yaCIsICJ4b3JpIiwgInhvcnAiCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBub2RlLnJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QsIDAuLjB4
ZmZmZikKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUK
QEAgLTg2MCw3ICs4NjAsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgZW5kCiAg
ICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKICAgICAgICAgICAgIGVtaXRNSVBTQ29tcGFjdCgi
YW5kIiwgImFuZCIsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAg
ICB3aGVuICJvcmkiLCAib3JwIiwgIm9yaCIKICAgICAgICAgICAgIGVtaXRNSVBTQ29tcGFjdCgi
b3IiLCAib3JyIiwgb3BlcmFuZHMpCiAgICAgICAgIHdoZW4gIm9yaXMiCiAgICAgICAgICAgICBl
bWl0TUlQU0NvbXBhY3QoIm9yIiwgIm9ycnMiLCBvcGVyYW5kcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9yaXNjLnJiCmluZGV4IDc1ZDdhOThmMzNmLi4xZTY3MDRmYWI3MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiCkBAIC00NjIsNyArNDYyLDcg
QEAgZGVmIHJpc2NMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhsaXN0KQogICAgICAgICAgICAgcG9z
dEluc3RydWN0aW9ucyA9IFtdCiAgICAgICAgICAgICBhbm5vdGF0aW9uID0gbm9kZS5hbm5vdGF0
aW9uCiAgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCi0gICAgICAgICAgICB3aGVuICJhZGRp
IiwgImFkZGlzIiwgImFuZGkiLCAibHNoaWZ0aSIsICJtdWxpIiwgIm5lZ2kiLCAibm90aSIsICJv
cmkiLCAib3JpcyIsCisgICAgICAgICAgICB3aGVuICJhZGRpIiwgImFkZGlzIiwgImFuZGkiLCAi
bHNoaWZ0aSIsICJtdWxpIiwgIm5lZ2kiLCAibm90aSIsICJvcmkiLCAib3JoIiwgIm9yaXMiLAog
ICAgICAgICAgICAgICAgICJyc2hpZnRpIiwgInVyc2hpZnRpIiwgInN1YmkiLCAic3ViaXMiLCAi
eG9yaSIsIC9eYmkvLCAvXmJ0aS8sIC9eY2kvLCAvXnRpLwogICAgICAgICAgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgppbmRleCAxMTJlZWQ3YjVjMS4uNmRjYTA0NzFkOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKQEAgLTExMjMsNiArMTEyMyw4IEBA
IGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBoYW5kbGVYODZPcCgib3JwcyIsIDpmbG9h
dCkKICAgICAgICAgd2hlbiAib3JkIgogICAgICAgICAgICAgaGFuZGxlWDg2T3AoIm9ycGQiLCA6
ZG91YmxlKQorICAgICAgICB3aGVuICJvcmgiCisgICAgICAgICAgICBoYW5kbGVYODZPcCgib3Ij
e3g4NlN1ZmZpeCg6aGFsZil9IiwgOmhhbGYpCiAgICAgICAgIHdoZW4gInJzaGlmdGkiCiAgICAg
ICAgICAgICBoYW5kbGVYODZTaGlmdCgic2FyI3t4ODZTdWZmaXgoOmludCl9IiwgOmludCkKICAg
ICAgICAgd2hlbiAicnNoaWZ0cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUmVzdWx0VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRU
eXBlLmgKaW5kZXggOWIzZDBkNzRjOGQuLjU2MjJmMjg5Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaApAQCAtNDgsNiArNDgsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG51bUJpdHNOZWVkZWQgPSA3OwogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KChUeXBlQml0cyAmICgoMSA8PCBudW1CaXRzTmVlZGVkKSAtIDEp
KSA9PSBUeXBlQml0cywgIlRoaXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcy4iKTsKIAor
ICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlwZSgpCisgICAgICAgICAgICA6IFJl
c3VsdFR5cGUodW5rbm93blR5cGUoKSkKKyAgICAgICAgeworICAgICAgICB9CiAgICAgICAgIGNv
bnN0ZXhwciBleHBsaWNpdCBSZXN1bHRUeXBlKFR5cGUgdHlwZSkKICAgICAgICAgICAgIDogbV9i
aXRzKHR5cGUpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDE1ZjFmZDg1ZTQ0Li5kYTlmYmNhNTJiNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CkBAIC00NzcsOCArNDc3LDggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3N0cmluZykK
ICNpZiBFTkFCTEUoSklUKQogc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yVW5hcnlB
cml0aE9wKE9wTmVnYXRlOjpNZXRhZGF0YSYgbWV0YWRhdGEsIEpTVmFsdWUgcmVzdWx0LCBKU1Zh
bHVlIG9wZXJhbmQpCiB7Ci0gICAgQXJpdGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEubV9h
cml0aFByb2ZpbGU7Ci0gICAgcHJvZmlsZS5vYnNlcnZlTEhTKG9wZXJhbmQpOworICAgIFVuYXJ5
QXJpdGhQcm9maWxlJiBwcm9maWxlID0gbWV0YWRhdGEubV9hcml0aFByb2ZpbGU7CisgICAgcHJv
ZmlsZS5vYnNlcnZlQXJnKG9wZXJhbmQpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOdW1iZXIoKSB8
fCByZXN1bHQuaXNCaWdJbnQoKSk7CiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAg
ICAgIGlmICghcmVzdWx0LmlzSW50MzIoKSkgewpAQCAtNTM1LDcgKzUzNSw3IEBAIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpCiAjaWYgRU5BQkxFKERGR19KSVQpCiBzdGF0aWMgdm9p
ZCB1cGRhdGVBcml0aFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSByZXN1bHQs
IEpTVmFsdWUgbGVmdCwgSlNWYWx1ZSByaWdodCkKIHsKLSAgICBBcml0aFByb2ZpbGUmIHByb2Zp
bGUgPSAqY29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJpdGhQ
cm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yUEMocGMp
OwogCiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmlz
SW50MzIoKSkgewpAQCAtNTk2LDcgKzU5Niw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9h
ZGQpCiAgICAgSlNWYWx1ZSB2MSA9IEdFVF9DKGJ5dGVjb2RlLm1fbGhzKS5qc1ZhbHVlKCk7CiAg
ICAgSlNWYWx1ZSB2MiA9IEdFVF9DKGJ5dGVjb2RlLm1fcmhzKS5qc1ZhbHVlKCk7CiAKLSAgICBB
cml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpjb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvclBD
KHBjKTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSA9ICpjb2RlQmxvY2st
PmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKHBjKTsKICAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZUxI
U0FuZFJIUyh2MSwgdjIpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FkZChnbG9iYWxPYmpl
Y3QsIHYxLCB2Mik7Cg==
</data>
<flag name="commit-queue"
          id="399124"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383473</attachid>
            <date>2019-11-13 11:19:45 -0800</date>
            <delta_ts>2019-11-13 12:07:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchArithProfile</filename>
            <type>text/plain</type>
            <size>136043</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OWFkMjMxNDRmOWYuLmUyMzkzMDk3YjIxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTExLTEyICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQ
cm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NjI2Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisK
KyAgICAgICAgVGhlIG5ldyB0ZXN0IChraW5kbHkgcHJvdmlkZWQgYnkgTWFyayBMYW0pIGNhdGNo
ZXMgdGhlIG1ldGFkYXRhIGNvcnJ1cHRpb24gdGhhdCB1c2VkIHRvIGhhcHBlbiBpbiB0aGUgcHJl
dmlvdXMgdmVyc2lvbiBvZiB0aGlzIHBhdGNoLgorCisgICAgICAgICogc3RyZXNzL3JlZ3Jlc3Mt
NTcwMjAzMzguanM6IEFkZGVkLgorCiAyMDE5LTExLTA4ICBHdWlsbGF1bWUgRW1vbnQgIDxndWlq
ZW1vbnRAaWdhbGlhLmNvbT4KIAogICAgICAgICBUZW1wb3JhcmlseSBza2lwIGFub3RoZXIgYnJv
a2VuIHRlc3Qgb24gTUlQUyBkdWUgdG8gT1NSIGV4aXQgdG8gTExJbnQKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3JlZ3Jlc3MtNTcwMjAzMzguanMgYi9KU1Rlc3RzL3N0cmVzcy9yZWdyZXNz
LTU3MDIwMzM4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wYjA3
NGNkNTQxNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ3Jlc3MtNTcwMjAz
MzguanMKQEAgLTAsMCArMSwxOCBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tbWF4aW11bU9wdGltaXph
dGlvbkRlbGF5PTAiKQorbGV0IGNvZGUgPSBgCitsZXQgeiA9IHt9OworZnVuY3Rpb24gZm9vKCkg
eworICBjb25zdCB4ID0gdW5kZWZpbmVkICogW107CisgIGZvciAobGV0IGogPSAwOyBqIDwgNTAw
MDA7IGorKykgeworICAgIGNvbnN0IHkgPSB4ICogMDsKKyAgICB6W3t9XSA9IHk7CisgIH0KK30K
K2ZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7CisgIGZvbygpOworfQorYDsKKworZm9yIChs
ZXQgaT0wOyBpPDEwMDsgaSsrKSB7CisgIHJ1blN0cmluZyhjb2RlKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCmluZGV4IGJlYjczY2RhZjY2Li5kZGM1ZDc5YjMyNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkwIEBACisyMDE5LTExLTEyICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgQXJpdGhQcm9maWxlIGludG8g
YSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjI2
Njg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisKKyAgICAgICAgQXJp
dGhQcm9maWxlIHdhcyBmb3IgYSBsb25nIHRpbWUgb25seSB1c2VkIGZvciBhZGQvc3ViL211bC9k
aXYsIGJ1dCByZWNlbnRseSBpdCBzdGFydGVkIGJlaW5nIHVzZWQgZm9yIG5lZ2F0ZS4gQW5kIGl0
IHdpbGwgc29vbiBhbHNvIGhhdmUgdG8gYmUgdXNlZCBmb3IgaW5jIGFuZCBkZWMgZHVlIHRvIEJp
Z0ludC4KKyAgICAgICAgU28gaW4gdGhpcyBwYXRjaCBJIG1ha2UgYSBzZXBhcmF0ZSB2ZXJzaW9u
IHRoYXQgb25seSBoYXMgdGhlIGRhdGEgZm9yIGEgc2luZ2xlIGFyZ3VtZW50LCBhbmQgdGh1cyB0
YWtlcyBoYWxmIGFzIG11Y2ggbWVtb3J5LgorCisgICAgICAgIEFmdGVyIGRpc2N1c3NpbmcgdGhp
cyBjaGFuZ2Ugd2l0aCBQaGlsIEkgcmVhbGl6ZWQgdGhhdCB0aGUgUmVzdWx0VHlwZShzKSB0aGF0
IHdlcmUgdGFraW5nIHNwYWNlIGluIEFyaXRoUHJvZmlsZSBhcmUgbm90IG5lZWRlZDogdGhleSBu
ZXZlciBjaGFuZ2UgYW5kIGEgY29weSBpcyBhbHJlYWR5IGluIHRoZSBieXRlY29kZSBpbnN0cnVj
dGlvbiBpdHNlbGYuCisgICAgICAgIFJlbW92aW5nIHRoZW0gYWxsb3dlZCBzaHJpbmtpbmcgYm90
aCBraW5kcyBvZiBBcml0aFByb2ZpbGUgdG8gZml0IGluIDE2IGJpdHMgKDkgYW5kIDEzIHJlc3Bl
Y3RpdmVseSkuCisgICAgICAgIEkga2VwdCB0aGUgdHdvIGtpbmRzIHNlcGFyYXRlIGJlY2F1c2Ug
dGhleSBtYXkgc2hyaW5rIG9yIGdyb3cgaW5kZXBlbmRlbnRseSBpbiB0aGUgZnV0dXJlLgorCisg
ICAgICAgIFRoaXMgYWxzbyByZXF1aXJlZCBhZGRpbmcgdGhlICJvcmgiIGluc3RydWN0aW9uIHRv
IHRoZSBvZmZsaW5lIGFzc2VtYmxlciwgdG8gc2V0IGJpdHMgaW4gdGhlIEFyaXRoUHJvZmlsZS4K
KyAgICAgICAgVGhpcyBpbiB0dXJuIG1vdGl2YXRlZCB0aGUgYWRkaXRpb24gb2YgInN0b3JlaCIs
IGFzIG9uIFJJU0MgcGxhdGZvcm1zICJvcmgiIG9uIGEgbWVtb3J5IGxvY2F0aW9uIGlzIGFjdHVh
bGx5IGxvYWRoIC0+IG9yaCAtPiBzdG9yZWguCisKKyAgICAgICAgRmluYWxseSBpdCByZXF1aXJl
ZCBhZGRpbmcgc3VwcG9ydCBmb3Igb3IxNihUcnVzdGVkSW1tMzIsIEFic29sdXRlQWRkcmVzcykg
aW4gdGhlIE1hY3JvQXNzZW1ibGVyIGZvciB0aGUgSUNzLgorICAgICAgICBJbnN0ZWFkIG9mIGRp
cmVjdGx5IGNhbGxpbmcgaXQgKGxpa2Ugd2UgdXNlZCB0byBkbyB3aXRoIG9yMzIpLCBJIGludHJv
ZHVjZWQgQXJpdGhQcm9maWxlOjplbWl0VW5jb25kaXRpb25hbFNldCwgc28gdGhhdCBpZiBlaXRo
ZXIgQXJpdGhQcm9maWxlIGV2ZXIgY2hhbmdlcyBpbiBzaXplIGFnYWluIHdlJ2xsIGhhdmUgZmV3
ZXIgcGxhY2VzIHRvIGNoYW5nZS4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om9yMTYpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNdjc6Om9yMTYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpvcjE2KToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODY6Om9yMTYpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6b3IxNik6Cisg
ICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdE9ySW1t
TWVtKToKKyAgICAgICAgKEpTQzo6cnVuKToKKyAgICAgICAgKiBieXRlY29kZS9Bcml0aFByb2Zp
bGUuY3BwOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9i
c2VydmVSZXN1bHQpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6
c2hvdWxkRW1pdFNldERvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTxC
aXRmaWVsZFR5cGU+OjplbWl0U2V0RG91YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQ
cm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXROb25OdW1lcmljIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRTZXROb25OdW1lcmlj
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3Vs
ZEVtaXRTZXRCaWdJbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU8Qml0Zmll
bGRUeXBlPjo6ZW1pdFNldEJpZ0ludCBjb25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmls
ZTxCaXRmaWVsZFR5cGU+OjplbWl0VW5jb25kaXRpb25hbFNldCBjb25zdCk6CisgICAgICAgIChX
VEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5oOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOb25JbnQzMiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZURvdWJsZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVOZWdaZXJvRG91YmxlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpkaWRPYnNlcnZlTm9uTnVtZXJpYyBj
b25zdCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUJpZ0ludCBjb25z
dCk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6ZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3cg
Y29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OmRpZE9ic2VydmVJbnQ1Mk92ZXJm
bG93IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZE5vbk5l
Z1plcm9Eb3VibGUpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OnNldE9ic2VydmVkTmVn
WmVyb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWROb25O
dW1lcmljKToKKyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEJpZ0ludCk6
CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0T2JzZXJ2ZWRJbnQzMk92ZXJmbG93KToK
KyAgICAgICAgKEpTQzo6QXJpdGhQcm9maWxlOjpzZXRPYnNlcnZlZEludDUyT3ZlcmZsb3cpOgor
ICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6Om9ic2VydmVSZXN1bHQpOgorICAgICAgICAoSlND
OjpBcml0aFByb2ZpbGU6OmFkZHJlc3NPZkJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0
aFByb2ZpbGU6OmJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpBcml0aFByb2ZpbGU6OkFyaXRo
UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6aGFzQml0cyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkFyaXRoUHJvZmlsZTo6c2V0Qml0KToKKyAgICAgICAgKEpTQzo6VW5hcnlB
cml0aFByb2ZpbGU6OlVuYXJ5QXJpdGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0
aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cyk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9m
aWxlOjpvYnNlcnZlZE51bWJlckJpdHMpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmls
ZTo6YXJnT2JzZXJ2ZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2Zp
bGU6OnNldEFyZ09ic2VydmVkVHlwZSk6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxl
OjphcmdTYXdJbnQzMik6CisgICAgICAgIChKU0M6OlVuYXJ5QXJpdGhQcm9maWxlOjphcmdTYXdO
dW1iZXIpOgorICAgICAgICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6YXJnU2F3Tm9uTnVtYmVy
KToKKyAgICAgICAgKEpTQzo6VW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVBcmcpOgorICAgICAg
ICAoSlNDOjpVbmFyeUFyaXRoUHJvZmlsZTo6aXNPYnNlcnZlZFR5cGVFbXB0eSk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6QmluYXJ5QXJpdGhQcm9maWxlKToKKyAgICAgICAg
KEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludEludEJpdHMpOgorICAgICAgICAo
SlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVySW50Qml0cyk6CisgICAgICAg
IChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnROdW1iZXJCaXRzKToKKyAgICAg
ICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51bWJlckJpdHMpOgor
ICAgICAgICAoSlNDOjpCaW5hcnlBcml0aFByb2ZpbGU6OnNldExoc09ic2VydmVkVHlwZSk6Cisg
ICAgICAgIChKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZTo6c2V0UmhzT2JzZXJ2ZWRUeXBlKToKKyAg
ICAgICAgKEpTQzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlTEhTKToKKyAgICAgICAgKEpT
Qzo6QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlTEhTQW5kUkhTKToKKyAgICAgICAgKEpTQzo6
QmluYXJ5QXJpdGhQcm9maWxlOjppc09ic2VydmVkVHlwZUVtcHR5KToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRKSVRBZGRJQyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6YWRkSklUTXVsSUMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEpJVFN1
YklDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRKSVROZWdJQyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dW5hcnlBcml0aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y291bGRUYWtlU3BlY2lhbEFyaXRoRmFzdENhc2UpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZE1hdGhJ
Qyk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlOjplbWl0UmVwb3J0VmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpyZXBvcnRWYWx1ZSk6CisgICAgICAgICogYnl0
ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVuYXJ5T3ApOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjptYWtlU2FmZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6Om1ha2VEaXZTYWZlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkdyYXBoOjptZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVNdWwpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVBZGQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVTdWIp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVNdWwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQmluYXJ5
TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFy
aXRoQWRkT3JTdWIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlVmFsdWVOZWdhdGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklU
QWRkR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0
ZUlubGluZSk6CisgICAgICAgIChKU0M6OkpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0
aCk6CisgICAgICAgICogaml0L0pJVEFkZEdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVRB
cml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lZ2F0ZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRo
SUNGYXN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0aElDU2xvdyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbXVsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1Yik6CisgICAgICAgICogaml0L0pJVERpdkdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aCk6CisgICAgICAgICogaml0L0pJVERpdkdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpK
SVREaXZHZW5lcmF0b3I6OkpJVERpdkdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjpjb3BpZWRBcml0aFByb2ZpbGUpOgorICAgICAgICAq
IGppdC9KSVRNYXRoSUMuaDoKKyAgICAgICAgKEpTQzo6SklUTWF0aElDOjpKSVRNYXRoSUMpOgor
ICAgICAgICAoSlNDOjpKSVRNYXRoSUM6OmdlbmVyYXRlSW5saW5lKToKKyAgICAgICAgKEpTQzo6
SklUTWF0aElDOjphcml0aFByb2ZpbGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKSVRCaW5hcnlN
YXRoSUM6OkpJVEJpbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6OkpJVFVuYXJ5TWF0aElDOjpK
SVRVbmFyeU1hdGhJQyk6CisgICAgICAgICogaml0L0pJVE11bEdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUpOgorICAgICAgICAoSlND
OjpKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRN
dWxHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBqaXQvSklUTmVnR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZSk6CisgICAgICAgIChKU0M6
OkpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVE5l
Z0dlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKToKKyAgICAg
ICAgKEpTQzo6SklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBq
aXQvSklUU3ViR2VuZXJhdG9yLmg6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBs
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpMTEludE9mZnNl
dHNFeHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2ZmbGlu
ZWFzbS9hcm0ucmI6CisgICAgICAgICogb2ZmbGluZWFzbS9hcm02NC5yYjoKKyAgICAgICAgKiBv
ZmZsaW5lYXNtL2Nsb29wLnJiOgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJi
OgorICAgICAgICAqIG9mZmxpbmVhc20vbWlwcy5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL3Jp
c2MucmI6CisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6CisgICAgICAgICogcGFyc2VyL1Jl
c3VsdFR5cGUuaDoKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6UmVzdWx0VHlwZSk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjp1cGRhdGVB
cml0aFByb2ZpbGVGb3JVbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlNDOjp1cGRhdGVBcml0aFBy
b2ZpbGVGb3JCaW5hcnlBcml0aE9wKToKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgor
CiAyMDE5LTExLTExICBUdW9tYXMgS2Fya2thaW5lbiAgPHR1b21hcy53ZWJraXRAYXBwbGUuY29t
PgogCiAgICAgICAgIFR5cG8gaW4gYXNzZXJ0aW9uIGluIHZhbGlkYXRlQ1BTIGluIERGR1ZhbGlk
YXRlLmNwcCAoIlVuZXhlY3B0ZWQiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBhY2Y2YzRjYjVhZi4uMjA2OTBl
NDE0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oCkBAIC02MTUsNiArNjE1LDIwIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIubmVnPDY0PihkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgb3IxNihU
cnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNyZWF0ZTMy
KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7CisgICAg
ICAgICAgICBsb2FkMTYoYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycjwzMj4oZGF0YVRl
bXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgbG9naWNhbEltbSk7CisgICAgICAgICAgICBz
dG9yZTE2KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbG9hZDE2KGFkZHJlc3MubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG9yMzIoaW1tLCBtZW1vcnlU
ZW1wUmVnaXN0ZXIsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7
CisgICAgICAgICAgICBzdG9yZTE2KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIpOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBvcjMyKGRlc3QsIHNyYywgZGVzdCk7CkBAIC0xMjM4
LDYgKzEyNTIsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgY2FjaGVkTWVtb3J5VGVtcFJlZ2lz
dGVyKCkuaW52YWxpZGF0ZSgpOwogICAgIH0KIAorICAgIHZvaWQgbG9hZDE2KGNvbnN0IHZvaWQq
IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ8MTY+KGFkZHJl
c3MsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgbG9hZDE2VW5hbGlnbmVkKEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkMTYoYWRk
cmVzcywgZGVzdCk7CkBAIC0xNTQ2LDYgKzE1NjUsMjIgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5zdHJoKHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAg
IH0KIAorICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVz
cykKKyAgICB7CisgICAgICAgIHN0b3JlPDE2PihzcmMsIGFkZHJlc3MpOworICAgIH0KKworICAg
IHZvaWQgc3RvcmUxNihUcnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkgeworICAgICAgICAgICAgc3RvcmUxNihBUk02
NFJlZ2lzdGVyczo6enIsIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKGltbSwgZGF0YU1lbW9yeVRlbXBSZWdpc3Rlcigp
KTsKKyAgICAgICAgc3RvcmUxNihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyAgICB9CisK
ICAgICB2b2lkIHN0b3JlWmVybzE2KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAg
ICAgICAgc3RvcmUxNihBUk02NFJlZ2lzdGVyczo6enIsIGFkZHJlc3MpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRl
eCA5NWNkNzNmMjM5ZC4uNGVlYzc2YTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0zNjUsNiArMzY1LDI0
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkZXN0LCBkZXN0LCBz
cmMpOwogICAgIH0KKworICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFS
TVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbShpbW0ubV92YWx1ZSk7CisgICAgICAgIGlm
IChhcm1JbW0uaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRk
cmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbG9hZDE2KGFk
ZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIub3JyKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFybUltbSk7Cisg
ICAgICAgICAgICBzdG9yZTE2KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGxvYWQxNihhZGRy
ZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1vdmUoaW1t
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkYXRh
VGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICBzdG9yZTE2KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIHZvaWQgb3IzMihSZWdp
c3RlcklEIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAgewpAQCAtNzgyLDYgKzgwMCwx
MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYWJlbDsKICAgICB9CiAKKyAgICB2b2lkIGxv
YWQxNihjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAg
ICAgICBtX2Fzc2VtYmxlci5sZHJoKGRlc3QsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFSTVRodW1i
SW1tZWRpYXRlOjptYWtlVUludDE2KDApKTsKKyAgICB9CisKICAgICB2b2lkIGxvYWQxNihCYXNl
SW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIubGRyaChkZXN0LCBtYWtlQmFzZUluZGV4QmFzZShhZGRyZXNzKSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CkBAIC04ODksNiArOTEzLDE4IEBAIHB1YmxpYzoKICAgICAgICAgc3Rv
cmUxNihzcmMsIHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSk7CiAgICAgfQogCisgICAgdm9pZCBz
dG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuc3RyaChzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFSTVRodW1i
SW1tZWRpYXRlOjptYWtlVUludDEyKDApKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlMTYoVHJ1
c3RlZEltbTMyIGltbSwgY29uc3Qgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUo
aW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmUxNihkYXRhVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzKTsKKyAgICB9CisKICAgICAvLyBQb3NzaWJseSBjbG9iYmVycyBzcmMsIGJ1dCBu
b3Qgb24gdGhpcyBhcmNoaXRlY3R1cmUuCiAgICAgdm9pZCBtb3ZlRG91YmxlVG9JbnRzKEZQUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgKaW5kZXggZDBjZGYwMmU0MjUuLjBlMTkxYTFiYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTQ3NSw2
ICs0NzUsMjUgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRlc3QsIE1JUFNS
ZWdpc3RlcnM6Onplcm8sIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0z
MiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKCFpbW0ubV92
YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
IChtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIC8vIFRPRE86IFN3YXAgZGF0YVRlbXBSZWdp
c3RlciBhbmQgaW1tVGVtcFJlZ2lzdGVyIHVzYWdlCisgICAgICAgICAgICBsb2FkMTYoZGVzdC5t
X3B0ciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG9yMzIoaW1tLCBpbW1UZW1wUmVn
aXN0ZXIpOworICAgICAgICAgICAgc3RvcmUxNihpbW1UZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdWludHB0cl90IGFkciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PihkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
Lmx1aShhZGRyVGVtcFJlZ2lzdGVyLCAoYWRyICsgMHg4MDAwKSA+PiAxNik7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5sdyhpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAm
IDB4ZmZmZik7CisgICAgICAgICAgICBvcjE2KGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnN3KGltbVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3Rlciwg
YWRyICYgMHhmZmZmKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgb3IzMihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JJ
bnNuKGRlc3QsIGRlc3QsIHNyYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKaW5kZXggNGFmZTgxN2MzNmIuLmI4MWMyMmJmODM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Ni5oCkBAIC05OSw2ICs5OSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Fz
c2VtYmxlci5vcmxfcm0ocmVnLCBhZGRyZXNzLm1fcHRyKTsKICAgICB9CisKKyAgICB2b2lkIG9y
MTYoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5vcndfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3MubV9wdHIpOworICAg
IH0KICAgICAKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVz
cyBhZGRyZXNzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCBiOTk2Y2E0OWQzOS4uZGQxNGE2ZDQ5
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2XzY0LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2gzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YnJhbmNoQWRkMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21t
b246Om9yMzI7CisgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMTY7CiAgICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpsb2FkODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bG9hZDMyOwpAQCAtODksNiArOTAsMTIgQEAgcHVibGljOgogICAgICAgICBvcjMyKHJlZywg
QWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOwogICAgIH0KIAorICAgIHZvaWQgb3IxNihUcnVz
dGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAg
ICAgICBvcjE2KGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOworICAgIH0KKwogICAg
IHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAg
ICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hS
ZWdpc3RlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
dGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5j
cHAKaW5kZXggNDE5N2NhNmE5OTUuLjU5YmJjMjc3ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMTEwNCw2ICsxMTA0LDMxIEBAIHZvaWQg
dGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01f
UFJPQkUpCiAKK3ZvaWQgdGVzdE9ySW1tTWVtKCkKK3sKKyAgICAvLyBGSVhNRTogdGhpcyBkb2Vz
IG5vdCB0ZXN0IHRoYXQgdGhlIG9yIGRvZXMgbm90IHRvdWNoIGJleW9uZCBpdHMgd2lkdGguCisg
ICAgLy8gSSBhbSBub3Qgc3VyZSBob3cgdG8gZG8gc3VjaCBhIHRlc3Qgd2l0aG91dCBhIGxvdCBv
ZiBjb21wbGV4aXR5IChydW5uaW5nIG11bHRpcGxlIHRocmVhZHMsIHdpdGggYSByYWNlIG9uIHRo
ZSBoaWdoIGJpdHMgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbikuCisgICAgdWludDY0X3QgbWVtb3J5
TG9jYXRpb24gPSAweDEyMzQxMjM0OworICAgIGF1dG8gb3IzMiA9IGNvbXBpbGUoWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworICAg
ICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIENDYWxsSGVscGVy
czo6QWJzb2x1dGVBZGRyZXNzKCZtZW1vcnlMb2NhdGlvbikpOworICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisgICAgaW52b2tl
PHZvaWQ+KG9yMzIpOworICAgIENIRUNLX0VRKG1lbW9yeUxvY2F0aW9uLCAweDEyMzQxMjM0IHwg
NDIpOworCisgICAgbWVtb3J5TG9jYXRpb24gPSAweDEyMzQxMjM0OworICAgIGF1dG8gb3IxNiA9
IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZShqaXQpOworICAgICAgICBqaXQub3IxNihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mig0MiksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZtZW1vcnlMb2NhdGlvbikpOwor
ICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7Cisg
ICAgfSk7CisgICAgaW52b2tlPHZvaWQ+KG9yMTYpOworICAgIENIRUNLX0VRKG1lbW9yeUxvY2F0
aW9uLCAweDEyMzQxMjM0IHwgNDIpOworfQorCiB2b2lkIHRlc3RCeXRlU3dhcCgpCiB7CiAjaWYg
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpAQCAtMTM2MCw2ICsxMzg1LDggQEAgdm9pZCBydW4o
Y29uc3QgY2hhciogZmlsdGVyKQogCiAgICAgUlVOKHRlc3RDYWdlUHJlc2VydmVzUEFDRmFpbHVy
ZUJpdCgpKTsKIAorICAgIFJVTih0ZXN0T3JJbW1NZW0oKSk7CisKICAgICBpZiAodGFza3MuaXNF
bXB0eSgpKQogICAgICAgICB1c2FnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCmluZGV4IDk5OTkzM2I4YzBlLi5hYWVkM2Y3N2JkYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAK
QEAgLTMyLDcgKzMyLDggQEAKIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKLXZv
aWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNW
YWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQordGVtcGxhdGU8dHlwZW5hbWUg
Qml0ZmllbGRUeXBlPgordm9pZCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBlPjo6ZW1pdE9ic2Vy
dmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVy
c01vZGUgbW9kZSkKIHsKICAgICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxk
RW1pdFNldE5vbk51bWVyaWMoKSAmJiAhc2hvdWxkRW1pdFNldEJpZ0ludCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC01OCw0MSArNTksNTggQEAgdm9pZCBBcml0aFByb2ZpbGU6OmVtaXRPYnNlcnZl
UmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWcKICAgICBk
b25lLmxpbmsoJmppdCk7CiB9CiAKLWJvb2wgQXJpdGhQcm9maWxlOjpzaG91bGRFbWl0U2V0RG91
YmxlKCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlwZT4KK2Jvb2wgQXJpdGhQ
cm9maWxlPEJpdGZpZWxkVHlwZT46OnNob3VsZEVtaXRTZXREb3VibGUoKSBjb25zdAogewotICAg
IHVpbnQzMl90IG1hc2sgPSBBcml0aFByb2ZpbGU6OkludDMyT3ZlcmZsb3cgfCBBcml0aFByb2Zp
bGU6OkludDUyT3ZlcmZsb3cgfCBBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUgfCBBcml0aFBy
b2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGU7CisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBJbnQzMk92
ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5lZ1plcm9Eb3VibGUgfCBOb25OZWdaZXJvRG91Ymxl
OwogICAgIHJldHVybiAobV9iaXRzICYgbWFzaykgIT0gbWFzazsKIH0KIAotdm9pZCBBcml0aFBy
b2ZpbGU6OmVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVsZFR5cGU+Ojpl
bWl0U2V0RG91YmxlKENDYWxsSGVscGVycyYgaml0KSBjb25zdAogewogICAgIGlmIChzaG91bGRF
bWl0U2V0RG91YmxlKCkpCi0gICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKEFyaXRoUHJvZmlsZTo6SW50MzJPdmVyZmxvdyB8IEFyaXRoUHJvZmlsZTo6SW50NTJPdmVy
ZmxvdyB8IEFyaXRoUHJvZmlsZTo6TmVnWmVyb0RvdWJsZSB8IEFyaXRoUHJvZmlsZTo6Tm9uTmVn
WmVyb0RvdWJsZSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMo
KSkpOworICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIEludDMyT3ZlcmZsb3cgfCBJ
bnQ1Mk92ZXJmbG93IHwgTmVnWmVyb0RvdWJsZSB8IE5vbk5lZ1plcm9Eb3VibGUpOwogfQogCi1i
b29sIEFyaXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdAordGVtcGxh
dGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgorYm9vbCBBcml0aFByb2ZpbGU8Qml0ZmllbGRUeXBl
Pjo6c2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdAogewotICAgIHVpbnQzMl90IG1hc2sg
PSBBcml0aFByb2ZpbGU6Ok5vbk51bWVyaWM7CisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBBcml0
aFByb2ZpbGU6Ok5vbk51bWVyaWM7CiAgICAgcmV0dXJuIChtX2JpdHMgJiBtYXNrKSAhPSBtYXNr
OwogfQogCi1ib29sIEFyaXRoUHJvZmlsZTo6c2hvdWxkRW1pdFNldEJpZ0ludCgpIGNvbnN0Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Cit2b2lkIEFyaXRoUHJvZmlsZTxCaXRmaWVs
ZFR5cGU+OjplbWl0U2V0Tm9uTnVtZXJpYyhDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIHsKLSAg
ICB1aW50MzJfdCBtYXNrID0gQXJpdGhQcm9maWxlOjpCaWdJbnQ7Ci0gICAgcmV0dXJuIChtX2Jp
dHMgJiBtYXNrKSAhPSBtYXNrOworICAgIGlmIChzaG91bGRFbWl0U2V0Tm9uTnVtZXJpYygpKQor
ICAgICAgICBlbWl0VW5jb25kaXRpb25hbFNldChqaXQsIE5vbk51bWVyaWMpOwogfQogCi12b2lk
IEFyaXRoUHJvZmlsZTo6ZW1pdFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJiBqaXQpIGNvbnN0
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+Citib29sIEFyaXRoUHJvZmlsZTxCaXRm
aWVsZFR5cGU+OjpzaG91bGRFbWl0U2V0QmlnSW50KCkgY29uc3QKIHsKLSAgICBpZiAoc2hvdWxk
RW1pdFNldE5vbk51bWVyaWMoKSkKLSAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoQXJpdGhQcm9maWxlOjpOb25OdW1lcmljKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0
ZUFkZHJlc3MoYWRkcmVzc09mQml0cygpKSk7CisgICAgQml0ZmllbGRUeXBlIG1hc2sgPSBBcml0
aFByb2ZpbGU6OkJpZ0ludDsKKyAgICByZXR1cm4gKG1fYml0cyAmIG1hc2spICE9IG1hc2s7CiB9
CiAKLXZvaWQgQXJpdGhQcm9maWxlOjplbWl0U2V0QmlnSW50KENDYWxsSGVscGVycyYgaml0KSBj
b25zdAordGVtcGxhdGU8dHlwZW5hbWUgQml0ZmllbGRUeXBlPgordm9pZCBBcml0aFByb2ZpbGU8
Qml0ZmllbGRUeXBlPjo6ZW1pdFNldEJpZ0ludChDQ2FsbEhlbHBlcnMmIGppdCkgY29uc3QKIHsK
ICAgICBpZiAoc2hvdWxkRW1pdFNldEJpZ0ludCgpKQotICAgICAgICBqaXQub3IzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6OkJpZ0ludCksIENDYWxsSGVscGVyczo6
QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBlbWl0VW5jb25kaXRp
b25hbFNldChqaXQsIEJpZ0ludCk7CiB9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJpdGZpZWxkVHlw
ZT4KK3ZvaWQgQXJpdGhQcm9maWxlPEJpdGZpZWxkVHlwZT46OmVtaXRVbmNvbmRpdGlvbmFsU2V0
KENDYWxsSGVscGVycyYgaml0LCBCaXRmaWVsZFR5cGUgbWFzaykgY29uc3QKK3sKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxCaXRmaWVsZFR5cGUsIHVpbnQxNl90Pjo6dmFsdWUpOwor
ICAgIGppdC5vcjE2KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1hc2spLCBDQ2FsbEhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcyhhZGRyZXNzT2ZCaXRzKCkpKTsKK30KKworLy8gR2VuZXJhdGUg
dGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZnVuY3Rpb25zIGFib3ZlIGZvciBVbmFyeUFyaXRo
UHJvZmlsZS9CaW5hcnlBcml0aFByb2ZpbGUKKy8vIElmIGNoYW5naW5nIHRoZSBzaXplIG9mIGVp
dGhlciwgYWRkIHRoZSBjb3JyZXNwb25kaW5nIGxpbmVzIGhlcmUuCit0ZW1wbGF0ZSBjbGFzcyBB
cml0aFByb2ZpbGU8dWludDE2X3Q+OwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpAQCAtMTAxLDcgKzExOSw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0IEFyaXRoUHJvZmlsZSYgcHJvZmlsZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFyaXRoUHJvZmlsZTxUPiYg
cHJvZmlsZSkKIHsKICAgICBjb25zdCBjaGFyKiBzZXBhcmF0b3IgPSAiIjsKIApAQCAtMTM1LDE5
ICsxNTQsMzAgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEFy
aXRoUHJvZmlsZSYgcHJvZmlsZSkKICAgICAgICAgICAgIHNlcGFyYXRvciA9ICJ8IjsKICAgICAg
ICAgfQogICAgIH0KLSAgICBpZiAocHJvZmlsZS50b29rU3BlY2lhbEZhc3RQYXRoKCkpCi0gICAg
ICAgIG91dC5wcmludChzZXBhcmF0b3IsICJUb29rIHNwZWNpYWwgZmFzdCBwYXRoLiIpOwogICAg
IG91dC5wcmludCgiPiIpOworfQorCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUmIHByb2ZpbGUpCit7CisgICAgcHJpbnRJbnRlcm5h
bChvdXQsIHN0YXRpY19jYXN0PEFyaXRoUHJvZmlsZTxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+Pihw
cm9maWxlKSk7CisKKyAgICBvdXQucHJpbnQoIiBBcmcgT2JzZXJ2ZWRUeXBlOjwiKTsKKyAgICBv
dXQucHJpbnQocHJvZmlsZS5hcmdPYnNlcnZlZFR5cGUoKSk7CisgICAgb3V0LnByaW50KCI+Iik7
Cit9CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBCaW5hcnlB
cml0aFByb2ZpbGUmIHByb2ZpbGUpCit7CisgICAgcHJpbnRJbnRlcm5hbChvdXQsIHN0YXRpY19j
YXN0PEFyaXRoUHJvZmlsZTxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+Pihwcm9maWxlKSk7CisKKyAg
ICBpZiAocHJvZmlsZS50b29rU3BlY2lhbEZhc3RQYXRoKCkpCisgICAgICAgIG91dC5wcmludCgi
IFRvb2sgc3BlY2lhbCBmYXN0IHBhdGguIik7CiAKICAgICBvdXQucHJpbnQoIiBMSFMgT2JzZXJ2
ZWRUeXBlOjwiKTsKICAgICBvdXQucHJpbnQocHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKSk7CiAg
ICAgb3V0LnByaW50KCI+IFJIUyBPYnNlcnZlZFR5cGU6PCIpOwogICAgIG91dC5wcmludChwcm9m
aWxlLnJoc09ic2VydmVkVHlwZSgpKTsKICAgICBvdXQucHJpbnQoIj4iKTsKLQotICAgIG91dC5w
cmludCgiIExIUyBSZXN1bHRUeXBlOjwiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
c3RhdGljX2Nhc3Q8dWludHB0cl90Pihwcm9maWxlLmxoc1Jlc3VsdFR5cGUoKS5iaXRzKCkpKSkp
OwotICAgIG91dC5wcmludCgiPiBSSFMgUmVzdWx0VHlwZTo8IiwgUmF3UG9pbnRlcihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ocHJvZmlsZS5yaHNSZXN1bHRUeXBl
KCkuYml0cygpKSkpKTsKLSAgICBvdXQucHJpbnQoIj4iKTsKIH0KIAogdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEpTQzo6T2JzZXJ2ZWRUeXBlJiBvYnNlcnZlZFR5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9m
aWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKaW5k
ZXggZmNjNGUyODE4YmUuLjA2ODlmYWE1MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCkBAIC02NiwxMTkgKzY2LDIxOSBAQCBwcml2YXRlOgog
ICAgIHVpbnQ4X3QgbV9iaXRzIHsgMCB9OwogfTsKIAotc3RydWN0IEFyaXRoUHJvZmlsZSB7Ci1w
cml2YXRlOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVtYmVyT2ZGbGFnQml0cyA9
IDY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByaHNSZXN1bHRUeXBlU2hpZnQgPSBu
dW1iZXJPZkZsYWdCaXRzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbGhzUmVzdWx0
VHlwZVNoaWZ0ID0gcmhzUmVzdWx0VHlwZVNoaWZ0ICsgUmVzdWx0VHlwZTo6bnVtQml0c05lZWRl
ZDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHJoc09ic2VydmVkVHlwZVNoaWZ0ID0g
bGhzUmVzdWx0VHlwZVNoaWZ0ICsgUmVzdWx0VHlwZTo6bnVtQml0c05lZWRlZDsKLSAgICBzdGF0
aWMgY29uc3RleHByIHVpbnQzMl90IGxoc09ic2VydmVkVHlwZVNoaWZ0ID0gcmhzT2JzZXJ2ZWRU
eXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQ7Ci0KLSAgICBzdGF0aWNfYXNz
ZXJ0KE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCA9PSAzLCAiV2UgbWFrZSBhIGhhcmQgYXNz
dW1wdGlvbiBhYm91dCB0aGF0IGhlcmUuIik7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBjbGVhclJoc09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ofigo
MSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAoMSA8PCAocmhzT2JzZXJ2ZWRUeXBlU2hpZnQg
KyAxKSkgfCAoMSA8PCAocmhzT2JzZXJ2ZWRUeXBlU2hpZnQgKyAyKSkpKTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQzMl90IGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzayA9IHN0YXRpY19j
YXN0PHVpbnQzMl90Pih+KCgxIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8ICgxIDw8IChsaHNP
YnNlcnZlZFR5cGVTaGlmdCArIDEpKSB8ICgxIDw8IChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIDIp
KSkpOwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCByZXN1bHRUeXBlTWFzayA9ICgx
IDw8IFJlc3VsdFR5cGU6Om51bUJpdHNOZWVkZWQpIC0gMTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQzMl90IG9ic2VydmVkVHlwZU1hc2sgPSAoMSA8PCBPYnNlcnZlZFR5cGU6Om51bUJpdHNO
ZWVkZWQpIC0gMTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBCaXRmaWVsZFR5cGU+CitjbGFzcyBBcml0
aFByb2ZpbGUgeworcHVibGljOgorICAgIGVudW0gT2JzZXJ2ZWRSZXN1bHRzIDogQml0ZmllbGRU
eXBlIHsKKyAgICAgICAgTm9uTmVnWmVyb0RvdWJsZSA9IDEgPDwgMCwKKyAgICAgICAgTmVnWmVy
b0RvdWJsZSAgICA9IDEgPDwgMSwKKyAgICAgICAgTm9uTnVtZXJpYyAgICAgICA9IDEgPDwgMiwK
KyAgICAgICAgSW50MzJPdmVyZmxvdyAgICA9IDEgPDwgMywKKyAgICAgICAgSW50NTJPdmVyZmxv
dyAgICA9IDEgPDwgNCwKKyAgICAgICAgQmlnSW50ICAgICAgICAgICA9IDEgPDwgNSwKKyAgICB9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgb2JzZXJ2ZWRSZXN1bHRzTnVtQml0c05l
ZWRlZCA9IDY7CiAKLSAgICBlbnVtIGNsYXNzIENvbnN0YW50VGFnIHsgQ29uc3RhbnQgfTsKKyAg
ICBib29sIGRpZE9ic2VydmVOb25JbnQzMigpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTmVn
WmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgQmlnSW50KTsgfQorICAg
IGJvb2wgZGlkT2JzZXJ2ZURvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTmVnWmVy
b0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlTm9uTmVnWmVy
b0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTmVnWmVyb0RvdWJsZSk7IH0KKyAg
ICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhO
ZWdaZXJvRG91YmxlKTsgfQorICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSBjb25zdCB7
IHJldHVybiBoYXNCaXRzKE5vbk51bWVyaWMpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50
KCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhCaWdJbnQpOyB9CisgICAgYm9vbCBkaWRPYnNlcnZl
SW50MzJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50MzJPdmVyZmxvdyk7IH0K
KyAgICBib29sIGRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gaGFzQml0
cyhJbnQ1Mk92ZXJmbG93KTsgfQogCi1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MzJfdCBzcGVjaWFsRmFzdFBhdGhCaXQgPSAxIDw8IChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9i
c2VydmVkVHlwZTo6bnVtQml0c05lZWRlZCk7Ci0gICAgc3RhdGljX2Fzc2VydCgobGhzT2JzZXJ2
ZWRUeXBlU2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpIDw9IChzaXplb2YodWlu
dDMyX3QpICogOCkgLSAxLCAiU2hvdWxkIGZpdCBpbiBhIHVpbnQzMl90LiIpOwotICAgIHN0YXRp
Y19hc3NlcnQoIShzcGVjaWFsRmFzdFBhdGhCaXQgJiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRN
YXNrKSwgIlRoZXNlIGJpdHMgc2hvdWxkIG5vdCBpbnRlcnNlY3QuIik7Ci0gICAgc3RhdGljX2Fz
c2VydChzcGVjaWFsRmFzdFBhdGhCaXQgJiBjbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2ssICJU
aGVzZSBiaXRzIHNob3VsZCBpbnRlcnNlY3QuIik7Ci0gICAgc3RhdGljX2Fzc2VydChzcGVjaWFs
RmFzdFBhdGhCaXQgPiB+Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhlc2UgYml0cyBz
aG91bGQgbm90IGludGVyc2VjdCBhbmQgc3BlY2lhbEZhc3RQYXRoQml0IHNob3VsZCBiZSBhIGhp
Z2hlciBiaXQuIik7CisgICAgdm9pZCBzZXRPYnNlcnZlZE5vbk5lZ1plcm9Eb3VibGUoKSB7IHNl
dEJpdChOb25OZWdaZXJvRG91YmxlKTsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZWROZWdaZXJvRG91
YmxlKCkgeyBzZXRCaXQoTmVnWmVyb0RvdWJsZSk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkTm9u
TnVtZXJpYygpIHsgc2V0Qml0KE5vbk51bWVyaWMpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZEJp
Z0ludCgpIHsgc2V0Qml0KEJpZ0ludCk7IH0KKyAgICB2b2lkIHNldE9ic2VydmVkSW50MzJPdmVy
ZmxvdygpIHsgc2V0Qml0KEludDMyT3ZlcmZsb3cpOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlZElu
dDUyT3ZlcmZsb3coKSB7IHNldEJpdChJbnQ1Mk92ZXJmbG93KTsgfQogCi0gICAgQXJpdGhQcm9m
aWxlKFJlc3VsdFR5cGUgYXJnKQotICAgICAgICA6IEFyaXRoUHJvZmlsZShDb25zdGFudFRhZzo6
Q29uc3RhbnQsIGFyZykKKyAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1ZSB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChsaHNSZXN1bHRUeXBlKCkuYml0cygpID09IGFyZy5iaXRzKCkp
OwotICAgICAgICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpKTsKLSAgICAgICAg
QVNTRVJUKHJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7CisgICAgICAgIGlmICh2YWx1ZS5p
c0ludDMyKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh2YWx1ZS5pc051bWJl
cigpKSB7CisgICAgICAgICAgICBtX2JpdHMgfD0gSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZs
b3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNCaWdJbnQoKSkgewor
ICAgICAgICAgICAgbV9iaXRzIHw9IEJpZ0ludDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBtX2JpdHMgfD0gTm9uTnVtZXJpYzsKICAgICB9CiAKLSAgICBBcml0aFBy
b2ZpbGUoUmVzdWx0VHlwZSBsaHMsIFJlc3VsdFR5cGUgcmhzKQotICAgICAgICA6IEFyaXRoUHJv
ZmlsZShDb25zdGFudFRhZzo6Q29uc3RhbnQsIGxocywgcmhzKQorICAgIGNvbnN0IHZvaWQqIGFk
ZHJlc3NPZkJpdHMoKSBjb25zdCB7IHJldHVybiAmbV9iaXRzOyB9CisKKyNpZiBFTkFCTEUoSklU
KQorICAgIC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVy
b0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpIGlmIGl0IHNlZXMgYQorICAgIC8vIGRvdWJsZS4gU2V0
cyBOb25OdW1lcmljIGlmIGl0IHNlZXMgYSBub24tbnVtZXJpYy4KKyAgICB2b2lkIGVtaXRPYnNl
cnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0g
SGF2ZVRhZ1JlZ2lzdGVycyk7CisKKyAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJP
dmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKS4KKyAgICBib29sIHNo
b3VsZEVtaXRTZXREb3VibGUoKSBjb25zdDsKKyAgICB2b2lkIGVtaXRTZXREb3VibGUoQ0NhbGxI
ZWxwZXJzJikgY29uc3Q7CisKKyAgICAvLyBTZXRzIE5vbk51bWVyaWMKKyAgICB2b2lkIGVtaXRT
ZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRW1pdFNl
dE5vbk51bWVyaWMoKSBjb25zdDsKKworICAgIC8vIFNldHMgQmlnSW50CisgICAgdm9pZCBlbWl0
U2V0QmlnSW50KENDYWxsSGVscGVycyYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRW1pdFNldEJp
Z0ludCgpIGNvbnN0OworCisgICAgdm9pZCBlbWl0VW5jb25kaXRpb25hbFNldChDQ2FsbEhlbHBl
cnMmLCBCaXRmaWVsZFR5cGUpIGNvbnN0OworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyAgICBj
b25zdGV4cHIgdWludDMyX3QgYml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQorCitwcm90
ZWN0ZWQ6CisgICAgQXJpdGhQcm9maWxlKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChsaHNSZXN1
bHRUeXBlKCkuYml0cygpID09IGxocy5iaXRzKCkgJiYgcmhzUmVzdWx0VHlwZSgpLmJpdHMoKSA9
PSByaHMuYml0cygpKTsKLSAgICAgICAgQVNTRVJUKGxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHko
KSk7Ci0gICAgICAgIEFTU0VSVChyaHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOwogICAgIH0K
IAotICAgIEFyaXRoUHJvZmlsZShPcGVyYW5kVHlwZXMgdHlwZXMpCi0gICAgICAgIDogQXJpdGhQ
cm9maWxlKHR5cGVzLmZpcnN0KCksIHR5cGVzLnNlY29uZCgpKQotICAgIHsgfQorICAgIGJvb2wg
aGFzQml0cyhpbnQgbWFzaykgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgbWFzazsgfQorICAgIHZv
aWQgc2V0Qml0KGludCBtYXNrKSB7IG1fYml0cyB8PSBtYXNrOyB9CisKKyAgICBCaXRmaWVsZFR5
cGUgbV9iaXRzIHsgMCB9OyAvLyBXZSB0YWtlIGNhcmUgdG8gdXBkYXRlIG1fYml0cyBvbmx5IGlu
IGEgc2luZ2xlIG9wZXJhdGlvbi4gV2UgZG9uJ3QgZXZlciBzdG9yZSBhbiBpbmNvbnNpc3RlbnQg
Yml0IHJlcHJlc2VudGF0aW9uIHRvIGl0LgorfTsKKworLyogVGhpcyBjbGFzcyBzdG9yZXMgdGhl
IGZvbGxvd2luZyBjb21wb25lbnRzIGluIDE2IGJpdHM6CisgKiAtIE9ic2VydmVkUmVzdWx0cwor
ICogLSBPYnNlcnZlZFR5cGUgZm9yIHRoZSBhcmd1bWVudAorICovCit1c2luZyBVbmFyeUFyaXRo
UHJvZmlsZUJhc2UgPSB1aW50MTZfdDsKK2NsYXNzIFVuYXJ5QXJpdGhQcm9maWxlIDogcHVibGlj
IEFyaXRoUHJvZmlsZTxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGFyZ09ic2VydmVkVHlwZVNoaWZ0ID0gb2JzZXJ2ZWRSZXN1bHRzTnVtQml0
c05lZWRlZDsKIAotICAgIEFyaXRoUHJvZmlsZSgpID0gZGVmYXVsdDsKKyAgICBzdGF0aWNfYXNz
ZXJ0KGFyZ09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9
IHNpemVvZihVbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gYSB0aGUg
dHlwZSBvZiB0aGUgdW5kZXJseWluZyBiaXRmaWVsZC4iKTsKIAotICAgIHN0YXRpYyBjb25zdGV4
cHIgQXJpdGhQcm9maWxlIGZyb21JbnQodWludDMyX3QgYml0cykKKyAgICBzdGF0aWMgY29uc3Rl
eHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sgPSBz
dGF0aWNfY2FzdDxVbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgYXJnT2JzZXJ2ZWRU
eXBlU2hpZnQpKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNl
IG9ic2VydmVkVHlwZU1hc2sgPSAoMSA8PCBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpIC0g
MTsKKworcHVibGljOgorICAgIFVuYXJ5QXJpdGhQcm9maWxlKCkKKyAgICAgICAgOiBBcml0aFBy
b2ZpbGU8VW5hcnlBcml0aFByb2ZpbGVCYXNlPigpCiAgICAgewotICAgICAgICByZXR1cm4gQXJp
dGhQcm9maWxlIHsgQ29uc3RhbnRUYWc6OkNvbnN0YW50LCBiaXRzIH07CisgICAgICAgIEFTU0VS
VChhcmdPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCkpOworICAgICAgICBBU1NFUlQoYXJnT2JzZXJ2
ZWRUeXBlKCkuaXNFbXB0eSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRo
UHJvZmlsZSBvYnNlcnZlZFVuYXJ5SW50KCkKKyAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJp
dGhQcm9maWxlQmFzZSBvYnNlcnZlZEludEJpdHMoKQogICAgIHsKICAgICAgICAgY29uc3RleHBy
IE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkg
fTsKLSAgICAgICAgY29uc3RleHByIHVpbnQzMl90IGJpdHMgPSBvYnNlcnZlZEludDMyLmJpdHMo
KSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsKLSAgICAgICAgc3RhdGljX2Fzc2VydChiaXRzID09
IDB4ODAwMDAwLCAiIik7Ci0gICAgICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBj
b25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSBvYnNlcnZlZEludDMyLmJpdHMo
KSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdDsKKyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQot
ICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQcm9maWxlIG9ic2VydmVkVW5hcnlOdW1iZXIoKQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkTnVtYmVy
Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVt
YmVyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1
aW50MzJfdCBiaXRzID0gb2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNo
aWZ0OwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHgxMDAwMDAwLCAiIik7Ci0gICAg
ICAgIHJldHVybiBmcm9tSW50KGJpdHMpOworICAgICAgICBjb25zdGV4cHIgVW5hcnlBcml0aFBy
b2ZpbGVCYXNlIGJpdHMgPSBvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgYXJnT2JzZXJ2ZWRUeXBl
U2hpZnQ7CisgICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHBy
IEFyaXRoUHJvZmlsZSBvYnNlcnZlZEJpbmFyeUludEludCgpCisKKyAgICBjb25zdGV4cHIgT2Jz
ZXJ2ZWRUeXBlIGFyZ09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgo
bV9iaXRzID4+IGFyZ09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9Cisg
ICAgdm9pZCBzZXRBcmdPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUpCisgICAgeworICAg
ICAgICBVbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKKyAgICAgICAgYml0cyAm
PSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2s7CisgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRz
KCkgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQ7CisgICAgICAgIG1fYml0cyA9IGJpdHM7CisgICAg
ICAgIEFTU0VSVChhcmdPYnNlcnZlZFR5cGUoKSA9PSB0eXBlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFyZ1Nhd0ludDMyKCkgeyBzZXRBcmdPYnNlcnZlZFR5cGUoYXJnT2JzZXJ2ZWRUeXBlKCkud2l0
aEludDMyKCkpOyB9CisgICAgdm9pZCBhcmdTYXdOdW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlw
ZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkpOyB9CisgICAgdm9pZCBhcmdTYXdOb25O
dW1iZXIoKSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoTm9uTnVt
YmVyKCkpOyB9CisKKyAgICB2b2lkIG9ic2VydmVBcmcoSlNWYWx1ZSBhcmcpCisgICAgeworICAg
ICAgICBVbmFyeUFyaXRoUHJvZmlsZSBuZXdQcm9maWxlID0gKnRoaXM7CisgICAgICAgIGlmIChh
cmcuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgaWYgKGFyZy5pc0ludDMyKCkpCisgICAgICAg
ICAgICAgICAgbmV3UHJvZmlsZS5hcmdTYXdJbnQzMigpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIG5ld1Byb2ZpbGUuYXJnU2F3TnVtYmVyKCk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgbmV3UHJvZmlsZS5hcmdTYXdOb25OdW1iZXIoKTsKKworICAgICAgICBtX2Jp
dHMgPSBuZXdQcm9maWxlLmJpdHMoKTsKKyAgICB9CisKKyAgICBib29sIGlzT2JzZXJ2ZWRUeXBl
RW1wdHkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFyZ09ic2VydmVkVHlwZSgpLmlzRW1wdHko
KTsKKyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7
Cit9OworCisvKiBUaGlzIGNsYXNzIHN0b3JlcyB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMgaW4g
MTYgYml0czoKKyAqIC0gT2JzZXJ2ZWRSZXN1bHRzCisgKiAtIE9ic2VydmVkVHlwZSBmb3Igcmln
aHQtaGFuZC1zaWRlCisgKiAtIE9ic2VydmVkVHlwZSBmb3IgbGVmdC1oYW5kLXNpZGUKKyAqIC0g
YSBiaXQgdXNlZCBieSBkaXZpc2lvbiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgc3BlY2lhbCBmYXN0
IHBhdGggd2FzIHRha2VuCisgKi8KK3VzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50
MTZfdDsKK2NsYXNzIEJpbmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8Qmlu
YXJ5QXJpdGhQcm9maWxlQmFzZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgcmhz
T2JzZXJ2ZWRUeXBlU2hpZnQgPSBvYnNlcnZlZFJlc3VsdHNOdW1CaXRzTmVlZGVkOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQgPSByaHNPYnNlcnZl
ZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0c05lZWRlZDsKKworICAgIHN0YXRpY19h
c3NlcnQoT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkID09IDMsICJXZSBtYWtlIGEgaGFyZCBh
c3N1bXB0aW9uIGFib3V0IHRoYXQgaGVyZS4iKTsKKyAgICBzdGF0aWMgY29uc3RleHByIEJpbmFy
eUFyaXRoUHJvZmlsZUJhc2UgY2xlYXJSaHNPYnNlcnZlZFR5cGVCaXRNYXNrID0gc3RhdGljX2Nh
c3Q8QmluYXJ5QXJpdGhQcm9maWxlQmFzZT4ofigwYjExMSA8PCByaHNPYnNlcnZlZFR5cGVTaGlm
dCkpOworICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBjbGVhckxo
c09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlBcml0aFByb2ZpbGVCYXNl
Pih+KDBiMTExIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSk7CisKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWRUeXBlTWFzayA9ICgxIDw8IE9ic2Vy
dmVkVHlwZTo6bnVtQml0c05lZWRlZCkgLSAxOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIHNwZWNpYWxGYXN0UGF0aEJpdCA9IDEgPDwgKGxo
c09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KChsaHNPYnNlcnZlZFR5cGVTaGlmdCArIE9ic2VydmVkVHlwZTo6bnVtQml0
c05lZWRlZCArIDEpIDw9IHNpemVvZihCaW5hcnlBcml0aFByb2ZpbGVCYXNlKSAqIDgsICJTaG91
bGQgZml0IGluIGEgdWludDMyX3QuIik7CisgICAgc3RhdGljX2Fzc2VydCghKHNwZWNpYWxGYXN0
UGF0aEJpdCAmIH5jbGVhckxoc09ic2VydmVkVHlwZUJpdE1hc2spLCAiVGhlc2UgYml0cyBzaG91
bGQgbm90IGludGVyc2VjdC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJp
dCAmIGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaywgIlRoZXNlIGJpdHMgc2hvdWxkIGludGVy
c2VjdC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNwZWNpYWxGYXN0UGF0aEJpdCA+IH5jbGVhckxo
c09ic2VydmVkVHlwZUJpdE1hc2ssICJUaGVzZSBiaXRzIHNob3VsZCBub3QgaW50ZXJzZWN0IGFu
ZCBzcGVjaWFsRmFzdFBhdGhCaXQgc2hvdWxkIGJlIGEgaGlnaGVyIGJpdC4iKTsKKworICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSgpCisgICAgICAgIDogQXJpdGhQcm9maWxlPEJpbmFyeUFyaXRoUHJv
ZmlsZUJhc2U+ICgpCisgICAgeworICAgICAgICBBU1NFUlQobGhzT2JzZXJ2ZWRUeXBlKCkuaXNF
bXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKHJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSk7Cisg
ICAgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2Vy
dmVkSW50SW50Qml0cygpCiAgICAgewogICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9i
c2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9OwotICAgICAgICBjb25z
dGV4cHIgdWludDMyX3QgYml0cyA9IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCBsaHNPYnNlcnZl
ZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHg5MDAwMDAsICIiKTsKLSAgICAg
ICAgcmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNvbnN0ZXhwciBCaW5hcnlBcml0aFBy
b2ZpbGVCYXNlIGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBl
U2hpZnQpIHwgKG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsK
KyAgICAgICAgcmV0dXJuIGJpdHM7CiAgICAgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgQXJpdGhQ
cm9maWxlIG9ic2VydmVkQmluYXJ5TnVtYmVySW50KCkKKyAgICBzdGF0aWMgY29uc3RleHByIEJp
bmFyeUFyaXRoUHJvZmlsZUJhc2Ugb2JzZXJ2ZWROdW1iZXJJbnRCaXRzKCkKICAgICB7CiAgICAg
ICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUo
KS53aXRoTnVtYmVyKCkgfTsKICAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZl
ZEludDMyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkgfTsKLSAgICAgICAgY29uc3RleHBy
IHVpbnQzMl90IGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGxoc09ic2VydmVkVHlw
ZVNoaWZ0KSB8IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoYml0cyA9PSAweDExMDAwMDAsICIiKTsKLSAgICAgICAg
cmV0dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2Zp
bGVCYXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNo
aWZ0KSB8IChvYnNlcnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7Cisg
ICAgICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJv
ZmlsZSBvYnNlcnZlZEJpbmFyeUludE51bWJlcigpCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5h
cnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkSW50TnVtYmVyQml0cygpCiAgICAgewogICAgICAg
ICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBlKCku
d2l0aE51bWJlcigpIH07CiAgICAgICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgb2JzZXJ2ZWRJ
bnQzMiB7IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1
aW50MzJfdCBiaXRzID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNo
aWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpOwot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KGJpdHMgPT0gMHhhMDAwMDAsICIiKTsKLSAgICAgICAgcmV0
dXJuIGZyb21JbnQoYml0cyk7CisgICAgICAgIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVC
YXNlIGJpdHMgPSAob2JzZXJ2ZWRJbnQzMi5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQp
IHwgKG9ic2VydmVkTnVtYmVyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7CisgICAg
ICAgIHJldHVybiBiaXRzOwogICAgIH0KLSAgICBzdGF0aWMgY29uc3RleHByIEFyaXRoUHJvZmls
ZSBvYnNlcnZlZEJpbmFyeU51bWJlck51bWJlcigpCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaW5h
cnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkTnVtYmVyTnVtYmVyQml0cygpCiAgICAgewogICAg
ICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2JzZXJ2ZWRUeXBl
KCkud2l0aE51bWJlcigpIH07Ci0gICAgICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzID0gKG9i
c2VydmVkTnVtYmVyLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgfCAob2JzZXJ2ZWRO
dW1iZXIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChiaXRzID09IDB4MTIwMDAwMCwgIiIpOwotICAgICAgICByZXR1cm4gZnJvbUludChiaXRz
KTsKKyAgICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgYml0cyA9IChvYnNl
cnZlZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBlU2hpZnQpIHwgKG9ic2VydmVkTnVt
YmVyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7CisgICAgICAgIHJldHVybiBiaXRz
OwogICAgIH0KIAotICAgIGVudW0gT2JzZXJ2ZWRSZXN1bHRzIHsKLSAgICAgICAgTm9uTmVnWmVy
b0RvdWJsZSA9IDEgPDwgMCwKLSAgICAgICAgTmVnWmVyb0RvdWJsZSAgICA9IDEgPDwgMSwKLSAg
ICAgICAgTm9uTnVtZXJpYyAgICAgICA9IDEgPDwgMiwKLSAgICAgICAgSW50MzJPdmVyZmxvdyAg
ICA9IDEgPDwgMywKLSAgICAgICAgSW50NTJPdmVyZmxvdyAgICA9IDEgPDwgNCwKLSAgICAgICAg
QmlnSW50ICAgICAgICAgICA9IDEgPDwgNSwKLSAgICB9OwotCi0gICAgUmVzdWx0VHlwZSBsaHNS
ZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1cm4gUmVzdWx0VHlwZSgobV9iaXRzID4+IGxoc1Jlc3Vs
dFR5cGVTaGlmdCkgJiByZXN1bHRUeXBlTWFzayk7IH0KLSAgICBSZXN1bHRUeXBlIHJoc1Jlc3Vs
dFR5cGUoKSBjb25zdCB7IHJldHVybiBSZXN1bHRUeXBlKChtX2JpdHMgPj4gcmhzUmVzdWx0VHlw
ZVNoaWZ0KSAmIHJlc3VsdFR5cGVNYXNrKTsgfQotCiAgICAgY29uc3RleHByIE9ic2VydmVkVHlw
ZSBsaHNPYnNlcnZlZFR5cGUoKSBjb25zdCB7IHJldHVybiBPYnNlcnZlZFR5cGUoKG1fYml0cyA+
PiBsaHNPYnNlcnZlZFR5cGVTaGlmdCkgJiBvYnNlcnZlZFR5cGVNYXNrKTsgfQogICAgIGNvbnN0
ZXhwciBPYnNlcnZlZFR5cGUgcmhzT2JzZXJ2ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gT2JzZXJ2
ZWRUeXBlKChtX2JpdHMgPj4gcmhzT2JzZXJ2ZWRUeXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBlTWFz
ayk7IH0KICAgICB2b2lkIHNldExoc09ic2VydmVkVHlwZShPYnNlcnZlZFR5cGUgdHlwZSkKICAg
ICB7Ci0gICAgICAgIHVpbnQzMl90IGJpdHMgPSBtX2JpdHM7CisgICAgICAgIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsKICAgICAgICAgYml0cyAmPSBjbGVhckxoc09ic2Vy
dmVkVHlwZUJpdE1hc2s7CiAgICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgbGhzT2JzZXJ2
ZWRUeXBlU2hpZnQ7CiAgICAgICAgIG1fYml0cyA9IGJpdHM7CkBAIC0xODcsNyArMjg3LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRSaHNPYnNlcnZlZFR5cGUoT2JzZXJ2ZWRUeXBlIHR5cGUp
CiAgICAgeyAKLSAgICAgICAgdWludDMyX3QgYml0cyA9IG1fYml0czsKKyAgICAgICAgQmluYXJ5
QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gbV9iaXRzOwogICAgICAgICBiaXRzICY9IGNsZWFyUmhz
T2JzZXJ2ZWRUeXBlQml0TWFzazsKICAgICAgICAgYml0cyB8PSB0eXBlLmJpdHMoKSA8PCByaHNP
YnNlcnZlZFR5cGVTaGlmdDsKICAgICAgICAgbV9iaXRzID0gYml0czsKQEAgLTE5NiwzOSArMjk2
LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCB0b29rU3BlY2lhbEZhc3RQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9iaXRzICYgc3BlY2lhbEZhc3RQYXRoQml0OyB9CiAKLSAgICBib29sIGRpZE9ic2Vy
dmVOb25JbnQzMigpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTmVnWmVyb0RvdWJsZSB8IE5l
Z1plcm9Eb3VibGUgfCBOb25OdW1lcmljIHwgQmlnSW50KTsgfQotICAgIGJvb2wgZGlkT2JzZXJ2
ZURvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1pl
cm9Eb3VibGUpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIGNvbnN0
IHsgcmV0dXJuIGhhc0JpdHMoTm9uTmVnWmVyb0RvdWJsZSk7IH0KLSAgICBib29sIGRpZE9ic2Vy
dmVOZWdaZXJvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhOZWdaZXJvRG91YmxlKTsg
fQotICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSBjb25zdCB7IHJldHVybiBoYXNCaXRz
KE5vbk51bWVyaWMpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50KCkgY29uc3QgeyByZXR1
cm4gaGFzQml0cyhCaWdJbnQpOyB9Ci0gICAgYm9vbCBkaWRPYnNlcnZlSW50MzJPdmVyZmxvdygp
IGNvbnN0IHsgcmV0dXJuIGhhc0JpdHMoSW50MzJPdmVyZmxvdyk7IH0KLSAgICBib29sIGRpZE9i
c2VydmVJbnQ1Mk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gaGFzQml0cyhJbnQ1Mk92ZXJmbG93
KTsgfQotCi0gICAgdm9pZCBzZXRPYnNlcnZlZE5vbk5lZ1plcm9Eb3VibGUoKSB7IHNldEJpdChO
b25OZWdaZXJvRG91YmxlKTsgfQotICAgIHZvaWQgc2V0T2JzZXJ2ZWROZWdaZXJvRG91YmxlKCkg
eyBzZXRCaXQoTmVnWmVyb0RvdWJsZSk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkTm9uTnVtZXJp
YygpIHsgc2V0Qml0KE5vbk51bWVyaWMpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEJpZ0ludCgp
IHsgc2V0Qml0KEJpZ0ludCk7IH0KLSAgICB2b2lkIHNldE9ic2VydmVkSW50MzJPdmVyZmxvdygp
IHsgc2V0Qml0KEludDMyT3ZlcmZsb3cpOyB9Ci0gICAgdm9pZCBzZXRPYnNlcnZlZEludDUyT3Zl
cmZsb3coKSB7IHNldEJpdChJbnQ1Mk92ZXJmbG93KTsgfQotCi0gICAgY29uc3Qgdm9pZCogYWRk
cmVzc09mQml0cygpIGNvbnN0IHsgcmV0dXJuICZtX2JpdHM7IH0KLQotICAgIHZvaWQgb2JzZXJ2
ZVJlc3VsdChKU1ZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIo
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsK
LSAgICAgICAgICAgIG1fYml0cyB8PSBJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5v
bk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc0JpZ0ludCgpKSB7Ci0gICAgICAg
ICAgICBtX2JpdHMgfD0gQmlnSW50OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIG1fYml0cyB8PSBOb25OdW1lcmljOwotICAgIH0KLQogICAgIHZvaWQgbGhzU2F3SW50
MzIoKSB7IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSk7
IH0KICAgICB2b2lkIGxoc1Nhd051bWJlcigpIHsgc2V0TGhzT2JzZXJ2ZWRUeXBlKGxoc09ic2Vy
dmVkVHlwZSgpLndpdGhOdW1iZXIoKSk7IH0KICAgICB2b2lkIGxoc1Nhd05vbk51bWJlcigpIHsg
c2V0TGhzT2JzZXJ2ZWRUeXBlKGxoc09ic2VydmVkVHlwZSgpLndpdGhOb25OdW1iZXIoKSk7IH0K
QEAgLTIzOCw3ICszMDUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG9ic2VydmVMSFMoSlNWYWx1
ZSBsaHMpCiAgICAgewotICAgICAgICBBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlzOwor
ICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlzOwogICAgICAgICBp
ZiAobGhzLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIGlmIChsaHMuaXNJbnQzMigpKQogICAg
ICAgICAgICAgICAgIG5ld1Byb2ZpbGUubGhzU2F3SW50MzIoKTsKQEAgLTI1NCw3ICszMjEsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBvYnNlcnZlTEhTKGxocyk7CiAKLSAgICAgICAgQXJp
dGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxl
IG5ld1Byb2ZpbGUgPSAqdGhpczsKICAgICAgICAgaWYgKHJocy5pc051bWJlcigpKSB7CiAgICAg
ICAgICAgICBpZiAocmhzLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBuZXdQcm9maWxlLnJo
c1Nhd0ludDMyKCk7CkBAIC0yNjYsNDcgKzMzMywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYml0
cyA9IG5ld1Byb2ZpbGUuYml0cygpOwogICAgIH0KIAotI2lmIEVOQUJMRShKSVQpICAgIAotICAg
IC8vIFNldHMgKEludDMyT3ZlcmZsb3cgfCBJbnQ1Mk92ZXJmbG93IHwgTm9uTmVnWmVyb0RvdWJs
ZSB8IE5lZ1plcm9Eb3VibGUpIGlmIGl0IHNlZXMgYQotICAgIC8vIGRvdWJsZS4gU2V0cyBOb25O
dW1lcmljIGlmIGl0IHNlZXMgYSBub24tbnVtZXJpYy4KLSAgICB2b2lkIGVtaXRPYnNlcnZlUmVz
dWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRh
Z1JlZ2lzdGVycyk7Ci0gICAgCi0gICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3Zl
cmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCi0gICAgYm9vbCBzaG91
bGRFbWl0U2V0RG91YmxlKCkgY29uc3Q7Ci0gICAgdm9pZCBlbWl0U2V0RG91YmxlKENDYWxsSGVs
cGVycyYpIGNvbnN0OwotICAgIAotICAgIC8vIFNldHMgTm9uTnVtYmVyLgotICAgIHZvaWQgZW1p
dFNldE5vbk51bWVyaWMoQ0NhbGxIZWxwZXJzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0
U2V0Tm9uTnVtZXJpYygpIGNvbnN0OwotCi0gICAgLy8gU2V0cyBCaWdJbnQKLSAgICB2b2lkIGVt
aXRTZXRCaWdJbnQoQ0NhbGxIZWxwZXJzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRFbWl0U2V0
QmlnSW50KCkgY29uc3Q7Ci0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKLQotICAgIGNvbnN0ZXhwciB1
aW50MzJfdCBiaXRzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzOyB9Ci0KLXByaXZhdGU6Ci0gICAg
Y29uc3RleHByIGV4cGxpY2l0IEFyaXRoUHJvZmlsZShDb25zdGFudFRhZywgdWludDMyX3QgYml0
cykKLSAgICAgICAgOiBtX2JpdHMoYml0cykKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3RleHBy
IEFyaXRoUHJvZmlsZShDb25zdGFudFRhZywgUmVzdWx0VHlwZSBhcmcpCi0gICAgICAgIDogbV9i
aXRzKGFyZy5iaXRzKCkgPDwgbGhzUmVzdWx0VHlwZVNoaWZ0KQorICAgIGJvb2wgaXNPYnNlcnZl
ZFR5cGVFbXB0eSgpCiAgICAgeworICAgICAgICByZXR1cm4gbGhzT2JzZXJ2ZWRUeXBlKCkuaXNF
bXB0eSgpICYmIHJoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKTsKICAgICB9CiAKLSAgICBjb25z
dGV4cHIgQXJpdGhQcm9maWxlKENvbnN0YW50VGFnLCBSZXN1bHRUeXBlIGxocywgUmVzdWx0VHlw
ZSByaHMpCi0gICAgICAgIDogbV9iaXRzKChsaHMuYml0cygpIDw8IGxoc1Jlc3VsdFR5cGVTaGlm
dCkgfCAocmhzLmJpdHMoKSA8PCByaHNSZXN1bHRUeXBlU2hpZnQpKQotICAgIHsKLSAgICB9Ci0K
LSAgICBib29sIGhhc0JpdHMoaW50IG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIG1hc2s7
IH0KLSAgICB2b2lkIHNldEJpdChpbnQgbWFzaykgeyBtX2JpdHMgfD0gbWFzazsgfQotCi0gICAg
dWludDMyX3QgbV9iaXRzIHsgMCB9OyAvLyBXZSB0YWtlIGNhcmUgdG8gdXBkYXRlIG1fYml0cyBv
bmx5IGluIGEgc2luZ2xlIG9wZXJhdGlvbi4gV2UgZG9uJ3QgZXZlciBzdG9yZSBhbiBpbmNvbnNp
c3RlbnQgYml0IHJlcHJlc2VudGF0aW9uIHRvIGl0LgotCiAgICAgZnJpZW5kIGNsYXNzIEpTQzo6
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogfTsKIApAQCAtMzE0LDcgKzM0NSw4IEBAIHByaXZhdGU6
CiAKIG5hbWVzcGFjZSBXVEYgewogCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBj
b25zdCBKU0M6OkFyaXRoUHJvZmlsZSYpOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiwgY29uc3QgSlNDOjpVbmFyeUFyaXRoUHJvZmlsZSYpOwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgY29uc3QgSlNDOjpCaW5hcnlBcml0aFByb2ZpbGUmKTsKIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IEpTQzo6T2JzZXJ2ZWRUeXBlJik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKaW5kZXggYzJlYzljZjU3MmEuLjcyZGU2MDlhYTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTQxLDYgKzQxLDcgQEAg
dHlwZXMgWwogICAgIDpKU1R5cGUsCiAgICAgOkpTVmFsdWUsCiAgICAgOkxMSW50Q2FsbExpbmtJ
bmZvLAorICAgIDpSZXN1bHRUeXBlLAogICAgIDpPcGVyYW5kVHlwZXMsCiAgICAgOlByb2ZpbGVU
eXBlQnl0ZWNvZGVGbGFnLAogICAgIDpQcm9wZXJ0eU9mZnNldCwKQEAgLTU4LDcgKzU5LDggQEAg
dHlwZXMgWwogCiAgICAgOlZhbHVlUHJvZmlsZSwKICAgICA6VmFsdWVQcm9maWxlQW5kT3BlcmFu
ZEJ1ZmZlciwKLSAgICA6QXJpdGhQcm9maWxlLAorICAgIDpVbmFyeUFyaXRoUHJvZmlsZSwKKyAg
ICA6QmluYXJ5QXJpdGhQcm9maWxlLAogICAgIDpBcnJheVByb2ZpbGUsCiAgICAgOkFycmF5QWxs
b2NhdGlvblByb2ZpbGUsCiAgICAgOk9iamVjdEFsbG9jYXRpb25Qcm9maWxlLApAQCAtMjc5LDEw
ICsyODEsNyBAQCBvcF9ncm91cCA6UHJvZmlsZWRCaW5hcnlPcCwKICAgICAgICAgb3BlcmFuZFR5
cGVzOiBPcGVyYW5kVHlwZXMsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBhcml0
aFByb2ZpbGU6IEFyaXRoUHJvZmlsZQotICAgIH0sCi0gICAgbWV0YWRhdGFfaW5pdGlhbGl6ZXJz
OiB7Ci0gICAgICAgIGFyaXRoUHJvZmlsZTogOm9wZXJhbmRUeXBlcworICAgICAgICBhcml0aFBy
b2ZpbGU6IEJpbmFyeUFyaXRoUHJvZmlsZQogICAgIH0KIAogb3BfZ3JvdXAgOlZhbHVlUHJvZmls
ZWRCaW5hcnlPcCwKQEAgLTM2NCwxMyArMzYzLDEwIEBAIG9wIDpuZWdhdGUsCiAgICAgYXJnczog
ewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgb3BlcmFuZDogVmlydHVh
bFJlZ2lzdGVyLAotICAgICAgICBvcGVyYW5kVHlwZXM6IE9wZXJhbmRUeXBlcywKKyAgICAgICAg
cmVzdWx0VHlwZTogUmVzdWx0VHlwZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAg
IGFyaXRoUHJvZmlsZTogQXJpdGhQcm9maWxlLAotICAgIH0sCi0gICAgbWV0YWRhdGFfaW5pdGlh
bGl6ZXJzOiB7Ci0gICAgICAgIGFyaXRoUHJvZmlsZTogOm9wZXJhbmRUeXBlcworICAgICAgICBh
cml0aFByb2ZpbGU6IFVuYXJ5QXJpdGhQcm9maWxlLAogICAgIH0KIAogb3AgOm5vdCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMGY4ZTdmOGI0
ZjkuLjY4MWRmYzllYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtMTQ3OSwyNSArMTQ3OSwyNSBAQCBTdHJ1Y3R1cmVTdHViSW5mbyogQ29k
ZUJsb2NrOjphZGRTdHViSW5mbyhBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAgICAgcmV0dXJuIGVu
c3VyZUpJVERhdGEobG9ja2VyKS5tX3N0dWJJbmZvcy5hZGQoYWNjZXNzVHlwZSk7CiB9CiAKLUpJ
VEFkZElDKiBDb2RlQmxvY2s6OmFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KQorSklUQWRkSUMqIENvZGVCbG9jazo6YWRkSklUQWRkSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwog
ICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9hZGRJQ3MuYWRkKGFyaXRoUHJvZmls
ZSk7CiB9CiAKLUpJVE11bElDKiBDb2RlQmxvY2s6OmFkZEpJVE11bElDKEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKQorSklUTXVsSUMqIENvZGVCbG9jazo6YWRkSklUTXVsSUMoQmluYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2spOwogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9tdWxJQ3MuYWRk
KGFyaXRoUHJvZmlsZSk7CiB9CiAKLUpJVFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUU3ViSUMqIENvZGVCbG9jazo6YWRkSklUU3Vi
SUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlciku
bV9zdWJJQ3MuYWRkKGFyaXRoUHJvZmlsZSk7CiB9CiAKLUpJVE5lZ0lDKiBDb2RlQmxvY2s6OmFk
ZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQorSklUTmVnSUMqIENvZGVCbG9j
azo6YWRkSklUTmVnSUMoVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJuIGVuc3VyZUpJVERh
dGEobG9ja2VyKS5tX25lZ0lDcy5hZGQoYXJpdGhQcm9maWxlKTsKQEAgLTMwODQsMTYgKzMwODQs
MTkgQEAgY29uc3QgSW5zdHJ1Y3Rpb24qIENvZGVCbG9jazo6b3V0T2ZMaW5lSnVtcFRhcmdldChj
b25zdCBJbnN0cnVjdGlvbiogcGMpCiAgICAgcmV0dXJuIGluc3RydWN0aW9ucygpLmF0KG9mZnNl
dCArIHRhcmdldCkucHRyKCk7CiB9CiAKLUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjphcml0aFBy
b2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKK0JpbmFy
eUFyaXRoUHJvZmlsZSogQ29kZUJsb2NrOjpiaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKLSAgICByZXR1cm4gYXJpdGhQcm9m
aWxlRm9yUEMoaW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkucHRyKCkp
OworICAgIHJldHVybiBiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhpbnN0cnVjdGlvbnMoKS5hdChi
eXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKSk7CiB9CiAKLUFyaXRoUHJvZmlsZSogQ29kZUJs
b2NrOjphcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCitVbmFyeUFyaXRo
UHJvZmlsZSogQ29kZUJsb2NrOjp1bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQoreworICAgIHJldHVybiB1bmFyeUFyaXRoUHJvZmls
ZUZvclBDKGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpKTsK
K30KKworQmluYXJ5QXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmJpbmFyeUFyaXRoUHJvZmlsZUZv
clBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKIHsKICAgICBzd2l0Y2ggKHBjLT5vcGNvZGVJRCgp
KSB7Ci0gICAgY2FzZSBvcF9uZWdhdGU6Ci0gICAgICAgIHJldHVybiAmcGMtPmFzPE9wTmVnYXRl
PigpLm1ldGFkYXRhKHRoaXMpLm1fYXJpdGhQcm9maWxlOwogICAgIGNhc2Ugb3BfYWRkOgogICAg
ICAgICByZXR1cm4gJnBjLT5hczxPcEFkZD4oKS5tZXRhZGF0YSh0aGlzKS5tX2FyaXRoUHJvZmls
ZTsKICAgICBjYXNlIG9wX211bDoKQEAgLTMxMDksMTEgKzMxMTIsMjMgQEAgQXJpdGhQcm9maWxl
KiBDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKiBwYykKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorVW5hcnlBcml0aFByb2ZpbGUqIENvZGVCbG9jazo6dW5h
cnlBcml0aFByb2ZpbGVGb3JQQyhjb25zdCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgc3dpdGNo
IChwYy0+b3Bjb2RlSUQoKSkgeworICAgIGNhc2Ugb3BfbmVnYXRlOgorICAgICAgICByZXR1cm4g
JnBjLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YSh0aGlzKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KwogYm9vbCBDb2RlQmxvY2s6OmNvdWxkVGFrZVNwZWNpYWxBcml0aEZhc3RDYXNlKEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKICAgICBpZiAoIWhhc0Jhc2VsaW5lSklUUHJvZmlsaW5n
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBcml0aFByb2ZpbGUqIHByb2ZpbGUgPSBh
cml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIEJpbmFyeUFy
aXRoUHJvZmlsZSogcHJvZmlsZSA9IGJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgo
Ynl0ZWNvZGVJbmRleCk7CiAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIHByb2ZpbGUtPnRvb2tTcGVjaWFsRmFzdFBhdGgoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBkMmMwNjk4MDNhOC4uMThlNDhj
MjY2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAg
LTgzLDYgKzgzLDggQEAgc3RydWN0IE9TUkV4aXRTdGF0ZTsKIH0gLy8gbmFtZXNwYWNlIERGRwog
I2VuZGlmCiAKK2NsYXNzIFVuYXJ5QXJpdGhQcm9maWxlOworY2xhc3MgQmluYXJ5QXJpdGhQcm9m
aWxlOwogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgQ29kZUJsb2NrU2V0
OwogY2xhc3MgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTsKQEAgLTk2LDcgKzk4LDYgQEAgY2xh
c3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsK
IAotc3RydWN0IEFyaXRoUHJvZmlsZTsKIHN0cnVjdCBPcENhdGNoOwogCiBlbnVtIFJlb3B0aW1p
emF0aW9uTW9kZSB7IERvbnRDb3VudFJlb3B0aW1pemF0aW9uLCBDb3VudFJlb3B0aW1pemF0aW9u
IH07CkBAIC0yNzksMjIgKzI4MCwyMiBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpJVERhdGEmIGVu
c3VyZUpJVERhdGFTbG93KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOwogCi0gICAgSklUQWRk
SUMqIGFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVE11bElDKiBhZGRKSVRNdWxJ
QyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVROZWdJQyogYWRkSklUTmVnSUMoQXJpdGhQcm9maWxl
Kik7Ci0gICAgSklUU3ViSUMqIGFkZEpJVFN1YklDKEFyaXRoUHJvZmlsZSopOworICAgIEpJVEFk
ZElDKiBhZGRKSVRBZGRJQyhCaW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBKSVRNdWxJQyogYWRk
SklUTXVsSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUTmVnSUMqIGFkZEpJVE5lZ0lD
KFVuYXJ5QXJpdGhQcm9maWxlKik7CisgICAgSklUU3ViSUMqIGFkZEpJVFN1YklDKEJpbmFyeUFy
aXRoUHJvZmlsZSopOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5h
bWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRB
ZGRHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgSklUQWRkSUMqIGFkZE1hdGhJQyhBcml0
aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVEFkZElDKHByb2ZpbGUpOyB9CisgICAg
SklUQWRkSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJu
IGFkZEpJVEFkZElDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJh
dG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5l
cmF0b3IsIEpJVE11bEdlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KLSAgICBKSVRNdWxJQyogYWRk
TWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTXVsSUMocHJvZmls
ZSk7IH0KKyAgICBKSVRNdWxJQyogYWRkTWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogcHJvZmls
ZSkgeyByZXR1cm4gYWRkSklUTXVsSUMocHJvZmlsZSk7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19zYW1lPEdlbmVyYXRvciwgSklUTmVnR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgotICAgIEpJ
VE5lZ0lDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRO
ZWdJQyhwcm9maWxlKTsgfQorICAgIEpJVE5lZ0lDKiBhZGRNYXRoSUMoVW5hcnlBcml0aFByb2Zp
bGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE5lZ0lDKHByb2ZpbGUpOyB9CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVFN1YkdlbmVyYXRvcj46OnZhbHVlPjo6dHlw
ZT4KLSAgICBKSVRTdWJJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1
cm4gYWRkSklUU3ViSUMocHJvZmlsZSk7IH0KKyAgICBKSVRTdWJJQyogYWRkTWF0aElDKEJpbmFy
eUFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUU3ViSUMocHJvZmlsZSk7IH0K
IAogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBhZGRTdHViSW5mbyhBY2Nlc3NUeXBlKTsKIApAQCAt
NDk3LDggKzQ5OCwxMCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dm9pZCBmb3JFYWNoT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoY29uc3QgRnVuY3RvciYpOwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaExMSW50Q2FsbExpbmtJbmZv
KGNvbnN0IEZ1bmN0b3ImKTsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlRm9yQnl0
ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBiaW5h
cnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOworICAgIFVuYXJ5
QXJpdGhQcm9maWxlKiB1bmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJ
bmRleCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBiaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhj
b25zdCBJbnN0cnVjdGlvbiopOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiB1bmFyeUFyaXRoUHJv
ZmlsZUZvclBDKGNvbnN0IEluc3RydWN0aW9uKik7CiAKICAgICBib29sIGNvdWxkVGFrZVNwZWNp
YWxBcml0aEZhc3RDYXNlKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVPZmZzZXQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCBlZGEyNGJlNDY5NS4uNTc3ODliYzJjNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtMjM1LDYgKzIzNSwxOCBA
QCBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBzaXpl
ICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdQogICAgIH0KIH07CiAKK3RlbXBsYXRlPE9wY29kZVNp
emUgc2l6ZT4KK3N0cnVjdCBGaXRzPFJlc3VsdFR5cGUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c2l6ZW9mKFJlc3VsdFR5cGUpICE9IHNpemUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMgRml0
czx1aW50OF90LCBzaXplPiB7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoUmVzdWx0VHlwZSkg
PT0gc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICB1c2luZyBCYXNlID0gRml0czx1aW50OF90LCBzaXpl
PjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKFJlc3VsdFR5cGUgdHlwZSkgeyByZXR1cm4gQmFz
ZTo6Y2hlY2sodHlwZS5iaXRzKCkpOyB9CisKKyAgICBzdGF0aWMgdHlwZW5hbWUgQmFzZTo6VGFy
Z2V0VHlwZSBjb252ZXJ0KFJlc3VsdFR5cGUgdHlwZSkgeyByZXR1cm4gQmFzZTo6Y29udmVydCh0
eXBlLmJpdHMoKSk7IH0KKworICAgIHN0YXRpYyBSZXN1bHRUeXBlIGNvbnZlcnQodHlwZW5hbWUg
QmFzZTo6VGFyZ2V0VHlwZSB0eXBlKSB7IHJldHVybiBSZXN1bHRUeXBlKEJhc2U6OmNvbnZlcnQo
dHlwZSkpOyB9Cit9OworCiB0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0czxP
cGVyYW5kVHlwZXMsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKE9wZXJhbmRUeXBlcykg
IT0gc2l6ZSwgc3RkOjp0cnVlX3R5cGU+PiB7CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoT3Bl
cmFuZFR5cGVzKSA9PSBzaXplb2YodWludDE2X3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmNwcAppbmRleCA3MTA0ZDAxYWUxMS4uMmI2OWYzNmM3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5jcHAKQEAgLTY2LDEwICs2NiwxNiBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIEFyaXRoUHJvZmlsZVJl
YWR5OiB7Ci0gICAgICAgIHUuYXJpdGhQcm9maWxlLT5lbWl0T2JzZXJ2ZVJlc3VsdChqaXQsIHJl
Z3MsIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgY2FzZSBVbmFyeUFyaXRoUHJvZmlsZVJl
YWR5OiB7CisgICAgICAgIHUudW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGpp
dCwgcmVncywgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0g
fQorICAgIH0KKworICAgIGNhc2UgQmluYXJ5QXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAg
dS5iaW5hcnlBcml0aFByb2ZpbGUtPmVtaXRPYnNlcnZlUmVzdWx0KGppdCwgcmVncywgRG9Ob3RI
YXZlVGFnUmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB9CiAgICAgCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTk0LDEwICsxMDAsMTYgQEAg
dm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpyZXBvcnRWYWx1ZShKU1ZhbHVlIHZh
bHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FzZSBBcml0aFByb2ZpbGVSZWFk
eTogewotICAgICAgICB1LmFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdCh2YWx1ZSk7CisgICAg
Y2FzZSBVbmFyeUFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUudW5hcnlBcml0aFByb2Zp
bGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOwogICAgICAgICByZXR1cm47Ci0gICAgfSB9CisgICAg
fQorCisgICAgY2FzZSBCaW5hcnlBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LmJpbmFy
eUFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdCh2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5oCmluZGV4IGNmYjgzNDcwNmFmLi41ZDgxYzRjOTAwYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZS5oCkBAIC0zNiwxMCArMzYsMTEgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK2NsYXNzIFVuYXJ5QXJpdGhQcm9maWxlOworY2xhc3MgQmluYXJ5QXJpdGhQcm9maWxl
OwogY2xhc3MgQ0NhbGxIZWxwZXJzOwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVLZXk7Ci1zdHJ1Y3QgQXJpdGhQcm9maWxlOwogc3RydWN0IFZhbHVlUHJv
ZmlsZTsKIAogY2xhc3MgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB7CkBAIC01NywxMiAr
NTgsMjEgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fa2luZCA9IE5v
bmU7CiAgICAgfQotICAgIAotICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoQXJpdGhQ
cm9maWxlKiBwcm9maWxlKQorCisgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZShVbmFy
eUFyaXRoUHJvZmlsZSogcHJvZmlsZSkKKyAgICB7CisgICAgICAgIGlmIChwcm9maWxlKSB7Cisg
ICAgICAgICAgICBtX2tpbmQgPSBVbmFyeUFyaXRoUHJvZmlsZVJlYWR5OworICAgICAgICAgICAg
dS51bmFyeUFyaXRoUHJvZmlsZSA9IHByb2ZpbGU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgbV9raW5kID0gTm9uZTsKKyAgICB9CisKKyAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlKEJpbmFyeUFyaXRoUHJvZmlsZSogcHJvZmlsZSkKICAgICB7CiAgICAgICAgIGlmIChwcm9m
aWxlKSB7Ci0gICAgICAgICAgICBtX2tpbmQgPSBBcml0aFByb2ZpbGVSZWFkeTsKLSAgICAgICAg
ICAgIHUuYXJpdGhQcm9maWxlID0gcHJvZmlsZTsKKyAgICAgICAgICAgIG1fa2luZCA9IEJpbmFy
eUFyaXRoUHJvZmlsZVJlYWR5OworICAgICAgICAgICAgdS5iaW5hcnlBcml0aFByb2ZpbGUgPSBw
cm9maWxlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fa2luZCA9IE5vbmU7CiAgICAg
fQpAQCAtNzksNyArODksOCBAQCBwcml2YXRlOgogICAgIGVudW0gS2luZCB7CiAgICAgICAgIE5v
bmUsCiAgICAgICAgIFJlYWR5LAotICAgICAgICBBcml0aFByb2ZpbGVSZWFkeSwKKyAgICAgICAg
VW5hcnlBcml0aFByb2ZpbGVSZWFkeSwKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlUmVhZHks
CiAgICAgICAgIExhenlPcGVyYW5kCiAgICAgfTsKICAgICAKQEAgLTkwLDcgKzEwMSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIHsgfQogCiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKLSAg
ICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGU7CisgICAgICAgIFVuYXJ5QXJpdGhQcm9m
aWxlKiB1bmFyeUFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBiaW5h
cnlBcml0aFByb2ZpbGU7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jazsKICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVPZmZzZXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IGUzODMxZDIwOTVmLi5mMmJjZTYyZWU4NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTE1MTYsMTQgKzE1MTYsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRNb3ZlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKQogICAgIHJldHVy
biBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcChP
cGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIE9wZXJh
bmRUeXBlcyB0eXBlcykKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlP
cChPcGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMsIFJl
c3VsdFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgY2FzZSBvcF9u
b3Q6CiAgICAgICAgIGVtaXRVbmFyeU9wPE9wTm90Pihkc3QsIHNyYyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2Ugb3BfbmVnYXRlOgotICAgICAgICBPcE5lZ2F0ZTo6ZW1pdCh0aGlzLCBkc3Qs
IHNyYywgdHlwZXMpOworICAgICAgICBPcE5lZ2F0ZTo6ZW1pdCh0aGlzLCBkc3QsIHNyYywgdHlw
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ugb3BfYml0bm90OgogICAgICAgICBlbWl0VW5h
cnlPcDxPcEJpdG5vdD4oZHN0LCBzcmMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGE3OTkzYmViM2ZhLi43
NWEwYmEwM2M4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNjgyLDcgKzY4Miw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIGRzdDsKICAgICAgICAgfQogCi0gICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRVbmFyeU9wKE9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNyYywgT3BlcmFuZFR5cGVzKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFVuYXJ5T3AoT3Bj
b2RlSUQsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBSZXN1bHRUeXBlKTsKIAog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlPcD4KICAgICAgICAgc3RkOjplbmFibGVf
aWZfdDwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCA1MjQ2OGUxZjJhYS4uMDEwNjRjYWY5ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTIx
NDYsNyArMjE0Niw3IEBAIFJlZ2lzdGVySUQqIFVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKIHsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc3JjID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CiAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpKTsK
LSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbmFyeU9wKG9wY29kZUlEKCksIGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQoKSwgT3BlcmFuZFR5cGVzKG1fZXhwci0+cmVz
dWx0RGVzY3JpcHRvcigpKSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcGNv
ZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCksIG1fZXhw
ci0+cmVzdWx0RGVzY3JpcHRvcigpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIFVuYXJ5UGx1c05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggMzM3OGFkMDkyZjYuLjk4ZTY4ZWMzOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtOTQyLDU2ICs5NDIsNjAgQEAgcHJpdmF0
ZToKICAgICAgICAgaWYgKCFpc1g4NigpICYmIChub2RlLT5vcCgpID09IEFyaXRoTW9kIHx8IG5v
ZGUtPm9wKCkgPT0gVmFsdWVNb2QpKQogICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAKLSAgICAg
ICAgewotICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobV9j
dXJyZW50SW5kZXgpOwotICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZSkgewotICAgICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhB
ZGQ6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcml0aFN1YjoKLSAgICAgICAgICAgICAgICBjYXNl
IFZhbHVlQWRkOgotICAgICAgICAgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNl
cnZlRG91YmxlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5v
ZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVOb25OdW1lcmljUmVzdWx0KTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgY2FzZSBWYWx1
ZU11bDoKLSAgICAgICAgICAgICAgICBjYXNlIEFyaXRoTXVsOiB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVJbnQ1Mk92ZXJmbG93KCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDUyKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUludDMyT3Zl
cmZsb3coKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBPdmVyZmxvdykpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5t
ZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGluZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
TmVnYXRpdmVaZXJvKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3Mo
Tm9kZU1heU5lZ1plcm9JbkJhc2VsaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRo
UHJvZmlsZS0+ZGlkT2JzZXJ2ZURvdWJsZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOb25OdW1lcmljKCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3Vs
dCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVCaWdJ
bnQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhh
dmVCaWdJbnRSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgY2FzZSBWYWx1ZU5lZ2F0ZToKLSAgICAgICAgICAgICAg
ICBjYXNlIEFyaXRoTmVnYXRlOiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2Zp
bGUtPmxoc09ic2VydmVkVHlwZSgpLnNhd051bWJlcigpIHx8IGFyaXRoUHJvZmlsZS0+ZGlkT2Jz
ZXJ2ZURvdWJsZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhO
b2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFBy
b2ZpbGUtPmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVnYXRpdmVaZXJvKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU5lZ1plcm9JbkJh
c2VsaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2
ZUludDMyT3ZlcmZsb3coKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlPdmVyZmxvd0ludDMySW5CYXNlbGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOb25OdW1lcmljKCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9u
TnVtZXJpY1Jlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRp
ZE9ic2VydmVCaWdJbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9CisgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAg
ICBjYXNlIEFyaXRoQWRkOgorICAgICAgICBjYXNlIEFyaXRoU3ViOgorICAgICAgICBjYXNlIFZh
bHVlQWRkOiB7CisgICAgICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9y
Qnl0ZWNvZGVJbmRleChtX2N1cnJlbnRJbmRleCk7CisgICAgICAgICAgICBpZiAoIWFyaXRoUHJv
ZmlsZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2Zp
bGUtPmRpZE9ic2VydmVEb3VibGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdz
KE5vZGVNYXlIYXZlRG91YmxlUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVOb25OdW1lcmljKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFn
cyhOb2RlTWF5SGF2ZU5vbk51bWVyaWNSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJv
ZmlsZS0+ZGlkT2JzZXJ2ZUJpZ0ludCgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxh
Z3MoTm9kZU1heUhhdmVCaWdJbnRSZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBWYWx1ZU11bDoKKyAgICAgICAgY2FzZSBBcml0aE11bDogeworICAg
ICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgo
bV9jdXJyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKCFhcml0aFByb2ZpbGUpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZl
SW50NTJPdmVyZmxvdygpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1h
eU92ZXJmbG93SW50NTIpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2
ZUludDMyT3ZlcmZsb3coKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdykpCisgICAgICAgICAgICAgICAgbm9kZS0+
bWVyZ2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOworICAgICAgICAgICAg
aWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5lZ1plcm9Eb3VibGUoKSB8fCBtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2
ZVplcm8pKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU5lZ1plcm9J
bkJhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVEb3Vi
bGUoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlRG91Ymxl
UmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChhcml0aFByb2ZpbGUtPmRpZE9ic2VydmVOb25OdW1l
cmljKCkpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZU5vbk51
bWVyaWNSZXN1bHQpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUJp
Z0ludCgpKQorICAgICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heUhhdmVCaWdJ
bnRSZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBW
YWx1ZU5lZ2F0ZToKKyAgICAgICAgY2FzZSBBcml0aE5lZ2F0ZTogeworICAgICAgICAgICAgVW5h
cnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KG1fY3VycmVudEluZGV4
KTsKKyAgICAgICAgICAgIGlmICghYXJpdGhQcm9maWxlKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+YXJnT2JzZXJ2ZWRUeXBlKCkuc2F3TnVt
YmVyKCkgfHwgYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91YmxlKCkpCisgICAgICAgICAgICAg
ICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZURvdWJsZVJlc3VsdCk7CisgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0
aXZlWmVybykpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5TmVnWmVy
b0luQmFzZWxpbmUpOworICAgICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZUlu
dDMyT3ZlcmZsb3coKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdykpCisgICAgICAgICAgICAgICAgbm9kZS0+bWVy
Z2VGbGFncyhOb2RlTWF5T3ZlcmZsb3dJbnQzMkluQmFzZWxpbmUpOworICAgICAgICAgICAgaWYg
KGFyaXRoUHJvZmlsZS0+ZGlkT2JzZXJ2ZU5vbk51bWVyaWMoKSkKKyAgICAgICAgICAgICAgICBu
b2RlLT5tZXJnZUZsYWdzKE5vZGVNYXlIYXZlTm9uTnVtZXJpY1Jlc3VsdCk7CisgICAgICAgICAg
ICBpZiAoYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlQmlnSW50KCkpCisgICAgICAgICAgICAgICAg
bm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2ZUJpZ0ludFJlc3VsdCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZVNs
b3dDYXNlKG1fY3VycmVudEluZGV4KSkgewpAQCAtMTAzMyw4ICsxMDM3LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBtYWtl
IHRoaXMgbW9yZSBncmFudWxhci4KICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5T3Zl
cmZsb3dJbnQzMkluQmFzZWxpbmUgfCBOb2RlTWF5TmVnWmVyb0luQmFzZWxpbmUpOwotICAgICAg
ICAKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgobV9jdXJyZW50
SW5kZXgpOworCisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRl
Y29kZUluZGV4KG1fY3VycmVudEluZGV4KTsKICAgICAgICAgaWYgKGFyaXRoUHJvZmlsZS0+ZGlk
T2JzZXJ2ZUJpZ0ludCgpKQogICAgICAgICAgICAgbm9kZS0+bWVyZ2VGbGFncyhOb2RlTWF5SGF2
ZUJpZ0ludFJlc3VsdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5k
ZXggY2E5ZmMzNGUxZDMuLjFiMWIxOTg0YTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcApAQCAtMTY1NCw3ICsxNjU0LDkgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZSBHcmFwaDo6bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihOb2RlKiBjdXJyZW4K
ICAgICAgICAgICAgICAgICByZXR1cm4gJnByb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckJ5
dGVjb2RlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKSk7CiAKICAg
ICAgICAgICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKEFyaXRoUHJvZmlsZSogcmVzdWx0ID0gcHJvZmlsZWRCbG9j
ay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0
ZWNvZGVJbmRleCgpKSkKKyAgICAgICAgICAgICAgICBpZiAoQmluYXJ5QXJpdGhQcm9maWxlKiBy
ZXN1bHQgPSBwcm9maWxlZEJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIGlmIChVbmFyeUFyaXRoUHJvZmls
ZSogcmVzdWx0ID0gcHJvZmlsZWRCbG9jay0+dW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDZjZGI3
MTUwYTAxLi5iODQ5NjY2YzVmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM5OTUsNyArMzk5NSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQogCiAgICAgQ29kZUJsb2NrKiBiYXNl
bGluZUNvZGVCbG9jayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2Rl
LT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgIEFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChi
eXRlY29kZUluZGV4KTsKICAgICBKSVRBZGRJQyogYWRkSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+
YWRkSklUQWRkSUMoYXJpdGhQcm9maWxlKTsKICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9
IG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemU7CiAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rp
b24gPSBvcGVyYXRpb25WYWx1ZUFkZDsKQEAgLTQwMTksNyArNDAxOSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1YihOb2RlKiBub2RlKQogCiAgICAgICAgIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJv
ZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmls
ZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIEpJVFN1YklDKiBzdWJJ
QyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgICAg
ICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemU7CiAg
ICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CkBA
IC00NjEzLDcgKzQ2MTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVOZWdh
dGUoTm9kZSogbm9kZSkKIHsKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9q
aXQuZ3JhcGgoKS5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwog
ICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5i
eXRlY29kZUluZGV4KCk7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGlu
ZUNvZGVCbG9jay0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsK
KyAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFzZWxpbmVDb2RlQmxvY2st
PnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICBK
SVROZWdJQyogbmVnSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUTmVnSUMoYXJpdGhQcm9m
aWxlKTsKICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRl
T3B0aW1pemU7CiAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25Bcml0
aE5lZ2F0ZTsKQEAgLTQ4MzYsNyArNDgzNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZU11bChOb2RlKiBub2RlKQogCiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
ayA9IG1faml0LmdyYXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
YmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJ
bmRleCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNv
ZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4
KTsKICAgICBKSVRNdWxJQyogbXVsSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUTXVsSUMo
YXJpdGhQcm9maWxlKTsKICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZh
bHVlTXVsT3B0aW1pemU7CiAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRp
b25WYWx1ZU11bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCA1ZDQ4YzBiMGNiOS4uMzdmMGE5NjAwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTIxMTYsNyArMjExNiw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZnRsU3Rh
dGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwog
ICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gYmFzZWxpbmVDb2RlQmxvY2stPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCk7CisgICAgICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYmFz
ZWxpbmVDb2RlQmxvY2stPmJpbmFyeUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVBZGRPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVy
YXRpb25WYWx1ZUFkZDsKICAgICAgICAgY29tcGlsZUJpbmFyeU1hdGhJQzxKSVRBZGRHZW5lcmF0
b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rp
b24pOwpAQCAtMjEzNyw3ICsyMTM3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNv
ZGVJbmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAg
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICAgICAgQmluYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQ
cm9maWxlRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKICAgICAgICAgYXV0byByZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICBhdXRv
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViOwogICAgICAgICBjb21w
aWxlQmluYXJ5TWF0aElDPEpJVFN1YkdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5n
RnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0yMTU4LDcgKzIxNTgsNyBAQCBw
cml2YXRlOgogCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2Z0bFN0
YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
ICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVj
b2RlSW5kZXgpOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVj
b2RlSW5kZXgpOwogICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZh
bHVlTXVsT3B0aW1pemU7CiAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3Bl
cmF0aW9uVmFsdWVNdWw7CiAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUTXVsR2VuZXJh
dG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0
aW9uKTsKQEAgLTIxNjYsNyArMjE2Niw3IEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBGdW5jMSwgdHlwZW5hbWUgRnVuYzIsCiAgICAgICAg
IHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuYzE+Ojp0eXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlv
bjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmMyPjo6dHlwZT46OnZhbHVlPj4KLSAg
ICB2b2lkIGNvbXBpbGVVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVu
YzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCisgICAg
dm9pZCBjb21waWxlVW5hcnlNYXRoSUMoVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwg
RnVuYzEgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jMiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCiAg
ICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogCkBAIC0yMjUyLDcgKzIyNTIsNyBA
QCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUg
RnVuYzEsIHR5cGVuYW1lIEZ1bmMyLAogICAgICAgICB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmMxPjo6
dHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9p
bnRlcjxGdW5jMj46OnR5cGU+Ojp2YWx1ZT4+Ci0gICAgdm9pZCBjb21waWxlQmluYXJ5TWF0aElD
KEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jMSByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1
bmMyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKKyAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMo
QmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmMxIHJlcGF0Y2hpbmdGdW5jdGlv
biwgRnVuYzIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9k
ZSA9IG1fbm9kZTsKICAgICAgICAgCkBAIC0yNDIxLDcgKzI0MjEsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9mdGxTdGF0ZS5ncmFw
aC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
ICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUluZGV4KGJ5dGVj
b2RlSW5kZXgpOworICAgICAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBiYXNlbGluZUNvZGVCbG9jay0+YmluYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChi
eXRlY29kZUluZGV4KTsKICAgICAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3Bl
cmF0aW9uVmFsdWVTdWJPcHRpbWl6ZTsKICAgICAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1
bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWI7CiAgICAgICAgICAgICBjb21waWxlQmluYXJ5TWF0
aElDPEpJVFN1YkdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbik7CkBAIC0zMDk5LDcgKzMwOTksNyBAQCBwcml2YXRlOgogICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sg
PSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlID0gYmFzZWxpbmVDb2RlQmxvY2stPnVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRl
eChieXRlY29kZUluZGV4KTsKICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVy
YXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplOwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5j
dGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlOwogICAgICAgICBjb21waWxlVW5hcnlNYXRoSUM8
SklUTmVnR2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGI1ZWZlMjY4MDQ2
Li4yYjRhNWQ2NGJmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC05MTksNyArOTE5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIEl0IHdpbGwgZ2l2ZSB0aGUgc2xvdyBwYXRo
IHRoZSBzYW1lIHZhbHVlIHJlYWQgYnkgdGhlIGZhc3QgcGF0aC4KICAgICAgICAgR2V0UHV0SW5m
byBjb3BpZWRHZXRQdXRJbmZvKE9wUHV0VG9TY29wZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEJpbmFyeU9wPgotICAgICAgICBBcml0aFByb2ZpbGUgY29waWVkQXJpdGhQcm9maWxlKEJp
bmFyeU9wKTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGNvcGllZEFyaXRoUHJvZmlsZShC
aW5hcnlPcCk7CiAKICAgICAgICAgSW50ZXJwcmV0ZXIqIG1faW50ZXJwcmV0ZXI7CiAKQEAgLTkz
OSw3ICs5MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFN3aXRjaFJlY29y
ZD4gbV9zd2l0Y2hlczsKIAogICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCB1bnNpZ25lZD4gbV9j
b3BpZWRHZXRQdXRJbmZvczsKLSAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwgQXJpdGhQcm9maWxl
PiBtX2NvcGllZEFyaXRoUHJvZmlsZXM7CisgICAgICAgIEhhc2hNYXA8dWludDY0X3QsIEJpbmFy
eUFyaXRoUHJvZmlsZT4gbV9jb3BpZWRBcml0aFByb2ZpbGVzOwogCiAgICAgICAgIEp1bXBMaXN0
IG1fZXhjZXB0aW9uQ2hlY2tzOwogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNoZWNrc1dp
dGhDYWxsRnJhbWVSb2xsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQWRkR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRk
R2VuZXJhdG9yLmNwcAppbmRleCA2MjdhZjI3ODdlMC4uNzQwYjJlZDhiZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAKQEAgLTM0LDcgKzM0LDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpJVE1hdGhJQ0lubGluZVJlc3VsdCBKSVRBZGRHZW5l
cmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlLCBjb25zdCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0pJVE1hdGhJ
Q0lubGluZVJlc3VsdCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVy
cyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBCaW5hcnlBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSkKIHsKICAgICAvLyBXZSBkZWZhdWx0IHRvIHNwZWN1bGF0aW5n
IGludDMyLgogICAgIE9ic2VydmVkVHlwZSBsaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIo
KTsKQEAgLTczLDcgKzczLDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVEFkZEdlbmVyYXRv
cjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cKICAgICByZXR1cm4g
SklUTWF0aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0OwogfQogCi1ib29sIEpJ
VEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNs
b3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNo
b3VsZEVtaXRQcm9maWxpbmcpCitib29sIEpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0
aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3Qs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAg
ICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQobV9z
Y3JhdGNoR1BSICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQWRkR2VuZXJhdG9yLmgKaW5kZXggNGRjMzRhMmY1YjYuLjY3NWNmOTNjOTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmgKQEAgLTU1LDgg
KzU1LDggQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIW1fbGVmdE9wZXJhbmQuaXNDb25zdElu
dDMyKCkgfHwgIW1fcmlnaHRPcGVyYW5kLmlzQ29uc3RJbnQzMigpKTsKICAgICB9CiAKLSAgICBK
SVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElD
R2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQXJpdGhQcm9maWxlKik7Ci0gICAgYm9vbCBnZW5lcmF0
ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBM
aXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0
aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3Rh
dGUmLCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIEND
YWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRo
UHJvZmlsZSosIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CiAKICAgICBzdGF0aWMgYm9vbCBp
c0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCkgeyBy
ZXR1cm4gbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQogICAgIHN0YXRpYyBi
b29sIGlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJh
bmQpIHsgcmV0dXJuIHJpZ2h0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAppbmRleCBhYzM3MmM5ZmJl
MC4uYmI2MzVmOGU3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
QXJpdGhtZXRpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1l
dGljLmNwcApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0
aW9uLT5hczxPcE5lZ2F0ZT4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7
CisgICAgVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wTmVnYXRlPigpLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRoUHJvZmlsZTsK
ICAgICBKSVROZWdJQyogbmVnYXRlSUMgPSBtX2NvZGVCbG9jay0+YWRkSklUTmVnSUMoYXJpdGhQ
cm9maWxlKTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1cnJlbnRJbnN0cnVjdGlv
biwgbmVnYXRlSUMpOwogICAgIGVtaXRNYXRoSUNGYXN0PE9wTmVnYXRlPihuZWdhdGVJQywgY3Vy
cmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkLCBvcGVyYXRpb25B
cml0aE5lZ2F0ZSk7CkBAIC02MzQsMTQgKzYzNCw5IEBAIHZvaWQgSklUOjplbWl0X29wX3Vyc2hp
ZnQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UmlnaHRT
aGlmdEZhc3RQYXRoKGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BfdXJzaGlmdCk7CiB9CiAKLUFMV0FZ
U19JTkxJTkUgc3RhdGljIE9wZXJhbmRUeXBlcyBnZXRPcGVyYW5kVHlwZXMoY29uc3QgQXJpdGhQ
cm9maWxlJiBhcml0aFByb2ZpbGUpCi17Ci0gICAgcmV0dXJuIE9wZXJhbmRUeXBlcyhhcml0aFBy
b2ZpbGUubGhzUmVzdWx0VHlwZSgpLCBhcml0aFByb2ZpbGUucmhzUmVzdWx0VHlwZSgpKTsKLX0K
LQogdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEFkZD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7
CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEFkZD4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAg
ICAgSklUQWRkSUMqIGFkZElDID0gbV9jb2RlQmxvY2stPmFkZEpJVEFkZElDKGFyaXRoUHJvZmls
ZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGFk
ZElDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcEFkZD4oYWRkSUMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVBZGQpOwpAQCAtNjg2
LDcgKzY4MSw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRVbmFyeU1hdGhJQzxHZW5l
cmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKiBjCiAKICAgICBib29sIGdlbmVyYXRl
ZElubGluZUNvZGUgPSBtYXRoSUMtPmdlbmVyYXRlSW5saW5lKCp0aGlzLCBtYXRoSUNHZW5lcmF0
aW9uU3RhdGUpOwogICAgIGlmICghZ2VuZXJhdGVkSW5saW5lQ29kZSkgewotICAgICAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1hdGhJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgICAg
IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgp
OwogICAgICAgICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KHByb2ZpbGVkRnVuY3Rpb24sIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgc3JjUmVn
cywgYXJpdGhQcm9maWxlKTsKICAgICAgICAgZWxzZQpAQCAtNzA5LDcgKzcwNCw2IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZEZ1
bmN0aW9uLCB0eXBlbmFtZSBOCiB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklUQmluYXJ5TWF0
aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgUHJvZmlsZWRGdW5jdGlvbiBwcm9maWxlZEZ1bmN0aW9uLCBOb25Qcm9maWxlZEZ1bmN0
aW9uIG5vblByb2ZpbGVkRnVuY3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0T3BlcmFu
ZFR5cGVzKGNvcGllZEFyaXRoUHJvZmlsZShieXRlY29kZSkpOwogICAgIGludCByZXN1bHQgPSBi
eXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKICAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9saHMub2Zm
c2V0KCk7CiAgICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwpAQCAtNzI4LDgg
KzcyMiw4IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUM8R2VuZXJh
dG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBGUFJSZWcgc2NyYXRjaEZQUiA9
IGZwUmVnVDI7CiAjZW5kaWYKIAotICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVz
LmZpcnN0KCkpOwotICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQo
KSk7CisgICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlw
ZXMuZmlyc3QoKSk7CisgICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKGJ5dGVjb2RlLm1f
b3BlcmFuZFR5cGVzLnNlY29uZCgpKTsKIAogICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChv
cDEpKQogICAgICAgICBsZWZ0T3BlcmFuZC5zZXRDb25zdEludDMyKGdldE9wZXJhbmRDb25zdGFu
dEludChvcDEpKTsKQEAgLTc1OSw3ICs3NTMsNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3Qo
SklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAg
ICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgbGVmdFJlZ3MpOwogICAgICAg
ICBlbHNlIGlmIChyaWdodE9wZXJhbmQuaXNDb25zdCgpKQogICAgICAgICAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihvcDIsIHJpZ2h0UmVncyk7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSogYXJp
dGhQcm9maWxlID0gbWF0aElDLT5hcml0aFByb2ZpbGUoKTsKKyAgICAgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgICAgICBp
ZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb25XaXRoUmVzdWx0KHByb2ZpbGVkRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVn
cywgYXJpdGhQcm9maWxlKTsKICAgICAgICAgZWxzZQpAQCAtNzk5LDcgKzc5Myw3IEBAIHZvaWQg
SklUOjplbWl0TWF0aElDU2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNv
bnN0IEluc3RydWN0aW9uKiBjCiAgICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKICNl
bmRpZgogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFyaXRoUHJv
ZmlsZSgpOworICAgIFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMtPmFy
aXRoUHJvZmlsZSgpOwogICAgIGlmIChhcml0aFByb2ZpbGUgJiYgc2hvdWxkRW1pdFByb2ZpbGlu
ZygpKSB7CiAgICAgICAgIGlmIChtYXRoSUNHZW5lcmF0aW9uU3RhdGUuc2hvdWxkU2xvd1BhdGhS
ZXBhdGNoKQogICAgICAgICAgICAgbWF0aElDR2VuZXJhdGlvblN0YXRlLnNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25f
R0pNaWM+KHByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uKSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBzcmNSZWdzLCBUcnVzdGVkSW1tUHRyKG1h
dGhJQykpOwpAQCAtODMxLDcgKzgyNSw2IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRC
aW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25zdCBJbnN0cnVjdGlvbioKICAgICBt
YXRoSUNHZW5lcmF0aW9uU3RhdGUuc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBPcGVyYW5kVHlw
ZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY29waWVkQXJpdGhQcm9maWxlKGJ5dGVjb2RlKSk7
CiAgICAgaW50IHJlc3VsdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwogICAgIGludCBvcDEg
PSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKICAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMu
b2Zmc2V0KCk7CkBAIC04NDYsOCArODM5LDggQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJ
VEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGNvbnN0IEluc3RydWN0aW9uKgogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKICNlbmRpZgogICAgIAotICAgIFNu
aXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5cGVzLmZpcnN0KCkpOwotICAgIFNuaXBwZXRPcGVy
YW5kIHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNvbmQoKSk7CisgICAgU25pcHBldE9wZXJhbmQgbGVm
dE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuZmlyc3QoKSk7CisgICAgU25pcHBldE9w
ZXJhbmQgcmlnaHRPcGVyYW5kKGJ5dGVjb2RlLm1fb3BlcmFuZFR5cGVzLnNlY29uZCgpKTsKIAog
ICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDEpKQogICAgICAgICBsZWZ0T3BlcmFuZC5z
ZXRDb25zdEludDMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDEpKTsKQEAgLTg2NSw3ICs4NTgs
NyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4q
IG1hdGhJQywgY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gbGFi
ZWwoKTsKICNlbmRpZgogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtYXRoSUMt
PmFyaXRoUHJvZmlsZSgpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
bWF0aElDLT5hcml0aFByb2ZpbGUoKTsKICAgICBpZiAoYXJpdGhQcm9maWxlICYmIHNob3VsZEVt
aXRQcm9maWxpbmcoKSkgewogICAgICAgICBpZiAobWF0aElDR2VuZXJhdGlvblN0YXRlLnNob3Vs
ZFNsb3dQYXRoUmVwYXRjaCkKICAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS5zbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChiaXR3aXNlX2Nhc3Q8Sl9KSVRPcGVy
YXRpb25fR0pKTWljPihwcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiksIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVn
cywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKQEAgLTg5MywxOSArODg2LDE2IEBAIHZvaWQgSklU
OjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBjb25z
dCBJbnN0cnVjdGlvbioKIHZvaWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRGl2PigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spOwogICAgIGludCByZXN1bHQgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQo
KTsKICAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9saHMub2Zmc2V0KCk7CiAgICAgaW50IG9wMiA9
IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBPcGVy
YW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMobWV0YWRhdGEubV9hcml0aFByb2ZpbGUp
OwogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogICAgIEpT
VmFsdWVSZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxKTsKICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gbGVmdFJlZ3M7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSByZWdUMjsK
ICNlbHNlCi0gICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gZ2V0T3BlcmFuZFR5cGVzKG1ldGFkYXRh
Lm1fYXJpdGhQcm9maWxlKTsKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNWYWx1ZVJlZ3Mo
cmVnVDMsIHJlZ1QyKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gbGVmdFJlZ3M7CkBA
IC05MTMsMTIgKzkwMywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogICAgIEZQUlJlZyBzY3JhdGNoRlBSID0g
ZnBSZWdUMjsKIAotICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbnVsbHB0cjsKKyAg
ICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxwdHI7CiAgICAgaWYgKHNo
b3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgYXJpdGhQcm9maWxlID0gJmN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BEaXY+KCkubWV0YWRhdGEobV9jb2RlQmxvY2spLm1fYXJpdGhQcm9maWxl
OwogCi0gICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMuZmlyc3QoKSk7Ci0gICAg
U25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgpKTsKKyAgICBTbmlwcGV0
T3BlcmFuZCBsZWZ0T3BlcmFuZChieXRlY29kZS5tX29wZXJhbmRUeXBlcy5maXJzdCgpKTsKKyAg
ICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYnl0ZWNvZGUubV9vcGVyYW5kVHlwZXMuc2Vj
b25kKCkpOwogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkpCiAgICAgICAgIGxl
ZnRPcGVyYW5kLnNldENvbnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSkpOwpAQCAt
OTYwLDcgKzk1MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9tdWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTXVsPigpLm1ldGFkYXRhKG1fY29kZUJs
b2NrKS5tX2FyaXRoUHJvZmlsZTsKKyAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9ICZjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTXVsPigpLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KS5tX2FyaXRoUHJvZmlsZTsKICAgICBKSVRNdWxJQyogbXVsSUMgPSBtX2NvZGVCbG9jay0+YWRk
SklUTXVsSUMoYXJpdGhQcm9maWxlKTsKICAgICBtX2luc3RydWN0aW9uVG9NYXRoSUMuYWRkKGN1
cnJlbnRJbnN0cnVjdGlvbiwgbXVsSUMpOwogICAgIGVtaXRNYXRoSUNGYXN0PE9wTXVsPihtdWxJ
QywgY3VycmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkLCBvcGVyYXRp
b25WYWx1ZU11bCk7CkBAIC05NzYsNyArOTY2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX211
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UK
IAogdm9pZCBKSVQ6OmVtaXRfb3Bfc3ViKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFN1Yj4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7
CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSAmY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFN1Yj4oKS5tZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CiAg
ICAgSklUU3ViSUMqIHN1YklDID0gbV9jb2RlQmxvY2stPmFkZEpJVFN1YklDKGFyaXRoUHJvZmls
ZSk7CiAgICAgbV9pbnN0cnVjdGlvblRvTWF0aElDLmFkZChjdXJyZW50SW5zdHJ1Y3Rpb24sIHN1
YklDKTsKICAgICBlbWl0TWF0aElDRmFzdDxPcFN1Yj4oc3ViSUMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVTdWIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCmluZGV4IDY2ZTFiZTE0
YThkLi5iZTZkNGQ0MGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVREaXZHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2
R2VuZXJhdG9yLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgSklURGl2R2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0KQogICAgIG5vdERvdWJsZVplcm8ubGlu
aygmaml0KTsKICNlbmRpZgogICAgIGlmIChtX2FyaXRoUHJvZmlsZSkKLSAgICAgICAgaml0Lm9y
MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJpdGhQcm9maWxlOjpzcGVjaWFsRmFzdFBh
dGhCaXQpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhtX2FyaXRoUHJvZmlsZS0+YWRk
cmVzc09mQml0cygpKSk7CisgICAgICAgIG1fYXJpdGhQcm9maWxlLT5lbWl0VW5jb25kaXRpb25h
bFNldChqaXQsIEJpbmFyeUFyaXRoUHJvZmlsZTo6c3BlY2lhbEZhc3RQYXRoQml0KTsKICAgICBq
aXQuYm94RG91YmxlKG1fbGVmdEZQUiwgbV9yZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaAppbmRleCA4Mzk2Njc3OTQzZi4uNzA4ZGIxMGQ2
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuaApAQCAt
MzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgSklURGl2R2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5k
IGxlZnRPcGVyYW5kLCBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCiAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCiAgICAg
ICAgIEZQUlJlZyBsZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBG
UFJSZWcgc2NyYXRjaEZQUiwKLSAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBu
dWxscHRyKQorICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG51bGxw
dHIpCiAgICAgICAgIDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKICAgICAgICAgLCBtX3Jp
Z2h0T3BlcmFuZChyaWdodE9wZXJhbmQpCiAgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQpAQCAt
NzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX3NjcmF0Y2hHUFI7CiAgICAgRlBS
UmVnIG1fc2NyYXRjaEZQUjsKICAgICBib29sIG1fZGlkRW1pdEZhc3RQYXRoIHsgZmFsc2UgfTsK
LSAgICBBcml0aFByb2ZpbGUqIG1fYXJpdGhQcm9maWxlOworICAgIEJpbmFyeUFyaXRoUHJvZmls
ZSogbV9hcml0aFByb2ZpbGU7CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1fZW5kSnVt
cExpc3Q7CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX3Nsb3dQYXRoSnVtcExpc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDYyZWFiOWI5N2ZhLi4yNWJj
YzJiOWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTcxNiwx
MyArNzE2LDEzIEBAIEFMV0FZU19JTkxJTkUgR2V0UHV0SW5mbyBKSVQ6OmNvcGllZEdldFB1dElu
Zm8oT3BQdXRUb1Njb3BlIGJ5dGVjb2RlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCaW5hcnlP
cD4KLUFMV0FZU19JTkxJTkUgQXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJp
bmFyeU9wIGJ5dGVjb2RlKQorQUxXQVlTX0lOTElORSBCaW5hcnlBcml0aFByb2ZpbGUgSklUOjpj
b3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCiB7CiAgICAgdWludDY0X3Qga2V5
ID0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihCaW5hcnlPcDo6b3Bjb2RlSUQpICsgMSkgPDwgMzIg
fCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnl0ZWNvZGUubV9tZXRhZGF0YUlEKTsKICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9jb3BpZWRBcml0aFByb2ZpbGVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXRl
cmF0b3IgIT0gbV9jb3BpZWRBcml0aFByb2ZpbGVzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRl
cmF0b3ItPnZhbHVlOwotICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGUgPSBieXRlY29kZS5t
ZXRhZGF0YShtX2NvZGVCbG9jaykubV9hcml0aFByb2ZpbGU7CisgICAgQmluYXJ5QXJpdGhQcm9m
aWxlIGFyaXRoUHJvZmlsZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKS5tX2FyaXRo
UHJvZmlsZTsKICAgICBtX2NvcGllZEFyaXRoUHJvZmlsZXMuYWRkKGtleSwgYXJpdGhQcm9maWxl
KTsKICAgICByZXR1cm4gYXJpdGhQcm9maWxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
TWF0aElDLmgKaW5kZXggNTY0NWU0MmRlZmYuLmZkYWVjOTI3NWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUTWF0aElDLmgKQEAgLTUyLDExICs1MiwxMSBAQCBzdHJ1Y3QgTWF0aElDR2Vu
ZXJhdGlvblN0YXRlIHsKIAogI2RlZmluZSBFTkFCTEVfTUFUSF9JQ19TVEFUUyAwCiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBHZW5lcmF0b3JUeXBlLCBib29sKCppc1Byb2ZpbGVFbXB0eSkoQXJpdGhQ
cm9maWxlJik+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgdHlwZW5hbWUgQXJp
dGhQcm9maWxlVHlwZT4KIGNsYXNzIEpJVE1hdGhJQyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgSklUTWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
KQorICAgIEpJVE1hdGhJQyhBcml0aFByb2ZpbGVUeXBlKiBhcml0aFByb2ZpbGUpCiAgICAgICAg
IDogbV9hcml0aFByb2ZpbGUoYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CkBAIC03MSw3ICs3
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxl
ci5idWZmZXIoKS5jb2RlU2l6ZSgpOwogCiAgICAgICAgIGlmIChtX2FyaXRoUHJvZmlsZSkgewot
ICAgICAgICAgICAgaWYgKGlzUHJvZmlsZUVtcHR5KCptX2FyaXRoUHJvZmlsZSkpIHsKKyAgICAg
ICAgICAgIGlmIChtX2FyaXRoUHJvZmlsZS0+aXNPYnNlcnZlZFR5cGVFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gSXQgbG9va3MgbGlrZSB0aGUgTWF0aElDIGhhcyB5ZXQgdG8gZXhlY3V0
ZS4gV2UgZG9uJ3Qgd2FudCB0byBlbWl0IGNvZGUgaW4gdGhpcwogICAgICAgICAgICAgICAgIC8v
IGNhc2UgZm9yIGEgY291cGxlIHJlYXNvbnMuIEZpcnN0LCB0aGUgb3BlcmF0aW9uIG1heSBuZXZl
ciBleGVjdXRlLCBzbyBpZiB3ZSBkb24ndCBlbWl0CiAgICAgICAgICAgICAgICAgLy8gY29kZSwg
aXQncyBhIHdpbi4gU2Vjb25kLCBpZiB0aGUgb3BlcmF0aW9uIGRvZXMgZXhlY3V0ZSwgd2UgY2Fu
IGVtaXQgYmV0dGVyIGNvZGUKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
c2xvd1BhdGhTdGFydExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQ
dHJUYWc+KHN0YXRlLnNsb3dQYXRoU3RhcnQpOwogICAgIH0KIAotICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0KKyAgICBBcml0
aFByb2ZpbGVUeXBlKiBhcml0aFByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2FyaXRoUHJvZmls
ZTsgfQogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgc2l6ZV90IG1fZ2VuZXJhdGVk
Q29kZVNpemUgeyAwIH07CkBAIC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRp
ZgogCi0gICAgQXJpdGhQcm9maWxlKiBtX2FyaXRoUHJvZmlsZTsKKyAgICBBcml0aFByb2ZpbGVU
eXBlKiBtX2FyaXRoUHJvZmlsZTsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJv
dXRpbmVQdHJUYWc+IG1fY29kZTsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBtX2lubGluZVN0YXJ0OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJU
YWc+IG1faW5saW5lRW5kOwpAQCAtMjQ2LDE1ICsyNDYsMTEgQEAgcHVibGljOgogICAgIEdlbmVy
YXRvclR5cGUgbV9nZW5lcmF0b3I7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0JpbmFyeVByb2ZpbGVF
bXB0eShBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gYXJpdGhQcm9m
aWxlLmxoc09ic2VydmVkVHlwZSgpLmlzRW1wdHkoKSB8fCBhcml0aFByb2ZpbGUucmhzT2JzZXJ2
ZWRUeXBlKCkuaXNFbXB0eSgpOwotfQogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+
Ci1jbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMgSklUTWF0aElDPEdlbmVyYXRvclR5cGUs
IGlzQmluYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFzcyBKSVRCaW5hcnlNYXRoSUMgOiBwdWJsaWMg
SklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmlsZT4gewogcHVibGljOgot
ICAgIEpJVEJpbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKLSAgICAgICAg
OiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNCaW5hcnlQcm9maWxlRW1wdHk+KGFyaXRoUHJv
ZmlsZSkKKyAgICBKSVRCaW5hcnlNYXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIEJpbmFyeUFyaXRoUHJvZmls
ZT4oYXJpdGhQcm9maWxlKQogICAgIHsKICAgICB9CiB9OwpAQCAtMjYzLDE2ICsyNTksMTEgQEAg
dHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPiBKSVRBZGRJQzsKIHR5cGVk
ZWYgSklUQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4gSklUTXVsSUM7CiB0eXBlZGVmIEpJ
VEJpbmFyeU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+IEpJVFN1YklDOwogCi0KLWlubGluZSBib29s
IGlzVW5hcnlQcm9maWxlRW1wdHkoQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUpCi17Ci0gICAg
cmV0dXJuIGFyaXRoUHJvZmlsZS5saHNPYnNlcnZlZFR5cGUoKS5pc0VtcHR5KCk7Ci19CiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZT4KLWNsYXNzIEpJVFVuYXJ5TWF0aElDIDogcHVi
bGljIEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBpc1VuYXJ5UHJvZmlsZUVtcHR5PiB7CitjbGFz
cyBKSVRVbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgVW5hcnlB
cml0aFByb2ZpbGU+IHsKIHB1YmxpYzoKLSAgICBKSVRVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSkKLSAgICAgICAgOiBKSVRNYXRoSUM8R2VuZXJhdG9yVHlwZSwgaXNVbmFy
eVByb2ZpbGVFbXB0eT4oYXJpdGhQcm9maWxlKQorICAgIEpJVFVuYXJ5TWF0aElDKFVuYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCisgICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5
cGUsIFVuYXJ5QXJpdGhQcm9maWxlPihhcml0aFByb2ZpbGUpCiAgICAgewogICAgIH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAKaW5kZXggODNk
MjkzYjYyNTIuLjk0NDg3YzA1MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE11bEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRNdWxHZW5lcmF0b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1KSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShD
Q2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUTXVsR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7
CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5
cGUgbGhzID0gT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC04OSw3ICs4OSw3IEBAIEpJ
VE1hdGhJQ0lubGluZVJlc3VsdCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxs
SGVscGVycyYgaml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6
R2VuZXJhdGVGdWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1
bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9v
bCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIEND
YWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIg
IT0gSW52YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5
bG9hZEdQUigpKTsKQEAgLTIwNSwxOCArMjA1LDE4IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdE5lZ2F0aXZlWmVybyA9IGppdC5icmFu
Y2g2NChDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTY0KG5lZ2F0aXZlWmVyb0JpdHMpKTsKIAotICAgICAgICBqaXQu
b3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3Vi
bGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NP
ZkJpdHMoKSkpOworICAgICAgICBhcml0aFByb2ZpbGUtPmVtaXRVbmNvbmRpdGlvbmFsU2V0KGpp
dCwgQmluYXJ5QXJpdGhQcm9maWxlOjpOZWdaZXJvRG91YmxlKTsKICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5s
aW5rKCZqaXQpOwotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihB
cml0aFByb2ZpbGU6Ok5vbk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRk
cmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBhcml0aFByb2Zp
bGUtPmVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgQmluYXJ5QXJpdGhQcm9maWxlOjpOb25OZWda
ZXJvRG91YmxlKTsKIAogICAgICAgICBqaXQubW92ZShtX3Jlc3VsdC5wYXlsb2FkR1BSKCksIG1f
c2NyYXRjaEdQUik7CiAgICAgICAgIGppdC51cnNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIo
NTIpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpJbW0z
MigweDdmZiksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub0lu
dDUyT3ZlcmZsb3cgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpMZXNzVGhhbk9yRXF1YWws
IG1fc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMHg0MzEpKTsKIAotICAg
ICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Oklu
dDUyT3ZlcmZsb3cpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUt
PmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBhcml0aFByb2ZpbGUtPmVtaXRVbmNvbmRpdGlv
bmFsU2V0KGppdCwgQmluYXJ5QXJpdGhQcm9maWxlOjpJbnQ1Mk92ZXJmbG93KTsKICAgICAgICAg
bm9JbnQ1Mk92ZXJmbG93LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwpA
QCAtMjI3LDE4ICsyMjcsMTggQEAgYm9vbCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QKICAgICAgICAgbm90
TmVnYXRpdmVaZXJvLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwg
bV9yZXN1bHQucGF5bG9hZEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSkpOwog
ICAgICAgICBub3ROZWdhdGl2ZVplcm8uYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6
Ok5vdEVxdWFsLCBtX3Jlc3VsdC50YWdHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bmVnYXRpdmVaZXJvQml0cyA+PiAzMikpKTsKIAotICAgICAgICBqaXQub3IzMihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAg
ICAgICBhcml0aFByb2ZpbGUtPmVtaXRVbmNvbmRpdGlvbmFsU2V0KGppdCwgQmluYXJ5QXJpdGhQ
cm9maWxlOjpOZWdaZXJvRG91YmxlKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUg
PSBqaXQuanVtcCgpOwogCiAgICAgICAgIG5vdE5lZ2F0aXZlWmVyby5saW5rKCZqaXQpOwotICAg
ICAgICBqaXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6Ok5v
bk5lZ1plcm9Eb3VibGUpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2Zp
bGUtPmFkZHJlc3NPZkJpdHMoKSkpOworICAgICAgICBhcml0aFByb2ZpbGUtPmVtaXRVbmNvbmRp
dGlvbmFsU2V0KGppdCwgQmluYXJ5QXJpdGhQcm9maWxlOjpOb25OZWdaZXJvRG91YmxlKTsKIAog
ICAgICAgICBqaXQubW92ZShtX3Jlc3VsdC50YWdHUFIoKSwgbV9zY3JhdGNoR1BSKTsKICAgICAg
ICAgaml0LnVyc2hpZnRQdHIoQ0NhbGxIZWxwZXJzOjpJbW0zMig1MiAtIDMyKSwgbV9zY3JhdGNo
R1BSKTsKICAgICAgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6SW1tMzIoMHg3ZmYpLCBtX3Nj
cmF0Y2hHUFIpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9JbnQ1Mk92ZXJmbG93ID0g
aml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW5PckVxdWFsLCBtX3NjcmF0Y2hHUFIs
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDB4NDMxKSk7Ci0gICAgICAgIAotICAgICAgICBq
aXQub3IzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcml0aFByb2ZpbGU6OkludDUyT3Zl
cmZsb3cpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcml0aFByb2ZpbGUtPmFkZHJl
c3NPZkJpdHMoKSkpOworCisgICAgICAgIGFyaXRoUHJvZmlsZS0+ZW1pdFVuY29uZGl0aW9uYWxT
ZXQoaml0LCBCaW5hcnlBcml0aFByb2ZpbGU6OkludDUyT3ZlcmZsb3cpOwogCiAgICAgICAgIGVu
ZEp1bXBMaXN0LmFwcGVuZChub0ludDUyT3ZlcmZsb3cpOwogICAgICAgICBpZiAobV9zY3JhdGNo
R1BSID09IG1fcmVzdWx0LnRhZ0dQUigpIHx8IG1fc2NyYXRjaEdQUiA9PSBtX3Jlc3VsdC5wYXls
b2FkR1BSKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuaApp
bmRleCAzNmQyNmVhMTI0ZS4uNjA4Nzc5NjY4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRNdWxHZW5lcmF0b3IuaApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAg
IEFTU0VSVCghbV9sZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpIHx8ICFtX3JpZ2h0
T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpKTsKICAgICB9CiAKLSAgICBKSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlv
blN0YXRlJiwgY29uc3QgQXJpdGhQcm9maWxlKik7Ci0gICAgYm9vbCBnZW5lcmF0ZUZhc3RQYXRo
KENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93SnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJv
b2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVy
YXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEJp
bmFyeUFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBl
cnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNo
b3VsZEVtaXRQcm9maWxpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlk
Q29uc3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVyYW5k
LmlzUG9zaXRpdmVDb25zdEludDMyKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3BlcmFu
ZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiByaWdo
dE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuY3BwCmluZGV4IDkyYzI5ZGQ2MzBhLi5jZWViZTM5MDk0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmNwcApA
QCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSklUTWF0aElDSW5saW5lUmVz
dWx0IEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1h
dGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlKQorSklUTWF0aElDSW5saW5lUmVzdWx0IEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVJbmxp
bmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0
IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKG1fc2NyYXRj
aEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IG1fc3Jj
LnBheWxvYWRHUFIoKSk7CkBAIC00NSw3ICs0NSw3IEBAIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBK
SVROZWdHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNH
CiAgICAgLy8gV2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5
cGUgb2JzZXJ2ZWRUeXBlcyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQzMigpOwogICAgIGlmIChh
cml0aFByb2ZpbGUpCi0gICAgICAgIG9ic2VydmVkVHlwZXMgPSBhcml0aFByb2ZpbGUtPmxoc09i
c2VydmVkVHlwZSgpOworICAgICAgICBvYnNlcnZlZFR5cGVzID0gYXJpdGhQcm9maWxlLT5hcmdP
YnNlcnZlZFR5cGUoKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFvYnNlcnZlZFR5cGVzLmlz
RW1wdHkoKSwgIldlIHNob3VsZCBub3QgYXR0ZW1wdCB0byBnZW5lcmF0ZSBhbnl0aGluZyBpZiB3
ZSBkbyBub3QgaGF2ZSBhIHByb2ZpbGUuIik7CiAKICAgICBpZiAob2JzZXJ2ZWRUeXBlcy5pc09u
bHlOb25OdW1iZXIoKSkKQEAgLTgyLDcgKzgyLDcgQEAgSklUTWF0aElDSW5saW5lUmVzdWx0IEpJ
VE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiBqaXQsIE1hdGhJQ0cK
ICAgICByZXR1cm4gSklUTWF0aElDSW5saW5lUmVzdWx0OjpHZW5lcmF0ZUZ1bGxTbmlwcGV0Owog
fQogCi1ib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMm
IGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9m
aWxlLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCitib29sIEpJVE5lZ0dlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYg
ZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNv
bnN0IFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkRW1pdFByb2Zp
bGluZykKIHsKICAgICBBU1NFUlQobV9zY3JhdGNoR1BSICE9IG1fc3JjLnBheWxvYWRHUFIoKSk7
CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwpAQCAt
MTE3LDcgKzExNyw3IEBAIGJvb2wgSklUTmVnR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEND
YWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0CiAjZW5kaWYKICAgICAvLyBU
aGUgZmxhZ3Mgb2YgQXJpdGhOZWdhdGUgYXJlIGJhc2ljIGluIERGRy4KICAgICAvLyBXZSBvbmx5
IG5lZWQgdG8ga25vdyBpZiB3ZSBldmVyIHByb2R1Y2VkIGEgbnVtYmVyLgotICAgIGlmIChzaG91
bGRFbWl0UHJvZmlsaW5nICYmIGFyaXRoUHJvZmlsZSAmJiAhYXJpdGhQcm9maWxlLT5saHNPYnNl
cnZlZFR5cGUoKS5zYXdOdW1iZXIoKSAmJiAhYXJpdGhQcm9maWxlLT5kaWRPYnNlcnZlRG91Ymxl
KCkpCisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcgJiYgYXJpdGhQcm9maWxlICYmICFhcml0
aFByb2ZpbGUtPmFyZ09ic2VydmVkVHlwZSgpLnNhd051bWJlcigpICYmICFhcml0aFByb2ZpbGUt
PmRpZE9ic2VydmVEb3VibGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5lbWl0U2V0RG91Ymxl
KGppdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE5lZ0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVROZWdHZW5lcmF0b3IuaAppbmRleCA4YTBjMmQ1MTdkNi4uNzg3YjcwNzY4MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTmVnR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVROZWdHZW5lcmF0b3IuaApAQCAtNDMsOCArNDMsOCBA
QCBwdWJsaWM6CiAgICAgICAgICwgbV9zY3JhdGNoR1BSKHNjcmF0Y2hHUFIpCiAgICAgeyB9CiAK
LSAgICBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwg
TWF0aElDR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgQXJpdGhQcm9maWxlKik7Ci0gICAgYm9vbCBn
ZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVu
ZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25z
dCBBcml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOworICAgIEpJVE1hdGhJ
Q0lubGluZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0
aW9uU3RhdGUmLCBjb25zdCBVbmFyeUFyaXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVG
YXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlz
dCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgVW5hcnlB
cml0aFByb2ZpbGUqLCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpOwogCiBwcml2YXRlOgogICAg
IEpTVmFsdWVSZWdzIG1fcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKaW5kZXggNDdkZWI4Y2U2YWEuLjNhOWU4NWEwOGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTI2NDUsNyArMjY0NSw3IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25FeGNlcHRpb25GdXp6KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAjZW5kaWYgLy8gQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCiB9CiAK
LUFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgcHJvZmlsZWRBZGQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcDEsIEpTVmFsdWUgb3AyLCBBcml0aFByb2ZpbGUmIGFy
aXRoUHJvZmlsZSkKK0FMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgcHJvZmlsZWRBZGQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcDEsIEpTVmFsdWUgb3AyLCBCaW5h
cnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKIHsKICAgICBhcml0aFByb2ZpbGUub2JzZXJ2
ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FkZChnbG9iYWxP
YmplY3QsIG9wMSwgb3AyKTsKQEAgLTI2NjEsNyArMjY2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0FkZChnbG9iYWxPYmplY3QsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9m
aWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxl
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJv
ZmlsZSkKIHsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CkBAIC0yNjc5LDcgKzI2NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
ZwogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogICAgIEpT
VmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwogCi0gICAgQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJp
dGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNT
RVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKG9w
MSwgb3AyKTsKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlQWRk
UHJvZmlsZWROb09wdGltaXplOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCoKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJp
dGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJ
Qy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwcm9maWxlZEFkZChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpLCAqYXJpdGhQcm9maWxl
KSk7CiB9CkBAIC0yNzE2LDcgKzI3MTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlQWRkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAg
IEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwogCiAgICAgYXV0byBu
b25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZUFkZE5vT3B0aW1pemU7Ci0gICAgaWYg
KEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpKQorICAg
IGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElDLT5hcml0aFByb2Zp
bGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKG9wMSwgb3AyKTsK
ICAgICBhZGRJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgbm9u
T3B0aW1pemVWYXJpYW50KTsKIApAQCAtMjc0OSw3ICsyNzQ5LDcgQEAgQUxXQVlTX0lOTElORSBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9maWxlZE11bChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNdWwoZ2xvYmFsT2JqZWN0LCBv
cDEsIG9wMikpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9m
aWxlZE11bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUmIGFyaXRoUHJv
ZmlsZSwgYm9vbCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQorQUxXQVlTX0lO
TElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRNdWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2Jz
ZXJ2ZUxIU0FuZFJIU1R5cGVzID0gdHJ1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjc5
MCw3ICsyNzkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZU11bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRv
IG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlTXVsTm9PcHRpbWl6ZTsKLSAgICBp
ZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCkpCisg
ICAgaWYgKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbXVsSUMtPmFyaXRoUHJv
ZmlsZSgpKQogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogICAgIG11
bElDLT5nZW5lcmF0ZU91dE9mTGluZShjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBub25PcHRpbWl6
ZVZhcmlhbnQpOwogCkBAIC0yODAxLDcgKzI4MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogICAgIHJldHVybiB1bnByb2ZpbGVkTXVsKGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5j
b2RlZE9wMik7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVNdWxQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVN
dWxQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjgxNyw3
ICsyODE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11
bFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGcKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJU
KGFyaXRoUHJvZmlsZSk7CiAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAg
ICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09w
dGltaXplOwpAQCAtMjgzNiw3ICsyODM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCoKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
Ci0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCk7
CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9m
aWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgcmV0dXJuIHByb2ZpbGVkTXVs
KGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9
CkBAIC0yODYyLDcgKzI4NjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTmVnYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKIH0KIAotRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5k
LCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgVW5hcnlBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSkKIHsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yODcxLDcgKzI4NzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbAogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTVmFsdWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3BlcmFuZCk7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTKG9wZXJhbmQpOwor
ICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUFyZyhvcGVyYW5kKTsKIAogICAgIEpTVmFsdWUgcHJp
bVZhbHVlID0gb3BlcmFuZC50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjg5OSw5ICsyODk5LDkg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2Zp
bGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QKICAgICAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgVW5hcnlBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQ
cm9maWxlKTsKLSAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CisgICAgYXJp
dGhQcm9maWxlLT5vYnNlcnZlQXJnKG9wZXJhbmQpOwogICAgIG5lZ0lDLT5nZW5lcmF0ZU91dE9m
TGluZShjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVk
KTsKIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpAQCAtMjkzMyw4ICsyOTMzLDggQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWwKIAogICAgIEpTVmFsdWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3BlcmFuZCk7CiAKLSAgICBpZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBuZWdJQy0+YXJpdGhQcm9maWxlKCkpCi0gICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2
ZUxIUyhvcGVyYW5kKTsKKyAgICBpZiAoVW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9
IG5lZ0lDLT5hcml0aFByb2ZpbGUoKSkKKyAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlQXJn
KG9wZXJhbmQpOwogICAgIG5lZ0lDLT5nZW5lcmF0ZU91dE9mTGluZShjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLCBvcGVyYXRpb25Bcml0aE5lZ2F0ZSk7CiAKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFU
UykKQEAgLTI5NjAsNyArMjk2MCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIHVucHJvZmlsZWRTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3ViKGdsb2JhbE9iamVjdCwgb3AxLCBvcDIpKTsKIH0KIAot
QUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRTdWIoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9v
bCBzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQorQUxXQVlTX0lOTElORSBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgcHJvZmlsZWRTdWIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyLCBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRPYnNl
cnZlTEhTQW5kUkhTVHlwZXMgPSB0cnVlKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIApAQCAtMjk4NCw3ICsyOTg0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmMKICAgICByZXR1cm4gdW5wcm9maWxlZFN1YihnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEs
IGVuY29kZWRPcDIpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlU3ViUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlU3ViUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAKQEAgLTMw
MDIsNyArMzAwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVTdWJPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0
byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZVN1Yk5vT3B0aW1pemU7Ci0gICAg
aWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpKQor
ICAgIGlmIChCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFBy
b2ZpbGUoKSkKICAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBz
dWJJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgbm9uT3B0aW1p
emVWYXJpYW50KTsKIApAQCAtMzAyOCw3ICszMDI4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
IGcKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9m
aWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJp
dGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CiAgICAgYXJpdGhQcm9maWxl
LT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDIpKTsKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJh
dGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGltaXplOwpAQCAtMzA0Nyw3ICszMDQ3LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCoKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7
CiAgICAgcmV0dXJuIHByb2ZpbGVkU3ViKHZtLCBnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVu
Y29kZWRPcDIsICphcml0aFByb2ZpbGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAppbmRleCAzN2U4MzYxNWQ0Ny4uNTk1YWVjNDdjZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0zOCw2ICszOCw4IEBAIHR5cGVk
ZWYgaW50NjRfdCBFbmNvZGVkSlNWYWx1ZTsKICAgICAKIGNsYXNzIEFycmF5QWxsb2NhdGlvblBy
b2ZpbGU7CiBjbGFzcyBBcnJheVByb2ZpbGU7CitjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZTsKK2Ns
YXNzIEJpbmFyeUFyaXRoUHJvZmlsZTsKIGNsYXNzIEJ1dHRlcmZseTsKIGNsYXNzIENhbGxGcmFt
ZTsKIGNsYXNzIENhbGxMaW5rSW5mbzsKQEAgLTY0LDcgKzY2LDYgQEAgY2xhc3MgV2F0Y2hwb2lu
dFNldDsKIHN0cnVjdCBCeVZhbEluZm87CiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOwogc3RydWN0
IEluc3RydWN0aW9uOwotc3RydWN0IEFyaXRoUHJvZmlsZTsKIAogZXh0ZXJuICJDIiB7CiAKQEAg
LTc3LDcgKzc4LDcgQEAgdHlwZWRlZiBjaGFyKiBVbnVzZWRQdHI7CiAgICAgQTogSlNBcnJheSoK
ICAgICBBYXA6IEFycmF5QWxsb2NhdGlvblByb2ZpbGUqCiAgICAgQXA6IEFycmF5UHJvZmlsZSoK
LSAgICBBcnA6IEFyaXRoUHJvZmlsZSoKKyAgICBBcnA6IEJpbmFyeUFyaXRoUHJvZmlsZSoKICAg
ICBCOiBCdXR0ZXJmbHkqCiAgICAgQnk6IEJ5VmFsSW5mbyoKICAgICBDOiBKU0NlbGwqCkBAIC0y
ODIsNyArMjgzLDcgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNoZWNrSWZFeGNl
cHRpb25Jc1VuY2F0Y2hhYmxlQW5kTm90aWZ5UHJvZmlsZXIoVk0KIGludDMyX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBKU09iamVjdCogY29uc3RydWN0b3IsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRIYXNJbnN0YW5jZSkgV1RGX0lOVEVSTkFMOwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwot
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQmlu
YXJ5QXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRB
ZGRJQyopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRBZGRJQyopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVB
ZGRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVEFkZElDKikgV1RGX0lOVEVSTkFMOwpAQCAtMjky
LDEzICsyOTMsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZU11bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEoKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklU
TXVsSUMqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11bElDKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11
bFByb2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11bElDKikgV1RGX0lOVEVSTkFM
OwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVk
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwg
QmluYXJ5QXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlIG9wZXJhbmQpOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aE5lZ2F0ZVByb2ZpbGVkKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgb3BlcmFuZCwg
QXJpdGhQcm9maWxlKik7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFy
aXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBvcGVyYW5k
LCBVbmFyeUFyaXRoUHJvZmlsZSopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3BlcmFuZCwgSklUTmVnSUMqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyopOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YihKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5B
TDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxl
ZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIs
IEJpbmFyeUFyaXRoUHJvZmlsZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklD
KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
YWx1ZVN1Yk5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAKaW5kZXggNzk1YzI3NTg0YzAu
LjdiMWE4YjgxOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1
YkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5l
cmF0b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KSVRNYXRo
SUNJbmxpbmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBl
cnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUpCitKSVRNYXRoSUNJbmxpbmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpn
ZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiB7CiAgICAgLy8g
V2UgZGVmYXVsdCB0byBzcGVjdWxhdGluZyBpbnQzMi4KICAgICBPYnNlcnZlZFR5cGUgbGhzID0g
T2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCk7CkBAIC03OCw3ICs3OCw3IEBAIEpJVE1hdGhJQ0lu
bGluZVJlc3VsdCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYg
aml0LCBNYXRoSUNHCiAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVG
dWxsU25pcHBldDsKIH0KIAotYm9vbCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgo
Q0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBjb25zdCBBcml0aFByb2Zp
bGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKQorYm9vbCBKSVRTdWJH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVy
czo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0
aEp1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgYm9vbCBz
aG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52YWxp
ZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQUigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5oCmluZGV4IDU2
MWY2MzM0YWUzLi4zNDkxYTgzZmVkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdWJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN1YkdlbmVyYXRvci5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3Nj
cmF0Y2hGUFIoc2NyYXRjaEZQUikKICAgICB7IH0KIAotICAgIEpJVE1hdGhJQ0lubGluZVJlc3Vs
dCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBj
b25zdCBBcml0aFByb2ZpbGUqKTsKLSAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxw
ZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEFyaXRoUHJvZmlsZSosIGJvb2wgc2hv
dWxkRW1pdFByb2ZpbGluZyk7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEJpbmFyeUFy
aXRoUHJvZmlsZSopOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3QgQmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91
bGRFbWl0UHJvZmlsaW5nKTsKIAogICAgIHN0YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENv
bnN0YW50KFNuaXBwZXRPcGVyYW5kKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBib29s
IGlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1cm4gZmFs
c2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggNTFl
ZDY1M2Q5OGEuLjJmZGUxMDdhOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmNwcApAQCAtMTQ3LDM2ICsxNDcsNDkgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0
aW9ucyhWTSYgdm0pCiAjZW5kaWYKIAogICAgIHsKLSAgICAgICAgQXJpdGhQcm9maWxlIGFyaXRo
UHJvZmlsZTsKKyAgICAgICAgVW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxlOworICAgICAg
ICBhcml0aFByb2ZpbGUuYXJnU2F3SW50MzIoKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmls
ZS5iaXRzKCkgPT0gVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkSW50Qml0cygpKTsKKyAgICAg
ICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5hcmdPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsK
KyAgICB9CisgICAgeworICAgICAgICBVbmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7Cisg
ICAgICAgIGFyaXRoUHJvZmlsZS5hcmdTYXdOdW1iZXIoKTsKKyAgICAgICAgQVNTRVJUKGFyaXRo
UHJvZmlsZS5iaXRzKCkgPT0gVW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyQml0cygp
KTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5hcmdPYnNlcnZlZFR5cGUoKS5pc09ubHlO
dW1iZXIoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgYXJp
dGhQcm9maWxlOwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKICAgICAgICAg
YXJpdGhQcm9maWxlLnJoc1Nhd0ludDMyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUu
Yml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnRJbnQoKS5iaXRzKCkpOwot
ICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlJbnRJbnQo
KS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlJbnQzMigpKTsKLSAgICAgICAgU1RBVElDX0FTU0VS
VChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50SW50KCkucmhzT2JzZXJ2ZWRUeXBlKCku
aXNPbmx5SW50MzIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEJp
bmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRJbnRCaXRzKCkpOworICAgICAgICBBU1NFUlQo
YXJpdGhQcm9maWxlLmxoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOwogICAg
IH0KICAgICB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CisgICAgICAgIEJp
bmFyeUFyaXRoUHJvZmlsZSBhcml0aFByb2ZpbGU7CiAgICAgICAgIGFyaXRoUHJvZmlsZS5saHNT
YXdOdW1iZXIoKTsKICAgICAgICAgYXJpdGhQcm9maWxlLnJoc1Nhd0ludDMyKCk7Ci0gICAgICAg
IEFTU0VSVChhcml0aFByb2ZpbGUuYml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5h
cnlOdW1iZXJJbnQoKS5iaXRzKCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmls
ZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJJbnQoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1i
ZXIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFy
eU51bWJlckludCgpLnJoc09ic2VydmVkVHlwZSgpLmlzT25seUludDMyKCkpOworICAgICAgICBB
U1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9PSBCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVk
TnVtYmVySW50Qml0cygpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5saHNPYnNlcnZl
ZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUucmhz
T2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgQXJp
dGhQcm9maWxlIGFyaXRoUHJvZmlsZTsKKyAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlIGFyaXRo
UHJvZmlsZTsKICAgICAgICAgYXJpdGhQcm9maWxlLmxoc1Nhd051bWJlcigpOwogICAgICAgICBh
cml0aFByb2ZpbGUucmhzU2F3TnVtYmVyKCk7Ci0gICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUu
Yml0cygpID09IEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlOdW1iZXJOdW1iZXIoKS5iaXRz
KCkpOwotICAgICAgICBTVEFUSUNfQVNTRVJUKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRCaW5hcnlO
dW1iZXJOdW1iZXIoKS5saHNPYnNlcnZlZFR5cGUoKS5pc09ubHlOdW1iZXIoKSk7Ci0gICAgICAg
IFNUQVRJQ19BU1NFUlQoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51bWJlcigp
LnJoc09ic2VydmVkVHlwZSgpLmlzT25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRo
UHJvZmlsZS5iaXRzKCkgPT0gQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51bWJl
ckJpdHMoKSk7CisgICAgICAgIEFTU0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCku
aXNPbmx5TnVtYmVyKCkpOworICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLnJoc09ic2VydmVk
VHlwZSgpLmlzT25seU51bWJlcigpKTsKICAgICB9CiAgICAgewotICAgICAgICBBcml0aFByb2Zp
bGUgYXJpdGhQcm9maWxlOworICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgYXJpdGhQcm9maWxl
OwogICAgICAgICBhcml0aFByb2ZpbGUubGhzU2F3SW50MzIoKTsKICAgICAgICAgYXJpdGhQcm9m
aWxlLnJoc1Nhd051bWJlcigpOwotICAgICAgICBBU1NFUlQoYXJpdGhQcm9maWxlLmJpdHMoKSA9
PSBBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCkuYml0cygpKTsKLSAgICAg
ICAgU1RBVElDX0FTU0VSVChBcml0aFByb2ZpbGU6Om9ic2VydmVkQmluYXJ5SW50TnVtYmVyKCku
bGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7Ci0gICAgICAgIFNUQVRJQ19BU1NFUlQo
QXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeUludE51bWJlcigpLnJoc09ic2VydmVkVHlwZSgp
LmlzT25seU51bWJlcigpKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZS5iaXRzKCkgPT0g
QmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZEludE51bWJlckJpdHMoKSk7CisgICAgICAgIEFT
U0VSVChhcml0aFByb2ZpbGUubGhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5SW50MzIoKSk7CisgICAg
ICAgIEFTU0VSVChhcml0aFByb2ZpbGUucmhzT2JzZXJ2ZWRUeXBlKCkuaXNPbmx5TnVtYmVyKCkp
OwogICAgIH0KIH0KIElHTk9SRV9XQVJOSU5HU19FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggNzhhZGQwMjA1
NzUuLjcxMjViZDRmNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAK
IGNvbnN0IGludDY0X3QqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQogewotLy8gVGhp
cyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0c19leHRy
YWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCisvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQg
Ynkgb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiLCBhbmQgY29udGFpbnMg
Y29kZQogLy8gdG8gY3JlYXRlIGEgdGFibGUgb2Ygb2Zmc2V0cywgc2l6ZXMsIGFuZCBhIGhlYWRl
ciBpZGVudGlmeWluZyB3aGF0IGNvbWJpbmF0aW9uIG9mCiAvLyBQbGF0Zm9ybS5oIG1hY3JvcyB3
ZSBoYXZlIHNldC4gV2UgaW5jbHVkZSBpdCBpbnNpZGUgb2YgYSBtZXRob2Qgb24gTExJbnRPZmZz
ZXRzRXh0cmFjdG9yCiAvLyBiZWNhdXNlIHRoZSBmaWVsZHMgd2hvc2Ugb2Zmc2V0cyB3ZSdyZSBl
eHRyYWN0aW5nIGFyZSBtb3N0bHkgcHJpdmF0ZS4gU28gd2UgbWFrZSB0aGVpcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4
IGE4ODAwYjBiY2E5Li41NjAzODdhM2EwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjQxLDEzICsyNDEsMTUgQEAg
Y29uc3QgSXNJbnZhbGlkYXRlZCA9IGNvbnN0ZXhwciBJc0ludmFsaWRhdGVkCiAjIFNoYWRvd0No
aWNrZW4gZGF0YQogY29uc3QgU2hhZG93Q2hpY2tlblRhaWxNYXJrZXIgPSBjb25zdGV4cHIgU2hh
ZG93Q2hpY2tlbjo6UGFja2V0Ojp0YWlsTWFya2VyVmFsdWUKIAotIyBBcml0aFByb2ZpbGUgZGF0
YQotY29uc3QgQXJpdGhQcm9maWxlSW50ID0gY29uc3RleHByIChBcml0aFByb2ZpbGU6Om9ic2Vy
dmVkVW5hcnlJbnQoKS5iaXRzKCkpCi1jb25zdCBBcml0aFByb2ZpbGVOdW1iZXIgPSBjb25zdGV4
cHIgKEFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRVbmFyeU51bWJlcigpLmJpdHMoKSkKLWNvbnN0IEFy
aXRoUHJvZmlsZUludEludCA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFy
eUludEludCgpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJlckludCA9IGNvbnN0ZXhw
ciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlckludCgpLmJpdHMoKSkKLWNvbnN0
IEFyaXRoUHJvZmlsZUludE51bWJlciA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZl
ZEJpbmFyeUludE51bWJlcigpLmJpdHMoKSkKLWNvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJl
ciA9IGNvbnN0ZXhwciAoQXJpdGhQcm9maWxlOjpvYnNlcnZlZEJpbmFyeU51bWJlck51bWJlcigp
LmJpdHMoKSkKKyMgVW5hcnlBcml0aFByb2ZpbGUgZGF0YQorY29uc3QgQXJpdGhQcm9maWxlSW50
ID0gY29uc3RleHByIChVbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWRJbnRCaXRzKCkpCitjb25z
dCBBcml0aFByb2ZpbGVOdW1iZXIgPSBjb25zdGV4cHIgKFVuYXJ5QXJpdGhQcm9maWxlOjpvYnNl
cnZlZE51bWJlckJpdHMoKSkKKworIyBCaW5hcnlBcml0aFByb2ZpbGUgZGF0YQorY29uc3QgQXJp
dGhQcm9maWxlSW50SW50ID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVk
SW50SW50Qml0cygpKQorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVySW50ID0gY29uc3RleHByIChC
aW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVySW50Qml0cygpKQorY29uc3QgQXJpdGhQ
cm9maWxlSW50TnVtYmVyID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVk
SW50TnVtYmVyQml0cygpKQorY29uc3QgQXJpdGhQcm9maWxlTnVtYmVyTnVtYmVyID0gY29uc3Rl
eHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVkTnVtYmVyTnVtYmVyQml0cygpKQogCiAj
IFBvaW50ZXIgVGFncwogY29uc3QgQnl0ZWNvZGVQdHJUYWcgPSBjb25zdGV4cHIgQnl0ZWNvZGVQ
dHJUYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZDE1ZDk2NzI3YzUuLmM4ODBjZjk1OWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQpAQCAtMTAwMCw4ICsxMDAwLDggQEAgZW5kKQogCiBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdhdGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0YSwgcmV0dXJuKQogCi0gICAgbWFjcm8gYXJpdGhQcm9maWxlKHR5cGUpCi0gICAgICAg
IG9yaSB0eXBlLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9m
aWxlOjptX2JpdHNbdDVdCisgICAgbWFjcm8gdXBkYXRlQXJpdGhQcm9maWxlKHR5cGUpCisgICAg
ICAgIG9yaCB0eXBlLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgVW5hcnlB
cml0aFByb2ZpbGU6Om1fYml0c1t0NV0KICAgICBlbmQKIAogICAgIG1ldGFkYXRhKHQ1LCB0MCkK
QEAgLTEwMTAsMTIgKzEwMTAsMTIgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9uZWdhdGUsIE9w
TmVnYXRlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHIKICAgICBiaW5l
cSB0MSwgSW50MzJUYWcsIC5vcE5lZ2F0ZVNyY05vdEludAogICAgIGJ0aXogdDIsIDB4N2ZmZmZm
ZmYsIC5vcE5lZ2F0ZVNsb3cKICAgICBuZWdpIHQyCi0gICAgYXJpdGhQcm9maWxlKEFyaXRoUHJv
ZmlsZUludCkKKyAgICB1cGRhdGVBcml0aFByb2ZpbGUoQXJpdGhQcm9maWxlSW50KQogICAgIHJl
dHVybiAoSW50MzJUYWcsIHQyKQogLm9wTmVnYXRlU3JjTm90SW50OgogICAgIGJpYSB0MSwgTG93
ZXN0VGFnLCAub3BOZWdhdGVTbG93CiAgICAgeG9yaSAweDgwMDAwMDAwLCB0MQotICAgIGFyaXRo
UHJvZmlsZShBcml0aFByb2ZpbGVOdW1iZXIpCisgICAgdXBkYXRlQXJpdGhQcm9maWxlKEFyaXRo
UHJvZmlsZU51bWJlcikKICAgICByZXR1cm4odDEsIHQyKQogCiAub3BOZWdhdGVTbG93OgpAQCAt
MTAyNyw3ICsxMDI3LDcgQEAgZW5kKQogbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShvcGNvZGVO
YW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0
aW9uKQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1
Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAg
ICBtYWNybyBhcml0aFByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNb
dDVdCisgICAgICAgICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Fy
aXRoUHJvZmlsZSArIEJpbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Q1XQogICAgICAgICBlbmQK
IAogICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDk1YzBmNjhlNWJlLi5k
OTQ5MTAxNWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTk4MSwyMiArOTgxLDI0IEBAIGVuZCkKIAogCiBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdhdGUsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorCisgICAgbWFjcm8gdXBkYXRlQXJpdGhQcm9m
aWxlKHR5cGUpCisgICAgICAgIG9yaCB0eXBlLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJpdGhQ
cm9maWxlICsgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0KKyAgICBlbmQKKwogICAgIGdl
dChtX29wZXJhbmQsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQz
KQogICAgIG1ldGFkYXRhKHQxLCB0MikKLSAgICBsb2FkaSBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1f
YXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFdLCB0MgogICAgIGJxYiB0Mywg
bnVtYmVyVGFnLCAub3BOZWdhdGVOb3RJbnQKICAgICBidGl6IHQzLCAweDdmZmZmZmZmLCAub3BO
ZWdhdGVTbG93CiAgICAgbmVnaSB0MwogICAgIG9ycSBudW1iZXJUYWcsIHQzCi0gICAgb3JpIEFy
aXRoUHJvZmlsZUludCwgdDIKLSAgICBzdG9yZWkgdDIsIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9h
cml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0KKyAgICB1cGRhdGVBcml0aFBy
b2ZpbGUoQXJpdGhQcm9maWxlSW50KQogICAgIHJldHVybih0MykKIC5vcE5lZ2F0ZU5vdEludDoK
ICAgICBidHF6IHQzLCBudW1iZXJUYWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JxIDB4ODAwMDAw
MDAwMDAwMDAwMCwgdDMKLSAgICBvcmkgQXJpdGhQcm9maWxlTnVtYmVyLCB0MgotICAgIHN0b3Jl
aSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6
bV9iaXRzW3QxXQorICAgIHVwZGF0ZUFyaXRoUHJvZmlsZShBcml0aFByb2ZpbGVOdW1iZXIpCiAg
ICAgcmV0dXJuKHQzKQogCiAub3BOZWdhdGVTbG93OgpAQCAtMTAxMCw3ICsxMDEyLDcgQEAgbWFj
cm8gYmluYXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIGludGVnZXJP
cGVyYXRpb25BbmRTdG9yZSwgZG8KICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQogCiAgICAgICAg
IG1hY3JvIHByb2ZpbGUodHlwZSkKLSAgICAgICAgICAgIG9yaSB0eXBlLCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCisg
ICAgICAgICAgICBvcmggdHlwZSwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FyaXRoUHJv
ZmlsZSArIFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbdDVdCiAgICAgICAgIGVuZAogCiAgICAg
ICAgIGdldChtX3JocywgdDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hcm0ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIK
aW5kZXggYjIzZjY1Yjg2ODMuLmIyMjI1Njc4MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXJtLnJiCkBAIC0yOTksNyArMjk5LDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAg
ICAgICAgIGVuZAogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1l
ZEFkZHJlc3Nlc0RvdWJsZShyZXN1bHQpCi0gICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1pc3Bs
YWNlZEltbWVkaWF0ZXMocmVzdWx0LCBbInN0b3JlYiIsICJzdG9yZWkiLCAic3RvcmVwIiwgInN0
b3JlcSJdKQorICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKHJl
c3VsdCwgWyJzdG9yZWIiLCAic3RvcmVoIiwgInN0b3JlaSIsICJzdG9yZXAiLCAic3RvcmVxIl0p
CiAgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMocmVzdWx0LCAw
Li4weGZmLCAwLi4weDBmZikKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2VkQWRk
cmVzc2VzKHJlc3VsdCkKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyUmVnaXN0ZXJSZXVzZShy
ZXN1bHQpCkBAIC00MTgsNyArNDE4LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAg
IGVuZAogICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCiAgICAgICAgICAgICBlbWl0QXJtQ29t
cGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIK
KyAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIsICJvcmgiCiAgICAgICAgICAgICBlbWl0QXJtQ29t
cGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKICAgICAgICAgd2hlbiAib3JpcyIKICAgICAg
ICAgICAgIGVtaXRBcm1Db21wYWN0KCJvcnJzIiwgIm9ycnMiLCBvcGVyYW5kcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKaW5kZXggMDk2NmVjM2JmNmIuLmZjZDI3
NmYzNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02
NC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpAQCAt
MzkzLDcgKzM5Myw3IEBAIGNsYXNzIFNlcXVlbmNlCiAgICAgICAgICAgICBjYXNlIG5vZGUub3Bj
b2RlCiAgICAgICAgICAgICB3aGVuICJsb2FkYiIsICJsb2FkYnNpIiwgImxvYWRic3EiLCAic3Rv
cmViIiwgL15iYi8sIC9eYnRiLywgL15jYi8sIC9edGIvCiAgICAgICAgICAgICAgICAgc2l6ZSA9
IDEKLSAgICAgICAgICAgIHdoZW4gImxvYWRoIiwgImxvYWRoc2kiLCAibG9hZGhzcSIsICJzdG9y
ZWgiCisgICAgICAgICAgICB3aGVuICJsb2FkaCIsICJsb2FkaHNpIiwgImxvYWRoc3EiLCAib3Jo
IiwgInN0b3JlaCIKICAgICAgICAgICAgICAgICBzaXplID0gMgogICAgICAgICAgICAgd2hlbiAi
bG9hZGkiLCAibG9hZGlzIiwgInN0b3JlaSIsICJhZGRpIiwgImFuZGkiLCAibHNoaWZ0aSIsICJt
dWxpIiwgIm5lZ2kiLAogICAgICAgICAgICAgICAgICJub3RpIiwgIm9yaSIsICJyc2hpZnRpIiwg
InVyc2hpZnRpIiwgInN1YmkiLCAieG9yaSIsIC9eYmkvLCAvXmJ0aS8sCkBAIC00MTgsNyArNDE4
LDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAgIGVuZAogICAgICAgICB9CiAKLSAgICAg
ICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhyZXN1bHQsIFsic3RvcmVi
IiwgInN0b3JlaSIsICJzdG9yZXAiLCAic3RvcmVxIl0pCisgICAgICAgIHJlc3VsdCA9IHJpc2NM
b3dlck1pc3BsYWNlZEltbWVkaWF0ZXMocmVzdWx0LCBbInN0b3JlYiIsICJzdG9yZWgiLCAic3Rv
cmVpIiwgInN0b3JlcCIsICJzdG9yZXEiXSkKIAogICAgICAgICAjIFRoZSBydWxlcyBmb3Igd2hp
Y2ggaW1tZWRpYXRlcyBhcmUgdmFsaWQgZm9yIGFuZC9vci94b3IgaW5zdHJ1Y3Rpb25zIGFyZSBm
YWlybHkgaW52b2x2ZWQsIHNlZSBodHRwczovL2RpbmZ1ZWhyLmdpdGh1Yi5pby9ibG9nL2VuY29k
aW5nLW9mLWltbWVkaWF0ZS12YWx1ZXMtb24tYWFyY2g2NC8KICAgICAgICAgdmFsaWRMb2dpY2Fs
SW1tZWRpYXRlcyA9IFtdCkBAIC03MTEsNiArNzExLDggQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAg
ICAgICAgICAgIGVtaXRBUk02NFRBQygib3JyIiwgb3BlcmFuZHMsIDpwdHIpCiAgICAgICAgIHdo
ZW4gIm9ycSIKICAgICAgICAgICAgIGVtaXRBUk02NFRBQygib3JyIiwgb3BlcmFuZHMsIDpxdWFk
KQorICAgICAgICB3aGVuICJvcmgiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMoIm9yciIsIG9w
ZXJhbmRzLCA6d29yZCkgIyBub3QgOmhhbGYgYmVjYXVzZSAxNi1iaXQgcmVnaXN0ZXJzIGRvbid0
IGV4aXN0IG9uIEFSTS4KICAgICAgICAgd2hlbiAieG9yaSIKICAgICAgICAgICAgIGVtaXRBUk02
NFRBQygiZW9yIiwgb3BlcmFuZHMsIDp3b3JkKQogICAgICAgICB3aGVuICJ4b3JwIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgppbmRleCBmMzNmNzA2ZGIxOC4uMzcy
ZTZmMTM4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Ns
b29wLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCkBA
IC0xNjAsNiArMTYwLDcgQEAgY2xhc3MgSW1tZWRpYXRlCiAKICAgICAgICAgY2FzZSB0eXBlCiAg
ICAgICAgIHdoZW4gOmludDg7ICAgICJpbnQ4X3QoI3t2YWx1ZVN0cn0pIgorICAgICAgICB3aGVu
IDppbnQxNjsgICAiaW50MTZfdCgje3ZhbHVlU3RyfSkiCiAgICAgICAgIHdoZW4gOmludDMyOyAg
ICJpbnQzMl90KCN7dmFsdWVTdHJ9KSIKICAgICAgICAgd2hlbiA6aW50NjQ7ICAgImludDY0X3Qo
I3t2YWx1ZVN0cn0pIgogICAgICAgICB3aGVuIDppbnRwdHI7ICAiaW50cHRyX3QoI3t2YWx1ZVN0
cn0pIgpAQCAtMTgzLDYgKzE4NCw3IEBAIGNsYXNzIEFkZHJlc3MKICAgICBkZWYgY2xWYWx1ZSh0
eXBlPTppbnRwdHIpCiAgICAgICAgIGNhc2UgdHlwZQogICAgICAgICB3aGVuIDppbnQ4OyAgICAg
ICAgIGludDhNZW1SZWYKKyAgICAgICAgd2hlbiA6aW50MTY7ICAgICAgICBpbnQxNk1lbVJlZgog
ICAgICAgICB3aGVuIDppbnQzMjsgICAgICAgIGludDMyTWVtUmVmCiAgICAgICAgIHdoZW4gOmlu
dDY0OyAgICAgICAgaW50NjRNZW1SZWYKICAgICAgICAgd2hlbiA6aW50cHRyOyAgICAgICBpbnRw
dHJNZW1SZWYKQEAgLTM4Niw3ICszODgsNyBAQCBlbmQKIAogZGVmIGNsb29wRW1pdE9wZXJhdGlv
bihvcGVyYW5kcywgdHlwZSwgb3BlcmF0b3IpCiAgICAgcmFpc2UgdW5sZXNzIHR5cGUgPT0gOmlu
dHB0ciB8fCB0eXBlID09IDp1aW50cHRyIHx8IHR5cGUgPT0gOmludDMyIHx8IHR5cGUgPT0gOnVp
bnQzMiB8fCBcCi0gICAgICAgIHR5cGUgPT0gOmludDY0IHx8IHR5cGUgPT0gOnVpbnQ2NCB8fCB0
eXBlID09IDpkb3VibGUKKyAgICAgICAgdHlwZSA9PSA6aW50NjQgfHwgdHlwZSA9PSA6dWludDY0
IHx8IHR5cGUgPT0gOmRvdWJsZSB8fCB0eXBlID09IDppbnQxNgogICAgIGlmIG9wZXJhbmRzLnNp
emUgPT0gMwogICAgICAgICBvcDEgPSBvcGVyYW5kc1swXQogICAgICAgICBvcDIgPSBvcGVyYW5k
c1sxXQpAQCAtNDAxLDYgKzQwMyw5IEBAIGRlZiBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMs
IHR5cGUsIG9wZXJhdG9yKQogICAgIGlmIGRzdC5pc19hPyBSZWdpc3RlcklEIGFuZCAodHlwZSA9
PSA6aW50MzIgb3IgdHlwZSA9PSA6dWludDMyKQogICAgICAgICB0cnVuY2F0aW9uSGVhZGVyID0g
Iih1aW50MzJfdCkoIgogICAgICAgICB0cnVuY2F0aW9uRm9vdGVyID0gIikiCisgICAgZWxzaWYg
ZHN0LmlzX2E/IFJlZ2lzdGVySUQgYW5kICh0eXBlID09IDppbnQxNikKKyAgICAgICAgdHJ1bmNh
dGlvbkhlYWRlciA9ICIodWludDE2X3QpKCIKKyAgICAgICAgdHJ1bmNhdGlvbkZvb3RlciA9ICIp
IgogICAgIGVsc2UKICAgICAgICAgdHJ1bmNhdGlvbkhlYWRlciA9ICIiCiAgICAgICAgIHRydW5j
YXRpb25Gb290ZXIgPSAiIgpAQCAtNTg1LDYgKzU5MCw4IEBAIGNsYXNzIEluc3RydWN0aW9uCiAg
ICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMsIDppbnQ2NCwgInwiKQogICAg
ICAgICB3aGVuICJvcnAiCiAgICAgICAgICAgICBjbG9vcEVtaXRPcGVyYXRpb24ob3BlcmFuZHMs
IDppbnRwdHIsICJ8IikKKyAgICAgICAgd2hlbiAib3JoIgorICAgICAgICAgICAgY2xvb3BFbWl0
T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50MTYsICJ8IikKIAogICAgICAgICB3aGVuICJ4b3JpIgog
ICAgICAgICAgICAgY2xvb3BFbWl0T3BlcmF0aW9uKG9wZXJhbmRzLCA6aW50MzIsICJeIikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5y
YiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgppbmRl
eCA3YTIxMmIyMGUyZC4uYTQxZTA2ZjdkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKQEAgLTQ2LDYgKzQ2LDcgQEAgTUFDUk9fSU5T
VFJVQ1RJT05TID0KICAgICAgIm9yaSIsCiAgICAgICJvcmYiLAogICAgICAib3JkIiwKKyAgICAg
Im9yaCIsCiAgICAgICJyc2hpZnRpIiwKICAgICAgInVyc2hpZnRpIiwKICAgICAgInJzaGlmdHAi
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMucmIKaW5kZXggYjVmMDdiMTY4
YzMuLjVhNTMyZDg1YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9taXBzLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL21pcHMu
cmIKQEAgLTUyNyw3ICs1MjcsNyBAQCBkZWYgbWlwc0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhs
aXN0KQogICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgd2hlbiAvXihhZGRpfHN1Ymkp
LwogICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1l
ZGlhdGVzUmVjdXJzZShuZXdMaXN0LCAtMHg3ZmZmLi4weDdmZmYpCi0gICAgICAgICAgICB3aGVu
ICJhbmRpIiwgImFuZHAiLCAib3JpIiwgIm9ycCIsICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAg
ICB3aGVuICJhbmRpIiwgImFuZHAiLCAib3JpIiwgIm9ycCIsICJvcmgiLCAieG9yaSIsICJ4b3Jw
IgogICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1l
ZGlhdGVzUmVjdXJzZShuZXdMaXN0LCAwLi4weGZmZmYpCiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCkBAIC04NjAsNyArODYwLDcgQEAgY2xhc3MgSW5z
dHJ1Y3Rpb24KICAgICAgICAgICAgIGVuZAogICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCiAg
ICAgICAgICAgICBlbWl0TUlQU0NvbXBhY3QoImFuZCIsICJhbmQiLCBvcGVyYW5kcykKLSAgICAg
ICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIsICJvcmgiCiAg
ICAgICAgICAgICBlbWl0TUlQU0NvbXBhY3QoIm9yIiwgIm9yciIsIG9wZXJhbmRzKQogICAgICAg
ICB3aGVuICJvcmlzIgogICAgICAgICAgICAgZW1pdE1JUFNDb21wYWN0KCJvciIsICJvcnJzIiwg
b3BlcmFuZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9y
aXNjLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgppbmRleCA3
NWQ3YTk4ZjMzZi4uMWU2NzA0ZmFiNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3Jpc2MucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vcmlzYy5yYgpAQCAtNDYyLDcgKzQ2Miw3IEBAIGRlZiByaXNjTG93ZXJNaXNwbGFjZWRBZGRy
ZXNzZXMobGlzdCkKICAgICAgICAgICAgIHBvc3RJbnN0cnVjdGlvbnMgPSBbXQogICAgICAgICAg
ICAgYW5ub3RhdGlvbiA9IG5vZGUuYW5ub3RhdGlvbgogICAgICAgICAgICAgY2FzZSBub2RlLm9w
Y29kZQotICAgICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRpcyIsICJhbmRpIiwgImxzaGlmdGki
LCAibXVsaSIsICJuZWdpIiwgIm5vdGkiLCAib3JpIiwgIm9yaXMiLAorICAgICAgICAgICAgd2hl
biAiYWRkaSIsICJhZGRpcyIsICJhbmRpIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwgIm5v
dGkiLCAib3JpIiwgIm9yaCIsICJvcmlzIiwKICAgICAgICAgICAgICAgICAicnNoaWZ0aSIsICJ1
cnNoaWZ0aSIsICJzdWJpIiwgInN1YmlzIiwgInhvcmkiLCAvXmJpLywgL15idGkvLCAvXmNpLywg
L150aS8KICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNv
ZGVPcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS5vcGNvZGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94
ODYucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKaW5kZXggMTEy
ZWVkN2I1YzEuLjZkY2EwNDcxZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
eDg2LnJiCkBAIC0xMTIzLDYgKzExMjMsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAg
ICAgaGFuZGxlWDg2T3AoIm9ycHMiLCA6ZmxvYXQpCiAgICAgICAgIHdoZW4gIm9yZCIKICAgICAg
ICAgICAgIGhhbmRsZVg4Nk9wKCJvcnBkIiwgOmRvdWJsZSkKKyAgICAgICAgd2hlbiAib3JoIgor
ICAgICAgICAgICAgaGFuZGxlWDg2T3AoIm9yI3t4ODZTdWZmaXgoOmhhbGYpfSIsIDpoYWxmKQog
ICAgICAgICB3aGVuICJyc2hpZnRpIgogICAgICAgICAgICAgaGFuZGxlWDg2U2hpZnQoInNhciN7
eDg2U3VmZml4KDppbnQpfSIsIDppbnQpCiAgICAgICAgIHdoZW4gInJzaGlmdHAiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUmVzdWx0VHlwZS5oCmluZGV4IDliM2QwZDc0YzhkLi41NjIy
ZjI4OWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRU
eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgKQEAg
LTQ4LDYgKzQ4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3RleHBy
IGludCBudW1CaXRzTmVlZGVkID0gNzsKICAgICAgICAgc3RhdGljX2Fzc2VydCgoVHlwZUJpdHMg
JiAoKDEgPDwgbnVtQml0c05lZWRlZCkgLSAxKSkgPT0gVHlwZUJpdHMsICJUaGlzIGlzIG5lY2Vz
c2FyeSBmb3IgY29ycmVjdG5lc3MuIik7CiAKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFJl
c3VsdFR5cGUoKQorICAgICAgICAgICAgOiBSZXN1bHRUeXBlKHVua25vd25UeXBlKCkpCisgICAg
ICAgIHsKKyAgICAgICAgfQogICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlwZShU
eXBlIHR5cGUpCiAgICAgICAgICAgICA6IG1fYml0cyh0eXBlKQogICAgICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAx
NWYxZmQ4NWU0NC4uZGE5ZmJjYTUyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDc3LDggKzQ3Nyw4IEBAIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF90b19zdHJpbmcpCiAjaWYgRU5BQkxFKEpJVCkKIHN0YXRpYyB2b2lk
IHVwZGF0ZUFyaXRoUHJvZmlsZUZvclVuYXJ5QXJpdGhPcChPcE5lZ2F0ZTo6TWV0YWRhdGEmIG1l
dGFkYXRhLCBKU1ZhbHVlIHJlc3VsdCwgSlNWYWx1ZSBvcGVyYW5kKQogewotICAgIEFyaXRoUHJv
ZmlsZSYgcHJvZmlsZSA9IG1ldGFkYXRhLm1fYXJpdGhQcm9maWxlOwotICAgIHByb2ZpbGUub2Jz
ZXJ2ZUxIUyhvcGVyYW5kKTsKKyAgICBVbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9IG1ldGFk
YXRhLm1fYXJpdGhQcm9maWxlOworICAgIHByb2ZpbGUub2JzZXJ2ZUFyZyhvcGVyYW5kKTsKICAg
ICBBU1NFUlQocmVzdWx0LmlzTnVtYmVyKCkgfHwgcmVzdWx0LmlzQmlnSW50KCkpOwogICAgIGlm
IChyZXN1bHQuaXNOdW1iZXIoKSkgewogICAgICAgICBpZiAoIXJlc3VsdC5pc0ludDMyKCkpIHsK
QEAgLTUzNSw3ICs1MzUsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQogI2lm
IEVOQUJMRShERkdfSklUKQogc3RhdGljIHZvaWQgdXBkYXRlQXJpdGhQcm9maWxlRm9yQmluYXJ5
QXJpdGhPcChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0
cnVjdGlvbiogcGMsIEpTVmFsdWUgcmVzdWx0LCBKU1ZhbHVlIGxlZnQsIEpTVmFsdWUgcmlnaHQp
CiB7Ci0gICAgQXJpdGhQcm9maWxlJiBwcm9maWxlID0gKmNvZGVCbG9jay0+YXJpdGhQcm9maWxl
Rm9yUEMocGMpOworICAgIEJpbmFyeUFyaXRoUHJvZmlsZSYgcHJvZmlsZSA9ICpjb2RlQmxvY2st
PmJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKHBjKTsKIAogICAgIGlmIChyZXN1bHQuaXNOdW1iZXIo
KSkgewogICAgICAgICBpZiAoIXJlc3VsdC5pc0ludDMyKCkpIHsKQEAgLTU5Niw3ICs1OTYsNyBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWRkKQogICAgIEpTVmFsdWUgdjEgPSBHRVRfQyhi
eXRlY29kZS5tX2xocykuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgdjIgPSBHRVRfQyhieXRlY29k
ZS5tX3JocykuanNWYWx1ZSgpOwogCi0gICAgQXJpdGhQcm9maWxlJiBhcml0aFByb2ZpbGUgPSAq
Y29kZUJsb2NrLT5hcml0aFByb2ZpbGVGb3JQQyhwYyk7CisgICAgQmluYXJ5QXJpdGhQcm9maWxl
JiBhcml0aFByb2ZpbGUgPSAqY29kZUJsb2NrLT5iaW5hcnlBcml0aFByb2ZpbGVGb3JQQyhwYyk7
CiAgICAgYXJpdGhQcm9maWxlLm9ic2VydmVMSFNBbmRSSFModjEsIHYyKTsKIAogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNBZGQoZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>