<?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>233985</bug_id>
          
          <creation_ts>2021-12-07 23:02:17 -0800</creation_ts>
          <short_desc>[JSC] Introduce BaselineCallLinkInfo and OptimizingCallLinkInfo to shrink sizeof(BaselineCallLinkInfo)</short_desc>
          <delta_ts>2021-12-09 00:48:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</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>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1821420</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-07 23:02:17 -0800</bug_when>
    <thetext>[JSC] Introduce BaselineCallLinkInfo and OptimizingCallLinkInfo to shrink sizeof(BaselineCallLinkInfo)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821422</commentid>
    <comment_count>1</comment_count>
      <attachid>446311</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-07 23:04:12 -0800</bug_when>
    <thetext>Created attachment 446311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821426</commentid>
    <comment_count>2</comment_count>
      <attachid>446314</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-07 23:14:24 -0800</bug_when>
    <thetext>Created attachment 446314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821452</commentid>
    <comment_count>3</comment_count>
      <attachid>446326</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-08 00:24:22 -0800</bug_when>
    <thetext>Created attachment 446326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821881</commentid>
    <comment_count>4</comment_count>
      <attachid>446326</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-12-08 17:12:18 -0800</bug_when>
    <thetext>Comment on attachment 446326
Patch

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

Nice.  I like that the BaselineCallLinkInfo is now distinct from the OptimizingCallLinkInfo.  It makes the code so much easier to parse.

r=me with suggestions and questions.

&gt; Source/JavaScriptCore/bytecode/CallLinkInfo.cpp:335
&gt; +CCallHelpers::JumpList OptimizingCallLinkInfo::emitFastPath(CCallHelpers&amp; jit, GPRReg calleeGPR, GPRReg callLinkInfoGPR, UseDataIC useDataIC)

Should put these OptimizingCallLinkInfo functions under a #if ENABLE(DFG_JIT) (or #if ENABLE(JIT) depending on what you decided to guard it under).  Otherwise, non-JIT or non-optimizing JIT builds will not be happy.

It&apos;s great for review to keep these functions in place like this with only minimal edits, but perhaps before you land, you should just group them together at the bottom of the file and just guard them with #if ENABLE(DFG_JIT) and do the same for the whole OptimizingCallLinkInfo class declaration in the header file.

&gt; Source/JavaScriptCore/bytecode/CallLinkInfo.cpp:349
&gt; +MacroAssembler::JumpList OptimizingCallLinkInfo::emitTailCallFastPath(CCallHelpers&amp; jit, GPRReg calleeGPR, ScopedLambda&lt;void()&gt;&amp;&amp; prepareForTailCall)

Ditto.

&gt; Source/JavaScriptCore/bytecode/CallLinkInfo.h:446
&gt;  #if ENABLE(JIT)
&gt;      GPRReg m_calleeGPR { InvalidGPRReg };
&gt; +    GPRReg m_callLinkInfoGPR { InvalidGPRReg };
&gt;  #endif

I think these can be moved to the OptimizingCallLinkInfo now.

Out of curiosity, why is m_callLinkInfoGPR (and its accessor method) needed?  I only see it being set (in existing code, and in your patch), but I don&apos;t see anyone using the value, except for a RELEASE_ASSERT in setCallLinkInfoGPR().  Is this really needed?  If not, then its getter &amp; setter can. be removed as well.

&gt; Source/JavaScriptCore/bytecode/CallLinkInfo.h:466
&gt; +    GPRReg calleeGPR() const { return BaselineCallRegisters::calleeGPR; }
&gt; +    GPRReg callLinkInfoGPR() const { return BaselineCallRegisters::callLinkInfoGPR; }

Can these be made constexpr static instead?

&gt; Source/JavaScriptCore/bytecode/CallLinkInfo.h:467
&gt; +    void setCallLinkInfoGPR(GPRReg callLinkInfoGPR) { RELEASE_ASSERT(callLinkInfoGPR == this-&gt;callLinkInfoGPR()); }

Can use `BaselineCallRegisters::callLinkInfoGPR` instead of `this-&gt;callLinkInfoGPR()`.

&gt; Source/JavaScriptCore/bytecode/CallLinkInfo.h:480
&gt; +#if ENABLE(JIT)

Why not put the whole OptimizingCallLinkInfo class under #if ENABLE(DFG_JIT)?

&gt; Source/JavaScriptCore/dfg/DFGOperations.h:40
&gt;  class JSPropertyNameEnumerator;

Not due to your change, but would you mind moving this up above to keep the list alphabetically sorted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822026</commentid>
    <comment_count>5</comment_count>
      <attachid>446326</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-09 00:42:51 -0800</bug_when>
    <thetext>Comment on attachment 446326
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/bytecode/CallLinkInfo.cpp:335
&gt;&gt; +CCallHelpers::JumpList OptimizingCallLinkInfo::emitFastPath(CCallHelpers&amp; jit, GPRReg calleeGPR, GPRReg callLinkInfoGPR, UseDataIC useDataIC)
&gt; 
&gt; Should put these OptimizingCallLinkInfo functions under a #if ENABLE(DFG_JIT) (or #if ENABLE(JIT) depending on what you decided to guard it under).  Otherwise, non-JIT or non-optimizing JIT builds will not be happy.
&gt; 
&gt; It&apos;s great for review to keep these functions in place like this with only minimal edits, but perhaps before you land, you should just group them together at the bottom of the file and just guard them with #if ENABLE(DFG_JIT) and do the same for the whole OptimizingCallLinkInfo class declaration in the header file.

Non Baseline CallLinkInfos are now OptimizingCallLinkInfo. So, for example, IC is using that.
SO, we cannot use `ENABLE(DFG_JIT)`. But probably, we can use ENABLE(JIT).

&gt;&gt; Source/JavaScriptCore/bytecode/CallLinkInfo.h:446
&gt;&gt;  #endif
&gt; 
&gt; I think these can be moved to the OptimizingCallLinkInfo now.
&gt; 
&gt; Out of curiosity, why is m_callLinkInfoGPR (and its accessor method) needed?  I only see it being set (in existing code, and in your patch), but I don&apos;t see anyone using the value, except for a RELEASE_ASSERT in setCallLinkInfoGPR().  Is this really needed?  If not, then its getter &amp; setter can. be removed as well.

It is right, but due to alignment / padding issue, if we move them to OptimizingCallLinkInfo, then rather it increases sizeof(OptimizingCallLinkInfo).
Since putting them in CallLinkInfo does not increase the size of CallLinkInfo (due to padding / alignment), I think putting them here is better due to memory saving.

I think callLinkInfoGPR() is not used right now, but probably, it is possible that we will use it in Repatch&apos;s linkPolymorphicCall in near future.

&gt;&gt; Source/JavaScriptCore/bytecode/CallLinkInfo.h:466
&gt;&gt; +    GPRReg callLinkInfoGPR() const { return BaselineCallRegisters::callLinkInfoGPR; }
&gt; 
&gt; Can these be made constexpr static instead?

Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/CallLinkInfo.h:467
&gt;&gt; +    void setCallLinkInfoGPR(GPRReg callLinkInfoGPR) { RELEASE_ASSERT(callLinkInfoGPR == this-&gt;callLinkInfoGPR()); }
&gt; 
&gt; Can use `BaselineCallRegisters::callLinkInfoGPR` instead of `this-&gt;callLinkInfoGPR()`.

Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/CallLinkInfo.h:480
&gt;&gt; +#if ENABLE(JIT)
&gt; 
&gt; Why not put the whole OptimizingCallLinkInfo class under #if ENABLE(DFG_JIT)?

It is because it is also used by IC, wasm etc.

&gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.h:40
&gt;&gt;  class JSPropertyNameEnumerator;
&gt; 
&gt; Not due to your change, but would you mind moving this up above to keep the list alphabetically sorted?

Changed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822028</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-09 00:47:38 -0800</bug_when>
    <thetext>Committed r286769 (?): &lt;https://commits.webkit.org/r286769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822029</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-09 00:48:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/86258681&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446311</attachid>
            <date>2021-12-07 23:04:12 -0800</date>
            <delta_ts>2021-12-07 23:30:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233985-20211207230411.patch</filename>
            <type>text/plain</type>
            <size>64761</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzM3ZDdiNzVmMjY1ZjM3ZDYwMjZjNmRlNTFiNTU1M2NkNmQ1ZThkLi5kYzZlMTU2NmE2NWVhNGI5
YjRlNjUzMTI4MjMzYjA4OGM4OGE2MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAyMS0xMi0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSBCYXNlbGluZUNhbGxMaW5rSW5mbyBhbmQgT3B0
aW1pemluZ0NhbGxMaW5rSW5mbyB0byBzaHJpbmsgc2l6ZW9mKEJhc2VsaW5lQ2FsbExpbmtJbmZv
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTg1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbnRyb2R1Y2VzIEJhc2VsaW5lQ2FsbExpbmtJbmZvIGFuZCBPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvIHRvIHNocmluayBzaXplb2YoQmFzZWxpbmVDYWxsTGlua0luZm8pLgorICAgICAgICBC
YXNlbGluZUNhbGxMaW5rSW5mbyBpcyBpbmNsdWRlZCBpbiBtZXRhZGF0YSwgYW5kIGFsbG9jYXRl
ZCBmb3IgTExJbnQgYW5kIEJhc2VsaW5lLiBTbyBzaHJpbmtpbmcgaXQgY2FuIG1ha2UKKyAgICAg
ICAgbWV0YWRhdGEgc21hbGwgZm9yIExMSW50IGFuZCBCYXNlbGluZSwgd2hpY2ggZXhpc3RzIGZv
ciBhbGwgbGl2ZSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmNwcDoKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2xvd1BhdGhTdGFy
dCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0TW9ub21vcnBoaWNDYWxsZWUpOgor
ICAgICAgICAoSlNDOjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpmYXN0UGF0aFN0YXJ0KToKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKToKKyAgICAgICAgKEpT
Qzo6T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6
T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRmFzdFBhdGgpOgorICAgICAgICAo
SlNDOjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGgpOgorICAgICAgICAoSlND
OjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0RmFzdFBhdGgpOgorICAgICAgICAo
SlNDOjpPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0luZm86OmluaXRpYWxpemVEaXJlY3RD
YWxsKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2Fs
bFRhcmdldCk6CisgICAgICAgIChKU0M6OkJhc2VsaW5lQ2FsbExpbmtJbmZvOjppbml0aWFsaXpl
KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzbG93UGF0aFN0YXJ0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpmYXN0UGF0aFN0YXJ0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGgpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQYXRoKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGgpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpDYWxsTGlua0luZm86OmluaXRpYWxpemVEYXRhSUMpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpDYWxsTGlua0luZm86OmVtaXREaXJlY3RGYXN0UGF0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmluaXRpYWxpemVEaXJlY3RDYWxsKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJ
bmZvOjpDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxlZUdQ
UiBjb25zdCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbExpbmtJbmZvR1BSIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRDYWxsTGlua0luZm9HUFIpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldFVwQ2FsbCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkNhbGxMaW5rSW5mbzo6c2V0Q29kZUxvY2F0aW9ucyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbGVlR1BSKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omdl
dElDU3RhdHVzTWFwKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAg
ICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUmVwYXRjaC5jcHA6
CisgICAgICAgIChKU0M6OnJldmVydENhbGwpOgorICAgICAgICAoSlNDOjpsaW5rRGlyZWN0Q2Fs
bCk6CisgICAgICAgICogYnl0ZWNvZGUvUmVwYXRjaC5oOgorICAgICAgICAqIGRmZy9ERkdDb21t
b25EYXRhLmg6CisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6YWRkQ2FsbExpbmtJbmZv
KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkSlNDYWxsKToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6YWRkSlNEaXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6SlNDYWxsUmVjb3JkOjpKU0NhbGxSZWNvcmQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpKU0RpcmVjdENhbGxSZWNvcmQ6OkpTRGlyZWN0Q2FsbFJlY29yZCk6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpT
Q19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRD
YWxsKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAg
ICogaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1l
U2h1ZmZsZURhdGE6OmNyZWF0ZUZvckJhc2VsaW5lT3JMTEludFRhaWxDYWxsKToKKyAgICAgICAg
KiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSk6CisgICAg
ICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3
YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6OmNy
ZWF0ZUlDSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRp
bmUuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29t
cGlsZUNhbGxFdmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVUYWlsQ2Fs
bCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICgpOiBEZWxl
dGVkLgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oOgorICAgICAg
ICAqIHdhc20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6
CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5oOgorCiAyMDIxLTEyLTA3ICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFR5cGVkQXJyYXkgcHJvdG90eXBlIHNl
dCBzaG91bGQgZ28gZG93biB0aGUgZmFzdCBwYXRoIHdoZW4gdXNpbmcgbm9uIGNsYW1wZWQgaW50
ZWdlciB0eXBlcyBvZiB0aGUgc2FtZSBieXRlIHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBhYWY0Zjc2ZWE0YjliODkxNTc1YmVhYmU1
MTA5ZjE0ZjkzZWFkNGM2Li5iYzc2YTFjZDRjMWQ0YjVlZmUxYzQyMDU1ZGM2OGVmZjE4MDQ1MTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBA
IC0xOTk3LDcgKzE5OTcsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc3RhdGUuc2V0U3BpbGxTdGF0ZUZv
ckpTR2V0dGVyU2V0dGVyKHNwaWxsU3RhdGUpOwogCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VCghYWNjZXNzLmNhbGxMaW5rSW5mbygpKTsKLSAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvID0gc3RhdGUubV9jYWxsTGlua0luZm9zLmFkZChzdHViSW5mby5jb2RlT3JpZ2lu
KTsKKyAgICAgICAgICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLm1fY2FsbExpbmtJbmZv
cy5hZGQoc3R1YkluZm8uY29kZU9yaWdpbik7CiAgICAgICAgICAgICBhY2Nlc3MubV9jYWxsTGlu
a0luZm8gPSBjYWxsTGlua0luZm87CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZW5l
cmF0ZWQgYSBwb2x5bW9ycGhpYyBjYWxsIHN0dWIgdGhhdCBqdW1wZWQgYmFjayB0byB0aGUgZ2V0
dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpp
bmRleCA1NDg2OTc1MjI5MzFkNjY0ZTgwZDUwNjcyZjlhMzc3YjhmNjQ5MTVhLi4xNGE0NmE5NWEz
NWNmYjE1YjQ4YzY4MzBkMjJhZTM0MWVkOTEyY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTI2LDcgKzI2LDcgQEAKIAogICAgIDpC
YXNpY0Jsb2NrTG9jYXRpb24sCiAgICAgOkJvdW5kTGFiZWwsCi0gICAgOkNhbGxMaW5rSW5mbywK
KyAgICA6QmFzZWxpbmVDYWxsTGlua0luZm8sCiAgICAgOkRlYnVnSG9va1R5cGUsCiAgICAgOkVD
TUFNb2RlLAogICAgIDpFcnJvclR5cGVXaXRoRXh0ZW5zaW9uLApAQCAtODQyLDcgKzg0Miw3IEBA
CiAgICAgICAgIGFyZ3Y6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAg
ICAgY2FsbExpbmtJbmZvOiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxMaW5rSW5mbzogQmFz
ZWxpbmVDYWxsTGlua0luZm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAog
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQpAQCAtODU1LDcgKzg1NSw3IEBA
CiAgICAgICAgIGFyZ3Y6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAg
ICAgY2FsbExpbmtJbmZvOiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxMaW5rSW5mbzogQmFz
ZWxpbmVDYWxsTGlua0luZm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAog
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQpAQCAtODY5LDcgKzg2OSw3IEBA
CiAgICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0g
ICAgICAgIGNhbGxMaW5rSW5mbzogQ2FsbExpbmtJbmZvLAorICAgICAgICBjYWxsTGlua0luZm86
IEJhc2VsaW5lQ2FsbExpbmtJbmZvLAogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmls
ZSwKICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KQEAgLTg4NCw3ICs4ODQs
NyBAQAogICAgICAgICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsK
LSAgICAgICAgY2FsbExpbmtJbmZvOiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxMaW5rSW5m
bzogQmFzZWxpbmVDYWxsTGlua0luZm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9m
aWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfSwKQEAgLTkwNiw3ICs5
MDYsNyBAQAogICAgICAgICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6
IHsKLSAgICAgICAgY2FsbExpbmtJbmZvOiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxMaW5r
SW5mbzogQmFzZWxpbmVDYWxsTGlua0luZm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfSwKQEAgLTkyOCw3
ICs5MjgsNyBAQAogICAgICAgICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKLSAgICAgICAgY2FsbExpbmtJbmZvOiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxM
aW5rSW5mbzogQmFzZWxpbmVDYWxsTGlua0luZm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQpAQCAtOTQx
LDcgKzk0MSw3IEBACiAgICAgICAgIGFyZ3Y6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKLSAgICAgICAgY2FsbExpbmtJbmZvOiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxM
aW5rSW5mbzogQmFzZWxpbmVDYWxsTGlua0luZm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQpAQCAtOTU2
LDcgKzk1Niw3IEBACiAgICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRh
ZGF0YTogewotICAgICAgICBjYWxsTGlua0luZm86IENhbGxMaW5rSW5mbywKKyAgICAgICAgY2Fs
bExpbmtJbmZvOiBCYXNlbGluZUNhbGxMaW5rSW5mbywKICAgICAgICAgYXJyYXlQcm9maWxlOiBB
cnJheVByb2ZpbGUsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9LApAQCAt
MTI1OSw3ICsxMjU5LDcgQEAKICAgICBtZXRhZGF0YTogewogICAgICAgICBpdGVyYXRpb25NZXRh
ZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAogICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwKLSAgICAgICAgY2FsbExpbmtJbmZvOiBDYWxsTGlua0luZm8sCisgICAgICAg
IGNhbGxMaW5rSW5mbzogQmFzZWxpbmVDYWxsTGlua0luZm8sCiAgICAgICAgIGFycmF5UHJvZmls
ZTogQXJyYXlQcm9maWxlLAogICAgICAgICBpdGVyYXRvclByb2ZpbGU6IFZhbHVlUHJvZmlsZSwK
ICAgICAgICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLApAQCAtMTI4Myw3ICsx
MjgzLDcgQEAKICAgICBtZXRhZGF0YTogewogICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRl
cmF0aW9uTW9kZU1ldGFkYXRhLAogICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IEFycmF5UHJvZmls
ZSwKLSAgICAgICAgY2FsbExpbmtJbmZvOiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxMaW5r
SW5mbzogQmFzZWxpbmVDYWxsTGlua0luZm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAogICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgICAg
ICBkb25lTW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCBiZGFiMzk2MTA3MDQw
NmRjOTdmN2JiNzk5ZTBhMWM0MjlhZjAzNmNmLi40MTA0MzVmY2QwODkxMTk1ZWI5OTIyNmRmYzFk
NzRiNGUzNDFlODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcApAQCAtMTAyLDEwICsxMDIsMTAgQEAgdm9pZCBDYWxsTGlua0luZm86OnVu
bGluayhWTSYgdm0pCiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzT25MaXN0KCkpOwogfQogCi1Db2Rl
TG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBDYWxsTGlua0luZm86OnNsb3dQYXRoU3Rh
cnQoKQorQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gT3B0aW1pemluZ0NhbGxM
aW5rSW5mbzo6c2xvd1BhdGhTdGFydCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzRGF0YUlD
KCkpOwotICAgIHJldHVybiB1LmNvZGVJQy5tX3Nsb3dQYXRoU3RhcnQ7CisgICAgcmV0dXJuIG1f
c2xvd1BhdGhTdGFydDsKIH0KIAogQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4g
Q2FsbExpbmtJbmZvOjpkb25lTG9jYXRpb24oKQpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQ2Fs
bExpbmtJbmZvOjpzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpT
T2JqZWN0KiBjYWxsZWUsCiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGlu
YXRpb24gPSBjb2RlUHRyOwogICAgIGVsc2UgewogI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwodS5jb2RlSUMubV9jYWxsTG9jYXRpb24sIENv
ZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQdHIpKTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChzdGF0aWNfY2FzdDxPcHRpbWl6aW5nQ2FsbExpbmtJ
bmZvKj4odGhpcyktPm1fY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRy
VGFnPihjb2RlUHRyKSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcih1
LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uLCBjYWxsZWUpOwogI2Vsc2UKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIxNSwxMCArMjE1LDEwIEBAIHZvaWQgQ2FsbExp
bmtJbmZvOjpzZXRNYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyh1bnNpZ25lZCB2YWx1ZSkK
ICAgICBtX21heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gdmFsdWU7CiB9CiAKLUNvZGVM
b2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IENhbGxMaW5rSW5mbzo6ZmFzdFBhdGhTdGFy
dCgpCitDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvOjpmYXN0UGF0aFN0YXJ0KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgp
ICYmIGlzVGFpbENhbGwoKSk7Ci0gICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxK
U0ludGVybmFsUHRyVGFnPih1LmNvZGVJQy5tX2Zhc3RQYXRoU3RhcnQpOworICAgIHJldHVybiBD
b2RlTG9jYXRpb25EYXRhTGFiZWxQdHI8SlNJbnRlcm5hbFB0clRhZz4obV9mYXN0UGF0aFN0YXJ0
KTsKIH0KIAogdm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhWTSYgdm0pCkBAIC0zMzYsNyAr
MzM2LDcgQEAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQ
YXRoSW1wbChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW4KIAogICAgICAgICBSRUxFQVNFX0FTU0VS
VChjYWxsTGlua0luZm8pOwogICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICBjYWxsTGlua0luZm8tPnUuY29kZUlDLm1fY2Fs
bExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRh
Zz4oY2FsbCk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxPcHRpbWl6aW5nQ2FsbExpbmtJbmZv
Kj4oY2FsbExpbmtJbmZvKS0+bV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZO
ZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKICAgICAgICAgICAgIGNhbGxMaW5rSW5m
by0+dS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0lu
dGVybmFsUHRyVGFnPihjYWxsZWVDaGVjayk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTM0NCw3
ICszNDQsNyBAQCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgQ2FsbExpbmtJbmZvOjplbWl0RmFz
dFBhdGhJbXBsKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbgogICAgIHJldHVybiBzbG93UGF0aDsK
IH0KIAotQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5rSW5mb0dQ
UiwgVXNlRGF0YUlDIHVzZURhdGFJQykKK0NDYWxsSGVscGVyczo6SnVtcExpc3QgT3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgY2Fs
bGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSLCBVc2VEYXRhSUMgdXNlRGF0YUlDKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKCFpc1RhaWxDYWxsKCkpOwogICAgIHNldFVzZXNEYXRhSUNzKHVz
ZURhdGFJQyk7CkBAIC0zNTIsMTMgKzM1MiwxMyBAQCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IENh
bGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgY2FsbAog
ICAgIGlmIChpc0RhdGFJQygpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5m
b0dQUiAhPSBHUFJSZWc6OkludmFsaWRHUFJSZWcpOwogICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIodGhpcyksIGNhbGxMaW5rSW5mb0dQUik7Ci0gICAgICAgIHUu
ZGF0YUlDLm1fY2FsbExpbmtJbmZvR1BSID0gY2FsbExpbmtJbmZvR1BSOworICAgICAgICBzZXRD
YWxsTGlua0luZm9HUFIoY2FsbExpbmtJbmZvR1BSKTsKICAgICB9CiAKICAgICByZXR1cm4gZW1p
dEZhc3RQYXRoSW1wbCh0aGlzLCBqaXQsIGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSLCB1c2VE
YXRhSUMsIGlzVGFpbENhbGwoKSwgbnVsbHB0cik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0
LCBHUFJSZWcgY2FsbGVlR1BSLCBTY29wZWRMYW1iZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JUYWls
Q2FsbCkKK01hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpl
bWl0VGFpbENhbGxGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIGNhbGxlZUdQUiwg
U2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVwYXJlRm9yVGFpbENhbGwpCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQoaXNUYWlsQ2FsbCgpKTsKICAgICBzZXRVc2VzRGF0YUlDcyhVc2VEYXRhSUM6Ok5v
KTsKQEAgLTM3Nyw3ICszNzcsNyBAQCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgQ2FsbExpbmtJ
bmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aChDQ2FsbEhlbHBlcnMmCiAgICAgcmV0dXJu
IGVtaXRGYXN0UGF0aEltcGwobnVsbHB0ciwgaml0LCBjYWxsZWVHUFIsIGNhbGxMaW5rSW5mb0dQ
UiwgVXNlRGF0YUlDOjpZZXMsIHRydWUsIFdURk1vdmUocHJlcGFyZUZvclRhaWxDYWxsKSk7CiB9
CiAKLXZvaWQgQ2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGgoVk0mIHZtLCBDQ2FsbEhlbHBlcnMm
IGppdCkKK3ZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1pdFNsb3dQYXRoKFZNJiB2bSwg
Q0NhbGxIZWxwZXJzJiBqaXQpCiB7CiAgICAgc2V0U2xvd1BhdGhDYWxsRGVzdGluYXRpb24odm0u
Z2V0Q1RJTGlua0NhbGwoKS5jb2RlKCkpOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cih0aGlzKSwgR1BSSW5mbzo6cmVnVDIpOwpAQCAtMzkxLDMwICszOTEsOCBAQCB2
b2lkIENhbGxMaW5rSW5mbzo6ZW1pdERhdGFJQ1Nsb3dQYXRoKFZNJiwgQ0NhbGxIZWxwZXJzJiBq
aXQsIEdQUlJlZyBjYWxsTGlua0luZgogfQogI2VuZGlmCiAKLXZvaWQgQ2FsbExpbmtJbmZvOjpp
bml0aWFsaXplRGF0YUlDKFZNJiB2bSwgQ2FsbFR5cGUgY2FsbFR5cGUsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgQ2FsbEZyYW1lU2h1ZmZsZURhdGEqIGZyYW1lU2h1ZmZsZURhdGEpCi17
Ci0gICAgVU5VU0VEX1BBUkFNKGZyYW1lU2h1ZmZsZURhdGEpOwotICAgIG1fY29kZU9yaWdpbiA9
IENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCk7Ci0gICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBlOwot
I2lmIEVOQUJMRShKSVQpCi0gICAgR1BSUmVnIGNhbGxlZUdQUiA9IEdQUkluZm86OnJlZ1QwOwot
ICAgIEdQUlJlZyBjYWxsTGlua0luZm9HUFIgPSBHUFJJbmZvOjpyZWdUMjsKLSAgICBtX2NhbGxl
ZUdQUiA9IGNhbGxlZUdQUjsKLSAgICBpZiAoZnJhbWVTaHVmZmxlRGF0YSkgewotICAgICAgICAv
LyBGSVhNRTogSXQnZCBiZSBuaWNlIGlmIHRoaXMgd2VyZSBhIHJlZmNvdW50ZWQgZGF0YSBzdHJ1
Y3R1cmUuCi0gICAgICAgIG1fZnJhbWVTaHVmZmxlRGF0YSA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1l
U2h1ZmZsZURhdGE+KCpmcmFtZVNodWZmbGVEYXRhKTsKLSAgICB9Ci0gICAgdS5kYXRhSUMubV9j
YWxsTGlua0luZm9HUFIgPSBjYWxsTGlua0luZm9HUFI7Ci0jZW5kaWYKLSAgICBzZXRVc2VzRGF0
YUlDcyhVc2VEYXRhSUM6Olllcyk7Ci0gICAgc2V0U2xvd1BhdGhDYWxsRGVzdGluYXRpb24odm0u
Z2V0Q1RJTGlua0NhbGwoKS5jb2RlKCkpOwotICAgIC8vIElmIEpJVCBpcyBkaXNhYmxlZCwgd2Ug
c2hvdWxkIG5vdCBzdXBwb3J0IGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBjYWxsIElDLgotICAgIGlm
ICghT3B0aW9uczo6dXNlSklUKCkpCi0gICAgICAgIGRpc2FsbG93U3R1YnMoKTsKLX0KLQogI2lm
IEVOQUJMRShKSVQpCi12b2lkIENhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKENDYWxs
SGVscGVycyYgaml0KQordm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0RmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzVGFpbENh
bGwoKSk7CiAKQEAgLTQyMiwxNCArNDAwLDE0IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjplbWl0RGly
ZWN0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQpCiAKICAgICBhdXRvIGNhbGwgPSBqaXQubmVh
ckNhbGwoKTsKICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7Ci0gICAgICAgIHUuY29kZUlDLm1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlv
bk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgIG1fY2FsbExvY2F0
aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4oY2Fs
bCk7CiAgICAgfSk7CiAgICAgaml0LmFkZExhdGVMaW5rVGFzayhbdGhpc10gKExpbmtCdWZmZXIm
KSB7CiAgICAgICAgIGluaXRpYWxpemVEaXJlY3RDYWxsKCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
Q2FsbExpbmtJbmZvOjplbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGpp
dCwgU2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVwYXJlRm9yVGFpbENhbGwpCit2b2lkIE9wdGlt
aXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVy
cyYgaml0LCBTY29wZWRMYW1iZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JUYWlsQ2FsbCkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVChpc1RhaWxDYWxsKCkpOwogCkBAIC00MzcsNyArNDE1LDcgQEAgdm9p
ZCBDYWxsTGlua0luZm86OmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYg
aml0LCBTY29wZWRMYW1iZGE8dm8KIAogICAgIGF1dG8gZmFzdFBhdGhTdGFydCA9IGppdC5sYWJl
bCgpOwogICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsK
LSAgICAgICAgdS5jb2RlSUMubV9mYXN0UGF0aFN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9m
PEpTSW50ZXJuYWxQdHJUYWc+KGZhc3RQYXRoU3RhcnQpOworICAgICAgICBtX2Zhc3RQYXRoU3Rh
cnQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oZmFzdFBhdGhTdGFy
dCk7CiAgICAgfSk7CiAKICAgICAvLyAtIElmIHdlJ3JlIG5vdCB5ZXQgbGlua2VkLCB0aGlzIGlz
IGEganVtcCB0byB0aGUgc2xvdyBwYXRoLgpAQCAtNDQ3LDE3ICs0MjUsMTcgQEAgdm9pZCBDYWxs
TGlua0luZm86OmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBT
Y29wZWRMYW1iZGE8dm8KICAgICBwcmVwYXJlRm9yVGFpbENhbGwoKTsKICAgICBhdXRvIGNhbGwg
PSBqaXQubmVhclRhaWxDYWxsKCk7CiAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikgewotICAgICAgICB1LmNvZGVJQy5tX2NhbGxMb2NhdGlvbiA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOworICAgICAg
ICBtX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJu
YWxQdHJUYWc+KGNhbGwpOwogICAgIH0pOwogICAgIGppdC5hZGRMYXRlTGlua1Rhc2soW3RoaXNd
IChMaW5rQnVmZmVyJikgewogICAgICAgICBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwogICAgIH0p
OwogfQogCi12b2lkIENhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwoKQordm9pZCBP
cHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCgpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoaXNEaXJlY3QoKSk7Ci0gICAgQVNTRVJUKHUuY29kZUlDLm1fY2FsbExvY2F0
aW9uKTsKKyAgICBBU1NFUlQobV9jYWxsTG9jYXRpb24pOwogICAgIGlmIChpc1RhaWxDYWxsKCkp
IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmFzdFBhdGhTdGFydCgpKTsKICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoZmFzdFBhdGhTdGFydCgpLCBzY29wZWRMYW1iZGE8
dm9pZChDQ2FsbEhlbHBlcnMmKT4oWyZdKENDYWxsSGVscGVycyYgaml0KSB7CkBAIC00NjcsMTAg
KzQ0NSwxMCBAQCB2b2lkIENhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwoKQogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0pLCAiaW5pdGlhbGl6ZSBkaXJlY3QgY2FsbCIpOwogICAg
IH0gZWxzZQotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKHUuY29kZUlD
Lm1fY2FsbExvY2F0aW9uLCBzbG93UGF0aFN0YXJ0KCkpOworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaE5lYXJDYWxsKG1fY2FsbExvY2F0aW9uLCBzbG93UGF0aFN0YXJ0KCkpOwogfQog
Ci12b2lkIENhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJl
bDxKU0VudHJ5UHRyVGFnPiB0YXJnZXQpCit2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OnNl
dERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gdGFyZ2V0
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkpOwogCkBAIC00ODMsNyArNDYxLDcg
QEAgdm9pZCBDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFi
ZWw8SlNFbnRyeVB0clRhZz4gdGFyZ2V0KQogICAgICAgICB9KSwgIlNldHRpbmcgZGlyZWN0IGNh
bGwgdGFyZ2V0Iik7CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2Fs
bCh1LmNvZGVJQy5tX2NhbGxMb2NhdGlvbiwgdGFyZ2V0KTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaE5lYXJDYWxsKG1fY2FsbExvY2F0aW9uLCB0YXJnZXQpOwogfQogI2VuZGlmCiAKQEAg
LTUzNSw0ICs1MTMsMjQgQEAgdm9pZCBDYWxsTGlua0luZm86OnNldFN0dWIoUmVmPFBvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lPiYmIG5ld1N0dWIpCiB9CiAjZW5kaWYKIAordm9pZCBCYXNlbGlu
ZUNhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZShWTSYgdm0sIENhbGxUeXBlIGNhbGxUeXBlLCBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIENhbGxGcmFtZVNodWZmbGVEYXRhKiBmcmFtZVNodWZm
bGVEYXRhKQoreworICAgIFVOVVNFRF9QQVJBTShmcmFtZVNodWZmbGVEYXRhKTsKKyAgICBtX3R5
cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVHlwZTo6QmFzZWxpbmUpOworICAgIEFTU0VSVChU
eXBlOjpCYXNlbGluZSA9PSB0eXBlKCkpOworICAgIG1fY29kZU9yaWdpbiA9IENvZGVPcmlnaW4o
Ynl0ZWNvZGVJbmRleCk7CisgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBlOworI2lmIEVOQUJMRShK
SVQpCisgICAgaWYgKGZyYW1lU2h1ZmZsZURhdGEpIHsKKyAgICAgICAgLy8gRklYTUU6IEl0J2Qg
YmUgbmljZSBpZiB0aGlzIHdlcmUgYSByZWZjb3VudGVkIGRhdGEgc3RydWN0dXJlLgorICAgICAg
ICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVEYXRhPigq
ZnJhbWVTaHVmZmxlRGF0YSk7CisgICAgfQorI2VuZGlmCisgICAgc2V0VXNlc0RhdGFJQ3MoVXNl
RGF0YUlDOjpZZXMpOworICAgIHNldFNsb3dQYXRoQ2FsbERlc3RpbmF0aW9uKHZtLmdldENUSUxp
bmtDYWxsKCkuY29kZSgpKTsKKyAgICAvLyBJZiBKSVQgaXMgZGlzYWJsZWQsIHdlIHNob3VsZCBu
b3Qgc3VwcG9ydCBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY2FsbCBJQy4KKyAgICBpZiAoIU9wdGlv
bnM6OnVzZUpJVCgpKQorICAgICAgICBkaXNhbGxvd1N0dWJzKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5o
CmluZGV4IDE4NDcxODcwM2VlMGMwYmUyOTUzNWIyMTY2MTU5YWYzMjg3MGNkYzcuLjIyNmU0MmU1
NDZjMTAzNDhlNjA0ZjJiNGIxZmIzNDU3ODc0OTNhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKQEAgLTQ3LDEwICs0NywyMyBAQCBlbnVtIE9w
Y29kZUlEIDogdW5zaWduZWQ7CiBzdHJ1Y3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGE7CiBzdHJ1Y3Qg
VW5saW5rZWRDYWxsTGlua0luZm87CiAKKyNpZiBFTkFCTEUoQVNTRU1CTEVSKQorbmFtZXNwYWNl
IEJhc2VsaW5lQ2FsbFJlZ2lzdGVycyB7Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgY2FsbGVlSlNS
IHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKK2NvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSIHsgR1BS
SW5mbzo6cmVnVDAgfTsKK2NvbnN0ZXhwciBHUFJSZWcgY2FsbExpbmtJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDIgfTsKK30KKyNlbmRpZgorCiBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFj
a2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogcHVibGljOgogICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50
OF90IHsKKyAgICAgICAgQmFzZWxpbmUsCisgICAgICAgIE9wdGltaXppbmcsCisgICAgfTsKKwog
ICAgIGVudW0gQ2FsbFR5cGUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKICAgICAgICAgQ2Fs
bCwKQEAgLTgxLDI0ICs5NCw2IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRS
YXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBD
YWxsTGlua0luZm8oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgICAgICA6IG1fY29kZU9yaWdp
bihjb2RlT3JpZ2luKQotICAgICAgICAsIG1faGFzU2VlblNob3VsZFJlcGF0Y2goZmFsc2UpCi0g
ICAgICAgICwgbV9oYXNTZWVuQ2xvc3VyZShmYWxzZSkKLSAgICAgICAgLCBtX2NsZWFyZWRCeUdD
KGZhbHNlKQotICAgICAgICAsIG1fY2xlYXJlZEJ5VmlydHVhbChmYWxzZSkKLSAgICAgICAgLCBt
X2FsbG93U3R1YnModHJ1ZSkKLSAgICAgICAgLCBtX2NsZWFyZWRCeUpldHRpc29uKGZhbHNlKQot
ICAgICAgICAsIG1fY2FsbFR5cGUoTm9uZSkKLSAgICAgICAgLCBtX3VzZURhdGFJQyhzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oVXNlRGF0YUlDOjpZZXMpKQotICAgIHsKLSAgICB9Ci0KLSAgICBDYWxs
TGlua0luZm8oKQotICAgICAgICA6IENhbGxMaW5rSW5mbyhDb2RlT3JpZ2luIHsgfSkKLSAgICB7
Ci0gICAgfQotCiAgICAgfkNhbGxMaW5rSW5mbygpOwogICAgIAogICAgIHN0YXRpYyBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZEZvcihDYWxsVHlwZSBjYWxsVHlwZSkK
QEAgLTE4MywzOCArMTc4LDE4IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRS
YXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAgICAgYm9vbCBpc0xpbmtlZCgpIGNvbnN0
IHsgcmV0dXJuIHN0dWIoKSB8fCBtX2NhbGxlZU9yQ29kZUJsb2NrOyB9CiAgICAgdm9pZCB1bmxp
bmsoVk0mKTsKIAotI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5cGUg
Y2FsbFR5cGUsIEdQUlJlZyBjYWxsZWVHUFIpCi0gICAgewotICAgICAgICBtX2NhbGxUeXBlID0g
Y2FsbFR5cGU7Ci0gICAgICAgIG1fY2FsbGVlR1BSID0gY2FsbGVlR1BSOwotICAgIH0KLQotICAg
IEdQUlJlZyBjYWxsZWVHUFIoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZUdQUjsgfQotI2VuZGlm
Ci0KLSAgICB2b2lkIGluaXRpYWxpemVEYXRhSUMoVk0mLCBDYWxsVHlwZSwgQnl0ZWNvZGVJbmRl
eCwgQ2FsbEZyYW1lU2h1ZmZsZURhdGEqKTsKLSAgICAKICAgICBlbnVtIGNsYXNzIFVzZURhdGFJ
QyA6IHVpbnQ4X3QgewogICAgICAgICBZZXMsCiAgICAgICAgIE5vCiAgICAgfTsKIAogI2lmIEVO
QUJMRShKSVQpCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3QgZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlua0luZm8qLCBDQ2FsbEhlbHBlcnMm
LCBHUFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSLCBVc2VEYXRhSUMsIGJv
b2wgaXNUYWlsQ2FsbCwgU2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVwYXJlRm9yVGFpbENhbGwp
IFdBUk5fVU5VU0VEX1JFVFVSTjsKIHB1YmxpYzoKICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IGVtaXREYXRhSUNGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBHUFJSZWcgY2FsbGVl
R1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmLCBHUFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSLCBT
Y29wZWRMYW1iZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JUYWlsQ2FsbCkgV0FSTl9VTlVTRURfUkVU
VVJOOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0RmFzdFBhdGgoQ0NhbGxIZWxw
ZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUiwgVXNlRGF0YUlD
KSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVtaXRU
YWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIFNjb3BlZExh
bWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0g
ICAgdm9pZCBlbWl0RGlyZWN0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJik7Ci0gICAgdm9pZCBlbWl0
RGlyZWN0VGFpbENhbGxGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBTY29wZWRMYW1iZGE8dm9pZCgp
PiYmIHByZXBhcmVGb3JUYWlsQ2FsbCk7Ci0gICAgdm9pZCBlbWl0U2xvd1BhdGgoVk0mLCBDQ2Fs
bEhlbHBlcnMmKTsKICAgICBzdGF0aWMgdm9pZCBlbWl0RGF0YUlDU2xvd1BhdGgoVk0mLCBDQ2Fs
bEhlbHBlcnMmLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6
ZURpcmVjdENhbGwoKTsKLSAgICB2b2lkIHNldERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9u
TGFiZWw8SlNFbnRyeVB0clRhZz4pOwogI2VuZGlmCiAKICAgICB2b2lkIHJldmVydENhbGxUb1N0
dWIoKTsKQEAgLTIyMiwxNiArMTk3LDYgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBh
Y2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKICAgICBib29sIGlzRGF0YUlDKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VXNlRGF0YUlDPihtX3VzZURhdGFJQykgPT0gVXNl
RGF0YUlDOjpZZXM7IH0KICAgICB2b2lkIHNldFVzZXNEYXRhSUNzKFVzZURhdGFJQyB1c2VEYXRh
SUMpIHsgbV91c2VEYXRhSUMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odXNlRGF0YUlDKTsgfQog
Ci0gICAgdm9pZCBzZXRDb2RlTG9jYXRpb25zKAotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxK
U0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFN0YXJ0LAotICAgICAgICBDb2RlTG9jYXRpb25MYWJl
bDxKU0ludGVybmFsUHRyVGFnPiBkb25lTG9jYXRpb24pCi0gICAgewotICAgICAgICBpZiAoIWlz
RGF0YUlDKCkpCi0gICAgICAgICAgICB1LmNvZGVJQy5tX3Nsb3dQYXRoU3RhcnQgPSBzbG93UGF0
aFN0YXJ0OwotICAgICAgICBtX2RvbmVMb2NhdGlvbiA9IGRvbmVMb2NhdGlvbjsKLSAgICB9Ci0K
LQogICAgIGJvb2wgYWxsb3dTdHVicygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dTdHViczsgfQog
CiAgICAgdm9pZCBkaXNhbGxvd1N0dWJzKCkKQEAgLTIzOSw3ICsyMDQsNiBAQCBjbGFzcyBDYWxs
TGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewog
ICAgICAgICBtX2FsbG93U3R1YnMgPSBmYWxzZTsKICAgICB9CiAKLSAgICBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFN0YXJ0KCk7CiAgICAgQ29kZUxvY2F0aW9u
TGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZUxvY2F0aW9uKCk7CiAKICAgICB2b2lkIHNldE1v
bm9tb3JwaGljQ2FsbGVlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKQEAgLTM3MSwxMCArMzM1LDggQEAgY2xhc3Mg
Q2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+
IHsKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIEdQUlJlZyBjYWxsZWVHUFIoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fY2FsbGVlR1BSOwotICAgIH0KKyAgICBHUFJSZWcgY2FsbGVl
R1BSKCkgY29uc3Q7CisgICAgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUigpIGNvbnN0OwogI2VuZGlm
CiAKICAgICB1aW50MzJfdCBzbG93UGF0aENvdW50KCkKQEAgLTQxOCwzMyArMzgwLDQ3IEBAIGNs
YXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJ
bmZvPiB7CiAgICAgfQogI2VuZGlmCiAKLXByaXZhdGU6CisgICAgVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4obV90eXBlKTsgfQogCi0gICAgQ29kZUxvY2F0aW9u
TGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZmFzdFBhdGhTdGFydCgpOworcHJvdGVjdGVkOgorICAg
IENhbGxMaW5rSW5mbyhUeXBlIHR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbikKKyAgICAgICAg
OiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikKKyAgICAgICAgLCBtX2hhc1NlZW5TaG91bGRSZXBh
dGNoKGZhbHNlKQorICAgICAgICAsIG1faGFzU2VlbkNsb3N1cmUoZmFsc2UpCisgICAgICAgICwg
bV9jbGVhcmVkQnlHQyhmYWxzZSkKKyAgICAgICAgLCBtX2NsZWFyZWRCeVZpcnR1YWwoZmFsc2Up
CisgICAgICAgICwgbV9hbGxvd1N0dWJzKHRydWUpCisgICAgICAgICwgbV9jbGVhcmVkQnlKZXR0
aXNvbihmYWxzZSkKKyAgICAgICAgLCBtX2NhbGxUeXBlKE5vbmUpCisgICAgICAgICwgbV91c2VE
YXRhSUMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVzZURhdGFJQzo6WWVzKSkKKyAgICAgICAgLCBt
X3R5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHR5cGUgPT0gdGhpcy0+dHlwZSgpKTsKKyAgICB9CisKKyAgICBDYWxsTGlua0luZm8oVHlwZSB0
eXBlKQorICAgICAgICA6IENhbGxMaW5rSW5mbyh0eXBlLCBDb2RlT3JpZ2luIHsgfSkKKyAgICB7
CisgICAgfQorCisjaWYgRU5BQkxFKEpJVCkKKyAgICB2b2lkIHNldENhbGxMaW5rSW5mb0dQUihH
UFJSZWcpOworI2VuZGlmCiAKICAgICB1aW50MzJfdCBtX21heEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzIHsgMCB9OyAvLyBGb3IgdmFyYXJnczogdGhlIHByb2ZpbGVkIG1heGltdW0gbnVtYmVy
IG9mIGFyZ3VtZW50cy4gRm9yIGRpcmVjdDogdGhlIG51bWJlciBvZiBzdGFjayBzbG90cyBhbGxv
Y2F0ZWQgZm9yIGFyZ3VtZW50cy4KICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBtX2RvbmVMb2NhdGlvbjsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0
clRhZz4gbV9zbG93UGF0aENhbGxEZXN0aW5hdGlvbjsKICAgICB1bmlvbiBVbmlvblR5cGUgewot
ICAgICAgICBVbmlvblR5cGUoKSAKLSNpZiBFTkFCTEUoSklUKQotICAgICAgICAgICAgOiBkYXRh
SUMgeyBudWxscHRyLCBJbnZhbGlkR1BSUmVnIH0KLSNlbHNlCisgICAgICAgIFVuaW9uVHlwZSgp
CiAgICAgICAgICAgICA6IGRhdGFJQyB7IG51bGxwdHIgfQotI2VuZGlmCiAgICAgICAgIHsgfQor
CiAgICAgICAgIHN0cnVjdCBEYXRhSUMgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEpTRW50cnlQdHJUYWc+IG1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb247Ci0jaWYgRU5B
QkxFKEpJVCkKLSAgICAgICAgICAgIEdQUlJlZyBtX2NhbGxMaW5rSW5mb0dQUjsKLSNlbmRpZgog
ICAgICAgICB9IGRhdGFJQzsKIAogICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4gbV9jYWxsTG9jYXRpb247CiAgICAgICAg
ICAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHI8SlNJbnRlcm5hbFB0clRhZz4gbV9jYWxsZWVM
b2NhdGlvbjsKLSAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+
IG1fc2xvd1BhdGhTdGFydDsKLSAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJu
YWxQdHJUYWc+IG1fZmFzdFBhdGhTdGFydDsKICAgICAgICAgfSBjb2RlSUM7CiAgICAgfSB1Owog
CkBAIC00NjMsMTIgKzQzOSwxMTYgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tl
ZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKICAgICBib29sIG1fY2xlYXJlZEJ5SmV0
dGlzb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY2FsbFR5cGUgOiA0OyAvLyBDYWxsVHlwZQogICAg
IHVuc2lnbmVkIG1fdXNlRGF0YUlDIDogMTsgLy8gVXNlRGF0YUlDCisgICAgdW5zaWduZWQgbV90
eXBlIDogMTsgLy8gVHlwZQogI2lmIEVOQUJMRShKSVQpCiAgICAgR1BSUmVnIG1fY2FsbGVlR1BS
IHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyBtX2NhbGxMaW5rSW5mb0dQUiB7IEludmFs
aWRHUFJSZWcgfTsKICNlbmRpZgogICAgIHVpbnQzMl90IG1fc2xvd1BhdGhDb3VudCB7IDAgfTsK
IH07CiAKK2NsYXNzIEJhc2VsaW5lQ2FsbExpbmtJbmZvIGZpbmFsIDogcHVibGljIENhbGxMaW5r
SW5mbyB7CitwdWJsaWM6CisgICAgQmFzZWxpbmVDYWxsTGlua0luZm8oKQorICAgICAgICA6IENh
bGxMaW5rSW5mbyhUeXBlOjpCYXNlbGluZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBpbml0
aWFsaXplKFZNJiwgQ2FsbFR5cGUsIEJ5dGVjb2RlSW5kZXgsIENhbGxGcmFtZVNodWZmbGVEYXRh
Kik7CisKKyAgICB2b2lkIHNldENvZGVMb2NhdGlvbnMoQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4gZG9uZUxvY2F0aW9uKQorICAgIHsKKyAgICAgICAgbV9kb25lTG9jYXRpb24g
PSBkb25lTG9jYXRpb247CisgICAgfQorCisjaWYgRU5BQkxFKEpJVCkKKyAgICBHUFJSZWcgY2Fs
bGVlR1BSKCkgY29uc3QgeyByZXR1cm4gQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVHUFI7
IH0KKyAgICBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKCkgY29uc3QgeyByZXR1cm4gQmFzZWxpbmVD
YWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFI7IH0KKyAgICB2b2lkIHNldENhbGxMaW5rSW5m
b0dQUihHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSB7IFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5m
b0dQUiA9PSB0aGlzLT5jYWxsTGlua0luZm9HUFIoKSk7IH0KKyNlbmRpZgorfTsKKworY2xhc3Mg
T3B0aW1pemluZ0NhbGxMaW5rSW5mbyBmaW5hbCA6IHB1YmxpYyBDYWxsTGlua0luZm8geworcHVi
bGljOgorICAgIGZyaWVuZCBjbGFzcyBDYWxsTGlua0luZm87CisKKyAgICBPcHRpbWl6aW5nQ2Fs
bExpbmtJbmZvKENvZGVPcmlnaW4gY29kZU9yaWdpbikKKyAgICAgICAgOiBDYWxsTGlua0luZm8o
VHlwZTo6T3B0aW1pemluZywgY29kZU9yaWdpbikKKyAgICB7CisgICAgfQorCisjaWYgRU5BQkxF
KEpJVCkKKyAgICB2b2lkIHNldFVwQ2FsbChDYWxsVHlwZSBjYWxsVHlwZSwgR1BSUmVnIGNhbGxl
ZUdQUikKKyAgICB7CisgICAgICAgIG1fY2FsbFR5cGUgPSBjYWxsVHlwZTsKKyAgICAgICAgbV9j
YWxsZWVHUFIgPSBjYWxsZWVHUFI7CisgICAgfQorCisgICAgdm9pZCBzZXRDb2RlTG9jYXRpb25z
KAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFN0
YXJ0LAorICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lTG9j
YXRpb24pCisgICAgeworICAgICAgICBpZiAoIWlzRGF0YUlDKCkpCisgICAgICAgICAgICBtX3Ns
b3dQYXRoU3RhcnQgPSBzbG93UGF0aFN0YXJ0OworICAgICAgICBtX2RvbmVMb2NhdGlvbiA9IGRv
bmVMb2NhdGlvbjsKKyAgICB9CisKKyAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBmYXN0UGF0aFN0YXJ0KCk7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0
clRhZz4gc2xvd1BhdGhTdGFydCgpOworCisgICAgR1BSUmVnIGNhbGxlZUdQUigpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbGVlR1BSOyB9CisgICAgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUigpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbExpbmtJbmZvR1BSOyB9CisgICAgdm9pZCBzZXRDYWxsTGlua0luZm9H
UFIoR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikgeyBtX2NhbGxMaW5rSW5mb0dQUiA9IGNhbGxMaW5r
SW5mb0dQUjsgfQorCisgICAgdm9pZCBlbWl0RGlyZWN0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJik7
CisgICAgdm9pZCBlbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBTY29w
ZWRMYW1iZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JUYWlsQ2FsbCk7CisgICAgdm9pZCBpbml0aWFs
aXplRGlyZWN0Q2FsbCgpOworICAgIHZvaWQgc2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRp
b25MYWJlbDxKU0VudHJ5UHRyVGFnPik7CisgICAgdm9pZCBlbWl0U2xvd1BhdGgoVk0mLCBDQ2Fs
bEhlbHBlcnMmKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0RmFzdFBhdGgo
Q0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUiwg
VXNlRGF0YUlDKSBXQVJOX1VOVVNFRF9SRVRVUk47CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IGVtaXRUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIs
IFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKSBXQVJOX1VOVVNFRF9S
RVRVUk47CisjZW5kaWYKK3ByaXZhdGU6CisgICAgQ29kZUxvY2F0aW9uTmVhckNhbGw8SlNJbnRl
cm5hbFB0clRhZz4gbV9jYWxsTG9jYXRpb247CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4gbV9zbG93UGF0aFN0YXJ0OworICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50
ZXJuYWxQdHJUYWc+IG1fZmFzdFBhdGhTdGFydDsKK307CisKKyNpZiBFTkFCTEUoSklUKQoraW5s
aW5lIEdQUlJlZyBDYWxsTGlua0luZm86OmNhbGxlZUdQUigpIGNvbnN0Cit7CisgICAgc3dpdGNo
ICh0eXBlKCkpIHsKKyAgICBjYXNlIFR5cGU6OkJhc2VsaW5lOgorICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgQmFzZWxpbmVDYWxsTGlua0luZm8qPih0aGlzKS0+Y2FsbGVlR1BSKCk7
CisgICAgY2FzZSBUeXBlOjpPcHRpbWl6aW5nOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgT3B0aW1pemluZ0NhbGxMaW5rSW5mbyo+KHRoaXMpLT5jYWxsZWVHUFIoKTsKKyAgICB9
CisgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7Cit9CisKK2lubGluZSBHUFJSZWcgQ2FsbExpbmtJ
bmZvOjpjYWxsTGlua0luZm9HUFIoKSBjb25zdAoreworICAgIHN3aXRjaCAodHlwZSgpKSB7Cisg
ICAgY2FzZSBUeXBlOjpCYXNlbGluZToKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IEJhc2VsaW5lQ2FsbExpbmtJbmZvKj4odGhpcyktPmNhbGxMaW5rSW5mb0dQUigpOworICAgIGNh
c2UgVHlwZTo6T3B0aW1pemluZzoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE9w
dGltaXppbmdDYWxsTGlua0luZm8qPih0aGlzKS0+Y2FsbExpbmtJbmZvR1BSKCk7CisgICAgfQor
ICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworfQorCitpbmxpbmUgdm9pZCBDYWxsTGlua0luZm86
OnNldENhbGxMaW5rSW5mb0dQUihHUFJSZWcgY2FsbExpbmtJbmZvR1BSKQoreworICAgIHN3aXRj
aCAodHlwZSgpKSB7CisgICAgY2FzZSBUeXBlOjpCYXNlbGluZToKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEJhc2VsaW5lQ2FsbExpbmtJbmZvKj4odGhpcyktPnNldENhbGxMaW5rSW5mb0dQ
UihjYWxsTGlua0luZm9HUFIpOworICAgIGNhc2UgVHlwZTo6T3B0aW1pemluZzoKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPih0aGlzKS0+c2V0Q2Fs
bExpbmtJbmZvR1BSKGNhbGxMaW5rSW5mb0dQUik7CisgICAgfQorfQorI2VuZGlmCisKIGlubGlu
ZSBDb2RlT3JpZ2luIGdldENhbGxMaW5rSW5mb0NvZGVPcmlnaW4oQ2FsbExpbmtJbmZvJiBjYWxs
TGlua0luZm8pCiB7CiAgICAgcmV0dXJuIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRl
eCBkNTkwNGE4ZTkwYTJjZGE0NjkzNzFmODdlOTc3YmQyYzhkMzkzMTdiLi44OGJjZDM1MDM0YjBm
YTAwMTBkNWM1ZTI4ZmExZDcyODM2NTIzYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKQEAgLTMyNCw4ICszMjQsNyBAQCBDYWxs
TGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIGlmICgh
c3RhdHVzLmNhbGxMaW5rSW5mbykKICAgICAgICAgICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0
dXMoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJu
YWw6OnZlcmJvc2UpCi0gICAgICAgICAgICAgICAgZGF0YUxvZygiSGF2ZSBDYWxsTGlua0luZm8g
d2l0aCBDb2RlT3JpZ2luID0gIiwgc3RhdHVzLmNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCAi
XG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZl
cmJvc2UsICJIYXZlIENhbGxMaW5rSW5mbyB3aXRoIENvZGVPcmlnaW4gPSAiLCBjb2RlT3JpZ2lu
LCAiXG4iKTsKICAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdDsKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9w
dGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMTQxMGY0ZWY1ZjcyZDQ1ODhkZGJmMGU2NTkxMjNkMmUz
MmMyN2NiMS4uNTZmZmQ1MmY0ODhmMmMzNDI4NGZkNWY0YzFlYTRiZmZmZTI5MTNkMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ0NSwxMSAr
NDQ1LDExIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgaWYgY29uc3RleHByIChkZWNsdHlwZShieXRlY29kZSk6Om9wY29kZUlEID09IG9wX3RhaWxf
Y2FsbCkgewogICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGEgPSBD
YWxsRnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50VGFpbENhbGwoYnl0
ZWNvZGUsIG51bVBhcmFtZXRlcnMoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2NhbGxMaW5r
SW5mby5pbml0aWFsaXplRGF0YUlDKHZtLCBDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKGRlY2x0
eXBlKGJ5dGVjb2RlKTo6b3Bjb2RlSUQpLCBpbnN0cnVjdGlvbi5pbmRleCgpLCAmc2h1ZmZsZURh
dGEpOworICAgICAgICAgICAgbWV0YWRhdGEubV9jYWxsTGlua0luZm8uaW5pdGlhbGl6ZSh2bSwg
Q2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihkZWNsdHlwZShieXRlY29kZSk6Om9wY29kZUlEKSwg
aW5zdHJ1Y3Rpb24uaW5kZXgoKSwgJnNodWZmbGVEYXRhKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLmluaXRp
YWxpemVEYXRhSUModm0sIENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IoZGVjbHR5cGUoYnl0ZWNv
ZGUpOjpvcGNvZGVJRCksIGluc3RydWN0aW9uLmluZGV4KCksIG51bGxwdHIpOworICAgICAgICBt
ZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5pbml0aWFsaXplKHZtLCBDYWxsTGlua0luZm86OmNhbGxU
eXBlRm9yKGRlY2x0eXBlKGJ5dGVjb2RlKTo6b3Bjb2RlSUQpLCBpbnN0cnVjdGlvbi5pbmRleCgp
LCBudWxscHRyKTsKICAgICB9OwogCiAjZGVmaW5lIExJTktfRklFTEQoX19maWVsZCkgXApAQCAt
NzkyLDcgKzc5Miw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5l
Q29kZShSZWY8QmFzZWxpbmVKSVRDb2RlPiBqaXRDb2RlKQogICAgICAgICBmb3IgKGF1dG8mIHVu
bGlua2VkQ2FsbExpbmtJbmZvIDogaml0Q29kZS0+bV91bmxpbmtlZENhbGxzKSB7CiAgICAgICAg
ICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGdldENhbGxMaW5rSW5mb0ZvckJ5dGVj
b2RlSW5kZXgobG9ja2VyLCB1bmxpbmtlZENhbGxMaW5rSW5mby5ieXRlY29kZUluZGV4KTsKICAg
ICAgICAgICAgIEFTU0VSVChjYWxsTGlua0luZm8pOwotICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRDb2RlTG9jYXRpb25zKHsgfSwgdW5saW5rZWRDYWxsTGlua0luZm8uZG9uZUxvY2F0aW9u
KTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEJhc2VsaW5lQ2FsbExpbmtJbmZvKj4oY2FsbExp
bmtJbmZvKS0+c2V0Q29kZUxvY2F0aW9ucyh1bmxpbmtlZENhbGxMaW5rSW5mby5kb25lTG9jYXRp
b24pOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqaXRDb2Rl
LT5tX2NvbnN0YW50UG9vbC5zaXplKCk7ICsraSkgewpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJiB2bSkKICAgICBpZiAoSklU
Q29kZTo6Y291bGRCZUludGVycHJldGVkKGppdFR5cGUoKSkpIHsKICAgICAgICAgZmluYWxpemVM
TEludElubGluZUNhY2hlcygpOwogICAgICAgICAvLyBJZiB0aGUgQ29kZUJsb2NrIGlzIERGRyBv
ciBGVEwsIENhbGxMaW5rSW5mbyBpbiBtZXRhZGF0YSBpcyBub3QgcmVsYXRlZC4KLSAgICAgICAg
Zm9yRWFjaExMSW50T3JCYXNlbGluZUNhbGxMaW5rSW5mbyhbJl0oQ2FsbExpbmtJbmZvJiBjYWxs
TGlua0luZm8pIHsKKyAgICAgICAgZm9yRWFjaExMSW50T3JCYXNlbGluZUNhbGxMaW5rSW5mbyhb
Jl0oQmFzZWxpbmVDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykgewogICAgICAgICAgICAgY2Fs
bExpbmtJbmZvLnZpc2l0V2Vhayh2bSk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTE2OTMsNyAr
MTY5Myw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHZvaWQgQ29k
ZUJsb2NrOjpnZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1
c01hcCYgcmVzdWx0KQogewogICAgIGlmIChKSVRDb2RlOjpjb3VsZEJlSW50ZXJwcmV0ZWQoaml0
VHlwZSgpKSkgewotICAgICAgICBmb3JFYWNoTExJbnRPckJhc2VsaW5lQ2FsbExpbmtJbmZvKFsm
XShDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykgeworICAgICAgICBmb3JFYWNoTExJbnRPckJh
c2VsaW5lQ2FsbExpbmtJbmZvKFsmXShCYXNlbGluZUNhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZv
KSB7CiAgICAgICAgICAgICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCksIElD
U3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5jYWxsTGlua0luZm8gPSAmY2FsbExpbmtJbmZvOwog
ICAgICAgICB9KTsKICAgICB9CkBAIC0yMzI0LDcgKzIzMjQsNyBAQCB2b2lkIENvZGVCbG9jazo6
amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uUmVhc29uIHJlYXNvbiwgUmVvcHRpbWl6YXRpb25N
b2RlIG1vZAogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2xlYXJlZEJ5SmV0dGlz
b24oKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZm9yRWFjaExMSW50
T3JCYXNlbGluZUNhbGxMaW5rSW5mbyhbJl0oQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pIHsK
KyAgICAgICAgICAgIGZvckVhY2hMTEludE9yQmFzZWxpbmVDYWxsTGlua0luZm8oWyZdKEJhc2Vs
aW5lQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pIHsKICAgICAgICAgICAgICAgICBjYWxsTGlu
a0luZm8uc2V0Q2xlYXJlZEJ5SmV0dGlzb24oKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRl
ckFjY2Vzc0Nhc2UuaAppbmRleCA4NDVmZGJlNjYzMDY5YjRmOGY2YzRlMTRlZDI5YTczZDNmNzZj
NDc2Li45NjU3YmYyNjA0M2QzOWUyZjA4YjgxMjAxNDk2MjZkYTQ5ZjI1ZDc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5h
bCA6IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsKICAgICAvLyBQb2x5bW9ycGhpY0FjY2Vz
cyBjYW4gYmUgZGVzdHJveWVkIHdoaWxlIEdDQXdhcmVKSVRTdHViUm91dGluZSBpcyBhbGl2ZSBp
ZiB3ZSBhcmUgZGVzdHJveWluZyBQb2x5bW9ycGhpY0FjY2VzcwogICAgIC8vIHdoaWxlIHdlIGFy
ZSBleGVjdXRpbmcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lLiBJdCBpcyBub3QgcG9zc2libGUgdGhh
dCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlIGlzIGFsaXZlIHdoaWxlCiAgICAgLy8gR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lIGlzIGRlc3Ryb3llZC4KLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
bygpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbExpbmtJbmZvOyB9CisgICAgT3B0aW1pemluZ0NhbGxM
aW5rSW5mbyogY2FsbExpbmtJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsTGlua0luZm87IH0K
ICAgICBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVNs
b3RCYXNlLmdldCgpOyB9CiAgICAgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9u
PiBkb21BdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX2RvbUF0dHJpYnV0ZTsgfQogCkBAIC03
NSw3ICs3NSw3IEBAIGNsYXNzIEdldHRlclNldHRlckFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMg
UHJveHlhYmxlQWNjZXNzQ2FzZSB7CiAgICAgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShjb25zdCBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlJik7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1f
Y3VzdG9tU2xvdEJhc2U7Ci0gICAgQ2FsbExpbmtJbmZvKiBtX2NhbGxMaW5rSW5mbyB7IG51bGxw
dHIgfTsKKyAgICBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKiBtX2NhbGxMaW5rSW5mbyB7IG51bGxw
dHIgfTsKICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gbV9jdXN0b21BY2Nl
c3NvcjsKICAgICBzdGQ6Om9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IG1fZG9tQXR0
cmlidXRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmgKaW5kZXggZDA0MmQxYTRmZTI5ZDAzYTAwM2M4MGM1MWY3MTZkOTYzZThm
OTY5My4uNjE3YWYwMGYyMjM4NDEzZDk3NDU1OWM0ZWNkNzBmNDc3ODVkMDA0OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKQEAg
LTIyNCw3ICsyMjQsNyBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICBFQ01B
TW9kZSBtX2VjbWFNb2RlIHsgRUNNQU1vZGU6OnNsb3BweSgpIH07CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4gd2F0Y2hwb2ludHM7CiAgICAgVmVj
dG9yPFN0cnVjdHVyZUlEPiB3ZWFrU3RydWN0dXJlczsKLSAgICBCYWc8Q2FsbExpbmtJbmZvPiBt
X2NhbGxMaW5rSW5mb3M7CisgICAgQmFnPE9wdGltaXppbmdDYWxsTGlua0luZm8+IG1fY2FsbExp
bmtJbmZvczsKICAgICBib29sIG1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMgOiAxOwogICAgIGJv
b2wgbV9kb2VzQ2FsbHMgOiAxOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVw
YXRjaC5jcHAKaW5kZXggMDJkZDdmNTA1NWZkN2I2MmI4NzUzMDJmODliMTFjZWNlNjY5Yjc5Yy4u
MjM0MWMwM2JiMWZkOTg2YTU5Mjc0ZmIyOTQzYWFhNTVjMDJiNGIwYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHN0YXRp
YyB2b2lkIHJldmVydENhbGwoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgY2FsbExpbmtJbmZv
LmNsZWFyQ29kZUJsb2NrKCk7CiAgICAgICAgIGlmICghY2FsbExpbmtJbmZvLmNsZWFyZWRCeUpl
dHRpc29uKCkpCi0gICAgICAgICAgICBjYWxsTGlua0luZm8uaW5pdGlhbGl6ZURpcmVjdENhbGwo
KTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8mPihjYWxs
TGlua0luZm8pLmluaXRpYWxpemVEaXJlY3RDYWxsKCk7CiAjZW5kaWYKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoIWNhbGxMaW5rSW5mby5jbGVhcmVkQnlKZXR0aXNvbigpKSB7CkBAIC0xNTUw
LDcgKzE1NTAsNyBAQCB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKAogfQogCiB2b2lkIGxpbmtEaXJl
Y3RDYWxsKAotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWxsTGlua0luZm8mIGNhbGxMaW5r
SW5mbywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssCisgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIE9wdGltaXppbmdDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgQ29kZUJsb2NrKiBjYWxs
ZWVDb2RlQmxvY2ssCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNv
ZGVQdHIpCiB7CiAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uc3R1YigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCmluZGV4IDIwYTU2MTgwOGI3YzM0Nzc5ZDQ0MWYz
OWNkNDIxNGQzOTA4N2NiZjcuLmRmODU3OGM4NmExMDE0YmFlYjlhZmZhYTQ1ZDRiMTMwY2Y5YWY0
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guaApAQCAtMzIsNiAr
MzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENhbGxMaW5rSW5mbzsKK2NsYXNzIE9w
dGltaXppbmdDYWxsTGlua0luZm87CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51bSBj
bGFzcyBHZXRCeUtpbmQgewpAQCAtNzEsNyArNzIsNyBAQCB2b2lkIHJlcGF0Y2hDaGVja1ByaXZh
dGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxl
SQogdm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2Nr
KiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVC
bG9jayosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJv
b2wgd2FzRm91bmQpOwogdm9pZCBsaW5rTW9ub21vcnBoaWNDYWxsKFZNJiwgQ2FsbEZyYW1lKiwg
Q2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKLXZvaWQgbGlua0RpcmVjdENhbGwoQ2FsbEZyYW1l
KiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50
cnlQdHJUYWc+KTsKK3ZvaWQgbGlua0RpcmVjdENhbGwoQ2FsbEZyYW1lKiwgT3B0aW1pemluZ0Nh
bGxMaW5rSW5mbyYsIENvZGVCbG9jayosIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPik7CiB2b2lkIGxpbmtTbG93Rm9yKENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYpOwogdm9p
ZCB1bmxpbmtDYWxsKFZNJiwgQ2FsbExpbmtJbmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0Nh
bGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCmluZGV4IDQ2MTMx
N2JkODA4YTkxMzBjZDk1YjY0YjkzZTUzYTMzZGFmOTNmNzAuLjBkYjRhZmZhZTc4NTUwOWZlMTI3
NzJiNWM4Nzc0ZGU4ZDg1M2FkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29tbW9uRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
bW9uRGF0YS5oCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgQ29tbW9uRGF0YSA6IHB1YmxpYyBN
YXRoSUNIb2xkZXIgewogICAgIAogICAgIHZvaWQgY2xlYXJXYXRjaHBvaW50cygpOwogCi0gICAg
Q2FsbExpbmtJbmZvKiBhZGRDYWxsTGlua0luZm8oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQorICAg
IE9wdGltaXppbmdDYWxsTGlua0luZm8qIGFkZENhbGxMaW5rSW5mbyhDb2RlT3JpZ2luIGNvZGVP
cmlnaW4pCiAgICAgewogICAgICAgICByZXR1cm4gbV9jYWxsTGlua0luZm9zLmFkZChjb2RlT3Jp
Z2luKTsKICAgICB9CkBAIC0xMzEsNyArMTMxLDcgQEAgY2xhc3MgQ29tbW9uRGF0YSA6IHB1Ymxp
YyBNYXRoSUNIb2xkZXIgewogICAgIFJlY29yZGVkU3RhdHVzZXMgcmVjb3JkZWRTdGF0dXNlczsK
ICAgICBWZWN0b3I8SnVtcFJlcGxhY2VtZW50PiBtX2p1bXBSZXBsYWNlbWVudHM7CiAgICAgQmFn
PFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0dWJJbmZvczsKLSAgICBCYWc8Q2FsbExpbmtJbmZvPiBt
X2NhbGxMaW5rSW5mb3M7CisgICAgQmFnPE9wdGltaXppbmdDYWxsTGlua0luZm8+IG1fY2FsbExp
bmtJbmZvczsKICAgICBZYXJyOjpZYXJyQm95ZXJNb3llckRhdGEgbV9ib3llck1vb3JlRGF0YTsK
ICAgICAKICAgICBTY3JhdGNoQnVmZmVyKiBjYXRjaE9TUkVudHJ5QnVmZmVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBhZTM4ZjZmN2QyNWU1
MDhjOTBiMjU4YTkwZjM3MzNkMjUyMGY4MDIzLi5lYjIwY2U2NDVhZjBiYjU4NDU1ZjY4MDNlOGQ0
NzI0YTc0YTcxZjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcApAQCAtMjYwLDE0ICsyNjAsMTQgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHJpdmF0ZUJy
YW5kQWNjZXNzZXMsIGxpbmtCdWZmZXIpOwogCiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2pz
Q2FsbHMpIHsKLSAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKnJlY29yZC5pbmZvOworICAg
ICAgICBhdXRvJiBpbmZvID0gKnJlY29yZC5pbmZvOwogICAgICAgICBpbmZvLnNldENvZGVMb2Nh
dGlvbnMoCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRh
Zz4ocmVjb3JkLnNsb3dQYXRoU3RhcnQpLAogICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlv
bk9mPEpTSW50ZXJuYWxQdHJUYWc+KHJlY29yZC5kb25lTG9jYXRpb24pKTsKICAgICB9CiAgICAg
CiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2pzRGlyZWN0Q2FsbHMpIHsKLSAgICAgICAgQ2Fs
bExpbmtJbmZvJiBpbmZvID0gKnJlY29yZC5pbmZvOworICAgICAgICBhdXRvJiBpbmZvID0gKnJl
Y29yZC5pbmZvOwogICAgICAgICBpbmZvLnNldENvZGVMb2NhdGlvbnMoCiAgICAgICAgICAgICBs
aW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocmVjb3JkLnNsb3dQYXRoKSwK
ICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDQ4M2Y5NmY4YTQ0
ZTc0YjY0MzBjOGNmZWY0OWJlMTRiZDVjNjQxZTEuLmU5NDJiZTJiZjcyZWNlZDQwYTUxM2EyZGI4
ZDA4NDA0YmMzOTRkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmgKQEAgLTIzNCwxMiArMjM0LDEyIEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIEND
YWxsSGVscGVycyB7CiAgICAgICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKElubGlu
ZUNhY2hlV3JhcHBlcjxKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+KGdlbiwgc2xvd1Bh
dGgpKTsKICAgICB9CiAKLSAgICB2b2lkIGFkZEpTQ2FsbChMYWJlbCBzbG93UGF0aFN0YXJ0LCBM
YWJlbCBkb25lTG9jYXRpb24sIENhbGxMaW5rSW5mbyogaW5mbykKKyAgICB2b2lkIGFkZEpTQ2Fs
bChMYWJlbCBzbG93UGF0aFN0YXJ0LCBMYWJlbCBkb25lTG9jYXRpb24sIE9wdGltaXppbmdDYWxs
TGlua0luZm8qIGluZm8pCiAgICAgewogICAgICAgICBtX2pzQ2FsbHMuYXBwZW5kKEpTQ2FsbFJl
Y29yZChzbG93UGF0aFN0YXJ0LCBkb25lTG9jYXRpb24sIGluZm8pKTsKICAgICB9CiAgICAgCi0g
ICAgdm9pZCBhZGRKU0RpcmVjdENhbGwoTGFiZWwgc2xvd1BhdGgsIENhbGxMaW5rSW5mbyogaW5m
bykKKyAgICB2b2lkIGFkZEpTRGlyZWN0Q2FsbChMYWJlbCBzbG93UGF0aCwgT3B0aW1pemluZ0Nh
bGxMaW5rSW5mbyogaW5mbykKICAgICB7CiAgICAgICAgIG1fanNEaXJlY3RDYWxscy5hcHBlbmQo
SlNEaXJlY3RDYWxsUmVjb3JkKHNsb3dQYXRoLCBpbmZvKSk7CiAgICAgfQpAQCAtMzM4LDcgKzMz
OCw3IEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7CiAKIAogICAg
IHN0cnVjdCBKU0NhbGxSZWNvcmQgewotICAgICAgICBKU0NhbGxSZWNvcmQoTGFiZWwgc2xvd1Bh
dGhTdGFydCwgTGFiZWwgZG9uZUxvY2F0aW9uLCBDYWxsTGlua0luZm8qIGluZm8pCisgICAgICAg
IEpTQ2FsbFJlY29yZChMYWJlbCBzbG93UGF0aFN0YXJ0LCBMYWJlbCBkb25lTG9jYXRpb24sIE9w
dGltaXppbmdDYWxsTGlua0luZm8qIGluZm8pCiAgICAgICAgICAgICA6IHNsb3dQYXRoU3RhcnQo
c2xvd1BhdGhTdGFydCkKICAgICAgICAgICAgICwgZG9uZUxvY2F0aW9uKGRvbmVMb2NhdGlvbikK
ICAgICAgICAgICAgICwgaW5mbyhpbmZvKQpAQCAtMzQ3LDE4ICszNDcsMTggQEAgY2xhc3MgSklU
Q29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAgCiAgICAgICAgIExhYmVs
IHNsb3dQYXRoU3RhcnQ7CiAgICAgICAgIExhYmVsIGRvbmVMb2NhdGlvbjsKLSAgICAgICAgQ2Fs
bExpbmtJbmZvKiBpbmZvOworICAgICAgICBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKiBpbmZvOwog
ICAgIH07CiAgICAgCiAgICAgc3RydWN0IEpTRGlyZWN0Q2FsbFJlY29yZCB7Ci0gICAgICAgIEpT
RGlyZWN0Q2FsbFJlY29yZChMYWJlbCBzbG93UGF0aCwgQ2FsbExpbmtJbmZvKiBpbmZvKQorICAg
ICAgICBKU0RpcmVjdENhbGxSZWNvcmQoTGFiZWwgc2xvd1BhdGgsIE9wdGltaXppbmdDYWxsTGlu
a0luZm8qIGluZm8pCiAgICAgICAgICAgICA6IHNsb3dQYXRoKHNsb3dQYXRoKQogICAgICAgICAg
ICAgLCBpbmZvKGluZm8pCiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
TGFiZWwgc2xvd1BhdGg7Ci0gICAgICAgIENhbGxMaW5rSW5mbyogaW5mbzsKKyAgICAgICAgT3B0
aW1pemluZ0NhbGxMaW5rSW5mbyogaW5mbzsKICAgICB9OwogICAgIAogICAgIFZlY3RvcjxJbmxp
bmVDYWNoZVdyYXBwZXI8SklUR2V0QnlJZEdlbmVyYXRvcj4sIDQ+IG1fZ2V0QnlJZHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAxM2Y5MzI0MTc1
YmI4ZWU1YmY4N2JlNTNjZTA4Yjk4NTY3NmRhMDk1Li40MWY0YmQzMWY4MTM0NTI0ZWZjYTY2YmFj
ZjRkMDg1ZjUyY2FiMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTM2NzksNyArMzY3OSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAg
ICAgc2NvcGUudGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBjcmVhdGVFcnJvcihnbG9iYWxP
YmplY3QsIHN0YXRpY19jYXN0PEVycm9yVHlwZVdpdGhFeHRlbnNpb24+KGVycm9yVHlwZSksIGVy
cm9yTWVzc2FnZSkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlu
a0RpcmVjdENhbGwsIHZvaWQsIChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbywgSlNGdW5jdGlv
biogY2FsbGVlKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25MaW5rRGlyZWN0
Q2FsbCwgdm9pZCwgKE9wdGltaXppbmdDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbywgSlNGdW5j
dGlvbiogY2FsbGVlKSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2Fs
bGVlLT5nbG9iYWxPYmplY3QoKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IGJiZWI2YzdiZGU3
ZTVjZjcxZGM2M2RlMmEyMDgxYjE5YThmZGE3Y2UuLmI1ZWQ4ZWM1NWFhNWNhMmM0Nzk4OWQxMzY3
YWI1ZDRjYmIwZDA2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBEYXRlSW5zdGFu
Y2U7CiBjbGFzcyBKU0JpZ0ludDsKK2NsYXNzIE9wdGltaXppbmdDYWxsTGlua0luZm87CiBzdHJ1
Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU7CiBjbGFzcyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3I7CiAKQEAgLTMxNCw3ICszMTUsNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1Jhd09iamVjdCwgY2hhciosIChWTSosIFN0cnVjdHVyZSosIGludDMyXwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBKU0Nl
bGwqLCAoVk0qLCBTdHJ1Y3R1cmUqLCBCdXR0ZXJmbHkqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJB
bmRWZWN0b3JMZW5ndGgsIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0
aCwgQnV0dGVyZmx5KikpOwogCi1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkxp
bmtEaXJlY3RDYWxsLCB2b2lkLCAoQ2FsbExpbmtJbmZvKiwgSlNGdW5jdGlvbiopKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwsIHZvaWQsIChPcHRp
bWl6aW5nQ2FsbExpbmtJbmZvKiwgSlNGdW5jdGlvbiopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25EYXRlR2V0RnVsbFllYXIsIEVuY29kZWRKU1ZhbHVlLCAoVk0qLCBE
YXRlSW5zdGFuY2UqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRhdGVH
ZXRVVENGdWxsWWVhciwgRW5jb2RlZEpTVmFsdWUsIChWTSosIERhdGVJbnN0YW5jZSopKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IGU2MWY4OTRiZTEwOGNjYmZhMTJkYjIwODkyOWVjZGUyYzNkZjBmMjQuLjI5NjQz
NzFlYTI4YzA2Y2I0M2RkODNhNGQzODEzNjY5YWZhODMyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNzg2LDcg
Kzc4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGlzRW11bGF0ZWRUYWlsID8gKnN0YXRpY0lubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVyU2tp
cHBpbmdUYWlsQ2FsbHMoKSA6IHN0YXRpY09yaWdpbjsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NS
RXhpdElmTmVlZGVkKGR5bmFtaWNPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIAotICAg
IENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmppdENvZGUoKS0+Y29tbW9uLmFkZENhbGxMaW5r
SW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIGF1dG8qIGluZm8gPSBtX2ppdC5qaXRD
b2RlKCktPmNvbW1vbi5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICBpbmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIGNhbGxlZVBheWxvYWRHUFIpOwogICAgIAogICAg
IGF1dG8gc2V0UmVzdWx0QW5kUmVzZXRTdGFjayA9IFsmXSAoKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBhNzYyYjI5Zjdj
MDQ4YWM1NjA4NjJkYzNiZGQzNGRmMGQzZjRkM2Y4Li4xOWRlZDM1NDgwMzUwMjMyMjlhMGM3NTk1
OWQ2MGUxMjE4Zjk4OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTg5MCw3ICs4OTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZElt
bTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIp
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CiAgICAgfTsKICAgICAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9
IG1faml0LmppdENvZGUoKS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhtX2N1cnJlbnROb2RlLT5v
cmlnaW4uc2VtYW50aWMpOworICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IG1faml0LmppdENvZGUo
KS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBjYWxsZWVHUFIpOwogCiAg
ICAgaWYgKG5vZGUtPm9wKCkgPT0gQ2FsbEV2YWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAwMGVkYTU2YTgzNTgxYWVlZTAyNGMxZmYy
NTNmMGMyMGE2ZDNkNDQ4Li5mODNlNWZiYTYzYjhhZWVjNGFjMGRkMTM4NjY1MzIxNTA1NTMxMGI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC0xMDI2Myw3ICsxMDI2Myw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRz
KCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVn
aXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAKLSAg
ICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2Rl
LT5jb21tb24uYWRkQ2FsbExpbmtJbmZvKG5vZGVTZW1hbnRpY09yaWdpbik7CisgICAgICAgICAg
ICAgICAgYXV0byogY2FsbExpbmtJbmZvID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDYWxs
TGlua0luZm8obm9kZVNlbWFudGljT3JpZ2luKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8tPnNldFVwQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgbm9kZU9wID09IENvbnN0cnVjdCA/
IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpDYWxsLCBHUFJJbmZvOjpy
ZWdUMCk7CiAKQEAgLTEwMzk3LDcgKzEwMzk3LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VO
RAogICAgICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5udW1QYXJhbWV0ZXJzID0gaml0LmNv
ZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7CiAgICAgICAgICAgICAgICAgICAgIHNodWZmbGVE
YXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhqaXQuY29kZUJsb2NrKCkpOwogICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05vZGVP
cmlnaW4pOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBjYWxsTGlua0luZm8gPSBzdGF0ZS0+
aml0Q29kZS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05vZGVPcmlnaW4pOwogICAg
ICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkRp
cmVjdFRhaWxDYWxsLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgbWFpblBhdGggPSBqaXQubGFiZWwo
KTsKQEAgLTEwNDI5LDcgKzEwNDI5LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gc3RhdGUt
PmppdENvZGUtPmNvbW1vbi5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKKyAg
ICAgICAgICAgICAgICBhdXRvKiBjYWxsTGlua0luZm8gPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9u
LmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05vZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgIGNh
bGxMaW5rSW5mby0+c2V0VXBDYWxsKAogICAgICAgICAgICAgICAgICAgICBpc0NvbnN0cnVjdCA/
IENhbGxMaW5rSW5mbzo6RGlyZWN0Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpEaXJlY3RDYWxs
LCBJbnZhbGlkR1BSUmVnKTsKIApAQCAtMTA1NTcsNyArMTA1NTcsNyBAQCBJR05PUkVfQ0xBTkdf
V0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc2h1ZmZsZURh
dGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKGppdC5jb2RlQmxvY2soKSk7CiAKLSAgICAgICAg
ICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5jb21t
b24uYWRkQ2FsbExpbmtJbmZvKGNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgIGF1dG8qIGNh
bGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkQ2FsbExpbmtJbmZvKGNvZGVP
cmlnaW4pOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5r
SW5mbzo6VGFpbENhbGwsIEdQUkluZm86OnJlZ1QwKTsKIAogICAgICAgICAgICAgICAgIGF1dG8g
c2xvd1BhdGggPSBjYWxsTGlua0luZm8tPmVtaXRUYWlsQ2FsbEZhc3RQYXRoKGppdCwgR1BSSW5m
bzo6cmVnVDAsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXXsKQEAgLTEwNzYyLDcgKzEwNzYyLDcg
QEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAotICAgICAgICAgICAgICAgIENhbGxM
aW5rSW5mbyogY2FsbExpbmtJbmZvID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDYWxsTGlu
a0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICBhdXRvKiBjYWxsTGlu
a0luZm8gPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05v
ZGVPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9
IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0
ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOwpA
QCAtMTEwNDYsNyArMTEwNDYsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0
cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogCi0g
ICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBzdGF0ZS0+aml0Q29k
ZS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05vZGVPcmlnaW4pOworICAgICAgICAg
ICAgICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkQ2Fs
bExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBhcmdJbmRleCA9IDE7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHBhcmFt
c1thcmdJbmRleCsrXS5ncHIoKTsKQEAgLTExMjg4LDcgKzExMjg4LDcgQEAgSUdOT1JFX0NMQU5H
X1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykpKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkQ2FsbExp
bmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgYXV0byogY2FsbExp
bmtJbmZvID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNO
b2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxs
TGlua0luZm86OkNhbGwsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1zdGF0aWNf
Y2FzdDxwdHJkaWZmX3Q+KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpLCBDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCmluZGV4IDUwMmY5YTA3
MjFkZjFlMzEwNzhmNjk5YTNjZWVkZjUyOTc4OTIxYjkuLjNkZDZlMGNiMWJmNTc3YjkzNDM0MGI0
MTE3YTY1NThhOTEyOTUxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCkBAIC04NSwxMSArODUsNiBAQCB2b2lkIENhbGxGcmFt
ZVNodWZmbGVEYXRhOjpzZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoY29uc3QgUmVnaXN0ZXJBdE9m
ZnNldExpc3QqCiAKIENhbGxGcmFtZVNodWZmbGVEYXRhIENhbGxGcmFtZVNodWZmbGVEYXRhOjpj
cmVhdGVGb3JCYXNlbGluZU9yTExJbnRUYWlsQ2FsbChjb25zdCBPcFRhaWxDYWxsJiBieXRlY29k
ZSwgdW5zaWduZWQgbnVtUGFyYW1ldGVycykKIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBjYWxsZWVKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgY2FsbGVlSlNSIHsg
R1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci0jZW5kaWYKICAgICBDYWxsRnJhbWVT
aHVmZmxlRGF0YSBzaHVmZmxlRGF0YTsKICAgICBzaHVmZmxlRGF0YS5udW1QYXNzZWRBcmdzID0g
Ynl0ZWNvZGUubV9hcmdjOwogICAgIHNodWZmbGVEYXRhLm51bVBhcmFtZXRlcnMgPSBudW1QYXJh
bWV0ZXJzOwpAQCAtMTA1LDkgKzEwMCw5IEBAIENhbGxGcmFtZVNodWZmbGVEYXRhIENhbGxGcmFt
ZVNodWZmbGVEYXRhOjpjcmVhdGVGb3JCYXNlbGluZU9yTExJbnRUYWlsQ2FsbChjb25zCiAgICAg
ICAgICAgICAgICAgRGF0YUZvcm1hdEpTKTsKICAgICB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQUihjYWxsZWVKU1IucGF5
bG9hZEdQUigpLCBEYXRhRm9ybWF0SlMpOworICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVl
UmVjb3Zlcnk6OmluR1BSKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRH
UFIoKSwgRGF0YUZvcm1hdEpTKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc2h1ZmZs
ZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5QYWlyKGNhbGxlZUpTUi50YWdHUFIoKSwg
Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSk7CisgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVS
ZWNvdmVyeTo6aW5QYWlyKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnRhZ0dQUigp
LCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCkpOwogI2VuZGlm
CiAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKCZSZWdpc3RlckF0T2Zm
c2V0TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgc2h1ZmZs
ZURhdGEuc2hyaW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAppbmRleCBmMDMzMjFjNTRkOTY2MDNlNWZjZjI5NzRl
MTNlMDk5MDBlY2ViYzMzLi45ZjMyZjI3YjljYmJjYjg0MTU2YzAzMGQ1MzVkMjQ3ZjAxZmVlODQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91
dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJv
dXRpbmUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdW5zaWduZWQgUG9seW1vcnBoaWNBY2Nlc3NK
SVRTdHViUm91dGluZTo6Y29tcHV0ZUhhc2goY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEEKIAog
TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGlu
ZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBjYXNlcywg
Rml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1N0cnVjdHVyZXMsIGNvbnN0IEpTQ2VsbCog
b3duZXIsCi0gICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5m
bz4mJiBjYWxsTGlua0luZm9zKQorICAgIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJh
ZzxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MpCiAgICAgOiBQb2x5bW9y
cGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGNhc2VzKSwgV1RGTW92
ZSh3ZWFrU3RydWN0dXJlcykpCiAgICAgLCBtX2NlbGxzKGNlbGxzLnNpemUoKSkKICAgICAsIG1f
Y2FsbExpbmtJbmZvcyhXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQpAQCAtMTM1LDcgKzEzNSw3IEBA
IHZvaWQgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0lu
dGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpCiB9CiAKIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxl
cigKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBjYXNlcywg
Rml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1N0cnVjdHVyZXMsIGNvbnN0IEpTQ2VsbCog
b3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+JiYg
Y2FsbExpbmtJbmZvcywKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJv
dXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
Pj4mJiBjYXNlcywgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1N0cnVjdHVyZXMsIGNv
bnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxPcHRp
bWl6aW5nQ2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0
aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpCiAgICAgOiBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0
aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGNhc2VzKSwgV1RGTW92ZSh3ZWFrU3RydWN0dXJlcyksIG93
bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkKICAgICAsIG1fY29kZUJsb2NrV2l0
aEV4Y2VwdGlvbkhhbmRsZXIoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpCkBAIC0xODks
NyArMTg5LDcgQEAgUmVmPFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU+IGNyZWF0ZUlD
SklUU3R1YlJvdXRpbmUoCiAgICAgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICBib29sIG1ha2Vz
Q2FsbHMsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywKLSAgICBCYWc8Q2FsbExp
bmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCisgICAgQmFnPE9wdGltaXppbmdDYWxsTGlua0luZm8+
JiYgY2FsbExpbmtJbmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhh
bmRsZXJzLAogICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJDYWxs
U2l0ZUluZGV4KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3
YXJlSklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmgKaW5kZXggM2E2N2RmYmM1ODZmYjdhNWNkZWZmMjE1Zjg0NDY4OGEyMGNi
OWU2YS4uNTQ4MmY0OWJlMzZkYmYyOGE1MTBjNjQwZDAyZGRjMTk3ZjYxN2IxOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCkBAIC00
Miw2ICs0Miw3IEBAIGNsYXNzIENvZGVPcmlnaW5Qb29sOwogY2xhc3MgQWNjZXNzQ2FzZTsKIGNs
YXNzIENhbGxMaW5rSW5mbzsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OworY2xhc3MgT3B0aW1p
emluZ0NhbGxMaW5rSW5mbzsKIAogLy8gVXNlIHRoaXMgc3R1YiByb3V0aW5lIGlmIHlvdSBrbm93
IHRoYXQgeW91ciBjb2RlIG1pZ2h0IGJlIG9uIHN0YWNrIHdoZW4KIC8vIGVpdGhlciBHQyBvciBv
dGhlciBraW5kcyBvZiBzdHViIGRlbGV0aW9uIGhhcHBlbi4gQmFzaWNhbHksIGlmIHlvdXIgc3R1
YgpAQCAtMTI0LDcgKzEyNSw3IEBAIGNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUg
OiBwdWJsaWMgUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZSB7CiAgICAgdXNpbmcgQmFz
ZSA9IFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU7CiAKICAgICBNYXJraW5nR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lKAotICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+
JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25z
dCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmKTsKKyAgICAgICAgY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiwg
Y29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPE9wdGltaXpp
bmdDYWxsTGlua0luZm8+JiYpOwogICAgIH5NYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkg
b3ZlcnJpZGU7CiAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0xMzQsNyArMTM1LDcgQEAgY2xhc3MgTWFy
a2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0
dWJSb3V0aW5lIHsKIAogcHJpdmF0ZToKICAgICBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8SlND
ZWxsPj4gbV9jZWxsczsKLSAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7Cisg
ICAgQmFnPE9wdGltaXppbmdDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKIH07CiAKIApA
QCAtMTQ1LDcgKzE0Niw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRp
b25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZSA9IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU7CiAKLSAgICBHQ0F3YXJl
SklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNj
ZXNzQ2FzZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmLCBjb25zdCBKU0NlbGwqIG93
bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBDb2RlQmxv
Y2sqLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk7CisgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5l
V2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmLCBG
aXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVj
dG9yPEpTQ2VsbCo+JiwgQmFnPE9wdGltaXppbmdDYWxsTGlua0luZm8+JiYsIENvZGVCbG9jayos
IERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKICAgICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXIoKSBmaW5hbDsKIAogICAgIHZvaWQgYWJvdXRUb0RpZSgpIGZpbmFs
OwpAQCAtMTgxLDcgKzE4Miw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNl
cHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiAKIFJlZjxQb2x5
bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lPiBjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKAogICAg
IGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBGaXhl
ZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYgY2FzZXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVy
ZUlEPiYmIHdlYWtTdHJ1Y3R1cmVzLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFr
ZXNDYWxscywKLSAgICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYm
IGNhbGxMaW5rSW5mb3MsCisgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPE9wdGltaXpp
bmdDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
a0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBleGNlcHRpb25I
YW5kbGluZ0NhbGxTaXRlSW5kZXgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IDI0NGIzZmViNjliNGEwZjQ5ZjBiYzQzZDFlNGFi
NDQ5YTMyZTZiOTcuLmVlM2NjNDc4ZmY0N2ZhZGE3MWVjOWRjMThmYWQxZDM0NTU0NTY5YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNDIsMTAgKzQyLDYgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLW5hbWVzcGFjZSB7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IGNhbGxlZUpTUiA9IEpTUkluZm86OmpzUmVnVDEwOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9y
ZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUpTUiwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKQEAg
LTIwMCwxMSArMTk2LDExIEBAIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzCiAKICAgICBhZGRQdHIo
VHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CiAKLSAgICBsb2FkVmFsdWUoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9m
KFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAtIHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKSksIGNhbGxlZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoQmFzZWxpbmVD
YWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJ
bmZvR1BSLCByZWdUMykpOworICAgIGxvYWRWYWx1ZShBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlIC0gc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IpOwogICAg
IGxvYWRHbG9iYWxPYmplY3QocmVnVDMpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbExpbmtJ
bmZvR1BSID0gcmVnVDI7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVj
b2RlLCBPcENhbGxFdmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgY2FsbExp
bmtJbmZvR1BSKTsKLSAgICBlbWl0VmlydHVhbENhbGxXaXRob3V0TW92aW5nR2xvYmFsT2JqZWN0
KCptX3ZtLCBjYWxsTGlua0luZm9HUFIsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICBtYXRlcmlh
bGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wQ2FsbEV2YWw6Ok1ldGFkYXRhOjpv
ZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5m
b0dQUik7CisgICAgZW1pdFZpcnR1YWxDYWxsV2l0aG91dE1vdmluZ0dsb2JhbE9iamVjdCgqbV92
bSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIENhbGxNb2RlOjpSZWd1
bGFyKTsKICAgICByZXNldFNQKCk7CiB9CiAKQEAgLTIxNywxMiArMjEzLDExIEBAIGJvb2wgSklU
Ojpjb21waWxlVGFpbENhbGwoY29uc3QgT3AmLCBVbmxpbmtlZENhbGxMaW5rSW5mbyosIHVuc2ln
bmVkKQogdGVtcGxhdGU8PgogYm9vbCBKSVQ6OmNvbXBpbGVUYWlsQ2FsbChjb25zdCBPcFRhaWxD
YWxsJiBieXRlY29kZSwgVW5saW5rZWRDYWxsTGlua0luZm8qLCB1bnNpZ25lZCBjYWxsTGlua0lu
Zm9JbmRleCkKIHsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUiA9IHJlZ1Qy
OwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BUYWlsQ2Fs
bDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIGNhbGxMaW5rSW5mb0dQUik7Ci0g
ICAgSnVtcExpc3Qgc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNG
YXN0UGF0aCgqdGhpcywgY2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgY2FsbExpbmtJbmZvR1BSLCBz
Y29wZWRMYW1iZGE8dm9pZCgpPihbJl17CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFk
YXRhKGJ5dGVjb2RlLCBPcFRhaWxDYWxsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8o
KSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOworICAgIEp1bXBMaXN0
IHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRo
aXMsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxp
bmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsm
XSB7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRhID0gQ2FsbEZyYW1l
U2h1ZmZsZURhdGE6OmNyZWF0ZUZvckJhc2VsaW5lT3JMTEludFRhaWxDYWxsKGJ5dGVjb2RlLCBt
X3VubGlua2VkQ29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogICAgICAgICBDYWxsRnJhbWVT
aHVmZmxlciBzaHVmZmxlciB7ICp0aGlzLCBzaHVmZmxlRGF0YSB9OwotICAgICAgICBzaHVmZmxl
ci5sb2NrR1BSKGNhbGxMaW5rSW5mb0dQUik7CisgICAgICAgIHNodWZmbGVyLmxvY2tHUFIoQmFz
ZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOwogICAgICAgICBzaHVmZmxlci5w
cmVwYXJlRm9yVGFpbENhbGwoKTsKICAgICB9KSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd1BhdGhz
KTsKQEAgLTI2Nyw4ICsyNjIsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAgIHVpbnQz
Ml90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KS5iaXRzKCk7
CiAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQWRkcmVzcyhjYWxsRnJh
bWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0KSk7CiAKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgY2FsbGVlSlNSKTsKLSAgICBzdG9yZVZhbHVl
KGNhbGxlZUpTUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSkpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBCYXNl
bGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUik7CisgICAgc3RvcmVWYWx1ZShCYXNlbGluZUNh
bGxSZWdpc3RlcnM6OmNhbGxlZUpTUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2Fs
bEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAt
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKGNvbXBpbGVDYWxsRXZhbChi
eXRlY29kZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3NiwxOCArMjcxLDE3IEBAIHZvaWQgSklU
Ojpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQg
Y2FsbExpbmtJbmZvSW5kCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAvLyBXZSBuZWVkIHRo
aXMgb24gSlNWQUxVRTMyXzY0IG9ubHkgYXMgb24gSlNWQUxVRTY0IGEgcG9pbnRlciBjb21wYXJp
c29uIGluIHRoZSBEYXRhSUMgZmFzdAogICAgIC8vIHBhdGggY2F0Y2hlcyB0aGlzLgotICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChjYWxsZWVKU1IpKTsKKyAgICBhZGRTbG93Q2FzZShi
cmFuY2hJZk5vdENlbGwoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IpKTsKICNlbmRp
ZgogCiAgICAgaWYgKGNvbXBpbGVUYWlsQ2FsbChieXRlY29kZSwgaW5mbywgY2FsbExpbmtJbmZv
SW5kZXgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxMaW5r
SW5mb0dQUiA9IHJlZ1QyOwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRl
Y29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBjYWxsTGlua0luZm9H
UFIpOworICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3A6Ok1l
dGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNh
bGxMaW5rSW5mb0dQUik7CiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdz
IHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykgewotICAgICAg
ICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBh
dGgoKnRoaXMsIGNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIGNhbGxMaW5rSW5mb0dQUiwgc2NvcGVk
TGFtYmRhPHZvaWQoKT4oWyZdeworICAgICAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5m
bzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVy
czo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlu
a0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7CiAgICAgICAgICAgICBlbWl0UmVz
dG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGxTbG93KGNh
bGxMaW5rSW5mb0dQUik7CisgICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGxTbG93KEJhc2Vs
aW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKICAgICAgICAgfSkpOwogICAgICAg
ICBhZGRTbG93Q2FzZShzbG93UGF0aHMpOwogICAgICAgICBhdXRvIGRvbmVMb2NhdGlvbiA9IGxh
YmVsKCk7CkBAIC0yOTUsNyArMjg5LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjpl
bWl0RGF0YUlDRmFzdFBhdGgoKnRoaXMsIGNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIGNhbGxMaW5r
SW5mb0dQUik7CisgICAgYXV0byBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXREYXRhSUNG
YXN0UGF0aCgqdGhpcywgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQ
UigpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgYXV0byBk
b25lTG9jYXRpb24gPSBsYWJlbCgpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2Rl
QmxvY2suaAppbmRleCAyMTk3ZjUyNmFhOGY3MjI5YWM0ZWZhYjVmMDBjMjVhOWRmNDRjYWZhLi44
MTVkYWQ4MjdmMTFjMDAzYWE1MGE3YTY3NmI4NjUwOWRkNDYxNDFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCkBA
IC05MCw3ICs5MCw3IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKIAogICAgIFJlZjxXYXNtOjpDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwogICAg
IFZlY3RvcjxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPj4gbV93YXNtVG9K
U0V4aXRTdHViczsKLSAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7CisgICAg
QmFnPE9wdGltaXppbmdDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKICAgICBTdHJpbmcg
bV9lcnJvck1lc3NhZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNt
VG9KUy5jcHAKaW5kZXggNTgxMDQxYjNjYTM0MzNjN2FmYWJmMWJlMzQ2NzVkYWI3ZDRhNGZkNi4u
MDhmZTFhNzg3MTMyNWE1YWZlM2UxNjE5ODU3ODY5ZDJhNjk5YTIyZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMg
dm9pZCBtYXRlcmlhbGl6ZUltcG9ydEpTQ2VsbChKSVQmIGppdCwgdW5zaWduZWQgaW1wb3J0SW5k
ZXgsIEdQUlJlZyByZXN1bAogICAgIGppdC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhyZXN1bHQsIElu
c3RhbmNlOjpvZmZzZXRPZkltcG9ydEZ1bmN0aW9uKGltcG9ydEluZGV4KSksIHJlc3VsdCk7CiB9
CiAKLUV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5k
aW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJ
bmZvcywgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgsIHVuc2lnbmVkIGltcG9ydEluZGV4
KQorRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRp
bmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0sIEJhZzxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvPiYg
Y2FsbExpbmtJbmZvcywgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgsIHVuc2lnbmVkIGlt
cG9ydEluZGV4KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgcHJvcGVy
bHkgYWJzdHJhY3QgYXdheSB0aGUgY2FsbGluZyBjb252ZW50aW9uLgogICAgIC8vIEl0J2QgYmUg
c3VwZXIgZWFzeSB0byBkbyBzbzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTQwMQpAQCAtMjYxLDcgKzI2MSw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAK
ICAgICAvLyBGSVhNRSBUYWlsIGNhbGwgaWYgdGhlIHdhc20gcmV0dXJuIHR5cGUgaXMgdm9pZCBh
bmQgbm8gcmVnaXN0ZXJzIHdlcmUgc3BpbGxlZC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NTQ4OAogCi0gICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBj
YWxsTGlua0luZm9zLmFkZChDb2RlT3JpZ2luKCkpOworICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9
IGNhbGxMaW5rSW5mb3MuYWRkKENvZGVPcmlnaW4oKSk7CiAgICAgY2FsbExpbmtJbmZvLT5zZXRV
cENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBpbXBvcnRKU0NlbGxHUFJSZWcpOwogICAgIGF1dG8g
c2xvd1BhdGggPSBjYWxsTGlua0luZm8tPmVtaXRGYXN0UGF0aChqaXQsIGltcG9ydEpTQ2VsbEdQ
UlJlZywgSW52YWxpZEdQUlJlZywgQ2FsbExpbmtJbmZvOjpVc2VEYXRhSUM6Ok5vKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmgKaW5kZXggNTQ1OTliNDg0Zjk4ZmVl
YzAxMmMxYTFmNjRjNzYyMmM3ZWI1ZjVlNy4uMjM0MWMyMzI2ODMyOTE2MWNmNmY2NjYwNjU5OGQ0
YjUzOWFiZTI4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Fz
bVRvSlMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5oCkBA
IC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXYXNtIHsKIAogY2xhc3MgSW5zdGFuY2U7CiAKLUV4
cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFp
bHVyZT4gd2FzbVRvSlMoVk0mLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywgU2ln
bmF0dXJlSW5kZXgsIHVuc2lnbmVkIGltcG9ydEluZGV4KTsKK0V4cGVjdGVkPE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0m
LCBCYWc8T3B0aW1pemluZ0NhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsIFNpZ25hdHVyZUlu
ZGV4LCB1bnNpZ25lZCBpbXBvcnRJbmRleCk7CiAKIHZvaWQgZW1pdFRocm93V2FzbVRvSlNFeGNl
cHRpb24oQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIHdhc21JbnN0YW5jZSwgV2FzbTo6RXhjZXB0aW9u
VHlwZSk7CiAK
</data>
<flag name="commit-queue"
          id="471682"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446314</attachid>
            <date>2021-12-07 23:14:24 -0800</date>
            <delta_ts>2021-12-08 00:24:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233985-20211207231423.patch</filename>
            <type>text/plain</type>
            <size>65423</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzM3ZDdiNzVmMjY1ZjM3ZDYwMjZjNmRlNTFiNTU1M2NkNmQ1ZThkLi4wYjE5MGQ3MWFjODJjMjY1
MThkN2I5NjI1ZjdkOWUyNGZlNjMyYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMTItMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgQmFzZWxpbmVDYWxsTGlua0luZm8gYW5kIE9w
dGltaXppbmdDYWxsTGlua0luZm8gdG8gc2hyaW5rIHNpemVvZihCYXNlbGluZUNhbGxMaW5rSW5m
bykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzk4
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyBCYXNlbGluZUNhbGxMaW5rSW5mbyBhbmQgT3B0aW1pemluZ0NhbGxM
aW5rSW5mbyB0byBzaHJpbmsgc2l6ZW9mKEJhc2VsaW5lQ2FsbExpbmtJbmZvKS4KKyAgICAgICAg
QmFzZWxpbmVDYWxsTGlua0luZm8gaXMgaW5jbHVkZWQgaW4gbWV0YWRhdGEsIGFuZCBhbGxvY2F0
ZWQgZm9yIExMSW50IGFuZCBCYXNlbGluZS4gU28gc2hyaW5raW5nIGl0IGNhbiBtYWtlCisgICAg
ICAgIG1ldGFkYXRhIHNtYWxsIGZvciBMTEludCBhbmQgQmFzZWxpbmUsIHdoaWNoIGV4aXN0cyBm
b3IgYWxsIGxpdmUgZnVuY3Rpb25zLgorCisgICAgICAgIFdlIGFsc28gcmVvcmRlciBPcEl0ZXJh
dG9yT3Blbjo6TWV0YWRhdGEgYW5kIE9wSXRlcmF0b3JOZXh0OjpNZXRhZGF0YSB0byBzaHJpbmsg
c2l6ZXMuCisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAg
KEpTQzo6T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2xvd1BhdGhTdGFydCk6CisgICAgICAgIChK
U0M6OkNhbGxMaW5rSW5mbzo6c2V0TW9ub21vcnBoaWNDYWxsZWUpOgorICAgICAgICAoSlNDOjpP
cHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpmYXN0UGF0aFN0YXJ0KToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0Nh
bGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0NhbGxM
aW5rSW5mbzo6ZW1pdFRhaWxDYWxsRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpPcHRpbWl6aW5n
Q2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGgpOgorICAgICAgICAoSlNDOjpPcHRpbWl6aW5nQ2Fs
bExpbmtJbmZvOjplbWl0RGlyZWN0RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpPcHRpbWl6aW5n
Q2FsbExpbmtJbmZvOjplbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0aCk6CisgICAgICAgIChKU0M6
Ok9wdGltaXppbmdDYWxsTGlua0luZm86OmluaXRpYWxpemVEaXJlY3RDYWxsKToKKyAgICAgICAg
KEpTQzo6T3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldCk6CisgICAg
ICAgIChKU0M6OkJhc2VsaW5lQ2FsbExpbmtJbmZvOjppbml0aWFsaXplKToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtJbmZvOjpzbG93UGF0aFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtJbmZvOjpmYXN0UGF0aFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjplbWl0RmFzdFBhdGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsTGlu
a0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjplbWl0U2xvd1BhdGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsTGlu
a0luZm86OmluaXRpYWxpemVEYXRhSUMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsTGlu
a0luZm86OmVtaXREaXJlY3RGYXN0UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxM
aW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpDYWxsTGlua0luZm86OmluaXRpYWxpemVEaXJlY3RDYWxsKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJ
bmZvOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpDYWxsTGlua0lu
Zm8pOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNhbGxlZUdQUiBjb25zdCk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbExpbmtJbmZvR1BSIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRDYWxsTGlua0luZm9HUFIpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua0luZm86OnNldFVwQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5r
SW5mbzo6c2V0Q29kZUxvY2F0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5r
SW5mbzo6Y2FsbGVlR1BSKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxp
bmtlZEJhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgICogYnl0ZWNvZGUv
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6
OnJldmVydENhbGwpOgorICAgICAgICAoSlNDOjpsaW5rRGlyZWN0Q2FsbCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUmVwYXRjaC5oOgorICAgICAgICAqIGRmZy9ERkdDb21tb25EYXRhLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6YWRkQ2FsbExpbmtJbmZvKToKKyAgICAgICAgKiBk
ZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjps
aW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpKSVRDb21waWxlcjo6YWRkSlNDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YWRkSlNEaXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6SlND
YWxsUmVjb3JkOjpKU0NhbGxSZWNvcmQpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVy
OjpKU0RpcmVjdENhbGxSZWNvcmQ6OkpTRGlyZWN0Q2FsbFJlY29yZCk6CisgICAgICAgICogZGZn
L0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICogaml0L0NhbGxGcmFt
ZVNodWZmbGVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZURhdGE6OmNy
ZWF0ZUZvckJhc2VsaW5lT3JMTEludFRhaWxDYWxsKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91
dGluZTo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6OkdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRp
bmVXaXRoRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUlDSklUU3R1YlJv
dXRpbmUpOgorICAgICAgICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAg
KiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUNhbGxFdmFsU2xv
d0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVUYWlsQ2FsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAq
IHdhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oOgorICAgICAgICAqIHdhc20vanMvV2Fz
bVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisgICAgICAgICogd2Fz
bS9qcy9XYXNtVG9KUy5oOgorCiAyMDIxLTEyLTA3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFR5cGVkQXJyYXkgcHJvdG90eXBlIHNldCBzaG91bGQgZ28gZG93
biB0aGUgZmFzdCBwYXRoIHdoZW4gdXNpbmcgbm9uIGNsYW1wZWQgaW50ZWdlciB0eXBlcyBvZiB0
aGUgc2FtZSBieXRlIHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcAppbmRleCBhYWY0Zjc2ZWE0YjliODkxNTc1YmVhYmU1MTA5ZjE0ZjkzZWFkNGM2
Li5iYzc2YTFjZDRjMWQ0YjVlZmUxYzQyMDU1ZGM2OGVmZjE4MDQ1MTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC0xOTk3LDcgKzE5OTcs
NyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogICAgICAgICAgICAgc3RhdGUuc2V0U3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVy
KHNwaWxsU3RhdGUpOwogCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghYWNjZXNzLmNhbGxM
aW5rSW5mbygpKTsKLSAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gc3Rh
dGUubV9jYWxsTGlua0luZm9zLmFkZChzdHViSW5mby5jb2RlT3JpZ2luKTsKKyAgICAgICAgICAg
IGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLm1fY2FsbExpbmtJbmZvcy5hZGQoc3R1YkluZm8u
Y29kZU9yaWdpbik7CiAgICAgICAgICAgICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBjYWxsTGlu
a0luZm87CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZW5lcmF0ZWQgYSBwb2x5bW9y
cGhpYyBjYWxsIHN0dWIgdGhhdCBqdW1wZWQgYmFjayB0byB0aGUgZ2V0dGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCA1NDg2OTc1MjI5
MzFkNjY0ZTgwZDUwNjcyZjlhMzc3YjhmNjQ5MTVhLi5iOTYyYjI4Y2U2MmYyYzgxN2M2NDFmN2Jm
OTQxMGU1NmNmMTA3MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKQEAgLTI2LDcgKzI2LDcgQEAKIAogICAgIDpCYXNpY0Jsb2NrTG9jYXRp
b24sCiAgICAgOkJvdW5kTGFiZWwsCi0gICAgOkNhbGxMaW5rSW5mbywKKyAgICA6QmFzZWxpbmVD
YWxsTGlua0luZm8sCiAgICAgOkRlYnVnSG9va1R5cGUsCiAgICAgOkVDTUFNb2RlLAogICAgIDpF
cnJvclR5cGVXaXRoRXh0ZW5zaW9uLApAQCAtODQyLDcgKzg0Miw3IEBACiAgICAgICAgIGFyZ3Y6
IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FsbExpbmtJbmZv
OiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxMaW5rSW5mbzogQmFzZWxpbmVDYWxsTGlua0lu
Zm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCiAgICAgfQpAQCAtODU1LDcgKzg1NSw3IEBACiAgICAgICAgIGFyZ3Y6
IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FsbExpbmtJbmZv
OiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxMaW5rSW5mbzogQmFzZWxpbmVDYWxsTGlua0lu
Zm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCiAgICAgfQpAQCAtODY5LDcgKzg2OSw3IEBACiAgICAgICAgIGVjbWFN
b2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGNhbGxMaW5r
SW5mbzogQ2FsbExpbmtJbmZvLAorICAgICAgICBjYWxsTGlua0luZm86IEJhc2VsaW5lQ2FsbExp
bmtJbmZvLAogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKICAgICAgICAgcHJv
ZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KQEAgLTg4NCw3ICs4ODQsNyBAQAogICAgICAgICBm
aXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FsbExp
bmtJbmZvOiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxMaW5rSW5mbzogQmFzZWxpbmVDYWxs
TGlua0luZm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAgICAgICBw
cm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfSwKQEAgLTkwNiw3ICs5MDYsNyBAQAogICAgICAg
ICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2Fs
bExpbmtJbmZvOiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxMaW5rSW5mbzogQmFzZWxpbmVD
YWxsTGlua0luZm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAgICAg
ICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfSwKQEAgLTkyOCw3ICs5MjgsNyBAQAogICAg
ICAgICBmaXJzdFZhckFyZzogaW50LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAg
Y2FsbExpbmtJbmZvOiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxMaW5rSW5mbzogQmFzZWxp
bmVDYWxsTGlua0luZm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQpAQCAtOTQxLDcgKzk0MSw3IEBACiAg
ICAgICAgIGFyZ3Y6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAg
Y2FsbExpbmtJbmZvOiBDYWxsTGlua0luZm8sCisgICAgICAgIGNhbGxMaW5rSW5mbzogQmFzZWxp
bmVDYWxsTGlua0luZm8sCiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQpAQCAtOTU2LDcgKzk1Niw3IEBACiAg
ICAgICAgIGZpcnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAg
ICBjYWxsTGlua0luZm86IENhbGxMaW5rSW5mbywKKyAgICAgICAgY2FsbExpbmtJbmZvOiBCYXNl
bGluZUNhbGxMaW5rSW5mbywKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCiAg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9LApAQCAtMTI1NywxMyArMTI1Nywx
MyBAQAogICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0
YTogewotICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAog
ICAgICAgICBpdGVyYWJsZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKLSAgICAgICAgY2FsbExpbmtJ
bmZvOiBDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAor
ICAgICAgICBjYWxsTGlua0luZm86IEJhc2VsaW5lQ2FsbExpbmtJbmZvLAogICAgICAgICBpdGVy
YXRvclByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICAgICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlk
TW9kZU1ldGFkYXRhLAogICAgICAgICBuZXh0UHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAg
ICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6
IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKICAgICB9LAogICAgIGNoZWNrcG9pbnRzOiB7CiAgICAg
ICAgIHN5bWJvbENhbGw6IG5pbCwKQEAgLTEyODEsMTUgKzEyODEsMTUgQEAKICAgICAgICAgc3Rh
Y2tPZmZzZXQ6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgaXRl
cmF0aW9uTWV0YWRhdGE6IEl0ZXJhdGlvbk1vZGVNZXRhZGF0YSwKLSAgICAgICAgaXRlcmFibGVQ
cm9maWxlOiBBcnJheVByb2ZpbGUsCi0gICAgICAgIGNhbGxMaW5rSW5mbzogQ2FsbExpbmtJbmZv
LAotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgY2FsbExpbmtJ
bmZvOiBCYXNlbGluZUNhbGxMaW5rSW5mbywKICAgICAgICAgbmV4dFJlc3VsdFByb2ZpbGU6IFZh
bHVlUHJvZmlsZSwKICAgICAgICAgZG9uZU1vZGVNZXRhZGF0YTogR2V0QnlJZE1vZGVNZXRhZGF0
YSwKICAgICAgICAgZG9uZVByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICAgICAgdmFsdWVNb2Rl
TWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCiAgICAgICAgIHZhbHVlUHJvZmlsZTogVmFs
dWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAg
aXRlcmFibGVQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRh
OiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCiAgICAgfSwKICAgICB0bXBzOiB7CiAgICAgICAgIG5l
eHRSZXN1bHQ6IEpTVmFsdWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwCmluZGV4IGJkYWIzOTYxMDcwNDA2ZGM5N2Y3YmI3OTllMGExYzQyOWFm
MDM2Y2YuLjQxMDQzNWZjZDA4OTExOTVlYjk5MjI2ZGZjMWQ3NGI0ZTM0MWU4MWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0xMDIs
MTAgKzEwMiwxMCBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dW5saW5rKFZNJiB2bSkKICAgICBSRUxF
QVNFX0FTU0VSVCghaXNPbkxpc3QoKSk7CiB9CiAKLUNvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJu
YWxQdHJUYWc+IENhbGxMaW5rSW5mbzo6c2xvd1BhdGhTdGFydCgpCitDb2RlTG9jYXRpb25MYWJl
bDxKU0ludGVybmFsUHRyVGFnPiBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzbG93UGF0aFN0YXJ0
KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghaXNEYXRhSUMoKSk7Ci0gICAgcmV0dXJuIHUuY29k
ZUlDLm1fc2xvd1BhdGhTdGFydDsKKyAgICByZXR1cm4gbV9zbG93UGF0aFN0YXJ0OwogfQogCiBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBDYWxsTGlua0luZm86OmRvbmVMb2Nh
dGlvbigpCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDYWxsTGlua0luZm86OnNldE1vbm9tb3Jw
aGljQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIGNhbGxlZSwKICAgICAg
ICAgdS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA9IGNvZGVQdHI7CiAgICAg
ZWxzZSB7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hO
ZWFyQ2FsbCh1LmNvZGVJQy5tX2NhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRy
eVB0clRhZz4oY29kZVB0cikpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJD
YWxsKHN0YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPih0aGlzKS0+bV9jYWxsTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQdHIpKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY2FsbGVlTG9jYXRp
b24sIGNhbGxlZSk7CiAjZWxzZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjE1LDEwICsyMTUsMTAgQEAgdm9pZCBDYWxsTGlua0luZm86OnNldE1heEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKHVuc2lnbmVkIHZhbHVlKQogICAgIG1fbWF4QXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPSB2YWx1ZTsKIH0KIAotQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5h
bFB0clRhZz4gQ2FsbExpbmtJbmZvOjpmYXN0UGF0aFN0YXJ0KCkKK0NvZGVMb2NhdGlvbkxhYmVs
PEpTSW50ZXJuYWxQdHJUYWc+IE9wdGltaXppbmdDYWxsTGlua0luZm86OmZhc3RQYXRoU3RhcnQo
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkgJiYgaXNUYWlsQ2FsbCgpKTsKLSAg
ICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPEpTSW50ZXJuYWxQdHJUYWc+KHUuY29k
ZUlDLm1fZmFzdFBhdGhTdGFydCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0
cjxKU0ludGVybmFsUHRyVGFnPihtX2Zhc3RQYXRoU3RhcnQpOwogfQogCiB2b2lkIENhbGxMaW5r
SW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKQEAgLTMzNiw3ICszMzYsNyBAQCBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3QgQ2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbgogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mbyk7CiAgICAg
ICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+dS5jb2RlSUMubV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pLT5tX2Nh
bGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJU
YWc+KGNhbGwpOwogICAgICAgICAgICAgY2FsbExpbmtJbmZvLT51LmNvZGVJQy5tX2NhbGxlZUxv
Y2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGxlZUNo
ZWNrKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdCBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aEltcGwoQ2FsbExpbmtJbmZv
KiBjYWxsTGlua0luCiAgICAgcmV0dXJuIHNsb3dQYXRoOwogfQogCi1DQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IENhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBHUFJS
ZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSLCBVc2VEYXRhSUMgdXNlRGF0YUlD
KQorQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlu
a0luZm9HUFIsIFVzZURhdGFJQyB1c2VEYXRhSUMpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlz
VGFpbENhbGwoKSk7CiAgICAgc2V0VXNlc0RhdGFJQ3ModXNlRGF0YUlDKTsKQEAgLTM1MiwxMyAr
MzUyLDEzIEBAIENDYWxsSGVscGVyczo6SnVtcExpc3QgQ2FsbExpbmtJbmZvOjplbWl0RmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsCiAgICAgaWYgKGlzRGF0YUlDKCkpIHsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvR1BSICE9IEdQUlJlZzo6SW52YWxp
ZEdQUlJlZyk7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0
aGlzKSwgY2FsbExpbmtJbmZvR1BSKTsKLSAgICAgICAgdS5kYXRhSUMubV9jYWxsTGlua0luZm9H
UFIgPSBjYWxsTGlua0luZm9HUFI7CisgICAgICAgIHNldENhbGxMaW5rSW5mb0dQUihjYWxsTGlu
a0luZm9HUFIpOwogICAgIH0KIAogICAgIHJldHVybiBlbWl0RmFzdFBhdGhJbXBsKHRoaXMsIGpp
dCwgY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIsIHVzZURhdGFJQywgaXNUYWlsQ2FsbCgpLCBu
dWxscHRyKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5mbzo6ZW1p
dFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsZWVHUFIsIFNj
b3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKQorTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQYXRoKEND
YWxsSGVscGVycyYgaml0LCBHUFJSZWcgY2FsbGVlR1BSLCBTY29wZWRMYW1iZGE8dm9pZCgpPiYm
IHByZXBhcmVGb3JUYWlsQ2FsbCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc1RhaWxDYWxsKCkp
OwogICAgIHNldFVzZXNEYXRhSUNzKFVzZURhdGFJQzo6Tm8pOwpAQCAtMzc3LDcgKzM3Nyw3IEBA
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbERhdGFJ
Q0Zhc3RQYXRoKENDYWxsSGVscGVycyYKICAgICByZXR1cm4gZW1pdEZhc3RQYXRoSW1wbChudWxs
cHRyLCBqaXQsIGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSLCBVc2VEYXRhSUM6OlllcywgdHJ1
ZSwgV1RGTW92ZShwcmVwYXJlRm9yVGFpbENhbGwpKTsKIH0KIAotdm9pZCBDYWxsTGlua0luZm86
OmVtaXRTbG93UGF0aChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0KQordm9pZCBPcHRpbWl6aW5n
Q2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGgoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCkKIHsK
ICAgICBzZXRTbG93UGF0aENhbGxEZXN0aW5hdGlvbih2bS5nZXRDVElMaW5rQ2FsbCgpLmNvZGUo
KSk7CiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRoaXMpLCBHUFJJ
bmZvOjpyZWdUMik7CkBAIC0zOTEsMzAgKzM5MSw4IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjplbWl0
RGF0YUlDU2xvd1BhdGgoVk0mLCBDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIGNhbGxMaW5rSW5m
CiB9CiAjZW5kaWYKIAotdm9pZCBDYWxsTGlua0luZm86OmluaXRpYWxpemVEYXRhSUMoVk0mIHZt
LCBDYWxsVHlwZSBjYWxsVHlwZSwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBDYWxsRnJh
bWVTaHVmZmxlRGF0YSogZnJhbWVTaHVmZmxlRGF0YSkKLXsKLSAgICBVTlVTRURfUEFSQU0oZnJh
bWVTaHVmZmxlRGF0YSk7Ci0gICAgbV9jb2RlT3JpZ2luID0gQ29kZU9yaWdpbihieXRlY29kZUlu
ZGV4KTsKLSAgICBtX2NhbGxUeXBlID0gY2FsbFR5cGU7Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICBH
UFJSZWcgY2FsbGVlR1BSID0gR1BSSW5mbzo6cmVnVDA7Ci0gICAgR1BSUmVnIGNhbGxMaW5rSW5m
b0dQUiA9IEdQUkluZm86OnJlZ1QyOwotICAgIG1fY2FsbGVlR1BSID0gY2FsbGVlR1BSOwotICAg
IGlmIChmcmFtZVNodWZmbGVEYXRhKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJdCdkIGJlIG5pY2Ug
aWYgdGhpcyB3ZXJlIGEgcmVmY291bnRlZCBkYXRhIHN0cnVjdHVyZS4KLSAgICAgICAgbV9mcmFt
ZVNodWZmbGVEYXRhID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oKmZyYW1lU2h1
ZmZsZURhdGEpOwotICAgIH0KLSAgICB1LmRhdGFJQy5tX2NhbGxMaW5rSW5mb0dQUiA9IGNhbGxM
aW5rSW5mb0dQUjsKLSNlbmRpZgotICAgIHNldFVzZXNEYXRhSUNzKFVzZURhdGFJQzo6WWVzKTsK
LSAgICBzZXRTbG93UGF0aENhbGxEZXN0aW5hdGlvbih2bS5nZXRDVElMaW5rQ2FsbCgpLmNvZGUo
KSk7Ci0gICAgLy8gSWYgSklUIGlzIGRpc2FibGVkLCB3ZSBzaG91bGQgbm90IHN1cHBvcnQgZHlu
YW1pY2FsbHkgZ2VuZXJhdGVkIGNhbGwgSUMuCi0gICAgaWYgKCFPcHRpb25zOjp1c2VKSVQoKSkK
LSAgICAgICAgZGlzYWxsb3dTdHVicygpOwotfQotCiAjaWYgRU5BQkxFKEpJVCkKLXZvaWQgQ2Fs
bExpbmtJbmZvOjplbWl0RGlyZWN0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQpCit2b2lkIE9w
dGltaXppbmdDYWxsTGlua0luZm86OmVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGpp
dCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghaXNUYWlsQ2FsbCgpKTsKIApAQCAtNDIyLDE0ICs0
MDAsMTQgQEAgdm9pZCBDYWxsTGlua0luZm86OmVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBl
cnMmIGppdCkKIAogICAgIGF1dG8gY2FsbCA9IGppdC5uZWFyQ2FsbCgpOwogICAgIGppdC5hZGRM
aW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgdS5jb2RlSUMu
bV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFs
UHRyVGFnPihjYWxsKTsKKyAgICAgICAgbV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0
aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKICAgICB9KTsKICAgICBqaXQu
YWRkTGF0ZUxpbmtUYXNrKFt0aGlzXSAoTGlua0J1ZmZlciYpIHsKICAgICAgICAgaW5pdGlhbGl6
ZURpcmVjdENhbGwoKTsKICAgICB9KTsKIH0KIAotdm9pZCBDYWxsTGlua0luZm86OmVtaXREaXJl
Y3RUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBTY29wZWRMYW1iZGE8dm9pZCgp
PiYmIHByZXBhcmVGb3JUYWlsQ2FsbCkKK3ZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1p
dERpcmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIFNjb3BlZExhbWJkYTx2
b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzVGFp
bENhbGwoKSk7CiAKQEAgLTQzNyw3ICs0MTUsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6ZW1pdERp
cmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIFNjb3BlZExhbWJkYTx2bwog
CiAgICAgYXV0byBmYXN0UGF0aFN0YXJ0ID0gaml0LmxhYmVsKCk7CiAgICAgaml0LmFkZExpbmtU
YXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICB1LmNvZGVJQy5tX2Zh
c3RQYXRoU3RhcnQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oZmFz
dFBhdGhTdGFydCk7CisgICAgICAgIG1fZmFzdFBhdGhTdGFydCA9IGxpbmtCdWZmZXIubG9jYXRp
b25PZjxKU0ludGVybmFsUHRyVGFnPihmYXN0UGF0aFN0YXJ0KTsKICAgICB9KTsKIAogICAgIC8v
IC0gSWYgd2UncmUgbm90IHlldCBsaW5rZWQsIHRoaXMgaXMgYSBqdW1wIHRvIHRoZSBzbG93IHBh
dGguCkBAIC00NDcsMTcgKzQyNSwxNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRh
aWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIFNjb3BlZExhbWJkYTx2bwogICAgIHBy
ZXBhcmVGb3JUYWlsQ2FsbCgpOwogICAgIGF1dG8gY2FsbCA9IGppdC5uZWFyVGFpbENhbGwoKTsK
ICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAg
ICAgIHUuY29kZUlDLm1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNh
bGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgIG1fY2FsbExvY2F0aW9uID0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CiAgICAg
fSk7CiAgICAgaml0LmFkZExhdGVMaW5rVGFzayhbdGhpc10gKExpbmtCdWZmZXImKSB7CiAgICAg
ICAgIGluaXRpYWxpemVEaXJlY3RDYWxsKCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FsbExpbmtJ
bmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCgpCit2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86
OmluaXRpYWxpemVEaXJlY3RDYWxsKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgp
KTsKLSAgICBBU1NFUlQodS5jb2RlSUMubV9jYWxsTG9jYXRpb24pOworICAgIEFTU0VSVChtX2Nh
bGxMb2NhdGlvbik7CiAgICAgaWYgKGlzVGFpbENhbGwoKSkgewogICAgICAgICBSRUxFQVNFX0FT
U0VSVChmYXN0UGF0aFN0YXJ0KCkpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2Rl
T3ZlcihmYXN0UGF0aFN0YXJ0KCksIHNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPihb
Jl0oQ0NhbGxIZWxwZXJzJiBqaXQpIHsKQEAgLTQ2NywxMCArNDQ1LDEwIEBAIHZvaWQgQ2FsbExp
bmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCgpCiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fSksICJpbml0aWFsaXplIGRpcmVjdCBjYWxsIik7CiAgICAgfSBlbHNlCi0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwodS5jb2RlSUMubV9jYWxsTG9jYXRpb24sIHNsb3dQ
YXRoU3RhcnQoKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9j
YWxsTG9jYXRpb24sIHNsb3dQYXRoU3RhcnQoKSk7CiB9CiAKLXZvaWQgQ2FsbExpbmtJbmZvOjpz
ZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IHRhcmdl
dCkKK3ZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChDb2Rl
TG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiB0YXJnZXQpCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQoaXNEaXJlY3QoKSk7CiAKQEAgLTQ4Myw3ICs0NjEsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6
c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiB0YXJn
ZXQpCiAgICAgICAgIH0pLCAiU2V0dGluZyBkaXJlY3QgY2FsbCB0YXJnZXQiKTsKICAgICB9CiAK
LSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKHUuY29kZUlDLm1fY2FsbExvY2F0
aW9uLCB0YXJnZXQpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9jYWxs
TG9jYXRpb24sIHRhcmdldCk7CiB9CiAjZW5kaWYKIApAQCAtNTM1LDQgKzUxMywyNCBAQCB2b2lk
IENhbGxMaW5rSW5mbzo6c2V0U3R1YihSZWY8UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU+JiYg
bmV3U3R1YikKIH0KICNlbmRpZgogCit2b2lkIEJhc2VsaW5lQ2FsbExpbmtJbmZvOjppbml0aWFs
aXplKFZNJiB2bSwgQ2FsbFR5cGUgY2FsbFR5cGUsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRl
eCwgQ2FsbEZyYW1lU2h1ZmZsZURhdGEqIGZyYW1lU2h1ZmZsZURhdGEpCit7CisgICAgVU5VU0VE
X1BBUkFNKGZyYW1lU2h1ZmZsZURhdGEpOworICAgIG1fdHlwZSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihUeXBlOjpCYXNlbGluZSk7CisgICAgQVNTRVJUKFR5cGU6OkJhc2VsaW5lID09IHR5cGUo
KSk7CisgICAgbV9jb2RlT3JpZ2luID0gQ29kZU9yaWdpbihieXRlY29kZUluZGV4KTsKKyAgICBt
X2NhbGxUeXBlID0gY2FsbFR5cGU7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAoZnJhbWVTaHVm
ZmxlRGF0YSkgeworICAgICAgICAvLyBGSVhNRTogSXQnZCBiZSBuaWNlIGlmIHRoaXMgd2VyZSBh
IHJlZmNvdW50ZWQgZGF0YSBzdHJ1Y3R1cmUuCisgICAgICAgIG1fZnJhbWVTaHVmZmxlRGF0YSA9
IG1ha2VVbmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KCpmcmFtZVNodWZmbGVEYXRhKTsKKyAg
ICB9CisjZW5kaWYKKyAgICBzZXRVc2VzRGF0YUlDcyhVc2VEYXRhSUM6Olllcyk7CisgICAgc2V0
U2xvd1BhdGhDYWxsRGVzdGluYXRpb24odm0uZ2V0Q1RJTGlua0NhbGwoKS5jb2RlKCkpOworICAg
IC8vIElmIEpJVCBpcyBkaXNhYmxlZCwgd2Ugc2hvdWxkIG5vdCBzdXBwb3J0IGR5bmFtaWNhbGx5
IGdlbmVyYXRlZCBjYWxsIElDLgorICAgIGlmICghT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAg
IGRpc2FsbG93U3R1YnMoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXggMTg0NzE4NzAzZWUwYzBi
ZTI5NTM1YjIxNjYxNTlhZjMyODcwY2RjNy4uMjI2ZTQyZTU0NmMxMDM0OGU2MDRmMmI0YjFmYjM0
NTc4NzQ5M2FlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uaApAQCAtNDcsMTAgKzQ3LDIzIEBAIGVudW0gT3Bjb2RlSUQgOiB1bnNpZ25lZDsKIHN0
cnVjdCBDYWxsRnJhbWVTaHVmZmxlRGF0YTsKIHN0cnVjdCBVbmxpbmtlZENhbGxMaW5rSW5mbzsK
IAorI2lmIEVOQUJMRShBU1NFTUJMRVIpCituYW1lc3BhY2UgQmFzZWxpbmVDYWxsUmVnaXN0ZXJz
IHsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBjYWxsZWVKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9
OworY29uc3RleHByIEdQUlJlZyBjYWxsZWVHUFIgeyBHUFJJbmZvOjpyZWdUMCB9OworY29uc3Rl
eHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworfQorI2VuZGlm
CisKIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2Fs
bExpbmtJbmZvPiB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIAorICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBCYXNlbGlu
ZSwKKyAgICAgICAgT3B0aW1pemluZywKKyAgICB9OworCiAgICAgZW51bSBDYWxsVHlwZSA6IHVp
bnQ4X3QgewogICAgICAgICBOb25lLAogICAgICAgICBDYWxsLApAQCAtODEsMjQgKzk0LDYgQEAg
Y2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlu
a0luZm8+IHsKICAgICAgICAgfQogICAgIH0KIAotICAgIENhbGxMaW5rSW5mbyhDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pCi0gICAgICAgIDogbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCi0gICAgICAg
ICwgbV9oYXNTZWVuU2hvdWxkUmVwYXRjaChmYWxzZSkKLSAgICAgICAgLCBtX2hhc1NlZW5DbG9z
dXJlKGZhbHNlKQotICAgICAgICAsIG1fY2xlYXJlZEJ5R0MoZmFsc2UpCi0gICAgICAgICwgbV9j
bGVhcmVkQnlWaXJ0dWFsKGZhbHNlKQotICAgICAgICAsIG1fYWxsb3dTdHVicyh0cnVlKQotICAg
ICAgICAsIG1fY2xlYXJlZEJ5SmV0dGlzb24oZmFsc2UpCi0gICAgICAgICwgbV9jYWxsVHlwZShO
b25lKQotICAgICAgICAsIG1fdXNlRGF0YUlDKHN0YXRpY19jYXN0PHVuc2lnbmVkPihVc2VEYXRh
SUM6OlllcykpCi0gICAgewotICAgIH0KLQotICAgIENhbGxMaW5rSW5mbygpCi0gICAgICAgIDog
Q2FsbExpbmtJbmZvKENvZGVPcmlnaW4geyB9KQotICAgIHsKLSAgICB9Ci0KICAgICB+Q2FsbExp
bmtJbmZvKCk7CiAgICAgCiAgICAgc3RhdGljIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lh
bGl6YXRpb25LaW5kRm9yKENhbGxUeXBlIGNhbGxUeXBlKQpAQCAtMTgzLDM4ICsxNzgsMTggQEAg
Y2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlu
a0luZm8+IHsKICAgICBib29sIGlzTGlua2VkKCkgY29uc3QgeyByZXR1cm4gc3R1YigpIHx8IG1f
Y2FsbGVlT3JDb2RlQmxvY2s7IH0KICAgICB2b2lkIHVubGluayhWTSYpOwogCi0jaWYgRU5BQkxF
KEpJVCkKLSAgICB2b2lkIHNldFVwQ2FsbChDYWxsVHlwZSBjYWxsVHlwZSwgR1BSUmVnIGNhbGxl
ZUdQUikKLSAgICB7Ci0gICAgICAgIG1fY2FsbFR5cGUgPSBjYWxsVHlwZTsKLSAgICAgICAgbV9j
YWxsZWVHUFIgPSBjYWxsZWVHUFI7Ci0gICAgfQotCi0gICAgR1BSUmVnIGNhbGxlZUdQUigpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsbGVlR1BSOyB9Ci0jZW5kaWYKLQotICAgIHZvaWQgaW5pdGlhbGl6
ZURhdGFJQyhWTSYsIENhbGxUeXBlLCBCeXRlY29kZUluZGV4LCBDYWxsRnJhbWVTaHVmZmxlRGF0
YSopOwotICAgIAogICAgIGVudW0gY2xhc3MgVXNlRGF0YUlDIDogdWludDhfdCB7CiAgICAgICAg
IFllcywKICAgICAgICAgTm8KICAgICB9OwogCiAjaWYgRU5BQkxFKEpJVCkKLXByaXZhdGU6Citw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0RmFzdFBh
dGhJbXBsKENhbGxMaW5rSW5mbyosIENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIEdQ
UlJlZyBjYWxsTGlua0luZm9HUFIsIFVzZURhdGFJQywgYm9vbCBpc1RhaWxDYWxsLCBTY29wZWRM
YW1iZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JUYWlsQ2FsbCkgV0FSTl9VTlVTRURfUkVUVVJOOwog
cHVibGljOgogICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZW1pdERhdGFJQ0Zh
c3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlua0lu
Zm9HUFIpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0IGVtaXRUYWlsQ2FsbERhdGFJQ0Zhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBj
YWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlua0luZm9HUFIsIFNjb3BlZExhbWJkYTx2b2lkKCk+JiYg
cHJlcGFyZUZvclRhaWxDYWxsKSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IGVtaXRGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBHUFJSZWcgY2FsbGVlR1BS
LCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSLCBVc2VEYXRhSUMpIFdBUk5fVU5VU0VEX1JFVFVSTjsK
LSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZW1pdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxI
ZWxwZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgU2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVwYXJl
Rm9yVGFpbENhbGwpIFdBUk5fVU5VU0VEX1JFVFVSTjsKLSAgICB2b2lkIGVtaXREaXJlY3RGYXN0
UGF0aChDQ2FsbEhlbHBlcnMmKTsKLSAgICB2b2lkIGVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRo
KENDYWxsSGVscGVycyYsIFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxs
KTsKLSAgICB2b2lkIGVtaXRTbG93UGF0aChWTSYsIENDYWxsSGVscGVycyYpOwogICAgIHN0YXRp
YyB2b2lkIGVtaXREYXRhSUNTbG93UGF0aChWTSYsIENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxs
TGlua0luZm9HUFIpOwotCi0gICAgdm9pZCBpbml0aWFsaXplRGlyZWN0Q2FsbCgpOwotICAgIHZv
aWQgc2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPik7
CiAjZW5kaWYKIAogICAgIHZvaWQgcmV2ZXJ0Q2FsbFRvU3R1YigpOwpAQCAtMjIyLDE2ICsxOTcs
NiBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENh
bGxMaW5rSW5mbz4gewogICAgIGJvb2wgaXNEYXRhSUMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxVc2VEYXRhSUM+KG1fdXNlRGF0YUlDKSA9PSBVc2VEYXRhSUM6OlllczsgfQogICAgIHZv
aWQgc2V0VXNlc0RhdGFJQ3MoVXNlRGF0YUlDIHVzZURhdGFJQykgeyBtX3VzZURhdGFJQyA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPih1c2VEYXRhSUMpOyB9CiAKLSAgICB2b2lkIHNldENvZGVMb2Nh
dGlvbnMoCi0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQ
YXRoU3RhcnQsCi0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRv
bmVMb2NhdGlvbikKLSAgICB7Ci0gICAgICAgIGlmICghaXNEYXRhSUMoKSkKLSAgICAgICAgICAg
IHUuY29kZUlDLm1fc2xvd1BhdGhTdGFydCA9IHNsb3dQYXRoU3RhcnQ7Ci0gICAgICAgIG1fZG9u
ZUxvY2F0aW9uID0gZG9uZUxvY2F0aW9uOwotICAgIH0KLQotCiAgICAgYm9vbCBhbGxvd1N0dWJz
KCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd1N0dWJzOyB9CiAKICAgICB2b2lkIGRpc2FsbG93U3R1
YnMoKQpAQCAtMjM5LDcgKzIwNCw2IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNr
ZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAgICAgICAgIG1fYWxsb3dTdHVicyA9
IGZhbHNlOwogICAgIH0KIAotICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+
IHNsb3dQYXRoU3RhcnQoKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PiBkb25lTG9jYXRpb24oKTsKIAogICAgIHZvaWQgc2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mLCBK
U0NlbGwqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0
clRhZz4pOwpAQCAtMzcxLDEwICszMzUsOCBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMg
UGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAgIH0KIAogI2lmIEVOQUJM
RShKSVQpCi0gICAgR1BSUmVnIGNhbGxlZUdQUigpCi0gICAgewotICAgICAgICByZXR1cm4gbV9j
YWxsZWVHUFI7Ci0gICAgfQorICAgIEdQUlJlZyBjYWxsZWVHUFIoKSBjb25zdDsKKyAgICBHUFJS
ZWcgY2FsbExpbmtJbmZvR1BSKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIHVpbnQzMl90IHNsb3dQ
YXRoQ291bnQoKQpAQCAtNDE4LDMzICszODAsNDcgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVi
bGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKICAgICB9CiAjZW5kaWYK
IAotcHJpdmF0ZToKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxU
eXBlPihtX3R5cGUpOyB9CiAKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PiBmYXN0UGF0aFN0YXJ0KCk7Citwcm90ZWN0ZWQ6CisgICAgQ2FsbExpbmtJbmZvKFR5cGUgdHlw
ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQorICAgICAgICA6IG1fY29kZU9yaWdpbihjb2RlT3Jp
Z2luKQorICAgICAgICAsIG1faGFzU2VlblNob3VsZFJlcGF0Y2goZmFsc2UpCisgICAgICAgICwg
bV9oYXNTZWVuQ2xvc3VyZShmYWxzZSkKKyAgICAgICAgLCBtX2NsZWFyZWRCeUdDKGZhbHNlKQor
ICAgICAgICAsIG1fY2xlYXJlZEJ5VmlydHVhbChmYWxzZSkKKyAgICAgICAgLCBtX2FsbG93U3R1
YnModHJ1ZSkKKyAgICAgICAgLCBtX2NsZWFyZWRCeUpldHRpc29uKGZhbHNlKQorICAgICAgICAs
IG1fY2FsbFR5cGUoTm9uZSkKKyAgICAgICAgLCBtX3VzZURhdGFJQyhzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oVXNlRGF0YUlDOjpZZXMpKQorICAgICAgICAsIG1fdHlwZShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odHlwZSkpCisgICAgeworICAgICAgICBBU1NFUlQodHlwZSA9PSB0aGlzLT50eXBlKCkp
OworICAgIH0KKworICAgIENhbGxMaW5rSW5mbyhUeXBlIHR5cGUpCisgICAgICAgIDogQ2FsbExp
bmtJbmZvKHR5cGUsIENvZGVPcmlnaW4geyB9KQorICAgIHsKKyAgICB9CisKKyNpZiBFTkFCTEUo
SklUKQorICAgIHZvaWQgc2V0Q2FsbExpbmtJbmZvR1BSKEdQUlJlZyk7CisjZW5kaWYKIAogICAg
IHVpbnQzMl90IG1fbWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgeyAwIH07IC8vIEZvciB2
YXJhcmdzOiB0aGUgcHJvZmlsZWQgbWF4aW11bSBudW1iZXIgb2YgYXJndW1lbnRzLiBGb3IgZGly
ZWN0OiB0aGUgbnVtYmVyIG9mIHN0YWNrIHNsb3RzIGFsbG9jYXRlZCBmb3IgYXJndW1lbnRzLgog
ICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1fZG9uZUxvY2F0aW9uOwog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX3Nsb3dQYXRoQ2FsbERl
c3RpbmF0aW9uOwogICAgIHVuaW9uIFVuaW9uVHlwZSB7Ci0gICAgICAgIFVuaW9uVHlwZSgpIAot
I2lmIEVOQUJMRShKSVQpCi0gICAgICAgICAgICA6IGRhdGFJQyB7IG51bGxwdHIsIEludmFsaWRH
UFJSZWcgfQotI2Vsc2UKKyAgICAgICAgVW5pb25UeXBlKCkKICAgICAgICAgICAgIDogZGF0YUlD
IHsgbnVsbHB0ciB9Ci0jZW5kaWYKICAgICAgICAgeyB9CisKICAgICAgICAgc3RydWN0IERhdGFJ
QyB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9t
b25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbjsKLSNpZiBFTkFCTEUoSklUKQotICAgICAgICAgICAg
R1BSUmVnIG1fY2FsbExpbmtJbmZvR1BSOwotI2VuZGlmCiAgICAgICAgIH0gZGF0YUlDOwogCiAg
ICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb25OZWFyQ2FsbDxKU0ludGVy
bmFsUHRyVGFnPiBtX2NhbGxMb2NhdGlvbjsKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkRhdGFM
YWJlbFB0cjxKU0ludGVybmFsUHRyVGFnPiBtX2NhbGxlZUxvY2F0aW9uOwotICAgICAgICAgICAg
Q29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9zbG93UGF0aFN0YXJ0OwotICAg
ICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9mYXN0UGF0aFN0
YXJ0OwogICAgICAgICB9IGNvZGVJQzsKICAgICB9IHU7CiAKQEAgLTQ2MywxMiArNDM5LDExNiBA
QCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxM
aW5rSW5mbz4gewogICAgIGJvb2wgbV9jbGVhcmVkQnlKZXR0aXNvbiA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9jYWxsVHlwZSA6IDQ7IC8vIENhbGxUeXBlCiAgICAgdW5zaWduZWQgbV91c2VEYXRhSUMg
OiAxOyAvLyBVc2VEYXRhSUMKKyAgICB1bnNpZ25lZCBtX3R5cGUgOiAxOyAvLyBUeXBlCiAjaWYg
RU5BQkxFKEpJVCkKICAgICBHUFJSZWcgbV9jYWxsZWVHUFIgeyBJbnZhbGlkR1BSUmVnIH07Cisg
ICAgR1BSUmVnIG1fY2FsbExpbmtJbmZvR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogI2VuZGlmCiAg
ICAgdWludDMyX3QgbV9zbG93UGF0aENvdW50IHsgMCB9OwogfTsKIAorY2xhc3MgQmFzZWxpbmVD
YWxsTGlua0luZm8gZmluYWwgOiBwdWJsaWMgQ2FsbExpbmtJbmZvIHsKK3B1YmxpYzoKKyAgICBC
YXNlbGluZUNhbGxMaW5rSW5mbygpCisgICAgICAgIDogQ2FsbExpbmtJbmZvKFR5cGU6OkJhc2Vs
aW5lKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemUoVk0mLCBDYWxsVHlwZSwg
Qnl0ZWNvZGVJbmRleCwgQ2FsbEZyYW1lU2h1ZmZsZURhdGEqKTsKKworICAgIHZvaWQgc2V0Q29k
ZUxvY2F0aW9ucyhDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lTG9jYXRp
b24pCisgICAgeworICAgICAgICBtX2RvbmVMb2NhdGlvbiA9IGRvbmVMb2NhdGlvbjsKKyAgICB9
CisKKyNpZiBFTkFCTEUoSklUKQorICAgIEdQUlJlZyBjYWxsZWVHUFIoKSBjb25zdCB7IHJldHVy
biBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUdQUjsgfQorICAgIEdQUlJlZyBjYWxsTGlu
a0luZm9HUFIoKSBjb25zdCB7IHJldHVybiBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5r
SW5mb0dQUjsgfQorICAgIHZvaWQgc2V0Q2FsbExpbmtJbmZvR1BSKEdQUlJlZyBjYWxsTGlua0lu
Zm9HUFIpIHsgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvR1BSID09IHRoaXMtPmNhbGxMaW5r
SW5mb0dQUigpKTsgfQorI2VuZGlmCit9OworCitjbGFzcyBPcHRpbWl6aW5nQ2FsbExpbmtJbmZv
IGZpbmFsIDogcHVibGljIENhbGxMaW5rSW5mbyB7CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNz
IENhbGxMaW5rSW5mbzsKKworICAgIE9wdGltaXppbmdDYWxsTGlua0luZm8oQ29kZU9yaWdpbiBj
b2RlT3JpZ2luKQorICAgICAgICA6IENhbGxMaW5rSW5mbyhUeXBlOjpPcHRpbWl6aW5nLCBjb2Rl
T3JpZ2luKQorICAgIHsKKyAgICB9CisKKyNpZiBFTkFCTEUoSklUKQorICAgIHZvaWQgc2V0VXBD
YWxsKENhbGxUeXBlIGNhbGxUeXBlLCBHUFJSZWcgY2FsbGVlR1BSKQorICAgIHsKKyAgICAgICAg
bV9jYWxsVHlwZSA9IGNhbGxUeXBlOworICAgICAgICBtX2NhbGxlZUdQUiA9IGNhbGxlZUdQUjsK
KyAgICB9CisKKyAgICB2b2lkIHNldENvZGVMb2NhdGlvbnMoCisgICAgICAgIENvZGVMb2NhdGlv
bkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoU3RhcnQsCisgICAgICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVMb2NhdGlvbikKKyAgICB7CisgICAgICAg
IGlmICghaXNEYXRhSUMoKSkKKyAgICAgICAgICAgIG1fc2xvd1BhdGhTdGFydCA9IHNsb3dQYXRo
U3RhcnQ7CisgICAgICAgIG1fZG9uZUxvY2F0aW9uID0gZG9uZUxvY2F0aW9uOworICAgIH0KKwor
ICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGZhc3RQYXRoU3RhcnQoKTsK
KyAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFN0YXJ0KCk7
CisKKyAgICBHUFJSZWcgY2FsbGVlR1BSKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWVHUFI7IH0K
KyAgICBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsTGlua0lu
Zm9HUFI7IH0KKyAgICB2b2lkIHNldENhbGxMaW5rSW5mb0dQUihHUFJSZWcgY2FsbExpbmtJbmZv
R1BSKSB7IG1fY2FsbExpbmtJbmZvR1BSID0gY2FsbExpbmtJbmZvR1BSOyB9CisKKyAgICB2b2lk
IGVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBlcnMmKTsKKyAgICB2b2lkIGVtaXREaXJlY3RU
YWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYsIFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJl
cGFyZUZvclRhaWxDYWxsKTsKKyAgICB2b2lkIGluaXRpYWxpemVEaXJlY3RDYWxsKCk7CisgICAg
dm9pZCBzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+
KTsKKyAgICB2b2lkIGVtaXRTbG93UGF0aChWTSYsIENDYWxsSGVscGVycyYpOworCisgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVtaXRGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBHUFJSZWcg
Y2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSLCBVc2VEYXRhSUMpIFdBUk5fVU5VU0VE
X1JFVFVSTjsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZW1pdFRhaWxDYWxsRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgU2NvcGVkTGFtYmRhPHZvaWQoKT4m
JiBwcmVwYXJlRm9yVGFpbENhbGwpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyNlbmRpZgorcHJpdmF0
ZToKKyAgICBDb2RlTG9jYXRpb25OZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBtX2NhbGxMb2Nh
dGlvbjsKKyAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX3Nsb3dQYXRo
U3RhcnQ7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9mYXN0UGF0
aFN0YXJ0OworfTsKKworI2lmIEVOQUJMRShKSVQpCitpbmxpbmUgR1BSUmVnIENhbGxMaW5rSW5m
bzo6Y2FsbGVlR1BSKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgIGNhc2Ug
VHlwZTo6QmFzZWxpbmU6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBCYXNlbGlu
ZUNhbGxMaW5rSW5mbyo+KHRoaXMpLT5jYWxsZWVHUFIoKTsKKyAgICBjYXNlIFR5cGU6Ok9wdGlt
aXppbmc6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvKj4odGhpcyktPmNhbGxlZUdQUigpOworICAgIH0KKyAgICByZXR1cm4gSW52YWxpZEdQ
UlJlZzsKK30KKworaW5saW5lIEdQUlJlZyBDYWxsTGlua0luZm86OmNhbGxMaW5rSW5mb0dQUigp
IGNvbnN0Cit7CisgICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICBjYXNlIFR5cGU6OkJhc2VsaW5l
OgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZWxpbmVDYWxsTGlua0luZm8q
Pih0aGlzKS0+Y2FsbExpbmtJbmZvR1BSKCk7CisgICAgY2FzZSBUeXBlOjpPcHRpbWl6aW5nOgor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgT3B0aW1pemluZ0NhbGxMaW5rSW5mbyo+
KHRoaXMpLT5jYWxsTGlua0luZm9HUFIoKTsKKyAgICB9CisgICAgcmV0dXJuIEludmFsaWRHUFJS
ZWc7Cit9CisKK2lubGluZSB2b2lkIENhbGxMaW5rSW5mbzo6c2V0Q2FsbExpbmtJbmZvR1BSKEdQ
UlJlZyBjYWxsTGlua0luZm9HUFIpCit7CisgICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICBjYXNl
IFR5cGU6OkJhc2VsaW5lOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QmFzZWxpbmVDYWxs
TGlua0luZm8qPih0aGlzKS0+c2V0Q2FsbExpbmtJbmZvR1BSKGNhbGxMaW5rSW5mb0dQUik7Cisg
ICAgY2FzZSBUeXBlOjpPcHRpbWl6aW5nOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3B0
aW1pemluZ0NhbGxMaW5rSW5mbyo+KHRoaXMpLT5zZXRDYWxsTGlua0luZm9HUFIoY2FsbExpbmtJ
bmZvR1BSKTsKKyAgICB9Cit9CisjZW5kaWYKKwogaW5saW5lIENvZGVPcmlnaW4gZ2V0Q2FsbExp
bmtJbmZvQ29kZU9yaWdpbihDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAgICByZXR1
cm4gY2FsbExpbmtJbmZvLmNvZGVPcmlnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCmluZGV4IGQ1OTA0YThlOTBhMmNkYTQ2OTM3
MWY4N2U5NzdiZDJjOGQzOTMxN2IuLjg4YmNkMzUwMzRiMGZhMDAxMGQ1YzVlMjhmYTFkNzI4MzY1
MjNjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
U3RhdHVzLmNwcApAQCAtMzI0LDggKzMyNCw3IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgaWYgKCFzdGF0dXMuY2FsbExpbmtJbmZvKQog
ICAgICAgICAgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJIYXZlIENhbGxMaW5rSW5mbyB3aXRoIENvZGVPcmlnaW4gPSAiLCBz
dGF0dXMuY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICAgICAgZGF0
YUxvZ0xuSWYoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSwgIkhhdmUgQ2FsbExpbmtJ
bmZvIHdpdGggQ29kZU9yaWdpbiA9ICIsIGNvZGVPcmlnaW4sICJcbiIpOwogICAgICAgICAgICAg
Q2FsbExpbmtTdGF0dXMgcmVzdWx0OwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5tX2xv
Y2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRl
eCAxNDEwZjRlZjVmNzJkNDU4OGRkYmYwZTY1OTEyM2QyZTMyYzI3Y2IxLi41NmZmZDUyZjQ4OGYy
YzM0Mjg0ZmQ1ZjRjMWVhNGJmZmZlMjkxM2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDQ1LDExICs0NDUsMTEgQEAgYm9vbCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBpZiBjb25zdGV4cHIgKGRlY2x0
eXBlKGJ5dGVjb2RlKTo6b3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsKSB7CiAgICAgICAgICAgICBD
YWxsRnJhbWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0YSA9IENhbGxGcmFtZVNodWZmbGVEYXRhOjpj
cmVhdGVGb3JCYXNlbGluZU9yTExJbnRUYWlsQ2FsbChieXRlY29kZSwgbnVtUGFyYW1ldGVycygp
KTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLmluaXRpYWxpemVEYXRhSUMo
dm0sIENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IoZGVjbHR5cGUoYnl0ZWNvZGUpOjpvcGNvZGVJ
RCksIGluc3RydWN0aW9uLmluZGV4KCksICZzaHVmZmxlRGF0YSk7CisgICAgICAgICAgICBtZXRh
ZGF0YS5tX2NhbGxMaW5rSW5mby5pbml0aWFsaXplKHZtLCBDYWxsTGlua0luZm86OmNhbGxUeXBl
Rm9yKGRlY2x0eXBlKGJ5dGVjb2RlKTo6b3Bjb2RlSUQpLCBpbnN0cnVjdGlvbi5pbmRleCgpLCAm
c2h1ZmZsZURhdGEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjZW5kaWYKLSAg
ICAgICAgbWV0YWRhdGEubV9jYWxsTGlua0luZm8uaW5pdGlhbGl6ZURhdGFJQyh2bSwgQ2FsbExp
bmtJbmZvOjpjYWxsVHlwZUZvcihkZWNsdHlwZShieXRlY29kZSk6Om9wY29kZUlEKSwgaW5zdHJ1
Y3Rpb24uaW5kZXgoKSwgbnVsbHB0cik7CisgICAgICAgIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZv
LmluaXRpYWxpemUodm0sIENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IoZGVjbHR5cGUoYnl0ZWNv
ZGUpOjpvcGNvZGVJRCksIGluc3RydWN0aW9uLmluZGV4KCksIG51bGxwdHIpOwogICAgIH07CiAK
ICNkZWZpbmUgTElOS19GSUVMRChfX2ZpZWxkKSBcCkBAIC03OTIsNyArNzkyLDcgQEAgdm9pZCBD
b2RlQmxvY2s6OnNldHVwV2l0aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJVENv
ZGU+IGppdENvZGUpCiAgICAgICAgIGZvciAoYXV0byYgdW5saW5rZWRDYWxsTGlua0luZm8gOiBq
aXRDb2RlLT5tX3VubGlua2VkQ2FsbHMpIHsKICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvID0gZ2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChsb2NrZXIsIHVubGlu
a2VkQ2FsbExpbmtJbmZvLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgQVNTRVJUKGNhbGxM
aW5rSW5mbyk7Ci0gICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENvZGVMb2NhdGlvbnMoeyB9
LCB1bmxpbmtlZENhbGxMaW5rSW5mby5kb25lTG9jYXRpb24pOworICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8QmFzZWxpbmVDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pLT5zZXRDb2RlTG9jYXRp
b25zKHVubGlua2VkQ2FsbExpbmtJbmZvLmRvbmVMb2NhdGlvbik7CiAgICAgICAgIH0KIAogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGppdENvZGUtPm1fY29uc3RhbnRQb29sLnNpemUo
KTsgKytpKSB7CkBAIC0xNjI1LDcgKzE2MjUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkoVk0mIHZtKQogICAgIGlmIChKSVRDb2RlOjpjb3VsZEJlSW50ZXJwcmV0
ZWQoaml0VHlwZSgpKSkgewogICAgICAgICBmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCk7CiAg
ICAgICAgIC8vIElmIHRoZSBDb2RlQmxvY2sgaXMgREZHIG9yIEZUTCwgQ2FsbExpbmtJbmZvIGlu
IG1ldGFkYXRhIGlzIG5vdCByZWxhdGVkLgotICAgICAgICBmb3JFYWNoTExJbnRPckJhc2VsaW5l
Q2FsbExpbmtJbmZvKFsmXShDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykgeworICAgICAgICBm
b3JFYWNoTExJbnRPckJhc2VsaW5lQ2FsbExpbmtJbmZvKFsmXShCYXNlbGluZUNhbGxMaW5rSW5m
byYgY2FsbExpbmtJbmZvKSB7CiAgICAgICAgICAgICBjYWxsTGlua0luZm8udmlzaXRXZWFrKHZt
KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTY5Myw3ICsxNjkzLDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogdm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFw
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiB7CiAgICAg
aWYgKEpJVENvZGU6OmNvdWxkQmVJbnRlcnByZXRlZChqaXRUeXBlKCkpKSB7Ci0gICAgICAgIGZv
ckVhY2hMTEludE9yQmFzZWxpbmVDYWxsTGlua0luZm8oWyZdKENhbGxMaW5rSW5mbyYgY2FsbExp
bmtJbmZvKSB7CisgICAgICAgIGZvckVhY2hMTEludE9yQmFzZWxpbmVDYWxsTGlua0luZm8oWyZd
KEJhc2VsaW5lQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pIHsKICAgICAgICAgICAgIHJlc3Vs
dC5hZGQoY2FsbExpbmtJbmZvLmNvZGVPcmlnaW4oKSwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZh
bHVlLmNhbGxMaW5rSW5mbyA9ICZjYWxsTGlua0luZm87CiAgICAgICAgIH0pOwogICAgIH0KQEAg
LTIzMjQsNyArMjMyNCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpqZXR0aXNvbihQcm9maWxlcjo6SmV0
dGlzb25SZWFzb24gcmVhc29uLCBSZW9wdGltaXphdGlvbk1vZGUgbW9kCiAgICAgICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT5zZXRDbGVhcmVkQnlKZXR0aXNvbigpOwogI2VuZGlmCiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3JFYWNoTExJbnRPckJhc2VsaW5lQ2FsbExpbmtJbmZv
KFsmXShDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykgeworICAgICAgICAgICAgZm9yRWFjaExM
SW50T3JCYXNlbGluZUNhbGxMaW5rSW5mbyhbJl0oQmFzZWxpbmVDYWxsTGlua0luZm8mIGNhbGxM
aW5rSW5mbykgewogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby5zZXRDbGVhcmVkQnlKZXR0
aXNvbigpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCmluZGV4IDg0
NWZkYmU2NjMwNjliNGY4ZjZjNGUxNGVkMjlhNzNkM2Y3NmM0NzYuLjk2NTdiZjI2MDQzZDM5ZTJm
MDhiODEyMDE0OTYyNmRhNDlmMjVkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaApAQCAtNDQsNyArNDQsNyBA
QCBjbGFzcyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIFByb3h5YWJsZUFj
Y2Vzc0Nhc2UgewogICAgIC8vIFBvbHltb3JwaGljQWNjZXNzIGNhbiBiZSBkZXN0cm95ZWQgd2hp
bGUgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIGlzIGFsaXZlIGlmIHdlIGFyZSBkZXN0cm95aW5nIFBv
bHltb3JwaGljQWNjZXNzCiAgICAgLy8gd2hpbGUgd2UgYXJlIGV4ZWN1dGluZyBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUuIEl0IGlzIG5vdCBwb3NzaWJsZSB0aGF0IEdldHRlclNldHRlckFjY2Vzc0Nh
c2UgaXMgYWxpdmUgd2hpbGUKICAgICAvLyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgaXMgZGVzdHJv
eWVkLgotICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsTGlua0luZm87IH0KKyAgICBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8o
KSBjb25zdCB7IHJldHVybiBtX2NhbGxMaW5rSW5mbzsgfQogICAgIEpTT2JqZWN0KiBjdXN0b21T
bG90QmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tU2xvdEJhc2UuZ2V0KCk7IH0KICAgICBz
dGQ6Om9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9tQXR0cmlidXRlOyB9CiAKQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsK
ICAgICBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKGNvbnN0IEdldHRlclNldHRlckFjY2Vzc0Nhc2Um
KTsKIAogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9jdXN0b21TbG90QmFzZTsKLSAgICBD
YWxsTGlua0luZm8qIG1fY2FsbExpbmtJbmZvIHsgbnVsbHB0ciB9OworICAgIE9wdGltaXppbmdD
YWxsTGlua0luZm8qIG1fY2FsbExpbmtJbmZvIHsgbnVsbHB0ciB9OwogICAgIEZ1bmN0aW9uUHRy
PEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBtX2N1c3RvbUFjY2Vzc29yOwogICAgIHN0ZDo6b3B0aW9u
YWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gbV9kb21BdHRyaWJ1dGU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAppbmRleCBk
MDQyZDFhNGZlMjlkMDNhMDAzYzgwYzUxZjcxNmQ5NjNlOGY5NjkzLi42MTdhZjAwZjIyMzg0MTNk
OTc0NTU5YzRlY2Q3MGY0Nzc4NWQwMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMjI0LDcgKzIyNCw3IEBAIHN0cnVj
dCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGUgeyBFQ01B
TW9kZTo6c2xvcHB5KCkgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVj
dHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKICAgICBWZWN0b3I8U3RydWN0dXJlSUQ+IHdlYWtT
dHJ1Y3R1cmVzOwotICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBC
YWc8T3B0aW1pemluZ0NhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogICAgIGJvb2wgbV9k
b2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA6IDE7CiAgICAgYm9vbCBtX2RvZXNDYWxscyA6IDE7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAppbmRleCAwMmRkN2Y1
MDU1ZmQ3YjYyYjg3NTMwMmY4OWIxMWNlY2U2NjliNzljLi4yMzQxYzAzYmIxZmQ5ODZhNTkyNzRm
YjI5NDNhYWE1NWMwMmI0YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
cGF0Y2guY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgc3RhdGljIHZvaWQgcmV2ZXJ0Q2FsbChWTSYg
dm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICBjYWxsTGlua0luZm8uY2xlYXJDb2RlQmxvY2soKTsKICAg
ICAgICAgaWYgKCFjYWxsTGlua0luZm8uY2xlYXJlZEJ5SmV0dGlzb24oKSkKLSAgICAgICAgICAg
IGNhbGxMaW5rSW5mby5pbml0aWFsaXplRGlyZWN0Q2FsbCgpOworICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8T3B0aW1pemluZ0NhbGxMaW5rSW5mbyY+KGNhbGxMaW5rSW5mbykuaW5pdGlhbGl6ZURp
cmVjdENhbGwoKTsKICNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghY2FsbExpbmtJ
bmZvLmNsZWFyZWRCeUpldHRpc29uKCkpIHsKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHZvaWQgcmVw
YXRjaEluc3RhbmNlT2YoCiB9CiAKIHZvaWQgbGlua0RpcmVjdENhbGwoCi0gICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDb2RlQmxvY2sqIGNhbGxl
ZUNvZGVCbG9jaywKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgT3B0aW1pemluZ0NhbGxMaW5r
SW5mbyYgY2FsbExpbmtJbmZvLCBDb2RlQmxvY2sqIGNhbGxlZUNvZGVCbG9jaywKICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cikKIHsKICAgICBBU1NFUlQo
IWNhbGxMaW5rSW5mby5zdHViKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBh
dGNoLmgKaW5kZXggMjBhNTYxODA4YjdjMzQ3NzlkNDQxZjM5Y2Q0MjE0ZDM5MDg3Y2JmNy4uZGY4
NTc4Yzg2YTEwMTRiYWViOWFmZmFhNDVkNGIxMzBjZjlhZjRmYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgQ2FsbExpbmtJbmZvOworY2xhc3MgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzsK
IGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCiBlbnVtIGNsYXNzIEdldEJ5S2luZCB7CkBAIC03
MSw3ICs3Miw3IEBAIHZvaWQgcmVwYXRjaENoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0
KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJCiB2b2lkIHJlcGF0Y2hTZXRQcml2
YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIFN0cnVjdHVy
ZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlcGF0
Y2hJbnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgSlNWYWx1
ZSBwcm90b3R5cGUsIFN0cnVjdHVyZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7CiB2b2lkIGxp
bmtNb25vbW9ycGhpY0NhbGwoVk0mLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxv
Y2sqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4pOwotdm9pZCBsaW5rRGlyZWN0Q2FsbChDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDb2Rl
QmxvY2sqLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwordm9pZCBsaW5r
RGlyZWN0Q2FsbChDYWxsRnJhbWUqLCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2Nr
KiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KTsKIHZvaWQgbGlua1Nsb3dG
b3IoQ2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJik7CiB2b2lkIHVubGlua0NhbGwoVk0mLCBDYWxs
TGlua0luZm8mKTsKIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENhbGxWYXJpYW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb25EYXRhLmgKaW5kZXggNDYxMzE3YmQ4MDhhOTEzMGNkOTViNjRiOTNl
NTNhMzNkYWY5M2Y3MC4uMGRiNGFmZmFlNzg1NTA5ZmUxMjc3MmI1Yzg3NzRkZThkODUzYWRmMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgKQEAgLTExMSw3ICsx
MTEsNyBAQCBjbGFzcyBDb21tb25EYXRhIDogcHVibGljIE1hdGhJQ0hvbGRlciB7CiAgICAgCiAg
ICAgdm9pZCBjbGVhcldhdGNocG9pbnRzKCk7CiAKLSAgICBDYWxsTGlua0luZm8qIGFkZENhbGxM
aW5rSW5mbyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCisgICAgT3B0aW1pemluZ0NhbGxMaW5rSW5m
byogYWRkQ2FsbExpbmtJbmZvKENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICB7CiAgICAgICAg
IHJldHVybiBtX2NhbGxMaW5rSW5mb3MuYWRkKGNvZGVPcmlnaW4pOwogICAgIH0KQEAgLTEzMSw3
ICsxMzEsNyBAQCBjbGFzcyBDb21tb25EYXRhIDogcHVibGljIE1hdGhJQ0hvbGRlciB7CiAgICAg
UmVjb3JkZWRTdGF0dXNlcyByZWNvcmRlZFN0YXR1c2VzOwogICAgIFZlY3RvcjxKdW1wUmVwbGFj
ZW1lbnQ+IG1fanVtcFJlcGxhY2VtZW50czsKICAgICBCYWc8U3RydWN0dXJlU3R1YkluZm8+IG1f
c3R1YkluZm9zOwotICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBC
YWc8T3B0aW1pemluZ0NhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogICAgIFlhcnI6Ollh
cnJCb3llck1veWVyRGF0YSBtX2JveWVyTW9vcmVEYXRhOwogICAgIAogICAgIFNjcmF0Y2hCdWZm
ZXIqIGNhdGNoT1NSRW50cnlCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCmluZGV4IGFlMzhmNmY3ZDI1ZTUwOGM5MGIyNThhOTBmMzczM2QyNTIw
ZjgwMjMuLmViMjBjZTY0NWFmMGJiNTg0NTVmNjgwM2U4ZDQ3MjRhNzRhNzFmOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC0yNjAsMTQgKzI2
MCwxNCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAg
ICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wcml2YXRlQnJhbmRBY2Nlc3NlcywgbGlua0J1ZmZl
cik7CiAKICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fanNDYWxscykgewotICAgICAgICBDYWxs
TGlua0luZm8mIGluZm8gPSAqcmVjb3JkLmluZm87CisgICAgICAgIGF1dG8mIGluZm8gPSAqcmVj
b3JkLmluZm87CiAgICAgICAgIGluZm8uc2V0Q29kZUxvY2F0aW9ucygKICAgICAgICAgICAgIGxp
bmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihyZWNvcmQuc2xvd1BhdGhTdGFy
dCksCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4o
cmVjb3JkLmRvbmVMb2NhdGlvbikpOwogICAgIH0KICAgICAKICAgICBmb3IgKGF1dG8mIHJlY29y
ZCA6IG1fanNEaXJlY3RDYWxscykgewotICAgICAgICBDYWxsTGlua0luZm8mIGluZm8gPSAqcmVj
b3JkLmluZm87CisgICAgICAgIGF1dG8mIGluZm8gPSAqcmVjb3JkLmluZm87CiAgICAgICAgIGlu
Zm8uc2V0Q29kZUxvY2F0aW9ucygKICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihyZWNvcmQuc2xvd1BhdGgpLAogICAgICAgICAgICAgQ29kZUxvY2F0
aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmgKaW5kZXggNDgzZjk2ZjhhNDRlNzRiNjQzMGM4Y2ZlZjQ5YmUxNGJk
NWM2NDFlMS4uZTk0MmJlMmJmNzJlY2VkNDBhNTEzYTJkYjhkMDg0MDRiYzM5NGRlOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMjM0LDEyICsyMzQs
MTIgQEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAg
bV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwogICAgIH0KIAotICAgIHZv
aWQgYWRkSlNDYWxsKExhYmVsIHNsb3dQYXRoU3RhcnQsIExhYmVsIGRvbmVMb2NhdGlvbiwgQ2Fs
bExpbmtJbmZvKiBpbmZvKQorICAgIHZvaWQgYWRkSlNDYWxsKExhYmVsIHNsb3dQYXRoU3RhcnQs
IExhYmVsIGRvbmVMb2NhdGlvbiwgT3B0aW1pemluZ0NhbGxMaW5rSW5mbyogaW5mbykKICAgICB7
CiAgICAgICAgIG1fanNDYWxscy5hcHBlbmQoSlNDYWxsUmVjb3JkKHNsb3dQYXRoU3RhcnQsIGRv
bmVMb2NhdGlvbiwgaW5mbykpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGFkZEpTRGlyZWN0Q2Fs
bChMYWJlbCBzbG93UGF0aCwgQ2FsbExpbmtJbmZvKiBpbmZvKQorICAgIHZvaWQgYWRkSlNEaXJl
Y3RDYWxsKExhYmVsIHNsb3dQYXRoLCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKiBpbmZvKQogICAg
IHsKICAgICAgICAgbV9qc0RpcmVjdENhbGxzLmFwcGVuZChKU0RpcmVjdENhbGxSZWNvcmQoc2xv
d1BhdGgsIGluZm8pKTsKICAgICB9CkBAIC0zMzgsNyArMzM4LDcgQEAgY2xhc3MgSklUQ29tcGls
ZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKIAogCiAgICAgc3RydWN0IEpTQ2FsbFJlY29yZCB7
Ci0gICAgICAgIEpTQ2FsbFJlY29yZChMYWJlbCBzbG93UGF0aFN0YXJ0LCBMYWJlbCBkb25lTG9j
YXRpb24sIENhbGxMaW5rSW5mbyogaW5mbykKKyAgICAgICAgSlNDYWxsUmVjb3JkKExhYmVsIHNs
b3dQYXRoU3RhcnQsIExhYmVsIGRvbmVMb2NhdGlvbiwgT3B0aW1pemluZ0NhbGxMaW5rSW5mbyog
aW5mbykKICAgICAgICAgICAgIDogc2xvd1BhdGhTdGFydChzbG93UGF0aFN0YXJ0KQogICAgICAg
ICAgICAgLCBkb25lTG9jYXRpb24oZG9uZUxvY2F0aW9uKQogICAgICAgICAgICAgLCBpbmZvKGlu
Zm8pCkBAIC0zNDcsMTggKzM0NywxOCBAQCBjbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2Fs
bEhlbHBlcnMgewogICAgICAgICAKICAgICAgICAgTGFiZWwgc2xvd1BhdGhTdGFydDsKICAgICAg
ICAgTGFiZWwgZG9uZUxvY2F0aW9uOwotICAgICAgICBDYWxsTGlua0luZm8qIGluZm87CisgICAg
ICAgIE9wdGltaXppbmdDYWxsTGlua0luZm8qIGluZm87CiAgICAgfTsKICAgICAKICAgICBzdHJ1
Y3QgSlNEaXJlY3RDYWxsUmVjb3JkIHsKLSAgICAgICAgSlNEaXJlY3RDYWxsUmVjb3JkKExhYmVs
IHNsb3dQYXRoLCBDYWxsTGlua0luZm8qIGluZm8pCisgICAgICAgIEpTRGlyZWN0Q2FsbFJlY29y
ZChMYWJlbCBzbG93UGF0aCwgT3B0aW1pemluZ0NhbGxMaW5rSW5mbyogaW5mbykKICAgICAgICAg
ICAgIDogc2xvd1BhdGgoc2xvd1BhdGgpCiAgICAgICAgICAgICAsIGluZm8oaW5mbykKICAgICAg
ICAgewogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBMYWJlbCBzbG93UGF0aDsKLSAgICAg
ICAgQ2FsbExpbmtJbmZvKiBpbmZvOworICAgICAgICBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKiBp
bmZvOwogICAgIH07CiAgICAgCiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRHZXRC
eUlkR2VuZXJhdG9yPiwgND4gbV9nZXRCeUlkczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDEzZjkzMjQxNzViYjhlZTViZjg3YmU1M2NlMDhiOTg1
Njc2ZGEwOTUuLjQxZjRiZDMxZjgxMzQ1MjRlZmNhNjZiYWNmNGQwODVmNTJjYWIyMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMzY3OSw3ICsz
Njc5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRocm93U3RhdGljRXJy
b3IsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBzY29wZS50aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8RXJy
b3JUeXBlV2l0aEV4dGVuc2lvbj4oZXJyb3JUeXBlKSwgZXJyb3JNZXNzYWdlKSk7CiB9CiAKLUpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwgdm9pZCwgKENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvLCBKU0Z1bmN0aW9uKiBjYWxsZWUpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsLCB2b2lkLCAoT3B0aW1pemlu
Z0NhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvLCBKU0Z1bmN0aW9uKiBjYWxsZWUpKQogewogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgpOwog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKaW5kZXggYmJlYjZjN2JkZTdlNWNmNzFkYzYzZGUyYTIwODFiMTlh
OGZkYTdjZS4uYjVlZDhlYzU1YWE1Y2EyYzQ3OTg5ZDEzNjdhYjVkNGNiYjBkMDZmNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTM1LDYgKzM1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERhdGVJbnN0YW5jZTsKIGNsYXNzIEpTQmlnSW50Owor
Y2xhc3MgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzsKIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBU
YWJsZTsKIGNsYXNzIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjsKIApAQCAtMzE0LDcgKzMxNSw3
IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3UmF3T2JqZWN0LCBjaGFy
KiwgKFZNKiwgU3RydWN0dXJlKiwgaW50MzJfCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHksIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSos
IEJ1dHRlcmZseSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3T2Jq
ZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aCwgSlNDZWxs
KiwgKFZNKiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoLCBCdXR0ZXJmbHkqKSk7CiAKLUpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwsIHZvaWQsIChD
YWxsTGlua0luZm8qLCBKU0Z1bmN0aW9uKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwgdm9pZCwgKE9wdGltaXppbmdDYWxsTGlua0luZm8qLCBK
U0Z1bmN0aW9uKikpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRhdGVH
ZXRGdWxsWWVhciwgRW5jb2RlZEpTVmFsdWUsIChWTSosIERhdGVJbnN0YW5jZSopKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGF0ZUdldFVUQ0Z1bGxZZWFyLCBFbmNvZGVk
SlNWYWx1ZSwgKFZNKiwgRGF0ZUluc3RhbmNlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggZTYxZjg5NGJlMTA4
Y2NiZmExMmRiMjA4OTI5ZWNkZTJjM2RmMGYyNC4uMjk2NDM3MWVhMjhjMDZjYjQzZGQ4M2E0ZDM4
MTM2NjlhZmE4MzIzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgaXNFbXVsYXRlZFRhaWwgPyAq
c3RhdGljSW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygpIDogc3Rh
dGljT3JpZ2luOwogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxs
U2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoZHluYW1pY09y
aWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgCi0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0g
bV9qaXQuaml0Q29kZSgpLT5jb21tb24uYWRkQ2FsbExpbmtJbmZvKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CisgICAgYXV0byogaW5mbyA9IG1faml0LmppdENvZGUoKS0+Y29tbW9uLmFkZENhbGxM
aW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIGluZm8tPnNldFVwQ2FsbChjYWxs
VHlwZSwgY2FsbGVlUGF5bG9hZEdQUik7CiAgICAgCiAgICAgYXV0byBzZXRSZXN1bHRBbmRSZXNl
dFN0YWNrID0gWyZdICgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGE3NjJiMjlmN2MwNDhhYzU2MDg2MmRjM2JkZDM0ZGYw
ZDNmNGQzZjguLjE5ZGVkMzU0ODAzNTAyMzIyOWEwYzc1OTU5ZDYwZTEyMThmOTg5ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApA
QCAtODkwLDcgKzg5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5v
ZGUpCiAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIobV9qaXQuZ3JhcGgoKS5zdGFj
a1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICB9OwogICAg
IAotICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gbV9qaXQuaml0Q29kZSgpLT5jb21t
b24uYWRkQ2FsbExpbmtJbmZvKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
YXV0byogY2FsbExpbmtJbmZvID0gbV9qaXQuaml0Q29kZSgpLT5jb21tb24uYWRkQ2FsbExpbmtJ
bmZvKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgY2FsbExpbmtJbmZvLT5z
ZXRVcENhbGwoY2FsbFR5cGUsIGNhbGxlZUdQUik7CiAKICAgICBpZiAobm9kZS0+b3AoKSA9PSBD
YWxsRXZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCmluZGV4IDAwZWRhNTZhODM1ODFhZWVlMDI0YzFmZjI1M2YwYzIwYTZkM2Q0NDguLmY4M2U1
ZmJhNjNiOGFlZWM0YWMwZGQxMzg2NjUzMjE1MDU1MzEwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwMjYzLDcgKzEwMjYzLDcgQEAg
SUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAotICAgICAgICAgICAgICAgIENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDYWxsTGlua0lu
Zm8obm9kZVNlbWFudGljT3JpZ2luKTsKKyAgICAgICAgICAgICAgICBhdXRvKiBjYWxsTGlua0lu
Zm8gPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhub2RlU2VtYW50aWNP
cmlnaW4pOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKAogICAgICAg
ICAgICAgICAgICAgICBub2RlT3AgPT0gQ29uc3RydWN0ID8gQ2FsbExpbmtJbmZvOjpDb25zdHJ1
Y3QgOiBDYWxsTGlua0luZm86OkNhbGwsIEdQUkluZm86OnJlZ1QwKTsKIApAQCAtMTAzOTcsNyAr
MTAzOTcsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgICAg
IHNodWZmbGVEYXRhLm51bVBhcmFtZXRlcnMgPSBqaXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRl
cnMoKTsKICAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVn
aXN0ZXJzKGppdC5jb2RlQmxvY2soKSk7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5j
b21tb24uYWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkQ2Fs
bExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxM
aW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6RGlyZWN0VGFpbENhbGwsIEludmFsaWRH
UFJSZWcpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBtYWluUGF0aCA9IGppdC5sYWJlbCgpOwpAQCAtMTA0MjksNyArMTA0Mjks
NyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZENh
bGxMaW5rSW5mbyhzZW1hbnRpY05vZGVPcmlnaW4pOworICAgICAgICAgICAgICAgIGF1dG8qIGNh
bGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkQ2FsbExpbmtJbmZvKHNlbWFu
dGljTm9kZU9yaWdpbik7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwo
CiAgICAgICAgICAgICAgICAgICAgIGlzQ29uc3RydWN0ID8gQ2FsbExpbmtJbmZvOjpEaXJlY3RD
b25zdHJ1Y3QgOiBDYWxsTGlua0luZm86OkRpcmVjdENhbGwsIEludmFsaWRHUFJSZWcpOwogCkBA
IC0xMDU1Nyw3ICsxMDU1Nyw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdp
c3RlcnMoaml0LmNvZGVCbG9jaygpKTsKIAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDYWxsTGlua0luZm8oY29k
ZU9yaWdpbik7CisgICAgICAgICAgICAgICAgYXV0byogY2FsbExpbmtJbmZvID0gc3RhdGUtPmpp
dENvZGUtPmNvbW1vbi5hZGRDYWxsTGlua0luZm8oY29kZU9yaWdpbik7CiAgICAgICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbCwgR1BSSW5m
bzo6cmVnVDApOwogCiAgICAgICAgICAgICAgICAgYXV0byBzbG93UGF0aCA9IGNhbGxMaW5rSW5m
by0+ZW1pdFRhaWxDYWxsRmFzdFBhdGgoaml0LCBHUFJJbmZvOjpyZWdUMCwgc2NvcGVkTGFtYmRh
PHZvaWQoKT4oWyZdewpAQCAtMTA3NjIsNyArMTA3NjIsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNh
bGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0
YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSkpOwogCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8g
PSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05vZGVPcmln
aW4pOworICAgICAgICAgICAgICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2Rl
LT5jb21tb24uYWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAKICAgICAgICAg
ICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lz
dGVycygpOwogICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuZXhjbHVkZShSZWdpc3RlclNl
dDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CkBAIC0xMTA0Niw3ICsxMTA0Niw3IEBA
IElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAKLSAgICAgICAgICAgICAgICBDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkQ2FsbExpbmtJ
bmZvKHNlbWFudGljTm9kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgYXV0byogY2FsbExpbmtJ
bmZvID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2Rl
T3JpZ2luKTsKIAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsKICAgICAg
ICAgICAgICAgICBHUFJSZWcgY2FsbGVlR1BSID0gcGFyYW1zW2FyZ0luZGV4KytdLmdwcigpOwpA
QCAtMTEyODgsNyArMTEyODgsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0
cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3Jp
Z2luKTsKKyAgICAgICAgICAgICAgICBhdXRvKiBjYWxsTGlua0luZm8gPSBzdGF0ZS0+aml0Q29k
ZS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05vZGVPcmlnaW4pOwogICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgR1BSSW5m
bzo6cmVnVDApOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9m
KENhbGxlckZyYW1lQW5kUEMpKSksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIs
IEdQUkluZm86OnJlZ1QxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxs
RnJhbWVTaHVmZmxlRGF0YS5jcHAKaW5kZXggNTAyZjlhMDcyMWRmMWUzMTA3OGY2OTlhM2NlZWRm
NTI5Nzg5MjFiOS4uM2RkNmUwY2IxYmY1NzdiOTM0MzQwYjQxMTdhNjU1OGE5MTI5NTFjOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5j
cHAKQEAgLTg1LDExICs4NSw2IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZURhdGE6OnNldHVwQ2Fs
bGVlU2F2ZVJlZ2lzdGVycyhjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCoKIAogQ2FsbEZyYW1l
U2h1ZmZsZURhdGEgQ2FsbEZyYW1lU2h1ZmZsZURhdGE6OmNyZWF0ZUZvckJhc2VsaW5lT3JMTElu
dFRhaWxDYWxsKGNvbnN0IE9wVGFpbENhbGwmIGJ5dGVjb2RlLCB1bnNpZ25lZCBudW1QYXJhbWV0
ZXJzKQogewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGNh
bGxlZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBjYWxsZWVKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5m
bzo6cmVnVDAgfTsKLSNlbmRpZgogICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRh
OwogICAgIHNodWZmbGVEYXRhLm51bVBhc3NlZEFyZ3MgPSBieXRlY29kZS5tX2FyZ2M7CiAgICAg
c2h1ZmZsZURhdGEubnVtUGFyYW1ldGVycyA9IG51bVBhcmFtZXRlcnM7CkBAIC0xMDUsOSArMTAw
LDkgQEAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgQ2FsbEZyYW1lU2h1ZmZsZURhdGE6OmNyZWF0ZUZv
ckJhc2VsaW5lT3JMTEludFRhaWxDYWxsKGNvbnMKICAgICAgICAgICAgICAgICBEYXRhRm9ybWF0
SlMpOwogICAgIH0KICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9
IFZhbHVlUmVjb3Zlcnk6OmluR1BSKGNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIERhdGFGb3JtYXRK
Uyk7CisgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoQmFzZWxp
bmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBEYXRhRm9ybWF0SlMpOwog
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJl
Y292ZXJ5OjppblBhaXIoY2FsbGVlSlNSLnRhZ0dQUigpLCBjYWxsZWVKU1IucGF5bG9hZEdQUigp
KTsKKyAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppblBhaXIoQmFzZWxp
bmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IudGFnR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVy
czo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKICAgICBzaHVmZmxlRGF0YS5zZXR1
cENhbGxlZVNhdmVSZWdpc3RlcnMoJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICBzaHVmZmxlRGF0YS5zaHJpbmtUb0ZpdCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRp
bmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
Y3BwCmluZGV4IGYwMzMyMWM1NGQ5NjYwM2U1ZmNmMjk3NGUxM2UwOTkwMGVjZWJjMzMuLjlmMzJm
MjdiOWNiYmNiODQxNTZjMDMwZDUzNWQyNDdmMDFmZWU4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKQEAgLTEwNSw3ICsx
MDUsNyBAQCB1bnNpZ25lZCBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lOjpjb21wdXRl
SGFzaChjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QQogCiBNYXJraW5nR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGNhc2VzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJ
RD4mJiB3ZWFrU3RydWN0dXJlcywgY29uc3QgSlNDZWxsKiBvd25lciwKLSAgICBjb25zdCBWZWN0
b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MpCisg
ICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPE9wdGltaXppbmdDYWxsTGlua0lu
Zm8+JiYgY2FsbExpbmtJbmZvcykKICAgICA6IFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRp
bmUoY29kZSwgdm0sIFdURk1vdmUoY2FzZXMpLCBXVEZNb3ZlKHdlYWtTdHJ1Y3R1cmVzKSkKICAg
ICAsIG1fY2VsbHMoY2VsbHMuc2l6ZSgpKQogICAgICwgbV9jYWxsTGlua0luZm9zKFdURk1vdmUo
Y2FsbExpbmtJbmZvcykpCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBNYXJraW5nR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3ImIHZp
c2kKIH0KIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKAotICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGNhc2VzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJ
RD4mJiB3ZWFrU3RydWN0dXJlcywgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpT
Q2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAorICAgIGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZN
JiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGNhc2VzLCBGaXhlZFZlY3Rv
cjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrU3RydWN0dXJlcywgY29uc3QgSlNDZWxsKiBvd25lciwgY29u
c3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPE9wdGltaXppbmdDYWxsTGlua0luZm8+JiYg
Y2FsbExpbmtJbmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRs
ZXJzLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRl
eCkKICAgICA6IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUo
Y2FzZXMpLCBXVEZNb3ZlKHdlYWtTdHJ1Y3R1cmVzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNh
bGxMaW5rSW5mb3MpKQogICAgICwgbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2Rl
QmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycykKQEAgLTE4OSw3ICsxODksNyBAQCBSZWY8UG9seW1v
cnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHViUm91dGluZSgKICAgICBj
b25zdCBKU0NlbGwqIG93bmVyLAogICAgIGJvb2wgbWFrZXNDYWxscywKICAgICBjb25zdCBWZWN0
b3I8SlNDZWxsKj4mIGNlbGxzLAotICAgIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZv
cywKKyAgICBCYWc8T3B0aW1pemluZ0NhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAg
IENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsCiAgICAgRGlzcG9zYWJs
ZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAppbmRleCAz
YTY3ZGZiYzU4NmZiN2E1Y2RlZmYyMTVmODQ0Njg4YTIwY2I5ZTZhLi41NDgyZjQ5YmUzNmRiZjI4
YTUxMGM2NDBkMDJkZGMxOTdmNjE3YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQ29k
ZU9yaWdpblBvb2w7CiBjbGFzcyBBY2Nlc3NDYXNlOwogY2xhc3MgQ2FsbExpbmtJbmZvOwogY2xh
c3MgSklUU3R1YlJvdXRpbmVTZXQ7CitjbGFzcyBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOwogCiAv
LyBVc2UgdGhpcyBzdHViIHJvdXRpbmUgaWYgeW91IGtub3cgdGhhdCB5b3VyIGNvZGUgbWlnaHQg
YmUgb24gc3RhY2sgd2hlbgogLy8gZWl0aGVyIEdDIG9yIG90aGVyIGtpbmRzIG9mIHN0dWIgZGVs
ZXRpb24gaGFwcGVuLiBCYXNpY2FseSwgaWYgeW91ciBzdHViCkBAIC0xMjQsNyArMTI1LDcgQEAg
Y2xhc3MgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBQb2x5bW9ycGhpY0Fj
Y2Vzc0pJVFN0dWJSb3V0aW5lIHsKICAgICB1c2luZyBCYXNlID0gUG9seW1vcnBoaWNBY2Nlc3NK
SVRTdHViUm91dGluZTsKIAogICAgIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAg
ICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBW
TSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgRml4ZWRWZWN0b3I8U3RydWN0
dXJlSUQ+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJh
ZzxDYWxsTGlua0luZm8+JiYpOworICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2Fz
ZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmLCBjb25zdCBKU0NlbGwqIG93bmVyLCBj
b25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8T3B0aW1pemluZ0NhbGxMaW5rSW5mbz4mJik7CiAg
ICAgfk1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSBvdmVycmlkZTsKICAgICAKIHByb3Rl
Y3RlZDoKQEAgLTEzNCw3ICsxMzUsNyBAQCBjbGFzcyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0
aW5lIDogcHVibGljIFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUgewogCiBwcml2YXRl
OgogICAgIEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PiBtX2NlbGxzOwotICAgIEJh
ZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBCYWc8T3B0aW1pemluZ0NhbGxM
aW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogfTsKIAogCkBAIC0xNDUsNyArMTQ2LDcgQEAgY2xh
c3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBwdWJs
aWMgTWFya2luZ0dDQXdhcmVKSVQKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gTWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZTsKIAotICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNl
cHRpb25IYW5kbGVyKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0
clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgRml4ZWRWZWN0
b3I8U3RydWN0dXJlSUQ+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0Nl
bGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYsIENvZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0
ZUluZGV4KTsKKyAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBG
aXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlE
PiYmLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8T3B0
aW1pemluZ0NhbGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRlSW5k
ZXgpOwogICAgIH5HQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcigpIGZp
bmFsOwogCiAgICAgdm9pZCBhYm91dFRvRGllKCkgZmluYWw7CkBAIC0xODEsNyArMTgyLDcgQEAg
Y2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBw
dWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIAogUmVmPFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJv
dXRpbmU+IGNyZWF0ZUlDSklUU3R1YlJvdXRpbmUoCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4mJiBjYXNlcywgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1N0cnVjdHVyZXMs
IFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0NhbGxzLAotICAgIGNvbnN0IFZl
Y3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywKKyAgICBj
b25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8T3B0aW1pemluZ0NhbGxMaW5rSW5mbz4mJiBjYWxs
TGlua0luZm9zLAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMs
IERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRleCk7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
aW5kZXggMjQ0YjNmZWI2OWI0YTBmNDlmMGJjNDNkMWU0YWI0NDlhMzJlNmI5Ny4uZWUzY2M0Nzhm
ZjQ3ZmFkYTcxZWM5ZGMxOGZhZDFkMzQ1NTQ1NjliNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCkBAIC00MiwxMCArNDIsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotbmFt
ZXNwYWNlIHsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgY2FsbGVlSlNSID0gSlNSSW5mbzo6
anNSZWdUMTA7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX3JldChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHJldHVy
blZhbHVlSlNSLCBjYWxsRnJhbWVSZWdpc3RlcikpOwpAQCAtMjAwLDExICsxOTYsMTEgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXMKIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIocmVnaXN0ZXJP
ZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgY2Fs
bEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIGxvYWRWYWx1ZShB
ZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgY2FsbGVlSlNSKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpT
UiwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIHJlZ1QzKSk7CisgICAg
bG9hZFZhbHVlKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3Rlcikg
KiBDYWxsRnJhbWVTbG90OjpjYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBCYXNl
bGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUik7CiAgICAgbG9hZEdsb2JhbE9iamVjdChyZWdU
Myk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIgPSByZWdUMjsKLSAgICBt
YXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wQ2FsbEV2YWw6Ok1ldGFk
YXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBjYWxsTGlua0luZm9HUFIpOwotICAgIGVtaXRW
aXJ0dWFsQ2FsbFdpdGhvdXRNb3ZpbmdHbG9iYWxPYmplY3QoKm1fdm0sIGNhbGxMaW5rSW5mb0dQ
UiwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0
YShieXRlY29kZSwgT3BDYWxsRXZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCks
IEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBlbWl0VmlydHVh
bENhbGxXaXRob3V0TW92aW5nR2xvYmFsT2JqZWN0KCptX3ZtLCBCYXNlbGluZUNhbGxSZWdpc3Rl
cnM6OmNhbGxMaW5rSW5mb0dQUiwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwogICAgIHJlc2V0U1AoKTsK
IH0KIApAQCAtMjE3LDEyICsyMTMsMTEgQEAgYm9vbCBKSVQ6OmNvbXBpbGVUYWlsQ2FsbChjb25z
dCBPcCYsIFVubGlua2VkQ2FsbExpbmtJbmZvKiwgdW5zaWduZWQpCiB0ZW1wbGF0ZTw+CiBib29s
IEpJVDo6Y29tcGlsZVRhaWxDYWxsKGNvbnN0IE9wVGFpbENhbGwmIGJ5dGVjb2RlLCBVbmxpbmtl
ZENhbGxMaW5rSW5mbyosIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4KQogewotICAgIGNvbnN0
ZXhwciBHUFJSZWcgY2FsbExpbmtJbmZvR1BSID0gcmVnVDI7Ci0gICAgbWF0ZXJpYWxpemVQb2lu
dGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcFRhaWxDYWxsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZD
YWxsTGlua0luZm8oKSwgY2FsbExpbmtJbmZvR1BSKTsKLSAgICBKdW1wTGlzdCBzbG93UGF0aHMg
PSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBjYWxsZWVK
U1IucGF5bG9hZEdQUigpLCBjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsm
XXsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wVGFpbENh
bGw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUNhbGxSZWdpc3Rl
cnM6OmNhbGxMaW5rSW5mb0dQUik7CisgICAgSnVtcExpc3Qgc2xvd1BhdGhzID0gQ2FsbExpbmtJ
bmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFzZWxpbmVDYWxsUmVnaXN0
ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxM
aW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdIHsKICAgICAgICAgQ2FsbEZyYW1l
U2h1ZmZsZURhdGEgc2h1ZmZsZURhdGEgPSBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9y
QmFzZWxpbmVPckxMSW50VGFpbENhbGwoYnl0ZWNvZGUsIG1fdW5saW5rZWRDb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSk7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyIHNodWZmbGVyIHsgKnRo
aXMsIHNodWZmbGVEYXRhIH07Ci0gICAgICAgIHNodWZmbGVyLmxvY2tHUFIoY2FsbExpbmtJbmZv
R1BSKTsKKyAgICAgICAgc2h1ZmZsZXIubG9ja0dQUihCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNh
bGxMaW5rSW5mb0dQUik7CiAgICAgICAgIHNodWZmbGVyLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwog
ICAgIH0pKTsKICAgICBhZGRTbG93Q2FzZShzbG93UGF0aHMpOwpAQCAtMjY3LDggKzI2Miw4IEBA
IHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
dW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJ
bW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQpKTsKIAotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Y2FsbGVlLCBjYWxsZWVKU1IpOwotICAgIHN0b3JlVmFsdWUoY2FsbGVlSlNSLCBBZGRyZXNzKHN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2Fs
bGVlSlNSKTsKKyAgICBzdG9yZVZhbHVlKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNS
LCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSk7CiAKICAgICBpZiAoY29tcGlsZUNhbGxFdmFsKGJ5dGVjb2RlKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjc2LDE4ICsyNzEsMTcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICNpZiBV
U0UoSlNWQUxVRTMyXzY0KQogICAgIC8vIFdlIG5lZWQgdGhpcyBvbiBKU1ZBTFVFMzJfNjQgb25s
eSBhcyBvbiBKU1ZBTFVFNjQgYSBwb2ludGVyIGNvbXBhcmlzb24gaW4gdGhlIERhdGFJQyBmYXN0
CiAgICAgLy8gcGF0aCBjYXRjaGVzIHRoaXMuCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RD
ZWxsKGNhbGxlZUpTUikpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChCYXNlbGlu
ZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUikpOwogI2VuZGlmCiAKICAgICBpZiAoY29tcGlsZVRh
aWxDYWxsKGJ5dGVjb2RlLCBpbmZvLCBjYWxsTGlua0luZm9JbmRleCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbExpbmtJbmZvR1BSID0gcmVnVDI7Ci0gICAg
bWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9m
ZnNldE9mQ2FsbExpbmtJbmZvKCksIGNhbGxMaW5rSW5mb0dQUik7CisgICAgbWF0ZXJpYWxpemVQ
b2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExp
bmtJbmZvKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKSB7Ci0gICAgICAgIGF1dG8gc2xvd1BhdGhzID0gQ2Fs
bExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywgY2FsbGVlSlNSLnBh
eWxvYWRHUFIoKSwgY2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8dm9pZCgpPihbJl17Cisg
ICAgICAgIGF1dG8gc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNG
YXN0UGF0aCgqdGhpcywgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQ
UigpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRh
PHZvaWQoKT4oWyZdIHsKICAgICAgICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAg
ICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coY2FsbExpbmtJbmZvR1BSKTsKKyAgICAg
ICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxs
TGlua0luZm9HUFIpOwogICAgICAgICB9KSk7CiAgICAgICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRo
cyk7CiAgICAgICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwoKTsKQEAgLTI5NSw3ICsyODks
NyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXV0byBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXREYXRhSUNGYXN0UGF0aCgqdGhp
cywgY2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgY2FsbExpbmtJbmZvR1BSKTsKKyAgICBhdXRvIHNs
b3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGlu
ZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lz
dGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKICAgICBhdXRvIGRvbmVMb2NhdGlvbiA9IGxhYmVsKCk7
CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd1BhdGhzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCmluZGV4IDIxOTdmNTI2
YWE4ZjcyMjlhYzRlZmFiNWYwMGMyNWE5ZGY0NGNhZmEuLjgxNWRhZDgyN2YxMWMwMDNhYTUwYTdh
Njc2Yjg2NTA5ZGQ0NjE0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKQEAgLTkwLDcgKzkwLDcgQEAgY2xhc3Mg
SlNXZWJBc3NlbWJseUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgUmVm
PFdhc206OkNvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CiAgICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxXYXNtRW50cnlQdHJUYWc+PiBtX3dhc21Ub0pTRXhpdFN0dWJzOwotICAgIEJhZzxD
YWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBCYWc8T3B0aW1pemluZ0NhbGxMaW5r
SW5mbz4gbV9jYWxsTGlua0luZm9zOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCA1ODEwNDFi
M2NhMzQzM2M3YWZhYmYxYmUzNDY3NWRhYjdkNGE0ZmQ2Li4wOGZlMWE3ODcxMzI1YTVhZmUzZTE2
MTk4NTc4NjlkMmE2OTlhMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XYXNtVG9KUy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Fz
bVRvSlMuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyB2b2lkIG1hdGVyaWFsaXplSW1wb3J0
SlNDZWxsKEpJVCYgaml0LCB1bnNpZ25lZCBpbXBvcnRJbmRleCwgR1BSUmVnIHJlc3VsCiAgICAg
aml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKHJlc3VsdCwgSW5zdGFuY2U6Om9mZnNldE9mSW1wb3J0
RnVuY3Rpb24oaW1wb3J0SW5kZXgpKSwgcmVzdWx0KTsKIH0KIAotRXhwZWN0ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhW
TSYgdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLCBTaWduYXR1cmVJbmRleCBz
aWduYXR1cmVJbmRleCwgdW5zaWduZWQgaW1wb3J0SW5kZXgpCitFeHBlY3RlZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZN
JiB2bSwgQmFnPE9wdGltaXppbmdDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLCBTaWduYXR1
cmVJbmRleCBzaWduYXR1cmVJbmRleCwgdW5zaWduZWQgaW1wb3J0SW5kZXgpCiB7CiAgICAgLy8g
RklYTUU6IFRoaXMgZnVuY3Rpb24gZG9lc24ndCBwcm9wZXJseSBhYnN0cmFjdCBhd2F5IHRoZSBj
YWxsaW5nIGNvbnZlbnRpb24uCiAgICAgLy8gSXQnZCBiZSBzdXBlciBlYXN5IHRvIGRvIHNvOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDAxCkBAIC0yNjEsNyAr
MjYxLDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4s
IEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KIAogICAgIC8vIEZJWE1FIFRhaWwgY2Fs
bCBpZiB0aGUgd2FzbSByZXR1cm4gdHlwZSBpcyB2b2lkIGFuZCBubyByZWdpc3RlcnMgd2VyZSBz
cGlsbGVkLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NDg4CiAK
LSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mb3MuYWRkKENvZGVP
cmlnaW4oKSk7CisgICAgYXV0byogY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvcy5hZGQoQ29k
ZU9yaWdpbigpKTsKICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNh
bGwsIGltcG9ydEpTQ2VsbEdQUlJlZyk7CiAgICAgYXV0byBzbG93UGF0aCA9IGNhbGxMaW5rSW5m
by0+ZW1pdEZhc3RQYXRoKGppdCwgaW1wb3J0SlNDZWxsR1BSUmVnLCBJbnZhbGlkR1BSUmVnLCBD
YWxsTGlua0luZm86OlVzZURhdGFJQzo6Tm8pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2FzbVRvSlMuaAppbmRleCA1NDU5OWI0ODRmOThmZWVjMDEyYzFhMWY2NGM3NjIyYzdlYjVm
NWU3Li4yMzQxYzIzMjY4MzI5MTYxY2Y2ZjY2NjA2NTk4ZDRiNTM5YWJlMjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNw
YWNlIFdhc20gewogCiBjbGFzcyBJbnN0YW5jZTsKIAotRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYsIEJh
ZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLCBTaWduYXR1cmVJbmRleCwgdW5zaWduZWQg
aW1wb3J0SW5kZXgpOworRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0
clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYsIEJhZzxPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvPiYgY2FsbExpbmtJbmZvcywgU2lnbmF0dXJlSW5kZXgsIHVuc2lnbmVkIGltcG9ydElu
ZGV4KTsKIAogdm9pZCBlbWl0VGhyb3dXYXNtVG9KU0V4Y2VwdGlvbihDQ2FsbEhlbHBlcnMmLCBH
UFJSZWcgd2FzbUluc3RhbmNlLCBXYXNtOjpFeGNlcHRpb25UeXBlKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446326</attachid>
            <date>2021-12-08 00:24:22 -0800</date>
            <delta_ts>2021-12-08 17:12:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233985-20211208002421.patch</filename>
            <type>text/plain</type>
            <size>65809</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzM3ZDdiNzVmMjY1ZjM3ZDYwMjZjNmRlNTFiNTU1M2NkNmQ1ZThkLi42YjZlNjdhODMyZTk3MTJi
YWE5NDM2ODVhOTYxNWMwMDg2NDg3OTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDEgQEAKKzIwMjEtMTItMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgQmFzZWxpbmVDYWxsTGlua0luZm8gYW5kIE9w
dGltaXppbmdDYWxsTGlua0luZm8gdG8gc2hyaW5rIHNpemVvZihCYXNlbGluZUNhbGxMaW5rSW5m
bykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzk4
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyBCYXNlbGluZUNhbGxMaW5rSW5mbyBhbmQgT3B0aW1pemluZ0NhbGxM
aW5rSW5mbyB0byBzaHJpbmsgc2l6ZW9mKEJhc2VsaW5lQ2FsbExpbmtJbmZvKS4KKyAgICAgICAg
QmFzZWxpbmVDYWxsTGlua0luZm8gaXMgaW5jbHVkZWQgaW4gbWV0YWRhdGEsIGFuZCBhbGxvY2F0
ZWQgZm9yIExMSW50IGFuZCBCYXNlbGluZS4gU28gc2hyaW5raW5nIGl0IGNhbiBtYWtlCisgICAg
ICAgIG1ldGFkYXRhIHNtYWxsIGZvciBMTEludCBhbmQgQmFzZWxpbmUsIHdoaWNoIGV4aXN0cyBm
b3IgYWxsIGxpdmUgZnVuY3Rpb25zLgorCisgICAgICAgIFdlIGFsc28gcmVvcmRlciBPcEl0ZXJh
dG9yT3Blbjo6TWV0YWRhdGEgYW5kIE9wSXRlcmF0b3JOZXh0OjpNZXRhZGF0YSB0byBzaHJpbmsg
c2l6ZXMuCisKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRNb25vbW9ycGhpY0NhbGxlZSk6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbCk6CisgICAgICAgIChKU0M6Ok9wdGltaXpp
bmdDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aCk6CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdD
YWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1p
emluZ0NhbGxMaW5rSW5mbzo6ZW1pdFNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJ
bmZvOjplbWl0RGF0YUlDU2xvd1BhdGgpOgorICAgICAgICAoSlNDOjpPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvOjpzbG93UGF0aFN0YXJ0KToKKyAgICAgICAgKEpTQzo6T3B0aW1pemluZ0NhbGxMaW5r
SW5mbzo6ZmFzdFBhdGhTdGFydCk6CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlua0lu
Zm86OmVtaXREaXJlY3RGYXN0UGF0aCk6CisgICAgICAgIChKU0M6Ok9wdGltaXppbmdDYWxsTGlu
a0luZm86OmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6T3B0aW1p
emluZ0NhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwpOgorICAgICAgICAoSlNDOjpP
cHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpT
Qzo6QmFzZWxpbmVDYWxsTGlua0luZm86OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpDYWxs
TGlua0luZm86OnNsb3dQYXRoU3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsTGlu
a0luZm86OmZhc3RQYXRoU3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86OmVtaXRGYXN0UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
ZW1pdFRhaWxDYWxsRmFzdFBhdGgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86OmVtaXRTbG93UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
aW5pdGlhbGl6ZURhdGFJQyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6
ZW1pdERpcmVjdEZhc3RQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZv
OjplbWl0RGlyZWN0VGFpbENhbGxGYXN0UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNh
bGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldERpcmVjdENhbGxUYXJnZXQpOiBEZWxldGVkLgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnR5
cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OkNhbGxMaW5rSW5mbyk6Cisg
ICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbGVlR1BSIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtJbmZvOjpjYWxsTGlua0luZm9HUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua0luZm86OnNldENhbGxMaW5rSW5mb0dQUik6CisgICAgICAgIChKU0M6OkNhbGxMaW5r
SW5mbzo6c2V0VXBDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpz
ZXRDb2RlTG9jYXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpj
YWxsZWVHUFIpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldHVwV2l0aFVubGlua2VkQmFz
ZWxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXApOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKiBieXRlY29kZS9HZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3Mu
aDoKKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6cmV2ZXJ0
Q2FsbCk6CisgICAgICAgIChKU0M6OmxpbmtEaXJlY3RDYWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9SZXBhdGNoLmg6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpDb21tb25EYXRhOjphZGRDYWxsTGlua0luZm8pOgorICAgICAgICAqIGRmZy9ERkdK
SVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgor
ICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjphZGRKU0NhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGRK
U0RpcmVjdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpKU0NhbGxSZWNv
cmQ6OkpTQ2FsbFJlY29yZCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OkpTRGly
ZWN0Q2FsbFJlY29yZDo6SlNEaXJlY3RDYWxsUmVjb3JkKToKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9y
QmFzZWxpbmVPckxMSW50VGFpbENhbGwpOgorICAgICAgICAqIGppdC9HQ0F3YXJlSklUU3R1YlJv
dXRpbmUuY3BwOgorICAgICAgICAoSlNDOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpN
YXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0
dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSUNKSVRTdHViUm91dGluZSk6
CisgICAgICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oOgorICAgICAgICAqIGppdC9K
SVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZSk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVRhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6SklU
Ojpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9q
cy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmg6CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5j
cHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pTKToKKyAgICAgICAgKiB3YXNtL2pzL1dh
c21Ub0pTLmg6CisKIDIwMjEtMTItMDcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgVHlwZWRBcnJheSBwcm90b3R5cGUgc2V0IHNob3VsZCBnbyBkb3duIHRoZSBm
YXN0IHBhdGggd2hlbiB1c2luZyBub24gY2xhbXBlZCBpbnRlZ2VyIHR5cGVzIG9mIHRoZSBzYW1l
IGJ5dGUgc2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwCmluZGV4IGFhZjRmNzZlYTRiOWI4OTE1NzViZWFiZTUxMDlmMTRmOTNlYWQ0YzYuLmJjNzZh
MWNkNGMxZDRiNWVmZTFjNDIwNTVkYzY4ZWZmMTgwNDUxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTE5OTcsNyArMTk5Nyw3IEBAIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUp
CiAgICAgICAgICAgICBzdGF0ZS5zZXRTcGlsbFN0YXRlRm9ySlNHZXR0ZXJTZXR0ZXIoc3BpbGxT
dGF0ZSk7CiAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFhY2Nlc3MuY2FsbExpbmtJbmZv
KCkpOwotICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBzdGF0ZS5tX2Nh
bGxMaW5rSW5mb3MuYWRkKHN0dWJJbmZvLmNvZGVPcmlnaW4pOworICAgICAgICAgICAgYXV0byog
Y2FsbExpbmtJbmZvID0gc3RhdGUubV9jYWxsTGlua0luZm9zLmFkZChzdHViSW5mby5jb2RlT3Jp
Z2luKTsKICAgICAgICAgICAgIGFjY2Vzcy5tX2NhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsK
IAogICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGdlbmVyYXRlZCBhIHBvbHltb3JwaGljIGNh
bGwgc3R1YiB0aGF0IGp1bXBlZCBiYWNrIHRvIHRoZSBnZXR0ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDU0ODY5NzUyMjkzMWQ2NjRl
ODBkNTA2NzJmOWEzNzdiOGY2NDkxNWEuLmI5NjJiMjhjZTYyZjJjODE3YzY0MWY3YmY5NDEwZTU2
Y2YxMDcwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgpAQCAtMjYsNyArMjYsNyBAQAogCiAgICAgOkJhc2ljQmxvY2tMb2NhdGlvbiwKICAg
ICA6Qm91bmRMYWJlbCwKLSAgICA6Q2FsbExpbmtJbmZvLAorICAgIDpCYXNlbGluZUNhbGxMaW5r
SW5mbywKICAgICA6RGVidWdIb29rVHlwZSwKICAgICA6RUNNQU1vZGUsCiAgICAgOkVycm9yVHlw
ZVdpdGhFeHRlbnNpb24sCkBAIC04NDIsNyArODQyLDcgQEAKICAgICAgICAgYXJndjogdW5zaWdu
ZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBjYWxsTGlua0luZm86IENhbGxM
aW5rSW5mbywKKyAgICAgICAgY2FsbExpbmtJbmZvOiBCYXNlbGluZUNhbGxMaW5rSW5mbywKICAg
ICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZSwKICAgICB9CkBAIC04NTUsNyArODU1LDcgQEAKICAgICAgICAgYXJndjogdW5zaWdu
ZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBjYWxsTGlua0luZm86IENhbGxM
aW5rSW5mbywKKyAgICAgICAgY2FsbExpbmtJbmZvOiBCYXNlbGluZUNhbGxMaW5rSW5mbywKICAg
ICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVl
UHJvZmlsZSwKICAgICB9CkBAIC04NjksNyArODY5LDcgQEAKICAgICAgICAgZWNtYU1vZGU6IEVD
TUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FsbExpbmtJbmZvOiBD
YWxsTGlua0luZm8sCisgICAgICAgIGNhbGxMaW5rSW5mbzogQmFzZWxpbmVDYWxsTGlua0luZm8s
CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAgICAgICBwcm9maWxlOiBW
YWx1ZVByb2ZpbGUsCiAgICAgfQpAQCAtODg0LDcgKzg4NCw3IEBACiAgICAgICAgIGZpcnN0VmFy
QXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBjYWxsTGlua0luZm86
IENhbGxMaW5rSW5mbywKKyAgICAgICAgY2FsbExpbmtJbmZvOiBCYXNlbGluZUNhbGxMaW5rSW5m
bywKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCiAgICAgICAgIHByb2ZpbGU6
IFZhbHVlUHJvZmlsZSwKICAgICB9LApAQCAtOTA2LDcgKzkwNiw3IEBACiAgICAgICAgIGZpcnN0
VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBjYWxsTGlua0lu
Zm86IENhbGxMaW5rSW5mbywKKyAgICAgICAgY2FsbExpbmtJbmZvOiBCYXNlbGluZUNhbGxMaW5r
SW5mbywKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCiAgICAgICAgIHByb2Zp
bGU6IFZhbHVlUHJvZmlsZSwKICAgICB9LApAQCAtOTI4LDcgKzkyOCw3IEBACiAgICAgICAgIGZp
cnN0VmFyQXJnOiBpbnQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBjYWxsTGlu
a0luZm86IENhbGxMaW5rSW5mbywKKyAgICAgICAgY2FsbExpbmtJbmZvOiBCYXNlbGluZUNhbGxM
aW5rSW5mbywKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCiAgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CkBAIC05NDEsNyArOTQxLDcgQEAKICAgICAgICAg
YXJndjogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBjYWxsTGlu
a0luZm86IENhbGxMaW5rSW5mbywKKyAgICAgICAgY2FsbExpbmtJbmZvOiBCYXNlbGluZUNhbGxM
aW5rSW5mbywKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCiAgICAgICAgIHBy
b2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CkBAIC05NTYsNyArOTU2LDcgQEAKICAgICAgICAg
Zmlyc3RWYXJBcmc6IGludCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGNhbGxM
aW5rSW5mbzogQ2FsbExpbmtJbmZvLAorICAgICAgICBjYWxsTGlua0luZm86IEJhc2VsaW5lQ2Fs
bExpbmtJbmZvLAogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKICAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0sCkBAIC0xMjU3LDEzICsxMjU3LDEzIEBACiAg
ICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0g
ICAgICAgIGl0ZXJhdGlvbk1ldGFkYXRhOiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEsCiAgICAgICAg
IGl0ZXJhYmxlUHJvZmlsZTogVmFsdWVQcm9maWxlLAotICAgICAgICBjYWxsTGlua0luZm86IENh
bGxMaW5rSW5mbywKLSAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCisgICAgICAg
IGNhbGxMaW5rSW5mbzogQmFzZWxpbmVDYWxsTGlua0luZm8sCiAgICAgICAgIGl0ZXJhdG9yUHJv
ZmlsZTogVmFsdWVQcm9maWxlLAogICAgICAgICBtb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0
YWRhdGEsCiAgICAgICAgIG5leHRQcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBpdGVyYXRpb25NZXRhZGF0YTogSXRlcmF0
aW9uTW9kZU1ldGFkYXRhLAogICAgIH0sCiAgICAgY2hlY2twb2ludHM6IHsKICAgICAgICAgc3lt
Ym9sQ2FsbDogbmlsLApAQCAtMTI4MSwxNSArMTI4MSwxNSBAQAogICAgICAgICBzdGFja09mZnNl
dDogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBpdGVyYXRpb25N
ZXRhZGF0YTogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLAotICAgICAgICBpdGVyYWJsZVByb2ZpbGU6
IEFycmF5UHJvZmlsZSwKLSAgICAgICAgY2FsbExpbmtJbmZvOiBDYWxsTGlua0luZm8sCi0gICAg
ICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBjYWxsTGlua0luZm86IEJh
c2VsaW5lQ2FsbExpbmtJbmZvLAogICAgICAgICBuZXh0UmVzdWx0UHJvZmlsZTogVmFsdWVQcm9m
aWxlLAogICAgICAgICBkb25lTW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRhLAogICAg
ICAgICBkb25lUHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgICAgICB2YWx1ZU1vZGVNZXRhZGF0
YTogR2V0QnlJZE1vZGVNZXRhZGF0YSwKICAgICAgICAgdmFsdWVQcm9maWxlOiBWYWx1ZVByb2Zp
bGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgICAgICBpdGVyYWJs
ZVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICAgICAgaXRlcmF0aW9uTWV0YWRhdGE6IEl0ZXJh
dGlvbk1vZGVNZXRhZGF0YSwKICAgICB9LAogICAgIHRtcHM6IHsKICAgICAgICAgbmV4dFJlc3Vs
dDogSlNWYWx1ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKaW5kZXggYmRhYjM5NjEwNzA0MDZkYzk3ZjdiYjc5OWUwYTFjNDI5YWYwMzZjZi4u
N2Q2YTYzOGQ5OTkxMmVjNTA2OTdhN2RjMjEzMDI1NjY2YTE0Nzg3NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTEwMiwxMiArMTAy
LDYgQEAgdm9pZCBDYWxsTGlua0luZm86OnVubGluayhWTSYgdm0pCiAgICAgUkVMRUFTRV9BU1NF
UlQoIWlzT25MaXN0KCkpOwogfQogCi1Db2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PiBDYWxsTGlua0luZm86OnNsb3dQYXRoU3RhcnQoKQotewotICAgIFJFTEVBU0VfQVNTRVJUKCFp
c0RhdGFJQygpKTsKLSAgICByZXR1cm4gdS5jb2RlSUMubV9zbG93UGF0aFN0YXJ0OwotfQotCiBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBDYWxsTGlua0luZm86OmRvbmVMb2Nh
dGlvbigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzRGlyZWN0KCkpOwpAQCAtMTI0LDcgKzEx
OCw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIEpTT2JqZWN0KiBjYWxsZWUsCiAgICAgICAgIHUuZGF0YUlDLm1fbW9ub21v
cnBoaWNDYWxsRGVzdGluYXRpb24gPSBjb2RlUHRyOwogICAgIGVsc2UgewogI2lmIEVOQUJMRShK
SVQpCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwodS5jb2RlSUMubV9j
YWxsTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KGNvZGVQdHIpKTsK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChzdGF0aWNfY2FzdDxPcHRp
bWl6aW5nQ2FsbExpbmtJbmZvKj4odGhpcyktPm1fY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25M
YWJlbDxKU0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoUG9pbnRlcih1LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uLCBjYWxsZWUpOwogI2Vsc2UK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIxNSwxMiArMjA5LDYg
QEAgdm9pZCBDYWxsTGlua0luZm86OnNldE1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHVu
c2lnbmVkIHZhbHVlKQogICAgIG1fbWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSB2YWx1
ZTsKIH0KIAotQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gQ2FsbExpbmtJbmZv
OjpmYXN0UGF0aFN0YXJ0KCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChpc0RpcmVjdCgpICYmIGlz
VGFpbENhbGwoKSk7Ci0gICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxKU0ludGVy
bmFsUHRyVGFnPih1LmNvZGVJQy5tX2Zhc3RQYXRoU3RhcnQpOwotfQotCiB2b2lkIENhbGxMaW5r
SW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKIHsKICAgICBhdXRvIGhhbmRsZVNwZWNpZmljQ2FsbGVl
ID0gWyZdIChKU0Z1bmN0aW9uKiBjYWxsZWUpIHsKQEAgLTMzNiw3ICszMjQsNyBAQCBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QgQ2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGhJbXBsKENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbgogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mbyk7
CiAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsK
LSAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+dS5jb2RlSUMubV9jYWxsTG9jYXRpb24gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAg
ICAgICAgIHN0YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8p
LT5tX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJu
YWxQdHJUYWc+KGNhbGwpOwogICAgICAgICAgICAgY2FsbExpbmtJbmZvLT51LmNvZGVJQy5tX2Nh
bGxlZUxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNh
bGxlZUNoZWNrKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMzQ0LDcgKzMzMiw3IEBAIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aEltcGwoQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luCiAgICAgcmV0dXJuIHNsb3dQYXRoOwogfQogCi1DQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0IENhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0
LCBHUFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSLCBVc2VEYXRhSUMgdXNl
RGF0YUlDKQorQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpl
bWl0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBj
YWxsTGlua0luZm9HUFIsIFVzZURhdGFJQyB1c2VEYXRhSUMpCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQoIWlzVGFpbENhbGwoKSk7CiAgICAgc2V0VXNlc0RhdGFJQ3ModXNlRGF0YUlDKTsKQEAgLTM1
MiwxMyArMzQwLDEzIEBAIENDYWxsSGVscGVyczo6SnVtcExpc3QgQ2FsbExpbmtJbmZvOjplbWl0
RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsCiAgICAgaWYgKGlzRGF0YUlD
KCkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvR1BSICE9IEdQUlJlZzo6
SW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cih0aGlzKSwgY2FsbExpbmtJbmZvR1BSKTsKLSAgICAgICAgdS5kYXRhSUMubV9jYWxsTGlu
a0luZm9HUFIgPSBjYWxsTGlua0luZm9HUFI7CisgICAgICAgIHNldENhbGxMaW5rSW5mb0dQUihj
YWxsTGlua0luZm9HUFIpOwogICAgIH0KIAogICAgIHJldHVybiBlbWl0RmFzdFBhdGhJbXBsKHRo
aXMsIGppdCwgY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIsIHVzZURhdGFJQywgaXNUYWlsQ2Fs
bCgpLCBudWxscHRyKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5m
bzo6ZW1pdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsZWVH
UFIsIFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKQorTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0IE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQ
YXRoKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgY2FsbGVlR1BSLCBTY29wZWRMYW1iZGE8dm9p
ZCgpPiYmIHByZXBhcmVGb3JUYWlsQ2FsbCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc1RhaWxD
YWxsKCkpOwogICAgIHNldFVzZXNEYXRhSUNzKFVzZURhdGFJQzo6Tm8pOwpAQCAtMzc3LDcgKzM2
NSw3IEBAIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2Fs
bERhdGFJQ0Zhc3RQYXRoKENDYWxsSGVscGVycyYKICAgICByZXR1cm4gZW1pdEZhc3RQYXRoSW1w
bChudWxscHRyLCBqaXQsIGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSLCBVc2VEYXRhSUM6Olll
cywgdHJ1ZSwgV1RGTW92ZShwcmVwYXJlRm9yVGFpbENhbGwpKTsKIH0KIAotdm9pZCBDYWxsTGlu
a0luZm86OmVtaXRTbG93UGF0aChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0KQordm9pZCBPcHRp
bWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGgoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGpp
dCkKIHsKICAgICBzZXRTbG93UGF0aENhbGxEZXN0aW5hdGlvbih2bS5nZXRDVElMaW5rQ2FsbCgp
LmNvZGUoKSk7CiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRoaXMp
LCBHUFJJbmZvOjpyZWdUMik7CkBAIC0zODksMzIgKzM3NywyMCBAQCB2b2lkIENhbGxMaW5rSW5m
bzo6ZW1pdERhdGFJQ1Nsb3dQYXRoKFZNJiwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxs
TGlua0luZgogICAgIGppdC5tb3ZlKGNhbGxMaW5rSW5mb0dQUiwgR1BSSW5mbzo6cmVnVDIpOwog
ICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgb2Zmc2V0
T2ZTbG93UGF0aENhbGxEZXN0aW5hdGlvbigpKSwgSlNFbnRyeVB0clRhZyk7CiB9Ci0jZW5kaWYK
IAotdm9pZCBDYWxsTGlua0luZm86OmluaXRpYWxpemVEYXRhSUMoVk0mIHZtLCBDYWxsVHlwZSBj
YWxsVHlwZSwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBDYWxsRnJhbWVTaHVmZmxlRGF0
YSogZnJhbWVTaHVmZmxlRGF0YSkKK0NvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+
IE9wdGltaXppbmdDYWxsTGlua0luZm86OnNsb3dQYXRoU3RhcnQoKQogewotICAgIFVOVVNFRF9Q
QVJBTShmcmFtZVNodWZmbGVEYXRhKTsKLSAgICBtX2NvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKGJ5
dGVjb2RlSW5kZXgpOwotICAgIG1fY2FsbFR5cGUgPSBjYWxsVHlwZTsKLSNpZiBFTkFCTEUoSklU
KQotICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKLSAgICBHUFJSZWcgY2Fs
bExpbmtJbmZvR1BSID0gR1BSSW5mbzo6cmVnVDI7Ci0gICAgbV9jYWxsZWVHUFIgPSBjYWxsZWVH
UFI7Ci0gICAgaWYgKGZyYW1lU2h1ZmZsZURhdGEpIHsKLSAgICAgICAgLy8gRklYTUU6IEl0J2Qg
YmUgbmljZSBpZiB0aGlzIHdlcmUgYSByZWZjb3VudGVkIGRhdGEgc3RydWN0dXJlLgotICAgICAg
ICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVEYXRhPigq
ZnJhbWVTaHVmZmxlRGF0YSk7Ci0gICAgfQotICAgIHUuZGF0YUlDLm1fY2FsbExpbmtJbmZvR1BS
ID0gY2FsbExpbmtJbmZvR1BSOwotI2VuZGlmCi0gICAgc2V0VXNlc0RhdGFJQ3MoVXNlRGF0YUlD
OjpZZXMpOwotICAgIHNldFNsb3dQYXRoQ2FsbERlc3RpbmF0aW9uKHZtLmdldENUSUxpbmtDYWxs
KCkuY29kZSgpKTsKLSAgICAvLyBJZiBKSVQgaXMgZGlzYWJsZWQsIHdlIHNob3VsZCBub3Qgc3Vw
cG9ydCBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY2FsbCBJQy4KLSAgICBpZiAoIU9wdGlvbnM6OnVz
ZUpJVCgpKQotICAgICAgICBkaXNhbGxvd1N0dWJzKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWlz
RGF0YUlDKCkpOworICAgIHJldHVybiBtX3Nsb3dQYXRoU3RhcnQ7CiB9CiAKLSNpZiBFTkFCTEUo
SklUKQotdm9pZCBDYWxsTGlua0luZm86OmVtaXREaXJlY3RGYXN0UGF0aChDQ2FsbEhlbHBlcnMm
IGppdCkKK0NvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IE9wdGltaXppbmdDYWxs
TGlua0luZm86OmZhc3RQYXRoU3RhcnQoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGlzRGlyZWN0
KCkgJiYgaXNUYWlsQ2FsbCgpKTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRy
PEpTSW50ZXJuYWxQdHJUYWc+KG1fZmFzdFBhdGhTdGFydCk7Cit9CisKK3ZvaWQgT3B0aW1pemlu
Z0NhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0KQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKCFpc1RhaWxDYWxsKCkpOwogCkBAIC00MjIsMTQgKzM5OCwxNCBA
QCB2b2lkIENhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdEZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0
KQogCiAgICAgYXV0byBjYWxsID0gaml0Lm5lYXJDYWxsKCk7CiAgICAgaml0LmFkZExpbmtUYXNr
KFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICB1LmNvZGVJQy5tX2NhbGxM
b2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+
KGNhbGwpOworICAgICAgICBtX2NhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5l
YXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOwogICAgIH0pOwogICAgIGppdC5hZGRMYXRl
TGlua1Rhc2soW3RoaXNdIChMaW5rQnVmZmVyJikgewogICAgICAgICBpbml0aWFsaXplRGlyZWN0
Q2FsbCgpOwogICAgIH0pOwogfQogCi12b2lkIENhbGxMaW5rSW5mbzo6ZW1pdERpcmVjdFRhaWxD
YWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJl
cGFyZUZvclRhaWxDYWxsKQordm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0
VGFpbENhbGxGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgU2NvcGVkTGFtYmRhPHZvaWQoKT4m
JiBwcmVwYXJlRm9yVGFpbENhbGwpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNUYWlsQ2FsbCgp
KTsKIApAQCAtNDM3LDcgKzQxMyw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0VGFp
bENhbGxGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgU2NvcGVkTGFtYmRhPHZvCiAKICAgICBh
dXRvIGZhc3RQYXRoU3RhcnQgPSBqaXQubGFiZWwoKTsKICAgICBqaXQuYWRkTGlua1Rhc2soWz1d
IChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgIHUuY29kZUlDLm1fZmFzdFBhdGhT
dGFydCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihmYXN0UGF0aFN0
YXJ0KTsKKyAgICAgICAgbV9mYXN0UGF0aFN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpT
SW50ZXJuYWxQdHJUYWc+KGZhc3RQYXRoU3RhcnQpOwogICAgIH0pOwogCiAgICAgLy8gLSBJZiB3
ZSdyZSBub3QgeWV0IGxpbmtlZCwgdGhpcyBpcyBhIGp1bXAgdG8gdGhlIHNsb3cgcGF0aC4KQEAg
LTQ0NywxNyArNDIzLDE3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjplbWl0RGlyZWN0VGFpbENhbGxG
YXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgU2NvcGVkTGFtYmRhPHZvCiAgICAgcHJlcGFyZUZv
clRhaWxDYWxsKCk7CiAgICAgYXV0byBjYWxsID0gaml0Lm5lYXJUYWlsQ2FsbCgpOwogICAgIGpp
dC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgdS5j
b2RlSUMubV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0lu
dGVybmFsUHRyVGFnPihjYWxsKTsKKyAgICAgICAgbV9jYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2ZOZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPihjYWxsKTsKICAgICB9KTsKICAg
ICBqaXQuYWRkTGF0ZUxpbmtUYXNrKFt0aGlzXSAoTGlua0J1ZmZlciYpIHsKICAgICAgICAgaW5p
dGlhbGl6ZURpcmVjdENhbGwoKTsKICAgICB9KTsKIH0KIAotdm9pZCBDYWxsTGlua0luZm86Omlu
aXRpYWxpemVEaXJlY3RDYWxsKCkKK3ZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6aW5pdGlh
bGl6ZURpcmVjdENhbGwoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRGlyZWN0KCkpOwotICAg
IEFTU0VSVCh1LmNvZGVJQy5tX2NhbGxMb2NhdGlvbik7CisgICAgQVNTRVJUKG1fY2FsbExvY2F0
aW9uKTsKICAgICBpZiAoaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZh
c3RQYXRoU3RhcnQoKSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKGZh
c3RQYXRoU3RhcnQoKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShDQ2Fs
bEhlbHBlcnMmIGppdCkgewpAQCAtNDY3LDEwICs0NDMsMTAgQEAgdm9pZCBDYWxsTGlua0luZm86
OmluaXRpYWxpemVEaXJlY3RDYWxsKCkKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KSwgImlu
aXRpYWxpemUgZGlyZWN0IGNhbGwiKTsKICAgICB9IGVsc2UKLSAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hOZWFyQ2FsbCh1LmNvZGVJQy5tX2NhbGxMb2NhdGlvbiwgc2xvd1BhdGhTdGFy
dCgpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChtX2NhbGxMb2Nh
dGlvbiwgc2xvd1BhdGhTdGFydCgpKTsKIH0KIAotdm9pZCBDYWxsTGlua0luZm86OnNldERpcmVj
dENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gdGFyZ2V0KQordm9p
ZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlv
bkxhYmVsPEpTRW50cnlQdHJUYWc+IHRhcmdldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc0Rp
cmVjdCgpKTsKIApAQCAtNDgzLDcgKzQ1OSw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpzZXREaXJl
Y3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IHRhcmdldCkKICAg
ICAgICAgfSksICJTZXR0aW5nIGRpcmVjdCBjYWxsIHRhcmdldCIpOwogICAgIH0KIAotICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwodS5jb2RlSUMubV9jYWxsTG9jYXRpb24sIHRh
cmdldCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChtX2NhbGxMb2NhdGlv
biwgdGFyZ2V0KTsKIH0KICNlbmRpZgogCkBAIC01MzUsNCArNTExLDI0IEBAIHZvaWQgQ2FsbExp
bmtJbmZvOjpzZXRTdHViKFJlZjxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4mJiBuZXdTdHVi
KQogfQogI2VuZGlmCiAKK3ZvaWQgQmFzZWxpbmVDYWxsTGlua0luZm86OmluaXRpYWxpemUoVk0m
IHZtLCBDYWxsVHlwZSBjYWxsVHlwZSwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBDYWxs
RnJhbWVTaHVmZmxlRGF0YSogZnJhbWVTaHVmZmxlRGF0YSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
ZnJhbWVTaHVmZmxlRGF0YSk7CisgICAgbV90eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFR5
cGU6OkJhc2VsaW5lKTsKKyAgICBBU1NFUlQoVHlwZTo6QmFzZWxpbmUgPT0gdHlwZSgpKTsKKyAg
ICBtX2NvZGVPcmlnaW4gPSBDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpOworICAgIG1fY2FsbFR5
cGUgPSBjYWxsVHlwZTsKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChmcmFtZVNodWZmbGVEYXRh
KSB7CisgICAgICAgIC8vIEZJWE1FOiBJdCdkIGJlIG5pY2UgaWYgdGhpcyB3ZXJlIGEgcmVmY291
bnRlZCBkYXRhIHN0cnVjdHVyZS4KKyAgICAgICAgbV9mcmFtZVNodWZmbGVEYXRhID0gbWFrZVVu
aXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oKmZyYW1lU2h1ZmZsZURhdGEpOworICAgIH0KKyNl
bmRpZgorICAgIHNldFVzZXNEYXRhSUNzKFVzZURhdGFJQzo6WWVzKTsKKyAgICBzZXRTbG93UGF0
aENhbGxEZXN0aW5hdGlvbih2bS5nZXRDVElMaW5rQ2FsbCgpLmNvZGUoKSk7CisgICAgLy8gSWYg
SklUIGlzIGRpc2FibGVkLCB3ZSBzaG91bGQgbm90IHN1cHBvcnQgZHluYW1pY2FsbHkgZ2VuZXJh
dGVkIGNhbGwgSUMuCisgICAgaWYgKCFPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgZGlzYWxs
b3dTdHVicygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAppbmRleCAxODQ3MTg3MDNlZTBjMGJlMjk1MzVi
MjE2NjE1OWFmMzI4NzBjZGM3Li4xYzg5YWQ0NjJmZDNiMWU5NjZkMzZjYTQyMDM0MWMwY2IzZjgy
OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5o
CkBAIC00NywxMCArNDcsMjMgQEAgZW51bSBPcGNvZGVJRCA6IHVuc2lnbmVkOwogc3RydWN0IENh
bGxGcmFtZVNodWZmbGVEYXRhOwogc3RydWN0IFVubGlua2VkQ2FsbExpbmtJbmZvOwogCisjaWYg
RU5BQkxFKEpJVCkKK25hbWVzcGFjZSBCYXNlbGluZUNhbGxSZWdpc3RlcnMgeworY29uc3RleHBy
IEpTVmFsdWVSZWdzIGNhbGxlZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07Citjb25zdGV4cHIg
R1BSUmVnIGNhbGxlZUdQUiB7IEdQUkluZm86OnJlZ1QwIH07Citjb25zdGV4cHIgR1BSUmVnIGNh
bGxMaW5rSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07Cit9CisjZW5kaWYKKwogY2xhc3MgQ2Fs
bExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsK
IHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCisgICAg
ZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIEJhc2VsaW5lLAorICAgICAgICBP
cHRpbWl6aW5nLAorICAgIH07CisKICAgICBlbnVtIENhbGxUeXBlIDogdWludDhfdCB7CiAgICAg
ICAgIE5vbmUsCiAgICAgICAgIENhbGwsCkBAIC04MSwyNCArOTQsNiBAQCBjbGFzcyBDYWxsTGlu
a0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAg
ICAgICB9CiAgICAgfQogCi0gICAgQ2FsbExpbmtJbmZvKENvZGVPcmlnaW4gY29kZU9yaWdpbikK
LSAgICAgICAgOiBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikKLSAgICAgICAgLCBtX2hhc1NlZW5T
aG91bGRSZXBhdGNoKGZhbHNlKQotICAgICAgICAsIG1faGFzU2VlbkNsb3N1cmUoZmFsc2UpCi0g
ICAgICAgICwgbV9jbGVhcmVkQnlHQyhmYWxzZSkKLSAgICAgICAgLCBtX2NsZWFyZWRCeVZpcnR1
YWwoZmFsc2UpCi0gICAgICAgICwgbV9hbGxvd1N0dWJzKHRydWUpCi0gICAgICAgICwgbV9jbGVh
cmVkQnlKZXR0aXNvbihmYWxzZSkKLSAgICAgICAgLCBtX2NhbGxUeXBlKE5vbmUpCi0gICAgICAg
ICwgbV91c2VEYXRhSUMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVzZURhdGFJQzo6WWVzKSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgQ2FsbExpbmtJbmZvKCkKLSAgICAgICAgOiBDYWxsTGlua0luZm8o
Q29kZU9yaWdpbiB7IH0pCi0gICAgewotICAgIH0KLQogICAgIH5DYWxsTGlua0luZm8oKTsKICAg
ICAKICAgICBzdGF0aWMgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmRG
b3IoQ2FsbFR5cGUgY2FsbFR5cGUpCkBAIC0xODMsMzggKzE3OCwxOCBAQCBjbGFzcyBDYWxsTGlu
a0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAg
IGJvb2wgaXNMaW5rZWQoKSBjb25zdCB7IHJldHVybiBzdHViKCkgfHwgbV9jYWxsZWVPckNvZGVC
bG9jazsgfQogICAgIHZvaWQgdW5saW5rKFZNJik7CiAKLSNpZiBFTkFCTEUoSklUKQotICAgIHZv
aWQgc2V0VXBDYWxsKENhbGxUeXBlIGNhbGxUeXBlLCBHUFJSZWcgY2FsbGVlR1BSKQotICAgIHsK
LSAgICAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBlOwotICAgICAgICBtX2NhbGxlZUdQUiA9IGNh
bGxlZUdQUjsKLSAgICB9Ci0KLSAgICBHUFJSZWcgY2FsbGVlR1BSKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsZWVHUFI7IH0KLSNlbmRpZgotCi0gICAgdm9pZCBpbml0aWFsaXplRGF0YUlDKFZNJiwg
Q2FsbFR5cGUsIEJ5dGVjb2RlSW5kZXgsIENhbGxGcmFtZVNodWZmbGVEYXRhKik7Ci0gICAgCiAg
ICAgZW51bSBjbGFzcyBVc2VEYXRhSUMgOiB1aW50OF90IHsKICAgICAgICAgWWVzLAogICAgICAg
ICBObwogICAgIH07CiAKICNpZiBFTkFCTEUoSklUKQotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVtaXRGYXN0UGF0aEltcGwoQ2FsbExp
bmtJbmZvKiwgQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5r
SW5mb0dQUiwgVXNlRGF0YUlDLCBib29sIGlzVGFpbENhbGwsIFNjb3BlZExhbWJkYTx2b2lkKCk+
JiYgcHJlcGFyZUZvclRhaWxDYWxsKSBXQVJOX1VOVVNFRF9SRVRVUk47CiBwdWJsaWM6CiAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0RGF0YUlDRmFzdFBhdGgoQ0NhbGxI
ZWxwZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikgV0FSTl9V
TlVTRURfUkVUVVJOOwogICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZW1pdFRh
aWxDYWxsRGF0YUlDRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgR1BS
UmVnIGNhbGxMaW5rSW5mb0dQUiwgU2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVwYXJlRm9yVGFp
bENhbGwpIFdBUk5fVU5VU0VEX1JFVFVSTjsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
ZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxs
TGlua0luZm9HUFIsIFVzZURhdGFJQykgV0FSTl9VTlVTRURfUkVUVVJOOwotICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlzdCBlbWl0VGFpbENhbGxGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBHUFJS
ZWcgY2FsbGVlR1BSLCBTY29wZWRMYW1iZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JUYWlsQ2FsbCkg
V0FSTl9VTlVTRURfUkVUVVJOOwotICAgIHZvaWQgZW1pdERpcmVjdEZhc3RQYXRoKENDYWxsSGVs
cGVycyYpOwotICAgIHZvaWQgZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiwgU2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVwYXJlRm9yVGFpbENhbGwpOwotICAgIHZvaWQg
ZW1pdFNsb3dQYXRoKFZNJiwgQ0NhbGxIZWxwZXJzJik7CiAgICAgc3RhdGljIHZvaWQgZW1pdERh
dGFJQ1Nsb3dQYXRoKFZNJiwgQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUik7
Ci0KLSAgICB2b2lkIGluaXRpYWxpemVEaXJlY3RDYWxsKCk7Ci0gICAgdm9pZCBzZXREaXJlY3RD
YWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KTsKICNlbmRpZgogCiAg
ICAgdm9pZCByZXZlcnRDYWxsVG9TdHViKCk7CkBAIC0yMjIsMTYgKzE5Nyw2IEBAIGNsYXNzIENh
bGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7
CiAgICAgYm9vbCBpc0RhdGFJQygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFVzZURhdGFJ
Qz4obV91c2VEYXRhSUMpID09IFVzZURhdGFJQzo6WWVzOyB9CiAgICAgdm9pZCBzZXRVc2VzRGF0
YUlDcyhVc2VEYXRhSUMgdXNlRGF0YUlDKSB7IG1fdXNlRGF0YUlDID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHVzZURhdGFJQyk7IH0KIAotICAgIHZvaWQgc2V0Q29kZUxvY2F0aW9ucygKLSAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhTdGFydCwKLSAg
ICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZUxvY2F0aW9uKQot
ICAgIHsKLSAgICAgICAgaWYgKCFpc0RhdGFJQygpKQotICAgICAgICAgICAgdS5jb2RlSUMubV9z
bG93UGF0aFN0YXJ0ID0gc2xvd1BhdGhTdGFydDsKLSAgICAgICAgbV9kb25lTG9jYXRpb24gPSBk
b25lTG9jYXRpb247Ci0gICAgfQotCi0KICAgICBib29sIGFsbG93U3R1YnMoKSBjb25zdCB7IHJl
dHVybiBtX2FsbG93U3R1YnM7IH0KIAogICAgIHZvaWQgZGlzYWxsb3dTdHVicygpCkBAIC0yMzks
NyArMjA0LDYgQEAgY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVs
Tm9kZTxDYWxsTGlua0luZm8+IHsKICAgICAgICAgbV9hbGxvd1N0dWJzID0gZmFsc2U7CiAgICAg
fQogCi0gICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhTdGFy
dCgpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVMb2NhdGlv
bigpOwogCiAgICAgdm9pZCBzZXRNb25vbW9ycGhpY0NhbGxlZShWTSYsIEpTQ2VsbCosIEpTT2Jq
ZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CkBAIC0z
NzEsMTAgKzMzNSw4IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50
aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBH
UFJSZWcgY2FsbGVlR1BSKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2NhbGxlZUdQUjsKLSAg
ICB9CisgICAgR1BSUmVnIGNhbGxlZUdQUigpIGNvbnN0OworICAgIEdQUlJlZyBjYWxsTGlua0lu
Zm9HUFIoKSBjb25zdDsKICNlbmRpZgogCiAgICAgdWludDMyX3Qgc2xvd1BhdGhDb3VudCgpCkBA
IC00MTgsMzMgKzM4MCw0NyBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3
U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAgIH0KICNlbmRpZgogCi1wcml2YXRlOgor
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KG1fdHlwZSk7
IH0KIAotICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGZhc3RQYXRoU3Rh
cnQoKTsKK3Byb3RlY3RlZDoKKyAgICBDYWxsTGlua0luZm8oVHlwZSB0eXBlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pCisgICAgICAgIDogbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4pCisgICAgICAg
ICwgbV9oYXNTZWVuU2hvdWxkUmVwYXRjaChmYWxzZSkKKyAgICAgICAgLCBtX2hhc1NlZW5DbG9z
dXJlKGZhbHNlKQorICAgICAgICAsIG1fY2xlYXJlZEJ5R0MoZmFsc2UpCisgICAgICAgICwgbV9j
bGVhcmVkQnlWaXJ0dWFsKGZhbHNlKQorICAgICAgICAsIG1fYWxsb3dTdHVicyh0cnVlKQorICAg
ICAgICAsIG1fY2xlYXJlZEJ5SmV0dGlzb24oZmFsc2UpCisgICAgICAgICwgbV9jYWxsVHlwZShO
b25lKQorICAgICAgICAsIG1fdXNlRGF0YUlDKHN0YXRpY19jYXN0PHVuc2lnbmVkPihVc2VEYXRh
SUM6OlllcykpCisgICAgICAgICwgbV90eXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSkK
KyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBlID09IHRoaXMtPnR5cGUoKSk7CisgICAgfQorCisg
ICAgQ2FsbExpbmtJbmZvKFR5cGUgdHlwZSkKKyAgICAgICAgOiBDYWxsTGlua0luZm8odHlwZSwg
Q29kZU9yaWdpbiB7IH0pCisgICAgeworICAgIH0KKworI2lmIEVOQUJMRShKSVQpCisgICAgdm9p
ZCBzZXRDYWxsTGlua0luZm9HUFIoR1BSUmVnKTsKKyNlbmRpZgogCiAgICAgdWludDMyX3QgbV9t
YXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyB7IDAgfTsgLy8gRm9yIHZhcmFyZ3M6IHRoZSBw
cm9maWxlZCBtYXhpbXVtIG51bWJlciBvZiBhcmd1bWVudHMuIEZvciBkaXJlY3Q6IHRoZSBudW1i
ZXIgb2Ygc3RhY2sgc2xvdHMgYWxsb2NhdGVkIGZvciBhcmd1bWVudHMuCiAgICAgQ29kZUxvY2F0
aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9kb25lTG9jYXRpb247CiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IG1fc2xvd1BhdGhDYWxsRGVzdGluYXRpb247CiAg
ICAgdW5pb24gVW5pb25UeXBlIHsKLSAgICAgICAgVW5pb25UeXBlKCkgCi0jaWYgRU5BQkxFKEpJ
VCkKLSAgICAgICAgICAgIDogZGF0YUlDIHsgbnVsbHB0ciwgSW52YWxpZEdQUlJlZyB9Ci0jZWxz
ZQorICAgICAgICBVbmlvblR5cGUoKQogICAgICAgICAgICAgOiBkYXRhSUMgeyBudWxscHRyIH0K
LSNlbmRpZgogICAgICAgICB7IH0KKwogICAgICAgICBzdHJ1Y3QgRGF0YUlDIHsKICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX21vbm9tb3JwaGljQ2Fs
bERlc3RpbmF0aW9uOwotI2lmIEVOQUJMRShKSVQpCi0gICAgICAgICAgICBHUFJSZWcgbV9jYWxs
TGlua0luZm9HUFI7Ci0jZW5kaWYKICAgICAgICAgfSBkYXRhSUM7CiAKICAgICAgICAgc3RydWN0
IHsKLSAgICAgICAgICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+IG1f
Y2FsbExvY2F0aW9uOwogICAgICAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPEpTSW50
ZXJuYWxQdHJUYWc+IG1fY2FsbGVlTG9jYXRpb247Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX3Nsb3dQYXRoU3RhcnQ7Ci0gICAgICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2Zhc3RQYXRoU3RhcnQ7CiAgICAgICAg
IH0gY29kZUlDOwogICAgIH0gdTsKIApAQCAtNDYzLDEyICs0MzksMTE2IEBAIGNsYXNzIENhbGxM
aW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAg
ICAgYm9vbCBtX2NsZWFyZWRCeUpldHRpc29uIDogMTsKICAgICB1bnNpZ25lZCBtX2NhbGxUeXBl
IDogNDsgLy8gQ2FsbFR5cGUKICAgICB1bnNpZ25lZCBtX3VzZURhdGFJQyA6IDE7IC8vIFVzZURh
dGFJQworICAgIHVuc2lnbmVkIG1fdHlwZSA6IDE7IC8vIFR5cGUKICNpZiBFTkFCTEUoSklUKQog
ICAgIEdQUlJlZyBtX2NhbGxlZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKKyAgICBHUFJSZWcgbV9j
YWxsTGlua0luZm9HUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAjZW5kaWYKICAgICB1aW50MzJfdCBt
X3Nsb3dQYXRoQ291bnQgeyAwIH07CiB9OwogCitjbGFzcyBCYXNlbGluZUNhbGxMaW5rSW5mbyBm
aW5hbCA6IHB1YmxpYyBDYWxsTGlua0luZm8geworcHVibGljOgorICAgIEJhc2VsaW5lQ2FsbExp
bmtJbmZvKCkKKyAgICAgICAgOiBDYWxsTGlua0luZm8oVHlwZTo6QmFzZWxpbmUpCisgICAgewor
ICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZShWTSYsIENhbGxUeXBlLCBCeXRlY29kZUluZGV4
LCBDYWxsRnJhbWVTaHVmZmxlRGF0YSopOworCisgICAgdm9pZCBzZXRDb2RlTG9jYXRpb25zKENv
ZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVMb2NhdGlvbikKKyAgICB7Cisg
ICAgICAgIG1fZG9uZUxvY2F0aW9uID0gZG9uZUxvY2F0aW9uOworICAgIH0KKworI2lmIEVOQUJM
RShKSVQpCisgICAgR1BSUmVnIGNhbGxlZUdQUigpIGNvbnN0IHsgcmV0dXJuIEJhc2VsaW5lQ2Fs
bFJlZ2lzdGVyczo6Y2FsbGVlR1BSOyB9CisgICAgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUigpIGNv
bnN0IHsgcmV0dXJuIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSOyB9Cisg
ICAgdm9pZCBzZXRDYWxsTGlua0luZm9HUFIoR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikgeyBSRUxF
QVNFX0FTU0VSVChjYWxsTGlua0luZm9HUFIgPT0gdGhpcy0+Y2FsbExpbmtJbmZvR1BSKCkpOyB9
CisjZW5kaWYKK307CisKK2NsYXNzIE9wdGltaXppbmdDYWxsTGlua0luZm8gZmluYWwgOiBwdWJs
aWMgQ2FsbExpbmtJbmZvIHsKK3B1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgQ2FsbExpbmtJbmZv
OworCisgICAgT3B0aW1pemluZ0NhbGxMaW5rSW5mbyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCisg
ICAgICAgIDogQ2FsbExpbmtJbmZvKFR5cGU6Ok9wdGltaXppbmcsIGNvZGVPcmlnaW4pCisgICAg
eworICAgIH0KKworI2lmIEVOQUJMRShKSVQpCisgICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5cGUg
Y2FsbFR5cGUsIEdQUlJlZyBjYWxsZWVHUFIpCisgICAgeworICAgICAgICBtX2NhbGxUeXBlID0g
Y2FsbFR5cGU7CisgICAgICAgIG1fY2FsbGVlR1BSID0gY2FsbGVlR1BSOworICAgIH0KKworICAg
IHZvaWQgc2V0Q29kZUxvY2F0aW9ucygKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4gc2xvd1BhdGhTdGFydCwKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJ
bnRlcm5hbFB0clRhZz4gZG9uZUxvY2F0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0RhdGFJ
QygpKQorICAgICAgICAgICAgbV9zbG93UGF0aFN0YXJ0ID0gc2xvd1BhdGhTdGFydDsKKyAgICAg
ICAgbV9kb25lTG9jYXRpb24gPSBkb25lTG9jYXRpb247CisgICAgfQorCisgICAgQ29kZUxvY2F0
aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZmFzdFBhdGhTdGFydCgpOworICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoU3RhcnQoKTsKKworICAgIEdQUlJl
ZyBjYWxsZWVHUFIoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZUdQUjsgfQorICAgIEdQUlJlZyBj
YWxsTGlua0luZm9HUFIoKSBjb25zdCB7IHJldHVybiBtX2NhbGxMaW5rSW5mb0dQUjsgfQorICAg
IHZvaWQgc2V0Q2FsbExpbmtJbmZvR1BSKEdQUlJlZyBjYWxsTGlua0luZm9HUFIpIHsgbV9jYWxs
TGlua0luZm9HUFIgPSBjYWxsTGlua0luZm9HUFI7IH0KKworICAgIHZvaWQgZW1pdERpcmVjdEZh
c3RQYXRoKENDYWxsSGVscGVycyYpOworICAgIHZvaWQgZW1pdERpcmVjdFRhaWxDYWxsRmFzdFBh
dGgoQ0NhbGxIZWxwZXJzJiwgU2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVwYXJlRm9yVGFpbENh
bGwpOworICAgIHZvaWQgaW5pdGlhbGl6ZURpcmVjdENhbGwoKTsKKyAgICB2b2lkIHNldERpcmVj
dENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4pOworICAgIHZvaWQg
ZW1pdFNsb3dQYXRoKFZNJiwgQ0NhbGxIZWxwZXJzJik7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3QgZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIEdQ
UlJlZyBjYWxsTGlua0luZm9HUFIsIFVzZURhdGFJQykgV0FSTl9VTlVTRURfUkVUVVJOOworICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0VGFpbENhbGxGYXN0UGF0aChDQ2FsbEhlbHBl
cnMmLCBHUFJSZWcgY2FsbGVlR1BSLCBTY29wZWRMYW1iZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JU
YWlsQ2FsbCkgV0FSTl9VTlVTRURfUkVUVVJOOworI2VuZGlmCitwcml2YXRlOgorICAgIENvZGVM
b2NhdGlvbk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+IG1fY2FsbExvY2F0aW9uOworICAgIENv
ZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1fc2xvd1BhdGhTdGFydDsKKyAgICBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2Zhc3RQYXRoU3RhcnQ7Cit9Owor
CisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSBHUFJSZWcgQ2FsbExpbmtJbmZvOjpjYWxsZWVHUFIo
KSBjb25zdAoreworICAgIHN3aXRjaCAodHlwZSgpKSB7CisgICAgY2FzZSBUeXBlOjpCYXNlbGlu
ZToKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2VsaW5lQ2FsbExpbmtJbmZv
Kj4odGhpcyktPmNhbGxlZUdQUigpOworICAgIGNhc2UgVHlwZTo6T3B0aW1pemluZzoKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE9wdGltaXppbmdDYWxsTGlua0luZm8qPih0aGlz
KS0+Y2FsbGVlR1BSKCk7CisgICAgfQorICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOworfQorCitp
bmxpbmUgR1BSUmVnIENhbGxMaW5rSW5mbzo6Y2FsbExpbmtJbmZvR1BSKCkgY29uc3QKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUoKSkgeworICAgIGNhc2UgVHlwZTo6QmFzZWxpbmU6CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBCYXNlbGluZUNhbGxMaW5rSW5mbyo+KHRoaXMpLT5jYWxs
TGlua0luZm9HUFIoKTsKKyAgICBjYXNlIFR5cGU6Ok9wdGltaXppbmc6CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKj4odGhpcyktPmNhbGxM
aW5rSW5mb0dQUigpOworICAgIH0KKyAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKK30KKworaW5s
aW5lIHZvaWQgQ2FsbExpbmtJbmZvOjpzZXRDYWxsTGlua0luZm9HUFIoR1BSUmVnIGNhbGxMaW5r
SW5mb0dQUikKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgIGNhc2UgVHlwZTo6QmFzZWxp
bmU6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxCYXNlbGluZUNhbGxMaW5rSW5mbyo+KHRo
aXMpLT5zZXRDYWxsTGlua0luZm9HUFIoY2FsbExpbmtJbmZvR1BSKTsKKyAgICBjYXNlIFR5cGU6
Ok9wdGltaXppbmc6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvKj4odGhpcyktPnNldENhbGxMaW5rSW5mb0dQUihjYWxsTGlua0luZm9HUFIpOworICAg
IH0KK30KKyNlbmRpZgorCiBpbmxpbmUgQ29kZU9yaWdpbiBnZXRDYWxsTGlua0luZm9Db2RlT3Jp
Z2luKENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewogICAgIHJldHVybiBjYWxsTGlua0lu
Zm8uY29kZU9yaWdpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAKaW5kZXggZDU5MDRhOGU5MGEyY2RhNDY5MzcxZjg3ZTk3N2JkMmM4
ZDM5MzE3Yi4uODhiY2QzNTAzNGIwZmEwMDEwZDVjNWUyOGZhMWQ3MjgzNjUyM2M1NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCkBA
IC0zMjQsOCArMzI0LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgICAgICAgICBpZiAoIXN0YXR1cy5jYWxsTGlua0luZm8pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
IChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFM
b2coIkhhdmUgQ2FsbExpbmtJbmZvIHdpdGggQ29kZU9yaWdpbiA9ICIsIHN0YXR1cy5jYWxsTGlu
a0luZm8tPmNvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgICAgICBkYXRhTG9nTG5JZihDYWxs
TGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlLCAiSGF2ZSBDYWxsTGlua0luZm8gd2l0aCBDb2Rl
T3JpZ2luID0gIiwgY29kZU9yaWdpbiwgIlxuIik7CiAgICAgICAgICAgICBDYWxsTGlua1N0YXR1
cyByZXN1bHQ7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDE0MTBmNGVmNWY3
MmQ0NTg4ZGRiZjBlNjU5MTIzZDJlMzJjMjdjYjEuLjU2ZmZkNTJmNDg4ZjJjMzQyODRmZDVmNGMx
ZWE0YmZmZmUyOTEzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC00NDUsMTEgKzQ0NSwxMSBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawog
I2lmIEVOQUJMRShKSVQpCiAgICAgICAgIGlmIGNvbnN0ZXhwciAoZGVjbHR5cGUoYnl0ZWNvZGUp
OjpvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwpIHsKICAgICAgICAgICAgIENhbGxGcmFtZVNodWZm
bGVEYXRhIHNodWZmbGVEYXRhID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGE6OmNyZWF0ZUZvckJhc2Vs
aW5lT3JMTEludFRhaWxDYWxsKGJ5dGVjb2RlLCBudW1QYXJhbWV0ZXJzKCkpOwotICAgICAgICAg
ICAgbWV0YWRhdGEubV9jYWxsTGlua0luZm8uaW5pdGlhbGl6ZURhdGFJQyh2bSwgQ2FsbExpbmtJ
bmZvOjpjYWxsVHlwZUZvcihkZWNsdHlwZShieXRlY29kZSk6Om9wY29kZUlEKSwgaW5zdHJ1Y3Rp
b24uaW5kZXgoKSwgJnNodWZmbGVEYXRhKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FsbExp
bmtJbmZvLmluaXRpYWxpemUodm0sIENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IoZGVjbHR5cGUo
Ynl0ZWNvZGUpOjpvcGNvZGVJRCksIGluc3RydWN0aW9uLmluZGV4KCksICZzaHVmZmxlRGF0YSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBtZXRhZGF0
YS5tX2NhbGxMaW5rSW5mby5pbml0aWFsaXplRGF0YUlDKHZtLCBDYWxsTGlua0luZm86OmNhbGxU
eXBlRm9yKGRlY2x0eXBlKGJ5dGVjb2RlKTo6b3Bjb2RlSUQpLCBpbnN0cnVjdGlvbi5pbmRleCgp
LCBudWxscHRyKTsKKyAgICAgICAgbWV0YWRhdGEubV9jYWxsTGlua0luZm8uaW5pdGlhbGl6ZSh2
bSwgQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihkZWNsdHlwZShieXRlY29kZSk6Om9wY29kZUlE
KSwgaW5zdHJ1Y3Rpb24uaW5kZXgoKSwgbnVsbHB0cik7CiAgICAgfTsKIAogI2RlZmluZSBMSU5L
X0ZJRUxEKF9fZmllbGQpIFwKQEAgLTc5Miw3ICs3OTIsNyBAQCB2b2lkIENvZGVCbG9jazo6c2V0
dXBXaXRoVW5saW5rZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4gaml0Q29kZSkK
ICAgICAgICAgZm9yIChhdXRvJiB1bmxpbmtlZENhbGxMaW5rSW5mbyA6IGppdENvZGUtPm1fdW5s
aW5rZWRDYWxscykgewogICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBn
ZXRDYWxsTGlua0luZm9Gb3JCeXRlY29kZUluZGV4KGxvY2tlciwgdW5saW5rZWRDYWxsTGlua0lu
Zm8uYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgICAgICBBU1NFUlQoY2FsbExpbmtJbmZvKTsKLSAg
ICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q29kZUxvY2F0aW9ucyh7IH0sIHVubGlua2VkQ2Fs
bExpbmtJbmZvLmRvbmVMb2NhdGlvbik7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxCYXNlbGlu
ZUNhbGxMaW5rSW5mbyo+KGNhbGxMaW5rSW5mbyktPnNldENvZGVMb2NhdGlvbnModW5saW5rZWRD
YWxsTGlua0luZm8uZG9uZUxvY2F0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaml0Q29kZS0+bV9jb25zdGFudFBvb2wuc2l6ZSgpOyArK2kpIHsKQEAg
LTE2MjUsNyArMTYyNSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eShWTSYgdm0pCiAgICAgaWYgKEpJVENvZGU6OmNvdWxkQmVJbnRlcnByZXRlZChqaXRUeXBlKCkp
KSB7CiAgICAgICAgIGZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKTsKICAgICAgICAgLy8gSWYg
dGhlIENvZGVCbG9jayBpcyBERkcgb3IgRlRMLCBDYWxsTGlua0luZm8gaW4gbWV0YWRhdGEgaXMg
bm90IHJlbGF0ZWQuCi0gICAgICAgIGZvckVhY2hMTEludE9yQmFzZWxpbmVDYWxsTGlua0luZm8o
WyZdKENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGZvckVhY2hMTEludE9y
QmFzZWxpbmVDYWxsTGlua0luZm8oWyZdKEJhc2VsaW5lQ2FsbExpbmtJbmZvJiBjYWxsTGlua0lu
Zm8pIHsKICAgICAgICAgICAgIGNhbGxMaW5rSW5mby52aXNpdFdlYWsodm0pOwogICAgICAgICB9
KTsKICAgICB9CkBAIC0xNjkzLDcgKzE2OTMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZGVzdHJveShK
U0NlbGwqIGNlbGwpCiB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3VsdCkKIHsKICAgICBpZiAoSklUQ29kZTo6
Y291bGRCZUludGVycHJldGVkKGppdFR5cGUoKSkpIHsKLSAgICAgICAgZm9yRWFjaExMSW50T3JC
YXNlbGluZUNhbGxMaW5rSW5mbyhbJl0oQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pIHsKKyAg
ICAgICAgZm9yRWFjaExMSW50T3JCYXNlbGluZUNhbGxMaW5rSW5mbyhbJl0oQmFzZWxpbmVDYWxs
TGlua0luZm8mIGNhbGxMaW5rSW5mbykgewogICAgICAgICAgICAgcmVzdWx0LmFkZChjYWxsTGlu
a0luZm8uY29kZU9yaWdpbigpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuY2FsbExpbmtJ
bmZvID0gJmNhbGxMaW5rSW5mbzsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMjMyNCw3ICsyMzI0
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvblJlYXNvbiBy
ZWFzb24sIFJlb3B0aW1pemF0aW9uTW9kZSBtb2QKICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8tPnNldENsZWFyZWRCeUpldHRpc29uKCk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGZvckVhY2hMTEludE9yQmFzZWxpbmVDYWxsTGlua0luZm8oWyZdKENhbGxMaW5r
SW5mbyYgY2FsbExpbmtJbmZvKSB7CisgICAgICAgICAgICBmb3JFYWNoTExJbnRPckJhc2VsaW5l
Q2FsbExpbmtJbmZvKFsmXShCYXNlbGluZUNhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKSB7CiAg
ICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLnNldENsZWFyZWRCeUpldHRpc29uKCk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggODQ1ZmRiZTY2MzA2OWI0
ZjhmNmM0ZTE0ZWQyOWE3M2QzZjc2YzQ3Ni4uOTY1N2JmMjYwNDNkMzllMmYwOGI4MTIwMTQ5NjI2
ZGE0OWYyNWQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dHRlclNldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEdldHRl
clNldHRlckFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgUHJveHlhYmxlQWNjZXNzQ2FzZSB7CiAg
ICAgLy8gUG9seW1vcnBoaWNBY2Nlc3MgY2FuIGJlIGRlc3Ryb3llZCB3aGlsZSBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUgaXMgYWxpdmUgaWYgd2UgYXJlIGRlc3Ryb3lpbmcgUG9seW1vcnBoaWNBY2Nl
c3MKICAgICAvLyB3aGlsZSB3ZSBhcmUgZXhlY3V0aW5nIEdDQXdhcmVKSVRTdHViUm91dGluZS4g
SXQgaXMgbm90IHBvc3NpYmxlIHRoYXQgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBpcyBhbGl2ZSB3
aGlsZQogICAgIC8vIEdDQXdhcmVKSVRTdHViUm91dGluZSBpcyBkZXN0cm95ZWQuCi0gICAgQ2Fs
bExpbmtJbmZvKiBjYWxsTGlua0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NhbGxMaW5rSW5mbzsg
fQorICAgIE9wdGltaXppbmdDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbygpIGNvbnN0IHsgcmV0
dXJuIG1fY2FsbExpbmtJbmZvOyB9CiAgICAgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlKCkgY29u
c3QgeyByZXR1cm4gbV9jdXN0b21TbG90QmFzZS5nZXQoKTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8
RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9k
b21BdHRyaWJ1dGU7IH0KIApAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlIGZpbmFsIDogcHVibGljIFByb3h5YWJsZUFjY2Vzc0Nhc2UgewogICAgIEdldHRlclNl
dHRlckFjY2Vzc0Nhc2UoY29uc3QgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSYpOwogCiAgICAgV3Jp
dGVCYXJyaWVyPEpTT2JqZWN0PiBtX2N1c3RvbVNsb3RCYXNlOwotICAgIENhbGxMaW5rSW5mbyog
bV9jYWxsTGlua0luZm8geyBudWxscHRyIH07CisgICAgT3B0aW1pemluZ0NhbGxMaW5rSW5mbyog
bV9jYWxsTGlua0luZm8geyBudWxscHRyIH07CiAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNz
b3JQdHJUYWc+IG1fY3VzdG9tQWNjZXNzb3I7CiAgICAgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1
dGVBbm5vdGF0aW9uPiBtX2RvbUF0dHJpYnV0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCmluZGV4IGQwNDJkMWE0ZmUyOWQw
M2EwMDNjODBjNTFmNzE2ZDk2M2U4Zjk2OTMuLjYxN2FmMDBmMjIzODQxM2Q5NzQ1NTljNGVjZDcw
ZjQ3Nzg1ZDAwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oCkBAIC0yMjQsNyArMjI0LDcgQEAgc3RydWN0IEFjY2Vzc0dlbmVy
YXRpb25TdGF0ZSB7CiAgICAgRUNNQU1vZGUgbV9lY21hTW9kZSB7IEVDTUFNb2RlOjpzbG9wcHko
KSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+
IHdhdGNocG9pbnRzOwogICAgIFZlY3RvcjxTdHJ1Y3R1cmVJRD4gd2Vha1N0cnVjdHVyZXM7Ci0g
ICAgQmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOworICAgIEJhZzxPcHRpbWl6aW5n
Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7CiAgICAgYm9vbCBtX2RvZXNKU0dldHRlclNl
dHRlckNhbGxzIDogMTsKICAgICBib29sIG1fZG9lc0NhbGxzIDogMTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCmluZGV4IDAyZGQ3ZjUwNTVmZDdiNjJiODc1
MzAyZjg5YjExY2VjZTY2OWI3OWMuLjIzNDFjMDNiYjFmZDk4NmE1OTI3NGZiMjk0M2FhYTU1YzAy
YjRiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNo
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgdm9pZCByZXZlcnRDYWxsKFZNJiB2bSwgQ2FsbExpbmtJ
bmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZgogI2lmIEVOQUJMRShKSVQp
CiAgICAgICAgIGNhbGxMaW5rSW5mby5jbGVhckNvZGVCbG9jaygpOwogICAgICAgICBpZiAoIWNh
bGxMaW5rSW5mby5jbGVhcmVkQnlKZXR0aXNvbigpKQotICAgICAgICAgICAgY2FsbExpbmtJbmZv
LmluaXRpYWxpemVEaXJlY3RDYWxsKCk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxPcHRpbWl6
aW5nQ2FsbExpbmtJbmZvJj4oY2FsbExpbmtJbmZvKS5pbml0aWFsaXplRGlyZWN0Q2FsbCgpOwog
I2VuZGlmCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFjYWxsTGlua0luZm8uY2xlYXJlZEJ5
SmV0dGlzb24oKSkgewpAQCAtMTU1MCw3ICsxNTUwLDcgQEAgdm9pZCByZXBhdGNoSW5zdGFuY2VP
ZigKIH0KIAogdm9pZCBsaW5rRGlyZWN0Q2FsbCgKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLAor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lLCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvJiBjYWxsTGlu
a0luZm8sIENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLAogICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyKQogewogICAgIEFTU0VSVCghY2FsbExpbmtJbmZv
LnN0dWIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVw
YXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guaAppbmRleCAy
MGE1NjE4MDhiN2MzNDc3OWQ0NDFmMzljZDQyMTRkMzkwODdjYmY3Li5kZjg1NzhjODZhMTAxNGJh
ZWI5YWZmYWE0NWQ0YjEzMGNmOWFmNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZXBhdGNoLmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBD
YWxsTGlua0luZm87CitjbGFzcyBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOwogY2xhc3MgU3RydWN0
dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgR2V0QnlLaW5kIHsKQEAgLTcxLDcgKzcyLDcgQEAg
dm9pZCByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sq
LCBKU09iamVjdCosIENhY2hlYWJsZUkKIHZvaWQgcmVwYXRjaFNldFByaXZhdGVCcmFuZChKU0ds
b2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEluc3RhbmNlT2Yo
SlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZSwg
U3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKIHZvaWQgbGlua01vbm9tb3JwaGlj
Q2FsbChWTSYsIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIEpTT2JqZWN0
KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7Ci12b2lkIGxp
bmtEaXJlY3RDYWxsKENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7Cit2b2lkIGxpbmtEaXJlY3RDYWxsKENh
bGxGcmFtZSosIE9wdGltaXppbmdDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwogdm9pZCBsaW5rU2xvd0ZvcihDYWxsRnJhbWUq
LCBDYWxsTGlua0luZm8mKTsKIHZvaWQgdW5saW5rQ2FsbChWTSYsIENhbGxMaW5rSW5mbyYpOwog
dm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgQ2Fs
bExpbmtJbmZvJiwgQ2FsbFZhcmlhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21tb25EYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbkRhdGEuaAppbmRleCA0NjEzMTdiZDgwOGE5MTMwY2Q5NWI2NGI5M2U1M2EzM2RhZjkzZjcw
Li4wZGI0YWZmYWU3ODU1MDlmZTEyNzcyYjVjODc3NGRlOGQ4NTNhZGYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNz
IENvbW1vbkRhdGEgOiBwdWJsaWMgTWF0aElDSG9sZGVyIHsKICAgICAKICAgICB2b2lkIGNsZWFy
V2F0Y2hwb2ludHMoKTsKIAotICAgIENhbGxMaW5rSW5mbyogYWRkQ2FsbExpbmtJbmZvKENvZGVP
cmlnaW4gY29kZU9yaWdpbikKKyAgICBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKiBhZGRDYWxsTGlu
a0luZm8oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fY2Fs
bExpbmtJbmZvcy5hZGQoY29kZU9yaWdpbik7CiAgICAgfQpAQCAtMTMxLDcgKzEzMSw3IEBAIGNs
YXNzIENvbW1vbkRhdGEgOiBwdWJsaWMgTWF0aElDSG9sZGVyIHsKICAgICBSZWNvcmRlZFN0YXR1
c2VzIHJlY29yZGVkU3RhdHVzZXM7CiAgICAgVmVjdG9yPEp1bXBSZXBsYWNlbWVudD4gbV9qdW1w
UmVwbGFjZW1lbnRzOwogICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHViSW5mb3M7Ci0g
ICAgQmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOworICAgIEJhZzxPcHRpbWl6aW5n
Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7CiAgICAgWWFycjo6WWFyckJveWVyTW95ZXJE
YXRhIG1fYm95ZXJNb29yZURhdGE7CiAgICAgCiAgICAgU2NyYXRjaEJ1ZmZlciogY2F0Y2hPU1JF
bnRyeUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAKaW5kZXggYWUzOGY2ZjdkMjVlNTA4YzkwYjI1OGE5MGYzNzMzZDI1MjBmODAyMy4uZWIyMGNl
NjQ1YWYwYmI1ODQ1NWY2ODAzZThkNDcyNGE3NGE3MWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTI2MCwxNCArMjYwLDE0IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICBmaW5hbGl6ZUlu
bGluZUNhY2hlcyhtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLCBsaW5rQnVmZmVyKTsKIAogICAgIGZv
ciAoYXV0byYgcmVjb3JkIDogbV9qc0NhbGxzKSB7Ci0gICAgICAgIENhbGxMaW5rSW5mbyYgaW5m
byA9ICpyZWNvcmQuaW5mbzsKKyAgICAgICAgYXV0byYgaW5mbyA9ICpyZWNvcmQuaW5mbzsKICAg
ICAgICAgaW5mby5zZXRDb2RlTG9jYXRpb25zKAogICAgICAgICAgICAgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHJlY29yZC5zbG93UGF0aFN0YXJ0KSwKICAgICAgICAg
ICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihyZWNvcmQuZG9uZUxv
Y2F0aW9uKSk7CiAgICAgfQogICAgIAogICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9qc0RpcmVj
dENhbGxzKSB7Ci0gICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICpyZWNvcmQuaW5mbzsKKyAg
ICAgICAgYXV0byYgaW5mbyA9ICpyZWNvcmQuaW5mbzsKICAgICAgICAgaW5mby5zZXRDb2RlTG9j
YXRpb25zKAogICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJU
YWc+KHJlY29yZC5zbG93UGF0aCksCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuaAppbmRleCA0ODNmOTZmOGE0NGU3NGI2NDMwYzhjZmVmNDliZTE0YmQ1YzY0MWUxLi5lOTQy
YmUyYmY3MmVjZWQ0MGE1MTNhMmRiOGQwODQwNGJjMzk0ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0yMzQsMTIgKzIzNCwxMiBAQCBjbGFzcyBK
SVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBtX3ByaXZhdGVCcmFu
ZEFjY2Vzc2VzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRKU0NhbGwo
TGFiZWwgc2xvd1BhdGhTdGFydCwgTGFiZWwgZG9uZUxvY2F0aW9uLCBDYWxsTGlua0luZm8qIGlu
Zm8pCisgICAgdm9pZCBhZGRKU0NhbGwoTGFiZWwgc2xvd1BhdGhTdGFydCwgTGFiZWwgZG9uZUxv
Y2F0aW9uLCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKiBpbmZvKQogICAgIHsKICAgICAgICAgbV9q
c0NhbGxzLmFwcGVuZChKU0NhbGxSZWNvcmQoc2xvd1BhdGhTdGFydCwgZG9uZUxvY2F0aW9uLCBp
bmZvKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgYWRkSlNEaXJlY3RDYWxsKExhYmVsIHNsb3dQ
YXRoLCBDYWxsTGlua0luZm8qIGluZm8pCisgICAgdm9pZCBhZGRKU0RpcmVjdENhbGwoTGFiZWwg
c2xvd1BhdGgsIE9wdGltaXppbmdDYWxsTGlua0luZm8qIGluZm8pCiAgICAgewogICAgICAgICBt
X2pzRGlyZWN0Q2FsbHMuYXBwZW5kKEpTRGlyZWN0Q2FsbFJlY29yZChzbG93UGF0aCwgaW5mbykp
OwogICAgIH0KQEAgLTMzOCw3ICszMzgsNyBAQCBjbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBD
Q2FsbEhlbHBlcnMgewogCiAKICAgICBzdHJ1Y3QgSlNDYWxsUmVjb3JkIHsKLSAgICAgICAgSlND
YWxsUmVjb3JkKExhYmVsIHNsb3dQYXRoU3RhcnQsIExhYmVsIGRvbmVMb2NhdGlvbiwgQ2FsbExp
bmtJbmZvKiBpbmZvKQorICAgICAgICBKU0NhbGxSZWNvcmQoTGFiZWwgc2xvd1BhdGhTdGFydCwg
TGFiZWwgZG9uZUxvY2F0aW9uLCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKiBpbmZvKQogICAgICAg
ICAgICAgOiBzbG93UGF0aFN0YXJ0KHNsb3dQYXRoU3RhcnQpCiAgICAgICAgICAgICAsIGRvbmVM
b2NhdGlvbihkb25lTG9jYXRpb24pCiAgICAgICAgICAgICAsIGluZm8oaW5mbykKQEAgLTM0Nywx
OCArMzQ3LDE4IEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7CiAg
ICAgICAgIAogICAgICAgICBMYWJlbCBzbG93UGF0aFN0YXJ0OwogICAgICAgICBMYWJlbCBkb25l
TG9jYXRpb247Ci0gICAgICAgIENhbGxMaW5rSW5mbyogaW5mbzsKKyAgICAgICAgT3B0aW1pemlu
Z0NhbGxMaW5rSW5mbyogaW5mbzsKICAgICB9OwogICAgIAogICAgIHN0cnVjdCBKU0RpcmVjdENh
bGxSZWNvcmQgewotICAgICAgICBKU0RpcmVjdENhbGxSZWNvcmQoTGFiZWwgc2xvd1BhdGgsIENh
bGxMaW5rSW5mbyogaW5mbykKKyAgICAgICAgSlNEaXJlY3RDYWxsUmVjb3JkKExhYmVsIHNsb3dQ
YXRoLCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKiBpbmZvKQogICAgICAgICAgICAgOiBzbG93UGF0
aChzbG93UGF0aCkKICAgICAgICAgICAgICwgaW5mbyhpbmZvKQogICAgICAgICB7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIExhYmVsIHNsb3dQYXRoOwotICAgICAgICBDYWxsTGlua0lu
Zm8qIGluZm87CisgICAgICAgIE9wdGltaXppbmdDYWxsTGlua0luZm8qIGluZm87CiAgICAgfTsK
ICAgICAKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEdldEJ5SWRHZW5lcmF0b3I+
LCA0PiBtX2dldEJ5SWRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKaW5kZXggMTNmOTMyNDE3NWJiOGVlNWJmODdiZTUzY2UwOGI5ODU2NzZkYTA5NS4uNDFm
NGJkMzFmODEzNDUyNGVmY2E2NmJhY2Y0ZDA4NWY1MmNhYjIwMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0zNjc5LDcgKzM2NzksNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3dTdGF0aWNFcnJvciwgdm9pZCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIHNjb3BlLnRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxFcnJvclR5cGVXaXRoRXh0
ZW5zaW9uPihlcnJvclR5cGUpLCBlcnJvck1lc3NhZ2UpKTsKIH0KIAotSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsLCB2b2lkLCAoQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8sIEpTRnVuY3Rpb24qIGNhbGxlZSkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwsIHZvaWQsIChPcHRpbWl6aW5nQ2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8sIEpTRnVuY3Rpb24qIGNhbGxlZSkpCiB7CiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAppbmRleCBiYmViNmM3YmRlN2U1Y2Y3MWRjNjNkZTJhMjA4MWIxOWE4ZmRhN2NlLi5iNWVk
OGVjNTVhYTVjYTJjNDc5ODlkMTM2N2FiNWQ0Y2JiMGQwNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgRGF0ZUluc3RhbmNlOwogY2xhc3MgSlNCaWdJbnQ7CitjbGFzcyBPcHRpbWl6
aW5nQ2FsbExpbmtJbmZvOwogc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOwogY2xhc3Mg
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwogCkBAIC0zMTQsNyArMzE1LDcgQEAgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdSYXdPYmplY3QsIGNoYXIqLCAoVk0qLCBTdHJ1
Y3R1cmUqLCBpbnQzMl8KIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3T2Jq
ZWN0V2l0aEJ1dHRlcmZseSwgSlNDZWxsKiwgKFZNKiwgU3RydWN0dXJlKiwgQnV0dGVyZmx5Kikp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVy
Zmx5V2l0aEluZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3RoLCBKU0NlbGwqLCAoVk0qLCBTdHJ1
Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgsIEJ1dHRlcmZseSopKTsKIAotSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwgdm9pZCwgKENhbGxMaW5rSW5mbyos
IEpTRnVuY3Rpb24qKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkxpbmtE
aXJlY3RDYWxsLCB2b2lkLCAoT3B0aW1pemluZ0NhbGxMaW5rSW5mbyosIEpTRnVuY3Rpb24qKSk7
CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGF0ZUdldEZ1bGxZZWFyLCBF
bmNvZGVkSlNWYWx1ZSwgKFZNKiwgRGF0ZUluc3RhbmNlKikpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25EYXRlR2V0VVRDRnVsbFllYXIsIEVuY29kZWRKU1ZhbHVlLCAoVk0q
LCBEYXRlSW5zdGFuY2UqKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBlNjFmODk0YmUxMDhjY2JmYTEyZGIyMDg5
MjllY2RlMmMzZGYwZjI0Li4yOTY0MzcxZWEyOGMwNmNiNDNkZDgzYTRkMzgxMzY2OWFmYTgzMjNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKQEAgLTc4Niw3ICs3ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlKQogICAgICAgICBpc0VtdWxhdGVkVGFpbCA/ICpzdGF0aWNJbmxpbmVD
YWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nVGFpbENhbGxzKCkgOiBzdGF0aWNPcmlnaW47CiAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChkeW5hbWljT3JpZ2luLCBtX3N0cmVh
bS0+c2l6ZSgpKTsKICAgICAKLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5qaXRDb2Rl
KCktPmNvbW1vbi5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBh
dXRvKiBpbmZvID0gbV9qaXQuaml0Q29kZSgpLT5jb21tb24uYWRkQ2FsbExpbmtJbmZvKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgaW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBjYWxsZWVQ
YXlsb2FkR1BSKTsKICAgICAKICAgICBhdXRvIHNldFJlc3VsdEFuZFJlc2V0U3RhY2sgPSBbJl0g
KCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKaW5kZXggYTc2MmIyOWY3YzA0OGFjNTYwODYyZGMzYmRkMzRkZjBkM2Y0ZDNmOC4uMTlk
ZWQzNTQ4MDM1MDIzMjI5YTBjNzU5NTlkNjBlMTIxOGY5ODllMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC04OTAsNyArODkw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAg
bV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihtX2ppdC5ncmFwaCgpLnN0YWNrUG9pbnRlck9mZnNl
dCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVRD
b21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIH07CiAgICAgCi0gICAgQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5qaXRDb2RlKCktPmNvbW1vbi5hZGRDYWxsTGlu
a0luZm8obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBhdXRvKiBjYWxsTGlu
a0luZm8gPSBtX2ppdC5qaXRDb2RlKCktPmNvbW1vbi5hZGRDYWxsTGlua0luZm8obV9jdXJyZW50
Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxs
VHlwZSwgY2FsbGVlR1BSKTsKIAogICAgIGlmIChub2RlLT5vcCgpID09IENhbGxFdmFsKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggMDBl
ZGE1NmE4MzU4MWFlZWUwMjRjMWZmMjUzZjBjMjBhNmQzZDQ0OC4uZjgzZTVmYmE2M2I4YWVlYzRh
YzBkZDEzODY2NTMyMTUwNTUzMTBiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTAyNjMsNyArMTAyNjMsNyBAQCBJR05PUkVfQ0xBTkdf
V0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSkpOwogCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8gPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhub2RlU2VtYW50
aWNPcmlnaW4pOworICAgICAgICAgICAgICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5q
aXRDb2RlLT5jb21tb24uYWRkQ2FsbExpbmtJbmZvKG5vZGVTZW1hbnRpY09yaWdpbik7CiAgICAg
ICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoCiAgICAgICAgICAgICAgICAgICAg
IG5vZGVPcCA9PSBDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkNvbnN0cnVjdCA6IENhbGxMaW5r
SW5mbzo6Q2FsbCwgR1BSSW5mbzo6cmVnVDApOwogCkBAIC0xMDM5Nyw3ICsxMDM5Nyw3IEBAIElH
Tk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEu
bnVtUGFyYW1ldGVycyA9IGppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOwogICAgICAg
ICAgICAgICAgICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoaml0LmNv
ZGVCbG9jaygpKTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDYWxs
TGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byog
Y2FsbExpbmtJbmZvID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDYWxsTGlua0luZm8oc2Vt
YW50aWNOb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRV
cENhbGwoQ2FsbExpbmtJbmZvOjpEaXJlY3RUYWlsQ2FsbCwgSW52YWxpZEdQUlJlZyk7CiAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVs
IG1haW5QYXRoID0gaml0LmxhYmVsKCk7CkBAIC0xMDQyOSw3ICsxMDQyOSw3IEBAIElHTk9SRV9D
TEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkQ2FsbExpbmtJbmZvKHNl
bWFudGljTm9kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgYXV0byogY2FsbExpbmtJbmZvID0g
c3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2lu
KTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbCgKICAgICAgICAgICAg
ICAgICAgICAgaXNDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkRpcmVjdENvbnN0cnVjdCA6IENh
bGxMaW5rSW5mbzo6RGlyZWN0Q2FsbCwgSW52YWxpZEdQUlJlZyk7CiAKQEAgLTEwNTU3LDcgKzEw
NTU3LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhqaXQuY29k
ZUJsb2NrKCkpOwogCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8g
PSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhjb2RlT3JpZ2luKTsKKyAg
ICAgICAgICAgICAgICBhdXRvKiBjYWxsTGlua0luZm8gPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9u
LmFkZENhbGxMaW5rSW5mbyhjb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OlRhaWxDYWxsLCBHUFJJbmZvOjpyZWdUMCk7CiAK
ICAgICAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoID0gY2FsbExpbmtJbmZvLT5lbWl0VGFpbENh
bGxGYXN0UGF0aChqaXQsIEdQUkluZm86OnJlZ1QwLCBzY29wZWRMYW1iZGE8dm9pZCgpPihbJl17
CkBAIC0xMDc2Miw3ICsxMDc2Miw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5i
aXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFs
UmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAK
LSAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRD
b2RlLT5jb21tb24uYWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CisgICAgICAg
ICAgICAgICAgYXV0byogY2FsbExpbmtJbmZvID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRD
YWxsTGlua0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKIAogICAgICAgICAgICAgICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7CiAgICAg
ICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJl
Z2lzdGVyc0ZvckpTQ2FsbCgpKTsKQEAgLTExMDQ2LDcgKzExMDQ2LDcgQEAgSUdOT1JFX0NMQU5H
X1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykpKTsKIAotICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNO
b2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICBhdXRvKiBjYWxsTGlua0luZm8gPSBzdGF0ZS0+
aml0Q29kZS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05vZGVPcmlnaW4pOwogCiAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgYXJnSW5kZXggPSAxOwogICAgICAgICAgICAgICAgIEdQ
UlJlZyBjYWxsZWVHUFIgPSBwYXJhbXNbYXJnSW5kZXgrK10uZ3ByKCk7CkBAIC0xMTI4OCw3ICsx
MTI4OCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CiAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBzdGF0ZS0+aml0
Q29kZS0+Y29tbW9uLmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05vZGVPcmlnaW4pOworICAgICAg
ICAgICAgICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRk
Q2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CiAgICAgICAgICAgICAgICAgY2FsbExp
bmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsLCBHUFJJbmZvOjpyZWdUMCk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVn
VDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVm
ZmxlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVE
YXRhLmNwcAppbmRleCA1MDJmOWEwNzIxZGYxZTMxMDc4ZjY5OWEzY2VlZGY1Mjk3ODkyMWI5Li4z
ZGQ2ZTBjYjFiZjU3N2I5MzQzNDBiNDExN2E2NTU4YTkxMjk1MWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcApAQCAtODUsMTEg
Kzg1LDYgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6c2V0dXBDYWxsZWVTYXZlUmVnaXN0
ZXJzKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KgogCiBDYWxsRnJhbWVTaHVmZmxlRGF0YSBD
YWxsRnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50VGFpbENhbGwoY29u
c3QgT3BUYWlsQ2FsbCYgYnl0ZWNvZGUsIHVuc2lnbmVkIG51bVBhcmFtZXRlcnMpCiB7Ci0jaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgY2FsbGVlSlNSIHsgR1BS
SW5mbzo6cmVnVDAgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGNhbGxlZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9Owot
I2VuZGlmCiAgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGE7CiAgICAgc2h1ZmZs
ZURhdGEubnVtUGFzc2VkQXJncyA9IGJ5dGVjb2RlLm1fYXJnYzsKICAgICBzaHVmZmxlRGF0YS5u
dW1QYXJhbWV0ZXJzID0gbnVtUGFyYW1ldGVyczsKQEAgLTEwNSw5ICsxMDAsOSBAQCBDYWxsRnJh
bWVTaHVmZmxlRGF0YSBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVPckxM
SW50VGFpbENhbGwoY29ucwogICAgICAgICAgICAgICAgIERhdGFGb3JtYXRKUyk7CiAgICAgfQog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVy
eTo6aW5HUFIoY2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgRGF0YUZvcm1hdEpTKTsKKyAgICBzaHVm
ZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQUihCYXNlbGluZUNhbGxSZWdpc3Rl
cnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIERhdGFGb3JtYXRKUyk7CiAjZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQotICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluUGFp
cihjYWxsZWVKU1IudGFnR1BSKCksIGNhbGxlZUpTUi5wYXlsb2FkR1BSKCkpOworICAgIHNodWZm
bGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluUGFpcihCYXNlbGluZUNhbGxSZWdpc3Rl
cnM6OmNhbGxlZUpTUi50YWdHUFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1Iu
cGF5bG9hZEdQUigpKTsKICNlbmRpZgogICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJl
Z2lzdGVycygmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVn
aXN0ZXJzKCkpOwogICAgIHNodWZmbGVEYXRhLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKaW5kZXggZjAz
MzIxYzU0ZDk2NjAzZTVmY2YyOTc0ZTEzZTA5OTAwZWNlYmMzMy4uOWYzMmYyN2I5Y2JiY2I4NDE1
NmMwMzBkNTM1ZDI0N2YwMWZlZTg0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHVuc2ln
bmVkIFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU6OmNvbXB1dGVIYXNoKGNvbnN0IEZp
eGVkVmVjdG9yPFJlZlB0cjxBCiAKIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtp
bmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+JiYgY2FzZXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmIHdlYWtTdHJ1
Y3R1cmVzLCBjb25zdCBKU0NlbGwqIG93bmVyLAotICAgIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYg
Y2VsbHMsIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcykKKyAgICBjb25zdCBWZWN0
b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8T3B0aW1pemluZ0NhbGxMaW5rSW5mbz4mJiBjYWxsTGlu
a0luZm9zKQogICAgIDogUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZShjb2RlLCB2bSwg
V1RGTW92ZShjYXNlcyksIFdURk1vdmUod2Vha1N0cnVjdHVyZXMpKQogICAgICwgbV9jZWxscyhj
ZWxscy5zaXplKCkpCiAgICAgLCBtX2NhbGxMaW5rSW5mb3MoV1RGTW92ZShjYWxsTGlua0luZm9z
KSkKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6
Om1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYgdmlzaQogfQogCiBHQ0F3
YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6R0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+JiYgY2FzZXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmIHdlYWtTdHJ1
Y3R1cmVzLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mIGNlbGxz
LCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCisgICAgY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZl
Y3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYgY2FzZXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlE
PiYmIHdlYWtTdHJ1Y3R1cmVzLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlND
ZWxsKj4mIGNlbGxzLCBCYWc8T3B0aW1pemluZ0NhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9z
LAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2Fi
bGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KQogICAgIDogTWFy
a2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShjYXNlcyksIFdURk1v
dmUod2Vha1N0cnVjdHVyZXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykp
CiAgICAgLCBtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGVCbG9ja0ZvckV4Y2Vw
dGlvbkhhbmRsZXJzKQpAQCAtMTg5LDcgKzE4OSw3IEBAIFJlZjxQb2x5bW9ycGhpY0FjY2Vzc0pJ
VFN0dWJSb3V0aW5lPiBjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IEpTQ2VsbCog
b3duZXIsCiAgICAgYm9vbCBtYWtlc0NhbGxzLAogICAgIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYg
Y2VsbHMsCi0gICAgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAorICAgIEJhZzxP
cHRpbWl6aW5nQ2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywKICAgICBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRl
eCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCmluZGV4IDNhNjdkZmJjNTg2ZmI3
YTVjZGVmZjIxNWY4NDQ2ODhhMjBjYjllNmEuLjU0ODJmNDliZTM2ZGJmMjhhNTEwYzY0MGQwMmRk
YzE5N2Y2MTdiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJl
SklUU3R1YlJvdXRpbmUuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBDb2RlT3JpZ2luUG9vbDsK
IGNsYXNzIEFjY2Vzc0Nhc2U7CiBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBKSVRTdHViUm91
dGluZVNldDsKK2NsYXNzIE9wdGltaXppbmdDYWxsTGlua0luZm87CiAKIC8vIFVzZSB0aGlzIHN0
dWIgcm91dGluZSBpZiB5b3Uga25vdyB0aGF0IHlvdXIgY29kZSBtaWdodCBiZSBvbiBzdGFjayB3
aGVuCiAvLyBlaXRoZXIgR0Mgb3Igb3RoZXIga2luZHMgb2Ygc3R1YiBkZWxldGlvbiBoYXBwZW4u
IEJhc2ljYWx5LCBpZiB5b3VyIHN0dWIKQEAgLTEyNCw3ICsxMjUsNyBAQCBjbGFzcyBNYXJraW5n
R0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJv
dXRpbmUgewogICAgIHVzaW5nIEJhc2UgPSBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5l
OwogCiAgICAgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICAgICAgY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0
b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiwgY29u
c3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5m
bz4mJik7CisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgRml4ZWRW
ZWN0b3I8U3RydWN0dXJlSUQ+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxK
U0NlbGwqPiYsIEJhZzxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvPiYmKTsKICAgICB+TWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZSgpIG92ZXJyaWRlOwogICAgIAogcHJvdGVjdGVkOgpAQCAtMTM0
LDcgKzEzNSw3IEBAIGNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMg
UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZSB7CiAKIHByaXZhdGU6CiAgICAgRml4ZWRW
ZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fY2VsbHM7Ci0gICAgQmFnPENhbGxMaW5rSW5m
bz4gbV9jYWxsTGlua0luZm9zOworICAgIEJhZzxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvPiBtX2Nh
bGxMaW5rSW5mb3M7CiB9OwogCiAKQEAgLTE0NSw3ICsxNDYsNyBAQCBjbGFzcyBHQ0F3YXJlSklU
U3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJraW5nR0NB
d2FyZUpJVAogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBNYXJraW5nR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOwogCi0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIo
Y29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwg
Rml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJ
RD4mJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENh
bGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgpOworICAg
IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NDYXNlPj4mJiwgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYsIGNvbnN0IEpT
Q2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvPiYmLCBDb2RlQmxvY2sqLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk7CiAgICAgfkdD
QXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKCkgZmluYWw7CiAKICAgICB2
b2lkIGFib3V0VG9EaWUoKSBmaW5hbDsKQEAgLTE4MSw3ICsxODIsNyBAQCBjbGFzcyBHQ0F3YXJl
SklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJraW5n
R0NBd2FyZUpJVAogCiBSZWY8UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZT4gY3JlYXRl
SUNKSVRTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1
YlJvdXRpbmVQdHJUYWc+JiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGNhc2Vz
LCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrU3RydWN0dXJlcywgVk0mLCBjb25zdCBK
U0NlbGwqIG93bmVyLCBib29sIG1ha2VzQ2FsbHMsCi0gICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+
JiwgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAorICAgIGNvbnN0IFZlY3RvcjxK
U0NlbGwqPiYsIEJhZzxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNh
bGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCAyNDRiM2Zl
YjY5YjRhMGY0OWYwYmM0M2QxZTRhYjQ0OWEzMmU2Yjk3Li5lZTNjYzQ3OGZmNDdmYWRhNzFlYzlk
YzE4ZmFkMWQzNDU1NDU2OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
QEAgLTQyLDEwICs0Miw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1uYW1lc3BhY2UgewotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBjYWxsZWVKU1IgPSBKU1JJbmZvOjpqc1JlZ1QxMDsKLX0K
LQogdm9pZCBKSVQ6OmVtaXRfb3BfcmV0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFsdWVKU1IsIGNh
bGxGcmFtZVJlZ2lzdGVyKSk7CkBAIC0yMDAsMTEgKzE5NiwxMSBAQCB2b2lkIEpJVDo6Y29tcGls
ZUNhbGxFdmFsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0NhcwogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVv
ZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rl
ciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgbG9hZFZhbHVlKEFkZHJlc3Moc3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90OjpjYWxsZWUg
LSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsZWVKU1IpOworICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLCBCYXNlbGluZUNh
bGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUiwgcmVnVDMpKTsKKyAgICBsb2FkVmFsdWUoQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNs
b3Q6OmNhbGxlZSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIEJhc2VsaW5lQ2FsbFJlZ2lz
dGVyczo6Y2FsbGVlSlNSKTsKICAgICBsb2FkR2xvYmFsT2JqZWN0KHJlZ1QzKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUiA9IHJlZ1QyOwotICAgIG1hdGVyaWFsaXplUG9p
bnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BDYWxsRXZhbDo6TWV0YWRhdGE6Om9mZnNldE9m
Q2FsbExpbmtJbmZvKCksIGNhbGxMaW5rSW5mb0dQUik7Ci0gICAgZW1pdFZpcnR1YWxDYWxsV2l0
aG91dE1vdmluZ0dsb2JhbE9iamVjdCgqbV92bSwgY2FsbExpbmtJbmZvR1BSLCBDYWxsTW9kZTo6
UmVndWxhcik7CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBP
cENhbGxFdmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFzZWxpbmVDYWxs
UmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOworICAgIGVtaXRWaXJ0dWFsQ2FsbFdpdGhvdXRN
b3ZpbmdHbG9iYWxPYmplY3QoKm1fdm0sIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJ
bmZvR1BSLCBDYWxsTW9kZTo6UmVndWxhcik7CiAgICAgcmVzZXRTUCgpOwogfQogCkBAIC0yMTcs
MTIgKzIxMywxMSBAQCBib29sIEpJVDo6Y29tcGlsZVRhaWxDYWxsKGNvbnN0IE9wJiwgVW5saW5r
ZWRDYWxsTGlua0luZm8qLCB1bnNpZ25lZCkKIHRlbXBsYXRlPD4KIGJvb2wgSklUOjpjb21waWxl
VGFpbENhbGwoY29uc3QgT3BUYWlsQ2FsbCYgYnl0ZWNvZGUsIFVubGlua2VkQ2FsbExpbmtJbmZv
KiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpCiB7Ci0gICAgY29uc3RleHByIEdQUlJlZyBj
YWxsTGlua0luZm9HUFIgPSByZWdUMjsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRh
dGEoYnl0ZWNvZGUsIE9wVGFpbENhbGw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygp
LCBjYWxsTGlua0luZm9HUFIpOwotICAgIEp1bXBMaXN0IHNsb3dQYXRocyA9IENhbGxMaW5rSW5m
bzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIGNhbGxlZUpTUi5wYXlsb2FkR1BS
KCksIGNhbGxMaW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdeworICAgIG1hdGVy
aWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BUYWlsQ2FsbDo6TWV0YWRhdGE6
Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJ
bmZvR1BSKTsKKyAgICBKdW1wTGlzdCBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXRUYWls
Q2FsbERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpT
Ui5wYXlsb2FkR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSLCBz
Y29wZWRMYW1iZGE8dm9pZCgpPihbJl0gewogICAgICAgICBDYWxsRnJhbWVTaHVmZmxlRGF0YSBz
aHVmZmxlRGF0YSA9IENhbGxGcmFtZVNodWZmbGVEYXRhOjpjcmVhdGVGb3JCYXNlbGluZU9yTExJ
bnRUYWlsQ2FsbChieXRlY29kZSwgbV91bmxpbmtlZENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
KTsKICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIgc2h1ZmZsZXIgeyAqdGhpcywgc2h1ZmZsZURh
dGEgfTsKLSAgICAgICAgc2h1ZmZsZXIubG9ja0dQUihjYWxsTGlua0luZm9HUFIpOworICAgICAg
ICBzaHVmZmxlci5sb2NrR1BSKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BS
KTsKICAgICAgICAgc2h1ZmZsZXIucHJlcGFyZUZvclRhaWxDYWxsKCk7CiAgICAgfSkpOwogICAg
IGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CkBAIC0yNjcsOCArMjYyLDggQEAgdm9pZCBKSVQ6OmNv
bXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxs
TGlua0luZm9JbmQKICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCkuYml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9u
Qml0cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IFRhZ09mZnNldCkpOwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIGNhbGxl
ZUpTUik7Ci0gICAgc3RvcmVWYWx1ZShjYWxsZWVKU1IsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVn
aXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGNhbGxlZSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IpOworICAg
IHN0b3JlVmFsdWUoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IsIEFkZHJlc3Moc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAogICAg
IGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKQogICAgICAgICByZXR1cm47CkBAIC0yNzYs
MTggKzI3MSwxNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgLy8gV2UgbmVlZCB0aGlzIG9uIEpTVkFMVUUzMl82NCBvbmx5IGFzIG9uIEpTVkFM
VUU2NCBhIHBvaW50ZXIgY29tcGFyaXNvbiBpbiB0aGUgRGF0YUlDIGZhc3QKICAgICAvLyBwYXRo
IGNhdGNoZXMgdGhpcy4KLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwoY2FsbGVlSlNS
KSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKEJhc2VsaW5lQ2FsbFJlZ2lzdGVy
czo6Y2FsbGVlSlNSKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb21waWxlVGFpbENhbGwoYnl0ZWNv
ZGUsIGluZm8sIGNhbGxMaW5rSW5mb0luZGV4KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIgPSByZWdUMjsKLSAgICBtYXRlcmlhbGl6ZVBv
aW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlu
a0luZm8oKSwgY2FsbExpbmtJbmZvR1BSKTsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0
YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFz
ZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOwogICAgIGlmIChvcGNvZGVJRCA9
PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2Fy
ZF9hcmd1bWVudHMpIHsKLSAgICAgICAgYXV0byBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVt
aXRUYWlsQ2FsbERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBj
YWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXXsKKyAgICAgICAgYXV0byBz
bG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbERhdGFJQ0Zhc3RQYXRoKCp0aGlz
LCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5l
Q2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8dm9pZCgpPihbJl0g
ewogICAgICAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAgICAgICAgICAgcHJl
cGFyZUZvclRhaWxDYWxsU2xvdyhjYWxsTGlua0luZm9HUFIpOworICAgICAgICAgICAgcHJlcGFy
ZUZvclRhaWxDYWxsU2xvdyhCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7
CiAgICAgICAgIH0pKTsKICAgICAgICAgYWRkU2xvd0Nhc2Uoc2xvd1BhdGhzKTsKICAgICAgICAg
YXV0byBkb25lTG9jYXRpb24gPSBsYWJlbCgpOwpAQCAtMjk1LDcgKzI4OSw3IEBAIHZvaWQgSklU
Ojpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQg
Y2FsbExpbmtJbmZvSW5kCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNsb3dQ
YXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBjYWxsZWVKU1Iu
cGF5bG9hZEdQUigpLCBjYWxsTGlua0luZm9HUFIpOworICAgIGF1dG8gc2xvd1BhdGhzID0gQ2Fs
bExpbmtJbmZvOjplbWl0RGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVy
czo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlu
a0luZm9HUFIpOwogICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwoKTsKICAgICBhZGRTbG93
Q2FzZShzbG93UGF0aHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKaW5kZXggMjE5N2Y1MjZhYThmNzIyOWFjNGVm
YWI1ZjAwYzI1YTlkZjQ0Y2FmYS4uODE1ZGFkODI3ZjExYzAwM2FhNTBhN2E2NzZiODY1MDlkZDQ2
MTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUNvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlDb2RlQmxvY2suaApAQCAtOTAsNyArOTAsNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBSZWY8V2FzbTo6Q29kZUJs
b2NrPiBtX2NvZGVCbG9jazsKICAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21F
bnRyeVB0clRhZz4+IG1fd2FzbVRvSlNFeGl0U3R1YnM7Ci0gICAgQmFnPENhbGxMaW5rSW5mbz4g
bV9jYWxsTGlua0luZm9zOworICAgIEJhZzxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvPiBtX2NhbGxM
aW5rSW5mb3M7CiAgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCmluZGV4IDU4MTA0MWIzY2EzNDMzYzdhZmFi
ZjFiZTM0Njc1ZGFiN2Q0YTRmZDYuLjA4ZmUxYTc4NzEzMjVhNWFmZTNlMTYxOTg1Nzg2OWQyYTY5
OWEyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pT
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgc3RhdGljIHZvaWQgbWF0ZXJpYWxpemVJbXBvcnRKU0NlbGwoSklUJiBq
aXQsIHVuc2lnbmVkIGltcG9ydEluZGV4LCBHUFJSZWcgcmVzdWwKICAgICBqaXQubG9hZFB0cihK
SVQ6OkFkZHJlc3MocmVzdWx0LCBJbnN0YW5jZTo6b2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihpbXBv
cnRJbmRleCkpLCByZXN1bHQpOwogfQogCi1FeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bSwgQmFnPENh
bGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4
LCB1bnNpZ25lZCBpbXBvcnRJbmRleCkKK0V4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxX
YXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtLCBCYWc8T3B0
aW1pemluZ0NhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsIFNpZ25hdHVyZUluZGV4IHNpZ25h
dHVyZUluZGV4LCB1bnNpZ25lZCBpbXBvcnRJbmRleCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBm
dW5jdGlvbiBkb2Vzbid0IHByb3Blcmx5IGFic3RyYWN0IGF3YXkgdGhlIGNhbGxpbmcgY29udmVu
dGlvbi4KICAgICAvLyBJdCdkIGJlIHN1cGVyIGVhc3kgdG8gZG8gc286IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0MDEKQEAgLTI2MSw3ICsyNjEsNyBAQCBFeHBl
Y3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1
cmU+IHdhc21Ub0pTKFZNJiB2bQogCiAgICAgLy8gRklYTUUgVGFpbCBjYWxsIGlmIHRoZSB3YXNt
IHJldHVybiB0eXBlIGlzIHZvaWQgYW5kIG5vIHJlZ2lzdGVycyB3ZXJlIHNwaWxsZWQuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU0ODgKIAotICAgIENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvcy5hZGQoQ29kZU9yaWdpbigpKTsKKyAg
ICBhdXRvKiBjYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm9zLmFkZChDb2RlT3JpZ2luKCkpOwog
ICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgaW1wb3J0SlND
ZWxsR1BSUmVnKTsKICAgICBhdXRvIHNsb3dQYXRoID0gY2FsbExpbmtJbmZvLT5lbWl0RmFzdFBh
dGgoaml0LCBpbXBvcnRKU0NlbGxHUFJSZWcsIEludmFsaWRHUFJSZWcsIENhbGxMaW5rSW5mbzo6
VXNlRGF0YUlDOjpObyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dhc21Ub0pTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5o
CmluZGV4IDU0NTk5YjQ4NGY5OGZlZWMwMTJjMWExZjY0Yzc2MjJjN2ViNWY1ZTcuLjIzNDFjMjMy
NjgzMjkxNjFjZjZmNjY2MDY1OThkNGI1MzlhYmUyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2FzbVRvSlMuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2FzbSB7CiAK
IGNsYXNzIEluc3RhbmNlOwogCi1FeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVu
dHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiwgQmFnPENhbGxMaW5rSW5m
bz4mIGNhbGxMaW5rSW5mb3MsIFNpZ25hdHVyZUluZGV4LCB1bnNpZ25lZCBpbXBvcnRJbmRleCk7
CitFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGlu
Z0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiwgQmFnPE9wdGltaXppbmdDYWxsTGlua0luZm8+JiBjYWxs
TGlua0luZm9zLCBTaWduYXR1cmVJbmRleCwgdW5zaWduZWQgaW1wb3J0SW5kZXgpOwogCiB2b2lk
IGVtaXRUaHJvd1dhc21Ub0pTRXhjZXB0aW9uKENDYWxsSGVscGVycyYsIEdQUlJlZyB3YXNtSW5z
dGFuY2UsIFdhc206OkV4Y2VwdGlvblR5cGUpOwogCg==
</data>
<flag name="review"
          id="471699"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>