<?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>226755</bug_id>
          
          <creation_ts>2021-06-07 20:19:21 -0700</creation_ts>
          <short_desc>Optimize compareStrictEq when neither side is a double and at least one is not a BigInt</short_desc>
          <delta_ts>2021-09-09 01:10:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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=226676</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767654</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-07 20:19:21 -0700</bug_when>
    <thetext>Fairly similar to https://bugs.webkit.org/show_bug.cgi?id=226676, but catches more cases at the cost of more code being generated (since it now must deal with the string equality case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767660</commentid>
    <comment_count>1</comment_count>
      <attachid>430805</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-07 21:08:09 -0700</bug_when>
    <thetext>Created attachment 430805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769676</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-14 20:20:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/79321542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770365</commentid>
    <comment_count>3</comment_count>
      <attachid>431593</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-16 13:43:13 -0700</bug_when>
    <thetext>Created attachment 431593
Patch

Fix 2 bugs in the speculativeJIT:
- doing register allocation within a branch
- doing an update to the interpreter state within a branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784677</commentid>
    <comment_count>4</comment_count>
      <attachid>435639</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-08-16 16:05:09 -0700</bug_when>
    <thetext>Created attachment 435639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784702</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-16 17:18:22 -0700</bug_when>
    <thetext>Debug tests are crashing (need to add appropriate doesGC handling).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784706</commentid>
    <comment_count>6</comment_count>
      <attachid>435649</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-08-16 17:34:07 -0700</bug_when>
    <thetext>Created attachment 435649
Patch

Sorry for that, I should have waited on EWS before sending this patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791606</commentid>
    <comment_count>7</comment_count>
      <attachid>435649</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-08 13:50:03 -0700</bug_when>
    <thetext>Comment on attachment 435649
Patch

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

r=me with comments.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7470
&gt; +void SpeculativeJIT::emitBitwiseJSValueEquality(JSValueOperand&amp; left, JSValueOperand&amp; right, GPRTemporary&amp; result)

Let&apos;s just take `JSValueRegs left` and `JSValueRegs right` instead of `JSValueOperand&amp;`. And let&apos;s just take GPRReg for result.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7482
&gt; +void SpeculativeJIT::emitBranchOnBitwiseJSValueEquality(JSValueOperand&amp; left, JSValueOperand&amp; right, BasicBlock* taken, BasicBlock* notTaken)

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7523
&gt; +    emitBitwiseJSValueEquality(left, right, result);

Let&apos;s just pass leftRegs, rightRegs, and resultGPR.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7543
&gt; +    emitBranchOnBitwiseJSValueEquality(left, right, taken, notTaken);

Lef&apos;s just pass leftRegs and rightRegs.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:356
&gt; +    GPRReg leftGPR = leftRegs.payloadGPR();
&gt; +    GPRReg rightGPR = rightRegs.payloadGPR();

I think using `leftRegs.payloadGPR()` / `rightRegs.payloadGPR()` is easier to read since we do not need to remember leftGPR is a part of leftRegs.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9749
&gt; +        m_out.branch(isCell(leftValue, provenType(neitherDoubleNorHeapBigIntEdge)), unsure(leftIsCellEqualCase), unsure(returnTrueBlock));

We can remove Numbers from provenType. (provenType(neitherDoubleNorHeapBigIntEdge) &amp; ~SpecFullNumber)

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9763
&gt; +        m_out.branch(isNotCell(leftValue, leftValueType), unsure(continuation), unsure(leftIsCell));

We can remove doubles from the provenType.  (provenType(neitherDoubleNorHeapBigIntEdge) &amp; ~SpecFullDouble)

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9767
&gt; +        m_out.branch(isNotString(leftValue, leftValueType), unsure(continuation), unsure(leftIsString));

We can remove non-cell and HeapBigInt from provenType.  (provenType(neitherDoubleNorHeapBigIntEdge) &amp; SpecCell &amp; ~SpecHeapBigInt).

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9770
&gt; +        m_out.branch(isNotCell(rightValue, rightValueType), unsure(continuation), unsure(rightIsCell));

We can remove doubles from the provenType. (provenType(notDoubleEdge) &amp; ~SpecFullDouble).

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9773
&gt; +        m_out.branch(isNotString(rightValue, rightValueType), unsure(continuation), unsure(rightIsString));

We can remove non-cells from the provenType. (provenType(notDoubleEdge) &amp; SpecCell).

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:18876
&gt; +        m_out.branch(isCell(value, provenType(edge)), unsure(isCellBlock), unsure(continuation));

We can remove Int32 (but we can also remove Numbers) from the provenType.  (provenType(edge) &amp; ~SpecFullNumber)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791682</commentid>
    <comment_count>8</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-09-08 16:33:16 -0700</bug_when>
    <thetext>Thanks for the review and the suggestions. I&apos;ve answered them inline below.

(In reply to Yusuke Suzuki from comment #7)
&gt; Comment on attachment 435649 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435649&amp;action=review
&gt; 
&gt; r=me with comments.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7470
&gt; &gt; +void SpeculativeJIT::emitBitwiseJSValueEquality(JSValueOperand&amp; left, JSValueOperand&amp; right, GPRTemporary&amp; result)
&gt; 
&gt; Let&apos;s just take `JSValueRegs left` and `JSValueRegs right` instead of
&gt; `JSValueOperand&amp;`. And let&apos;s just take GPRReg for result.

done.
 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7482
&gt; &gt; +void SpeculativeJIT::emitBranchOnBitwiseJSValueEquality(JSValueOperand&amp; left, JSValueOperand&amp; right, BasicBlock* taken, BasicBlock* notTaken)
&gt; 
&gt; Ditto.

done.
 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7523
&gt; &gt; +    emitBitwiseJSValueEquality(left, right, result);
&gt; 
&gt; Let&apos;s just pass leftRegs, rightRegs, and resultGPR.

done.

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7543
&gt; &gt; +    emitBranchOnBitwiseJSValueEquality(left, right, taken, notTaken);
&gt; 
&gt; Lef&apos;s just pass leftRegs and rightRegs.

done.
 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:356
&gt; &gt; +    GPRReg leftGPR = leftRegs.payloadGPR();
&gt; &gt; +    GPRReg rightGPR = rightRegs.payloadGPR();
&gt; 
&gt; I think using `leftRegs.payloadGPR()` / `rightRegs.payloadGPR()` is easier
&gt; to read since we do not need to remember leftGPR is a part of leftRegs.

I am not convinced: leftGPR corresponding to leftRegs and rightGPR corresponding to rightRegs is fairly easy to remember, and we would have to repeat the &quot;.payloadGPR()&quot; everywhere.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9749
&gt; &gt; +        m_out.branch(isCell(leftValue, provenType(neitherDoubleNorHeapBigIntEdge)), unsure(leftIsCellEqualCase), unsure(returnTrueBlock));
&gt; 
&gt; We can remove Numbers from provenType.
&gt; (provenType(neitherDoubleNorHeapBigIntEdge) &amp; ~SpecFullNumber)

I&apos;ve removed Int32 from the type (since it is what we just checked for). I don&apos;t see how we can be confident that Double won&apos;t be there.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9763
&gt; &gt; +        m_out.branch(isNotCell(leftValue, leftValueType), unsure(continuation), unsure(leftIsCell));
&gt; 
&gt; We can remove doubles from the provenType. 
&gt; (provenType(neitherDoubleNorHeapBigIntEdge) &amp; ~SpecFullDouble)

done.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9767
&gt; &gt; +        m_out.branch(isNotString(leftValue, leftValueType), unsure(continuation), unsure(leftIsString));
&gt; 
&gt; We can remove non-cell and HeapBigInt from provenType. 
&gt; (provenType(neitherDoubleNorHeapBigIntEdge) &amp; SpecCell &amp; ~SpecHeapBigInt).

done.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9770
&gt; &gt; +        m_out.branch(isNotCell(rightValue, rightValueType), unsure(continuation), unsure(rightIsCell));
&gt; 
&gt; We can remove doubles from the provenType. (provenType(notDoubleEdge) &amp;
&gt; ~SpecFullDouble).

done.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9773
&gt; &gt; +        m_out.branch(isNotString(rightValue, rightValueType), unsure(continuation), unsure(rightIsString));
&gt; 
&gt; We can remove non-cells from the provenType. (provenType(notDoubleEdge) &amp;
&gt; SpecCell).

done. I have also removed doubles.

&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:18876
&gt; &gt; +        m_out.branch(isCell(value, provenType(edge)), unsure(isCellBlock), unsure(continuation));
&gt; 
&gt; We can remove Int32 (but we can also remove Numbers) from the provenType. 
&gt; (provenType(edge) &amp; ~SpecFullNumber)

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791685</commentid>
    <comment_count>9</comment_count>
      <attachid>437677</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-09-08 16:35:40 -0700</bug_when>
    <thetext>Created attachment 437677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791714</commentid>
    <comment_count>10</comment_count>
      <attachid>435649</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-08 17:40:05 -0700</bug_when>
    <thetext>Comment on attachment 435649
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9749
&gt;&gt;&gt; +        m_out.branch(isCell(leftValue, provenType(neitherDoubleNorHeapBigIntEdge)), unsure(leftIsCellEqualCase), unsure(returnTrueBlock));
&gt;&gt; 
&gt;&gt; We can remove Numbers from provenType. (provenType(neitherDoubleNorHeapBigIntEdge) &amp; ~SpecFullNumber)
&gt; 
&gt; I&apos;ve removed Int32 from the type (since it is what we just checked for). I don&apos;t see how we can be confident that Double won&apos;t be there.

Because we already performed the typecheck onto the leftValue above, we will not get numbers here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791724</commentid>
    <comment_count>11</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-09-08 18:37:16 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #10)
&gt; Comment on attachment 435649 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435649&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9749
&gt; &gt;&gt;&gt; +        m_out.branch(isCell(leftValue, provenType(neitherDoubleNorHeapBigIntEdge)), unsure(leftIsCellEqualCase), unsure(returnTrueBlock));
&gt; &gt;&gt; 
&gt; &gt;&gt; We can remove Numbers from provenType. (provenType(neitherDoubleNorHeapBigIntEdge) &amp; ~SpecFullNumber)
&gt; &gt; 
&gt; &gt; I&apos;ve removed Int32 from the type (since it is what we just checked for). I don&apos;t see how we can be confident that Double won&apos;t be there.
&gt; 
&gt; Because we already performed the typecheck onto the leftValue above, we will
&gt; not get numbers here.

You&apos;re right, not sure how I missed it. Fixing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791725</commentid>
    <comment_count>12</comment_count>
      <attachid>437695</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-09-08 18:37:43 -0700</bug_when>
    <thetext>Created attachment 437695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791765</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-08 22:28:19 -0700</bug_when>
    <thetext>ChangeLog entry in Source/JavaScriptCore/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791793</commentid>
    <comment_count>14</comment_count>
      <attachid>437716</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-09 00:19:07 -0700</bug_when>
    <thetext>Created attachment 437716
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791803</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-09 01:10:27 -0700</bug_when>
    <thetext>Committed r282200 (241487@main): &lt;https://commits.webkit.org/241487@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437716.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430805</attachid>
            <date>2021-06-07 21:08:09 -0700</date>
            <delta_ts>2021-06-16 13:43:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226755</filename>
            <type>text/plain</type>
            <size>29816</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDEyMGY5MmVjYzVlNi4uYmFlMzE1YWUzMWQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAyMS0wNi0wNyAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGNv
bXBhcmVTdHJpY3RFcSB3aGVuIG5laXRoZXIgc2lkZSBpcyBhIGRvdWJsZSBhbmQgYXQgbGVhc3Qg
b25lIGlzIG5vdCBhIEJpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2NzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBpcyBhIHZlcnkgc2ltaWxhciBwYXRjaCB0byBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2LgorICAgICAgICBUaGUgZGlmZmVyZW5j
ZSBpcyB0aGF0IGhlcmUgd2UgYWxsb3cgU3RyaW5ncyBvbiBib3RoIHNpZGUgb2YgdGhlIGNvbXBh
cmlzb24sIHNvIHdlIG11c3QgYWRkIGNvZGUgdG8gaGFuZGxlIGVxdWFsaXR5IGFtb25nIHN0cmlu
Z3MuCisKKyAgICAgICAgTGlrZSBmb3IgdGhhdCBvdGhlciBwYXRjaCwgdGhlIG9wdGltaXphdGlv
biBpcyBkaXNhYmxlZCBmb3IgQmlnSW50MzIuCisgICAgICAgIEVuYWJsaW5nIGl0IGluIHRoYXQg
Y2FzZSB3b3VsZCBlaXRoZXIgbmVlZCBtb2RpZnlpbmcgdGhlIHNwZWN1bGF0aW9uIChmcm9tIGJh
bm5pbmcgSGVhcEJpZ0ludCB0byBiYW5uaW5nIGFsbCBCaWdJbnRzKSwgb3IgZW5zdXJpbmcgdGhh
dCB3ZSBjYW4gbmV2ZXIgaGF2ZSBhIEhlYXBCaWdJbnQgc28gc21hbGwgaXQgY29tcGFyZXMgZXF1
YWwgdG8gYSBCaWdJbnQzMi4KKworICAgICAgICBJIG9ubHkgaW1wbGVtZW50ZWQgdGhpcyBvcHRp
bWl6YXRpb24gb24gNjQtYml0czogaXQgaXMganVzdCBwYWluZnVsIHRvIHdyaXRlIGNvZGUgdGhh
dCBoYW5kbGVzIHJlZ2lzdGVycyBhdCBzdWNoIGEgbG93LWxldmVsIHdpdGhvdXQgYSAzMi1iaXQg
bWFjaGluZSB0byB0ZXN0IHRoaW5ncyBsb2NhbGx5LgorICAgICAgICBJZiBhbnlvbmUgd2FudHMg
dG8gbWFrZSB0aGlzIG9wdGltaXphdGlvbiB3b3JrIG9uIDMyLWJpdCwgSSBkb24ndCBmb3JldGVs
bCBhbnkgbWFqb3IgZGlmZmljdWx0eS4KKworICAgICAgICBGaW5hbGx5LCBsaWtlIHF1aXRlIGEg
ZmV3IG90aGVyIHVzZUtpbmRzIGFscmVhZHksIHRoaXMgY2FzZSBkb2VzIG5vdCBtYWtlIHRoZSBD
b21wYXJlU3RyaWN0RXEgbWVyZ2Ugd2l0aCBhbiBhZGphY2VudCBCcmFuY2guCisgICAgICAgIFRo
ZSByZWFzb24gaXMgc2ltcGx5IHRoYXQgdGhpcyBwYXRjaCByZWxpZXMgb24gY29tcGlsZVN0cmlu
Z0VxdWFsaXR5LCB3aGljaCBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCB0aGF0IGZlYXR1cmUu
CisgICAgICAgIEkgaW50ZW5kIHRvIGZpeCB0aGlzIChmb3IgYWxsIHVzZUtpbmRzIGF0IG9uY2Up
IGluIGEgc2VwYXJhdGUgcGF0Y2guCisKKyAgICAgICAgRmluYWxseSwgSSd2ZSBhbHNvIGZpeGVk
IGEgc21hbGwgYnVnIEkgbm90aWNlZCB0aGF0IEkgaW50cm9kdWNlZCBpbiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2OiBJIHdhcyB1c2luZyB0aGUgd3Jvbmcg
U3BlY3VsYXRlZFR5cGUgaW4gc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmcuCisKKyAgICAgICAgRWZmZWN0IG9uIG1pY3JvYmVuY2htYXJrczoKKyAgICAgICAgcG9s
eS1zdHJpY3RlcS1ub3QtZG91YmxlICAgICAgICAgICAgICAgICAgNDYuODAwMCstMC40MTEwICAg
ICBeICAgICAyMy41ODcyKy0wLjMwNjEgICAgICAgIF4gZGVmaW5pdGVseSAxLjk4NDF4IGZhc3Rl
cgorICAgICAgICBwb2x5LXN0cmljdGVxLW5vdC1kb3VibGUtbm9yLXN0cmluZyAgICAgICAxNi42
ODgwKy0wLjIzMTcgICAgICAgICAgIDE2LjM2MjcrLTAuMzcyOSAgICAgICAgICBtaWdodCBiZSAx
LjAxOTl4IGZhc3RlcgorICAgICAgICBwb2x5LXN0cmljdGVxICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0OS4yMTc1Ky0wLjYwNDcgICAgICAgICAgIDQ4Ljk1MzIrLTAuNjc1OAorCisgICAg
ICAgIEkgbG9va2VkIGF0IGhvdyBtYW55IGNhc2VzIG9mIFVudHlwZWQvVW50eXBlZCBjb21wYXJl
U3RyaWN0RXEgaGF2ZSBiZWVuIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggYW5kIHR3byBvdGhlciByZWNl
bnQgcGF0Y2hlcy4KKyAgICAgICAgT24gSmV0U3RyZWFtMjoKKyAgICAgICAgLSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIxOiA3MzEgaW5zdGFuY2VzCisgICAg
ICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjY3NjogOTQ0
IGluc3RhbmNlcworICAgICAgICAtIFRoaXMgcGF0Y2g6IG9ubHkgMjYgaW5zdGFuY2VzCisgICAg
ICAgIFRoaXMgbGVhdmVzIDIwIGluc3RhbmNlcyBvZiBVbnR5cGVkL1VudHlwZWQuCisKKyAgICAg
ICAgT24gU3BlZWRvbWV0ZXIyLjA6CisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjYyMTogMTU4NyBpbnN0YW5jZXMKKyAgICAgICAgLSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2OiAyNzg0IGluc3RhbmNlcwor
ICAgICAgICAtIFRoaXMgcGF0Y2g6IDg5MSBpbnN0YW5jZXMKKyAgICAgICAgVGhpcyBsZWF2ZXMg
NzUgaW5zdGFuY2VzIG9mIFVudHlwZWQvVW50eXBlZC4KKworICAgICAgICAqIGJ5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnRTcGVjdWxhdGlvbik6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBDb21wYXJlU3RyaWN0RXFBbmRTYW1lVmFs
dWUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
c2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQpOgorICAgICAgICAqIGRm
Zy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVk
Z2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eSk6CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQu
Y3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHVXNl
S2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5cGVGaWx0ZXJGb3IpOgorICAgICAgICAoSlND
OjpERkc6OmNoZWNrTWF5Q3Jhc2hJZklucHV0SXNFbXB0eSk6CisgICAgICAgICogZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorCiAyMDIxLTA2LTA3ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNob3J0IGNpcmN1aXQgcmVhZCBt
b2RpZnkgd3JpdGUgbm9kZXMgZW1pdCBieXRlIGNvZGUgdGhhdCB1c2VzIHRoZSB3cm9uZyBsb2Nh
bHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgK
aW5kZXggOTY5Nzc4MzU1NzQxLi4yN2E3MDNjY2Q3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC00NDksNiArNDQ5LDExIEBAIGlu
bGluZSBib29sIGlzTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB0eXBlCiAgICAgcmV0dXJuICEodHlwZSAmIChTcGVjRnVsbERvdWJs
ZSB8IFNwZWNIZWFwQmlnSW50IHwgU3BlY1N0cmluZykpOwogfQogCitpbmxpbmUgYm9vbCBpc05l
aXRoZXJEb3VibGVOb3JIZWFwQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdHlwZSkK
K3sKKyAgICByZXR1cm4gISh0eXBlICYgKFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBCaWdJbnQp
KTsKK30KKwogaW5saW5lIGJvb2wgaXNPdGhlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlKQogewogICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjT3RoZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggYWRjYjcyOWRkMGQzLi5jY2IzOTBjMzRjNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTQ5Nyw2ICs0OTcsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgICAgICAgICB8fCBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKQogICAgICAgICAgICAgfHwgbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKE1pc2NVc2UsIFVudHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChVbnR5cGVkVXNlLCBNaXNjVXNlKQogICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKFN0cmluZ0lkZW50VXNlLCBOb3RTdHJpbmdWYXJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNl
S2luZChOb3RTdHJpbmdWYXJVc2UsIFN0cmluZ0lkZW50VXNlKQorICAgICAgICAgICAgfHwgbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dFVzZSwgTm90RG91YmxlVXNlKQogICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpIHx8
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChOb3REb3VibGVVc2UsIE5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nVXNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAppbmRleCBiNmRhYmI0Y2FmZGMuLjY1MmI5N2ZmMjkzZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC00NDI0LDcgKzQ0MjQsMjMgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RF
cSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSNlbmRpZgorI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnQoKQorICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCktPnNo
b3VsZFNwZWN1bGF0ZU5vdERvdWJsZSgpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPE5vdERvdWJsZVVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0
T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU5v
dERvdWJsZSgpCisgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRl
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgZml4RWRnZTxOb3RE
b3VibGVVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8TmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUt
PnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorI2VuZGlmIC8vICFVU0Uo
QklHSU5UMzIpCiAgICAgfQogCiAgICAgdm9pZCBmaXh1cENoZWNrc0luQmxvY2soQmFzaWNCbG9j
ayogYmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDM1Y2Q1NGM4YTIx
ZS4uY2Y5N2JjZTcwMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMjgw
Nyw2ICsyODA3LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBpc05laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAg
ICB9CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc05laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50U3Bl
Y3VsYXRpb24ocHJlZGljdGlvbigpKTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVj
dWxhdGVVbnR5cGVkRm9yQXJpdGhtZXRpYygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBmNmM5MWUyM2JmMDUuLjkxNTNjN2NlNjYy
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAg
LTk0LDYgKzk0LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIERvdWJsZVJlcEFueUludFVzZToK
ICAgICAgICAgY2FzZSBOb3REb3VibGVVc2U6CiAgICAgICAgIGNhc2UgTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CisgICAgICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnRVc2U6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBLbm93bkludDMyVXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAppbmRleCA3ZTg3MzUzYzJmMmUuLmMwZWQwZmJkZjBmOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTY5
NjcsNyArNjk2NywyMSBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9k
ZSogbm9kZSkKICAgICAgICAgY29tcGlsZU5vdERvdWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkobm9kZSwgbm90RG91YmxlQ2hpbGQsIG5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotI2VuZGlmCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlLCBOb3REb3VibGVVc2UpKSB7
CisgICAgICAgIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCA9IG5vZGUtPmNo
aWxkMSgpOworICAgICAgICBFZGdlIG5vdERvdWJsZUNoaWxkID0gbm9kZS0+Y2hpbGQyKCk7Cisg
ICAgICAgIGNvbXBpbGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91YmxlU3RyaWN0
RXF1YWxpdHkobm9kZSwgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwgbm90RG91Ymxl
Q2hpbGQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZSkp
IHsKKyAgICAgICAgRWRnZSBub3REb3VibGVDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOworICAgICAg
ICBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsK
KyAgICAgICAgY29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJp
Y3RFcXVhbGl0eShub2RlLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCBub3REb3Vi
bGVDaGlsZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKKyNlbmRpZiAvLyAhVVNFKEJJR0lOVDMyKQogCiAgICAgaWYgKG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAgICAgICBjb21waWxlSGVhcEJpZ0ludEVx
dWFsaXR5KG5vZGUpOwpAQCAtNzE5OCw2ICs3MjEyLDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQZWVwSG9sZVN5bWJvbEVxdWFsaXR5KE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5v
ZGUpCiAgICAgfQogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Qml0d2lzZUpTVmFsdWVF
cXVhbGl0eShKU1ZhbHVlT3BlcmFuZCYgbGVmdCwgSlNWYWx1ZU9wZXJhbmQmIHJpZ2h0LCBHUFJU
ZW1wb3JhcnkmIHJlc3VsdCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIG1faml0LmNvbXBh
cmU2NChKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQuZ3ByKCksIHJpZ2h0LmdwcigpLCByZXN1bHQu
Z3ByKCkpOworI2Vsc2UKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0Lmdw
cigpKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbCA9IG1faml0LmJyYW5jaDMyKEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC50YWdHUFIoKSwgcmlnaHQudGFnR1BSKCkpOworICAg
IG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCBy
aWdodC5wYXlsb2FkR1BSKCksIHJlc3VsdC5ncHIoKSk7CisgICAgbm90RXF1YWwubGluaygmbV9q
aXQpOworI2VuZGlmCit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2hPbkJpdHdp
c2VKU1ZhbHVlRXF1YWxpdHkoSlNWYWx1ZU9wZXJhbmQmIGxlZnQsIEpTVmFsdWVPcGVyYW5kJiBy
aWdodCwgQmFzaWNCbG9jayogdGFrZW4sIEJhc2ljQmxvY2sqIG5vdFRha2VuKQoreworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGJy
YW5jaDY0KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC5ncHIoKSwgcmlnaHQuZ3ByKCksIG5v
dFRha2VuKTsKKyAgICAgICAganVtcCh0YWtlbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYnJh
bmNoNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgdGFrZW4p
OworICAgICAgICBqdW1wKG5vdFRha2VuKTsKKyAgICB9CisjZWxzZQorICAgIGJyYW5jaDMyKEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC50YWdHUFIoKSwgcmlnaHQudGFnR1BSKCksIG5vdFRh
a2VuKTsKKyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAgICAgYnJhbmNoMzIo
SklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LnBheWxvYWRHUFIoKSwgcmlnaHQucGF5bG9hZEdQ
UigpLCBub3RUYWtlbik7CisgICAgICAgIGp1bXAodGFrZW4pOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5wYXlsb2FkR1BSKCksIHJpZ2h0
LnBheWxvYWRHUFIoKSwgdGFrZW4pOworICAgICAgICBqdW1wKG5vdFRha2VuKTsKKyAgICB9Cisj
ZW5kaWYKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5vdERvdWJsZU5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkoTm9kZSogbm9kZSwgRWRn
ZSBub3REb3VibGVDaGlsZCwgRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmlu
Z0NoaWxkKQogewogICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbm90RG91YmxlQ2hpbGQs
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CkBAIC03MjE3LDE0ICs3MjY1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5vdERvdWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
Tm9yU3RyaW5nU3RyaWN0RXEKICAgICBzcGVjdWxhdGVOb3REb3VibGUobm90RG91YmxlQ2hpbGQs
IGxlZnRSZWdzLCB0ZW1wR1BSKTsKICAgICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJp
Z0ludE5vclN0cmluZyhuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkLCBy
aWdodFJlZ3MsIHRlbXBHUFIpOwogCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBtX2ppdC5jb21w
YXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgcmVzdWx0
LmdwcigpKTsKLSNlbHNlCi0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5n
cHIoKSk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgbm90RXF1YWwgPSBtX2ppdC5icmFuY2gzMihK
SVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnQudGFnR1BSKCksIHJpZ2h0LnRhZ0dQUigpKTsKLSAg
ICBtX2ppdC5jb21wYXJlMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0LnBheWxvYWRHUFIoKSwg
cmlnaHQucGF5bG9hZEdQUigpLCByZXN1bHQuZ3ByKCkpOwotICAgIG5vdEVxdWFsLmxpbmsoJm1f
aml0KTsKLSNlbmRpZgorICAgIGVtaXRCaXR3aXNlSlNWYWx1ZUVxdWFsaXR5KGxlZnQsIHJpZ2h0
LCByZXN1bHQpOwogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
IH0KIApAQCAtNzI0NCwyNCArNzI4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
ZWVwSG9sZU5vdERvdWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nCiAgICAg
QmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2Nr
OwogICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT5u
b3RUYWtlbi5ibG9jazsKIAotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaWYgKHRha2VuID09IG5l
eHRCbG9jaygpKSB7Ci0gICAgICAgIGJyYW5jaDY0KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVm
dC5ncHIoKSwgcmlnaHQuZ3ByKCksIG5vdFRha2VuKTsKLSAgICAgICAganVtcCh0YWtlbik7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgYnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0Lmdw
cigpLCByaWdodC5ncHIoKSwgdGFrZW4pOwotICAgICAgICBqdW1wKG5vdFRha2VuKTsKLSAgICB9
Ci0jZWxzZQotICAgIGJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC50YWdHUFIo
KSwgcmlnaHQudGFnR1BSKCksIG5vdFRha2VuKTsKLSAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2Nr
KCkpIHsKLSAgICAgICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LnBheWxv
YWRHUFIoKSwgcmlnaHQucGF5bG9hZEdQUigpLCBub3RUYWtlbik7Ci0gICAgICAgIGp1bXAodGFr
ZW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwg
bGVmdC5wYXlsb2FkR1BSKCksIHJpZ2h0LnBheWxvYWRHUFIoKSwgdGFrZW4pOwotICAgICAgICBq
dW1wKG5vdFRha2VuKTsKLSAgICB9Ci0jZW5kaWYKKyAgICBlbWl0QnJhbmNoT25CaXR3aXNlSlNW
YWx1ZUVxdWFsaXR5KGxlZnQsIHJpZ2h0LCB0YWtlbiwgbm90VGFrZW4pOwogfQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nRXF1YWxpdHkoCkBAIC0xMTU2Myw5ICsxMTU4Nyw0
NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3REb3VibGUoRWRnZSBlZGdlKQog
ICAgIHNwZWN1bGF0ZU5vdERvdWJsZShlZGdlLCByZWdzLCB0ZW1wR1BSKTsKIH0KIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSBl
ZGdlLCBKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKK3sKKyAgICBpZiAoIW5lZWRz
VHlwZUNoZWNrKGVkZ2UsIH4oU3BlY0Z1bGxEb3VibGUgfCBTcGVjSGVhcEJpZ0ludCkpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZTsKKworICAgIGJv
b2wgbWF5QmVJbnQzMiA9IG5lZWRzVHlwZUNoZWNrKGVkZ2UsIH5TcGVjSW50MzJPbmx5KTsKKyAg
ICBpZiAobWF5QmVJbnQzMikKKyAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZJbnQz
MihyZWdzKSk7CisKKyAgICBERkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0Z1bGxEb3Vi
bGUsIG1faml0LmJyYW5jaElmTnVtYmVyKHJlZ3MsIHRlbXBHUFIpKTsKKworICAgIGJvb2wgbWF5
QmVOb3RDZWxsID0gbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwpOworICAgIGlmIChtYXlC
ZU5vdENlbGwpCisgICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChyZWdz
KSk7CisKKyAgICBERkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0hlYXBCaWdJbnQsIG1f
aml0LmJyYW5jaElmSGVhcEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkpOworCisgICAgaWYgKG1h
eUJlSW50MzIgfHwgbWF5QmVOb3RDZWxsKQorICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKK30K
Kwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnQoRWRnZSBlZGdlKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgfihTcGVjRnVs
bERvdWJsZSB8IFNwZWNIZWFwQmlnSW50KSkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTVmFs
dWVPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
KyAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyByZWdzID0gb3Bl
cmFuZC5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKwor
ICAgIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KGVkZ2UsIHJlZ3MsIHRlbXBH
UFIpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludE5vclN0cmluZyhFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0
ZW1wR1BSKQogewotICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgfihTcGVjRnVsbERvdWJs
ZSB8IFNwZWNTdHJpbmcpKSkKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIH4oU3BlY0Z1
bGxEb3VibGUgfCBTcGVjSGVhcEJpZ0ludCB8IFNwZWNTdHJpbmcpKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRvbmU7CkBAIC0xMTU3NiwyMCArMTE2
MzYsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmcoRWRnZSBlZGdlLCBKU1YKIAogICAgIERGR19UWVBFX0NIRUNLKHJl
Z3MsIGVkZ2UsIH5TcGVjRnVsbERvdWJsZSwgbV9qaXQuYnJhbmNoSWZOdW1iZXIocmVncywgdGVt
cEdQUikpOwogCi0gICAgYm9vbCBtYXlOb3RCZUNlbGwgPSBuZWVkc1R5cGVDaGVjayhlZGdlLCBT
cGVjQ2VsbCk7Ci0gICAgaWYgKG1heU5vdEJlQ2VsbCkKKyAgICBib29sIG1heUJlTm90Q2VsbCA9
IG5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNDZWxsKTsKKyAgICBpZiAobWF5QmVOb3RDZWxsKQog
ICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwocmVncykpOwogCiAgICAg
REZHX1RZUEVfQ0hFQ0socmVncywgZWRnZSwgflNwZWNTdHJpbmcsIG1faml0LmJyYW5jaElmU3Ry
aW5nKHJlZ3MucGF5bG9hZEdQUigpKSk7CiAgICAgREZHX1RZUEVfQ0hFQ0socmVncywgZWRnZSwg
flNwZWNIZWFwQmlnSW50LCBtX2ppdC5icmFuY2hJZkhlYXBCaWdJbnQocmVncy5wYXlsb2FkR1BS
KCkpKTsKIAotICAgIGlmIChtYXlCZUludDMyIHx8IG1heU5vdEJlQ2VsbCkKKyAgICBpZiAobWF5
QmVJbnQzMiB8fCBtYXlCZU5vdENlbGwpCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogfQog
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dE5vclN0cmluZyhFZGdlIGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCB+
KFNwZWNGdWxsRG91YmxlIHwgU3BlY1N0cmluZykpKQorICAgIGlmICghbmVlZHNUeXBlQ2hlY2so
ZWRnZSwgfihTcGVjRnVsbERvdWJsZSB8IFNwZWNIZWFwQmlnSW50IHwgU3BlY1N0cmluZykpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2Us
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CkBAIC0xMTc4NSw2ICsxMTg0NSw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWRnZSBlZGdlKQogICAgIGNhc2UgTm90
RG91YmxlVXNlOgogICAgICAgICBzcGVjdWxhdGVOb3REb3VibGUoZWRnZSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2U6CisgICAgICAgIHNw
ZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KGVkZ2UpOworICAgICAgICBicmVhazsK
ICAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAg
ICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyhlZGdlKTsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKaW5kZXggZjhiMjk5OGQ0ZDE3Li45ZWEyOGUyMmQ5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTExODksNiArMTE4OSwxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlU3ltYm9sRXF1YWxpdHkoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUGVl
cEhvbGVTeW1ib2xFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICB2b2lkIGNvbXBpbGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFRvTm90
RG91YmxlU3RyaWN0RXF1YWxpdHkoTm9kZSosIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnQsIEVkZ2Ugbm90RG91YmxlKTsKKyNlbmRpZgorICAgIHZvaWQgZW1pdEJpdHdpc2VKU1ZhbHVl
RXF1YWxpdHkoSlNWYWx1ZU9wZXJhbmQmLCBKU1ZhbHVlT3BlcmFuZCYsIEdQUlRlbXBvcmFyeSYg
cmVzdWx0KTsKKyAgICB2b2lkIGVtaXRCcmFuY2hPbkJpdHdpc2VKU1ZhbHVlRXF1YWxpdHkoSlNW
YWx1ZU9wZXJhbmQmLCBKU1ZhbHVlT3BlcmFuZCYsIEJhc2ljQmxvY2sqIHRha2VuLCBCYXNpY0Js
b2NrKiBub3RUYWtlbik7CiAgICAgdm9pZCBjb21waWxlTm90RG91YmxlTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShOb2RlKiwgRWRnZSBub3REb3VibGVF
ZGdlLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nRWRnZSk7CiAgICAg
dm9pZCBjb21waWxlUGVlcEhvbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZ1N0cmljdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBFZGdlIG5vdERv
dWJsZUVkZ2UsIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdFZGdlKTsK
ICAgICB2b2lkIGNvbXBpbGVTeW1ib2xVbnR5cGVkRXF1YWxpdHkoTm9kZSosIEVkZ2Ugc3ltYm9s
RWRnZSwgRWRnZSB1bnR5cGVkRWRnZSk7CkBAIC0xNjc1LDYgKzE2ODAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzcGVjdWxhdGVOb3RDZWxsTm9yQmlnSW50KEVkZ2UpOwogICAgIHZvaWQgc3BlY3Vs
YXRlTm90RG91YmxlKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CiAgICAgdm9pZCBz
cGVjdWxhdGVOb3REb3VibGUoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludChFZGdlLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXApOworICAgIHZvaWQg
c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSk7CiAgICAgdm9pZCBzcGVj
dWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyhFZGdlLCBKU1ZhbHVlUmVn
cywgR1BSUmVnIHRlbXApOwogICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnROb3JTdHJpbmcoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVPdGhlcihFZGdlLCBKU1Zh
bHVlUmVncywgR1BSUmVnIHRlbXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNzcyZDQyNTBhYTczLi4zMGQ3NjJlMzY0ODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtMzE2LDYgKzMxNiw4MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCwgTgogICAgIH0K
IH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShOb2RlKiBub2RlLCBFZGdlIG5laXRoZXJEb3Vi
bGVOb3JIZWFwQmlnSW50Q2hpbGQsIEVkZ2Ugbm90RG91YmxlQ2hpbGQpCit7CisgICAgSlNWYWx1
ZU9wZXJhbmQgbGVmdCh0aGlzLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIG5v
dERvdWJsZUNoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisgICAgR1BSVGVtcG9y
YXJ5IHRlbXAodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IGxlZnRUZW1wKHRoaXMpOworICAgIEdQ
UlRlbXBvcmFyeSByaWdodFRlbXAodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IGxlZnRUZW1wMih0
aGlzLCBSZXVzZSwgbGVmdCk7CisgICAgR1BSVGVtcG9yYXJ5IHJpZ2h0VGVtcDIodGhpcywgUmV1
c2UsIHJpZ2h0KTsKKyAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3Mo
KTsKKyAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOworCisg
ICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0UmVncy5wYXlsb2FkR1BSKCk7CisgICAgR1BSUmVnIHJp
Z2h0R1BSID0gcmlnaHRSZWdzLnBheWxvYWRHUFIoKTsKKyAgICBHUFJSZWcgdGVtcEdQUiA9IHRl
bXAuZ3ByKCk7CisgICAgR1BSUmVnIGxlZnRUZW1wR1BSID0gbGVmdFRlbXAuZ3ByKCk7CisgICAg
R1BSUmVnIHJpZ2h0VGVtcEdQUiA9IHJpZ2h0VGVtcC5ncHIoKTsKKyAgICBHUFJSZWcgbGVmdFRl
bXAyR1BSID0gbGVmdFRlbXAyLmdwcigpOworICAgIEdQUlJlZyByaWdodFRlbXAyR1BSID0gcmln
aHRUZW1wMi5ncHIoKTsKKworICAgIC8vIFdlIHRyeSB0byBhdm9pZCByZXBlYXRlZCBhbmQgcmVk
dW5kYW50IGNoZWNrcyBoZXJlLCB3aGljaCBsZWFkcyB0byB0aGUgZm9sbG93aW5nIHBzZXVkby1j
b2RlOgorICAgIC8qCisgICAgIGlmIChsZWZ0ID09IHRydWUpIHsKKyAgICAgICBzcGVjdWxhdGVO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChsZWZ0KTsKKyAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgfQorICAgICBzcGVjdWxhdGVOb3REb3VibGUocmlnaHQpOworICAgICBzcGVjdWxhdGVOb3RE
b3VibGUobGVmdCk7CisgICAgIGlmIChsZWZ0IGlzIG5vdCBDZWxsKQorICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgQ2hlY2sgdGhhdCBsZWZ0IGlzIG5vdCBIZWFwQmlnSW50OworICAgICBpZiAo
bGVmdCBpcyBub3QgU3RyaW5nKQorICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgaWYgKHJpZ2h0
IGlzIG5vdCBDZWxsKQorICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgaWYgKHJpZ2h0IGlzIG5v
dCBTdHJpbmcpCisgICAgICAgcmV0dXJuIGZhbHNlOworICAgICByZXR1cm4gc3RyaW5nRXF1YWxp
dHkobGVmdCwgcmlnaHQpCisgICAgIH0KKyAgICAgKi8KKyAgICAvLyBNZXJjaWZ1bGx5IHdlIGNh
biBvZnRlbiBlbGltaW5hdGUgbXVjaCBvZiB0aGlzIHNvdXAgb2YgY29uZGl0aW9uYWxzIHdpdGgg
dGhlIGhlbHAgb2YgdGhlIGFic3RyYWN0IGludGVycHJldGVyLgorCisgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IHRydWVDYXNlOworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBmYWxzZUNhc2U7
CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbCA9IG1faml0LmJyYW5jaDY0KEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgIHNwZWN1bGF0ZU5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50KG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIGxl
ZnRSZWdzLCB0ZW1wR1BSKTsKKyAgICB0cnVlQ2FzZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAg
ICBub3RFcXVhbC5saW5rKCZtX2ppdCk7CisKKyAgICBzcGVjdWxhdGVOb3REb3VibGUobm90RG91
YmxlQ2hpbGQpOworICAgIHNwZWN1bGF0ZU5vdERvdWJsZShuZWl0aGVyRG91YmxlTm9ySGVhcEJp
Z0ludENoaWxkKTsKKworICAgIGJvb2wgbGVmdE1heUJlTm90Q2VsbCA9IG5lZWRzVHlwZUNoZWNr
KG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIFNwZWNDZWxsQ2hlY2spOworICAgIGlm
IChsZWZ0TWF5QmVOb3RDZWxsKQorICAgICAgICBmYWxzZUNhc2UuYXBwZW5kKG1faml0LmJyYW5j
aElmTm90Q2VsbChsZWZ0UmVncykpOworCisgICAgREZHX1RZUEVfQ0hFQ0sobGVmdFJlZ3MsIG5l
aXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIH5TcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJh
bmNoSWZIZWFwQmlnSW50KGxlZnRHUFIpKTsKKworICAgIGJvb2wgbGVmdE1heUJlTm90U3RyaW5n
S25vd2luZ0NlbGwgPSBuZWVkc1R5cGVDaGVjayhuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENo
aWxkLCAoflNwZWNTdHJpbmcpICYgU3BlY0NlbGxDaGVjayk7CisgICAgaWYgKGxlZnRNYXlCZU5v
dFN0cmluZ0tub3dpbmdDZWxsKQorICAgICAgICBmYWxzZUNhc2UuYXBwZW5kKG1faml0LmJyYW5j
aElmTm90U3RyaW5nKGxlZnRHUFIpKTsKKworICAgIGJvb2wgcmlnaHRNYXlCZU5vdENlbGwgPSBu
ZWVkc1R5cGVDaGVjayhub3REb3VibGVDaGlsZCwgU3BlY0NlbGxDaGVjayk7CisgICAgaWYgKHJp
Z2h0TWF5QmVOb3RDZWxsKQorICAgICAgICBmYWxzZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbChyaWdodFJlZ3MpKTsKKworICAgIGJvb2wgcmlnaHRNYXlCZU5vdFN0cmluZ0tub3dp
bmdDZWxsID0gbmVlZHNUeXBlQ2hlY2sobm90RG91YmxlQ2hpbGQsICh+U3BlY1N0cmluZykgJiBT
cGVjQ2VsbENoZWNrKTsKKyAgICBpZiAocmlnaHRNYXlCZU5vdFN0cmluZ0tub3dpbmdDZWxsKQor
ICAgICAgICBmYWxzZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmTm90U3RyaW5nKHJpZ2h0R1BS
KSk7CisKKyAgICBjb21waWxlU3RyaW5nRXF1YWxpdHkobm9kZSwgbGVmdEdQUiwgcmlnaHRHUFIs
IHRlbXBHUFIsIGxlZnRUZW1wR1BSLCByaWdodFRlbXBHUFIsIGxlZnRUZW1wMkdQUiwgcmlnaHRU
ZW1wMkdQUiwgdHJ1ZUNhc2UsIGZhbHNlQ2FzZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hO
b2RlLCBib29sIGludmVydCkKIHsKICAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUt
PmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmNwcAppbmRleCA0YjQzYzc1ZGZkNTMuLmYxNDU2MjQ4MGNiZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCkBAIC0xNzMsNiArMTczLDkgQEAgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZUtpbmQgdXNlS2luZCkKICAgICBjYXNl
IE5vdERvdWJsZVVzZToKICAgICAgICAgb3V0LnByaW50KCJOb3REb3VibGUiKTsKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2U6CisgICAgICAg
IG91dC5wcmludCgiTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQiKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAg
ICAgIG91dC5wcmludCgiTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmciKTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAppbmRleCA5
NGU1NzEwMDVlYjMuLjM2ZGRjOTBmOWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmgKQEAgLTgyLDYgKzgyLDcgQEAgZW51bSBVc2VLaW5kIHsKICAgICBOb3RDZWxsVXNl
LAogICAgIE5vdENlbGxOb3JCaWdJbnRVc2UsCiAgICAgTm90RG91YmxlVXNlLAorICAgIE5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlLAogICAgIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
Tm9yU3RyaW5nVXNlLAogICAgIEtub3duT3RoZXJVc2UsCiAgICAgT3RoZXJVc2UsCkBAIC0xOTEs
NiArMTkyLDggQEAgaW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3IoVXNlS2luZCB1
c2VLaW5kKQogICAgICAgICByZXR1cm4gflNwZWNDZWxsQ2hlY2sgJiB+U3BlY0JpZ0ludDsKICAg
ICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAgICAgcmV0dXJuIH5TcGVjRnVsbERvdWJsZTsKKyAg
ICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlOgorICAgICAgICByZXR1cm4gflNw
ZWNGdWxsRG91YmxlICYgflNwZWNIZWFwQmlnSW50OwogICAgIGNhc2UgTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAgICAgIHJldHVybiB+U3BlY0Z1bGxEb3VibGUg
JiB+U3BlY0hlYXBCaWdJbnQgJiB+U3BlY1N0cmluZzsKICAgICBjYXNlIEtub3duT3RoZXJVc2U6
CkBAIC0zMTIsNiArMzE1LDcgQEAgaW5saW5lIGJvb2wgY2hlY2tNYXlDcmFzaElmSW5wdXRJc0Vt
cHR5KFVzZUtpbmQga2luZCkKICAgICBjYXNlIE5vdENlbGxVc2U6CiAgICAgY2FzZSBOb3RDZWxs
Tm9yQmlnSW50VXNlOgogICAgIGNhc2UgTm90RG91YmxlVXNlOgorICAgIGNhc2UgTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnRVc2U6CiAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dE5vclN0cmluZ1VzZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNjU0Y2Vi
NDg0MThjLi41YjdhZTc1MmQ0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKQEAgLTUyOSw2ICs1MjksNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAgICAgY2FzZSBBbnlJbnRVc2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBBbnlJbnRVc2U6CiAgICAgICAgICAgICAgICAg
Y2FzZSBOb3REb3VibGVVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSBhcmUgT0su
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDQxMzNiODI4YjY0Yy4uYzhmYWRkNmFjMjMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC05
NTYwLDYgKzk1NjAsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludFVzZSwgTm90RG91YmxlVXNlKSkgeworICAgICAgICAgICAgY29tcGlsZU5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShtX25vZGUtPmNo
aWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0
aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVOZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91YmxlU3RyaWN0RXF1YWxpdHkobV9ub2RlLT5jaGls
ZDIoKSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KwogICAgICAgICAvLyBGSVhNRTogd2UgY2FuIGRvIHNvbWV0aGluZyBtdWNoIHNtYXJ0ZXIgaGVy
ZSwgc2VlIHRoZSBERkdTcGVjdWxhdGl2ZUpJVCBhcHByb2FjaCBpbiBlLmcuIFNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEKICAgICAgICAgREZHX0FTU0VSVCht
X2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpLCBtX25v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSwgbV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkpOwogICAg
ICAgICBnZW5lcmljSlNWYWx1ZUNvbXBhcmUoCkBAIC05NjA4LDYgKzk2MTcsNzUgQEAgcHJpdmF0
ZToKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIGZhc3RUcnVlLCBmYXN0RmFs
c2UsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludFRvTm90RG91YmxlU3RyaWN0RXF1YWxpdHkoRWRnZSBuZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludEVkZ2UsIEVkZ2Ugbm90RG91YmxlRWRnZSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UudXNlS2luZCgpID09IE5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50VXNlKTsKKyAgICAgICAgQVNTRVJUKG5vdERvdWJsZUVkZ2UudXNl
S2luZCgpID09IE5vdERvdWJsZVVzZSk7CisKKyAgICAgICAgTFZhbHVlIGxlZnRWYWx1ZSA9IGxv
d0pTVmFsdWUobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRFZGdlLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOworICAgICAgICBMVmFsdWUgcmlnaHRWYWx1ZSA9IGxvd0pTVmFsdWUobm90RG91
YmxlRWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgU3BlY3VsYXRlZFR5
cGUgbGVmdFZhbHVlVHlwZSA9IHByb3ZlblR5cGUobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRF
ZGdlKTsKKyAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHRWYWx1ZVR5cGUgPSBwcm92ZW5UeXBl
KG5vdERvdWJsZUVkZ2UpOworCisgICAgICAgIExCYXNpY0Jsb2NrIHRyaXZpYWxseUVxdWFsQ2Fz
ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIG5vdFRyaXZpYWxseUVx
dWFsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0Nl
bGwgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNTdHJpbmcg
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayByaWdodElzQ2VsbCA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNTdHJpbmcgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5u
ZXdCbG9jaygpOworCisgICAgICAgIC8vIFdlIHRyeSB0byBhdm9pZCByZXBlYXRlZCBhbmQgcmVk
dW5kYW50IGNoZWNrcyBoZXJlLCB3aGljaCBsZWFkcyB0byB0aGUgZm9sbG93aW5nIHBzZXVkby1j
b2RlOgorICAgICAgICAvKgorICAgICAgICAgaWYgKGxlZnQgPT0gdHJ1ZSkgeworICAgICAgICAg
ICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChsZWZ0KTsKKyAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICB9CisgICAgICAgICBzcGVjdWxhdGVOb3REb3VibGUocmln
aHQpOworICAgICAgICAgc3BlY3VsYXRlTm90RG91YmxlKGxlZnQpOworICAgICAgICAgaWYgKGxl
ZnQgaXMgbm90IENlbGwpCisgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIENoZWNr
IHRoYXQgbGVmdCBpcyBub3QgSGVhcEJpZ0ludDsKKyAgICAgICAgIGlmIChsZWZ0IGlzIG5vdCBT
dHJpbmcpCisgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIGlmIChyaWdodCBpcyBu
b3QgQ2VsbCkKKyAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgaWYgKHJpZ2h0IGlz
IG5vdCBTdHJpbmcpCisgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIHJldHVybiBz
dHJpbmdFcXVhbGl0eShsZWZ0LCByaWdodCkKKyAgICAgICAgIH0KKyAgICAgICAgICovCisgICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChsZWZ0VmFsdWUsIHJpZ2h0VmFsdWUpLCB1bnN1
cmUodHJpdmlhbGx5RXF1YWxDYXNlKSwgdW5zdXJlKG5vdFRyaXZpYWxseUVxdWFsQ2FzZSkpOwor
CisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8odHJpdmlhbGx5
RXF1YWxDYXNlLCBub3RUcml2aWFsbHlFcXVhbENhc2UpOworICAgICAgICBzcGVjdWxhdGVOZWl0
aGVyRG91YmxlTm9ySGVhcEJpZ0ludChuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UpOwor
ICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0VHJ1ZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29s
ZWFuVHJ1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBt
X291dC5hcHBlbmRUbyhub3RUcml2aWFsbHlFcXVhbENhc2UsIGxlZnRJc0NlbGwpOworICAgICAg
ICBzcGVjdWxhdGVOb3REb3VibGUobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRFZGdlKTsKKyAg
ICAgICAgc3BlY3VsYXRlTm90RG91YmxlKG5vdERvdWJsZUVkZ2UpOworICAgICAgICBWYWx1ZUZy
b21CbG9jayBmYXN0RmFsc2UgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKKyAg
ICAgICAgbV9vdXQuYnJhbmNoKGlzTm90Q2VsbChsZWZ0VmFsdWUsIGxlZnRWYWx1ZVR5cGUpLCB1
bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGxlZnRJc0NlbGwpKTsKKworICAgICAgICBtX291
dC5hcHBlbmRUbyhsZWZ0SXNDZWxsLCBsZWZ0SXNTdHJpbmcpOworICAgICAgICBGVExfVFlQRV9D
SEVDSyhqc1ZhbHVlVmFsdWUobGVmdFZhbHVlKSwgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRF
ZGdlLCB+U3BlY0hlYXBCaWdJbnQsIGlzSGVhcEJpZ0ludChsZWZ0VmFsdWUpKTsKKyAgICAgICAg
bV9vdXQuYnJhbmNoKGlzTm90U3RyaW5nKGxlZnRWYWx1ZSwgbGVmdFZhbHVlVHlwZSksIHVuc3Vy
ZShjb250aW51YXRpb24pLCB1bnN1cmUobGVmdElzU3RyaW5nKSk7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8obGVmdElzU3RyaW5nLCByaWdodElzQ2VsbCk7CisgICAgICAgIG1fb3V0LmJyYW5j
aChpc05vdENlbGwocmlnaHRWYWx1ZSwgcmlnaHRWYWx1ZVR5cGUpLCB1bnN1cmUoY29udGludWF0
aW9uKSwgdW5zdXJlKHJpZ2h0SXNDZWxsKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmln
aHRJc0NlbGwsIHJpZ2h0SXNTdHJpbmcpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RTdHJp
bmcocmlnaHRWYWx1ZSwgcmlnaHRWYWx1ZVR5cGUpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5z
dXJlKHJpZ2h0SXNTdHJpbmcpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzU3Ry
aW5nLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKHN0cmluZ3NFcXVhbChsZWZ0VmFsdWUsIHJpZ2h0VmFsdWUsIG5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50RWRnZSwgbm90RG91YmxlRWRnZSkpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBmYXN0VHJ1
ZSwgZmFzdEZhbHNlLCBzbG93UmVzdWx0KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ29t
cGFyZUVxUHRyKCkKICAgICB7CiAgICAgICAgIHNldEJvb2xlYW4oCkBAIC0xODQxMiw2ICsxODQ5
MCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTm90RG91YmxlVXNlOgogICAgICAgICAgICAg
c3BlY3VsYXRlTm90RG91YmxlKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAg
ICAgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoZWRnZSk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTE4NDc5LDYgKzE4NTYwLDMwIEBAIHByaXZhdGU6CiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgIH0KIAor
ICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSBlZGdlKQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUo
ZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgICAgICBMQmFzaWNCbG9jayBp
c05vdEludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxs
QmxvY2sgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHZh
bHVlLCBwcm92ZW5UeXBlKGVkZ2UpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShpc05v
dEludDMyKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhpc05vdEludDMyLCBpc0NlbGxCbG9jayk7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFs
dWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIH5TcGVjRnVsbERvdWJsZSwgaXNOdW1iZXIodmFsdWUpKTsK
KyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSksIHVu
c3VyZShpc0NlbGxCbG9jayksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAgICAgICBtX291
dC5hcHBlbmRUbyhpc0NlbGxCbG9jaywgY29udGludWF0aW9uKTsKKyAgICAgICAgRlRMX1RZUEVf
Q0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgflNwZWNIZWFwQmlnSW50LCBpc0hlYXBC
aWdJbnQodmFsdWUpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgIH0KKwogICAg
IHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoRWRnZSBl
ZGdlKQogICAgIHsKICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVk
Z2UpKQo=
</data>
<flag name="commit-queue"
          id="452406"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431593</attachid>
            <date>2021-06-16 13:43:13 -0700</date>
            <delta_ts>2021-08-16 16:05:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226755</filename>
            <type>text/plain</type>
            <size>30666</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDA2NmU1ZmNlNWQ0Ni4uN2QyNGVkMDcyN2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAyMS0wNi0xNSAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGNv
bXBhcmVTdHJpY3RFcSB3aGVuIG5laXRoZXIgc2lkZSBpcyBhIGRvdWJsZSBhbmQgYXQgbGVhc3Qg
b25lIGlzIG5vdCBhIEJpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2NzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBpcyBhIHZlcnkgc2ltaWxhciBwYXRjaCB0byBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2LgorICAgICAgICBUaGUgZGlmZmVyZW5j
ZSBpcyB0aGF0IGhlcmUgd2UgYWxsb3cgU3RyaW5ncyBvbiBib3RoIHNpZGUgb2YgdGhlIGNvbXBh
cmlzb24sIHNvIHdlIG11c3QgYWRkIGNvZGUgdG8gaGFuZGxlIGVxdWFsaXR5IGFtb25nIHN0cmlu
Z3MuCisKKyAgICAgICAgTGlrZSBmb3IgdGhhdCBvdGhlciBwYXRjaCwgdGhlIG9wdGltaXphdGlv
biBpcyBkaXNhYmxlZCBmb3IgQmlnSW50MzIuCisgICAgICAgIEVuYWJsaW5nIGl0IGluIHRoYXQg
Y2FzZSB3b3VsZCBlaXRoZXIgbmVlZCBtb2RpZnlpbmcgdGhlIHNwZWN1bGF0aW9uIChmcm9tIGJh
bm5pbmcgSGVhcEJpZ0ludCB0byBiYW5uaW5nIGFsbCBCaWdJbnRzKSwgb3IgZW5zdXJpbmcgdGhh
dCB3ZSBjYW4gbmV2ZXIgaGF2ZSBhIEhlYXBCaWdJbnQgc28gc21hbGwgaXQgY29tcGFyZXMgZXF1
YWwgdG8gYSBCaWdJbnQzMi4KKworICAgICAgICBJIG9ubHkgaW1wbGVtZW50ZWQgdGhpcyBvcHRp
bWl6YXRpb24gb24gNjQtYml0czogaXQgaXMganVzdCBwYWluZnVsIHRvIHdyaXRlIGNvZGUgdGhh
dCBoYW5kbGVzIHJlZ2lzdGVycyBhdCBzdWNoIGEgbG93LWxldmVsIHdpdGhvdXQgYSAzMi1iaXQg
bWFjaGluZSB0byB0ZXN0IHRoaW5ncyBsb2NhbGx5LgorICAgICAgICBJZiBhbnlvbmUgd2FudHMg
dG8gbWFrZSB0aGlzIG9wdGltaXphdGlvbiB3b3JrIG9uIDMyLWJpdCwgSSBkb24ndCBmb3JldGVs
bCBhbnkgbWFqb3IgZGlmZmljdWx0eS4KKworICAgICAgICBGaW5hbGx5LCBsaWtlIHF1aXRlIGEg
ZmV3IG90aGVyIHVzZUtpbmRzIGFscmVhZHksIHRoaXMgY2FzZSBkb2VzIG5vdCBtYWtlIHRoZSBD
b21wYXJlU3RyaWN0RXEgbWVyZ2Ugd2l0aCBhbiBhZGphY2VudCBCcmFuY2guCisgICAgICAgIFRo
ZSByZWFzb24gaXMgc2ltcGx5IHRoYXQgdGhpcyBwYXRjaCByZWxpZXMgb24gY29tcGlsZVN0cmlu
Z0VxdWFsaXR5LCB3aGljaCBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCB0aGF0IGZlYXR1cmUu
CisgICAgICAgIEkgaW50ZW5kIHRvIGZpeCB0aGlzIChmb3IgYWxsIHVzZUtpbmRzIGF0IG9uY2Up
IGluIGEgc2VwYXJhdGUgcGF0Y2guCisKKyAgICAgICAgRmluYWxseSwgSSd2ZSBhbHNvIGZpeGVk
IGEgc21hbGwgYnVnIEkgbm90aWNlZCB0aGF0IEkgaW50cm9kdWNlZCBpbiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2OiBJIHdhcyB1c2luZyB0aGUgd3Jvbmcg
U3BlY3VsYXRlZFR5cGUgaW4gc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmcuCisKKyAgICAgICAgRWZmZWN0IG9uIG1pY3JvYmVuY2htYXJrczoKKyAgICAgICAgcG9s
eS1zdHJpY3RlcS1ub3QtZG91YmxlICAgICAgICAgICAgICAgICAgNDYuODAwMCstMC40MTEwICAg
ICBeICAgICAyMy41ODcyKy0wLjMwNjEgICAgICAgIF4gZGVmaW5pdGVseSAxLjk4NDF4IGZhc3Rl
cgorICAgICAgICBwb2x5LXN0cmljdGVxLW5vdC1kb3VibGUtbm9yLXN0cmluZyAgICAgICAxNi42
ODgwKy0wLjIzMTcgICAgICAgICAgIDE2LjM2MjcrLTAuMzcyOSAgICAgICAgICBtaWdodCBiZSAx
LjAxOTl4IGZhc3RlcgorICAgICAgICBwb2x5LXN0cmljdGVxICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0OS4yMTc1Ky0wLjYwNDcgICAgICAgICAgIDQ4Ljk1MzIrLTAuNjc1OAorCisgICAg
ICAgIEkgbG9va2VkIGF0IGhvdyBtYW55IGNhc2VzIG9mIFVudHlwZWQvVW50eXBlZCBjb21wYXJl
U3RyaWN0RXEgaGF2ZSBiZWVuIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggYW5kIHR3byBvdGhlciByZWNl
bnQgcGF0Y2hlcy4KKyAgICAgICAgT24gSmV0U3RyZWFtMjoKKyAgICAgICAgLSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIxOiA3MzEgaW5zdGFuY2VzCisgICAg
ICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjY3NjogOTQ0
IGluc3RhbmNlcworICAgICAgICAtIFRoaXMgcGF0Y2g6IG9ubHkgMjYgaW5zdGFuY2VzCisgICAg
ICAgIFRoaXMgbGVhdmVzIDIwIGluc3RhbmNlcyBvZiBVbnR5cGVkL1VudHlwZWQuCisKKyAgICAg
ICAgT24gU3BlZWRvbWV0ZXIyLjA6CisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjYyMTogMTU4NyBpbnN0YW5jZXMKKyAgICAgICAgLSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2OiAyNzg0IGluc3RhbmNlcwor
ICAgICAgICAtIFRoaXMgcGF0Y2g6IDg5MSBpbnN0YW5jZXMKKyAgICAgICAgVGhpcyBsZWF2ZXMg
NzUgaW5zdGFuY2VzIG9mIFVudHlwZWQvVW50eXBlZC4KKworICAgICAgICAqIGJ5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnRTcGVjdWxhdGlvbik6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBDb21wYXJlU3RyaWN0RXFBbmRTYW1lVmFs
dWUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
c2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQpOgorICAgICAgICAqIGRm
Zy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVk
Z2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eSk6CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQu
Y3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHVXNl
S2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5cGVGaWx0ZXJGb3IpOgorICAgICAgICAoSlND
OjpERkc6OmNoZWNrTWF5Q3Jhc2hJZklucHV0SXNFbXB0eSk6CisgICAgICAgICogZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorCiAyMDIxLTA2LTE1ICBLZWl0aCBN
aWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNob3VsZG4ndCBkcmFp
biB0aGUgbWljcm8gdGFzayBxdWV1ZSB3aGVuIGNhbGxpbmcgb3V0IHRvIE9iakMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggOTY5Nzc4
MzU1NzQxLi4yN2E3MDNjY2Q3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC00NDksNiArNDQ5LDExIEBAIGlubGluZSBib29sIGlz
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTcGVjdWxhdGlvbihTcGVjdWxhdGVk
VHlwZSB0eXBlCiAgICAgcmV0dXJuICEodHlwZSAmIChTcGVjRnVsbERvdWJsZSB8IFNwZWNIZWFw
QmlnSW50IHwgU3BlY1N0cmluZykpOwogfQogCitpbmxpbmUgYm9vbCBpc05laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdHlwZSkKK3sKKyAgICByZXR1
cm4gISh0eXBlICYgKFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBCaWdJbnQpKTsKK30KKwogaW5s
aW5lIGJvb2wgaXNPdGhlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewogICAg
IHJldHVybiB2YWx1ZSA9PSBTcGVjT3RoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKaW5kZXggYWRjYjcyOWRkMGQzLi5jY2IzOTBjMzRjNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTQ5Nyw2ICs0OTcsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoT2JqZWN0VXNlKQogICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE1pc2NVc2UsIFVudHlwZWRVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNl
LCBNaXNjVXNlKQogICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lk
ZW50VXNlLCBOb3RTdHJpbmdWYXJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChOb3RTdHJp
bmdWYXJVc2UsIFN0cmluZ0lkZW50VXNlKQorICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2UpIHx8IG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZSwgTm90RG91
YmxlVXNlKQogICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERvdWJsZVVz
ZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpIHx8IG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChOb3REb3VibGVVc2UsIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3Ry
aW5nVXNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBiNmRh
YmI0Y2FmZGMuLjY1MmI5N2ZmMjkzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCkBAIC00NDI0LDcgKzQ0MjQsMjMgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSNlbmRpZgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnQoKQorICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0
ZU5vdERvdWJsZSgpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPE5vdERvdWJs
ZVVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0
RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU5vdERvdWJsZSgpCisg
ICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnQoKSkgeworICAgICAgICAgICAgZml4RWRnZTxOb3REb3VibGVVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8TmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVm
YXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorI2VuZGlmIC8vICFVU0UoQklHSU5UMzIpCiAg
ICAgfQogCiAgICAgdm9pZCBmaXh1cENoZWNrc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDY5MTYyYmNmZjRmZC4uZTQ2YWE5Yzc4
NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMjgwNyw2ICsyODA3LDEx
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBpc05laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CisKKyAgICBi
b29sIHNob3VsZFNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBpc05laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50U3BlY3VsYXRpb24ocHJl
ZGljdGlvbigpKTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVVbnR5cGVk
Rm9yQXJpdGhtZXRpYygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAppbmRleCBmNmM5MWUyM2JmMDUuLjkxNTNjN2NlNjYyYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTk0LDYgKzk0LDcg
QEAgcHVibGljOgogICAgICAgICBjYXNlIERvdWJsZVJlcEFueUludFVzZToKICAgICAgICAgY2Fz
ZSBOb3REb3VibGVVc2U6CiAgICAgICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRO
b3JTdHJpbmdVc2U6CisgICAgICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2U6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bklu
dDMyVXNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCBhNTQwZWIzNTQwZjcuLmIxNTZlY2YzN2MyMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcxNDUsNyArNzE0NSwy
MSBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZU5vdERvdWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5n
U3RyaWN0RXF1YWxpdHkobm9kZSwgbm90RG91YmxlQ2hpbGQsIG5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nQ2hpbGQpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotI2Vu
ZGlmCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5l
aXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlLCBOb3REb3VibGVVc2UpKSB7CisgICAgICAgIEVk
Z2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOworICAg
ICAgICBFZGdlIG5vdERvdWJsZUNoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CisgICAgICAgIGNvbXBp
bGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91YmxlU3RyaWN0RXF1YWxpdHkobm9k
ZSwgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwgbm90RG91YmxlQ2hpbGQpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
Tm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZSkpIHsKKyAgICAgICAg
RWRnZSBub3REb3VibGVDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBFZGdlIG5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKKyAgICAgICAgY29t
cGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShu
b2RlLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCBub3REb3VibGVDaGlsZCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKKyNl
bmRpZiAvLyAhVVNFKEJJR0lOVDMyKQogCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChI
ZWFwQmlnSW50VXNlKSkgewogICAgICAgICBjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5KG5vZGUp
OwpAQCAtNzM3Niw2ICs3MzkwLDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVw
SG9sZVN5bWJvbEVxdWFsaXR5KE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUpCiAgICAgfQog
fQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Qml0d2lzZUpTVmFsdWVFcXVhbGl0eShKU1Zh
bHVlT3BlcmFuZCYgbGVmdCwgSlNWYWx1ZU9wZXJhbmQmIHJpZ2h0LCBHUFJUZW1wb3JhcnkmIHJl
c3VsdCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21w
aWxlcjo6RXF1YWwsIGxlZnQuZ3ByKCksIHJpZ2h0LmdwcigpLCByZXN1bHQuZ3ByKCkpOworI2Vs
c2UKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKKyAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RFcXVhbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgbGVmdC50YWdHUFIoKSwgcmlnaHQudGFnR1BSKCkpOworICAgIG1faml0LmNvbXBh
cmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCByaWdodC5wYXlsb2Fk
R1BSKCksIHJlc3VsdC5ncHIoKSk7CisgICAgbm90RXF1YWwubGluaygmbV9qaXQpOworI2VuZGlm
Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2hPbkJpdHdpc2VKU1ZhbHVlRXF1
YWxpdHkoSlNWYWx1ZU9wZXJhbmQmIGxlZnQsIEpTVmFsdWVPcGVyYW5kJiByaWdodCwgQmFzaWNC
bG9jayogdGFrZW4sIEJhc2ljQmxvY2sqIG5vdFRha2VuKQoreworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGJyYW5jaDY0KEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgbGVmdC5ncHIoKSwgcmlnaHQuZ3ByKCksIG5vdFRha2VuKTsKKyAg
ICAgICAganVtcCh0YWtlbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYnJhbmNoNjQoSklUQ29t
cGlsZXI6OkVxdWFsLCBsZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgdGFrZW4pOworICAgICAgICBq
dW1wKG5vdFRha2VuKTsKKyAgICB9CisjZWxzZQorICAgIGJyYW5jaDMyKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgbGVmdC50YWdHUFIoKSwgcmlnaHQudGFnR1BSKCksIG5vdFRha2VuKTsKKyAgICBp
ZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAgICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLCBsZWZ0LnBheWxvYWRHUFIoKSwgcmlnaHQucGF5bG9hZEdQUigpLCBub3RUYWtl
bik7CisgICAgICAgIGp1bXAodGFrZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIGJyYW5jaDMy
KEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5wYXlsb2FkR1BSKCksIHJpZ2h0LnBheWxvYWRHUFIo
KSwgdGFrZW4pOworICAgICAgICBqdW1wKG5vdFRha2VuKTsKKyAgICB9CisjZW5kaWYKK30KKwog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5vdERvdWJsZU5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkoTm9kZSogbm9kZSwgRWRnZSBub3REb3VibGVD
aGlsZCwgRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkKQogewog
ICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbm90RG91YmxlQ2hpbGQsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CkBAIC03Mzk1LDE0ICs3NDQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5vdERvdWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3Ry
aWN0RXEKICAgICBzcGVjdWxhdGVOb3REb3VibGUobm90RG91YmxlQ2hpbGQsIGxlZnRSZWdzLCB0
ZW1wR1BSKTsKICAgICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmlu
ZyhuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkLCByaWdodFJlZ3MsIHRl
bXBHUFIpOwogCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29t
cGlsZXI6OkVxdWFsLCBsZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSNl
bHNlCi0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7Ci0gICAg
SklUQ29tcGlsZXI6Okp1bXAgbm90RXF1YWwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6
Tm90RXF1YWwsIGxlZnQudGFnR1BSKCksIHJpZ2h0LnRhZ0dQUigpKTsKLSAgICBtX2ppdC5jb21w
YXJlMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0LnBheWxvYWRHUFIoKSwgcmlnaHQucGF5bG9h
ZEdQUigpLCByZXN1bHQuZ3ByKCkpOwotICAgIG5vdEVxdWFsLmxpbmsoJm1faml0KTsKLSNlbmRp
ZgorICAgIGVtaXRCaXR3aXNlSlNWYWx1ZUVxdWFsaXR5KGxlZnQsIHJpZ2h0LCByZXN1bHQpOwog
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIApAQCAtNzQy
MiwyNCArNzQ2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU5vdERv
dWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nCiAgICAgQmFzaWNCbG9jayog
dGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOwogICAgIEJhc2lj
QmxvY2sqIG5vdFRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT5ub3RUYWtlbi5ibG9j
azsKIAotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7
Ci0gICAgICAgIGJyYW5jaDY0KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC5ncHIoKSwgcmln
aHQuZ3ByKCksIG5vdFRha2VuKTsKLSAgICAgICAganVtcCh0YWtlbik7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgYnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0LmdwcigpLCByaWdodC5n
cHIoKSwgdGFrZW4pOwotICAgICAgICBqdW1wKG5vdFRha2VuKTsKLSAgICB9Ci0jZWxzZQotICAg
IGJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC50YWdHUFIoKSwgcmlnaHQudGFn
R1BSKCksIG5vdFRha2VuKTsKLSAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKLSAgICAg
ICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LnBheWxvYWRHUFIoKSwgcmln
aHQucGF5bG9hZEdQUigpLCBub3RUYWtlbik7Ci0gICAgICAgIGp1bXAodGFrZW4pOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5wYXlsb2Fk
R1BSKCksIHJpZ2h0LnBheWxvYWRHUFIoKSwgdGFrZW4pOwotICAgICAgICBqdW1wKG5vdFRha2Vu
KTsKLSAgICB9Ci0jZW5kaWYKKyAgICBlbWl0QnJhbmNoT25CaXR3aXNlSlNWYWx1ZUVxdWFsaXR5
KGxlZnQsIHJpZ2h0LCB0YWtlbiwgbm90VGFrZW4pOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU3RyaW5nRXF1YWxpdHkoCkBAIC0xMTcwMCw2ICsxMTcyNCw0MiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3REb3VibGUoRWRnZSBlZGdlKQogICAgIHNwZWN1bGF0
ZU5vdERvdWJsZShlZGdlLCByZWdzLCB0ZW1wR1BSKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSBlZGdlLCBKU1ZhbHVl
UmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVk
Z2UsIH4oU3BlY0Z1bGxEb3VibGUgfCBTcGVjSGVhcEJpZ0ludCkpKQorICAgICAgICByZXR1cm47
CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZTsKKworICAgIGJvb2wgbWF5QmVJbnQz
MiA9IG5lZWRzVHlwZUNoZWNrKGVkZ2UsIH5TcGVjSW50MzJPbmx5KTsKKyAgICBpZiAobWF5QmVJ
bnQzMikKKyAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZJbnQzMihyZWdzKSk7CisK
KyAgICBERkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0Z1bGxEb3VibGUsIG1faml0LmJy
YW5jaElmTnVtYmVyKHJlZ3MsIHRlbXBHUFIpKTsKKworICAgIGJvb2wgbWF5QmVOb3RDZWxsID0g
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwpOworICAgIGlmIChtYXlCZU5vdENlbGwpCisg
ICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChyZWdzKSk7CisKKyAgICBE
RkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0hlYXBCaWdJbnQsIG1faml0LmJyYW5jaElm
SGVhcEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkpOworCisgICAgaWYgKG1heUJlSW50MzIgfHwg
bWF5QmVOb3RDZWxsKQorICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKK30KKwordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSBlZGdl
KQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgfihTcGVjRnVsbERvdWJsZSB8IFNw
ZWNIZWFwQmlnSW50KSkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTVmFsdWVPcGVyYW5kIG9w
ZXJhbmQodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyByZWdzID0gb3BlcmFuZC5qc1ZhbHVl
UmVncygpOworICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgIHNwZWN1bGF0
ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KGVkZ2UsIHJlZ3MsIHRlbXBHUFIpOworfQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZyhFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQogewog
ICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgfihTcGVjRnVsbERvdWJsZSB8IFNwZWNTdHJp
bmcgfCBTcGVjSGVhcEJpZ0ludCkpKQpAQCAtMTE3MTMsMjAgKzExNzczLDIwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5n
KEVkZ2UgZWRnZSwgSlNWCiAKICAgICBERkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0Z1
bGxEb3VibGUsIG1faml0LmJyYW5jaElmTnVtYmVyKHJlZ3MsIHRlbXBHUFIpKTsKIAotICAgIGJv
b2wgbWF5Tm90QmVDZWxsID0gbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwpOwotICAgIGlm
IChtYXlOb3RCZUNlbGwpCisgICAgYm9vbCBtYXlCZU5vdENlbGwgPSBuZWVkc1R5cGVDaGVjayhl
ZGdlLCBTcGVjQ2VsbCk7CisgICAgaWYgKG1heUJlTm90Q2VsbCkKICAgICAgICAgZG9uZS5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHJlZ3MpKTsKIAogICAgIERGR19UWVBFX0NIRUNLKHJl
Z3MsIGVkZ2UsIH5TcGVjU3RyaW5nLCBtX2ppdC5icmFuY2hJZlN0cmluZyhyZWdzLnBheWxvYWRH
UFIoKSkpOwogICAgIERGR19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjSGVhcEJpZ0ludCwg
bV9qaXQuYnJhbmNoSWZIZWFwQmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7CiAKLSAgICBpZiAo
bWF5QmVJbnQzMiB8fCBtYXlOb3RCZUNlbGwpCisgICAgaWYgKG1heUJlSW50MzIgfHwgbWF5QmVO
b3RDZWxsKQogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoRWRnZSBl
ZGdlKQogewotICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgfihTcGVjRnVsbERvdWJsZSB8
IFNwZWNTdHJpbmcpKSkKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIH4oU3BlY0Z1bGxE
b3VibGUgfCBTcGVjSGVhcEJpZ0ludCB8IFNwZWNTdHJpbmcpKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOwpAQCAtMTE5MjIsNiArMTE5ODIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGUoTm9kZSosIEVkZ2UgZWRnZSkKICAgICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAg
ICAgc3BlY3VsYXRlTm90RG91YmxlKGVkZ2UpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE5l
aXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlOgorICAgICAgICBzcGVjdWxhdGVOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludChlZGdlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKICAgICAgICAgc3BlY3VsYXRlTmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoZWRnZSk7CiAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDI5YmEy
OWFlNDc2Ni4uYWVlNmU2NWFiYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMjM4LDYgKzEyMzgsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgY29tcGlsZVN5bWJvbEVxdWFsaXR5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVIZWFwQmln
SW50RXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxp
dHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdm9p
ZCBjb21waWxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRUb05vdERvdWJsZVN0cmljdEVxdWFs
aXR5KE5vZGUqLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50LCBFZGdlIG5vdERvdWJs
ZSk7CisjZW5kaWYKKyAgICB2b2lkIGVtaXRCaXR3aXNlSlNWYWx1ZUVxdWFsaXR5KEpTVmFsdWVP
cGVyYW5kJiwgSlNWYWx1ZU9wZXJhbmQmLCBHUFJUZW1wb3JhcnkmIHJlc3VsdCk7CisgICAgdm9p
ZCBlbWl0QnJhbmNoT25CaXR3aXNlSlNWYWx1ZUVxdWFsaXR5KEpTVmFsdWVPcGVyYW5kJiwgSlNW
YWx1ZU9wZXJhbmQmLCBCYXNpY0Jsb2NrKiB0YWtlbiwgQmFzaWNCbG9jayogbm90VGFrZW4pOwog
ICAgIHZvaWQgY29tcGlsZU5vdERvdWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3Ry
aW5nU3RyaWN0RXF1YWxpdHkoTm9kZSosIEVkZ2Ugbm90RG91YmxlRWRnZSwgRWRnZSBuZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0VkZ2UpOwogICAgIHZvaWQgY29tcGlsZVBlZXBI
b2xlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVh
bGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgRWRnZSBub3REb3VibGVFZGdlLCBFZGdlIG5l
aXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nRWRnZSk7CiAgICAgdm9pZCBjb21waWxl
U3ltYm9sVW50eXBlZEVxdWFsaXR5KE5vZGUqLCBFZGdlIHN5bWJvbEVkZ2UsIEVkZ2UgdW50eXBl
ZEVkZ2UpOwpAQCAtMTcyNCw2ICsxNzI5LDggQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRl
Tm90Q2VsbE5vckJpZ0ludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdERvdWJsZShFZGdl
LCBKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXApOwogICAgIHZvaWQgc3BlY3VsYXRlTm90RG91Ymxl
KEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRn
ZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKKyAgICB2b2lkIHNwZWN1bGF0ZU5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsK
ICAgICB2b2lkIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVk
Z2UpOwogICAgIHZvaWQgc3BlY3VsYXRlT3RoZXIoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0
ZW1wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCmluZGV4IDYyMzU1Yzk0ODc5MS4uNjg3NzNlNDFlMjk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTMzNiw2ICsz
MzYsOTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5j
aE51bGxPclVuZGVmaW5lZChFZGdlIG9wZXJhbmQsIE4KICAgICB9CiB9CiAKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91YmxlU3Ry
aWN0RXF1YWxpdHkoTm9kZSogbm9kZSwgRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENo
aWxkLCBFZGdlIG5vdERvdWJsZUNoaWxkKQoreworICAgIEFTU0VSVChuZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludENoaWxkLnVzZUtpbmQoKSA9PSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVz
ZSk7CisgICAgQVNTRVJUKG5vdERvdWJsZUNoaWxkLnVzZUtpbmQoKSA9PSBOb3REb3VibGVVc2Up
OworCisgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJp
Z0ludENoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5k
IHJpZ2h0KHRoaXMsIG5vdERvdWJsZUNoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
CisgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IGxlZnRUZW1w
KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSByaWdodFRlbXAodGhpcyk7CisgICAgR1BSVGVtcG9y
YXJ5IGxlZnRUZW1wMih0aGlzLCBSZXVzZSwgbGVmdCk7CisgICAgR1BSVGVtcG9yYXJ5IHJpZ2h0
VGVtcDIodGhpcywgUmV1c2UsIHJpZ2h0KTsKKyAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxl
ZnQuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1Zh
bHVlUmVncygpOworCisgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0UmVncy5wYXlsb2FkR1BSKCk7
CisgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHRSZWdzLnBheWxvYWRHUFIoKTsKKyAgICBHUFJS
ZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgR1BSUmVnIGxlZnRUZW1wR1BSID0gbGVmdFRl
bXAuZ3ByKCk7CisgICAgR1BSUmVnIHJpZ2h0VGVtcEdQUiA9IHJpZ2h0VGVtcC5ncHIoKTsKKyAg
ICBHUFJSZWcgbGVmdFRlbXAyR1BSID0gbGVmdFRlbXAyLmdwcigpOworICAgIEdQUlJlZyByaWdo
dFRlbXAyR1BSID0gcmlnaHRUZW1wMi5ncHIoKTsKKworICAgIC8vIFdlIHRyeSB0byBhdm9pZCBy
ZXBlYXRlZCBhbmQgcmVkdW5kYW50IGNoZWNrcyBoZXJlLCB3aGljaCBsZWFkcyB0byB0aGUgZm9s
bG93aW5nIHBzZXVkby1jb2RlOgorICAgIC8qCisgICAgIGlmIChsZWZ0ID09IHRydWUpIHsKKyAg
ICAgICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChsZWZ0KTsKKyAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgfQorICAgICBzcGVjdWxhdGVOb3REb3VibGUocmlnaHQpOworICAg
ICBzcGVjdWxhdGVOb3REb3VibGUobGVmdCk7CisgICAgIGlmIChsZWZ0IGlzIG5vdCBDZWxsKQor
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgQ2hlY2sgdGhhdCBsZWZ0IGlzIG5vdCBIZWFwQmln
SW50OworICAgICBpZiAobGVmdCBpcyBub3QgU3RyaW5nKQorICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgaWYgKHJpZ2h0IGlzIG5vdCBDZWxsKQorICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
aWYgKHJpZ2h0IGlzIG5vdCBTdHJpbmcpCisgICAgICAgcmV0dXJuIGZhbHNlOworICAgICByZXR1
cm4gc3RyaW5nRXF1YWxpdHkobGVmdCwgcmlnaHQpCisgICAgIH0KKyAgICAgKi8KKyAgICAvLyBN
ZXJjaWZ1bGx5IHdlIGNhbiBvZnRlbiBlbGltaW5hdGUgbXVjaCBvZiB0aGlzIHNvdXAgb2YgY29u
ZGl0aW9uYWxzIHdpdGggdGhlIGhlbHAgb2YgdGhlIGFic3RyYWN0IGludGVycHJldGVyLgorCisg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHRydWVDYXNlOworICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBmYWxzZUNhc2U7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbCA9IG1faml0
LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAg
IC8vIFdlIGNhbm5vdCB1c2Ugc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQgaGVy
ZSwgYmVjYXVzZSBpdCB1cGRhdGVzIHRoZSBpbnRlcnByZXRlciBzdGF0ZSwgYW5kIHdlIGNhbiBz
a2lwIG92ZXIgaXQuCisgICAgLy8gU28gd2Ugd291bGQgYWx3YXlzIHNraXAgdGhlIHNwZWN1bGF0
ZU5vdERvdWJsZSB0aGF0IGZvbGxvd3MuCisgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIH5TcGVjRnVsbERvdWJsZSkpIHsKKyAgICAgICAgaWYg
KG5lZWRzVHlwZUNoZWNrKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIH5TcGVjSW50
MzJPbmx5KSkKKyAgICAgICAgICAgIHRydWVDYXNlLmFwcGVuZChtX2ppdC5icmFuY2hJZkludDMy
KGxlZnRSZWdzKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgbGVmdFJlZ3Ms
IG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQubm9kZSgpLCBtX2ppdC5icmFuY2hJZk51
bWJlcihsZWZ0UmVncywgdGVtcEdQUikpOworICAgIH0KKyAgICBpZiAobmVlZHNUeXBlQ2hlY2so
bmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwgflNwZWNIZWFwQmlnSW50KSkgeworICAg
ICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwg
U3BlY0NlbGwpKQorICAgICAgICAgICAgdHJ1ZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmTm90
Q2VsbChsZWZ0UmVncykpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIGxlZnRS
ZWdzLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLm5vZGUoKSwgbV9qaXQuYnJhbmNo
SWZIZWFwQmlnSW50KGxlZnRHUFIpKTsKKyAgICB9CisgICAgdHJ1ZUNhc2UuYXBwZW5kKG1faml0
Lmp1bXAoKSk7CisgICAgbm90RXF1YWwubGluaygmbV9qaXQpOworCisgICAgc3BlY3VsYXRlTm90
RG91YmxlKG5vdERvdWJsZUNoaWxkLCByaWdodFJlZ3MsIHRlbXBHUFIpOworICAgIHNwZWN1bGF0
ZU5vdERvdWJsZShuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCBsZWZ0UmVncywgdGVt
cEdQUik7CisKKyAgICBib29sIGxlZnRNYXlCZU5vdENlbGwgPSBuZWVkc1R5cGVDaGVjayhuZWl0
aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCBTcGVjQ2VsbENoZWNrKTsKKyAgICBpZiAobGVm
dE1heUJlTm90Q2VsbCkKKyAgICAgICAgZmFsc2VDYXNlLmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dENlbGwobGVmdFJlZ3MpKTsKKworICAgIERGR19UWVBFX0NIRUNLKGxlZnRSZWdzLCBuZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCB+U3BlY0hlYXBCaWdJbnQsIG1faml0LmJyYW5jaElm
SGVhcEJpZ0ludChsZWZ0R1BSKSk7CisKKyAgICBib29sIGxlZnRNYXlCZU5vdFN0cmluZ0tub3dp
bmdDZWxsID0gbmVlZHNUeXBlQ2hlY2sobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwg
KH5TcGVjU3RyaW5nKSAmIFNwZWNDZWxsQ2hlY2spOworICAgIGlmIChsZWZ0TWF5QmVOb3RTdHJp
bmdLbm93aW5nQ2VsbCkKKyAgICAgICAgZmFsc2VDYXNlLmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dFN0cmluZyhsZWZ0R1BSKSk7CisKKyAgICBib29sIHJpZ2h0TWF5QmVOb3RDZWxsID0gbmVlZHNU
eXBlQ2hlY2sobm90RG91YmxlQ2hpbGQsIFNwZWNDZWxsQ2hlY2spOworICAgIGlmIChyaWdodE1h
eUJlTm90Q2VsbCkKKyAgICAgICAgZmFsc2VDYXNlLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENl
bGwocmlnaHRSZWdzKSk7CisKKyAgICBib29sIHJpZ2h0TWF5QmVOb3RTdHJpbmdLbm93aW5nQ2Vs
bCA9IG5lZWRzVHlwZUNoZWNrKG5vdERvdWJsZUNoaWxkLCAoflNwZWNTdHJpbmcpICYgU3BlY0Nl
bGxDaGVjayk7CisgICAgaWYgKHJpZ2h0TWF5QmVOb3RTdHJpbmdLbm93aW5nQ2VsbCkKKyAgICAg
ICAgZmFsc2VDYXNlLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhyaWdodEdQUikpOwor
CisgICAgY29tcGlsZVN0cmluZ0VxdWFsaXR5KG5vZGUsIGxlZnRHUFIsIHJpZ2h0R1BSLCB0ZW1w
R1BSLCBsZWZ0VGVtcEdQUiwgcmlnaHRUZW1wR1BSLCBsZWZ0VGVtcDJHUFIsIHJpZ2h0VGVtcDJH
UFIsIHRydWVDYXNlLCBmYWxzZUNhc2UpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwg
Ym9vbCBpbnZlcnQpCiB7CiAgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT5icmFu
Y2hEYXRhKCktPnRha2VuLmJsb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdVc2VLaW5kLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2lu
ZC5jcHAKaW5kZXggNGI0M2M3NWRmZDUzLi5mMTQ1NjI0ODBjYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcApAQCAtMTczLDYgKzE3Myw5IEBAIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2VLaW5kIHVzZUtpbmQpCiAgICAgY2FzZSBOb3RE
b3VibGVVc2U6CiAgICAgICAgIG91dC5wcmludCgiTm90RG91YmxlIik7CiAgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlOgorICAgICAgICBvdXQu
cHJpbnQoIk5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Iik7CisgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAgICBv
dXQucHJpbnQoIk5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nIik7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2lu
ZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKaW5kZXggOTRlNTcx
MDA1ZWIzLi4zNmRkYzkwZjliMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVXNlS2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2lu
ZC5oCkBAIC04Miw2ICs4Miw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAgTm90Q2VsbFVzZSwKICAg
ICBOb3RDZWxsTm9yQmlnSW50VXNlLAogICAgIE5vdERvdWJsZVVzZSwKKyAgICBOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludFVzZSwKICAgICBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0
cmluZ1VzZSwKICAgICBLbm93bk90aGVyVXNlLAogICAgIE90aGVyVXNlLApAQCAtMTkxLDYgKzE5
Miw4IEBAIGlubGluZSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRm9yKFVzZUtpbmQgdXNlS2lu
ZCkKICAgICAgICAgcmV0dXJuIH5TcGVjQ2VsbENoZWNrICYgflNwZWNCaWdJbnQ7CiAgICAgY2Fz
ZSBOb3REb3VibGVVc2U6CiAgICAgICAgIHJldHVybiB+U3BlY0Z1bGxEb3VibGU7CisgICAgY2Fz
ZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZToKKyAgICAgICAgcmV0dXJuIH5TcGVjRnVs
bERvdWJsZSAmIH5TcGVjSGVhcEJpZ0ludDsKICAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAgICByZXR1cm4gflNwZWNGdWxsRG91YmxlICYgflNw
ZWNIZWFwQmlnSW50ICYgflNwZWNTdHJpbmc7CiAgICAgY2FzZSBLbm93bk90aGVyVXNlOgpAQCAt
MzEyLDYgKzMxNSw3IEBAIGlubGluZSBib29sIGNoZWNrTWF5Q3Jhc2hJZklucHV0SXNFbXB0eShV
c2VLaW5kIGtpbmQpCiAgICAgY2FzZSBOb3RDZWxsVXNlOgogICAgIGNhc2UgTm90Q2VsbE5vckJp
Z0ludFVzZToKICAgICBjYXNlIE5vdERvdWJsZVVzZToKKyAgICBjYXNlIE5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50VXNlOgogICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmdVc2U6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDY1NGNlYjQ4NDE4
Yy4uNWI3YWU3NTJkNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCkBAIC01MjksNiArNTI5LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgQW55SW50VXNlOgogICAgICAg
ICAgICAgICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgogICAgICAgICAgICAgICAgIGNhc2Ug
Tm90RG91YmxlVXNlOgorICAgICAgICAgICAgICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dE5vclN0cmluZ1VzZToKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCAxOWM0OGIwN2VhZWUuLmIwZTFkZjlhZDcxMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtOTYxMSw2
ICs5NjExLDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAor
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnRVc2UsIE5vdERvdWJsZVVzZSkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91YmxlU3RyaWN0RXF1YWxpdHkobV9ub2RlLT5jaGlsZDEo
KSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERvdWJsZVVzZSwgTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnRVc2UpKSB7CisgICAgICAgICAgICBjb21waWxlTmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnRUb05vdERvdWJsZVN0cmljdEVxdWFsaXR5KG1fbm9kZS0+Y2hpbGQyKCks
IG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAg
ICAgICAgLy8gRklYTUU6IHdlIGNhbiBkbyBzb21ldGhpbmcgbXVjaCBzbWFydGVyIGhlcmUsIHNl
ZSB0aGUgREZHU3BlY3VsYXRpdmVKSVQgYXBwcm9hY2ggaW4gZS5nLiBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbV9ub2RlLCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSwgbV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCksIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpKTsKICAgICAgICAg
Z2VuZXJpY0pTVmFsdWVDb21wYXJlKApAQCAtOTY1OSw2ICs5NjY4LDc1IEBAIHByaXZhdGU6CiAg
ICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBmYXN0VHJ1ZSwgZmFzdEZhbHNlLCBz
bG93UmVzdWx0KSk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnRUb05vdERvdWJsZVN0cmljdEVxdWFsaXR5KEVkZ2UgbmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnRFZGdlLCBFZGdlIG5vdERvdWJsZUVkZ2UpCisgICAgeworICAgICAgICBBU1NFUlQo
bmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRFZGdlLnVzZUtpbmQoKSA9PSBOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludFVzZSk7CisgICAgICAgIEFTU0VSVChub3REb3VibGVFZGdlLnVzZUtpbmQo
KSA9PSBOb3REb3VibGVVc2UpOworCisgICAgICAgIExWYWx1ZSBsZWZ0VmFsdWUgPSBsb3dKU1Zh
bHVlKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50RWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0VmFsdWUgPSBsb3dKU1ZhbHVlKG5vdERvdWJsZUVk
Z2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGxl
ZnRWYWx1ZVR5cGUgPSBwcm92ZW5UeXBlKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50RWRnZSk7
CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0VmFsdWVUeXBlID0gcHJvdmVuVHlwZShub3RE
b3VibGVFZGdlKTsKKworICAgICAgICBMQmFzaWNCbG9jayB0cml2aWFsbHlFcXVhbENhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBub3RUcml2aWFsbHlFcXVhbENh
c2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNDZWxsID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzU3RyaW5nID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc0NlbGwgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayByaWdodElzU3RyaW5nID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKKworICAgICAgICAvLyBXZSB0cnkgdG8gYXZvaWQgcmVwZWF0ZWQgYW5kIHJlZHVuZGFu
dCBjaGVja3MgaGVyZSwgd2hpY2ggbGVhZHMgdG8gdGhlIGZvbGxvd2luZyBwc2V1ZG8tY29kZToK
KyAgICAgICAgLyoKKyAgICAgICAgIGlmIChsZWZ0ID09IHRydWUpIHsKKyAgICAgICAgICAgc3Bl
Y3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQobGVmdCk7CisgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgfQorICAgICAgICAgc3BlY3VsYXRlTm90RG91YmxlKHJpZ2h0KTsK
KyAgICAgICAgIHNwZWN1bGF0ZU5vdERvdWJsZShsZWZ0KTsKKyAgICAgICAgIGlmIChsZWZ0IGlz
IG5vdCBDZWxsKQorICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICBDaGVjayB0aGF0
IGxlZnQgaXMgbm90IEhlYXBCaWdJbnQ7CisgICAgICAgICBpZiAobGVmdCBpcyBub3QgU3RyaW5n
KQorICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICBpZiAocmlnaHQgaXMgbm90IENl
bGwpCisgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIGlmIChyaWdodCBpcyBub3Qg
U3RyaW5nKQorICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICByZXR1cm4gc3RyaW5n
RXF1YWxpdHkobGVmdCwgcmlnaHQpCisgICAgICAgICB9CisgICAgICAgICAqLworICAgICAgICBt
X291dC5icmFuY2gobV9vdXQuZXF1YWwobGVmdFZhbHVlLCByaWdodFZhbHVlKSwgdW5zdXJlKHRy
aXZpYWxseUVxdWFsQ2FzZSksIHVuc3VyZShub3RUcml2aWFsbHlFcXVhbENhc2UpKTsKKworICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHRyaXZpYWxseUVxdWFs
Q2FzZSwgbm90VHJpdmlhbGx5RXF1YWxDYXNlKTsKKyAgICAgICAgc3BlY3VsYXRlTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnQobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRFZGdlKTsKKyAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgZmFzdFRydWUgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRy
dWUpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8obm90VHJpdmlhbGx5RXF1YWxDYXNlLCBsZWZ0SXNDZWxsKTsKKyAgICAgICAgc3Bl
Y3VsYXRlTm90RG91YmxlKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50RWRnZSk7CisgICAgICAg
IHNwZWN1bGF0ZU5vdERvdWJsZShub3REb3VibGVFZGdlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgZmFzdEZhbHNlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7CisgICAgICAg
IG1fb3V0LmJyYW5jaChpc05vdENlbGwobGVmdFZhbHVlLCBsZWZ0VmFsdWVUeXBlKSwgdW5zdXJl
KGNvbnRpbnVhdGlvbiksIHVuc3VyZShsZWZ0SXNDZWxsKSk7CisKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8obGVmdElzQ2VsbCwgbGVmdElzU3RyaW5nKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0so
anNWYWx1ZVZhbHVlKGxlZnRWYWx1ZSksIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50RWRnZSwg
flNwZWNIZWFwQmlnSW50LCBpc0hlYXBCaWdJbnQobGVmdFZhbHVlKSk7CisgICAgICAgIG1fb3V0
LmJyYW5jaChpc05vdFN0cmluZyhsZWZ0VmFsdWUsIGxlZnRWYWx1ZVR5cGUpLCB1bnN1cmUoY29u
dGludWF0aW9uKSwgdW5zdXJlKGxlZnRJc1N0cmluZykpOworCisgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGxlZnRJc1N0cmluZywgcmlnaHRJc0NlbGwpOworICAgICAgICBtX291dC5icmFuY2goaXNO
b3RDZWxsKHJpZ2h0VmFsdWUsIHJpZ2h0VmFsdWVUeXBlKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiks
IHVuc3VyZShyaWdodElzQ2VsbCkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0SXND
ZWxsLCByaWdodElzU3RyaW5nKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90U3RyaW5nKHJp
Z2h0VmFsdWUsIHJpZ2h0VmFsdWVUeXBlKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShy
aWdodElzU3RyaW5nKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmlnaHRJc1N0cmluZywg
Y29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0
LmFuY2hvcihzdHJpbmdzRXF1YWwobGVmdFZhbHVlLCByaWdodFZhbHVlLCBuZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludEVkZ2UsIG5vdERvdWJsZUVkZ2UpKTsKKyAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOworICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgZmFzdFRydWUsIGZh
c3RGYWxzZSwgc2xvd1Jlc3VsdCkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUNvbXBhcmVF
cVB0cigpCiAgICAgewogICAgICAgICBzZXRCb29sZWFuKApAQCAtMTg0NjAsNiArMTg1MzgsOSBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAgICAgICAgIHNwZWN1
bGF0ZU5vdERvdWJsZShlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5l
aXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlTmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnQoZWRnZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKICAgICAgICAgICAg
IHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKGVkZ2UpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xODUyNyw2ICsxODYwOCwzMCBAQCBwcml2YXRlOgogICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CiAKKyAgICB2
b2lkIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KEVkZ2UgZWRnZSkKKyAgICB7
CisgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2Us
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNOb3RJ
bnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbEJsb2Nr
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0g
bV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMih2YWx1ZSwg
cHJvdmVuVHlwZShlZGdlKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoaXNOb3RJbnQz
MikpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNO
b3RJbnQzMiwgaXNDZWxsQmxvY2spOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFs
dWUodmFsdWUpLCBlZGdlLCB+U3BlY0Z1bGxEb3VibGUsIGlzTnVtYmVyKHZhbHVlKSk7CisgICAg
ICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkpLCB1bnN1cmUo
aXNDZWxsQmxvY2spLCB1bnN1cmUoY29udGludWF0aW9uKSk7CisKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oaXNDZWxsQmxvY2ssIGNvbnRpbnVhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNL
KGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIH5TcGVjSGVhcEJpZ0ludCwgaXNIZWFwQmlnSW50
KHZhbHVlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBt
X291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICB9CisKICAgICB2b2lk
IHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVkZ2UgZWRnZSkK
ICAgICB7CiAgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkK
</data>
<flag name="commit-queue"
          id="453395"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435639</attachid>
            <date>2021-08-16 16:05:09 -0700</date>
            <delta_ts>2021-08-16 17:34:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226755</filename>
            <type>text/plain</type>
            <size>34898</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MGQwMGY0N2Y4MzlhLi41NDMxNDA5ZmY4ZDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDgtMTYgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBj
b21wYXJlU3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMgYSBkb3VibGUgYW5kIGF0IGxlYXN0
IG9uZSBpcyBub3QgYSBCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjc1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzkzMjE1NDI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSB0aGUg
ZXJyb3IgbWVzc2FnZXMgaW4gc3RyZXNzL3JlZmxlY3Qtc2V0IGEgYml0IG1vcmUgaW5mb3JtYXRp
dmUgaW4gdGhlIHByb2Nlc3Mgb2YgZGVidWdnaW5nIGFuIGlzc3VlIHdpdGggdGhlIHBhdGNoLgor
CisgICAgICAgICogc3RyZXNzL3JlZmxlY3Qtc2V0LmpzOgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAoc2hvdWxkVGhyb3cpOgorCiAyMDIxLTA4LTEzICBLZWl0aCBNaWxsZXIgIDxrZWl0
aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVy
dHlOYW1lIGFsd2F5cyBuZWVkcyB0byBiZSBhYmxlIHRvIGhhbmRsZSBJbmRleGVkTW9kZQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVmbGVjdC1zZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9y
ZWZsZWN0LXNldC5qcwppbmRleCAwN2Y0YzM2MTliMWQuLjYzZTQwNzAzMjUwYSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvcmVmbGVjdC1zZXQuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVm
bGVjdC1zZXQuanMKQEAgLTEsNiArMSw2IEBACiBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBkZXNjcmliZShhY3R1YWwpICsgJywgZXhwZWN0ZWQ6ICcgKyBkZXNj
cmliZShleHBlY3RlZCkpOwogfQogCiBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBtZXNzYWdl
KSB7CkBAIC0xMSw5ICsxMSw5IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIG1lc3NhZ2Up
IHsKICAgICAgICAgZXJyb3IgPSBlOwogICAgIH0KICAgICBpZiAoIWVycm9yKQotICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24uJyk7CisgICAgICAgIHRocm93IG5ldyBFcnJvcign
bm90IHRocm93bi4gRXhwZWN0ZWQ6ICcgKyBtZXNzYWdlKTsKICAgICBpZiAoU3RyaW5nKGVycm9y
KSAhPT0gbWVzc2FnZSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgZXJyb3I6ICcgKyBT
dHJpbmcoZXJyb3IpKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgZXJyb3I6ICcgKyBT
dHJpbmcoZXJyb3IpICsgJywgZXhwZWN0ZWQ6ICcgKyBtZXNzYWdlKTsKIH0KIAogZnVuY3Rpb24g
dW5yZWFjaGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYjY3YjM3MDIzOWQwLi42
YjM2OThiN2M2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisy
MDIxLTA4LTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAg
ICAgT3B0aW1pemUgY29tcGFyZVN0cmljdEVxIHdoZW4gbmVpdGhlciBzaWRlIGlzIGEgZG91Ymxl
IGFuZCBhdCBsZWFzdCBvbmUgaXMgbm90IGEgQmlnSW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3NTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgdmVyeSBzaW1pbGFyIHBhdGNoIHRv
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2NzYuCisgICAgICAg
IFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgaGVyZSB3ZSBhbGxvdyBTdHJpbmdzIG9uIGJvdGggc2lk
ZSBvZiB0aGUgY29tcGFyaXNvbiwgc28gd2UgbXVzdCBhZGQgY29kZSB0byBoYW5kbGUgZXF1YWxp
dHkgYW1vbmcgc3RyaW5ncy4KKworICAgICAgICBMaWtlIGZvciB0aGF0IG90aGVyIHBhdGNoLCB0
aGUgb3B0aW1pemF0aW9uIGlzIGRpc2FibGVkIGZvciBCaWdJbnQzMi4KKyAgICAgICAgRW5hYmxp
bmcgaXQgaW4gdGhhdCBjYXNlIHdvdWxkIGVpdGhlciBuZWVkIG1vZGlmeWluZyB0aGUgc3BlY3Vs
YXRpb24gKGZyb20gYmFubmluZyBIZWFwQmlnSW50IHRvIGJhbm5pbmcgYWxsIEJpZ0ludHMpLCBv
ciBlbnN1cmluZyB0aGF0IHdlIGNhbiBuZXZlciBoYXZlIGEgSGVhcEJpZ0ludCBzbyBzbWFsbCBp
dCBjb21wYXJlcyBlcXVhbCB0byBhIEJpZ0ludDMyLgorCisgICAgICAgIEkgb25seSBpbXBsZW1l
bnRlZCB0aGlzIG9wdGltaXphdGlvbiBvbiA2NC1iaXRzOiBpdCBpcyBqdXN0IHBhaW5mdWwgdG8g
d3JpdGUgY29kZSB0aGF0IGhhbmRsZXMgcmVnaXN0ZXJzIGF0IHN1Y2ggYSBsb3ctbGV2ZWwgd2l0
aG91dCBhIDMyLWJpdCBtYWNoaW5lIHRvIHRlc3QgdGhpbmdzIGxvY2FsbHkuCisgICAgICAgIElm
IGFueW9uZSB3YW50cyB0byBtYWtlIHRoaXMgb3B0aW1pemF0aW9uIHdvcmsgb24gMzItYml0LCBJ
IGRvbid0IGZvcmV0ZWxsIGFueSBtYWpvciBkaWZmaWN1bHR5LgorCisgICAgICAgIEZpbmFsbHks
IGxpa2UgcXVpdGUgYSBmZXcgb3RoZXIgdXNlS2luZHMgYWxyZWFkeSwgdGhpcyBjYXNlIGRvZXMg
bm90IG1ha2UgdGhlIENvbXBhcmVTdHJpY3RFcSBtZXJnZSB3aXRoIGFuIGFkamFjZW50IEJyYW5j
aC4KKyAgICAgICAgVGhlIHJlYXNvbiBpcyBzaW1wbHkgdGhhdCB0aGlzIHBhdGNoIHJlbGllcyBv
biBjb21waWxlU3RyaW5nRXF1YWxpdHksIHdoaWNoIGN1cnJlbnRseSBkb2VzIG5vdCBzdXBwb3J0
IHRoYXQgZmVhdHVyZS4KKyAgICAgICAgSSBpbnRlbmQgdG8gZml4IHRoaXMgKGZvciBhbGwgdXNl
S2luZHMgYXQgb25jZSkgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKworICAgICAgICBFZmZlY3Qgb24g
bWljcm9iZW5jaG1hcmtzOgorICAgICAgICBwb2x5LXN0cmljdGVxLW5vdC1kb3VibGUgICAgICAg
ICAgICAgICAgICA0Ni44MDAwKy0wLjQxMTAgICAgIF4gICAgIDIzLjU4NzIrLTAuMzA2MSAgICAg
ICAgXiBkZWZpbml0ZWx5IDEuOTg0MXggZmFzdGVyCisgICAgICAgIHBvbHktc3RyaWN0ZXEtbm90
LWRvdWJsZS1ub3Itc3RyaW5nICAgICAgIDE2LjY4ODArLTAuMjMxNyAgICAgICAgICAgMTYuMzYy
NystMC4zNzI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5OXggZmFzdGVyCisgICAgICAgIHBvbHkt
c3RyaWN0ZXEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5LjIxNzUrLTAuNjA0NyAgICAg
ICAgICAgNDguOTUzMistMC42NzU4CisKKyAgICAgICAgSSBsb29rZWQgYXQgaG93IG1hbnkgY2Fz
ZXMgb2YgVW50eXBlZC9VbnR5cGVkIGNvbXBhcmVTdHJpY3RFcSBoYXZlIGJlZW4gZml4ZWQgYnkg
dGhpcyBwYXRjaCBhbmQgdHdvIG90aGVyIHJlY2VudCBwYXRjaGVzLgorICAgICAgICBPbiBKZXRT
dHJlYW0yOgorICAgICAgICAtIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY2MjE6IDczMSBpbnN0YW5jZXMKKyAgICAgICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2OiA5NDQgaW5zdGFuY2VzCisgICAgICAgIC0gVGhpcyBw
YXRjaDogb25seSAyNiBpbnN0YW5jZXMKKyAgICAgICAgVGhpcyBsZWF2ZXMgMjAgaW5zdGFuY2Vz
IG9mIFVudHlwZWQvVW50eXBlZC4KKworICAgICAgICBPbiBTcGVlZG9tZXRlcjIuMDoKKyAgICAg
ICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIxOiAxNTg3
IGluc3RhbmNlcworICAgICAgICAtIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjY2NzY6IDI3ODQgaW5zdGFuY2VzCisgICAgICAgIC0gVGhpcyBwYXRjaDogODkxIGlu
c3RhbmNlcworICAgICAgICBUaGlzIGxlYXZlcyA3NSBpbnN0YW5jZXMgb2YgVW50eXBlZC9VbnR5
cGVkLgorCisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpT
Qzo6aXNOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFNwZWN1bGF0aW9uKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cENvbXBhcmVTdHJpY3RFcUFuZFNhbWVWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR05vZGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludCk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEJpdHdpc2VKU1ZhbHVlRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0QnJhbmNoT25CaXR3aXNlSlNWYWx1ZUVxdWFsaXR5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5vdERvdWJsZU5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludE5vclN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRUb05vdERvdWJsZVN0
cmljdEVxdWFsaXR5KToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChX
VEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAg
IChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6CisgICAgICAgIChKU0M6OkRGRzo6Y2hlY2tNYXlD
cmFzaElmSW5wdXRJc0VtcHR5KToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUNvbXBhcmVTdHJpY3RFcSk6CisKIDIwMjEtMDgtMTUgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVh
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtBUk02NF0gQWRkIFByZS9Qb3N0LUluZGV4ZWQgQWRk
cmVzcyBNb2RlIHRvIEFpciBmb3IgQVJNNjQgKFN0b3JlIEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCA5Njk3Nzgz
NTU3NDEuLjI3YTcwM2NjZDdmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTQ0OSw2ICs0NDksMTEgQEAgaW5saW5lIGJvb2wgaXNO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRU
eXBlIHR5cGUKICAgICByZXR1cm4gISh0eXBlICYgKFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBC
aWdJbnQgfCBTcGVjU3RyaW5nKSk7CiB9CiAKK2lubGluZSBib29sIGlzTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB0eXBlKQoreworICAgIHJldHVy
biAhKHR5cGUgJiAoU3BlY0Z1bGxEb3VibGUgfCBTcGVjSGVhcEJpZ0ludCkpOworfQorCiBpbmxp
bmUgYm9vbCBpc090aGVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAg
cmV0dXJuIHZhbHVlID09IFNwZWNPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAppbmRleCA2MGZiYjE1YzU5MTYuLmNhOTQxMzljMDQ5NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtNDkyLDYgKzQ5Miw3IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5
VXNlS2luZChPYmplY3RVc2UpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
TWlzY1VzZSwgVW50eXBlZFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2Us
IE1pc2NVc2UpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRl
bnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdFN0cmlu
Z1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpCisgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZSkgfHwgbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlLCBOb3REb3Vi
bGVVc2UpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90RG91YmxlVXNl
LCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZSkgfHwgbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJp
bmdVc2UpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGFhNDk2
NGU5YTVjZi4uZmM0NDI2OGExZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTQ0NjUsNyArNDQ2NSwyMyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQotI2VuZGlmCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludCgpCisgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRl
Tm90RG91YmxlKCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8TmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8Tm90RG91Ymxl
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRG
bGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTm90RG91YmxlKCkKKyAg
ICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE5vdERvdWJsZVVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxOZWl0aGVyRG91YmxlTm9ySGVhcEJp
Z0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZh
dWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisjZW5kaWYgLy8gIVVTRShCSUdJTlQzMikKICAg
ICB9CiAKICAgICB2b2lkIGZpeHVwQ2hlY2tzSW5CbG9jayhCYXNpY0Jsb2NrKiBibG9jaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggYWMyYjRiNWYwMjgzLi5jNzFlNzA1ZjQy
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0yODg3LDYgKzI4ODcsMTEg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGlzTmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnROb3JTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAgIGJv
b2wgc2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGlzTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZVVudHlwZWRG
b3JBcml0aG1ldGljKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCmluZGV4IDFlMDQ0Y2Y5ZGIxYy4uYjVlNDZkMTc0ZjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtOTQsNiArOTQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgogICAgICAgICBjYXNl
IE5vdERvdWJsZVVzZToKICAgICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZ1VzZToKKyAgICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZToK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEtub3duSW50
MzJVc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCmluZGV4IDg2OWRjYzIxZmI1ZS4uZDRjMjBiMGRiYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNzIyMiw3ICs3MjIyLDIx
IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAg
ICAgICBjb21waWxlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdT
dHJpY3RFcXVhbGl0eShub2RlLCBub3REb3VibGVDaGlsZCwgbmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnROb3JTdHJpbmdDaGlsZCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0jZW5k
aWYKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2UsIE5vdERvdWJsZVVzZSkpIHsKKyAgICAgICAgRWRn
ZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CisgICAg
ICAgIEVkZ2Ugbm90RG91YmxlQ2hpbGQgPSBub2RlLT5jaGlsZDIoKTsKKyAgICAgICAgY29tcGls
ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShub2Rl
LCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCBub3REb3VibGVDaGlsZCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChO
b3REb3VibGVVc2UsIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlKSkgeworICAgICAgICBF
ZGdlIG5vdERvdWJsZUNoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CisgICAgICAgIEVkZ2UgbmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCA9IG5vZGUtPmNoaWxkMigpOworICAgICAgICBjb21w
aWxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRUb05vdERvdWJsZVN0cmljdEVxdWFsaXR5KG5v
ZGUsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIG5vdERvdWJsZUNoaWxkKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQorI2Vu
ZGlmIC8vICFVU0UoQklHSU5UMzIpCiAKICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEhl
YXBCaWdJbnRVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkobm9kZSk7
CkBAIC03NDUzLDYgKzc0NjcsNDAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBI
b2xlU3ltYm9sRXF1YWxpdHkoTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSkKICAgICB9CiB9
CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCaXR3aXNlSlNWYWx1ZUVxdWFsaXR5KEpTVmFs
dWVPcGVyYW5kJiBsZWZ0LCBKU1ZhbHVlT3BlcmFuZCYgcmlnaHQsIEdQUlRlbXBvcmFyeSYgcmVz
dWx0KQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9qaXQuY29tcGFyZTY0KEpJVENvbXBp
bGVyOjpFcXVhbCwgbGVmdC5ncHIoKSwgcmlnaHQuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisjZWxz
ZQorICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOworICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5vdEVxdWFsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCBsZWZ0LnRhZ0dQUigpLCByaWdodC50YWdHUFIoKSk7CisgICAgbV9qaXQuY29tcGFy
ZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5wYXlsb2FkR1BSKCksIHJpZ2h0LnBheWxvYWRH
UFIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICBub3RFcXVhbC5saW5rKCZtX2ppdCk7CisjZW5kaWYK
K30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaE9uQml0d2lzZUpTVmFsdWVFcXVh
bGl0eShKU1ZhbHVlT3BlcmFuZCYgbGVmdCwgSlNWYWx1ZU9wZXJhbmQmIHJpZ2h0LCBCYXNpY0Js
b2NrKiB0YWtlbiwgQmFzaWNCbG9jayogbm90VGFrZW4pCit7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAgICAgYnJhbmNoNjQoSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgbm90VGFrZW4pOworICAg
ICAgICBqdW1wKHRha2VuKTsKKyAgICB9IGVsc2UgeworICAgICAgICBicmFuY2g2NChKSVRDb21w
aWxlcjo6RXF1YWwsIGxlZnQuZ3ByKCksIHJpZ2h0LmdwcigpLCB0YWtlbik7CisgICAgICAgIGp1
bXAobm90VGFrZW4pOworICAgIH0KKyNlbHNlCisgICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCBsZWZ0LnRhZ0dQUigpLCByaWdodC50YWdHUFIoKSwgbm90VGFrZW4pOworICAgIGlm
ICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAgICAgICBicmFuY2gzMihKSVRDb21waWxlcjo6
Tm90RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCByaWdodC5wYXlsb2FkR1BSKCksIG5vdFRha2Vu
KTsKKyAgICAgICAganVtcCh0YWtlbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYnJhbmNoMzIo
SklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0LnBheWxvYWRHUFIoKSwgcmlnaHQucGF5bG9hZEdQUigp
LCB0YWtlbik7CisgICAgICAgIGp1bXAobm90VGFrZW4pOworICAgIH0KKyNlbmRpZgorfQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShOb2RlKiBub2RlLCBFZGdlIG5vdERvdWJsZUNo
aWxkLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQpCiB7CiAg
ICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBub3REb3VibGVDaGlsZCwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKQEAgLTc0NzIsMTQgKzc1MjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJp
Y3RFcQogICAgIHNwZWN1bGF0ZU5vdERvdWJsZShub3REb3VibGVDaGlsZCwgbGVmdFJlZ3MsIHRl
bXBHUFIpOwogICAgIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5n
KG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQsIHJpZ2h0UmVncywgdGVt
cEdQUik7CiAKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21w
aWxlcjo6RXF1YWwsIGxlZnQuZ3ByKCksIHJpZ2h0LmdwcigpLCByZXN1bHQuZ3ByKCkpOwotI2Vs
c2UKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKLSAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RFcXVhbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgbGVmdC50YWdHUFIoKSwgcmlnaHQudGFnR1BSKCkpOwotICAgIG1faml0LmNvbXBh
cmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCByaWdodC5wYXlsb2Fk
R1BSKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgbm90RXF1YWwubGluaygmbV9qaXQpOwotI2VuZGlm
CisgICAgZW1pdEJpdHdpc2VKU1ZhbHVlRXF1YWxpdHkobGVmdCwgcmlnaHQsIHJlc3VsdCk7CiAg
ICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCkBAIC03NDk5
LDI0ICs3NTQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlTm90RG91
YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcKICAgICBCYXNpY0Jsb2NrKiB0
YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CiAgICAgQmFzaWNC
bG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2Nr
OwogCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsK
LSAgICAgICAgYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LmdwcigpLCByaWdo
dC5ncHIoKSwgbm90VGFrZW4pOwotICAgICAgICBqdW1wKHRha2VuKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBicmFuY2g2NChKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQuZ3ByKCksIHJpZ2h0Lmdw
cigpLCB0YWtlbik7Ci0gICAgICAgIGp1bXAobm90VGFrZW4pOwotICAgIH0KLSNlbHNlCi0gICAg
YnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LnRhZ0dQUigpLCByaWdodC50YWdH
UFIoKSwgbm90VGFrZW4pOwotICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgewotICAgICAg
ICBicmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCByaWdo
dC5wYXlsb2FkR1BSKCksIG5vdFRha2VuKTsKLSAgICAgICAganVtcCh0YWtlbik7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0LnBheWxvYWRH
UFIoKSwgcmlnaHQucGF5bG9hZEdQUigpLCB0YWtlbik7Ci0gICAgICAgIGp1bXAobm90VGFrZW4p
OwotICAgIH0KLSNlbmRpZgorICAgIGVtaXRCcmFuY2hPbkJpdHdpc2VKU1ZhbHVlRXF1YWxpdHko
bGVmdCwgcmlnaHQsIHRha2VuLCBub3RUYWtlbik7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTdHJpbmdFcXVhbGl0eSgKQEAgLTExNzc5LDYgKzExODAzLDQyIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5vdERvdWJsZShFZGdlIGVkZ2UpCiAgICAgc3BlY3VsYXRl
Tm90RG91YmxlKGVkZ2UsIHJlZ3MsIHRlbXBHUFIpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChFZGdlIGVkZ2UsIEpTVmFsdWVS
ZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRn
ZSwgfihTcGVjRnVsbERvdWJsZSB8IFNwZWNIZWFwQmlnSW50KSkpCisgICAgICAgIHJldHVybjsK
KworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOworCisgICAgYm9vbCBtYXlCZUludDMy
ID0gbmVlZHNUeXBlQ2hlY2soZWRnZSwgflNwZWNJbnQzMk9ubHkpOworICAgIGlmIChtYXlCZUlu
dDMyKQorICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2hJZkludDMyKHJlZ3MpKTsKKwor
ICAgIERGR19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjRnVsbERvdWJsZSwgbV9qaXQuYnJh
bmNoSWZOdW1iZXIocmVncywgdGVtcEdQUikpOworCisgICAgYm9vbCBtYXlCZU5vdENlbGwgPSBu
ZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCk7CisgICAgaWYgKG1heUJlTm90Q2VsbCkKKyAg
ICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHJlZ3MpKTsKKworICAgIERG
R19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZI
ZWFwQmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7CisKKyAgICBpZiAobWF5QmVJbnQzMiB8fCBt
YXlCZU5vdENlbGwpCisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworfQorCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChFZGdlIGVkZ2Up
Cit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCB+KFNwZWNGdWxsRG91YmxlIHwgU3Bl
Y0hlYXBCaWdJbnQpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZU9wZXJhbmQgb3Bl
cmFuZCh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOworICAgIEpTVmFsdWVSZWdzIHJlZ3MgPSBvcGVyYW5kLmpzVmFsdWVS
ZWdzKCk7CisgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworCisgICAgc3BlY3VsYXRl
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoZWRnZSwgcmVncywgdGVtcEdQUik7Cit9CisKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9y
U3RyaW5nKEVkZ2UgZWRnZSwgSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCiB7CiAg
ICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCB+KFNwZWNGdWxsRG91YmxlIHwgU3BlY1N0cmlu
ZyB8IFNwZWNIZWFwQmlnSW50KSkpCkBAIC0xMTc5MiwxNCArMTE4NTIsMTQgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmco
RWRnZSBlZGdlLCBKU1YKIAogICAgIERGR19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjRnVs
bERvdWJsZSwgbV9qaXQuYnJhbmNoSWZOdW1iZXIocmVncywgdGVtcEdQUikpOwogCi0gICAgYm9v
bCBtYXlOb3RCZUNlbGwgPSBuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCk7Ci0gICAgaWYg
KG1heU5vdEJlQ2VsbCkKKyAgICBib29sIG1heUJlTm90Q2VsbCA9IG5lZWRzVHlwZUNoZWNrKGVk
Z2UsIFNwZWNDZWxsKTsKKyAgICBpZiAobWF5QmVOb3RDZWxsKQogICAgICAgICBkb25lLmFwcGVu
ZChtX2ppdC5icmFuY2hJZk5vdENlbGwocmVncykpOwogCiAgICAgc3RhdGljX2Fzc2VydChTdHJp
bmdUeXBlICsgMSA9PSBIZWFwQmlnSW50VHlwZSk7CiAgICAgREZHX1RZUEVfQ0hFQ0socmVncywg
ZWRnZSwgfihTcGVjU3RyaW5nIHwgU3BlY0hlYXBCaWdJbnQpLCBtX2ppdC5icmFuY2hJZlR5cGUo
cmVncy5wYXlsb2FkR1BSKCksIEpTVHlwZVJhbmdlIHsgU3RyaW5nVHlwZSwgSGVhcEJpZ0ludFR5
cGUgfSkpOwogCi0gICAgaWYgKG1heUJlSW50MzIgfHwgbWF5Tm90QmVDZWxsKQorICAgIGlmICht
YXlCZUludDMyIHx8IG1heUJlTm90Q2VsbCkKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiB9
CiAKQEAgLTEyMDAxLDYgKzEyMDYxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
KE5vZGUqLCBFZGdlIGVkZ2UpCiAgICAgY2FzZSBOb3REb3VibGVVc2U6CiAgICAgICAgIHNwZWN1
bGF0ZU5vdERvdWJsZShlZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludFVzZToKKyAgICAgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnQoZWRnZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nKGVkZ2UpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBkMTIwYjdiNGZiODQu
LjIwMTgyMjY0ZTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaApAQCAtMTI0OCw2ICsxMjQ4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBp
bGVTeW1ib2xFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSGVhcEJpZ0ludEVxdWFs
aXR5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZVN5bWJvbEVxdWFsaXR5KE5vZGUq
LCBOb2RlKiBicmFuY2hOb2RlKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHZvaWQgY29tcGls
ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShOb2Rl
KiwgRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCwgRWRnZSBub3REb3VibGUpOworI2Vu
ZGlmCisgICAgdm9pZCBlbWl0Qml0d2lzZUpTVmFsdWVFcXVhbGl0eShKU1ZhbHVlT3BlcmFuZCYs
IEpTVmFsdWVPcGVyYW5kJiwgR1BSVGVtcG9yYXJ5JiByZXN1bHQpOworICAgIHZvaWQgZW1pdEJy
YW5jaE9uQml0d2lzZUpTVmFsdWVFcXVhbGl0eShKU1ZhbHVlT3BlcmFuZCYsIEpTVmFsdWVPcGVy
YW5kJiwgQmFzaWNCbG9jayogdGFrZW4sIEJhc2ljQmxvY2sqIG5vdFRha2VuKTsKICAgICB2b2lk
IGNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmlj
dEVxdWFsaXR5KE5vZGUqLCBFZGdlIG5vdERvdWJsZUVkZ2UsIEVkZ2UgbmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmdFZGdlKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU5vdERv
dWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkoTm9k
ZSosIE5vZGUqIGJyYW5jaE5vZGUsIEVkZ2Ugbm90RG91YmxlRWRnZSwgRWRnZSBuZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0VkZ2UpOwogICAgIHZvaWQgY29tcGlsZVN5bWJvbFVu
dHlwZWRFcXVhbGl0eShOb2RlKiwgRWRnZSBzeW1ib2xFZGdlLCBFZGdlIHVudHlwZWRFZGdlKTsK
QEAgLTE3NDAsNiArMTc0NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGxO
b3JCaWdJbnQoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVOb3REb3VibGUoRWRnZSwgSlNWYWx1
ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdERvdWJsZShFZGdlKTsK
KyAgICB2b2lkIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KEVkZ2UsIEpTVmFs
dWVSZWdzLCBHUFJSZWcgdGVtcCk7CisgICAgdm9pZCBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CiAgICAgdm9p
ZCBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyhFZGdlKTsKICAg
ICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApp
bmRleCA4ODA4YjEwYzgyNmMuLjliNjk3NmY4ZjdlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zMzYsNiArMzM2LDk1IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JV
bmRlZmluZWQoRWRnZSBvcGVyYW5kLCBOCiAgICAgfQogfQogCit2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRUb05vdERvdWJsZVN0cmljdEVxdWFs
aXR5KE5vZGUqIG5vZGUsIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwgRWRn
ZSBub3REb3VibGVDaGlsZCkKK3sKKyAgICBBU1NFUlQobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnRDaGlsZC51c2VLaW5kKCkgPT0gTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2UpOworICAg
IEFTU0VSVChub3REb3VibGVDaGlsZC51c2VLaW5kKCkgPT0gTm90RG91YmxlVXNlKTsKKworICAg
IEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGls
ZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0
aGlzLCBub3REb3VibGVDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBsZWZ0VGVtcCh0aGlzKTsK
KyAgICBHUFJUZW1wb3JhcnkgcmlnaHRUZW1wKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBsZWZ0
VGVtcDIodGhpcywgUmV1c2UsIGxlZnQpOworICAgIEdQUlRlbXBvcmFyeSByaWdodFRlbXAyKHRo
aXMsIFJldXNlLCByaWdodCk7CisgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFs
dWVSZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3Mo
KTsKKworICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdFJlZ3MucGF5bG9hZEdQUigpOworICAgIEdQ
UlJlZyByaWdodEdQUiA9IHJpZ2h0UmVncy5wYXlsb2FkR1BSKCk7CisgICAgR1BSUmVnIHRlbXBH
UFIgPSB0ZW1wLmdwcigpOworICAgIEdQUlJlZyBsZWZ0VGVtcEdQUiA9IGxlZnRUZW1wLmdwcigp
OworICAgIEdQUlJlZyByaWdodFRlbXBHUFIgPSByaWdodFRlbXAuZ3ByKCk7CisgICAgR1BSUmVn
IGxlZnRUZW1wMkdQUiA9IGxlZnRUZW1wMi5ncHIoKTsKKyAgICBHUFJSZWcgcmlnaHRUZW1wMkdQ
UiA9IHJpZ2h0VGVtcDIuZ3ByKCk7CisKKyAgICAvLyBXZSB0cnkgdG8gYXZvaWQgcmVwZWF0ZWQg
YW5kIHJlZHVuZGFudCBjaGVja3MgaGVyZSwgd2hpY2ggbGVhZHMgdG8gdGhlIGZvbGxvd2luZyBw
c2V1ZG8tY29kZToKKyAgICAvKgorICAgICBpZiAobGVmdCA9PSB0cnVlKSB7CisgICAgICAgc3Bl
Y3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQobGVmdCk7CisgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgIH0KKyAgICAgc3BlY3VsYXRlTm90RG91YmxlKHJpZ2h0KTsKKyAgICAgc3BlY3Vs
YXRlTm90RG91YmxlKGxlZnQpOworICAgICBpZiAobGVmdCBpcyBub3QgQ2VsbCkKKyAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgIENoZWNrIHRoYXQgbGVmdCBpcyBub3QgSGVhcEJpZ0ludDsKKyAg
ICAgaWYgKGxlZnQgaXMgbm90IFN0cmluZykKKyAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIGlm
IChyaWdodCBpcyBub3QgQ2VsbCkKKyAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIGlmIChyaWdo
dCBpcyBub3QgU3RyaW5nKQorICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgcmV0dXJuIHN0cmlu
Z0VxdWFsaXR5KGxlZnQsIHJpZ2h0KQorICAgICB9CisgICAgICovCisgICAgLy8gTWVyY2lmdWxs
eSB3ZSBjYW4gb2Z0ZW4gZWxpbWluYXRlIG11Y2ggb2YgdGhpcyBzb3VwIG9mIGNvbmRpdGlvbmFs
cyB3aXRoIHRoZSBoZWxwIG9mIHRoZSBhYnN0cmFjdCBpbnRlcnByZXRlci4KKworICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCB0cnVlQ2FzZTsKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZmFs
c2VDYXNlOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90RXF1YWwgPSBtX2ppdC5icmFuY2g2
NChKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAvLyBXZSBj
YW5ub3QgdXNlIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50IGhlcmUsIGJlY2F1
c2UgaXQgdXBkYXRlcyB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUsIGFuZCB3ZSBjYW4gc2tpcCBvdmVy
IGl0LgorICAgIC8vIFNvIHdlIHdvdWxkIGFsd2F5cyBza2lwIHRoZSBzcGVjdWxhdGVOb3REb3Vi
bGUgdGhhdCBmb2xsb3dzLgorICAgIGlmIChuZWVkc1R5cGVDaGVjayhuZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludENoaWxkLCB+U3BlY0Z1bGxEb3VibGUpKSB7CisgICAgICAgIGlmIChuZWVkc1R5
cGVDaGVjayhuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCB+U3BlY0ludDMyT25seSkp
CisgICAgICAgICAgICB0cnVlQ2FzZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZJbnQzMihsZWZ0UmVn
cykpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIGxlZnRSZWdzLCBuZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLm5vZGUoKSwgbV9qaXQuYnJhbmNoSWZOdW1iZXIobGVm
dFJlZ3MsIHRlbXBHUFIpKTsKKyAgICB9CisgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIH5TcGVjSGVhcEJpZ0ludCkpIHsKKyAgICAgICAgaWYg
KG5lZWRzVHlwZUNoZWNrKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIFNwZWNDZWxs
KSkKKyAgICAgICAgICAgIHRydWVDYXNlLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwobGVm
dFJlZ3MpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBsZWZ0UmVncywgbmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZC5ub2RlKCksIG1faml0LmJyYW5jaElmSGVhcEJp
Z0ludChsZWZ0R1BSKSk7CisgICAgfQorICAgIHRydWVDYXNlLmFwcGVuZChtX2ppdC5qdW1wKCkp
OworICAgIG5vdEVxdWFsLmxpbmsoJm1faml0KTsKKworICAgIHNwZWN1bGF0ZU5vdERvdWJsZShu
b3REb3VibGVDaGlsZCwgcmlnaHRSZWdzLCB0ZW1wR1BSKTsKKyAgICBzcGVjdWxhdGVOb3REb3Vi
bGUobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwgbGVmdFJlZ3MsIHRlbXBHUFIpOwor
CisgICAgYm9vbCBsZWZ0TWF5QmVOb3RDZWxsID0gbmVlZHNUeXBlQ2hlY2sobmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnRDaGlsZCwgU3BlY0NlbGxDaGVjayk7CisgICAgaWYgKGxlZnRNYXlCZU5v
dENlbGwpCisgICAgICAgIGZhbHNlQ2FzZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGxl
ZnRSZWdzKSk7CisKKyAgICBERkdfVFlQRV9DSEVDSyhsZWZ0UmVncywgbmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnRDaGlsZCwgflNwZWNIZWFwQmlnSW50LCBtX2ppdC5icmFuY2hJZkhlYXBCaWdJ
bnQobGVmdEdQUikpOworCisgICAgYm9vbCBsZWZ0TWF5QmVOb3RTdHJpbmdLbm93aW5nQ2VsbCA9
IG5lZWRzVHlwZUNoZWNrKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsICh+U3BlY1N0
cmluZykgJiBTcGVjQ2VsbENoZWNrKTsKKyAgICBpZiAobGVmdE1heUJlTm90U3RyaW5nS25vd2lu
Z0NlbGwpCisgICAgICAgIGZhbHNlQ2FzZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RTdHJpbmco
bGVmdEdQUikpOworCisgICAgYm9vbCByaWdodE1heUJlTm90Q2VsbCA9IG5lZWRzVHlwZUNoZWNr
KG5vdERvdWJsZUNoaWxkLCBTcGVjQ2VsbENoZWNrKTsKKyAgICBpZiAocmlnaHRNYXlCZU5vdENl
bGwpCisgICAgICAgIGZhbHNlQ2FzZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHJpZ2h0
UmVncykpOworCisgICAgYm9vbCByaWdodE1heUJlTm90U3RyaW5nS25vd2luZ0NlbGwgPSBuZWVk
c1R5cGVDaGVjayhub3REb3VibGVDaGlsZCwgKH5TcGVjU3RyaW5nKSAmIFNwZWNDZWxsQ2hlY2sp
OworICAgIGlmIChyaWdodE1heUJlTm90U3RyaW5nS25vd2luZ0NlbGwpCisgICAgICAgIGZhbHNl
Q2FzZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcocmlnaHRHUFIpKTsKKworICAgIGNv
bXBpbGVTdHJpbmdFcXVhbGl0eShub2RlLCBsZWZ0R1BSLCByaWdodEdQUiwgdGVtcEdQUiwgbGVm
dFRlbXBHUFIsIHJpZ2h0VGVtcEdQUiwgbGVmdFRlbXAyR1BSLCByaWdodFRlbXAyR1BSLCB0cnVl
Q2FzZSwgZmFsc2VDYXNlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsIGJvb2wgaW52
ZXJ0KQogewogICAgIEJhc2ljQmxvY2sqIHRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgp
LT50YWtlbi5ibG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VXNlS2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCmlu
ZGV4IDRiNDNjNzVkZmQ1My4uZjE0NTYyNDgwY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVXNlS2luZC5jcHAKQEAgLTE3Myw2ICsxNzMsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgVXNlS2luZCB1c2VLaW5kKQogICAgIGNhc2UgTm90RG91YmxlVXNl
OgogICAgICAgICBvdXQucHJpbnQoIk5vdERvdWJsZSIpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZToKKyAgICAgICAgb3V0LnByaW50KCJO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKICAgICAgICAgb3V0LnByaW50
KCJOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyIpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCmluZGV4IDY2ZThjNGViYTRiMC4u
ZWRlZTYyODc5NDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaApAQCAt
ODIsNiArODIsNyBAQCBlbnVtIFVzZUtpbmQgewogICAgIE5vdENlbGxVc2UsCiAgICAgTm90Q2Vs
bE5vckJpZ0ludFVzZSwKICAgICBOb3REb3VibGVVc2UsCisgICAgTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnRVc2UsCiAgICAgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2Us
CiAgICAgS25vd25PdGhlclVzZSwKICAgICBPdGhlclVzZSwKQEAgLTE5MSw2ICsxOTIsOCBAQCBp
bmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCiAgICAg
ICAgIHJldHVybiB+U3BlY0NlbGxDaGVjayAmIH5TcGVjQmlnSW50OwogICAgIGNhc2UgTm90RG91
YmxlVXNlOgogICAgICAgICByZXR1cm4gflNwZWNGdWxsRG91YmxlOworICAgIGNhc2UgTmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnRVc2U6CisgICAgICAgIHJldHVybiB+U3BlY0Z1bGxEb3VibGUg
JiB+U3BlY0hlYXBCaWdJbnQ7CiAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZ1VzZToKICAgICAgICAgcmV0dXJuIH4oU3BlY0Z1bGxEb3VibGUgfCBTcGVjSGVhcEJp
Z0ludCB8IFNwZWNTdHJpbmcpOwogICAgIGNhc2UgS25vd25PdGhlclVzZToKQEAgLTMxMiw2ICsz
MTUsNyBAQCBpbmxpbmUgYm9vbCBjaGVja01heUNyYXNoSWZJbnB1dElzRW1wdHkoVXNlS2luZCBr
aW5kKQogICAgIGNhc2UgTm90Q2VsbFVzZToKICAgICBjYXNlIE5vdENlbGxOb3JCaWdJbnRVc2U6
CiAgICAgY2FzZSBOb3REb3VibGVVc2U6CisgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJp
Z0ludFVzZToKICAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNl
OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAwM2Y4NjUyYzZjYjguLjVhNTIy
MjA4NTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcApAQCAtNTI3LDYgKzUyNyw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdyYXBo
JiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIEFueUludFVzZToKICAgICAgICAgICAgICAg
ICBjYXNlIERvdWJsZVJlcEFueUludFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE5vdERvdWJs
ZVVzZToKKyAgICAgICAgICAgICAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNl
OgogICAgICAgICAgICAgICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJp
bmdVc2U6CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKaW5kZXggYjAwMWQxMzJmMDJmLi45NDkxODgzYTYzY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTk2MzgsNiArOTYzOCwx
NSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAg
aWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNl
LCBOb3REb3VibGVVc2UpKSB7CisgICAgICAgICAgICBjb21waWxlTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnRUb05vdERvdWJsZVN0cmljdEVxdWFsaXR5KG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlm
IChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOb3REb3VibGVVc2UsIE5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgY29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShtX25vZGUtPmNoaWxkMigpLCBtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIC8v
IEZJWE1FOiB3ZSBjYW4gZG8gc29tZXRoaW5nIG11Y2ggc21hcnRlciBoZXJlLCBzZWUgdGhlIERG
R1NwZWN1bGF0aXZlSklUIGFwcHJvYWNoIGluIGUuZy4gU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1
bGF0aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9k
ZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSksIG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpLCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSk7CiAgICAgICAgIGdlbmVyaWNK
U1ZhbHVlQ29tcGFyZSgKQEAgLTk2ODYsNiArOTY5NSw5MSBAQCBwcml2YXRlOgogICAgICAgICBz
ZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgZmFzdFRydWUsIGZhc3RGYWxzZSwgc2xvd1Jlc3Vs
dCkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
RWRnZSwgRWRnZSBub3REb3VibGVFZGdlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50RWRnZS51c2VLaW5kKCkgPT0gTmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnRVc2UpOworICAgICAgICBBU1NFUlQobm90RG91YmxlRWRnZS51c2VLaW5kKCkgPT0gTm90
RG91YmxlVXNlKTsKKworICAgICAgICBMVmFsdWUgbGVmdFZhbHVlID0gbG93SlNWYWx1ZShuZWl0
aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Cisg
ICAgICAgIExWYWx1ZSByaWdodFZhbHVlID0gbG93SlNWYWx1ZShub3REb3VibGVFZGdlLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBTcGVjdWxhdGVkVHlwZSBsZWZ0VmFsdWVU
eXBlID0gcHJvdmVuVHlwZShuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UpOworICAgICAg
ICBTcGVjdWxhdGVkVHlwZSByaWdodFZhbHVlVHlwZSA9IHByb3ZlblR5cGUobm90RG91YmxlRWRn
ZSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgdHJpdmlhbGx5RXF1YWxDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzTm90SW50MzJFcXVhbENhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNDZWxsRXF1YWxDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgcmV0dXJuVHJ1ZUJsb2Nr
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbm90VHJpdmlhbGx5RXF1
YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzQ2Vs
bCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc1N0cmluZyA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNDZWxsID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgcmlnaHRJc1N0cmluZyA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisKKyAgICAgICAgLy8gV2UgdHJ5IHRvIGF2b2lkIHJlcGVhdGVkIGFuZCByZWR1
bmRhbnQgY2hlY2tzIGhlcmUsIHdoaWNoIGxlYWRzIHRvIHRoZSBmb2xsb3dpbmcgcHNldWRvLWNv
ZGU6CisgICAgICAgIC8qCisgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkgeworICAgICAgICAg
ICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChsZWZ0KTsKKyAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICB9CisgICAgICAgICBzcGVjdWxhdGVOb3REb3VibGUocmln
aHQpOworICAgICAgICAgc3BlY3VsYXRlTm90RG91YmxlKGxlZnQpOworICAgICAgICAgaWYgKGxl
ZnQgaXMgbm90IENlbGwpCisgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIENoZWNr
IHRoYXQgbGVmdCBpcyBub3QgSGVhcEJpZ0ludDsKKyAgICAgICAgIGlmIChsZWZ0IGlzIG5vdCBT
dHJpbmcpCisgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIGlmIChyaWdodCBpcyBu
b3QgQ2VsbCkKKyAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgaWYgKHJpZ2h0IGlz
IG5vdCBTdHJpbmcpCisgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIHJldHVybiBz
dHJpbmdFcXVhbGl0eShsZWZ0LCByaWdodCkKKyAgICAgICAgIH0KKyAgICAgICAgICovCisgICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChsZWZ0VmFsdWUsIHJpZ2h0VmFsdWUpLCB1bnN1
cmUodHJpdmlhbGx5RXF1YWxDYXNlKSwgdW5zdXJlKG5vdFRyaXZpYWxseUVxdWFsQ2FzZSkpOwor
CisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8odHJpdmlhbGx5
RXF1YWxDYXNlLCBsZWZ0SXNOb3RJbnQzMkVxdWFsQ2FzZSk7CisgICAgICAgIC8vIExvZ2ljYWxs
eSB3ZSB3YW50IHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50LCBidXQgd2UgY2Fu
bm90IHVzZSBpdCBoZXJlIGFzIGl0IGNoYW5nZXMgdGhlIHN0YXRlIG9mIHRoZSBhYnN0cmFjdCBp
bnRlcnByZXRlci4KKyAgICAgICAgLy8gU28gaWYgd2UgdXNlZCBpdCBoZXJlLCB3ZSB3b3VsZCBz
a2lwIHRoZSBsYXRlciBjaGVja3MuCisgICAgICAgIC8vIEluc3RlYWQgd2UgcmVpbXBsZW1lbnQg
aXQgaW4gdGhpcyBhbmQgdGhlIG5leHQgZmV3IGJsb2NrcywgdXNpbmcgdHlwZUNoZWNrV2l0aG91
dFVwZGF0aW5nSW50ZXJwcmV0ZXIuCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKGxlZnRW
YWx1ZSwgcHJvdmVuVHlwZShuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UpKSwgdW5zdXJl
KHJldHVyblRydWVCbG9jayksIHVuc3VyZShsZWZ0SXNOb3RJbnQzMkVxdWFsQ2FzZSkpOworCisg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc05vdEludDMyRXF1YWxDYXNlLCBsZWZ0SXNDZWxs
RXF1YWxDYXNlKTsKKyAgICAgICAgdHlwZUNoZWNrV2l0aG91dFVwZGF0aW5nSW50ZXJwcmV0ZXIo
anNWYWx1ZVZhbHVlKGxlZnRWYWx1ZSksIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50RWRnZSwg
flNwZWNGdWxsRG91YmxlLCBpc051bWJlcihsZWZ0VmFsdWUpKTsKKyAgICAgICAgbV9vdXQuYnJh
bmNoKGlzQ2VsbChsZWZ0VmFsdWUsIHByb3ZlblR5cGUobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnRFZGdlKSksIHVuc3VyZShsZWZ0SXNDZWxsRXF1YWxDYXNlKSwgdW5zdXJlKHJldHVyblRydWVC
bG9jaykpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc0NlbGxFcXVhbENhc2UsIHJl
dHVyblRydWVCbG9jayk7CisgICAgICAgIHR5cGVDaGVja1dpdGhvdXRVcGRhdGluZ0ludGVycHJl
dGVyKGpzVmFsdWVWYWx1ZShsZWZ0VmFsdWUpLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVk
Z2UsIH5TcGVjSGVhcEJpZ0ludCwgaXNIZWFwQmlnSW50KGxlZnRWYWx1ZSkpOworICAgICAgICBt
X291dC5qdW1wKHJldHVyblRydWVCbG9jayk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmV0
dXJuVHJ1ZUJsb2NrLCBub3RUcml2aWFsbHlFcXVhbENhc2UpOworICAgICAgICBWYWx1ZUZyb21C
bG9jayBmYXN0VHJ1ZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhub3RU
cml2aWFsbHlFcXVhbENhc2UsIGxlZnRJc0NlbGwpOworICAgICAgICBzcGVjdWxhdGVOb3REb3Vi
bGUobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRFZGdlKTsKKyAgICAgICAgc3BlY3VsYXRlTm90
RG91YmxlKG5vdERvdWJsZUVkZ2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0RmFsc2Ug
PSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNo
KGlzTm90Q2VsbChsZWZ0VmFsdWUsIGxlZnRWYWx1ZVR5cGUpLCB1bnN1cmUoY29udGludWF0aW9u
KSwgdW5zdXJlKGxlZnRJc0NlbGwpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXND
ZWxsLCBsZWZ0SXNTdHJpbmcpOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUo
bGVmdFZhbHVlKSwgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRFZGdlLCB+U3BlY0hlYXBCaWdJ
bnQsIGlzSGVhcEJpZ0ludChsZWZ0VmFsdWUpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90
U3RyaW5nKGxlZnRWYWx1ZSwgbGVmdFZhbHVlVHlwZSksIHVuc3VyZShjb250aW51YXRpb24pLCB1
bnN1cmUobGVmdElzU3RyaW5nKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdElzU3Ry
aW5nLCByaWdodElzQ2VsbCk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdENlbGwocmlnaHRW
YWx1ZSwgcmlnaHRWYWx1ZVR5cGUpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHJpZ2h0
SXNDZWxsKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmlnaHRJc0NlbGwsIHJpZ2h0SXNT
dHJpbmcpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RTdHJpbmcocmlnaHRWYWx1ZSwgcmln
aHRWYWx1ZVR5cGUpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKHJpZ2h0SXNTdHJpbmcp
KTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzU3RyaW5nLCBjb250aW51YXRpb24p
OworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHN0cmlu
Z3NFcXVhbChsZWZ0VmFsdWUsIHJpZ2h0VmFsdWUsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
RWRnZSwgbm90RG91YmxlRWRnZSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAg
ICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBmYXN0VHJ1ZSwgZmFzdEZhbHNlLCBzbG93
UmVzdWx0KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ29tcGFyZUVxUHRyKCkKICAgICB7
CiAgICAgICAgIHNldEJvb2xlYW4oCkBAIC0xNzgyMCwyNSArMTc5MTQsMjUgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKGhpZ2hWYWx1ZSwgdHlwZXNQYXNz
ZWRUaHJvdWdoKTsKICAgICB9Ci0gICAgCi0gICAgdm9pZCB0eXBlQ2hlY2soCisKKyAgICB2b2lk
IHR5cGVDaGVja1dpdGhvdXRVcGRhdGluZ0ludGVycHJldGVyKAogICAgICAgICBGb3JtYXR0ZWRW
YWx1ZSBsb3dWYWx1ZSwgRWRnZSBoaWdoVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2Vk
VGhyb3VnaCwKICAgICAgICAgTFZhbHVlIGZhaWxDb25kaXRpb24sIEV4aXRLaW5kIGV4aXRLaW5k
ID0gQmFkVHlwZSkKLSAgICB7Ci0gICAgICAgIGFwcGVuZFR5cGVDaGVjayhsb3dWYWx1ZSwgaGln
aFZhbHVlLCB0eXBlc1Bhc3NlZFRocm91Z2gsIGZhaWxDb25kaXRpb24sIGV4aXRLaW5kKTsKLSAg
ICB9Ci0gICAgCi0gICAgdm9pZCBhcHBlbmRUeXBlQ2hlY2soCi0gICAgICAgIEZvcm1hdHRlZFZh
bHVlIGxvd1ZhbHVlLCBFZGdlIGhpZ2hWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRU
aHJvdWdoLAotICAgICAgICBMVmFsdWUgZmFpbENvbmRpdGlvbiwgRXhpdEtpbmQgZXhpdEtpbmQp
CiAgICAgewogICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soaGlnaFZh
bHVlLCB0eXBlc1Bhc3NlZFRocm91Z2gpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBB
U1NFUlQobWF5SGF2ZVR5cGVDaGVjayhoaWdoVmFsdWUudXNlS2luZCgpKSk7CiAgICAgICAgIGFw
cGVuZE9TUkV4aXQoZXhpdEtpbmQsIGxvd1ZhbHVlLCBoaWdoVmFsdWUubm9kZSgpLCBmYWlsQ29u
ZGl0aW9uLCBtX29yaWdpbik7CisgICAgfQorCisgICAgdm9pZCB0eXBlQ2hlY2soCisgICAgICAg
IEZvcm1hdHRlZFZhbHVlIGxvd1ZhbHVlLCBFZGdlIGhpZ2hWYWx1ZSwgU3BlY3VsYXRlZFR5cGUg
dHlwZXNQYXNzZWRUaHJvdWdoLAorICAgICAgICBMVmFsdWUgZmFpbENvbmRpdGlvbiwgRXhpdEtp
bmQgZXhpdEtpbmQgPSBCYWRUeXBlKQorICAgIHsKKyAgICAgICAgdHlwZUNoZWNrV2l0aG91dFVw
ZGF0aW5nSW50ZXJwcmV0ZXIobG93VmFsdWUsIGhpZ2hWYWx1ZSwgdHlwZXNQYXNzZWRUaHJvdWdo
LCBmYWlsQ29uZGl0aW9uLCBleGl0S2luZCk7CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVy
KGhpZ2hWYWx1ZSwgdHlwZXNQYXNzZWRUaHJvdWdoKTsKICAgICB9Ci0gICAgCisKICAgICBMVmFs
dWUgbG93SW50MzIoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRv
bWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1v
ZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IChlZGdlLnVzZUtpbmQoKSA9
PSBJbnQzMlVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBLbm93bkludDMyVXNlKSk7CkBAIC0xODY5
NCw2ICsxODc4OCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTm90RG91YmxlVXNlOgogICAg
ICAgICAgICAgc3BlY3VsYXRlTm90RG91YmxlKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2U6CisgICAgICAgICAgICBz
cGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChlZGdlKTsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNl
OgogICAgICAgICAgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJp
bmcoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE4NzYxLDYgKzE4ODU4LDMwIEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwog
ICAgIH0KIAorICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRn
ZSBlZGdlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNr
KGVkZ2UpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxv
d0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgICAgICBMQmFz
aWNCbG9jayBpc05vdEludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxv
Y2sgaXNDZWxsQmxvY2sgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBj
b250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChp
c0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVu
c3VyZShpc05vdEludDMyKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhpc05vdEludDMyLCBpc0NlbGxCbG9jayk7CisgICAgICAgIEZUTF9UWVBFX0NI
RUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIH5TcGVjRnVsbERvdWJsZSwgaXNOdW1iZXIo
dmFsdWUpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShl
ZGdlKSksIHVuc3VyZShpc0NlbGxCbG9jayksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAg
ICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxCbG9jaywgY29udGludWF0aW9uKTsKKyAgICAgICAg
RlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgflNwZWNIZWFwQmlnSW50
LCBpc0hlYXBCaWdJbnQodmFsdWUpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAg
IH0KKwogICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJp
bmcoRWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlw
ZUNoZWNrKGVkZ2UpKQo=
</data>
<flag name="review"
          id="458509"
          type_id="1"
          status="-"
          setter="rmorisset"
    />
    <flag name="commit-queue"
          id="458510"
          type_id="3"
          status="-"
          setter="rmorisset"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435649</attachid>
            <date>2021-08-16 17:34:07 -0700</date>
            <delta_ts>2021-09-08 16:35:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226755</filename>
            <type>text/plain</type>
            <size>34919</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MGQwMGY0N2Y4MzlhLi41NDMxNDA5ZmY4ZDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDgtMTYgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBj
b21wYXJlU3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMgYSBkb3VibGUgYW5kIGF0IGxlYXN0
IG9uZSBpcyBub3QgYSBCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjc1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzkzMjE1NDI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSB0aGUg
ZXJyb3IgbWVzc2FnZXMgaW4gc3RyZXNzL3JlZmxlY3Qtc2V0IGEgYml0IG1vcmUgaW5mb3JtYXRp
dmUgaW4gdGhlIHByb2Nlc3Mgb2YgZGVidWdnaW5nIGFuIGlzc3VlIHdpdGggdGhlIHBhdGNoLgor
CisgICAgICAgICogc3RyZXNzL3JlZmxlY3Qtc2V0LmpzOgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAoc2hvdWxkVGhyb3cpOgorCiAyMDIxLTA4LTEzICBLZWl0aCBNaWxsZXIgIDxrZWl0
aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVy
dHlOYW1lIGFsd2F5cyBuZWVkcyB0byBiZSBhYmxlIHRvIGhhbmRsZSBJbmRleGVkTW9kZQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVmbGVjdC1zZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9y
ZWZsZWN0LXNldC5qcwppbmRleCAwN2Y0YzM2MTliMWQuLjYzZTQwNzAzMjUwYSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvcmVmbGVjdC1zZXQuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVm
bGVjdC1zZXQuanMKQEAgLTEsNiArMSw2IEBACiBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBkZXNjcmliZShhY3R1YWwpICsgJywgZXhwZWN0ZWQ6ICcgKyBkZXNj
cmliZShleHBlY3RlZCkpOwogfQogCiBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBtZXNzYWdl
KSB7CkBAIC0xMSw5ICsxMSw5IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIG1lc3NhZ2Up
IHsKICAgICAgICAgZXJyb3IgPSBlOwogICAgIH0KICAgICBpZiAoIWVycm9yKQotICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24uJyk7CisgICAgICAgIHRocm93IG5ldyBFcnJvcign
bm90IHRocm93bi4gRXhwZWN0ZWQ6ICcgKyBtZXNzYWdlKTsKICAgICBpZiAoU3RyaW5nKGVycm9y
KSAhPT0gbWVzc2FnZSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgZXJyb3I6ICcgKyBT
dHJpbmcoZXJyb3IpKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgZXJyb3I6ICcgKyBT
dHJpbmcoZXJyb3IpICsgJywgZXhwZWN0ZWQ6ICcgKyBtZXNzYWdlKTsKIH0KIAogZnVuY3Rpb24g
dW5yZWFjaGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYjY3YjM3MDIzOWQwLi42
YjM2OThiN2M2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisy
MDIxLTA4LTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAg
ICAgT3B0aW1pemUgY29tcGFyZVN0cmljdEVxIHdoZW4gbmVpdGhlciBzaWRlIGlzIGEgZG91Ymxl
IGFuZCBhdCBsZWFzdCBvbmUgaXMgbm90IGEgQmlnSW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3NTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgdmVyeSBzaW1pbGFyIHBhdGNoIHRv
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2NzYuCisgICAgICAg
IFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgaGVyZSB3ZSBhbGxvdyBTdHJpbmdzIG9uIGJvdGggc2lk
ZSBvZiB0aGUgY29tcGFyaXNvbiwgc28gd2UgbXVzdCBhZGQgY29kZSB0byBoYW5kbGUgZXF1YWxp
dHkgYW1vbmcgc3RyaW5ncy4KKworICAgICAgICBMaWtlIGZvciB0aGF0IG90aGVyIHBhdGNoLCB0
aGUgb3B0aW1pemF0aW9uIGlzIGRpc2FibGVkIGZvciBCaWdJbnQzMi4KKyAgICAgICAgRW5hYmxp
bmcgaXQgaW4gdGhhdCBjYXNlIHdvdWxkIGVpdGhlciBuZWVkIG1vZGlmeWluZyB0aGUgc3BlY3Vs
YXRpb24gKGZyb20gYmFubmluZyBIZWFwQmlnSW50IHRvIGJhbm5pbmcgYWxsIEJpZ0ludHMpLCBv
ciBlbnN1cmluZyB0aGF0IHdlIGNhbiBuZXZlciBoYXZlIGEgSGVhcEJpZ0ludCBzbyBzbWFsbCBp
dCBjb21wYXJlcyBlcXVhbCB0byBhIEJpZ0ludDMyLgorCisgICAgICAgIEkgb25seSBpbXBsZW1l
bnRlZCB0aGlzIG9wdGltaXphdGlvbiBvbiA2NC1iaXRzOiBpdCBpcyBqdXN0IHBhaW5mdWwgdG8g
d3JpdGUgY29kZSB0aGF0IGhhbmRsZXMgcmVnaXN0ZXJzIGF0IHN1Y2ggYSBsb3ctbGV2ZWwgd2l0
aG91dCBhIDMyLWJpdCBtYWNoaW5lIHRvIHRlc3QgdGhpbmdzIGxvY2FsbHkuCisgICAgICAgIElm
IGFueW9uZSB3YW50cyB0byBtYWtlIHRoaXMgb3B0aW1pemF0aW9uIHdvcmsgb24gMzItYml0LCBJ
IGRvbid0IGZvcmV0ZWxsIGFueSBtYWpvciBkaWZmaWN1bHR5LgorCisgICAgICAgIEZpbmFsbHks
IGxpa2UgcXVpdGUgYSBmZXcgb3RoZXIgdXNlS2luZHMgYWxyZWFkeSwgdGhpcyBjYXNlIGRvZXMg
bm90IG1ha2UgdGhlIENvbXBhcmVTdHJpY3RFcSBtZXJnZSB3aXRoIGFuIGFkamFjZW50IEJyYW5j
aC4KKyAgICAgICAgVGhlIHJlYXNvbiBpcyBzaW1wbHkgdGhhdCB0aGlzIHBhdGNoIHJlbGllcyBv
biBjb21waWxlU3RyaW5nRXF1YWxpdHksIHdoaWNoIGN1cnJlbnRseSBkb2VzIG5vdCBzdXBwb3J0
IHRoYXQgZmVhdHVyZS4KKyAgICAgICAgSSBpbnRlbmQgdG8gZml4IHRoaXMgKGZvciBhbGwgdXNl
S2luZHMgYXQgb25jZSkgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KKworICAgICAgICBFZmZlY3Qgb24g
bWljcm9iZW5jaG1hcmtzOgorICAgICAgICBwb2x5LXN0cmljdGVxLW5vdC1kb3VibGUgICAgICAg
ICAgICAgICAgICA0Ni44MDAwKy0wLjQxMTAgICAgIF4gICAgIDIzLjU4NzIrLTAuMzA2MSAgICAg
ICAgXiBkZWZpbml0ZWx5IDEuOTg0MXggZmFzdGVyCisgICAgICAgIHBvbHktc3RyaWN0ZXEtbm90
LWRvdWJsZS1ub3Itc3RyaW5nICAgICAgIDE2LjY4ODArLTAuMjMxNyAgICAgICAgICAgMTYuMzYy
NystMC4zNzI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5OXggZmFzdGVyCisgICAgICAgIHBvbHkt
c3RyaWN0ZXEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5LjIxNzUrLTAuNjA0NyAgICAg
ICAgICAgNDguOTUzMistMC42NzU4CisKKyAgICAgICAgSSBsb29rZWQgYXQgaG93IG1hbnkgY2Fz
ZXMgb2YgVW50eXBlZC9VbnR5cGVkIGNvbXBhcmVTdHJpY3RFcSBoYXZlIGJlZW4gZml4ZWQgYnkg
dGhpcyBwYXRjaCBhbmQgdHdvIG90aGVyIHJlY2VudCBwYXRjaGVzLgorICAgICAgICBPbiBKZXRT
dHJlYW0yOgorICAgICAgICAtIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY2MjE6IDczMSBpbnN0YW5jZXMKKyAgICAgICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2OiA5NDQgaW5zdGFuY2VzCisgICAgICAgIC0gVGhpcyBw
YXRjaDogb25seSAyNiBpbnN0YW5jZXMKKyAgICAgICAgVGhpcyBsZWF2ZXMgMjAgaW5zdGFuY2Vz
IG9mIFVudHlwZWQvVW50eXBlZC4KKworICAgICAgICBPbiBTcGVlZG9tZXRlcjIuMDoKKyAgICAg
ICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIxOiAxNTg3
IGluc3RhbmNlcworICAgICAgICAtIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjY2NzY6IDI3ODQgaW5zdGFuY2VzCisgICAgICAgIC0gVGhpcyBwYXRjaDogODkxIGlu
c3RhbmNlcworICAgICAgICBUaGlzIGxlYXZlcyA3NSBpbnN0YW5jZXMgb2YgVW50eXBlZC9VbnR5
cGVkLgorCisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpT
Qzo6aXNOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFNwZWN1bGF0aW9uKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cENvbXBhcmVTdHJpY3RFcUFuZFNhbWVWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR05vZGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludCk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEJpdHdpc2VKU1ZhbHVlRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0QnJhbmNoT25CaXR3aXNlSlNWYWx1ZUVxdWFsaXR5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5vdERvdWJsZU5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludE5vclN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRUb05vdERvdWJsZVN0
cmljdEVxdWFsaXR5KToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChX
VEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAg
IChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6CisgICAgICAgIChKU0M6OkRGRzo6Y2hlY2tNYXlD
cmFzaElmSW5wdXRJc0VtcHR5KToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUNvbXBhcmVTdHJpY3RFcSk6CisKIDIwMjEtMDgtMTUgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVh
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtBUk02NF0gQWRkIFByZS9Qb3N0LUluZGV4ZWQgQWRk
cmVzcyBNb2RlIHRvIEFpciBmb3IgQVJNNjQgKFN0b3JlIEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCA5Njk3Nzgz
NTU3NDEuLjI3YTcwM2NjZDdmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTQ0OSw2ICs0NDksMTEgQEAgaW5saW5lIGJvb2wgaXNO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRU
eXBlIHR5cGUKICAgICByZXR1cm4gISh0eXBlICYgKFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBC
aWdJbnQgfCBTcGVjU3RyaW5nKSk7CiB9CiAKK2lubGluZSBib29sIGlzTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB0eXBlKQoreworICAgIHJldHVy
biAhKHR5cGUgJiAoU3BlY0Z1bGxEb3VibGUgfCBTcGVjSGVhcEJpZ0ludCkpOworfQorCiBpbmxp
bmUgYm9vbCBpc090aGVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAg
cmV0dXJuIHZhbHVlID09IFNwZWNPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAppbmRleCA2MGZiYjE1YzU5MTYuLmNlMjY1ODRhMWE2OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5
VXNlS2luZChPYmplY3RVc2UpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
TWlzY1VzZSwgVW50eXBlZFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2Us
IE1pc2NVc2UpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRl
bnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdFN0cmlu
Z1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpCi0gICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1Vz
ZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpKQorICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdV
c2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZ1VzZSwgTm90RG91YmxlVXNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IGFhNDk2NGU5YTVjZi4uZmM0NDI2OGExZTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTQ0NjUsNyArNDQ2NSwyMyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFy
ZVN0cmljdEVxKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotI2VuZGlmCisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCgpCisgICAgICAgICAgICAmJiBub2RlLT5jaGls
ZDIoKS0+c2hvdWxkU3BlY3VsYXRlTm90RG91YmxlKCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8Tm90RG91YmxlVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBu
b2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlTm90RG91YmxlKCkKKyAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRT
cGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBmaXhF
ZGdlPE5vdERvdWJsZVVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisjZW5kaWYg
Ly8gIVVTRShCSUdJTlQzMikKICAgICB9CiAKICAgICB2b2lkIGZpeHVwQ2hlY2tzSW5CbG9jayhC
YXNpY0Jsb2NrKiBibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggYWMy
YjRiNWYwMjgzLi5jNzFlNzA1ZjQyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CkBAIC0yODg3LDYgKzI4ODcsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGlz
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KCkpOwogICAgIH0KKworICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNo
b3VsZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKCkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDFlMDQ0Y2Y5ZGIxYy4uYjVl
NDZkMTc0ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwQW55
SW50VXNlOgogICAgICAgICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAgICAgY2FzZSBOZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKKyAgICAgICAgY2FzZSBOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludFVzZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDg2OWRjYzIxZmI1ZS4uZDRjMjBiMGRiYjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtNzIyMiw3ICs3MjIyLDIxIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJp
Y3RFcShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlTm90RG91YmxlTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShub2RlLCBub3REb3VibGVDaGlsZCwg
bmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0jZW5kaWYKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2UsIE5vdERvdWJs
ZVVzZSkpIHsKKyAgICAgICAgRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkID0g
bm9kZS0+Y2hpbGQxKCk7CisgICAgICAgIEVkZ2Ugbm90RG91YmxlQ2hpbGQgPSBub2RlLT5jaGls
ZDIoKTsKKyAgICAgICAgY29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3Vi
bGVTdHJpY3RFcXVhbGl0eShub2RlLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCBu
b3REb3VibGVDaGlsZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChOb3REb3VibGVVc2UsIE5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50VXNlKSkgeworICAgICAgICBFZGdlIG5vdERvdWJsZUNoaWxkID0gbm9kZS0+Y2hpbGQxKCk7
CisgICAgICAgIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCA9IG5vZGUtPmNo
aWxkMigpOworICAgICAgICBjb21waWxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRUb05vdERv
dWJsZVN0cmljdEVxdWFsaXR5KG5vZGUsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQs
IG5vdERvdWJsZUNoaWxkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZiAv
LyBVU0UoSlNWQUxVRTY0KQorI2VuZGlmIC8vICFVU0UoQklHSU5UMzIpCiAKICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVIZWFw
QmlnSW50RXF1YWxpdHkobm9kZSk7CkBAIC03NDUzLDYgKzc0NjcsNDAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSogbm9kZSwgTm9kZSog
YnJhbmNoTm9kZSkKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCaXR3aXNl
SlNWYWx1ZUVxdWFsaXR5KEpTVmFsdWVPcGVyYW5kJiBsZWZ0LCBKU1ZhbHVlT3BlcmFuZCYgcmln
aHQsIEdQUlRlbXBvcmFyeSYgcmVzdWx0KQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9q
aXQuY29tcGFyZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5ncHIoKSwgcmlnaHQuZ3ByKCks
IHJlc3VsdC5ncHIoKSk7CisjZWxzZQorICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBy
ZXN1bHQuZ3ByKCkpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEVxdWFsID0gbV9qaXQuYnJh
bmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LnRhZ0dQUigpLCByaWdodC50YWdHUFIo
KSk7CisgICAgbV9qaXQuY29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5wYXlsb2Fk
R1BSKCksIHJpZ2h0LnBheWxvYWRHUFIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICBub3RFcXVhbC5s
aW5rKCZtX2ppdCk7CisjZW5kaWYKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5j
aE9uQml0d2lzZUpTVmFsdWVFcXVhbGl0eShKU1ZhbHVlT3BlcmFuZCYgbGVmdCwgSlNWYWx1ZU9w
ZXJhbmQmIHJpZ2h0LCBCYXNpY0Jsb2NrKiB0YWtlbiwgQmFzaWNCbG9jayogbm90VGFrZW4pCit7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAg
ICAgICAgYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LmdwcigpLCByaWdodC5n
cHIoKSwgbm90VGFrZW4pOworICAgICAgICBqdW1wKHRha2VuKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBicmFuY2g2NChKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQuZ3ByKCksIHJpZ2h0Lmdwcigp
LCB0YWtlbik7CisgICAgICAgIGp1bXAobm90VGFrZW4pOworICAgIH0KKyNlbHNlCisgICAgYnJh
bmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LnRhZ0dQUigpLCByaWdodC50YWdHUFIo
KSwgbm90VGFrZW4pOworICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAgICAgICBi
cmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCByaWdodC5w
YXlsb2FkR1BSKCksIG5vdFRha2VuKTsKKyAgICAgICAganVtcCh0YWtlbik7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0LnBheWxvYWRHUFIo
KSwgcmlnaHQucGF5bG9hZEdQUigpLCB0YWtlbik7CisgICAgICAgIGp1bXAobm90VGFrZW4pOwor
ICAgIH0KKyNlbmRpZgorfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90RG91Ymxl
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShOb2RlKiBu
b2RlLCBFZGdlIG5vdERvdWJsZUNoaWxkLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
Tm9yU3RyaW5nQ2hpbGQpCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBub3REb3Vi
bGVDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKQEAgLTc0NzIsMTQgKzc1MjAsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcQogICAgIHNwZWN1bGF0ZU5vdERvdWJsZShub3REb3Vi
bGVDaGlsZCwgbGVmdFJlZ3MsIHRlbXBHUFIpOwogICAgIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5n
Q2hpbGQsIHJpZ2h0UmVncywgdGVtcEdQUik7CiAKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIG1f
aml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQuZ3ByKCksIHJpZ2h0Lmdwcigp
LCByZXN1bHQuZ3ByKCkpOwotI2Vsc2UKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwg
cmVzdWx0LmdwcigpKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbCA9IG1faml0LmJy
YW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC50YWdHUFIoKSwgcmlnaHQudGFnR1BS
KCkpOwotICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQucGF5bG9h
ZEdQUigpLCByaWdodC5wYXlsb2FkR1BSKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgbm90RXF1YWwu
bGluaygmbV9qaXQpOwotI2VuZGlmCisgICAgZW1pdEJpdHdpc2VKU1ZhbHVlRXF1YWxpdHkobGVm
dCwgcmlnaHQsIHJlc3VsdCk7CiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogfQogCkBAIC03NDk5LDI0ICs3NTQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJp
bmcKICAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFr
ZW4uYmxvY2s7CiAgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hE
YXRhKCktPm5vdFRha2VuLmJsb2NrOwogCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAodGFr
ZW4gPT0gbmV4dEJsb2NrKCkpIHsKLSAgICAgICAgYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCBsZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgbm90VGFrZW4pOwotICAgICAgICBqdW1wKHRh
a2VuKTsKLSAgICB9IGVsc2UgewotICAgICAgICBicmFuY2g2NChKSVRDb21waWxlcjo6RXF1YWws
IGxlZnQuZ3ByKCksIHJpZ2h0LmdwcigpLCB0YWtlbik7Ci0gICAgICAgIGp1bXAobm90VGFrZW4p
OwotICAgIH0KLSNlbHNlCi0gICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0
LnRhZ0dQUigpLCByaWdodC50YWdHUFIoKSwgbm90VGFrZW4pOwotICAgIGlmICh0YWtlbiA9PSBu
ZXh0QmxvY2soKSkgewotICAgICAgICBicmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxl
ZnQucGF5bG9hZEdQUigpLCByaWdodC5wYXlsb2FkR1BSKCksIG5vdFRha2VuKTsKLSAgICAgICAg
anVtcCh0YWtlbik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6
OkVxdWFsLCBsZWZ0LnBheWxvYWRHUFIoKSwgcmlnaHQucGF5bG9hZEdQUigpLCB0YWtlbik7Ci0g
ICAgICAgIGp1bXAobm90VGFrZW4pOwotICAgIH0KLSNlbmRpZgorICAgIGVtaXRCcmFuY2hPbkJp
dHdpc2VKU1ZhbHVlRXF1YWxpdHkobGVmdCwgcmlnaHQsIHRha2VuLCBub3RUYWtlbik7CiB9CiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdFcXVhbGl0eSgKQEAgLTExNzc5LDYg
KzExODAzLDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5vdERvdWJsZShFZGdl
IGVkZ2UpCiAgICAgc3BlY3VsYXRlTm90RG91YmxlKGVkZ2UsIHJlZ3MsIHRlbXBHUFIpOwogfQog
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dChFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQoreworICAgIGlm
ICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgfihTcGVjRnVsbERvdWJsZSB8IFNwZWNIZWFwQmlnSW50
KSkpCisgICAgICAgIHJldHVybjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOwor
CisgICAgYm9vbCBtYXlCZUludDMyID0gbmVlZHNUeXBlQ2hlY2soZWRnZSwgflNwZWNJbnQzMk9u
bHkpOworICAgIGlmIChtYXlCZUludDMyKQorICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFu
Y2hJZkludDMyKHJlZ3MpKTsKKworICAgIERGR19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVj
RnVsbERvdWJsZSwgbV9qaXQuYnJhbmNoSWZOdW1iZXIocmVncywgdGVtcEdQUikpOworCisgICAg
Ym9vbCBtYXlCZU5vdENlbGwgPSBuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCk7CisgICAg
aWYgKG1heUJlTm90Q2VsbCkKKyAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RD
ZWxsKHJlZ3MpKTsKKworICAgIERGR19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjSGVhcEJp
Z0ludCwgbV9qaXQuYnJhbmNoSWZIZWFwQmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7CisKKyAg
ICBpZiAobWF5QmVJbnQzMiB8fCBtYXlCZU5vdENlbGwpCisgICAgICAgIGRvbmUubGluaygmbV9q
aXQpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludChFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCB+
KFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBCaWdJbnQpKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgIEpTVmFsdWVSZWdzIHJl
Z3MgPSBvcGVyYW5kLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdw
cigpOworCisgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoZWRnZSwgcmVn
cywgdGVtcEdQUik7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVkZ2UgZWRnZSwgSlNWYWx1ZVJlZ3MgcmVncywg
R1BSUmVnIHRlbXBHUFIpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCB+KFNwZWNG
dWxsRG91YmxlIHwgU3BlY1N0cmluZyB8IFNwZWNIZWFwQmlnSW50KSkpCkBAIC0xMTc5MiwxNCAr
MTE4NTIsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmcoRWRnZSBlZGdlLCBKU1YKIAogICAgIERGR19UWVBFX0NIRUNL
KHJlZ3MsIGVkZ2UsIH5TcGVjRnVsbERvdWJsZSwgbV9qaXQuYnJhbmNoSWZOdW1iZXIocmVncywg
dGVtcEdQUikpOwogCi0gICAgYm9vbCBtYXlOb3RCZUNlbGwgPSBuZWVkc1R5cGVDaGVjayhlZGdl
LCBTcGVjQ2VsbCk7Ci0gICAgaWYgKG1heU5vdEJlQ2VsbCkKKyAgICBib29sIG1heUJlTm90Q2Vs
bCA9IG5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNDZWxsKTsKKyAgICBpZiAobWF5QmVOb3RDZWxs
KQogICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwocmVncykpOwogCiAg
ICAgc3RhdGljX2Fzc2VydChTdHJpbmdUeXBlICsgMSA9PSBIZWFwQmlnSW50VHlwZSk7CiAgICAg
REZHX1RZUEVfQ0hFQ0socmVncywgZWRnZSwgfihTcGVjU3RyaW5nIHwgU3BlY0hlYXBCaWdJbnQp
LCBtX2ppdC5icmFuY2hJZlR5cGUocmVncy5wYXlsb2FkR1BSKCksIEpTVHlwZVJhbmdlIHsgU3Ry
aW5nVHlwZSwgSGVhcEJpZ0ludFR5cGUgfSkpOwogCi0gICAgaWYgKG1heUJlSW50MzIgfHwgbWF5
Tm90QmVDZWxsKQorICAgIGlmIChtYXlCZUludDMyIHx8IG1heUJlTm90Q2VsbCkKICAgICAgICAg
ZG9uZS5saW5rKCZtX2ppdCk7CiB9CiAKQEAgLTEyMDAxLDYgKzEyMDYxLDkgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZGdlIGVkZ2UpCiAgICAgY2FzZSBOb3REb3Vi
bGVVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU5vdERvdWJsZShlZGdlKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZToKKyAgICAgICAgc3BlY3Vs
YXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoZWRnZSk7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAgICAgIHNw
ZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKGVkZ2UpOwogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAppbmRleCBkMTIwYjdiNGZiODQuLjIwMTgyMjY0ZTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTI0OCw2ICsxMjQ4LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlSGVhcEJpZ0ludEVxdWFsaXR5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9s
ZVN5bWJvbEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlKTsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIHZvaWQgY29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3Vi
bGVTdHJpY3RFcXVhbGl0eShOb2RlKiwgRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCwg
RWRnZSBub3REb3VibGUpOworI2VuZGlmCisgICAgdm9pZCBlbWl0Qml0d2lzZUpTVmFsdWVFcXVh
bGl0eShKU1ZhbHVlT3BlcmFuZCYsIEpTVmFsdWVPcGVyYW5kJiwgR1BSVGVtcG9yYXJ5JiByZXN1
bHQpOworICAgIHZvaWQgZW1pdEJyYW5jaE9uQml0d2lzZUpTVmFsdWVFcXVhbGl0eShKU1ZhbHVl
T3BlcmFuZCYsIEpTVmFsdWVPcGVyYW5kJiwgQmFzaWNCbG9jayogdGFrZW4sIEJhc2ljQmxvY2sq
IG5vdFRha2VuKTsKICAgICB2b2lkIGNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KE5vZGUqLCBFZGdlIG5vdERvdWJsZUVkZ2Us
IEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdFZGdlKTsKICAgICB2b2lk
IGNvbXBpbGVQZWVwSG9sZU5vdERvdWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3Ry
aW5nU3RyaWN0RXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUsIEVkZ2Ugbm90RG91Ymxl
RWRnZSwgRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0VkZ2UpOwogICAg
IHZvaWQgY29tcGlsZVN5bWJvbFVudHlwZWRFcXVhbGl0eShOb2RlKiwgRWRnZSBzeW1ib2xFZGdl
LCBFZGdlIHVudHlwZWRFZGdlKTsKQEAgLTE3NDAsNiArMTc0NSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNwZWN1bGF0ZU5vdENlbGxOb3JCaWdJbnQoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVO
b3REb3VibGUoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKICAgICB2b2lkIHNwZWN1
bGF0ZU5vdERvdWJsZShFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50KEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CisgICAgdm9pZCBzcGVj
dWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0
ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVkZ2UsIEpTVmFsdWVSZWdzLCBH
UFJSZWcgdGVtcCk7CiAgICAgdm9pZCBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dE5vclN0cmluZyhFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVkZ2UsIEpTVmFsdWVS
ZWdzLCBHUFJSZWcgdGVtcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA4ODA4YjEwYzgyNmMuLjliNjk3NmY4ZjdlMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CkBAIC0zMzYsNiArMzM2LDk1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
UGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQoRWRnZSBvcGVyYW5kLCBOCiAgICAgfQogfQog
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRU
b05vdERvdWJsZVN0cmljdEVxdWFsaXR5KE5vZGUqIG5vZGUsIEVkZ2UgbmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnRDaGlsZCwgRWRnZSBub3REb3VibGVDaGlsZCkKK3sKKyAgICBBU1NFUlQobmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZC51c2VLaW5kKCkgPT0gTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnRVc2UpOworICAgIEFTU0VSVChub3REb3VibGVDaGlsZC51c2VLaW5kKCkgPT0g
Tm90RG91YmxlVXNlKTsKKworICAgIEpTVmFsdWVPcGVyYW5kIGxlZnQodGhpcywgbmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnRDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBK
U1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBub3REb3VibGVDaGlsZCwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKKworICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgIEdQUlRlbXBv
cmFyeSBsZWZ0VGVtcCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgcmlnaHRUZW1wKHRoaXMpOwor
ICAgIEdQUlRlbXBvcmFyeSBsZWZ0VGVtcDIodGhpcywgUmV1c2UsIGxlZnQpOworICAgIEdQUlRl
bXBvcmFyeSByaWdodFRlbXAyKHRoaXMsIFJldXNlLCByaWdodCk7CisgICAgSlNWYWx1ZVJlZ3Mg
bGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdz
ID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKKworICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdFJlZ3Mu
cGF5bG9hZEdQUigpOworICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0UmVncy5wYXlsb2FkR1BS
KCk7CisgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgIEdQUlJlZyBsZWZ0VGVt
cEdQUiA9IGxlZnRUZW1wLmdwcigpOworICAgIEdQUlJlZyByaWdodFRlbXBHUFIgPSByaWdodFRl
bXAuZ3ByKCk7CisgICAgR1BSUmVnIGxlZnRUZW1wMkdQUiA9IGxlZnRUZW1wMi5ncHIoKTsKKyAg
ICBHUFJSZWcgcmlnaHRUZW1wMkdQUiA9IHJpZ2h0VGVtcDIuZ3ByKCk7CisKKyAgICAvLyBXZSB0
cnkgdG8gYXZvaWQgcmVwZWF0ZWQgYW5kIHJlZHVuZGFudCBjaGVja3MgaGVyZSwgd2hpY2ggbGVh
ZHMgdG8gdGhlIGZvbGxvd2luZyBwc2V1ZG8tY29kZToKKyAgICAvKgorICAgICBpZiAobGVmdCA9
PSB0cnVlKSB7CisgICAgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQobGVm
dCk7CisgICAgICAgcmV0dXJuIHRydWU7CisgICAgIH0KKyAgICAgc3BlY3VsYXRlTm90RG91Ymxl
KHJpZ2h0KTsKKyAgICAgc3BlY3VsYXRlTm90RG91YmxlKGxlZnQpOworICAgICBpZiAobGVmdCBp
cyBub3QgQ2VsbCkKKyAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIENoZWNrIHRoYXQgbGVmdCBp
cyBub3QgSGVhcEJpZ0ludDsKKyAgICAgaWYgKGxlZnQgaXMgbm90IFN0cmluZykKKyAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgIGlmIChyaWdodCBpcyBub3QgQ2VsbCkKKyAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgIGlmIChyaWdodCBpcyBub3QgU3RyaW5nKQorICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgcmV0dXJuIHN0cmluZ0VxdWFsaXR5KGxlZnQsIHJpZ2h0KQorICAgICB9CisgICAg
ICovCisgICAgLy8gTWVyY2lmdWxseSB3ZSBjYW4gb2Z0ZW4gZWxpbWluYXRlIG11Y2ggb2YgdGhp
cyBzb3VwIG9mIGNvbmRpdGlvbmFscyB3aXRoIHRoZSBoZWxwIG9mIHRoZSBhYnN0cmFjdCBpbnRl
cnByZXRlci4KKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCB0cnVlQ2FzZTsKKyAgICBKSVRD
b21waWxlcjo6SnVtcExpc3QgZmFsc2VDYXNlOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90
RXF1YWwgPSBtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnRHUFIsIHJp
Z2h0R1BSKTsKKyAgICAvLyBXZSBjYW5ub3QgdXNlIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50IGhlcmUsIGJlY2F1c2UgaXQgdXBkYXRlcyB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUs
IGFuZCB3ZSBjYW4gc2tpcCBvdmVyIGl0LgorICAgIC8vIFNvIHdlIHdvdWxkIGFsd2F5cyBza2lw
IHRoZSBzcGVjdWxhdGVOb3REb3VibGUgdGhhdCBmb2xsb3dzLgorICAgIGlmIChuZWVkc1R5cGVD
aGVjayhuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCB+U3BlY0Z1bGxEb3VibGUpKSB7
CisgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENo
aWxkLCB+U3BlY0ludDMyT25seSkpCisgICAgICAgICAgICB0cnVlQ2FzZS5hcHBlbmQobV9qaXQu
YnJhbmNoSWZJbnQzMihsZWZ0UmVncykpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIGxlZnRSZWdzLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLm5vZGUoKSwgbV9q
aXQuYnJhbmNoSWZOdW1iZXIobGVmdFJlZ3MsIHRlbXBHUFIpKTsKKyAgICB9CisgICAgaWYgKG5l
ZWRzVHlwZUNoZWNrKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIH5TcGVjSGVhcEJp
Z0ludCkpIHsKKyAgICAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Q2hpbGQsIFNwZWNDZWxsKSkKKyAgICAgICAgICAgIHRydWVDYXNlLmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdENlbGwobGVmdFJlZ3MpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBsZWZ0UmVncywgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZC5ub2RlKCks
IG1faml0LmJyYW5jaElmSGVhcEJpZ0ludChsZWZ0R1BSKSk7CisgICAgfQorICAgIHRydWVDYXNl
LmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgIG5vdEVxdWFsLmxpbmsoJm1faml0KTsKKworICAg
IHNwZWN1bGF0ZU5vdERvdWJsZShub3REb3VibGVDaGlsZCwgcmlnaHRSZWdzLCB0ZW1wR1BSKTsK
KyAgICBzcGVjdWxhdGVOb3REb3VibGUobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwg
bGVmdFJlZ3MsIHRlbXBHUFIpOworCisgICAgYm9vbCBsZWZ0TWF5QmVOb3RDZWxsID0gbmVlZHNU
eXBlQ2hlY2sobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwgU3BlY0NlbGxDaGVjayk7
CisgICAgaWYgKGxlZnRNYXlCZU5vdENlbGwpCisgICAgICAgIGZhbHNlQ2FzZS5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOb3RDZWxsKGxlZnRSZWdzKSk7CisKKyAgICBERkdfVFlQRV9DSEVDSyhsZWZ0
UmVncywgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwgflNwZWNIZWFwQmlnSW50LCBt
X2ppdC5icmFuY2hJZkhlYXBCaWdJbnQobGVmdEdQUikpOworCisgICAgYm9vbCBsZWZ0TWF5QmVO
b3RTdHJpbmdLbm93aW5nQ2VsbCA9IG5lZWRzVHlwZUNoZWNrKG5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Q2hpbGQsICh+U3BlY1N0cmluZykgJiBTcGVjQ2VsbENoZWNrKTsKKyAgICBpZiAobGVm
dE1heUJlTm90U3RyaW5nS25vd2luZ0NlbGwpCisgICAgICAgIGZhbHNlQ2FzZS5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOb3RTdHJpbmcobGVmdEdQUikpOworCisgICAgYm9vbCByaWdodE1heUJlTm90
Q2VsbCA9IG5lZWRzVHlwZUNoZWNrKG5vdERvdWJsZUNoaWxkLCBTcGVjQ2VsbENoZWNrKTsKKyAg
ICBpZiAocmlnaHRNYXlCZU5vdENlbGwpCisgICAgICAgIGZhbHNlQ2FzZS5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOb3RDZWxsKHJpZ2h0UmVncykpOworCisgICAgYm9vbCByaWdodE1heUJlTm90U3Ry
aW5nS25vd2luZ0NlbGwgPSBuZWVkc1R5cGVDaGVjayhub3REb3VibGVDaGlsZCwgKH5TcGVjU3Ry
aW5nKSAmIFNwZWNDZWxsQ2hlY2spOworICAgIGlmIChyaWdodE1heUJlTm90U3RyaW5nS25vd2lu
Z0NlbGwpCisgICAgICAgIGZhbHNlQ2FzZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RTdHJpbmco
cmlnaHRHUFIpKTsKKworICAgIGNvbXBpbGVTdHJpbmdFcXVhbGl0eShub2RlLCBsZWZ0R1BSLCBy
aWdodEdQUiwgdGVtcEdQUiwgbGVmdFRlbXBHUFIsIHJpZ2h0VGVtcEdQUiwgbGVmdFRlbXAyR1BS
LCByaWdodFRlbXAyR1BSLCB0cnVlQ2FzZSwgZmFsc2VDYXNlKTsKK30KKwogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUq
IGJyYW5jaE5vZGUsIGJvb2wgaW52ZXJ0KQogewogICAgIEJhc2ljQmxvY2sqIHRha2VuID0gYnJh
bmNoTm9kZS0+YnJhbmNoRGF0YSgpLT50YWtlbi5ibG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuY3BwCmluZGV4IDRiNDNjNzVkZmQ1My4uZjE0NTYyNDgwY2JlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKQEAgLTE3Myw2ICsxNzMsOSBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlS2luZCB1c2VLaW5kKQog
ICAgIGNhc2UgTm90RG91YmxlVXNlOgogICAgICAgICBvdXQucHJpbnQoIk5vdERvdWJsZSIpOwog
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZToK
KyAgICAgICAgb3V0LnByaW50KCJOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCIpOworICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1Vz
ZToKICAgICAgICAgb3V0LnByaW50KCJOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmlu
ZyIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5o
CmluZGV4IDY2ZThjNGViYTRiMC4uZWRlZTYyODc5NDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuaApAQCAtODIsNiArODIsNyBAQCBlbnVtIFVzZUtpbmQgewogICAgIE5v
dENlbGxVc2UsCiAgICAgTm90Q2VsbE5vckJpZ0ludFVzZSwKICAgICBOb3REb3VibGVVc2UsCisg
ICAgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2UsCiAgICAgTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmdVc2UsCiAgICAgS25vd25PdGhlclVzZSwKICAgICBPdGhlclVzZSwK
QEAgLTE5MSw2ICsxOTIsOCBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihV
c2VLaW5kIHVzZUtpbmQpCiAgICAgICAgIHJldHVybiB+U3BlY0NlbGxDaGVjayAmIH5TcGVjQmln
SW50OwogICAgIGNhc2UgTm90RG91YmxlVXNlOgogICAgICAgICByZXR1cm4gflNwZWNGdWxsRG91
YmxlOworICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2U6CisgICAgICAgIHJl
dHVybiB+U3BlY0Z1bGxEb3VibGUgJiB+U3BlY0hlYXBCaWdJbnQ7CiAgICAgY2FzZSBOZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKICAgICAgICAgcmV0dXJuIH4oU3BlY0Z1
bGxEb3VibGUgfCBTcGVjSGVhcEJpZ0ludCB8IFNwZWNTdHJpbmcpOwogICAgIGNhc2UgS25vd25P
dGhlclVzZToKQEAgLTMxMiw2ICszMTUsNyBAQCBpbmxpbmUgYm9vbCBjaGVja01heUNyYXNoSWZJ
bnB1dElzRW1wdHkoVXNlS2luZCBraW5kKQogICAgIGNhc2UgTm90Q2VsbFVzZToKICAgICBjYXNl
IE5vdENlbGxOb3JCaWdJbnRVc2U6CiAgICAgY2FzZSBOb3REb3VibGVVc2U6CisgICAgY2FzZSBO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZToKICAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVs
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRl
eCAwM2Y4NjUyYzZjYjguLjVhNTIyMjA4NTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtNTI3LDYgKzUyNyw3IEBAIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIEFueUlu
dFVzZToKICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZVJlcEFueUludFVzZToKICAgICAgICAg
ICAgICAgICBjYXNlIE5vdERvdWJsZVVzZToKKyAgICAgICAgICAgICAgICBjYXNlIE5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgTmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNl
IGFyZSBPSy4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYjAwMWQxMzJmMDJmLi45NDkxODgz
YTYzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKQEAgLTk2MzgsNiArOTYzOCwxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50VXNlLCBOb3REb3VibGVVc2UpKSB7CisgICAgICAgICAgICBjb21w
aWxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRUb05vdERvdWJsZVN0cmljdEVxdWFsaXR5KG1f
bm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOb3REb3VibGVV
c2UsIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgY29tcGls
ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShtX25v
ZGUtPmNoaWxkMigpLCBtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCiAgICAgICAgIC8vIEZJWE1FOiB3ZSBjYW4gZG8gc29tZXRoaW5nIG11Y2ggc21h
cnRlciBoZXJlLCBzZWUgdGhlIERGR1NwZWN1bGF0aXZlSklUIGFwcHJvYWNoIGluIGUuZy4gU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVz
ZSksIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpLCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQo
KSk7CiAgICAgICAgIGdlbmVyaWNKU1ZhbHVlQ29tcGFyZSgKQEAgLTk2ODYsNiArOTY5NSw5MSBA
QCBwcml2YXRlOgogICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgZmFzdFRydWUs
IGZhc3RGYWxzZSwgc2xvd1Jlc3VsdCkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShFZGdlIG5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50RWRnZSwgRWRnZSBub3REb3VibGVFZGdlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50RWRnZS51c2VLaW5kKCkgPT0g
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2UpOworICAgICAgICBBU1NFUlQobm90RG91Ymxl
RWRnZS51c2VLaW5kKCkgPT0gTm90RG91YmxlVXNlKTsKKworICAgICAgICBMVmFsdWUgbGVmdFZh
bHVlID0gbG93SlNWYWx1ZShuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSByaWdodFZhbHVlID0gbG93SlNWYWx1
ZShub3REb3VibGVFZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBTcGVj
dWxhdGVkVHlwZSBsZWZ0VmFsdWVUeXBlID0gcHJvdmVuVHlwZShuZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludEVkZ2UpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodFZhbHVlVHlwZSA9IHBy
b3ZlblR5cGUobm90RG91YmxlRWRnZSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgdHJpdmlhbGx5
RXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElz
Tm90SW50MzJFcXVhbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9j
ayBsZWZ0SXNDZWxsRXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2lj
QmxvY2sgcmV0dXJuVHJ1ZUJsb2NrID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2lj
QmxvY2sgbm90VHJpdmlhbGx5RXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
TEJhc2ljQmxvY2sgbGVmdElzQ2VsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNp
Y0Jsb2NrIGxlZnRJc1N0cmluZyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Js
b2NrIHJpZ2h0SXNDZWxsID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
cmlnaHRJc1N0cmluZyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNv
bnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgLy8gV2UgdHJ5IHRvIGF2
b2lkIHJlcGVhdGVkIGFuZCByZWR1bmRhbnQgY2hlY2tzIGhlcmUsIHdoaWNoIGxlYWRzIHRvIHRo
ZSBmb2xsb3dpbmcgcHNldWRvLWNvZGU6CisgICAgICAgIC8qCisgICAgICAgICBpZiAobGVmdCA9
PSByaWdodCkgeworICAgICAgICAgICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dChsZWZ0KTsKKyAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICB9CisgICAgICAgICBz
cGVjdWxhdGVOb3REb3VibGUocmlnaHQpOworICAgICAgICAgc3BlY3VsYXRlTm90RG91YmxlKGxl
ZnQpOworICAgICAgICAgaWYgKGxlZnQgaXMgbm90IENlbGwpCisgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgIENoZWNrIHRoYXQgbGVmdCBpcyBub3QgSGVhcEJpZ0ludDsKKyAgICAg
ICAgIGlmIChsZWZ0IGlzIG5vdCBTdHJpbmcpCisgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgIGlmIChyaWdodCBpcyBub3QgQ2VsbCkKKyAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgaWYgKHJpZ2h0IGlzIG5vdCBTdHJpbmcpCisgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgIHJldHVybiBzdHJpbmdFcXVhbGl0eShsZWZ0LCByaWdodCkKKyAgICAgICAg
IH0KKyAgICAgICAgICovCisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChsZWZ0VmFs
dWUsIHJpZ2h0VmFsdWUpLCB1bnN1cmUodHJpdmlhbGx5RXF1YWxDYXNlKSwgdW5zdXJlKG5vdFRy
aXZpYWxseUVxdWFsQ2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8odHJpdmlhbGx5RXF1YWxDYXNlLCBsZWZ0SXNOb3RJbnQzMkVxdWFsQ2FzZSk7
CisgICAgICAgIC8vIExvZ2ljYWxseSB3ZSB3YW50IHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50LCBidXQgd2UgY2Fubm90IHVzZSBpdCBoZXJlIGFzIGl0IGNoYW5nZXMgdGhlIHN0
YXRlIG9mIHRoZSBhYnN0cmFjdCBpbnRlcnByZXRlci4KKyAgICAgICAgLy8gU28gaWYgd2UgdXNl
ZCBpdCBoZXJlLCB3ZSB3b3VsZCBza2lwIHRoZSBsYXRlciBjaGVja3MuCisgICAgICAgIC8vIElu
c3RlYWQgd2UgcmVpbXBsZW1lbnQgaXQgaW4gdGhpcyBhbmQgdGhlIG5leHQgZmV3IGJsb2Nrcywg
dXNpbmcgdHlwZUNoZWNrV2l0aG91dFVwZGF0aW5nSW50ZXJwcmV0ZXIuCisgICAgICAgIG1fb3V0
LmJyYW5jaChpc0ludDMyKGxlZnRWYWx1ZSwgcHJvdmVuVHlwZShuZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludEVkZ2UpKSwgdW5zdXJlKHJldHVyblRydWVCbG9jayksIHVuc3VyZShsZWZ0SXNOb3RJ
bnQzMkVxdWFsQ2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc05vdEludDMy
RXF1YWxDYXNlLCBsZWZ0SXNDZWxsRXF1YWxDYXNlKTsKKyAgICAgICAgdHlwZUNoZWNrV2l0aG91
dFVwZGF0aW5nSW50ZXJwcmV0ZXIoanNWYWx1ZVZhbHVlKGxlZnRWYWx1ZSksIG5laXRoZXJEb3Vi
bGVOb3JIZWFwQmlnSW50RWRnZSwgflNwZWNGdWxsRG91YmxlLCBpc051bWJlcihsZWZ0VmFsdWUp
KTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChsZWZ0VmFsdWUsIHByb3ZlblR5cGUobmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnRFZGdlKSksIHVuc3VyZShsZWZ0SXNDZWxsRXF1YWxDYXNl
KSwgdW5zdXJlKHJldHVyblRydWVCbG9jaykpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxl
ZnRJc0NlbGxFcXVhbENhc2UsIHJldHVyblRydWVCbG9jayk7CisgICAgICAgIHR5cGVDaGVja1dp
dGhvdXRVcGRhdGluZ0ludGVycHJldGVyKGpzVmFsdWVWYWx1ZShsZWZ0VmFsdWUpLCBuZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UsIH5TcGVjSGVhcEJpZ0ludCwgaXNIZWFwQmlnSW50KGxl
ZnRWYWx1ZSkpOworICAgICAgICBtX291dC5qdW1wKHJldHVyblRydWVCbG9jayk7CisKKyAgICAg
ICAgbV9vdXQuYXBwZW5kVG8ocmV0dXJuVHJ1ZUJsb2NrLCBub3RUcml2aWFsbHlFcXVhbENhc2Up
OworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0VHJ1ZSA9IG1fb3V0LmFuY2hvcihtX291dC5i
b29sZWFuVHJ1ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAg
ICBtX291dC5hcHBlbmRUbyhub3RUcml2aWFsbHlFcXVhbENhc2UsIGxlZnRJc0NlbGwpOworICAg
ICAgICBzcGVjdWxhdGVOb3REb3VibGUobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRFZGdlKTsK
KyAgICAgICAgc3BlY3VsYXRlTm90RG91YmxlKG5vdERvdWJsZUVkZ2UpOworICAgICAgICBWYWx1
ZUZyb21CbG9jayBmYXN0RmFsc2UgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsK
KyAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90Q2VsbChsZWZ0VmFsdWUsIGxlZnRWYWx1ZVR5cGUp
LCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGxlZnRJc0NlbGwpKTsKKworICAgICAgICBt
X291dC5hcHBlbmRUbyhsZWZ0SXNDZWxsLCBsZWZ0SXNTdHJpbmcpOworICAgICAgICBGVExfVFlQ
RV9DSEVDSyhqc1ZhbHVlVmFsdWUobGVmdFZhbHVlKSwgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnRFZGdlLCB+U3BlY0hlYXBCaWdJbnQsIGlzSGVhcEJpZ0ludChsZWZ0VmFsdWUpKTsKKyAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzTm90U3RyaW5nKGxlZnRWYWx1ZSwgbGVmdFZhbHVlVHlwZSksIHVu
c3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobGVmdElzU3RyaW5nKSk7CisKKyAgICAgICAgbV9v
dXQuYXBwZW5kVG8obGVmdElzU3RyaW5nLCByaWdodElzQ2VsbCk7CisgICAgICAgIG1fb3V0LmJy
YW5jaChpc05vdENlbGwocmlnaHRWYWx1ZSwgcmlnaHRWYWx1ZVR5cGUpLCB1bnN1cmUoY29udGlu
dWF0aW9uKSwgdW5zdXJlKHJpZ2h0SXNDZWxsKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
cmlnaHRJc0NlbGwsIHJpZ2h0SXNTdHJpbmcpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RT
dHJpbmcocmlnaHRWYWx1ZSwgcmlnaHRWYWx1ZVR5cGUpLCB1bnN1cmUoY29udGludWF0aW9uKSwg
dW5zdXJlKHJpZ2h0SXNTdHJpbmcpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElz
U3RyaW5nLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKHN0cmluZ3NFcXVhbChsZWZ0VmFsdWUsIHJpZ2h0VmFsdWUsIG5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50RWRnZSwgbm90RG91YmxlRWRnZSkpOworICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBmYXN0
VHJ1ZSwgZmFzdEZhbHNlLCBzbG93UmVzdWx0KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxl
Q29tcGFyZUVxUHRyKCkKICAgICB7CiAgICAgICAgIHNldEJvb2xlYW4oCkBAIC0xNzgyMCwyNSAr
MTc5MTQsMjUgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVy
KGhpZ2hWYWx1ZSwgdHlwZXNQYXNzZWRUaHJvdWdoKTsKICAgICB9Ci0gICAgCi0gICAgdm9pZCB0
eXBlQ2hlY2soCisKKyAgICB2b2lkIHR5cGVDaGVja1dpdGhvdXRVcGRhdGluZ0ludGVycHJldGVy
KAogICAgICAgICBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1ZSwgRWRnZSBoaWdoVmFsdWUsIFNwZWN1
bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCwKICAgICAgICAgTFZhbHVlIGZhaWxDb25kaXRp
b24sIEV4aXRLaW5kIGV4aXRLaW5kID0gQmFkVHlwZSkKLSAgICB7Ci0gICAgICAgIGFwcGVuZFR5
cGVDaGVjayhsb3dWYWx1ZSwgaGlnaFZhbHVlLCB0eXBlc1Bhc3NlZFRocm91Z2gsIGZhaWxDb25k
aXRpb24sIGV4aXRLaW5kKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBhcHBlbmRUeXBlQ2hlY2so
Ci0gICAgICAgIEZvcm1hdHRlZFZhbHVlIGxvd1ZhbHVlLCBFZGdlIGhpZ2hWYWx1ZSwgU3BlY3Vs
YXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoLAotICAgICAgICBMVmFsdWUgZmFpbENvbmRpdGlv
biwgRXhpdEtpbmQgZXhpdEtpbmQpCiAgICAgewogICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIu
bmVlZHNUeXBlQ2hlY2soaGlnaFZhbHVlLCB0eXBlc1Bhc3NlZFRocm91Z2gpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBBU1NFUlQobWF5SGF2ZVR5cGVDaGVjayhoaWdoVmFsdWUudXNl
S2luZCgpKSk7CiAgICAgICAgIGFwcGVuZE9TUkV4aXQoZXhpdEtpbmQsIGxvd1ZhbHVlLCBoaWdo
VmFsdWUubm9kZSgpLCBmYWlsQ29uZGl0aW9uLCBtX29yaWdpbik7CisgICAgfQorCisgICAgdm9p
ZCB0eXBlQ2hlY2soCisgICAgICAgIEZvcm1hdHRlZFZhbHVlIGxvd1ZhbHVlLCBFZGdlIGhpZ2hW
YWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoLAorICAgICAgICBMVmFsdWUg
ZmFpbENvbmRpdGlvbiwgRXhpdEtpbmQgZXhpdEtpbmQgPSBCYWRUeXBlKQorICAgIHsKKyAgICAg
ICAgdHlwZUNoZWNrV2l0aG91dFVwZGF0aW5nSW50ZXJwcmV0ZXIobG93VmFsdWUsIGhpZ2hWYWx1
ZSwgdHlwZXNQYXNzZWRUaHJvdWdoLCBmYWlsQ29uZGl0aW9uLCBleGl0S2luZCk7CiAgICAgICAg
IG1faW50ZXJwcmV0ZXIuZmlsdGVyKGhpZ2hWYWx1ZSwgdHlwZXNQYXNzZWRUaHJvdWdoKTsKICAg
ICB9Ci0gICAgCisKICAgICBMVmFsdWUgbG93SW50MzIoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3Vs
YXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewogICAg
ICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
IHx8IChlZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBLbm93
bkludDMyVXNlKSk7CkBAIC0xODY5NCw2ICsxODc4OCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgTm90RG91YmxlVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlTm90RG91YmxlKGVkZ2UpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnRVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChl
ZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE4
NzYxLDYgKzE4ODU4LDMwIEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbiwgbGFzdE5leHQpOwogICAgIH0KIAorICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnQoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2ludGVy
cHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc05vdEludDMyID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQmxvY2sgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpKSwgdW5z
dXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShpc05vdEludDMyKSk7CisKKyAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc05vdEludDMyLCBpc0NlbGxCbG9jayk7
CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIH5TcGVj
RnVsbERvdWJsZSwgaXNOdW1iZXIodmFsdWUpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2Vs
bCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSksIHVuc3VyZShpc0NlbGxCbG9jayksIHVuc3VyZShj
b250aW51YXRpb24pKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxCbG9jaywgY29u
dGludWF0aW9uKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwg
ZWRnZSwgflNwZWNIZWFwQmlnSW50LCBpc0hlYXBCaWdJbnQodmFsdWUpKTsKKyAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOworICAgIH0KKwogICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoRWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgaWYgKCFt
X2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQo=
</data>
<flag name="review"
          id="460860"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="460861"
          type_id="3"
          status="-"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437677</attachid>
            <date>2021-09-08 16:35:40 -0700</date>
            <delta_ts>2021-09-08 18:37:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226755</filename>
            <type>text/plain</type>
            <size>34895</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NGI4NDI3MWIzNGFmLi40ODNiMTJhNmIxODkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDktMDggIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBj
b21wYXJlU3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMgYSBkb3VibGUgYW5kIGF0IGxlYXN0
IG9uZSBpcyBub3QgYSBCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjc1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzkzMjE1NDI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBNYWRlIHRoZSBl
cnJvciBtZXNzYWdlcyBpbiBzdHJlc3MvcmVmbGVjdC1zZXQgYSBiaXQgbW9yZSBpbmZvcm1hdGl2
ZSBpbiB0aGUgcHJvY2VzcyBvZiBkZWJ1Z2dpbmcgYW4gaXNzdWUgd2l0aCB0aGUgcGF0Y2guCisK
KyAgICAgICAgKiBzdHJlc3MvcmVmbGVjdC1zZXQuanM6CisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisKIDIwMjEtMDktMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuUGxhaW5U
aW1lCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWZsZWN0LXNldC5qcyBiL0pTVGVzdHMv
c3RyZXNzL3JlZmxlY3Qtc2V0LmpzCmluZGV4IDA3ZjRjMzYxOWIxZC4uNjNlNDA3MDMyNTBhIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9yZWZsZWN0LXNldC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9yZWZsZWN0LXNldC5qcwpAQCAtMSw2ICsxLDYgQEAKIGZ1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGRlc2NyaWJlKGFjdHVhbCkgKyAnLCBleHBlY3RlZDog
JyArIGRlc2NyaWJlKGV4cGVjdGVkKSk7CiB9CiAKIGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMs
IG1lc3NhZ2UpIHsKQEAgLTExLDkgKzExLDkgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
bWVzc2FnZSkgewogICAgICAgICBlcnJvciA9IGU7CiAgICAgfQogICAgIGlmICghZXJyb3IpCi0g
ICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bi4nKTsKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdub3QgdGhyb3duLiBFeHBlY3RlZDogJyArIG1lc3NhZ2UpOwogICAgIGlmIChTdHJp
bmcoZXJyb3IpICE9PSBtZXNzYWdlKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBlcnJv
cjogJyArIFN0cmluZyhlcnJvcikpOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBlcnJv
cjogJyArIFN0cmluZyhlcnJvcikgKyAnLCBleHBlY3RlZDogJyArIG1lc3NhZ2UpOwogfQogCiBm
dW5jdGlvbiB1bnJlYWNoYWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBjNjFhYzVj
ZjcxMjUuLjFjYjdlOTVjNWM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzQgQEAKKzIwMjEtMDktMDggIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4K
KworICAgICAgICBPcHRpbWl6ZSBjb21wYXJlU3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMg
YSBkb3VibGUgYW5kIGF0IGxlYXN0IG9uZSBpcyBub3QgYSBCaWdJbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjc1NQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzkzMjE1NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBpcyBhIHZlcnkgc2ltaWxhciBwYXRjaCB0byBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2LgorICAgICAgICBUaGUgZGlmZmVyZW5j
ZSBpcyB0aGF0IGhlcmUgd2UgYWxsb3cgU3RyaW5ncyBvbiBib3RoIHNpZGUgb2YgdGhlIGNvbXBh
cmlzb24sIHNvIHdlIG11c3QgYWRkIGNvZGUgdG8gaGFuZGxlIGVxdWFsaXR5IGFtb25nIHN0cmlu
Z3MuCisKKyAgICAgICAgTGlrZSBmb3IgdGhhdCBvdGhlciBwYXRjaCwgdGhlIG9wdGltaXphdGlv
biBpcyBkaXNhYmxlZCBmb3IgQmlnSW50MzIuCisgICAgICAgIEVuYWJsaW5nIGl0IGluIHRoYXQg
Y2FzZSB3b3VsZCBlaXRoZXIgbmVlZCBtb2RpZnlpbmcgdGhlIHNwZWN1bGF0aW9uIChmcm9tIGJh
bm5pbmcgSGVhcEJpZ0ludCB0byBiYW5uaW5nIGFsbCBCaWdJbnRzKSwgb3IgZW5zdXJpbmcgdGhh
dCB3ZSBjYW4gbmV2ZXIgaGF2ZSBhIEhlYXBCaWdJbnQgc28gc21hbGwgaXQgY29tcGFyZXMgZXF1
YWwgdG8gYSBCaWdJbnQzMi4KKworICAgICAgICBJIG9ubHkgaW1wbGVtZW50ZWQgdGhpcyBvcHRp
bWl6YXRpb24gb24gNjQtYml0czogaXQgaXMganVzdCBwYWluZnVsIHRvIHdyaXRlIGNvZGUgdGhh
dCBoYW5kbGVzIHJlZ2lzdGVycyBhdCBzdWNoIGEgbG93LWxldmVsIHdpdGhvdXQgYSAzMi1iaXQg
bWFjaGluZSB0byB0ZXN0IHRoaW5ncyBsb2NhbGx5LgorICAgICAgICBJZiBhbnlvbmUgd2FudHMg
dG8gbWFrZSB0aGlzIG9wdGltaXphdGlvbiB3b3JrIG9uIDMyLWJpdCwgSSBkb24ndCBmb3JldGVs
bCBhbnkgbWFqb3IgZGlmZmljdWx0eS4KKworICAgICAgICBGaW5hbGx5LCBsaWtlIHF1aXRlIGEg
ZmV3IG90aGVyIHVzZUtpbmRzIGFscmVhZHksIHRoaXMgY2FzZSBkb2VzIG5vdCBtYWtlIHRoZSBD
b21wYXJlU3RyaWN0RXEgbWVyZ2Ugd2l0aCBhbiBhZGphY2VudCBCcmFuY2guCisgICAgICAgIFRo
ZSByZWFzb24gaXMgc2ltcGx5IHRoYXQgdGhpcyBwYXRjaCByZWxpZXMgb24gY29tcGlsZVN0cmlu
Z0VxdWFsaXR5LCB3aGljaCBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCB0aGF0IGZlYXR1cmUu
CisgICAgICAgIEkgaW50ZW5kIHRvIGZpeCB0aGlzIChmb3IgYWxsIHVzZUtpbmRzIGF0IG9uY2Up
IGluIGEgc2VwYXJhdGUgcGF0Y2guCisKKyAgICAgICAgRWZmZWN0IG9uIG1pY3JvYmVuY2htYXJr
czoKKyAgICAgICAgcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlICAgICAgICAgICAgICAgICAgNDYu
ODAwMCstMC40MTEwICAgICBeICAgICAyMy41ODcyKy0wLjMwNjEgICAgICAgIF4gZGVmaW5pdGVs
eSAxLjk4NDF4IGZhc3RlcgorICAgICAgICBwb2x5LXN0cmljdGVxLW5vdC1kb3VibGUtbm9yLXN0
cmluZyAgICAgICAxNi42ODgwKy0wLjIzMTcgICAgICAgICAgIDE2LjM2MjcrLTAuMzcyOSAgICAg
ICAgICBtaWdodCBiZSAxLjAxOTl4IGZhc3RlcgorICAgICAgICBwb2x5LXN0cmljdGVxICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0OS4yMTc1Ky0wLjYwNDcgICAgICAgICAgIDQ4Ljk1MzIr
LTAuNjc1OAorCisgICAgICAgIEkgbG9va2VkIGF0IGhvdyBtYW55IGNhc2VzIG9mIFVudHlwZWQv
VW50eXBlZCBjb21wYXJlU3RyaWN0RXEgaGF2ZSBiZWVuIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggYW5k
IHR3byBvdGhlciByZWNlbnQgcGF0Y2hlcy4KKyAgICAgICAgT24gSmV0U3RyZWFtMjoKKyAgICAg
ICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIxOiA3MzEg
aW5zdGFuY2VzCisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNjY3NjogOTQ0IGluc3RhbmNlcworICAgICAgICAtIFRoaXMgcGF0Y2g6IG9ubHkgMjYg
aW5zdGFuY2VzCisgICAgICAgIFRoaXMgbGVhdmVzIDIwIGluc3RhbmNlcyBvZiBVbnR5cGVkL1Vu
dHlwZWQuCisKKyAgICAgICAgT24gU3BlZWRvbWV0ZXIyLjA6CisgICAgICAgIC0gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMTogMTU4NyBpbnN0YW5jZXMKKyAg
ICAgICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2OiAy
Nzg0IGluc3RhbmNlcworICAgICAgICAtIFRoaXMgcGF0Y2g6IDg5MSBpbnN0YW5jZXMKKyAgICAg
ICAgVGhpcyBsZWF2ZXMgNzUgaW5zdGFuY2VzIG9mIFVudHlwZWQvVW50eXBlZC4KKworICAgICAg
ICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnRTcGVjdWxhdGlvbik6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBDb21wYXJlU3Ry
aWN0RXFBbmRTYW1lVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQp
OgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
dHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCaXR3aXNl
SlNWYWx1ZUVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEJyYW5jaE9uQml0d2lzZUpTVmFsdWVFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZ1N0cmljdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBlZXBIb2xlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmdTdHJpY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eSk6
CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5
cGVGaWx0ZXJGb3IpOgorICAgICAgICAoSlNDOjpERkc6OmNoZWNrTWF5Q3Jhc2hJZklucHV0SXNF
bXB0eSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0
RXEpOgorCiAyMDIxLTA5LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgYWRkIGZpbGVzIHRvIHhjb2RlcHJvagpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCA5Njk3NzgzNTU3
NDEuLjI3YTcwM2NjZDdmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTQ0OSw2ICs0NDksMTEgQEAgaW5saW5lIGJvb2wgaXNOZWl0
aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHR5cGUKICAgICByZXR1cm4gISh0eXBlICYgKFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBCaWdJ
bnQgfCBTcGVjU3RyaW5nKSk7CiB9CiAKK2lubGluZSBib29sIGlzTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB0eXBlKQoreworICAgIHJldHVybiAh
KHR5cGUgJiAoU3BlY0Z1bGxEb3VibGUgfCBTcGVjSGVhcEJpZ0ludCkpOworfQorCiBpbmxpbmUg
Ym9vbCBpc090aGVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0
dXJuIHZhbHVlID09IFNwZWNPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAppbmRleCBlNjQ4MTY3YzExODYuLjA3MGE0ODU0N2E5NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNl
S2luZChPYmplY3RVc2UpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlz
Y1VzZSwgVW50eXBlZFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1p
c2NVc2UpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRV
c2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdFN0cmluZ1Zh
clVzZSwgU3RyaW5nSWRlbnRVc2UpCi0gICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZSkg
fHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmdVc2UpKQorICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2Up
IHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0
cmluZ1VzZSwgTm90RG91YmxlVXNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCmluZGV4IDBiZWI4YmUwMTZlMi4uYWM0ZWJlMDM5ZmE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTQ0NzcsNyArNDQ3NywyMyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0
cmljdEVxKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotI2VuZGlmCisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCgpCisgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIo
KS0+c2hvdWxkU3BlY3VsYXRlTm90RG91YmxlKCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8TmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8Tm90RG91YmxlVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2Rl
LT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlTm90RG91YmxlKCkKKyAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVj
dWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBmaXhFZGdl
PE5vdERvdWJsZVVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxOZWl0
aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
bm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisjZW5kaWYgLy8g
IVVTRShCSUdJTlQzMikKICAgICB9CiAKICAgICB2b2lkIGZpeHVwQ2hlY2tzSW5CbG9jayhCYXNp
Y0Jsb2NrKiBibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMTlmNDBm
ODE1YWEzLi4yYWY3OTcwNjhhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC0yODg3LDYgKzI4ODcsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGlzTmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkp
OwogICAgIH0KKworICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3Vs
ZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGQ1NDk2NDQ1MGI2My4uOTI0ZmM4
YzMxMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwQW55SW50
VXNlOgogICAgICAgICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAgICAgY2FzZSBOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKKyAgICAgICAgY2FzZSBOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludFVzZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIEtub3duSW50MzJVc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDg3MGZmYjFlN2JiYi4uZWNiOTk4YzYxOGZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtNzIyNiw3ICs3MjI2LDIxIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RF
cShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShub2RlLCBub3REb3VibGVDaGlsZCwgbmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0jZW5kaWYKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2UsIE5vdERvdWJsZVVz
ZSkpIHsKKyAgICAgICAgRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CisgICAgICAgIEVkZ2Ugbm90RG91YmxlQ2hpbGQgPSBub2RlLT5jaGlsZDIo
KTsKKyAgICAgICAgY29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVT
dHJpY3RFcXVhbGl0eShub2RlLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCBub3RE
b3VibGVDaGlsZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChOb3REb3VibGVVc2UsIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
VXNlKSkgeworICAgICAgICBFZGdlIG5vdERvdWJsZUNoaWxkID0gbm9kZS0+Y2hpbGQxKCk7Cisg
ICAgICAgIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCA9IG5vZGUtPmNoaWxk
MigpOworICAgICAgICBjb21waWxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRUb05vdERvdWJs
ZVN0cmljdEVxdWFsaXR5KG5vZGUsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIG5v
dERvdWJsZUNoaWxkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZiAvLyBV
U0UoSlNWQUxVRTY0KQorI2VuZGlmIC8vICFVU0UoQklHSU5UMzIpCiAKICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVIZWFwQmln
SW50RXF1YWxpdHkobm9kZSk7CkBAIC03NDU3LDYgKzc0NzEsNDAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSogbm9kZSwgTm9kZSogYnJh
bmNoTm9kZSkKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCaXR3aXNlSlNW
YWx1ZUVxdWFsaXR5KEpTVmFsdWVSZWdzJiBsZWZ0LCBKU1ZhbHVlUmVncyYgcmlnaHQsIEdQUlJl
ZyYgcmVzdWx0KQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9qaXQuY29tcGFyZTY0KEpJ
VENvbXBpbGVyOjpFcXVhbCwgbGVmdC5ncHIoKSwgcmlnaHQuZ3ByKCksIHJlc3VsdCk7CisjZWxz
ZQorICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOworICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdEVxdWFsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LCBsZWZ0LnRhZ0dQUigpLCByaWdodC50YWdHUFIoKSk7CisgICAgbV9qaXQuY29tcGFyZTMyKEpJ
VENvbXBpbGVyOjpFcXVhbCwgbGVmdC5wYXlsb2FkR1BSKCksIHJpZ2h0LnBheWxvYWRHUFIoKSwg
cmVzdWx0KTsKKyAgICBub3RFcXVhbC5saW5rKCZtX2ppdCk7CisjZW5kaWYKK30KKwordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaE9uQml0d2lzZUpTVmFsdWVFcXVhbGl0eShKU1ZhbHVl
UmVncyYgbGVmdCwgSlNWYWx1ZVJlZ3MmIHJpZ2h0LCBCYXNpY0Jsb2NrKiB0YWtlbiwgQmFzaWNC
bG9jayogbm90VGFrZW4pCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAodGFrZW4gPT0g
bmV4dEJsb2NrKCkpIHsKKyAgICAgICAgYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBs
ZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgbm90VGFrZW4pOworICAgICAgICBqdW1wKHRha2VuKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBicmFuY2g2NChKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQu
Z3ByKCksIHJpZ2h0LmdwcigpLCB0YWtlbik7CisgICAgICAgIGp1bXAobm90VGFrZW4pOworICAg
IH0KKyNlbHNlCisgICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LnRhZ0dQ
UigpLCByaWdodC50YWdHUFIoKSwgbm90VGFrZW4pOworICAgIGlmICh0YWtlbiA9PSBuZXh0Qmxv
Y2soKSkgeworICAgICAgICBicmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnQucGF5
bG9hZEdQUigpLCByaWdodC5wYXlsb2FkR1BSKCksIG5vdFRha2VuKTsKKyAgICAgICAganVtcCh0
YWtlbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFs
LCBsZWZ0LnBheWxvYWRHUFIoKSwgcmlnaHQucGF5bG9hZEdQUigpLCB0YWtlbik7CisgICAgICAg
IGp1bXAobm90VGFrZW4pOworICAgIH0KKyNlbmRpZgorfQorCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJp
Y3RFcXVhbGl0eShOb2RlKiBub2RlLCBFZGdlIG5vdERvdWJsZUNoaWxkLCBFZGdlIG5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQpCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQg
bGVmdCh0aGlzLCBub3REb3VibGVDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKQEAg
LTc0NzYsMTQgKzc1MjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90RG91Ymxl
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcQogICAgIHNwZWN1bGF0
ZU5vdERvdWJsZShub3REb3VibGVDaGlsZCwgbGVmdFJlZ3MsIHRlbXBHUFIpOwogICAgIHNwZWN1
bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKG5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQsIHJpZ2h0UmVncywgdGVtcEdQUik7CiAKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQu
Z3ByKCksIHJpZ2h0LmdwcigpLCByZXN1bHQuZ3ByKCkpOwotI2Vsc2UKLSAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RFcXVhbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC50YWdH
UFIoKSwgcmlnaHQudGFnR1BSKCkpOwotICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6
RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCByaWdodC5wYXlsb2FkR1BSKCksIHJlc3VsdC5ncHIo
KSk7Ci0gICAgbm90RXF1YWwubGluaygmbV9qaXQpOwotI2VuZGlmCisgICAgZW1pdEJpdHdpc2VK
U1ZhbHVlRXF1YWxpdHkobGVmdFJlZ3MsIHJpZ2h0UmVncywgcmVzdWx0R1BSKTsKICAgICB1bmJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKQEAgLTc1MDMsMjQgKzc1
NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVOb3REb3VibGVOZWl0
aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZwogICAgIEJhc2ljQmxvY2sqIHRha2VuID0g
YnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT50YWtlbi5ibG9jazsKICAgICBCYXNpY0Jsb2NrKiBu
b3RUYWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4uYmxvY2s7CiAKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgewotICAgICAg
ICBicmFuY2g2NChKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnQuZ3ByKCksIHJpZ2h0Lmdwcigp
LCBub3RUYWtlbik7Ci0gICAgICAgIGp1bXAodGFrZW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5ncHIoKSwgcmlnaHQuZ3ByKCksIHRh
a2VuKTsKLSAgICAgICAganVtcChub3RUYWtlbik7Ci0gICAgfQotI2Vsc2UKLSAgICBicmFuY2gz
MihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnQudGFnR1BSKCksIHJpZ2h0LnRhZ0dQUigpLCBu
b3RUYWtlbik7Ci0gICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7Ci0gICAgICAgIGJyYW5j
aDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC5wYXlsb2FkR1BSKCksIHJpZ2h0LnBheWxv
YWRHUFIoKSwgbm90VGFrZW4pOwotICAgICAgICBqdW1wKHRha2VuKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBicmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCBy
aWdodC5wYXlsb2FkR1BSKCksIHRha2VuKTsKLSAgICAgICAganVtcChub3RUYWtlbik7Ci0gICAg
fQotI2VuZGlmCisgICAgZW1pdEJyYW5jaE9uQml0d2lzZUpTVmFsdWVFcXVhbGl0eShsZWZ0UmVn
cywgcmlnaHRSZWdzLCB0YWtlbiwgbm90VGFrZW4pOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU3RyaW5nRXF1YWxpdHkoCkBAIC0xMTc4MSw2ICsxMTgwNSw0MiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3REb3VibGUoRWRnZSBlZGdlKQogICAgIHNwZWN1bGF0
ZU5vdERvdWJsZShlZGdlLCByZWdzLCB0ZW1wR1BSKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSBlZGdlLCBKU1ZhbHVl
UmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVk
Z2UsIH4oU3BlY0Z1bGxEb3VibGUgfCBTcGVjSGVhcEJpZ0ludCkpKQorICAgICAgICByZXR1cm47
CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZTsKKworICAgIGJvb2wgbWF5QmVJbnQz
MiA9IG5lZWRzVHlwZUNoZWNrKGVkZ2UsIH5TcGVjSW50MzJPbmx5KTsKKyAgICBpZiAobWF5QmVJ
bnQzMikKKyAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZJbnQzMihyZWdzKSk7CisK
KyAgICBERkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0Z1bGxEb3VibGUsIG1faml0LmJy
YW5jaElmTnVtYmVyKHJlZ3MsIHRlbXBHUFIpKTsKKworICAgIGJvb2wgbWF5QmVOb3RDZWxsID0g
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwpOworICAgIGlmIChtYXlCZU5vdENlbGwpCisg
ICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChyZWdzKSk7CisKKyAgICBE
RkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0hlYXBCaWdJbnQsIG1faml0LmJyYW5jaElm
SGVhcEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkpOworCisgICAgaWYgKG1heUJlSW50MzIgfHwg
bWF5QmVOb3RDZWxsKQorICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKK30KKwordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSBlZGdl
KQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgfihTcGVjRnVsbERvdWJsZSB8IFNw
ZWNIZWFwQmlnSW50KSkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTVmFsdWVPcGVyYW5kIG9w
ZXJhbmQodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyByZWdzID0gb3BlcmFuZC5qc1ZhbHVl
UmVncygpOworICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgIHNwZWN1bGF0
ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KGVkZ2UsIHJlZ3MsIHRlbXBHUFIpOworfQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZyhFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQogewog
ICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgfihTcGVjRnVsbERvdWJsZSB8IFNwZWNTdHJp
bmcgfCBTcGVjSGVhcEJpZ0ludCkpKQpAQCAtMTE3OTQsMTQgKzExODU0LDE0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5n
KEVkZ2UgZWRnZSwgSlNWCiAKICAgICBERkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0Z1
bGxEb3VibGUsIG1faml0LmJyYW5jaElmTnVtYmVyKHJlZ3MsIHRlbXBHUFIpKTsKIAotICAgIGJv
b2wgbWF5Tm90QmVDZWxsID0gbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwpOwotICAgIGlm
IChtYXlOb3RCZUNlbGwpCisgICAgYm9vbCBtYXlCZU5vdENlbGwgPSBuZWVkc1R5cGVDaGVjayhl
ZGdlLCBTcGVjQ2VsbCk7CisgICAgaWYgKG1heUJlTm90Q2VsbCkKICAgICAgICAgZG9uZS5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHJlZ3MpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoU3Ry
aW5nVHlwZSArIDEgPT0gSGVhcEJpZ0ludFR5cGUpOwogICAgIERGR19UWVBFX0NIRUNLKHJlZ3Ms
IGVkZ2UsIH4oU3BlY1N0cmluZyB8IFNwZWNIZWFwQmlnSW50KSwgbV9qaXQuYnJhbmNoSWZUeXBl
KHJlZ3MucGF5bG9hZEdQUigpLCBKU1R5cGVSYW5nZSB7IFN0cmluZ1R5cGUsIEhlYXBCaWdJbnRU
eXBlIH0pKTsKIAotICAgIGlmIChtYXlCZUludDMyIHx8IG1heU5vdEJlQ2VsbCkKKyAgICBpZiAo
bWF5QmVJbnQzMiB8fCBtYXlCZU5vdENlbGwpCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwog
fQogCkBAIC0xMjAwMyw2ICsxMjA2Myw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZShOb2RlKiwgRWRnZSBlZGdlKQogICAgIGNhc2UgTm90RG91YmxlVXNlOgogICAgICAgICBzcGVj
dWxhdGVOb3REb3VibGUoZWRnZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50KGVkZ2UpOworICAgICAgICBicmVhazsKICAgICBjYXNlIE5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAgICBzcGVjdWxhdGVOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludE5vclN0cmluZyhlZGdlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggOWYyOTMyMWU3ODRj
Li5iNjUxNWQ4YjcyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKQEAgLTEyNDgsNiArMTI0OCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21w
aWxlU3ltYm9sRXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUhlYXBCaWdJbnRFcXVh
bGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShOb2Rl
KiwgTm9kZSogYnJhbmNoTm9kZSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB2b2lkIGNvbXBp
bGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91YmxlU3RyaWN0RXF1YWxpdHkoTm9k
ZSosIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQsIEVkZ2Ugbm90RG91YmxlKTsKKyNl
bmRpZgorICAgIHZvaWQgZW1pdEJpdHdpc2VKU1ZhbHVlRXF1YWxpdHkoSlNWYWx1ZVJlZ3MmLCBK
U1ZhbHVlUmVncyYsIEdQUlJlZyYgcmVzdWx0KTsKKyAgICB2b2lkIGVtaXRCcmFuY2hPbkJpdHdp
c2VKU1ZhbHVlRXF1YWxpdHkoSlNWYWx1ZVJlZ3MmLCBKU1ZhbHVlUmVncyYsIEJhc2ljQmxvY2sq
IHRha2VuLCBCYXNpY0Jsb2NrKiBub3RUYWtlbik7CiAgICAgdm9pZCBjb21waWxlTm90RG91Ymxl
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShOb2RlKiwg
RWRnZSBub3REb3VibGVFZGdlLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3Ry
aW5nRWRnZSk7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVOb3REb3VibGVOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFuY2hO
b2RlLCBFZGdlIG5vdERvdWJsZUVkZ2UsIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRO
b3JTdHJpbmdFZGdlKTsKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xVbnR5cGVkRXF1YWxpdHkoTm9k
ZSosIEVkZ2Ugc3ltYm9sRWRnZSwgRWRnZSB1bnR5cGVkRWRnZSk7CkBAIC0xNzQwLDYgKzE3NDUs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVOb3RDZWxsTm9yQmlnSW50KEVkZ2UpOwog
ICAgIHZvaWQgc3BlY3VsYXRlTm90RG91YmxlKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVt
cCk7CiAgICAgdm9pZCBzcGVjdWxhdGVOb3REb3VibGUoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxh
dGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChFZGdlLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRl
bXApOworICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSk7
CiAgICAgdm9pZCBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyhF
ZGdlLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXApOwogICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVP
dGhlcihFZGdlLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggOGQ4YWViMTNhOGQx
Li4xODlmNjU0YTRjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzM2LDYgKzMzNiw5NSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3Bl
cmFuZCwgTgogICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShOb2RlKiBub2RlLCBF
ZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIEVkZ2Ugbm90RG91YmxlQ2hpbGQp
Cit7CisgICAgQVNTRVJUKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQudXNlS2luZCgp
ID09IE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlKTsKKyAgICBBU1NFUlQobm90RG91Ymxl
Q2hpbGQudXNlS2luZCgpID09IE5vdERvdWJsZVVzZSk7CisKKyAgICBKU1ZhbHVlT3BlcmFuZCBs
ZWZ0KHRoaXMsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgbm90RG91YmxlQ2hp
bGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICBHUFJUZW1wb3JhcnkgdGVtcCh0
aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgbGVmdFRlbXAodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5
IHJpZ2h0VGVtcCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgbGVmdFRlbXAyKHRoaXMsIFJldXNl
LCBsZWZ0KTsKKyAgICBHUFJUZW1wb3JhcnkgcmlnaHRUZW1wMih0aGlzLCBSZXVzZSwgcmlnaHQp
OworICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOworICAgIEpT
VmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CisKKyAgICBHUFJSZWcg
bGVmdEdQUiA9IGxlZnRSZWdzLnBheWxvYWRHUFIoKTsKKyAgICBHUFJSZWcgcmlnaHRHUFIgPSBy
aWdodFJlZ3MucGF5bG9hZEdQUigpOworICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsK
KyAgICBHUFJSZWcgbGVmdFRlbXBHUFIgPSBsZWZ0VGVtcC5ncHIoKTsKKyAgICBHUFJSZWcgcmln
aHRUZW1wR1BSID0gcmlnaHRUZW1wLmdwcigpOworICAgIEdQUlJlZyBsZWZ0VGVtcDJHUFIgPSBs
ZWZ0VGVtcDIuZ3ByKCk7CisgICAgR1BSUmVnIHJpZ2h0VGVtcDJHUFIgPSByaWdodFRlbXAyLmdw
cigpOworCisgICAgLy8gV2UgdHJ5IHRvIGF2b2lkIHJlcGVhdGVkIGFuZCByZWR1bmRhbnQgY2hl
Y2tzIGhlcmUsIHdoaWNoIGxlYWRzIHRvIHRoZSBmb2xsb3dpbmcgcHNldWRvLWNvZGU6CisgICAg
LyoKKyAgICAgaWYgKGxlZnQgPT0gdHJ1ZSkgeworICAgICAgIHNwZWN1bGF0ZU5laXRoZXJEb3Vi
bGVOb3JIZWFwQmlnSW50KGxlZnQpOworICAgICAgIHJldHVybiB0cnVlOworICAgICB9CisgICAg
IHNwZWN1bGF0ZU5vdERvdWJsZShyaWdodCk7CisgICAgIHNwZWN1bGF0ZU5vdERvdWJsZShsZWZ0
KTsKKyAgICAgaWYgKGxlZnQgaXMgbm90IENlbGwpCisgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICBDaGVjayB0aGF0IGxlZnQgaXMgbm90IEhlYXBCaWdJbnQ7CisgICAgIGlmIChsZWZ0IGlzIG5v
dCBTdHJpbmcpCisgICAgICAgcmV0dXJuIGZhbHNlOworICAgICBpZiAocmlnaHQgaXMgbm90IENl
bGwpCisgICAgICAgcmV0dXJuIGZhbHNlOworICAgICBpZiAocmlnaHQgaXMgbm90IFN0cmluZykK
KyAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIHJldHVybiBzdHJpbmdFcXVhbGl0eShsZWZ0LCBy
aWdodCkKKyAgICAgfQorICAgICAqLworICAgIC8vIE1lcmNpZnVsbHkgd2UgY2FuIG9mdGVuIGVs
aW1pbmF0ZSBtdWNoIG9mIHRoaXMgc291cCBvZiBjb25kaXRpb25hbHMgd2l0aCB0aGUgaGVscCBv
ZiB0aGUgYWJzdHJhY3QgaW50ZXJwcmV0ZXIuCisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
dHJ1ZUNhc2U7CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGZhbHNlQ2FzZTsKKworICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5vdEVxdWFsID0gbV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgLy8gV2UgY2Fubm90IHVzZSBzcGVjdWxh
dGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCBoZXJlLCBiZWNhdXNlIGl0IHVwZGF0ZXMgdGhl
IGludGVycHJldGVyIHN0YXRlLCBhbmQgd2UgY2FuIHNraXAgb3ZlciBpdC4KKyAgICAvLyBTbyB3
ZSB3b3VsZCBhbHdheXMgc2tpcCB0aGUgc3BlY3VsYXRlTm90RG91YmxlIHRoYXQgZm9sbG93cy4K
KyAgICBpZiAobmVlZHNUeXBlQ2hlY2sobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwg
flNwZWNGdWxsRG91YmxlKSkgeworICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnRDaGlsZCwgflNwZWNJbnQzMk9ubHkpKQorICAgICAgICAgICAgdHJ1
ZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmSW50MzIobGVmdFJlZ3MpKTsKKyAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBsZWZ0UmVncywgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnRDaGlsZC5ub2RlKCksIG1faml0LmJyYW5jaElmTnVtYmVyKGxlZnRSZWdzLCB0ZW1wR1BSKSk7
CisgICAgfQorICAgIGlmIChuZWVkc1R5cGVDaGVjayhuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dENoaWxkLCB+U3BlY0hlYXBCaWdJbnQpKSB7CisgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhu
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCBTcGVjQ2VsbCkpCisgICAgICAgICAgICB0
cnVlQ2FzZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGxlZnRSZWdzKSk7CisgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgbGVmdFJlZ3MsIG5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Q2hpbGQubm9kZSgpLCBtX2ppdC5icmFuY2hJZkhlYXBCaWdJbnQobGVmdEdQUikpOwor
ICAgIH0KKyAgICB0cnVlQ2FzZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICBub3RFcXVhbC5s
aW5rKCZtX2ppdCk7CisKKyAgICBzcGVjdWxhdGVOb3REb3VibGUobm90RG91YmxlQ2hpbGQsIHJp
Z2h0UmVncywgdGVtcEdQUik7CisgICAgc3BlY3VsYXRlTm90RG91YmxlKG5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Q2hpbGQsIGxlZnRSZWdzLCB0ZW1wR1BSKTsKKworICAgIGJvb2wgbGVmdE1h
eUJlTm90Q2VsbCA9IG5lZWRzVHlwZUNoZWNrKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hp
bGQsIFNwZWNDZWxsQ2hlY2spOworICAgIGlmIChsZWZ0TWF5QmVOb3RDZWxsKQorICAgICAgICBm
YWxzZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChsZWZ0UmVncykpOworCisgICAg
REZHX1RZUEVfQ0hFQ0sobGVmdFJlZ3MsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQs
IH5TcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZIZWFwQmlnSW50KGxlZnRHUFIpKTsKKwor
ICAgIGJvb2wgbGVmdE1heUJlTm90U3RyaW5nS25vd2luZ0NlbGwgPSBuZWVkc1R5cGVDaGVjayhu
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCAoflNwZWNTdHJpbmcpICYgU3BlY0NlbGxD
aGVjayk7CisgICAgaWYgKGxlZnRNYXlCZU5vdFN0cmluZ0tub3dpbmdDZWxsKQorICAgICAgICBm
YWxzZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmTm90U3RyaW5nKGxlZnRHUFIpKTsKKworICAg
IGJvb2wgcmlnaHRNYXlCZU5vdENlbGwgPSBuZWVkc1R5cGVDaGVjayhub3REb3VibGVDaGlsZCwg
U3BlY0NlbGxDaGVjayk7CisgICAgaWYgKHJpZ2h0TWF5QmVOb3RDZWxsKQorICAgICAgICBmYWxz
ZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChyaWdodFJlZ3MpKTsKKworICAgIGJv
b2wgcmlnaHRNYXlCZU5vdFN0cmluZ0tub3dpbmdDZWxsID0gbmVlZHNUeXBlQ2hlY2sobm90RG91
YmxlQ2hpbGQsICh+U3BlY1N0cmluZykgJiBTcGVjQ2VsbENoZWNrKTsKKyAgICBpZiAocmlnaHRN
YXlCZU5vdFN0cmluZ0tub3dpbmdDZWxsKQorICAgICAgICBmYWxzZUNhc2UuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90U3RyaW5nKHJpZ2h0R1BSKSk7CisKKyAgICBjb21waWxlU3RyaW5nRXF1YWxp
dHkobm9kZSwgbGVmdEdQUiwgcmlnaHRHUFIsIHRlbXBHUFIsIGxlZnRUZW1wR1BSLCByaWdodFRl
bXBHUFIsIGxlZnRUZW1wMkdQUiwgcmlnaHRUZW1wMkdQUiwgdHJ1ZUNhc2UsIGZhbHNlQ2FzZSk7
Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RF
cShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBib29sIGludmVydCkKIHsKICAgICBCYXNp
Y0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAppbmRleCA0YjQzYzc1ZGZkNTMu
LmYxNDU2MjQ4MGNiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3Bw
CkBAIC0xNzMsNiArMTczLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IFVzZUtpbmQgdXNlS2luZCkKICAgICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAgICAgb3V0LnBy
aW50KCJOb3REb3VibGUiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnQiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAgICAgIG91dC5wcmludCgiTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmciKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuaAppbmRleCA2NmU4YzRlYmE0YjAuLmVkZWU2Mjg3OTQyNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKQEAgLTgyLDYgKzgyLDcgQEAgZW51
bSBVc2VLaW5kIHsKICAgICBOb3RDZWxsVXNlLAogICAgIE5vdENlbGxOb3JCaWdJbnRVc2UsCiAg
ICAgTm90RG91YmxlVXNlLAorICAgIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlLAogICAg
IE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlLAogICAgIEtub3duT3RoZXJV
c2UsCiAgICAgT3RoZXJVc2UsCkBAIC0xOTEsNiArMTkyLDggQEAgaW5saW5lIFNwZWN1bGF0ZWRU
eXBlIHR5cGVGaWx0ZXJGb3IoVXNlS2luZCB1c2VLaW5kKQogICAgICAgICByZXR1cm4gflNwZWND
ZWxsQ2hlY2sgJiB+U3BlY0JpZ0ludDsKICAgICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAgICAg
cmV0dXJuIH5TcGVjRnVsbERvdWJsZTsKKyAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50VXNlOgorICAgICAgICByZXR1cm4gflNwZWNGdWxsRG91YmxlICYgflNwZWNIZWFwQmlnSW50
OwogICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAg
ICAgIHJldHVybiB+KFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBCaWdJbnQgfCBTcGVjU3RyaW5n
KTsKICAgICBjYXNlIEtub3duT3RoZXJVc2U6CkBAIC0zMTIsNiArMzE1LDcgQEAgaW5saW5lIGJv
b2wgY2hlY2tNYXlDcmFzaElmSW5wdXRJc0VtcHR5KFVzZUtpbmQga2luZCkKICAgICBjYXNlIE5v
dENlbGxVc2U6CiAgICAgY2FzZSBOb3RDZWxsTm9yQmlnSW50VXNlOgogICAgIGNhc2UgTm90RG91
YmxlVXNlOgorICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2U6CiAgICAgY2Fz
ZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKaW5kZXggODNiNTFiYTljZjc2Li5kMTI0OGM5ZmFkNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTUyNyw2ICs1
MjcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAg
ICAgICAgICAgY2FzZSBBbnlJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBB
bnlJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBOb3REb3VibGVVc2U6CisgICAgICAgICAg
ICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZToKICAgICAgICAgICAgICAg
ICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAgICAg
ICAgICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDdi
YzQ4ZDQwNjdjNi4uZWQ3MDI3MWRkY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC05ODIxLDYgKzk4MjEsMTUgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZSwgTm90RG91YmxlVXNlKSkg
eworICAgICAgICAgICAgY29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3Vi
bGVTdHJpY3RFcXVhbGl0eShtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIGNvbXBpbGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91Ymxl
U3RyaWN0RXF1YWxpdHkobV9ub2RlLT5jaGlsZDIoKSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICAvLyBGSVhNRTogd2UgY2FuIGRv
IHNvbWV0aGluZyBtdWNoIHNtYXJ0ZXIgaGVyZSwgc2VlIHRoZSBERkdTcGVjdWxhdGl2ZUpJVCBh
cHByb2FjaCBpbiBlLmcuIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3Ry
aWN0RXEKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFVudHlwZWRVc2UpLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSwgbV9ub2Rl
LT5jaGlsZDIoKS51c2VLaW5kKCkpOwogICAgICAgICBnZW5lcmljSlNWYWx1ZUNvbXBhcmUoCkBA
IC05ODY5LDYgKzk4NzgsOTEgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5w
aGkoSW50MzIsIGZhc3RUcnVlLCBmYXN0RmFsc2UsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAKKyAg
ICB2b2lkIGNvbXBpbGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91YmxlU3RyaWN0
RXF1YWxpdHkoRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UsIEVkZ2Ugbm90RG91
YmxlRWRnZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dEVkZ2UudXNlS2luZCgpID09IE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlKTsKKyAgICAg
ICAgQVNTRVJUKG5vdERvdWJsZUVkZ2UudXNlS2luZCgpID09IE5vdERvdWJsZVVzZSk7CisKKyAg
ICAgICAgTFZhbHVlIGxlZnRWYWx1ZSA9IGxvd0pTVmFsdWUobmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnRFZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBMVmFsdWUgcmln
aHRWYWx1ZSA9IGxvd0pTVmFsdWUobm90RG91YmxlRWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdFZhbHVlVHlwZSA9IHByb3ZlblR5cGUo
bmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRFZGdlKTsKKyAgICAgICAgU3BlY3VsYXRlZFR5cGUg
cmlnaHRWYWx1ZVR5cGUgPSBwcm92ZW5UeXBlKG5vdERvdWJsZUVkZ2UpOworCisgICAgICAgIExC
YXNpY0Jsb2NrIHRyaXZpYWxseUVxdWFsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGxlZnRJc05vdEludDMyRXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzQ2VsbEVxdWFsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHJldHVyblRydWVCbG9jayA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgIExCYXNpY0Jsb2NrIG5vdFRyaXZpYWxseUVxdWFsQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0NlbGwgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNTdHJpbmcgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayByaWdodElzQ2VsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNTdHJpbmcgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAg
ICAgIC8vIFdlIHRyeSB0byBhdm9pZCByZXBlYXRlZCBhbmQgcmVkdW5kYW50IGNoZWNrcyBoZXJl
LCB3aGljaCBsZWFkcyB0byB0aGUgZm9sbG93aW5nIHBzZXVkby1jb2RlOgorICAgICAgICAvKgor
ICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpIHsKKyAgICAgICAgICAgc3BlY3VsYXRlTmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnQobGVmdCk7CisgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgfQorICAgICAgICAgc3BlY3VsYXRlTm90RG91YmxlKHJpZ2h0KTsKKyAgICAgICAgIHNw
ZWN1bGF0ZU5vdERvdWJsZShsZWZ0KTsKKyAgICAgICAgIGlmIChsZWZ0IGlzIG5vdCBDZWxsKQor
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICBDaGVjayB0aGF0IGxlZnQgaXMgbm90
IEhlYXBCaWdJbnQ7CisgICAgICAgICBpZiAobGVmdCBpcyBub3QgU3RyaW5nKQorICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICBpZiAocmlnaHQgaXMgbm90IENlbGwpCisgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIGlmIChyaWdodCBpcyBub3QgU3RyaW5nKQorICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICByZXR1cm4gc3RyaW5nRXF1YWxpdHkobGVm
dCwgcmlnaHQpCisgICAgICAgICB9CisgICAgICAgICAqLworICAgICAgICBtX291dC5icmFuY2go
bV9vdXQuZXF1YWwobGVmdFZhbHVlLCByaWdodFZhbHVlKSwgdW5zdXJlKHRyaXZpYWxseUVxdWFs
Q2FzZSksIHVuc3VyZShub3RUcml2aWFsbHlFcXVhbENhc2UpKTsKKworICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHRyaXZpYWxseUVxdWFsQ2FzZSwgbGVmdElz
Tm90SW50MzJFcXVhbENhc2UpOworICAgICAgICAvLyBMb2dpY2FsbHkgd2Ugd2FudCBzcGVjdWxh
dGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCwgYnV0IHdlIGNhbm5vdCB1c2UgaXQgaGVyZSBh
cyBpdCBjaGFuZ2VzIHRoZSBzdGF0ZSBvZiB0aGUgYWJzdHJhY3QgaW50ZXJwcmV0ZXIuCisgICAg
ICAgIC8vIFNvIGlmIHdlIHVzZWQgaXQgaGVyZSwgd2Ugd291bGQgc2tpcCB0aGUgbGF0ZXIgY2hl
Y2tzLgorICAgICAgICAvLyBJbnN0ZWFkIHdlIHJlaW1wbGVtZW50IGl0IGluIHRoaXMgYW5kIHRo
ZSBuZXh0IGZldyBibG9ja3MsIHVzaW5nIHR5cGVDaGVja1dpdGhvdXRVcGRhdGluZ0ludGVycHJl
dGVyLgorICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMihsZWZ0VmFsdWUsIGxlZnRWYWx1ZVR5
cGUpLCB1bnN1cmUocmV0dXJuVHJ1ZUJsb2NrKSwgdW5zdXJlKGxlZnRJc05vdEludDMyRXF1YWxD
YXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdElzTm90SW50MzJFcXVhbENhc2Us
IGxlZnRJc0NlbGxFcXVhbENhc2UpOworICAgICAgICB0eXBlQ2hlY2tXaXRob3V0VXBkYXRpbmdJ
bnRlcnByZXRlcihqc1ZhbHVlVmFsdWUobGVmdFZhbHVlKSwgbmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnRFZGdlLCB+U3BlY0Z1bGxEb3VibGUsIGlzTnVtYmVyKGxlZnRWYWx1ZSkpOworICAgICAg
ICBtX291dC5icmFuY2goaXNDZWxsKGxlZnRWYWx1ZSwgbGVmdFZhbHVlVHlwZSAmIH5TcGVjSW50
MzJPbmx5KSwgdW5zdXJlKGxlZnRJc0NlbGxFcXVhbENhc2UpLCB1bnN1cmUocmV0dXJuVHJ1ZUJs
b2NrKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdElzQ2VsbEVxdWFsQ2FzZSwgcmV0
dXJuVHJ1ZUJsb2NrKTsKKyAgICAgICAgdHlwZUNoZWNrV2l0aG91dFVwZGF0aW5nSW50ZXJwcmV0
ZXIoanNWYWx1ZVZhbHVlKGxlZnRWYWx1ZSksIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50RWRn
ZSwgflNwZWNIZWFwQmlnSW50LCBpc0hlYXBCaWdJbnQobGVmdFZhbHVlKSk7CisgICAgICAgIG1f
b3V0Lmp1bXAocmV0dXJuVHJ1ZUJsb2NrKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhyZXR1
cm5UcnVlQmxvY2ssIG5vdFRyaXZpYWxseUVxdWFsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGZhc3RUcnVlID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKKyAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFRy
aXZpYWxseUVxdWFsQ2FzZSwgbGVmdElzQ2VsbCk7CisgICAgICAgIHNwZWN1bGF0ZU5vdERvdWJs
ZShuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UpOworICAgICAgICBzcGVjdWxhdGVOb3RE
b3VibGUobm90RG91YmxlRWRnZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RGYWxzZSA9
IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5icmFuY2go
aXNOb3RDZWxsKGxlZnRWYWx1ZSwgbGVmdFZhbHVlVHlwZSAmIH5TcGVjRnVsbERvdWJsZSksIHVu
c3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobGVmdElzQ2VsbCkpOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGxlZnRJc0NlbGwsIGxlZnRJc1N0cmluZyk7CisgICAgICAgIEZUTF9UWVBFX0NI
RUNLKGpzVmFsdWVWYWx1ZShsZWZ0VmFsdWUpLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVk
Z2UsIH5TcGVjSGVhcEJpZ0ludCwgaXNIZWFwQmlnSW50KGxlZnRWYWx1ZSkpOworICAgICAgICBt
X291dC5icmFuY2goaXNOb3RTdHJpbmcobGVmdFZhbHVlLCBsZWZ0VmFsdWVUeXBlICYgU3BlY0Nl
bGwgJiB+U3BlY0hlYXBCaWdJbnQpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGxlZnRJ
c1N0cmluZykpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc1N0cmluZywgcmlnaHRJ
c0NlbGwpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RDZWxsKHJpZ2h0VmFsdWUsIHJpZ2h0
VmFsdWVUeXBlICYgflNwZWNGdWxsRG91YmxlKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3Vy
ZShyaWdodElzQ2VsbCkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0SXNDZWxsLCBy
aWdodElzU3RyaW5nKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90U3RyaW5nKHJpZ2h0VmFs
dWUsIHJpZ2h0VmFsdWVUeXBlICYgU3BlY0NlbGwgJiB+U3BlY0Z1bGxEb3VibGUpLCB1bnN1cmUo
Y29udGludWF0aW9uKSwgdW5zdXJlKHJpZ2h0SXNTdHJpbmcpKTsKKworICAgICAgICBtX291dC5h
cHBlbmRUbyhyaWdodElzU3RyaW5nLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHN0cmluZ3NFcXVhbChsZWZ0VmFsdWUsIHJp
Z2h0VmFsdWUsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50RWRnZSwgbm90RG91YmxlRWRnZSkp
OworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQu
cGhpKEludDMyLCBmYXN0VHJ1ZSwgZmFzdEZhbHNlLCBzbG93UmVzdWx0KSk7CisgICAgfQorCiAg
ICAgdm9pZCBjb21waWxlQ29tcGFyZUVxUHRyKCkKICAgICB7CiAgICAgICAgIHNldEJvb2xlYW4o
CkBAIC0xODA0NywyNSArMTgxNDEsMjUgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1faW50
ZXJwcmV0ZXIuZmlsdGVyKGhpZ2hWYWx1ZSwgdHlwZXNQYXNzZWRUaHJvdWdoKTsKICAgICB9Ci0g
ICAgCi0gICAgdm9pZCB0eXBlQ2hlY2soCisKKyAgICB2b2lkIHR5cGVDaGVja1dpdGhvdXRVcGRh
dGluZ0ludGVycHJldGVyKAogICAgICAgICBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1ZSwgRWRnZSBo
aWdoVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCwKICAgICAgICAgTFZh
bHVlIGZhaWxDb25kaXRpb24sIEV4aXRLaW5kIGV4aXRLaW5kID0gQmFkVHlwZSkKLSAgICB7Ci0g
ICAgICAgIGFwcGVuZFR5cGVDaGVjayhsb3dWYWx1ZSwgaGlnaFZhbHVlLCB0eXBlc1Bhc3NlZFRo
cm91Z2gsIGZhaWxDb25kaXRpb24sIGV4aXRLaW5kKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBh
cHBlbmRUeXBlQ2hlY2soCi0gICAgICAgIEZvcm1hdHRlZFZhbHVlIGxvd1ZhbHVlLCBFZGdlIGhp
Z2hWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoLAotICAgICAgICBMVmFs
dWUgZmFpbENvbmRpdGlvbiwgRXhpdEtpbmQgZXhpdEtpbmQpCiAgICAgewogICAgICAgICBpZiAo
IW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soaGlnaFZhbHVlLCB0eXBlc1Bhc3NlZFRocm91
Z2gpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBBU1NFUlQobWF5SGF2ZVR5cGVDaGVj
ayhoaWdoVmFsdWUudXNlS2luZCgpKSk7CiAgICAgICAgIGFwcGVuZE9TUkV4aXQoZXhpdEtpbmQs
IGxvd1ZhbHVlLCBoaWdoVmFsdWUubm9kZSgpLCBmYWlsQ29uZGl0aW9uLCBtX29yaWdpbik7Cisg
ICAgfQorCisgICAgdm9pZCB0eXBlQ2hlY2soCisgICAgICAgIEZvcm1hdHRlZFZhbHVlIGxvd1Zh
bHVlLCBFZGdlIGhpZ2hWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoLAor
ICAgICAgICBMVmFsdWUgZmFpbENvbmRpdGlvbiwgRXhpdEtpbmQgZXhpdEtpbmQgPSBCYWRUeXBl
KQorICAgIHsKKyAgICAgICAgdHlwZUNoZWNrV2l0aG91dFVwZGF0aW5nSW50ZXJwcmV0ZXIobG93
VmFsdWUsIGhpZ2hWYWx1ZSwgdHlwZXNQYXNzZWRUaHJvdWdoLCBmYWlsQ29uZGl0aW9uLCBleGl0
S2luZCk7CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKGhpZ2hWYWx1ZSwgdHlwZXNQYXNz
ZWRUaHJvdWdoKTsKICAgICB9Ci0gICAgCisKICAgICBMVmFsdWUgbG93SW50MzIoRWRnZSBlZGdl
LCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRp
b24pCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uIHx8IChlZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSB8fCBlZGdlLnVz
ZUtpbmQoKSA9PSBLbm93bkludDMyVXNlKSk7CkBAIC0xODkyMSw2ICsxOTAxNSw5IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgTm90RG91YmxlVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlTm90
RG91YmxlKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnRVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludChlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5l
aXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAgICAgICAgc3BlY3Vs
YXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoZWRnZSk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTE4OTg4LDYgKzE5MDg1LDMwIEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgIH0KIAorICAgIHZvaWQgc3Bl
Y3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSBlZGdlKQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc05vdEludDMyID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQmxvY2sgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5u
ZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHZhbHVlLCBwcm92ZW5U
eXBlKGVkZ2UpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShpc05vdEludDMyKSk7CisK
KyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc05vdEludDMy
LCBpc0NlbGxCbG9jayk7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1
ZSksIGVkZ2UsIH5TcGVjRnVsbERvdWJsZSwgaXNOdW1iZXIodmFsdWUpKTsKKyAgICAgICAgbV9v
dXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSAmIH5TcGVjRnVsbE51bWJl
ciksIHVuc3VyZShpc0NlbGxCbG9jayksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAgICAg
ICBtX291dC5hcHBlbmRUbyhpc0NlbGxCbG9jaywgY29udGludWF0aW9uKTsKKyAgICAgICAgRlRM
X1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgflNwZWNIZWFwQmlnSW50LCBp
c0hlYXBCaWdJbnQodmFsdWUpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwor
CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgIH0K
KwogICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmco
RWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNo
ZWNrKGVkZ2UpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437695</attachid>
            <date>2021-09-08 18:37:43 -0700</date>
            <delta_ts>2021-09-08 22:28:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226755</filename>
            <type>text/plain</type>
            <size>34896</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NGI4NDI3MWIzNGFmLi40ODNiMTJhNmIxODkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDktMDggIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBj
b21wYXJlU3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMgYSBkb3VibGUgYW5kIGF0IGxlYXN0
IG9uZSBpcyBub3QgYSBCaWdJbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjc1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzkzMjE1NDI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBNYWRlIHRoZSBl
cnJvciBtZXNzYWdlcyBpbiBzdHJlc3MvcmVmbGVjdC1zZXQgYSBiaXQgbW9yZSBpbmZvcm1hdGl2
ZSBpbiB0aGUgcHJvY2VzcyBvZiBkZWJ1Z2dpbmcgYW4gaXNzdWUgd2l0aCB0aGUgcGF0Y2guCisK
KyAgICAgICAgKiBzdHJlc3MvcmVmbGVjdC1zZXQuanM6CisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisKIDIwMjEtMDktMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuUGxhaW5U
aW1lCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWZsZWN0LXNldC5qcyBiL0pTVGVzdHMv
c3RyZXNzL3JlZmxlY3Qtc2V0LmpzCmluZGV4IDA3ZjRjMzYxOWIxZC4uNjNlNDA3MDMyNTBhIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9yZWZsZWN0LXNldC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9yZWZsZWN0LXNldC5qcwpAQCAtMSw2ICsxLDYgQEAKIGZ1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGRlc2NyaWJlKGFjdHVhbCkgKyAnLCBleHBlY3RlZDog
JyArIGRlc2NyaWJlKGV4cGVjdGVkKSk7CiB9CiAKIGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMs
IG1lc3NhZ2UpIHsKQEAgLTExLDkgKzExLDkgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
bWVzc2FnZSkgewogICAgICAgICBlcnJvciA9IGU7CiAgICAgfQogICAgIGlmICghZXJyb3IpCi0g
ICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bi4nKTsKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdub3QgdGhyb3duLiBFeHBlY3RlZDogJyArIG1lc3NhZ2UpOwogICAgIGlmIChTdHJp
bmcoZXJyb3IpICE9PSBtZXNzYWdlKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBlcnJv
cjogJyArIFN0cmluZyhlcnJvcikpOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBlcnJv
cjogJyArIFN0cmluZyhlcnJvcikgKyAnLCBleHBlY3RlZDogJyArIG1lc3NhZ2UpOwogfQogCiBm
dW5jdGlvbiB1bnJlYWNoYWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBjNjFhYzVj
ZjcxMjUuLjFjYjdlOTVjNWM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzQgQEAKKzIwMjEtMDktMDggIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4K
KworICAgICAgICBPcHRpbWl6ZSBjb21wYXJlU3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMg
YSBkb3VibGUgYW5kIGF0IGxlYXN0IG9uZSBpcyBub3QgYSBCaWdJbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjc1NQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzkzMjE1NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBpcyBhIHZlcnkgc2ltaWxhciBwYXRjaCB0byBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2LgorICAgICAgICBUaGUgZGlmZmVyZW5j
ZSBpcyB0aGF0IGhlcmUgd2UgYWxsb3cgU3RyaW5ncyBvbiBib3RoIHNpZGUgb2YgdGhlIGNvbXBh
cmlzb24sIHNvIHdlIG11c3QgYWRkIGNvZGUgdG8gaGFuZGxlIGVxdWFsaXR5IGFtb25nIHN0cmlu
Z3MuCisKKyAgICAgICAgTGlrZSBmb3IgdGhhdCBvdGhlciBwYXRjaCwgdGhlIG9wdGltaXphdGlv
biBpcyBkaXNhYmxlZCBmb3IgQmlnSW50MzIuCisgICAgICAgIEVuYWJsaW5nIGl0IGluIHRoYXQg
Y2FzZSB3b3VsZCBlaXRoZXIgbmVlZCBtb2RpZnlpbmcgdGhlIHNwZWN1bGF0aW9uIChmcm9tIGJh
bm5pbmcgSGVhcEJpZ0ludCB0byBiYW5uaW5nIGFsbCBCaWdJbnRzKSwgb3IgZW5zdXJpbmcgdGhh
dCB3ZSBjYW4gbmV2ZXIgaGF2ZSBhIEhlYXBCaWdJbnQgc28gc21hbGwgaXQgY29tcGFyZXMgZXF1
YWwgdG8gYSBCaWdJbnQzMi4KKworICAgICAgICBJIG9ubHkgaW1wbGVtZW50ZWQgdGhpcyBvcHRp
bWl6YXRpb24gb24gNjQtYml0czogaXQgaXMganVzdCBwYWluZnVsIHRvIHdyaXRlIGNvZGUgdGhh
dCBoYW5kbGVzIHJlZ2lzdGVycyBhdCBzdWNoIGEgbG93LWxldmVsIHdpdGhvdXQgYSAzMi1iaXQg
bWFjaGluZSB0byB0ZXN0IHRoaW5ncyBsb2NhbGx5LgorICAgICAgICBJZiBhbnlvbmUgd2FudHMg
dG8gbWFrZSB0aGlzIG9wdGltaXphdGlvbiB3b3JrIG9uIDMyLWJpdCwgSSBkb24ndCBmb3JldGVs
bCBhbnkgbWFqb3IgZGlmZmljdWx0eS4KKworICAgICAgICBGaW5hbGx5LCBsaWtlIHF1aXRlIGEg
ZmV3IG90aGVyIHVzZUtpbmRzIGFscmVhZHksIHRoaXMgY2FzZSBkb2VzIG5vdCBtYWtlIHRoZSBD
b21wYXJlU3RyaWN0RXEgbWVyZ2Ugd2l0aCBhbiBhZGphY2VudCBCcmFuY2guCisgICAgICAgIFRo
ZSByZWFzb24gaXMgc2ltcGx5IHRoYXQgdGhpcyBwYXRjaCByZWxpZXMgb24gY29tcGlsZVN0cmlu
Z0VxdWFsaXR5LCB3aGljaCBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCB0aGF0IGZlYXR1cmUu
CisgICAgICAgIEkgaW50ZW5kIHRvIGZpeCB0aGlzIChmb3IgYWxsIHVzZUtpbmRzIGF0IG9uY2Up
IGluIGEgc2VwYXJhdGUgcGF0Y2guCisKKyAgICAgICAgRWZmZWN0IG9uIG1pY3JvYmVuY2htYXJr
czoKKyAgICAgICAgcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlICAgICAgICAgICAgICAgICAgNDYu
ODAwMCstMC40MTEwICAgICBeICAgICAyMy41ODcyKy0wLjMwNjEgICAgICAgIF4gZGVmaW5pdGVs
eSAxLjk4NDF4IGZhc3RlcgorICAgICAgICBwb2x5LXN0cmljdGVxLW5vdC1kb3VibGUtbm9yLXN0
cmluZyAgICAgICAxNi42ODgwKy0wLjIzMTcgICAgICAgICAgIDE2LjM2MjcrLTAuMzcyOSAgICAg
ICAgICBtaWdodCBiZSAxLjAxOTl4IGZhc3RlcgorICAgICAgICBwb2x5LXN0cmljdGVxICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0OS4yMTc1Ky0wLjYwNDcgICAgICAgICAgIDQ4Ljk1MzIr
LTAuNjc1OAorCisgICAgICAgIEkgbG9va2VkIGF0IGhvdyBtYW55IGNhc2VzIG9mIFVudHlwZWQv
VW50eXBlZCBjb21wYXJlU3RyaWN0RXEgaGF2ZSBiZWVuIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggYW5k
IHR3byBvdGhlciByZWNlbnQgcGF0Y2hlcy4KKyAgICAgICAgT24gSmV0U3RyZWFtMjoKKyAgICAg
ICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NjIxOiA3MzEg
aW5zdGFuY2VzCisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNjY3NjogOTQ0IGluc3RhbmNlcworICAgICAgICAtIFRoaXMgcGF0Y2g6IG9ubHkgMjYg
aW5zdGFuY2VzCisgICAgICAgIFRoaXMgbGVhdmVzIDIwIGluc3RhbmNlcyBvZiBVbnR5cGVkL1Vu
dHlwZWQuCisKKyAgICAgICAgT24gU3BlZWRvbWV0ZXIyLjA6CisgICAgICAgIC0gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMTogMTU4NyBpbnN0YW5jZXMKKyAg
ICAgICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2OiAy
Nzg0IGluc3RhbmNlcworICAgICAgICAtIFRoaXMgcGF0Y2g6IDg5MSBpbnN0YW5jZXMKKyAgICAg
ICAgVGhpcyBsZWF2ZXMgNzUgaW5zdGFuY2VzIG9mIFVudHlwZWQvVW50eXBlZC4KKworICAgICAg
ICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnRTcGVjdWxhdGlvbik6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBDb21wYXJlU3Ry
aWN0RXFBbmRTYW1lVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQp
OgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
dHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCaXR3aXNl
SlNWYWx1ZUVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEJyYW5jaE9uQml0d2lzZUpTVmFsdWVFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZ1N0cmljdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBlZXBIb2xlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmdTdHJpY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eSk6
CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5
cGVGaWx0ZXJGb3IpOgorICAgICAgICAoSlNDOjpERkc6OmNoZWNrTWF5Q3Jhc2hJZklucHV0SXNF
bXB0eSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0
RXEpOgorCiAyMDIxLTA5LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgYWRkIGZpbGVzIHRvIHhjb2RlcHJvagpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCA5Njk3NzgzNTU3
NDEuLjI3YTcwM2NjZDdmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTQ0OSw2ICs0NDksMTEgQEAgaW5saW5lIGJvb2wgaXNOZWl0
aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHR5cGUKICAgICByZXR1cm4gISh0eXBlICYgKFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBCaWdJ
bnQgfCBTcGVjU3RyaW5nKSk7CiB9CiAKK2lubGluZSBib29sIGlzTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB0eXBlKQoreworICAgIHJldHVybiAh
KHR5cGUgJiAoU3BlY0Z1bGxEb3VibGUgfCBTcGVjSGVhcEJpZ0ludCkpOworfQorCiBpbmxpbmUg
Ym9vbCBpc090aGVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0
dXJuIHZhbHVlID09IFNwZWNPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAppbmRleCBlNjQ4MTY3YzExODYuLjA3MGE0ODU0N2E5NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNl
S2luZChPYmplY3RVc2UpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlz
Y1VzZSwgVW50eXBlZFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1p
c2NVc2UpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRV
c2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdFN0cmluZ1Zh
clVzZSwgU3RyaW5nSWRlbnRVc2UpCi0gICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZSkg
fHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmdVc2UpKQorICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2Up
IHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0
cmluZ1VzZSwgTm90RG91YmxlVXNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCmluZGV4IDBiZWI4YmUwMTZlMi4uYWM0ZWJlMDM5ZmE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTQ0NzcsNyArNDQ3NywyMyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0
cmljdEVxKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotI2VuZGlmCisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCgpCisgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIo
KS0+c2hvdWxkU3BlY3VsYXRlTm90RG91YmxlKCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8TmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8Tm90RG91YmxlVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2Rl
LT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlTm90RG91YmxlKCkKKyAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVj
dWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCgpKSB7CisgICAgICAgICAgICBmaXhFZGdl
PE5vdERvdWJsZVVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxOZWl0
aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
bm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisjZW5kaWYgLy8g
IVVTRShCSUdJTlQzMikKICAgICB9CiAKICAgICB2b2lkIGZpeHVwQ2hlY2tzSW5CbG9jayhCYXNp
Y0Jsb2NrKiBibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMTlmNDBm
ODE1YWEzLi4yYWY3OTcwNjhhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC0yODg3LDYgKzI4ODcsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGlzTmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkp
OwogICAgIH0KKworICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3Vs
ZFNwZWN1bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGQ1NDk2NDQ1MGI2My4uOTI0ZmM4
YzMxMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwQW55SW50
VXNlOgogICAgICAgICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAgICAgY2FzZSBOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKKyAgICAgICAgY2FzZSBOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludFVzZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIEtub3duSW50MzJVc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDg3MGZmYjFlN2JiYi4uZWNiOTk4YzYxOGZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtNzIyNiw3ICs3MjI2LDIxIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RF
cShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShub2RlLCBub3REb3VibGVDaGlsZCwgbmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0jZW5kaWYKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2UsIE5vdERvdWJsZVVz
ZSkpIHsKKyAgICAgICAgRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkID0gbm9k
ZS0+Y2hpbGQxKCk7CisgICAgICAgIEVkZ2Ugbm90RG91YmxlQ2hpbGQgPSBub2RlLT5jaGlsZDIo
KTsKKyAgICAgICAgY29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVT
dHJpY3RFcXVhbGl0eShub2RlLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCBub3RE
b3VibGVDaGlsZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChOb3REb3VibGVVc2UsIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
VXNlKSkgeworICAgICAgICBFZGdlIG5vdERvdWJsZUNoaWxkID0gbm9kZS0+Y2hpbGQxKCk7Cisg
ICAgICAgIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCA9IG5vZGUtPmNoaWxk
MigpOworICAgICAgICBjb21waWxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRUb05vdERvdWJs
ZVN0cmljdEVxdWFsaXR5KG5vZGUsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIG5v
dERvdWJsZUNoaWxkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZiAvLyBV
U0UoSlNWQUxVRTY0KQorI2VuZGlmIC8vICFVU0UoQklHSU5UMzIpCiAKICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVIZWFwQmln
SW50RXF1YWxpdHkobm9kZSk7CkBAIC03NDU3LDYgKzc0NzEsNDAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSogbm9kZSwgTm9kZSogYnJh
bmNoTm9kZSkKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCaXR3aXNlSlNW
YWx1ZUVxdWFsaXR5KEpTVmFsdWVSZWdzJiBsZWZ0LCBKU1ZhbHVlUmVncyYgcmlnaHQsIEdQUlJl
ZyYgcmVzdWx0KQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9qaXQuY29tcGFyZTY0KEpJ
VENvbXBpbGVyOjpFcXVhbCwgbGVmdC5ncHIoKSwgcmlnaHQuZ3ByKCksIHJlc3VsdCk7CisjZWxz
ZQorICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQpOworICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdEVxdWFsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LCBsZWZ0LnRhZ0dQUigpLCByaWdodC50YWdHUFIoKSk7CisgICAgbV9qaXQuY29tcGFyZTMyKEpJ
VENvbXBpbGVyOjpFcXVhbCwgbGVmdC5wYXlsb2FkR1BSKCksIHJpZ2h0LnBheWxvYWRHUFIoKSwg
cmVzdWx0KTsKKyAgICBub3RFcXVhbC5saW5rKCZtX2ppdCk7CisjZW5kaWYKK30KKwordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaE9uQml0d2lzZUpTVmFsdWVFcXVhbGl0eShKU1ZhbHVl
UmVncyYgbGVmdCwgSlNWYWx1ZVJlZ3MmIHJpZ2h0LCBCYXNpY0Jsb2NrKiB0YWtlbiwgQmFzaWNC
bG9jayogbm90VGFrZW4pCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAodGFrZW4gPT0g
bmV4dEJsb2NrKCkpIHsKKyAgICAgICAgYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBs
ZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgbm90VGFrZW4pOworICAgICAgICBqdW1wKHRha2VuKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBicmFuY2g2NChKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQu
Z3ByKCksIHJpZ2h0LmdwcigpLCB0YWtlbik7CisgICAgICAgIGp1bXAobm90VGFrZW4pOworICAg
IH0KKyNlbHNlCisgICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LnRhZ0dQ
UigpLCByaWdodC50YWdHUFIoKSwgbm90VGFrZW4pOworICAgIGlmICh0YWtlbiA9PSBuZXh0Qmxv
Y2soKSkgeworICAgICAgICBicmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnQucGF5
bG9hZEdQUigpLCByaWdodC5wYXlsb2FkR1BSKCksIG5vdFRha2VuKTsKKyAgICAgICAganVtcCh0
YWtlbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFs
LCBsZWZ0LnBheWxvYWRHUFIoKSwgcmlnaHQucGF5bG9hZEdQUigpLCB0YWtlbik7CisgICAgICAg
IGp1bXAobm90VGFrZW4pOworICAgIH0KKyNlbmRpZgorfQorCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJp
Y3RFcXVhbGl0eShOb2RlKiBub2RlLCBFZGdlIG5vdERvdWJsZUNoaWxkLCBFZGdlIG5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQpCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQg
bGVmdCh0aGlzLCBub3REb3VibGVDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKQEAg
LTc0NzYsMTQgKzc1MjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90RG91Ymxl
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcQogICAgIHNwZWN1bGF0
ZU5vdERvdWJsZShub3REb3VibGVDaGlsZCwgbGVmdFJlZ3MsIHRlbXBHUFIpOwogICAgIHNwZWN1
bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKG5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQsIHJpZ2h0UmVncywgdGVtcEdQUik7CiAKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQu
Z3ByKCksIHJpZ2h0LmdwcigpLCByZXN1bHQuZ3ByKCkpOwotI2Vsc2UKLSAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RFcXVhbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC50YWdH
UFIoKSwgcmlnaHQudGFnR1BSKCkpOwotICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6
RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCByaWdodC5wYXlsb2FkR1BSKCksIHJlc3VsdC5ncHIo
KSk7Ci0gICAgbm90RXF1YWwubGluaygmbV9qaXQpOwotI2VuZGlmCisgICAgZW1pdEJpdHdpc2VK
U1ZhbHVlRXF1YWxpdHkobGVmdFJlZ3MsIHJpZ2h0UmVncywgcmVzdWx0R1BSKTsKICAgICB1bmJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKQEAgLTc1MDMsMjQgKzc1
NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVOb3REb3VibGVOZWl0
aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZwogICAgIEJhc2ljQmxvY2sqIHRha2VuID0g
YnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT50YWtlbi5ibG9jazsKICAgICBCYXNpY0Jsb2NrKiBu
b3RUYWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4uYmxvY2s7CiAKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgewotICAgICAg
ICBicmFuY2g2NChKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnQuZ3ByKCksIHJpZ2h0Lmdwcigp
LCBub3RUYWtlbik7Ci0gICAgICAgIGp1bXAodGFrZW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5ncHIoKSwgcmlnaHQuZ3ByKCksIHRh
a2VuKTsKLSAgICAgICAganVtcChub3RUYWtlbik7Ci0gICAgfQotI2Vsc2UKLSAgICBicmFuY2gz
MihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnQudGFnR1BSKCksIHJpZ2h0LnRhZ0dQUigpLCBu
b3RUYWtlbik7Ci0gICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7Ci0gICAgICAgIGJyYW5j
aDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC5wYXlsb2FkR1BSKCksIHJpZ2h0LnBheWxv
YWRHUFIoKSwgbm90VGFrZW4pOwotICAgICAgICBqdW1wKHRha2VuKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBicmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCBy
aWdodC5wYXlsb2FkR1BSKCksIHRha2VuKTsKLSAgICAgICAganVtcChub3RUYWtlbik7Ci0gICAg
fQotI2VuZGlmCisgICAgZW1pdEJyYW5jaE9uQml0d2lzZUpTVmFsdWVFcXVhbGl0eShsZWZ0UmVn
cywgcmlnaHRSZWdzLCB0YWtlbiwgbm90VGFrZW4pOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU3RyaW5nRXF1YWxpdHkoCkBAIC0xMTc4MSw2ICsxMTgwNSw0MiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3REb3VibGUoRWRnZSBlZGdlKQogICAgIHNwZWN1bGF0
ZU5vdERvdWJsZShlZGdlLCByZWdzLCB0ZW1wR1BSKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSBlZGdlLCBKU1ZhbHVl
UmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVk
Z2UsIH4oU3BlY0Z1bGxEb3VibGUgfCBTcGVjSGVhcEJpZ0ludCkpKQorICAgICAgICByZXR1cm47
CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZTsKKworICAgIGJvb2wgbWF5QmVJbnQz
MiA9IG5lZWRzVHlwZUNoZWNrKGVkZ2UsIH5TcGVjSW50MzJPbmx5KTsKKyAgICBpZiAobWF5QmVJ
bnQzMikKKyAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZJbnQzMihyZWdzKSk7CisK
KyAgICBERkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0Z1bGxEb3VibGUsIG1faml0LmJy
YW5jaElmTnVtYmVyKHJlZ3MsIHRlbXBHUFIpKTsKKworICAgIGJvb2wgbWF5QmVOb3RDZWxsID0g
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwpOworICAgIGlmIChtYXlCZU5vdENlbGwpCisg
ICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChyZWdzKSk7CisKKyAgICBE
RkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0hlYXBCaWdJbnQsIG1faml0LmJyYW5jaElm
SGVhcEJpZ0ludChyZWdzLnBheWxvYWRHUFIoKSkpOworCisgICAgaWYgKG1heUJlSW50MzIgfHwg
bWF5QmVOb3RDZWxsKQorICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKK30KKwordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSBlZGdl
KQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgfihTcGVjRnVsbERvdWJsZSB8IFNw
ZWNIZWFwQmlnSW50KSkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTVmFsdWVPcGVyYW5kIG9w
ZXJhbmQodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyByZWdzID0gb3BlcmFuZC5qc1ZhbHVl
UmVncygpOworICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgIHNwZWN1bGF0
ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KGVkZ2UsIHJlZ3MsIHRlbXBHUFIpOworfQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZyhFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQogewog
ICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgfihTcGVjRnVsbERvdWJsZSB8IFNwZWNTdHJp
bmcgfCBTcGVjSGVhcEJpZ0ludCkpKQpAQCAtMTE3OTQsMTQgKzExODU0LDE0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5n
KEVkZ2UgZWRnZSwgSlNWCiAKICAgICBERkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0Z1
bGxEb3VibGUsIG1faml0LmJyYW5jaElmTnVtYmVyKHJlZ3MsIHRlbXBHUFIpKTsKIAotICAgIGJv
b2wgbWF5Tm90QmVDZWxsID0gbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwpOwotICAgIGlm
IChtYXlOb3RCZUNlbGwpCisgICAgYm9vbCBtYXlCZU5vdENlbGwgPSBuZWVkc1R5cGVDaGVjayhl
ZGdlLCBTcGVjQ2VsbCk7CisgICAgaWYgKG1heUJlTm90Q2VsbCkKICAgICAgICAgZG9uZS5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHJlZ3MpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoU3Ry
aW5nVHlwZSArIDEgPT0gSGVhcEJpZ0ludFR5cGUpOwogICAgIERGR19UWVBFX0NIRUNLKHJlZ3Ms
IGVkZ2UsIH4oU3BlY1N0cmluZyB8IFNwZWNIZWFwQmlnSW50KSwgbV9qaXQuYnJhbmNoSWZUeXBl
KHJlZ3MucGF5bG9hZEdQUigpLCBKU1R5cGVSYW5nZSB7IFN0cmluZ1R5cGUsIEhlYXBCaWdJbnRU
eXBlIH0pKTsKIAotICAgIGlmIChtYXlCZUludDMyIHx8IG1heU5vdEJlQ2VsbCkKKyAgICBpZiAo
bWF5QmVJbnQzMiB8fCBtYXlCZU5vdENlbGwpCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwog
fQogCkBAIC0xMjAwMyw2ICsxMjA2Myw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZShOb2RlKiwgRWRnZSBlZGdlKQogICAgIGNhc2UgTm90RG91YmxlVXNlOgogICAgICAgICBzcGVj
dWxhdGVOb3REb3VibGUoZWRnZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnRVc2U6CisgICAgICAgIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50KGVkZ2UpOworICAgICAgICBicmVhazsKICAgICBjYXNlIE5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAgICBzcGVjdWxhdGVOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludE5vclN0cmluZyhlZGdlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggOWYyOTMyMWU3ODRj
Li5iNjUxNWQ4YjcyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKQEAgLTEyNDgsNiArMTI0OCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21w
aWxlU3ltYm9sRXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUhlYXBCaWdJbnRFcXVh
bGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShOb2Rl
KiwgTm9kZSogYnJhbmNoTm9kZSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB2b2lkIGNvbXBp
bGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91YmxlU3RyaWN0RXF1YWxpdHkoTm9k
ZSosIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQsIEVkZ2Ugbm90RG91YmxlKTsKKyNl
bmRpZgorICAgIHZvaWQgZW1pdEJpdHdpc2VKU1ZhbHVlRXF1YWxpdHkoSlNWYWx1ZVJlZ3MmLCBK
U1ZhbHVlUmVncyYsIEdQUlJlZyYgcmVzdWx0KTsKKyAgICB2b2lkIGVtaXRCcmFuY2hPbkJpdHdp
c2VKU1ZhbHVlRXF1YWxpdHkoSlNWYWx1ZVJlZ3MmLCBKU1ZhbHVlUmVncyYsIEJhc2ljQmxvY2sq
IHRha2VuLCBCYXNpY0Jsb2NrKiBub3RUYWtlbik7CiAgICAgdm9pZCBjb21waWxlTm90RG91Ymxl
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShOb2RlKiwg
RWRnZSBub3REb3VibGVFZGdlLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3Ry
aW5nRWRnZSk7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVOb3REb3VibGVOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFuY2hO
b2RlLCBFZGdlIG5vdERvdWJsZUVkZ2UsIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRO
b3JTdHJpbmdFZGdlKTsKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xVbnR5cGVkRXF1YWxpdHkoTm9k
ZSosIEVkZ2Ugc3ltYm9sRWRnZSwgRWRnZSB1bnR5cGVkRWRnZSk7CkBAIC0xNzQwLDYgKzE3NDUs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVOb3RDZWxsTm9yQmlnSW50KEVkZ2UpOwog
ICAgIHZvaWQgc3BlY3VsYXRlTm90RG91YmxlKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVt
cCk7CiAgICAgdm9pZCBzcGVjdWxhdGVOb3REb3VibGUoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxh
dGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChFZGdlLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRl
bXApOworICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSk7
CiAgICAgdm9pZCBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyhF
ZGdlLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXApOwogICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVP
dGhlcihFZGdlLCBKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggOGQ4YWViMTNhOGQx
Li4xODlmNjU0YTRjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzM2LDYgKzMzNiw5NSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3Bl
cmFuZCwgTgogICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShOb2RlKiBub2RlLCBF
ZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIEVkZ2Ugbm90RG91YmxlQ2hpbGQp
Cit7CisgICAgQVNTRVJUKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQudXNlS2luZCgp
ID09IE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlKTsKKyAgICBBU1NFUlQobm90RG91Ymxl
Q2hpbGQudXNlS2luZCgpID09IE5vdERvdWJsZVVzZSk7CisKKyAgICBKU1ZhbHVlT3BlcmFuZCBs
ZWZ0KHRoaXMsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgbm90RG91YmxlQ2hp
bGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICBHUFJUZW1wb3JhcnkgdGVtcCh0
aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgbGVmdFRlbXAodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5
IHJpZ2h0VGVtcCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgbGVmdFRlbXAyKHRoaXMsIFJldXNl
LCBsZWZ0KTsKKyAgICBHUFJUZW1wb3JhcnkgcmlnaHRUZW1wMih0aGlzLCBSZXVzZSwgcmlnaHQp
OworICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOworICAgIEpT
VmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CisKKyAgICBHUFJSZWcg
bGVmdEdQUiA9IGxlZnRSZWdzLnBheWxvYWRHUFIoKTsKKyAgICBHUFJSZWcgcmlnaHRHUFIgPSBy
aWdodFJlZ3MucGF5bG9hZEdQUigpOworICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsK
KyAgICBHUFJSZWcgbGVmdFRlbXBHUFIgPSBsZWZ0VGVtcC5ncHIoKTsKKyAgICBHUFJSZWcgcmln
aHRUZW1wR1BSID0gcmlnaHRUZW1wLmdwcigpOworICAgIEdQUlJlZyBsZWZ0VGVtcDJHUFIgPSBs
ZWZ0VGVtcDIuZ3ByKCk7CisgICAgR1BSUmVnIHJpZ2h0VGVtcDJHUFIgPSByaWdodFRlbXAyLmdw
cigpOworCisgICAgLy8gV2UgdHJ5IHRvIGF2b2lkIHJlcGVhdGVkIGFuZCByZWR1bmRhbnQgY2hl
Y2tzIGhlcmUsIHdoaWNoIGxlYWRzIHRvIHRoZSBmb2xsb3dpbmcgcHNldWRvLWNvZGU6CisgICAg
LyoKKyAgICAgaWYgKGxlZnQgPT0gdHJ1ZSkgeworICAgICAgIHNwZWN1bGF0ZU5laXRoZXJEb3Vi
bGVOb3JIZWFwQmlnSW50KGxlZnQpOworICAgICAgIHJldHVybiB0cnVlOworICAgICB9CisgICAg
IHNwZWN1bGF0ZU5vdERvdWJsZShyaWdodCk7CisgICAgIHNwZWN1bGF0ZU5vdERvdWJsZShsZWZ0
KTsKKyAgICAgaWYgKGxlZnQgaXMgbm90IENlbGwpCisgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICBDaGVjayB0aGF0IGxlZnQgaXMgbm90IEhlYXBCaWdJbnQ7CisgICAgIGlmIChsZWZ0IGlzIG5v
dCBTdHJpbmcpCisgICAgICAgcmV0dXJuIGZhbHNlOworICAgICBpZiAocmlnaHQgaXMgbm90IENl
bGwpCisgICAgICAgcmV0dXJuIGZhbHNlOworICAgICBpZiAocmlnaHQgaXMgbm90IFN0cmluZykK
KyAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIHJldHVybiBzdHJpbmdFcXVhbGl0eShsZWZ0LCBy
aWdodCkKKyAgICAgfQorICAgICAqLworICAgIC8vIE1lcmNpZnVsbHkgd2UgY2FuIG9mdGVuIGVs
aW1pbmF0ZSBtdWNoIG9mIHRoaXMgc291cCBvZiBjb25kaXRpb25hbHMgd2l0aCB0aGUgaGVscCBv
ZiB0aGUgYWJzdHJhY3QgaW50ZXJwcmV0ZXIuCisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
dHJ1ZUNhc2U7CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGZhbHNlQ2FzZTsKKworICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5vdEVxdWFsID0gbV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgLy8gV2UgY2Fubm90IHVzZSBzcGVjdWxh
dGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCBoZXJlLCBiZWNhdXNlIGl0IHVwZGF0ZXMgdGhl
IGludGVycHJldGVyIHN0YXRlLCBhbmQgd2UgY2FuIHNraXAgb3ZlciBpdC4KKyAgICAvLyBTbyB3
ZSB3b3VsZCBhbHdheXMgc2tpcCB0aGUgc3BlY3VsYXRlTm90RG91YmxlIHRoYXQgZm9sbG93cy4K
KyAgICBpZiAobmVlZHNUeXBlQ2hlY2sobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwg
flNwZWNGdWxsRG91YmxlKSkgeworICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnRDaGlsZCwgflNwZWNJbnQzMk9ubHkpKQorICAgICAgICAgICAgdHJ1
ZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmSW50MzIobGVmdFJlZ3MpKTsKKyAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBsZWZ0UmVncywgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnRDaGlsZC5ub2RlKCksIG1faml0LmJyYW5jaElmTnVtYmVyKGxlZnRSZWdzLCB0ZW1wR1BSKSk7
CisgICAgfQorICAgIGlmIChuZWVkc1R5cGVDaGVjayhuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dENoaWxkLCB+U3BlY0hlYXBCaWdJbnQpKSB7CisgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhu
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCBTcGVjQ2VsbCkpCisgICAgICAgICAgICB0
cnVlQ2FzZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGxlZnRSZWdzKSk7CisgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgbGVmdFJlZ3MsIG5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Q2hpbGQubm9kZSgpLCBtX2ppdC5icmFuY2hJZkhlYXBCaWdJbnQobGVmdEdQUikpOwor
ICAgIH0KKyAgICB0cnVlQ2FzZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICBub3RFcXVhbC5s
aW5rKCZtX2ppdCk7CisKKyAgICBzcGVjdWxhdGVOb3REb3VibGUobm90RG91YmxlQ2hpbGQsIHJp
Z2h0UmVncywgdGVtcEdQUik7CisgICAgc3BlY3VsYXRlTm90RG91YmxlKG5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Q2hpbGQsIGxlZnRSZWdzLCB0ZW1wR1BSKTsKKworICAgIGJvb2wgbGVmdE1h
eUJlTm90Q2VsbCA9IG5lZWRzVHlwZUNoZWNrKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hp
bGQsIFNwZWNDZWxsQ2hlY2spOworICAgIGlmIChsZWZ0TWF5QmVOb3RDZWxsKQorICAgICAgICBm
YWxzZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChsZWZ0UmVncykpOworCisgICAg
REZHX1RZUEVfQ0hFQ0sobGVmdFJlZ3MsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQs
IH5TcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZIZWFwQmlnSW50KGxlZnRHUFIpKTsKKwor
ICAgIGJvb2wgbGVmdE1heUJlTm90U3RyaW5nS25vd2luZ0NlbGwgPSBuZWVkc1R5cGVDaGVjayhu
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCAoflNwZWNTdHJpbmcpICYgU3BlY0NlbGxD
aGVjayk7CisgICAgaWYgKGxlZnRNYXlCZU5vdFN0cmluZ0tub3dpbmdDZWxsKQorICAgICAgICBm
YWxzZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmTm90U3RyaW5nKGxlZnRHUFIpKTsKKworICAg
IGJvb2wgcmlnaHRNYXlCZU5vdENlbGwgPSBuZWVkc1R5cGVDaGVjayhub3REb3VibGVDaGlsZCwg
U3BlY0NlbGxDaGVjayk7CisgICAgaWYgKHJpZ2h0TWF5QmVOb3RDZWxsKQorICAgICAgICBmYWxz
ZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChyaWdodFJlZ3MpKTsKKworICAgIGJv
b2wgcmlnaHRNYXlCZU5vdFN0cmluZ0tub3dpbmdDZWxsID0gbmVlZHNUeXBlQ2hlY2sobm90RG91
YmxlQ2hpbGQsICh+U3BlY1N0cmluZykgJiBTcGVjQ2VsbENoZWNrKTsKKyAgICBpZiAocmlnaHRN
YXlCZU5vdFN0cmluZ0tub3dpbmdDZWxsKQorICAgICAgICBmYWxzZUNhc2UuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90U3RyaW5nKHJpZ2h0R1BSKSk7CisKKyAgICBjb21waWxlU3RyaW5nRXF1YWxp
dHkobm9kZSwgbGVmdEdQUiwgcmlnaHRHUFIsIHRlbXBHUFIsIGxlZnRUZW1wR1BSLCByaWdodFRl
bXBHUFIsIGxlZnRUZW1wMkdQUiwgcmlnaHRUZW1wMkdQUiwgdHJ1ZUNhc2UsIGZhbHNlQ2FzZSk7
Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RF
cShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBib29sIGludmVydCkKIHsKICAgICBCYXNp
Y0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAppbmRleCA0YjQzYzc1ZGZkNTMu
LmYxNDU2MjQ4MGNiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3Bw
CkBAIC0xNzMsNiArMTczLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IFVzZUtpbmQgdXNlS2luZCkKICAgICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAgICAgb3V0LnBy
aW50KCJOb3REb3VibGUiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnQiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAgICAgIG91dC5wcmludCgiTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmciKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuaAppbmRleCA2NmU4YzRlYmE0YjAuLmVkZWU2Mjg3OTQyNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKQEAgLTgyLDYgKzgyLDcgQEAgZW51
bSBVc2VLaW5kIHsKICAgICBOb3RDZWxsVXNlLAogICAgIE5vdENlbGxOb3JCaWdJbnRVc2UsCiAg
ICAgTm90RG91YmxlVXNlLAorICAgIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlLAogICAg
IE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlLAogICAgIEtub3duT3RoZXJV
c2UsCiAgICAgT3RoZXJVc2UsCkBAIC0xOTEsNiArMTkyLDggQEAgaW5saW5lIFNwZWN1bGF0ZWRU
eXBlIHR5cGVGaWx0ZXJGb3IoVXNlS2luZCB1c2VLaW5kKQogICAgICAgICByZXR1cm4gflNwZWND
ZWxsQ2hlY2sgJiB+U3BlY0JpZ0ludDsKICAgICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAgICAg
cmV0dXJuIH5TcGVjRnVsbERvdWJsZTsKKyAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50VXNlOgorICAgICAgICByZXR1cm4gflNwZWNGdWxsRG91YmxlICYgflNwZWNIZWFwQmlnSW50
OwogICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAg
ICAgIHJldHVybiB+KFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBCaWdJbnQgfCBTcGVjU3RyaW5n
KTsKICAgICBjYXNlIEtub3duT3RoZXJVc2U6CkBAIC0zMTIsNiArMzE1LDcgQEAgaW5saW5lIGJv
b2wgY2hlY2tNYXlDcmFzaElmSW5wdXRJc0VtcHR5KFVzZUtpbmQga2luZCkKICAgICBjYXNlIE5v
dENlbGxVc2U6CiAgICAgY2FzZSBOb3RDZWxsTm9yQmlnSW50VXNlOgogICAgIGNhc2UgTm90RG91
YmxlVXNlOgorICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2U6CiAgICAgY2Fz
ZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKaW5kZXggODNiNTFiYTljZjc2Li5kMTI0OGM5ZmFkNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTUyNyw2ICs1
MjcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAg
ICAgICAgICAgY2FzZSBBbnlJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBB
bnlJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBOb3REb3VibGVVc2U6CisgICAgICAgICAg
ICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZToKICAgICAgICAgICAgICAg
ICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAgICAg
ICAgICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDdi
YzQ4ZDQwNjdjNi4uODI3NDk0MWJiNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC05ODIxLDYgKzk4MjEsMTUgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZSwgTm90RG91YmxlVXNlKSkg
eworICAgICAgICAgICAgY29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3Vi
bGVTdHJpY3RFcXVhbGl0eShtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZSkpIHsK
KyAgICAgICAgICAgIGNvbXBpbGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91Ymxl
U3RyaWN0RXF1YWxpdHkobV9ub2RlLT5jaGlsZDIoKSwgbV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICAvLyBGSVhNRTogd2UgY2FuIGRv
IHNvbWV0aGluZyBtdWNoIHNtYXJ0ZXIgaGVyZSwgc2VlIHRoZSBERkdTcGVjdWxhdGl2ZUpJVCBh
cHByb2FjaCBpbiBlLmcuIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3Ry
aWN0RXEKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFVudHlwZWRVc2UpLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSwgbV9ub2Rl
LT5jaGlsZDIoKS51c2VLaW5kKCkpOwogICAgICAgICBnZW5lcmljSlNWYWx1ZUNvbXBhcmUoCkBA
IC05ODY5LDYgKzk4NzgsOTEgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5w
aGkoSW50MzIsIGZhc3RUcnVlLCBmYXN0RmFsc2UsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAKKyAg
ICB2b2lkIGNvbXBpbGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91YmxlU3RyaWN0
RXF1YWxpdHkoRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UsIEVkZ2Ugbm90RG91
YmxlRWRnZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dEVkZ2UudXNlS2luZCgpID09IE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlKTsKKyAgICAg
ICAgQVNTRVJUKG5vdERvdWJsZUVkZ2UudXNlS2luZCgpID09IE5vdERvdWJsZVVzZSk7CisKKyAg
ICAgICAgTFZhbHVlIGxlZnRWYWx1ZSA9IGxvd0pTVmFsdWUobmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnRFZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBMVmFsdWUgcmln
aHRWYWx1ZSA9IGxvd0pTVmFsdWUobm90RG91YmxlRWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKKyAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdFZhbHVlVHlwZSA9IHByb3ZlblR5cGUo
bmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRFZGdlKTsKKyAgICAgICAgU3BlY3VsYXRlZFR5cGUg
cmlnaHRWYWx1ZVR5cGUgPSBwcm92ZW5UeXBlKG5vdERvdWJsZUVkZ2UpOworCisgICAgICAgIExC
YXNpY0Jsb2NrIHRyaXZpYWxseUVxdWFsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGxlZnRJc05vdEludDMyRXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElzQ2VsbEVxdWFsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHJldHVyblRydWVCbG9jayA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgIExCYXNpY0Jsb2NrIG5vdFRyaXZpYWxseUVxdWFsQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGxlZnRJc0NlbGwgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICBMQmFzaWNCbG9jayBsZWZ0SXNTdHJpbmcgPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayByaWdodElzQ2VsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIHJpZ2h0SXNTdHJpbmcgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAg
ICAgIC8vIFdlIHRyeSB0byBhdm9pZCByZXBlYXRlZCBhbmQgcmVkdW5kYW50IGNoZWNrcyBoZXJl
LCB3aGljaCBsZWFkcyB0byB0aGUgZm9sbG93aW5nIHBzZXVkby1jb2RlOgorICAgICAgICAvKgor
ICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpIHsKKyAgICAgICAgICAgc3BlY3VsYXRlTmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnQobGVmdCk7CisgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgfQorICAgICAgICAgc3BlY3VsYXRlTm90RG91YmxlKHJpZ2h0KTsKKyAgICAgICAgIHNw
ZWN1bGF0ZU5vdERvdWJsZShsZWZ0KTsKKyAgICAgICAgIGlmIChsZWZ0IGlzIG5vdCBDZWxsKQor
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICBDaGVjayB0aGF0IGxlZnQgaXMgbm90
IEhlYXBCaWdJbnQ7CisgICAgICAgICBpZiAobGVmdCBpcyBub3QgU3RyaW5nKQorICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICBpZiAocmlnaHQgaXMgbm90IENlbGwpCisgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIGlmIChyaWdodCBpcyBub3QgU3RyaW5nKQorICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICByZXR1cm4gc3RyaW5nRXF1YWxpdHkobGVm
dCwgcmlnaHQpCisgICAgICAgICB9CisgICAgICAgICAqLworICAgICAgICBtX291dC5icmFuY2go
bV9vdXQuZXF1YWwobGVmdFZhbHVlLCByaWdodFZhbHVlKSwgdW5zdXJlKHRyaXZpYWxseUVxdWFs
Q2FzZSksIHVuc3VyZShub3RUcml2aWFsbHlFcXVhbENhc2UpKTsKKworICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHRyaXZpYWxseUVxdWFsQ2FzZSwgbGVmdElz
Tm90SW50MzJFcXVhbENhc2UpOworICAgICAgICAvLyBMb2dpY2FsbHkgd2Ugd2FudCBzcGVjdWxh
dGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCwgYnV0IHdlIGNhbm5vdCB1c2UgaXQgaGVyZSBh
cyBpdCBjaGFuZ2VzIHRoZSBzdGF0ZSBvZiB0aGUgYWJzdHJhY3QgaW50ZXJwcmV0ZXIuCisgICAg
ICAgIC8vIFNvIGlmIHdlIHVzZWQgaXQgaGVyZSwgd2Ugd291bGQgc2tpcCB0aGUgbGF0ZXIgY2hl
Y2tzLgorICAgICAgICAvLyBJbnN0ZWFkIHdlIHJlaW1wbGVtZW50IGl0IGluIHRoaXMgYW5kIHRo
ZSBuZXh0IGZldyBibG9ja3MsIHVzaW5nIHR5cGVDaGVja1dpdGhvdXRVcGRhdGluZ0ludGVycHJl
dGVyLgorICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMihsZWZ0VmFsdWUsIGxlZnRWYWx1ZVR5
cGUpLCB1bnN1cmUocmV0dXJuVHJ1ZUJsb2NrKSwgdW5zdXJlKGxlZnRJc05vdEludDMyRXF1YWxD
YXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obGVmdElzTm90SW50MzJFcXVhbENhc2Us
IGxlZnRJc0NlbGxFcXVhbENhc2UpOworICAgICAgICB0eXBlQ2hlY2tXaXRob3V0VXBkYXRpbmdJ
bnRlcnByZXRlcihqc1ZhbHVlVmFsdWUobGVmdFZhbHVlKSwgbmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnRFZGdlLCB+U3BlY0Z1bGxEb3VibGUsIGlzTnVtYmVyKGxlZnRWYWx1ZSkpOworICAgICAg
ICBtX291dC5icmFuY2goaXNDZWxsKGxlZnRWYWx1ZSwgbGVmdFZhbHVlVHlwZSAmIH5TcGVjRnVs
bE51bWJlciksIHVuc3VyZShsZWZ0SXNDZWxsRXF1YWxDYXNlKSwgdW5zdXJlKHJldHVyblRydWVC
bG9jaykpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc0NlbGxFcXVhbENhc2UsIHJl
dHVyblRydWVCbG9jayk7CisgICAgICAgIHR5cGVDaGVja1dpdGhvdXRVcGRhdGluZ0ludGVycHJl
dGVyKGpzVmFsdWVWYWx1ZShsZWZ0VmFsdWUpLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVk
Z2UsIH5TcGVjSGVhcEJpZ0ludCwgaXNIZWFwQmlnSW50KGxlZnRWYWx1ZSkpOworICAgICAgICBt
X291dC5qdW1wKHJldHVyblRydWVCbG9jayk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmV0
dXJuVHJ1ZUJsb2NrLCBub3RUcml2aWFsbHlFcXVhbENhc2UpOworICAgICAgICBWYWx1ZUZyb21C
bG9jayBmYXN0VHJ1ZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhub3RU
cml2aWFsbHlFcXVhbENhc2UsIGxlZnRJc0NlbGwpOworICAgICAgICBzcGVjdWxhdGVOb3REb3Vi
bGUobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRFZGdlKTsKKyAgICAgICAgc3BlY3VsYXRlTm90
RG91YmxlKG5vdERvdWJsZUVkZ2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0RmFsc2Ug
PSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNo
KGlzTm90Q2VsbChsZWZ0VmFsdWUsIGxlZnRWYWx1ZVR5cGUgJiB+U3BlY0Z1bGxEb3VibGUpLCB1
bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGxlZnRJc0NlbGwpKTsKKworICAgICAgICBtX291
dC5hcHBlbmRUbyhsZWZ0SXNDZWxsLCBsZWZ0SXNTdHJpbmcpOworICAgICAgICBGVExfVFlQRV9D
SEVDSyhqc1ZhbHVlVmFsdWUobGVmdFZhbHVlKSwgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRF
ZGdlLCB+U3BlY0hlYXBCaWdJbnQsIGlzSGVhcEJpZ0ludChsZWZ0VmFsdWUpKTsKKyAgICAgICAg
bV9vdXQuYnJhbmNoKGlzTm90U3RyaW5nKGxlZnRWYWx1ZSwgbGVmdFZhbHVlVHlwZSAmIFNwZWND
ZWxsICYgflNwZWNIZWFwQmlnSW50KSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShsZWZ0
SXNTdHJpbmcpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhsZWZ0SXNTdHJpbmcsIHJpZ2h0
SXNDZWxsKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90Q2VsbChyaWdodFZhbHVlLCByaWdo
dFZhbHVlVHlwZSAmIH5TcGVjRnVsbERvdWJsZSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1
cmUocmlnaHRJc0NlbGwpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzQ2VsbCwg
cmlnaHRJc1N0cmluZyk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdFN0cmluZyhyaWdodFZh
bHVlLCByaWdodFZhbHVlVHlwZSAmIFNwZWNDZWxsICYgflNwZWNGdWxsRG91YmxlKSwgdW5zdXJl
KGNvbnRpbnVhdGlvbiksIHVuc3VyZShyaWdodElzU3RyaW5nKSk7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8ocmlnaHRJc1N0cmluZywgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9t
QmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzdHJpbmdzRXF1YWwobGVmdFZhbHVlLCBy
aWdodFZhbHVlLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UsIG5vdERvdWJsZUVkZ2Up
KTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRCb29sZWFuKG1fb3V0
LnBoaShJbnQzMiwgZmFzdFRydWUsIGZhc3RGYWxzZSwgc2xvd1Jlc3VsdCkpOworICAgIH0KKwog
ICAgIHZvaWQgY29tcGlsZUNvbXBhcmVFcVB0cigpCiAgICAgewogICAgICAgICBzZXRCb29sZWFu
KApAQCAtMTgwNDcsMjUgKzE4MTQxLDI1IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2lu
dGVycHJldGVyLmZpbHRlcihoaWdoVmFsdWUsIHR5cGVzUGFzc2VkVGhyb3VnaCk7CiAgICAgfQot
ICAgIAotICAgIHZvaWQgdHlwZUNoZWNrKAorCisgICAgdm9pZCB0eXBlQ2hlY2tXaXRob3V0VXBk
YXRpbmdJbnRlcnByZXRlcigKICAgICAgICAgRm9ybWF0dGVkVmFsdWUgbG93VmFsdWUsIEVkZ2Ug
aGlnaFZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gsCiAgICAgICAgIExW
YWx1ZSBmYWlsQ29uZGl0aW9uLCBFeGl0S2luZCBleGl0S2luZCA9IEJhZFR5cGUpCi0gICAgewot
ICAgICAgICBhcHBlbmRUeXBlQ2hlY2sobG93VmFsdWUsIGhpZ2hWYWx1ZSwgdHlwZXNQYXNzZWRU
aHJvdWdoLCBmYWlsQ29uZGl0aW9uLCBleGl0S2luZCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQg
YXBwZW5kVHlwZUNoZWNrKAotICAgICAgICBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1ZSwgRWRnZSBo
aWdoVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCwKLSAgICAgICAgTFZh
bHVlIGZhaWxDb25kaXRpb24sIEV4aXRLaW5kIGV4aXRLaW5kKQogICAgIHsKICAgICAgICAgaWYg
KCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGhpZ2hWYWx1ZSwgdHlwZXNQYXNzZWRUaHJv
dWdoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgQVNTRVJUKG1heUhhdmVUeXBlQ2hl
Y2soaGlnaFZhbHVlLnVzZUtpbmQoKSkpOwogICAgICAgICBhcHBlbmRPU1JFeGl0KGV4aXRLaW5k
LCBsb3dWYWx1ZSwgaGlnaFZhbHVlLm5vZGUoKSwgZmFpbENvbmRpdGlvbiwgbV9vcmlnaW4pOwor
ICAgIH0KKworICAgIHZvaWQgdHlwZUNoZWNrKAorICAgICAgICBGb3JtYXR0ZWRWYWx1ZSBsb3dW
YWx1ZSwgRWRnZSBoaWdoVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCwK
KyAgICAgICAgTFZhbHVlIGZhaWxDb25kaXRpb24sIEV4aXRLaW5kIGV4aXRLaW5kID0gQmFkVHlw
ZSkKKyAgICB7CisgICAgICAgIHR5cGVDaGVja1dpdGhvdXRVcGRhdGluZ0ludGVycHJldGVyKGxv
d1ZhbHVlLCBoaWdoVmFsdWUsIHR5cGVzUGFzc2VkVGhyb3VnaCwgZmFpbENvbmRpdGlvbiwgZXhp
dEtpbmQpOwogICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcihoaWdoVmFsdWUsIHR5cGVzUGFz
c2VkVGhyb3VnaCk7CiAgICAgfQotICAgIAorCiAgICAgTFZhbHVlIGxvd0ludDMyKEVkZ2UgZWRn
ZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1bGF0
aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbiB8fCAoZWRnZS51c2VLaW5kKCkgPT0gSW50MzJVc2UgfHwgZWRnZS51
c2VLaW5kKCkgPT0gS25vd25JbnQzMlVzZSkpOwpAQCAtMTg5MjEsNiArMTkwMTUsOSBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZU5v
dERvdWJsZShlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnQoZWRnZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKICAgICAgICAgICAgIHNwZWN1
bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKGVkZ2UpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xODk4OCw2ICsxOTA4NSwzMCBAQCBwcml2YXRlOgogICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CiAKKyAgICB2b2lkIHNw
ZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KEVkZ2UgZWRnZSkKKyAgICB7CisgICAg
ICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNOb3RJbnQzMiA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbEJsb2NrID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMih2YWx1ZSwgcHJvdmVu
VHlwZShlZGdlKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoaXNOb3RJbnQzMikpOwor
CisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNOb3RJbnQz
MiwgaXNDZWxsQmxvY2spOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFs
dWUpLCBlZGdlLCB+U3BlY0Z1bGxEb3VibGUsIGlzTnVtYmVyKHZhbHVlKSk7CisgICAgICAgIG1f
b3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkgJiB+U3BlY0Z1bGxOdW1i
ZXIpLCB1bnN1cmUoaXNDZWxsQmxvY2spLCB1bnN1cmUoY29udGludWF0aW9uKSk7CisKKyAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsQmxvY2ssIGNvbnRpbnVhdGlvbik7CisgICAgICAgIEZU
TF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIH5TcGVjSGVhcEJpZ0ludCwg
aXNIZWFwQmlnSW50KHZhbHVlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
KworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICB9
CisKICAgICB2b2lkIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5n
KEVkZ2UgZWRnZSkKICAgICB7CiAgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVD
aGVjayhlZGdlKSkK
</data>
<flag name="commit-queue"
          id="460915"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437716</attachid>
            <date>2021-09-09 00:19:07 -0700</date>
            <delta_ts>2021-09-09 01:10:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226755-20210909001907.patch</filename>
            <type>text/plain</type>
            <size>35902</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NjFhYzVjZjcxMjVhOGM3NWE1NzhhZGRkMDEzNjc2NTM1ODY1NzZlLi4xZTM3NjhjODM4MDRiNjBh
MGFiNmNkNDk5ZjMyNWIzOTM4YjA1MDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAyMS0wOS0wOSAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIE9wdGltaXplIGNvbXBhcmVTdHJpY3RFcSB3aGVuIG5laXRoZXIgc2lk
ZSBpcyBhIGRvdWJsZSBhbmQgYXQgbGVhc3Qgb25lIGlzIG5vdCBhIEJpZ0ludAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzU1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83OTMyMTU0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6
dWtpLgorCisgICAgICAgIFRoaXMgaXMgYSB2ZXJ5IHNpbWlsYXIgcGF0Y2ggdG8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjY3Ni4KKyAgICAgICAgVGhlIGRpZmZl
cmVuY2UgaXMgdGhhdCBoZXJlIHdlIGFsbG93IFN0cmluZ3Mgb24gYm90aCBzaWRlIG9mIHRoZSBj
b21wYXJpc29uLCBzbyB3ZSBtdXN0IGFkZCBjb2RlIHRvIGhhbmRsZSBlcXVhbGl0eSBhbW9uZyBz
dHJpbmdzLgorCisgICAgICAgIExpa2UgZm9yIHRoYXQgb3RoZXIgcGF0Y2gsIHRoZSBvcHRpbWl6
YXRpb24gaXMgZGlzYWJsZWQgZm9yIEJpZ0ludDMyLgorICAgICAgICBFbmFibGluZyBpdCBpbiB0
aGF0IGNhc2Ugd291bGQgZWl0aGVyIG5lZWQgbW9kaWZ5aW5nIHRoZSBzcGVjdWxhdGlvbiAoZnJv
bSBiYW5uaW5nIEhlYXBCaWdJbnQgdG8gYmFubmluZyBhbGwgQmlnSW50cyksIG9yIGVuc3VyaW5n
IHRoYXQgd2UgY2FuIG5ldmVyIGhhdmUgYSBIZWFwQmlnSW50IHNvIHNtYWxsIGl0IGNvbXBhcmVz
IGVxdWFsIHRvIGEgQmlnSW50MzIuCisKKyAgICAgICAgSSBvbmx5IGltcGxlbWVudGVkIHRoaXMg
b3B0aW1pemF0aW9uIG9uIDY0LWJpdHM6IGl0IGlzIGp1c3QgcGFpbmZ1bCB0byB3cml0ZSBjb2Rl
IHRoYXQgaGFuZGxlcyByZWdpc3RlcnMgYXQgc3VjaCBhIGxvdy1sZXZlbCB3aXRob3V0IGEgMzIt
Yml0IG1hY2hpbmUgdG8gdGVzdCB0aGluZ3MgbG9jYWxseS4KKyAgICAgICAgSWYgYW55b25lIHdh
bnRzIHRvIG1ha2UgdGhpcyBvcHRpbWl6YXRpb24gd29yayBvbiAzMi1iaXQsIEkgZG9uJ3QgZm9y
ZXRlbGwgYW55IG1ham9yIGRpZmZpY3VsdHkuCisKKyAgICAgICAgRmluYWxseSwgbGlrZSBxdWl0
ZSBhIGZldyBvdGhlciB1c2VLaW5kcyBhbHJlYWR5LCB0aGlzIGNhc2UgZG9lcyBub3QgbWFrZSB0
aGUgQ29tcGFyZVN0cmljdEVxIG1lcmdlIHdpdGggYW4gYWRqYWNlbnQgQnJhbmNoLgorICAgICAg
ICBUaGUgcmVhc29uIGlzIHNpbXBseSB0aGF0IHRoaXMgcGF0Y2ggcmVsaWVzIG9uIGNvbXBpbGVT
dHJpbmdFcXVhbGl0eSwgd2hpY2ggY3VycmVudGx5IGRvZXMgbm90IHN1cHBvcnQgdGhhdCBmZWF0
dXJlLgorICAgICAgICBJIGludGVuZCB0byBmaXggdGhpcyAoZm9yIGFsbCB1c2VLaW5kcyBhdCBv
bmNlKSBpbiBhIHNlcGFyYXRlIHBhdGNoLgorCisgICAgICAgIEVmZmVjdCBvbiBtaWNyb2JlbmNo
bWFya3M6CisgICAgICAgIHBvbHktc3RyaWN0ZXEtbm90LWRvdWJsZSAgICAgICAgICAgICAgICAg
IDQ2LjgwMDArLTAuNDExMCAgICAgXiAgICAgMjMuNTg3MistMC4zMDYxICAgICAgICBeIGRlZmlu
aXRlbHkgMS45ODQxeCBmYXN0ZXIKKyAgICAgICAgcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLW5v
ci1zdHJpbmcgICAgICAgMTYuNjg4MCstMC4yMzE3ICAgICAgICAgICAxNi4zNjI3Ky0wLjM3Mjkg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTk5eCBmYXN0ZXIKKyAgICAgICAgcG9seS1zdHJpY3RlcSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkuMjE3NSstMC42MDQ3ICAgICAgICAgICA0OC45
NTMyKy0wLjY3NTgKKworICAgICAgICBJIGxvb2tlZCBhdCBob3cgbWFueSBjYXNlcyBvZiBVbnR5
cGVkL1VudHlwZWQgY29tcGFyZVN0cmljdEVxIGhhdmUgYmVlbiBmaXhlZCBieSB0aGlzIHBhdGNo
IGFuZCB0d28gb3RoZXIgcmVjZW50IHBhdGNoZXMuCisgICAgICAgIE9uIEpldFN0cmVhbTI6Cisg
ICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjYyMTog
NzMxIGluc3RhbmNlcworICAgICAgICAtIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjY2NzY6IDk0NCBpbnN0YW5jZXMKKyAgICAgICAgLSBUaGlzIHBhdGNoOiBvbmx5
IDI2IGluc3RhbmNlcworICAgICAgICBUaGlzIGxlYXZlcyAyMCBpbnN0YW5jZXMgb2YgVW50eXBl
ZC9VbnR5cGVkLgorCisgICAgICAgIE9uIFNwZWVkb21ldGVyMi4wOgorICAgICAgICAtIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MjE6IDE1ODcgaW5zdGFuY2Vz
CisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjY3
NjogMjc4NCBpbnN0YW5jZXMKKyAgICAgICAgLSBUaGlzIHBhdGNoOiA4OTEgaW5zdGFuY2VzCisg
ICAgICAgIFRoaXMgbGVhdmVzIDc1IGluc3RhbmNlcyBvZiBVbnR5cGVkL1VudHlwZWQuCisKKyAg
ICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAoSlNDOjppc05laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50U3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdEb2Vz
R0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwQ29tcGFy
ZVN0cmljdEVxQW5kU2FtZVZhbHVlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50KToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OlNhZmVUb0V4ZWN1dGVFZGdlOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Qml0
d2lzZUpTVmFsdWVFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRCcmFuY2hPbkJpdHdpc2VKU1ZhbHVlRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU5vdERvdWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
Tm9yU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91YmxlU3RyaWN0RXF1YWxp
dHkpOgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJ
bnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR1VzZUtpbmQuaDoKKyAgICAgICAgKEpTQzo6REZH
Ojp0eXBlRmlsdGVyRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpjaGVja01heUNyYXNoSWZJbnB1
dElzRW1wdHkpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0
cmljdEVxKToKKwogMjAyMS0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZCBmaWxlcyB0byB4Y29kZXByb2oKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggOTY5Nzc4
MzU1NzQxMjRkYTk2NTIzYzFmNDc1Nzk2ZmNiNDc5NjEzZi4uMjdhNzAzY2NkN2Y1NGJjODQ4MjY4
MTAxN2YwMzEwMzAwODY0MWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTQ0OSw2ICs0NDksMTEgQEAgaW5saW5lIGJvb2wgaXNO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRU
eXBlIHR5cGUKICAgICByZXR1cm4gISh0eXBlICYgKFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBC
aWdJbnQgfCBTcGVjU3RyaW5nKSk7CiB9CiAKK2lubGluZSBib29sIGlzTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB0eXBlKQoreworICAgIHJldHVy
biAhKHR5cGUgJiAoU3BlY0Z1bGxEb3VibGUgfCBTcGVjSGVhcEJpZ0ludCkpOworfQorCiBpbmxp
bmUgYm9vbCBpc090aGVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAg
cmV0dXJuIHZhbHVlID09IFNwZWNPdGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAppbmRleCBlNjQ4MTY3YzExODZiYzhjOTNmMzJlOGM1NGJlNzUxODMwZWYxMTM0Li4w
NzBhNDg1NDdhOTdmZGMzYWRkMWMyMThjZmY2MzA3NWQwNjY0MTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC00OTIsNyArNDkyLDcgQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE9iamVjdFVzZSkKICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChN
aXNjVXNlLCBVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwg
TWlzY1VzZSkKICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVu
dFVzZSwgTm90U3RyaW5nVmFyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90U3RyaW5n
VmFyVXNlLCBTdHJpbmdJZGVudFVzZSkKLSAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNl
S2luZChOb3REb3VibGVVc2UsIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNl
KSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludE5vclN0cmluZ1VzZSkpCisgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1Vz
ZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9y
U3RyaW5nVXNlLCBOb3REb3VibGVVc2UpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKaW5kZXggMGJlYjhiZTAxNmUyMGY2MWE5YjgwODIxNjNhODcxZjE0ZTUwYzZkNy4u
YWM0ZWJlMDM5ZmE2YjVhNGQ5ZDY4ZDcwYWJkNGVlNGE1NjIzYjY0NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC00NDc3LDcgKzQ0NzcsMjMgQEAg
Y2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBub2RlLT5zZXRP
cEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0jZW5kaWYKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KCkKKyAg
ICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVOb3REb3VibGUoKSkg
eworICAgICAgICAgICAgZml4RWRnZTxOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxOb3REb3VibGVVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVT
dHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOb3REb3VibGUoKQorICAgICAgICAgICAgJiYg
bm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
KCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Tm90RG91YmxlVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBmaXhFZGdlPE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlPihub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21w
YXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKKyNlbmRpZiAvLyAhVVNFKEJJR0lOVDMyKQogICAgIH0KIAogICAgIHZv
aWQgZml4dXBDaGVja3NJbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAppbmRleCAxOWY0MGY4MTVhYTM1Nzg3YTRhNWU1YjY0YzU4ZjFmZWY4ZTJh
MjQxLi4yYWY3OTcwNjhhOWNjZGYwYjY3NmY3ZGQwNGE0YmRkOGI3NTMwMWRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMjg4Nyw2ICsyODg3LDExIEBAIHN0cnVjdCBOb2Rl
IHsKICAgICB7CiAgICAgICAgIHJldHVybiBpc05laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9y
U3RyaW5nU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CisKKyAgICBib29sIHNob3Vs
ZFNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBpc05laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50U3BlY3VsYXRpb24ocHJlZGljdGlvbigp
KTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVVbnR5cGVkRm9yQXJpdGht
ZXRpYygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAppbmRleCBkNTQ5NjQ0NTBiNjMyMjc0ODk4ZDY4YzhhOWJlOWY3YTc2Zjk4MWEwLi45MjRm
YzhjMzEwODY2OWY3MjlkMTAyNzMxOWM3NmUyYzQ3NWZjYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtOTQsNiArOTQsNyBAQCBjbGFzcyBT
YWZlVG9FeGVjdXRlRWRnZSB7CiAgICAgICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgogICAg
ICAgICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludE5vclN0cmluZ1VzZToKKyAgICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJp
Z0ludFVzZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEtub3duSW50MzJVc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCmluZGV4IDg3MGZmYjFlN2JiYmZmMzkwY2YxMDRjOWIyNDdhOTExOGZmMDM4
MzQuLmVjYjk5OGM2MThmZGQ1NzgwZTg1NGNhMTM1YjJlZmNjODliM2I3MzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03MjI2LDcg
KzcyMjYsMjEgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZ1N0cmljdEVxdWFsaXR5KG5vZGUsIG5vdERvdWJsZUNoaWxkLCBuZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KLSNlbmRpZgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZSwgTm90RG91YmxlVXNlKSkgeworICAg
ICAgICBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQgPSBub2RlLT5jaGlsZDEo
KTsKKyAgICAgICAgRWRnZSBub3REb3VibGVDaGlsZCA9IG5vZGUtPmNoaWxkMigpOworICAgICAg
ICBjb21waWxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRUb05vdERvdWJsZVN0cmljdEVxdWFs
aXR5KG5vZGUsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIG5vdERvdWJsZUNoaWxk
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2UpKSB7Cisg
ICAgICAgIEVkZ2Ugbm90RG91YmxlQ2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKKyAgICAgICAgRWRn
ZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CisgICAg
ICAgIGNvbXBpbGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFRvTm90RG91YmxlU3RyaWN0RXF1
YWxpdHkobm9kZSwgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwgbm90RG91YmxlQ2hp
bGQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmIC8vIFVTRShKU1ZBTFVF
NjQpCisjZW5kaWYgLy8gIVVTRShCSUdJTlQzMikKIAogICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsKICAgICAgICAgY29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0
eShub2RlKTsKQEAgLTc0NTcsNiArNzQ3MSw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlKQog
ICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJpdHdpc2VKU1ZhbHVlRXF1YWxp
dHkoSlNWYWx1ZVJlZ3MmIGxlZnQsIEpTVmFsdWVSZWdzJiByaWdodCwgR1BSUmVnJiByZXN1bHQp
Cit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6
OkVxdWFsLCBsZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgcmVzdWx0KTsKKyNlbHNlCisgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdCk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAg
bm90RXF1YWwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnQudGFn
R1BSKCksIHJpZ2h0LnRhZ0dQUigpKTsKKyAgICBtX2ppdC5jb21wYXJlMzIoSklUQ29tcGlsZXI6
OkVxdWFsLCBsZWZ0LnBheWxvYWRHUFIoKSwgcmlnaHQucGF5bG9hZEdQUigpLCByZXN1bHQpOwor
ICAgIG5vdEVxdWFsLmxpbmsoJm1faml0KTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0QnJhbmNoT25CaXR3aXNlSlNWYWx1ZUVxdWFsaXR5KEpTVmFsdWVSZWdzJiBsZWZ0
LCBKU1ZhbHVlUmVncyYgcmlnaHQsIEJhc2ljQmxvY2sqIHRha2VuLCBCYXNpY0Jsb2NrKiBub3RU
YWtlbikKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2so
KSkgeworICAgICAgICBicmFuY2g2NChKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnQuZ3ByKCks
IHJpZ2h0LmdwcigpLCBub3RUYWtlbik7CisgICAgICAgIGp1bXAodGFrZW4pOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5ncHIoKSwgcmln
aHQuZ3ByKCksIHRha2VuKTsKKyAgICAgICAganVtcChub3RUYWtlbik7CisgICAgfQorI2Vsc2UK
KyAgICBicmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnQudGFnR1BSKCksIHJpZ2h0
LnRhZ0dQUigpLCBub3RUYWtlbik7CisgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7Cisg
ICAgICAgIGJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC5wYXlsb2FkR1BSKCks
IHJpZ2h0LnBheWxvYWRHUFIoKSwgbm90VGFrZW4pOworICAgICAgICBqdW1wKHRha2VuKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBicmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQucGF5
bG9hZEdQUigpLCByaWdodC5wYXlsb2FkR1BSKCksIHRha2VuKTsKKyAgICAgICAganVtcChub3RU
YWtlbik7CisgICAgfQorI2VuZGlmCit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
b3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5
KE5vZGUqIG5vZGUsIEVkZ2Ugbm90RG91YmxlQ2hpbGQsIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmdDaGlsZCkKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMs
IG5vdERvdWJsZUNoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwpAQCAtNzQ3NiwxNCAr
NzUyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxCiAgICAgc3BlY3VsYXRlTm90RG91Ymxl
KG5vdERvdWJsZUNoaWxkLCBsZWZ0UmVncywgdGVtcEdQUik7CiAgICAgc3BlY3VsYXRlTmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRO
b3JTdHJpbmdDaGlsZCwgcmlnaHRSZWdzLCB0ZW1wR1BSKTsKIAotI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgbV9qaXQuY29tcGFyZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5ncHIoKSwgcmln
aHQuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0jZWxzZQotICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bTMyKDApLCByZXN1bHQuZ3ByKCkpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEVxdWFsID0g
bV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LnRhZ0dQUigpLCByaWdo
dC50YWdHUFIoKSk7Ci0gICAgbV9qaXQuY29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgbGVm
dC5wYXlsb2FkR1BSKCksIHJpZ2h0LnBheWxvYWRHUFIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICBu
b3RFcXVhbC5saW5rKCZtX2ppdCk7Ci0jZW5kaWYKKyAgICBlbWl0Qml0d2lzZUpTVmFsdWVFcXVh
bGl0eShsZWZ0UmVncywgcmlnaHRSZWdzLCByZXN1bHRHUFIpOwogICAgIHVuYmxlc3NlZEJvb2xl
YW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIApAQCAtNzUwMywyNCArNzU0NCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU5vdERvdWJsZU5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nCiAgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2Rl
LT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOwogICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0g
YnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT5ub3RUYWtlbi5ibG9jazsKIAotI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7Ci0gICAgICAgIGJyYW5jaDY0
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC5ncHIoKSwgcmlnaHQuZ3ByKCksIG5vdFRha2Vu
KTsKLSAgICAgICAganVtcCh0YWtlbik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYnJhbmNoNjQo
SklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgdGFrZW4pOwotICAg
ICAgICBqdW1wKG5vdFRha2VuKTsKLSAgICB9Ci0jZWxzZQotICAgIGJyYW5jaDMyKEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwgbGVmdC50YWdHUFIoKSwgcmlnaHQudGFnR1BSKCksIG5vdFRha2VuKTsK
LSAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKLSAgICAgICAgYnJhbmNoMzIoSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LnBheWxvYWRHUFIoKSwgcmlnaHQucGF5bG9hZEdQUigpLCBu
b3RUYWtlbik7Ci0gICAgICAgIGp1bXAodGFrZW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGJy
YW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5wYXlsb2FkR1BSKCksIHJpZ2h0LnBheWxv
YWRHUFIoKSwgdGFrZW4pOwotICAgICAgICBqdW1wKG5vdFRha2VuKTsKLSAgICB9Ci0jZW5kaWYK
KyAgICBlbWl0QnJhbmNoT25CaXR3aXNlSlNWYWx1ZUVxdWFsaXR5KGxlZnRSZWdzLCByaWdodFJl
Z3MsIHRha2VuLCBub3RUYWtlbik7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
dHJpbmdFcXVhbGl0eSgKQEAgLTExNzgxLDYgKzExODA1LDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZU5vdERvdWJsZShFZGdlIGVkZ2UpCiAgICAgc3BlY3VsYXRlTm90RG91Ymxl
KGVkZ2UsIHJlZ3MsIHRlbXBHUFIpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3Ms
IEdQUlJlZyB0ZW1wR1BSKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgfihTcGVj
RnVsbERvdWJsZSB8IFNwZWNIZWFwQmlnSW50KSkpCisgICAgICAgIHJldHVybjsKKworICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOworCisgICAgYm9vbCBtYXlCZUludDMyID0gbmVlZHNU
eXBlQ2hlY2soZWRnZSwgflNwZWNJbnQzMk9ubHkpOworICAgIGlmIChtYXlCZUludDMyKQorICAg
ICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2hJZkludDMyKHJlZ3MpKTsKKworICAgIERGR19U
WVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjRnVsbERvdWJsZSwgbV9qaXQuYnJhbmNoSWZOdW1i
ZXIocmVncywgdGVtcEdQUikpOworCisgICAgYm9vbCBtYXlCZU5vdENlbGwgPSBuZWVkc1R5cGVD
aGVjayhlZGdlLCBTcGVjQ2VsbCk7CisgICAgaWYgKG1heUJlTm90Q2VsbCkKKyAgICAgICAgZG9u
ZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHJlZ3MpKTsKKworICAgIERGR19UWVBFX0NI
RUNLKHJlZ3MsIGVkZ2UsIH5TcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZIZWFwQmlnSW50
KHJlZ3MucGF5bG9hZEdQUigpKSk7CisKKyAgICBpZiAobWF5QmVJbnQzMiB8fCBtYXlCZU5vdENl
bGwpCisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludChFZGdlIGVkZ2UpCit7CisgICAg
aWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCB+KFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBCaWdJ
bnQpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlz
LCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOworICAgIEpTVmFsdWVSZWdzIHJlZ3MgPSBvcGVyYW5kLmpzVmFsdWVSZWdzKCk7Cisg
ICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworCisgICAgc3BlY3VsYXRlTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnQoZWRnZSwgcmVncywgdGVtcEdQUik7Cit9CisKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVk
Z2UgZWRnZSwgSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCiB7CiAgICAgaWYgKCFu
ZWVkc1R5cGVDaGVjayhlZGdlLCB+KFNwZWNGdWxsRG91YmxlIHwgU3BlY1N0cmluZyB8IFNwZWNI
ZWFwQmlnSW50KSkpCkBAIC0xMTc5NCwxNCArMTE4NTQsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoRWRnZSBlZGdl
LCBKU1YKIAogICAgIERGR19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjRnVsbERvdWJsZSwg
bV9qaXQuYnJhbmNoSWZOdW1iZXIocmVncywgdGVtcEdQUikpOwogCi0gICAgYm9vbCBtYXlOb3RC
ZUNlbGwgPSBuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCk7Ci0gICAgaWYgKG1heU5vdEJl
Q2VsbCkKKyAgICBib29sIG1heUJlTm90Q2VsbCA9IG5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWND
ZWxsKTsKKyAgICBpZiAobWF5QmVOb3RDZWxsKQogICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5i
cmFuY2hJZk5vdENlbGwocmVncykpOwogCiAgICAgc3RhdGljX2Fzc2VydChTdHJpbmdUeXBlICsg
MSA9PSBIZWFwQmlnSW50VHlwZSk7CiAgICAgREZHX1RZUEVfQ0hFQ0socmVncywgZWRnZSwgfihT
cGVjU3RyaW5nIHwgU3BlY0hlYXBCaWdJbnQpLCBtX2ppdC5icmFuY2hJZlR5cGUocmVncy5wYXls
b2FkR1BSKCksIEpTVHlwZVJhbmdlIHsgU3RyaW5nVHlwZSwgSGVhcEJpZ0ludFR5cGUgfSkpOwog
Ci0gICAgaWYgKG1heUJlSW50MzIgfHwgbWF5Tm90QmVDZWxsKQorICAgIGlmIChtYXlCZUludDMy
IHx8IG1heUJlTm90Q2VsbCkKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiB9CiAKQEAgLTEy
MDAzLDYgKzEyMDYzLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBF
ZGdlIGVkZ2UpCiAgICAgY2FzZSBOb3REb3VibGVVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU5vdERv
dWJsZShlZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludFVzZToKKyAgICAgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQo
ZWRnZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnROb3JTdHJpbmdVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50Tm9yU3RyaW5nKGVkZ2UpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA5ZjI5MzIxZTc4NGMwNjZkMGEyOGVl
NWNlYTI4ODY5MjE3MDQyODBkLi5iNjUxNWQ4YjcyMTk0ODQwMDJmODdkZjUyNjA3YWY2NDk3NzUw
MGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CkBAIC0xMjQ4LDYgKzEyNDgsMTEgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQg
Y29tcGlsZVN5bWJvbEVxdWFsaXR5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVIZWFwQmlnSW50
RXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHko
Tm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdm9pZCBj
b21waWxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRUb05vdERvdWJsZVN0cmljdEVxdWFsaXR5
KE5vZGUqLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50LCBFZGdlIG5vdERvdWJsZSk7
CisjZW5kaWYKKyAgICB2b2lkIGVtaXRCaXR3aXNlSlNWYWx1ZUVxdWFsaXR5KEpTVmFsdWVSZWdz
JiwgSlNWYWx1ZVJlZ3MmLCBHUFJSZWcmIHJlc3VsdCk7CisgICAgdm9pZCBlbWl0QnJhbmNoT25C
aXR3aXNlSlNWYWx1ZUVxdWFsaXR5KEpTVmFsdWVSZWdzJiwgSlNWYWx1ZVJlZ3MmLCBCYXNpY0Js
b2NrKiB0YWtlbiwgQmFzaWNCbG9jayogbm90VGFrZW4pOwogICAgIHZvaWQgY29tcGlsZU5vdERv
dWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkoTm9k
ZSosIEVkZ2Ugbm90RG91YmxlRWRnZSwgRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZ0VkZ2UpOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlTm90RG91YmxlTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJh
bmNoTm9kZSwgRWRnZSBub3REb3VibGVFZGdlLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50Tm9yU3RyaW5nRWRnZSk7CiAgICAgdm9pZCBjb21waWxlU3ltYm9sVW50eXBlZEVxdWFsaXR5
KE5vZGUqLCBFZGdlIHN5bWJvbEVkZ2UsIEVkZ2UgdW50eXBlZEVkZ2UpOwpAQCAtMTc0MCw2ICsx
NzQ1LDggQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2Vs
bE5vckJpZ0ludChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdERvdWJsZShFZGdlLCBKU1Zh
bHVlUmVncywgR1BSUmVnIHRlbXApOwogICAgIHZvaWQgc3BlY3VsYXRlTm90RG91YmxlKEVkZ2Up
OworICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSwgSlNW
YWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKKyAgICB2b2lkIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmcoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKICAgICB2
b2lkIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVkZ2UpOwog
ICAgIHZvaWQgc3BlY3VsYXRlT3RoZXIoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IDhkOGFlYjEzYThkMTM2ZGE4OWY5OWU5NDRjNmExMmM1MmI4ZjMyMjMuLjE4OWY2NTRh
NGNiY2ZiNWFjYWNkNmEwYWFiOTYxMDU0ODVjMWYxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzM2LDYgKzMzNiw5NSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9y
VW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCwgTgogICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVh
bGl0eShOb2RlKiBub2RlLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIEVk
Z2Ugbm90RG91YmxlQ2hpbGQpCit7CisgICAgQVNTRVJUKG5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50Q2hpbGQudXNlS2luZCgpID09IE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50VXNlKTsKKyAg
ICBBU1NFUlQobm90RG91YmxlQ2hpbGQudXNlS2luZCgpID09IE5vdERvdWJsZVVzZSk7CisKKyAg
ICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hp
bGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZU9wZXJhbmQgcmlnaHQo
dGhpcywgbm90RG91YmxlQ2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICBH
UFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgbGVmdFRlbXAodGhpcyk7
CisgICAgR1BSVGVtcG9yYXJ5IHJpZ2h0VGVtcCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgbGVm
dFRlbXAyKHRoaXMsIFJldXNlLCBsZWZ0KTsKKyAgICBHUFJUZW1wb3JhcnkgcmlnaHRUZW1wMih0
aGlzLCBSZXVzZSwgcmlnaHQpOworICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1Zh
bHVlUmVncygpOworICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVncyA9IHJpZ2h0LmpzVmFsdWVSZWdz
KCk7CisKKyAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnRSZWdzLnBheWxvYWRHUFIoKTsKKyAgICBH
UFJSZWcgcmlnaHRHUFIgPSByaWdodFJlZ3MucGF5bG9hZEdQUigpOworICAgIEdQUlJlZyB0ZW1w
R1BSID0gdGVtcC5ncHIoKTsKKyAgICBHUFJSZWcgbGVmdFRlbXBHUFIgPSBsZWZ0VGVtcC5ncHIo
KTsKKyAgICBHUFJSZWcgcmlnaHRUZW1wR1BSID0gcmlnaHRUZW1wLmdwcigpOworICAgIEdQUlJl
ZyBsZWZ0VGVtcDJHUFIgPSBsZWZ0VGVtcDIuZ3ByKCk7CisgICAgR1BSUmVnIHJpZ2h0VGVtcDJH
UFIgPSByaWdodFRlbXAyLmdwcigpOworCisgICAgLy8gV2UgdHJ5IHRvIGF2b2lkIHJlcGVhdGVk
IGFuZCByZWR1bmRhbnQgY2hlY2tzIGhlcmUsIHdoaWNoIGxlYWRzIHRvIHRoZSBmb2xsb3dpbmcg
cHNldWRvLWNvZGU6CisgICAgLyoKKyAgICAgaWYgKGxlZnQgPT0gdHJ1ZSkgeworICAgICAgIHNw
ZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50KGxlZnQpOworICAgICAgIHJldHVybiB0
cnVlOworICAgICB9CisgICAgIHNwZWN1bGF0ZU5vdERvdWJsZShyaWdodCk7CisgICAgIHNwZWN1
bGF0ZU5vdERvdWJsZShsZWZ0KTsKKyAgICAgaWYgKGxlZnQgaXMgbm90IENlbGwpCisgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICBDaGVjayB0aGF0IGxlZnQgaXMgbm90IEhlYXBCaWdJbnQ7Cisg
ICAgIGlmIChsZWZ0IGlzIG5vdCBTdHJpbmcpCisgICAgICAgcmV0dXJuIGZhbHNlOworICAgICBp
ZiAocmlnaHQgaXMgbm90IENlbGwpCisgICAgICAgcmV0dXJuIGZhbHNlOworICAgICBpZiAocmln
aHQgaXMgbm90IFN0cmluZykKKyAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIHJldHVybiBzdHJp
bmdFcXVhbGl0eShsZWZ0LCByaWdodCkKKyAgICAgfQorICAgICAqLworICAgIC8vIE1lcmNpZnVs
bHkgd2UgY2FuIG9mdGVuIGVsaW1pbmF0ZSBtdWNoIG9mIHRoaXMgc291cCBvZiBjb25kaXRpb25h
bHMgd2l0aCB0aGUgaGVscCBvZiB0aGUgYWJzdHJhY3QgaW50ZXJwcmV0ZXIuCisKKyAgICBKSVRD
b21waWxlcjo6SnVtcExpc3QgdHJ1ZUNhc2U7CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGZh
bHNlQ2FzZTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEVxdWFsID0gbV9qaXQuYnJhbmNo
NjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgLy8gV2Ug
Y2Fubm90IHVzZSBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCBoZXJlLCBiZWNh
dXNlIGl0IHVwZGF0ZXMgdGhlIGludGVycHJldGVyIHN0YXRlLCBhbmQgd2UgY2FuIHNraXAgb3Zl
ciBpdC4KKyAgICAvLyBTbyB3ZSB3b3VsZCBhbHdheXMgc2tpcCB0aGUgc3BlY3VsYXRlTm90RG91
YmxlIHRoYXQgZm9sbG93cy4KKyAgICBpZiAobmVlZHNUeXBlQ2hlY2sobmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnRDaGlsZCwgflNwZWNGdWxsRG91YmxlKSkgeworICAgICAgICBpZiAobmVlZHNU
eXBlQ2hlY2sobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZCwgflNwZWNJbnQzMk9ubHkp
KQorICAgICAgICAgICAgdHJ1ZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmSW50MzIobGVmdFJl
Z3MpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBsZWZ0UmVncywgbmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnRDaGlsZC5ub2RlKCksIG1faml0LmJyYW5jaElmTnVtYmVyKGxl
ZnRSZWdzLCB0ZW1wR1BSKSk7CisgICAgfQorICAgIGlmIChuZWVkc1R5cGVDaGVjayhuZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCB+U3BlY0hlYXBCaWdJbnQpKSB7CisgICAgICAgIGlm
IChuZWVkc1R5cGVDaGVjayhuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCBTcGVjQ2Vs
bCkpCisgICAgICAgICAgICB0cnVlQ2FzZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGxl
ZnRSZWdzKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgbGVmdFJlZ3MsIG5l
aXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQubm9kZSgpLCBtX2ppdC5icmFuY2hJZkhlYXBC
aWdJbnQobGVmdEdQUikpOworICAgIH0KKyAgICB0cnVlQ2FzZS5hcHBlbmQobV9qaXQuanVtcCgp
KTsKKyAgICBub3RFcXVhbC5saW5rKCZtX2ppdCk7CisKKyAgICBzcGVjdWxhdGVOb3REb3VibGUo
bm90RG91YmxlQ2hpbGQsIHJpZ2h0UmVncywgdGVtcEdQUik7CisgICAgc3BlY3VsYXRlTm90RG91
YmxlKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Q2hpbGQsIGxlZnRSZWdzLCB0ZW1wR1BSKTsK
KworICAgIGJvb2wgbGVmdE1heUJlTm90Q2VsbCA9IG5lZWRzVHlwZUNoZWNrKG5laXRoZXJEb3Vi
bGVOb3JIZWFwQmlnSW50Q2hpbGQsIFNwZWNDZWxsQ2hlY2spOworICAgIGlmIChsZWZ0TWF5QmVO
b3RDZWxsKQorICAgICAgICBmYWxzZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChs
ZWZ0UmVncykpOworCisgICAgREZHX1RZUEVfQ0hFQ0sobGVmdFJlZ3MsIG5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Q2hpbGQsIH5TcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZIZWFwQmln
SW50KGxlZnRHUFIpKTsKKworICAgIGJvb2wgbGVmdE1heUJlTm90U3RyaW5nS25vd2luZ0NlbGwg
PSBuZWVkc1R5cGVDaGVjayhuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludENoaWxkLCAoflNwZWNT
dHJpbmcpICYgU3BlY0NlbGxDaGVjayk7CisgICAgaWYgKGxlZnRNYXlCZU5vdFN0cmluZ0tub3dp
bmdDZWxsKQorICAgICAgICBmYWxzZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmTm90U3RyaW5n
KGxlZnRHUFIpKTsKKworICAgIGJvb2wgcmlnaHRNYXlCZU5vdENlbGwgPSBuZWVkc1R5cGVDaGVj
ayhub3REb3VibGVDaGlsZCwgU3BlY0NlbGxDaGVjayk7CisgICAgaWYgKHJpZ2h0TWF5QmVOb3RD
ZWxsKQorICAgICAgICBmYWxzZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChyaWdo
dFJlZ3MpKTsKKworICAgIGJvb2wgcmlnaHRNYXlCZU5vdFN0cmluZ0tub3dpbmdDZWxsID0gbmVl
ZHNUeXBlQ2hlY2sobm90RG91YmxlQ2hpbGQsICh+U3BlY1N0cmluZykgJiBTcGVjQ2VsbENoZWNr
KTsKKyAgICBpZiAocmlnaHRNYXlCZU5vdFN0cmluZ0tub3dpbmdDZWxsKQorICAgICAgICBmYWxz
ZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaElmTm90U3RyaW5nKHJpZ2h0R1BSKSk7CisKKyAgICBj
b21waWxlU3RyaW5nRXF1YWxpdHkobm9kZSwgbGVmdEdQUiwgcmlnaHRHUFIsIHRlbXBHUFIsIGxl
ZnRUZW1wR1BSLCByaWdodFRlbXBHUFIsIGxlZnRUZW1wMkdQUiwgcmlnaHRUZW1wMkdQUiwgdHJ1
ZUNhc2UsIGZhbHNlQ2FzZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0
aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLCBib29sIGlu
dmVydCkKIHsKICAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEo
KS0+dGFrZW4uYmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1VzZUtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcApp
bmRleCA0YjQzYzc1ZGZkNTNlNTgyMjAxYjY5ZTQxZTIwZWI5YmVkMDI3YTUxLi5mMTQ1NjI0ODBj
YmU4OGQ2MWQxYjcwMGUwMGViODZjNmJjYjcyY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVXNlS2luZC5jcHAKQEAgLTE3Myw2ICsxNzMsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgVXNlS2luZCB1c2VLaW5kKQogICAgIGNhc2UgTm90RG91YmxlVXNl
OgogICAgICAgICBvdXQucHJpbnQoIk5vdERvdWJsZSIpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZToKKyAgICAgICAgb3V0LnByaW50KCJO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKICAgICAgICAgb3V0LnByaW50
KCJOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyIpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCmluZGV4IDY2ZThjNGViYTRiMGNi
NTJiZWU5NDBiOWU1NDVjYzc0YzBlNTNiMGUuLmVkZWU2Mjg3OTQyNmQ4NjA3MWZhYjRkYTJhYzIz
NjQzNDUxZDcxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNl
S2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCkBAIC04
Miw2ICs4Miw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAgTm90Q2VsbFVzZSwKICAgICBOb3RDZWxs
Tm9yQmlnSW50VXNlLAogICAgIE5vdERvdWJsZVVzZSwKKyAgICBOZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludFVzZSwKICAgICBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZSwK
ICAgICBLbm93bk90aGVyVXNlLAogICAgIE90aGVyVXNlLApAQCAtMTkxLDYgKzE5Miw4IEBAIGlu
bGluZSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRm9yKFVzZUtpbmQgdXNlS2luZCkKICAgICAg
ICAgcmV0dXJuIH5TcGVjQ2VsbENoZWNrICYgflNwZWNCaWdJbnQ7CiAgICAgY2FzZSBOb3REb3Vi
bGVVc2U6CiAgICAgICAgIHJldHVybiB+U3BlY0Z1bGxEb3VibGU7CisgICAgY2FzZSBOZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludFVzZToKKyAgICAgICAgcmV0dXJuIH5TcGVjRnVsbERvdWJsZSAm
IH5TcGVjSGVhcEJpZ0ludDsKICAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9y
U3RyaW5nVXNlOgogICAgICAgICByZXR1cm4gfihTcGVjRnVsbERvdWJsZSB8IFNwZWNIZWFwQmln
SW50IHwgU3BlY1N0cmluZyk7CiAgICAgY2FzZSBLbm93bk90aGVyVXNlOgpAQCAtMzEyLDYgKzMx
NSw3IEBAIGlubGluZSBib29sIGNoZWNrTWF5Q3Jhc2hJZklucHV0SXNFbXB0eShVc2VLaW5kIGtp
bmQpCiAgICAgY2FzZSBOb3RDZWxsVXNlOgogICAgIGNhc2UgTm90Q2VsbE5vckJpZ0ludFVzZToK
ICAgICBjYXNlIE5vdERvdWJsZVVzZToKKyAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50VXNlOgogICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDgzYjUxYmE5Y2Y3NjVkYTA0NjM3
M2E3OWIxY2EwMzMwYzQzYzdhNzguLmQxMjQ4YzlmYWQ2Nzg0MjU4NDgwNTYyNjZiYjU5YWFjNjRj
YzhjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKQEAgLTUyNyw2ICs1MjcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYg
Z3JhcGgpCiAgICAgICAgICAgICAgICAgY2FzZSBBbnlJbnRVc2U6CiAgICAgICAgICAgICAgICAg
Y2FzZSBEb3VibGVSZXBBbnlJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBOb3REb3VibGVV
c2U6CisgICAgICAgICAgICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludFVzZToK
ICAgICAgICAgICAgICAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5n
VXNlOgogICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCmluZGV4IDdiYzQ4ZDQwNjdjNjk5ODkyODUwMzhjMzEyNTljZjBlZmNiNjIyZGUuLjgy
NzQ5NDFiYjc0ODFjZDQ0NzM5MjlhNTUwYTI3YTEwN2UzZGRhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTk4MjEsNiArOTgyMSwxNSBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
KyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50VXNlLCBOb3REb3VibGVVc2UpKSB7CisgICAgICAgICAgICBjb21waWxlTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnRUb05vdERvdWJsZVN0cmljdEVxdWFsaXR5KG1fbm9kZS0+Y2hpbGQx
KCksIG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOb3REb3VibGVVc2UsIE5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50VXNlKSkgeworICAgICAgICAgICAgY29tcGlsZU5laXRoZXJEb3Vi
bGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShtX25vZGUtPmNoaWxkMigp
LCBtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAg
ICAgICAgIC8vIEZJWE1FOiB3ZSBjYW4gZG8gc29tZXRoaW5nIG11Y2ggc21hcnRlciBoZXJlLCBz
ZWUgdGhlIERGR1NwZWN1bGF0aXZlSklUIGFwcHJvYWNoIGluIGUuZy4gU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcQogICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG1fbm9kZSwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSksIG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpLCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSk7CiAgICAgICAg
IGdlbmVyaWNKU1ZhbHVlQ29tcGFyZSgKQEAgLTk4NjksNiArOTg3OCw5MSBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgZmFzdFRydWUs
IGZhc3RGYWxzZSwgc2xvd1Jlc3VsdCkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50VG9Ob3REb3VibGVTdHJpY3RFcXVhbGl0eShFZGdlIG5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50RWRnZSwgRWRnZSBub3REb3VibGVFZGdlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50RWRnZS51c2VLaW5kKCkgPT0g
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2UpOworICAgICAgICBBU1NFUlQobm90RG91Ymxl
RWRnZS51c2VLaW5kKCkgPT0gTm90RG91YmxlVXNlKTsKKworICAgICAgICBMVmFsdWUgbGVmdFZh
bHVlID0gbG93SlNWYWx1ZShuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIExWYWx1ZSByaWdodFZhbHVlID0gbG93SlNWYWx1
ZShub3REb3VibGVFZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBTcGVj
dWxhdGVkVHlwZSBsZWZ0VmFsdWVUeXBlID0gcHJvdmVuVHlwZShuZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludEVkZ2UpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodFZhbHVlVHlwZSA9IHBy
b3ZlblR5cGUobm90RG91YmxlRWRnZSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgdHJpdmlhbGx5
RXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbGVmdElz
Tm90SW50MzJFcXVhbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9j
ayBsZWZ0SXNDZWxsRXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2lj
QmxvY2sgcmV0dXJuVHJ1ZUJsb2NrID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2lj
QmxvY2sgbm90VHJpdmlhbGx5RXF1YWxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
TEJhc2ljQmxvY2sgbGVmdElzQ2VsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNp
Y0Jsb2NrIGxlZnRJc1N0cmluZyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Js
b2NrIHJpZ2h0SXNDZWxsID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
cmlnaHRJc1N0cmluZyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNv
bnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgLy8gV2UgdHJ5IHRvIGF2
b2lkIHJlcGVhdGVkIGFuZCByZWR1bmRhbnQgY2hlY2tzIGhlcmUsIHdoaWNoIGxlYWRzIHRvIHRo
ZSBmb2xsb3dpbmcgcHNldWRvLWNvZGU6CisgICAgICAgIC8qCisgICAgICAgICBpZiAobGVmdCA9
PSByaWdodCkgeworICAgICAgICAgICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dChsZWZ0KTsKKyAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICB9CisgICAgICAgICBz
cGVjdWxhdGVOb3REb3VibGUocmlnaHQpOworICAgICAgICAgc3BlY3VsYXRlTm90RG91YmxlKGxl
ZnQpOworICAgICAgICAgaWYgKGxlZnQgaXMgbm90IENlbGwpCisgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgIENoZWNrIHRoYXQgbGVmdCBpcyBub3QgSGVhcEJpZ0ludDsKKyAgICAg
ICAgIGlmIChsZWZ0IGlzIG5vdCBTdHJpbmcpCisgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgIGlmIChyaWdodCBpcyBub3QgQ2VsbCkKKyAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgaWYgKHJpZ2h0IGlzIG5vdCBTdHJpbmcpCisgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgIHJldHVybiBzdHJpbmdFcXVhbGl0eShsZWZ0LCByaWdodCkKKyAgICAgICAg
IH0KKyAgICAgICAgICovCisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChsZWZ0VmFs
dWUsIHJpZ2h0VmFsdWUpLCB1bnN1cmUodHJpdmlhbGx5RXF1YWxDYXNlKSwgdW5zdXJlKG5vdFRy
aXZpYWxseUVxdWFsQ2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8odHJpdmlhbGx5RXF1YWxDYXNlLCBsZWZ0SXNOb3RJbnQzMkVxdWFsQ2FzZSk7
CisgICAgICAgIC8vIExvZ2ljYWxseSB3ZSB3YW50IHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50LCBidXQgd2UgY2Fubm90IHVzZSBpdCBoZXJlIGFzIGl0IGNoYW5nZXMgdGhlIHN0
YXRlIG9mIHRoZSBhYnN0cmFjdCBpbnRlcnByZXRlci4KKyAgICAgICAgLy8gU28gaWYgd2UgdXNl
ZCBpdCBoZXJlLCB3ZSB3b3VsZCBza2lwIHRoZSBsYXRlciBjaGVja3MuCisgICAgICAgIC8vIElu
c3RlYWQgd2UgcmVpbXBsZW1lbnQgaXQgaW4gdGhpcyBhbmQgdGhlIG5leHQgZmV3IGJsb2Nrcywg
dXNpbmcgdHlwZUNoZWNrV2l0aG91dFVwZGF0aW5nSW50ZXJwcmV0ZXIuCisgICAgICAgIG1fb3V0
LmJyYW5jaChpc0ludDMyKGxlZnRWYWx1ZSwgbGVmdFZhbHVlVHlwZSksIHVuc3VyZShyZXR1cm5U
cnVlQmxvY2spLCB1bnN1cmUobGVmdElzTm90SW50MzJFcXVhbENhc2UpKTsKKworICAgICAgICBt
X291dC5hcHBlbmRUbyhsZWZ0SXNOb3RJbnQzMkVxdWFsQ2FzZSwgbGVmdElzQ2VsbEVxdWFsQ2Fz
ZSk7CisgICAgICAgIHR5cGVDaGVja1dpdGhvdXRVcGRhdGluZ0ludGVycHJldGVyKGpzVmFsdWVW
YWx1ZShsZWZ0VmFsdWUpLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UsIH5TcGVjRnVs
bERvdWJsZSwgaXNOdW1iZXIobGVmdFZhbHVlKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0Nl
bGwobGVmdFZhbHVlLCBsZWZ0VmFsdWVUeXBlICYgflNwZWNGdWxsTnVtYmVyKSwgdW5zdXJlKGxl
ZnRJc0NlbGxFcXVhbENhc2UpLCB1bnN1cmUocmV0dXJuVHJ1ZUJsb2NrKSk7CisKKyAgICAgICAg
bV9vdXQuYXBwZW5kVG8obGVmdElzQ2VsbEVxdWFsQ2FzZSwgcmV0dXJuVHJ1ZUJsb2NrKTsKKyAg
ICAgICAgdHlwZUNoZWNrV2l0aG91dFVwZGF0aW5nSW50ZXJwcmV0ZXIoanNWYWx1ZVZhbHVlKGxl
ZnRWYWx1ZSksIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50RWRnZSwgflNwZWNIZWFwQmlnSW50
LCBpc0hlYXBCaWdJbnQobGVmdFZhbHVlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAocmV0dXJuVHJ1
ZUJsb2NrKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhyZXR1cm5UcnVlQmxvY2ssIG5vdFRy
aXZpYWxseUVxdWFsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RUcnVlID0gbV9v
dXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdFRyaXZpYWxseUVxdWFsQ2FzZSwg
bGVmdElzQ2VsbCk7CisgICAgICAgIHNwZWN1bGF0ZU5vdERvdWJsZShuZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludEVkZ2UpOworICAgICAgICBzcGVjdWxhdGVOb3REb3VibGUobm90RG91YmxlRWRn
ZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RGYWxzZSA9IG1fb3V0LmFuY2hvcihtX291
dC5ib29sZWFuRmFsc2UpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RDZWxsKGxlZnRWYWx1
ZSwgbGVmdFZhbHVlVHlwZSAmIH5TcGVjRnVsbERvdWJsZSksIHVuc3VyZShjb250aW51YXRpb24p
LCB1bnN1cmUobGVmdElzQ2VsbCkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc0Nl
bGwsIGxlZnRJc1N0cmluZyk7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShs
ZWZ0VmFsdWUpLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludEVkZ2UsIH5TcGVjSGVhcEJpZ0lu
dCwgaXNIZWFwQmlnSW50KGxlZnRWYWx1ZSkpOworICAgICAgICBtX291dC5icmFuY2goaXNOb3RT
dHJpbmcobGVmdFZhbHVlLCBsZWZ0VmFsdWVUeXBlICYgU3BlY0NlbGwgJiB+U3BlY0hlYXBCaWdJ
bnQpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGxlZnRJc1N0cmluZykpOworCisgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGxlZnRJc1N0cmluZywgcmlnaHRJc0NlbGwpOworICAgICAgICBt
X291dC5icmFuY2goaXNOb3RDZWxsKHJpZ2h0VmFsdWUsIHJpZ2h0VmFsdWVUeXBlICYgflNwZWNG
dWxsRG91YmxlKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShyaWdodElzQ2VsbCkpOwor
CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJpZ2h0SXNDZWxsLCByaWdodElzU3RyaW5nKTsKKyAg
ICAgICAgbV9vdXQuYnJhbmNoKGlzTm90U3RyaW5nKHJpZ2h0VmFsdWUsIHJpZ2h0VmFsdWVUeXBl
ICYgU3BlY0NlbGwgJiB+U3BlY0Z1bGxEb3VibGUpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5z
dXJlKHJpZ2h0SXNTdHJpbmcpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhyaWdodElzU3Ry
aW5nLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKHN0cmluZ3NFcXVhbChsZWZ0VmFsdWUsIHJpZ2h0VmFsdWUsIG5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50RWRnZSwgbm90RG91YmxlRWRnZSkpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBmYXN0VHJ1
ZSwgZmFzdEZhbHNlLCBzbG93UmVzdWx0KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlQ29t
cGFyZUVxUHRyKCkKICAgICB7CiAgICAgICAgIHNldEJvb2xlYW4oCkBAIC0xODA0NywyNSArMTgx
NDEsMjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICB7CiAgICAgICAgIG1faW50ZXJwcmV0
ZXIuZmlsdGVyKGhpZ2hWYWx1ZSwgdHlwZXNQYXNzZWRUaHJvdWdoKTsKICAgICB9Ci0gICAgCi0g
ICAgdm9pZCB0eXBlQ2hlY2soCisKKyAgICB2b2lkIHR5cGVDaGVja1dpdGhvdXRVcGRhdGluZ0lu
dGVycHJldGVyKAogICAgICAgICBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1ZSwgRWRnZSBoaWdoVmFs
dWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCwKICAgICAgICAgTFZhbHVlIGZh
aWxDb25kaXRpb24sIEV4aXRLaW5kIGV4aXRLaW5kID0gQmFkVHlwZSkKLSAgICB7Ci0gICAgICAg
IGFwcGVuZFR5cGVDaGVjayhsb3dWYWx1ZSwgaGlnaFZhbHVlLCB0eXBlc1Bhc3NlZFRocm91Z2gs
IGZhaWxDb25kaXRpb24sIGV4aXRLaW5kKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBhcHBlbmRU
eXBlQ2hlY2soCi0gICAgICAgIEZvcm1hdHRlZFZhbHVlIGxvd1ZhbHVlLCBFZGdlIGhpZ2hWYWx1
ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoLAotICAgICAgICBMVmFsdWUgZmFp
bENvbmRpdGlvbiwgRXhpdEtpbmQgZXhpdEtpbmQpCiAgICAgewogICAgICAgICBpZiAoIW1faW50
ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soaGlnaFZhbHVlLCB0eXBlc1Bhc3NlZFRocm91Z2gpKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBBU1NFUlQobWF5SGF2ZVR5cGVDaGVjayhoaWdo
VmFsdWUudXNlS2luZCgpKSk7CiAgICAgICAgIGFwcGVuZE9TUkV4aXQoZXhpdEtpbmQsIGxvd1Zh
bHVlLCBoaWdoVmFsdWUubm9kZSgpLCBmYWlsQ29uZGl0aW9uLCBtX29yaWdpbik7CisgICAgfQor
CisgICAgdm9pZCB0eXBlQ2hlY2soCisgICAgICAgIEZvcm1hdHRlZFZhbHVlIGxvd1ZhbHVlLCBF
ZGdlIGhpZ2hWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoLAorICAgICAg
ICBMVmFsdWUgZmFpbENvbmRpdGlvbiwgRXhpdEtpbmQgZXhpdEtpbmQgPSBCYWRUeXBlKQorICAg
IHsKKyAgICAgICAgdHlwZUNoZWNrV2l0aG91dFVwZGF0aW5nSW50ZXJwcmV0ZXIobG93VmFsdWUs
IGhpZ2hWYWx1ZSwgdHlwZXNQYXNzZWRUaHJvdWdoLCBmYWlsQ29uZGl0aW9uLCBleGl0S2luZCk7
CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKGhpZ2hWYWx1ZSwgdHlwZXNQYXNzZWRUaHJv
dWdoKTsKICAgICB9Ci0gICAgCisKICAgICBMVmFsdWUgbG93SW50MzIoRWRnZSBlZGdlLCBPcGVy
YW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAg
ICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uIHx8IChlZGdlLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSB8fCBlZGdlLnVzZUtpbmQo
KSA9PSBLbm93bkludDMyVXNlKSk7CkBAIC0xODkyMSw2ICsxOTAxNSw5IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgIGNhc2UgTm90RG91YmxlVXNlOgogICAgICAgICAgICAgc3BlY3Vs
YXRlTm90RG91YmxlKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnRVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVOZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludChlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAgICAgICAg
c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoZWRnZSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTE4OTg4LDYgKzE5MDg1LDMwIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAg
IH0KIAorICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnQoRWRnZSBl
ZGdlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVk
Z2UpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pT
VmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgICAgICBMQmFzaWNC
bG9jayBpc05vdEludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
aXNDZWxsQmxvY2sgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250
aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0lu
dDMyKHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3Vy
ZShpc05vdEludDMyKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyhpc05vdEludDMyLCBpc0NlbGxCbG9jayk7CisgICAgICAgIEZUTF9UWVBFX0NIRUNL
KGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIH5TcGVjRnVsbERvdWJsZSwgaXNOdW1iZXIodmFs
dWUpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdl
KSAmIH5TcGVjRnVsbE51bWJlciksIHVuc3VyZShpc0NlbGxCbG9jayksIHVuc3VyZShjb250aW51
YXRpb24pKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NlbGxCbG9jaywgY29udGludWF0
aW9uKTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwg
flNwZWNIZWFwQmlnSW50LCBpc0hlYXBCaWdJbnQodmFsdWUpKTsKKyAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOworICAgIH0KKwogICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmcoRWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgaWYgKCFtX2ludGVy
cHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA0Yjg0MjcxYjM0YWZiMTQwMDg5ZDIyNWEwODJi
ZDAxNDg4ODQyMGFkLi41MDFiNWUwYzY0NzIzZTUxMzAxMzM1ZjU3OWMxYzQ2MzczYzg5MzM4IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDIxLTA5LTA5ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBs
ZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgY29tcGFyZVN0cmljdEVxIHdoZW4gbmVpdGhlciBz
aWRlIGlzIGEgZG91YmxlIGFuZCBhdCBsZWFzdCBvbmUgaXMgbm90IGEgQmlnSW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3NTUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc5MzIxNTQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBT
dXp1a2kuCisKKyAgICAgICAgTWFkZSB0aGUgZXJyb3IgbWVzc2FnZXMgaW4gc3RyZXNzL3JlZmxl
Y3Qtc2V0IGEgYml0IG1vcmUgaW5mb3JtYXRpdmUgaW4gdGhlIHByb2Nlc3Mgb2YgZGVidWdnaW5n
IGFuIGlzc3VlIHdpdGggdGhlIHBhdGNoLgorCisgICAgICAgICogc3RyZXNzL3JlZmxlY3Qtc2V0
LmpzOgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorCiAyMDIx
LTA5LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pT
Q10gSW1wbGVtZW50IFRlbXBvcmFsLlBsYWluVGltZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcmVmbGVjdC1zZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZWZsZWN0LXNldC5qcwppbmRleCAw
N2Y0YzM2MTliMWQ4M2M5MmU3NDE4N2U4N2ZjZmMyYzY5NjBmZDBmLi42M2U0MDcwMzI1MGFhMGY5
MDMzYjkyMzkwNmFkNWQ1NmQwNjc5NTRjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9yZWZs
ZWN0LXNldC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9yZWZsZWN0LXNldC5qcwpAQCAtMSw2ICsx
LDYgQEAKIGZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGRlc2Ny
aWJlKGFjdHVhbCkgKyAnLCBleHBlY3RlZDogJyArIGRlc2NyaWJlKGV4cGVjdGVkKSk7CiB9CiAK
IGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIG1lc3NhZ2UpIHsKQEAgLTExLDkgKzExLDkgQEAg
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgbWVzc2FnZSkgewogICAgICAgICBlcnJvciA9IGU7
CiAgICAgfQogICAgIGlmICghZXJyb3IpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRo
cm93bi4nKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duLiBFeHBlY3RlZDog
JyArIG1lc3NhZ2UpOwogICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQotICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBlcnJvcjogJyArIFN0cmluZyhlcnJvcikpOworICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBlcnJvcjogJyArIFN0cmluZyhlcnJvcikgKyAnLCBleHBl
Y3RlZDogJyArIG1lc3NhZ2UpOwogfQogCiBmdW5jdGlvbiB1bnJlYWNoYWJsZSgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>